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