diff --git a/Sim/Scan/AlphaScan.cpp b/Sim/Scan/AlphaScan.cpp index 3740ac3d6eb167cab52a0e52130c53051388eb33..4315ee33d5af2bb38271fc194211b520a6507a89 100644 --- a/Sim/Scan/AlphaScan.cpp +++ b/Sim/Scan/AlphaScan.cpp @@ -61,18 +61,16 @@ std::vector<SpecularElement> AlphaScan::generateElements() const std::vector<SpecularElement> result; result.reserve(nSteps()); - const DistrOutput lambdaDistrib = - m_lambda_distrib->generateResolutionSamples(wavelength(), m_axis->size()); - const DistrOutput alphaDistrib = - m_alpha_distrib->generateResolutionSamples(m_axis->binCenters()); - for (size_t i = 0; i < m_axis->size(); ++i) { - for (size_t j = 0; j < alphaDistrib[i].size(); ++j) { - const double alpha = alphaDistrib[i][j].value; - for (size_t k = 0; k < lambdaDistrib[i].size(); ++k) { - const double wavelength = lambdaDistrib[i][k].value; + const auto lambdaDistrib = m_lambda_distrib->generateResolutionSamples(wavelength(), 1)[0]; + const auto alphaDistrib = + m_alpha_distrib->generateResolutionSamples(m_axis->binCenters()[i], 1)[0]; + for (size_t j = 0; j < alphaDistrib.size(); ++j) { + const double alpha = alphaDistrib[j].value; + for (size_t k = 0; k < lambdaDistrib.size(); ++k) { + const double wavelength = lambdaDistrib[k].value; const bool computable = wavelength >= 0 && alpha >= 0 && alpha <= M_PI_2; - const double weight = alphaDistrib[i][j].weight * lambdaDistrib[i][k].weight; + const double weight = alphaDistrib[j].weight * lambdaDistrib[k].weight; const double footprint = m_footprint ? m_footprint->calculate(alpha) : 1; result.emplace_back(SpecularElement::FromAlphaScan(i, weight, wavelength, -alpha, footprint, polarizerMatrix(),