From 82b9ba0c70c3e9b0c76267cc4eb6bcd92e8091f9 Mon Sep 17 00:00:00 2001 From: "Joachim Wuttke (o)" <j.wuttke@fz-juelich.de> Date: Fri, 20 Jan 2023 13:45:13 +0100 Subject: [PATCH] generate alpha/lambda resolution inside alpha scan --- Sim/Scan/AlphaScan.cpp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/Sim/Scan/AlphaScan.cpp b/Sim/Scan/AlphaScan.cpp index 3740ac3d6eb..4315ee33d5a 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(), -- GitLab