diff --git a/Sim/Simulation/OffspecSimulation.cpp b/Sim/Simulation/OffspecSimulation.cpp index c6456c95e3c0248418fa9e15f3dd034d1a0ed679..6a284af36bb4a11ed47a83868a6a55ef23b45587 100644 --- a/Sim/Simulation/OffspecSimulation.cpp +++ b/Sim/Simulation/OffspecSimulation.cpp @@ -132,27 +132,23 @@ size_t OffspecSimulation::nElements() const Datafield OffspecSimulation::packResult() { - // update intensity map - Datafield intensity_map({m_scan->coordinateAxis()->clone(), m_detector->axis(1).clone()}); - intensity_map.setAllTo(0.); - 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; + std::vector<double> out(ns * ny, 0.); // Apply detector resolution and transfer detector image for (size_t j = 0; j < ns; ++j) { // TODO restore resolution m_detector->applyDetectorResolution(&detector_image); - 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 < Ndet; ++i) - intensity_map[j * ny + i % ny] = - background()->addBackground(intensity_map[j * ny + i % ny]); + for (size_t i = 0; i < Ndet; ++i) { + double& val = out[j * ny + i % ny]; + val += m_cache[j * Ndet + i]; + if (background()) + val = background()->addBackground(val); + } } - return {intensity_map}; + return {{m_scan->coordinateAxis()->clone(), m_detector->axis(1).clone()}, out}; }