diff --git a/Fit/Adapter/MinimizerAdapter.cpp b/Fit/Adapter/MinimizerAdapter.cpp index c616c0d16b04377f2cbe8fce058311859946c963..badf1ab68f98fb778ca5251eef8cabdc42c9d8f3 100644 --- a/Fit/Adapter/MinimizerAdapter.cpp +++ b/Fit/Adapter/MinimizerAdapter.cpp @@ -124,15 +124,11 @@ void MinimizerAdapter::propagateResults(mumufit::Parameters& parameters) parameters.setErrors(parErrorsAtMinimum()); // sets correlation matrix if (providesError()) { - double2d_t matrix; - matrix.resize(fitRank()); - for (size_t i = 0; i < fitRank(); ++i) { - matrix[i].resize(fitRank(), 0.0); - for (size_t j = 0; j < fitRank(); ++j) - matrix[i][j] = rootMinimizer()->Correlation(static_cast<unsigned int>(i), - static_cast<unsigned int>(j)); - } - parameters.setCorrelationMatrix(matrix); + auto lambda = [&](size_t i, size_t j) -> double + { return rootMinimizer()->Correlation(static_cast<unsigned int>(i), + static_cast<unsigned int>(j)); }; + double2d_t matrix = FieldUtil::make<double>(fitRank(), fitRank(), lambda); + parameters.setCorrelationMatrix(matrix); } } diff --git a/Fit/Residual/ResidualFunctionAdapter.cpp b/Fit/Residual/ResidualFunctionAdapter.cpp index 58cdfbfb03f76fa37aac555f3f15f7502cf3d8da..6f189f30b47ddf5c7e08bd0f213f9c99a45f1c6f 100644 --- a/Fit/Residual/ResidualFunctionAdapter.cpp +++ b/Fit/Residual/ResidualFunctionAdapter.cpp @@ -55,10 +55,7 @@ const RootResidualFunction* ResidualFunctionAdapter::rootResidualFunction() void ResidualFunctionAdapter::calculate_gradients(const std::vector<double>& pars) { - m_gradients.clear(); - m_gradients.resize(pars.size()); - for (size_t i_par = 0; i_par < pars.size(); ++i_par) - m_gradients[i_par].resize(m_datasize, 0.0); + m_gradients.resize(pars.size(), std::vector<double>(m_datasize)); auto residuals = get_residuals(pars); m_number_of_gradient_calls++; diff --git a/GUI/View/Realspace/RealspaceBuilder.cpp b/GUI/View/Realspace/RealspaceBuilder.cpp index ed2d4a3038ac9fef655f315ce825782153f2065b..de519cc37c8b28489abc01eefc5bf2b5cee9a383 100644 --- a/GUI/View/Realspace/RealspaceBuilder.cpp +++ b/GUI/View/Realspace/RealspaceBuilder.cpp @@ -85,15 +85,9 @@ double visualLayerThickness(const LayerItem& layerItem, const SceneGeometry& sce std::unique_ptr<double2d_t> scaledArray(const double2d_t& src, double factor) { ASSERT(src.size()); - - std::unique_ptr<double2d_t> result = - std::make_unique<double2d_t>(src.size(), std::vector<double>(src[0].size())); - - for (size_t i = 0; i < src.size(); i++) - for (size_t j = 0; j < src[0].size(); j++) - (*result)[i][j] = src[i][j] * factor; - - return result; + return std::make_unique<double2d_t>( + FieldUtil::make<double>(src.size(), src[0].size(), + [&src, factor](size_t i, size_t j) { return src[i][j] * factor; })); } std::unique_ptr<const double2d_t> layerRoughnessMap(const LayerItem& layerItem,