Skip to content
Snippets Groups Projects
Commit 462da1ff authored by Wuttke, Joachim's avatar Wuttke, Joachim
Browse files

Offspec: intensity_map from class member to local

parent 53867f2b
Branches
Tags
1 merge request!1272Consolidate simulation classes; don't wrap SpinMatrix in PolMatrices
...@@ -74,11 +74,6 @@ void OffspecSimulation::setBeamParameters(double wavelength, const IAxis& alpha_ ...@@ -74,11 +74,6 @@ void OffspecSimulation::setBeamParameters(double wavelength, const IAxis& alpha_
throw std::runtime_error("OffspecSimulation::prepareSimulation() " throw std::runtime_error("OffspecSimulation::prepareSimulation() "
"-> Error. Incoming alpha range size < 1."); "-> Error. Incoming alpha range size < 1.");
beam() = InBeam(beam().intensity(), wavelength, alpha_axis.min(), phi_i); beam() = InBeam(beam().intensity(), wavelength, alpha_axis.min(), phi_i);
// update intensity map
ASSERT(m_alpha_i_axis);
m_intensity_map.reset(new Datafield({m_alpha_i_axis->clone(), m_detector->axis(1).clone()}));
m_intensity_map->setAllTo(0.);
} }
const IAxis* OffspecSimulation::beamAxis() const const IAxis* OffspecSimulation::beamAxis() const
...@@ -205,9 +200,15 @@ SimulationResult OffspecSimulation::packResult() const ...@@ -205,9 +200,15 @@ SimulationResult OffspecSimulation::packResult() const
for (size_t i = 0; i < m_eles.size(); i++) for (size_t i = 0; i < m_eles.size(); i++)
m_eles[i].setIntensity(m_cache[i]); m_eles[i].setIntensity(m_cache[i]);
// update intensity map
ASSERT(m_alpha_i_axis);
std::unique_ptr<Datafield> intensity_map;
intensity_map.reset(new Datafield({m_alpha_i_axis->clone(), m_detector->axis(1).clone()}));
intensity_map->setAllTo(0.);
const IAxis& phi_axis = m_detector->axis(0); const IAxis& phi_axis = m_detector->axis(0);
size_t phi_f_size = phi_axis.size(); size_t phi_f_size = phi_axis.size();
ASSERT(phi_f_size * m_intensity_map->size() == m_eles.size()); ASSERT(phi_f_size * intensity_map->size() == m_eles.size());
// Normalize, apply detector resolution and transfer detector image corresponding to // Normalize, apply detector resolution and transfer detector image corresponding to
// alpha_i = m_alpha_i_axis->bin(index) // alpha_i = m_alpha_i_axis->bin(index)
...@@ -221,10 +222,10 @@ SimulationResult OffspecSimulation::packResult() const ...@@ -221,10 +222,10 @@ SimulationResult OffspecSimulation::packResult() const
m_detector->applyDetectorResolution(detector_image.get()); m_detector->applyDetectorResolution(detector_image.get());
size_t y_axis_size = m_detector->axis(1).size(); size_t y_axis_size = m_detector->axis(1).size();
for (size_t i = 0; i < N; ++i) for (size_t i = 0; i < N; ++i)
(*m_intensity_map)[j * y_axis_size + i % y_axis_size] += (*detector_image)[i]; (*intensity_map)[j * y_axis_size + i % y_axis_size] += (*detector_image)[i];
} }
auto data = std::unique_ptr<Datafield>(m_intensity_map->clone()); auto data = std::unique_ptr<Datafield>(intensity_map->clone());
std::unique_ptr<const ICoordSystem> coordsSystem(simCoordSystem()); std::unique_ptr<const ICoordSystem> coordsSystem(simCoordSystem());
return {*data, *coordsSystem}; return {*data, *coordsSystem};
} }
......
...@@ -108,7 +108,6 @@ private: ...@@ -108,7 +108,6 @@ private:
std::vector<size_t> m_active_indices; //!< The sequence of bin indices (unmasked, in ROI) std::vector<size_t> m_active_indices; //!< The sequence of bin indices (unmasked, in ROI)
OwningVector<const IPixel> m_pixels; //!< All unmasked pixels inside ROI. OwningVector<const IPixel> m_pixels; //!< All unmasked pixels inside ROI.
std::unique_ptr<IAxis> m_alpha_i_axis; std::unique_ptr<IAxis> m_alpha_i_axis;
std::unique_ptr<Datafield> m_intensity_map;
#endif // SWIG #endif // SWIG
}; };
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment