diff --git a/Sim/Simulation/OffspecSimulation.cpp b/Sim/Simulation/OffspecSimulation.cpp index 4fd25375439ec185907dc1b17b57927c6a1a4b80..c6456c95e3c0248418fa9e15f3dd034d1a0ed679 100644 --- a/Sim/Simulation/OffspecSimulation.cpp +++ b/Sim/Simulation/OffspecSimulation.cpp @@ -136,20 +136,20 @@ Datafield OffspecSimulation::packResult() Datafield intensity_map({m_scan->coordinateAxis()->clone(), m_detector->axis(1).clone()}); intensity_map.setAllTo(0.); - size_t ny = m_detector->axis(1).size(); + const size_t ns = m_scan->nScan(); + const size_t ny = m_detector->axis(1).size(); + const size_t Ndet = m_detector->axis(0).size() * ny; // Apply detector resolution and transfer detector image - for (size_t j = 0; j < m_scan->nScan(); ++j) { - Datafield detector_image({m_detector->axis(0).clone(), m_detector->axis(1).clone()}); - size_t N = detector_image.size(); - for (size_t i = 0; i < N; ++i) - detector_image[i] = m_cache[j * N + i]; + for (size_t j = 0; j < ns; ++j) { + // TODO restore resolution m_detector->applyDetectorResolution(&detector_image); - for (size_t i = 0; i < N; ++i) - intensity_map[j * ny + i % ny] += detector_image[i]; + + for (size_t i = 0; i < Ndet; ++i) + intensity_map[j * ny + i % ny] += m_cache[j * Ndet + i]; if (background()) - for (size_t i = 0; i < N; ++i) + for (size_t i = 0; i < Ndet; ++i) intensity_map[j * ny + i % ny] = background()->addBackground(intensity_map[j * ny + i % ny]); }