diff --git a/Core/Algorithms/inc/Simulation.h b/Core/Algorithms/inc/Simulation.h index cd9563e865fea32259c7fd4c41357cf9ebc33155..04eb1fd57923a0ce2c9c7c89ca747d58aa49f3e3 100644 --- a/Core/Algorithms/inc/Simulation.h +++ b/Core/Algorithms/inc/Simulation.h @@ -167,6 +167,7 @@ protected: //! Default implementation only adds the detector axes void updateIntensityMapAxes(); + void updatePolarizationMapAxes(); //! Update the sample by calling the sample builder, if present void updateSample(); diff --git a/Core/Algorithms/src/Simulation.cpp b/Core/Algorithms/src/Simulation.cpp index feca83d63313e435ea2391e19716718c379d9f42..443b646a30faeb3e89edbb9df774ccc0024372f6 100644 --- a/Core/Algorithms/src/Simulation.cpp +++ b/Core/Algorithms/src/Simulation.cpp @@ -124,6 +124,9 @@ void Simulation::prepareSimulation() gsl_set_error_handler_off(); m_is_normalized = false; updateSample(); + if(getSample()->containsMagneticMaterial()) { + updatePolarizationMapAxes(); + } } //! Run simulation with possible averaging over parameter distributions @@ -180,7 +183,11 @@ void Simulation::runOMPISimulation() void Simulation::normalize() { if (!m_is_normalized) { - m_instrument.normalize(&m_intensity_map, &m_polarization_output); + if(getSample() && getSample()->containsMagneticMaterial()) { + m_instrument.normalize(&m_intensity_map, &m_polarization_output); + } else { + m_instrument.normalize(&m_intensity_map); + } m_is_normalized = true; } } @@ -284,13 +291,20 @@ const DistributionHandler &Simulation::getDistributionHandler() const void Simulation::updateIntensityMapAxes() { m_intensity_map.clear(); - m_polarization_output.clear(); size_t detector_dimension = m_instrument.getDetectorDimension(); for (size_t dim=0; dim<detector_dimension; ++dim) { m_intensity_map.addAxis(m_instrument.getDetectorAxis(dim)); + } + m_intensity_map.setAllTo(0.); +} + +void Simulation::updatePolarizationMapAxes() +{ + m_polarization_output.clear(); + size_t detector_dimension = m_instrument.getDetectorDimension(); + for (size_t dim=0; dim<detector_dimension; ++dim) { m_polarization_output.addAxis(m_instrument.getDetectorAxis(dim)); } - m_intensity_map.setAllTo(0.); m_polarization_output.setAllTo(Eigen::Matrix2d::Zero()); } diff --git a/dev-tools/log/perf_history.txt b/dev-tools/log/perf_history.txt index 764722d5432c1edb919604a116d88312d9f074ee..091594cec31fdf184425838667fb5cbc151cd9ab 100644 --- a/dev-tools/log/perf_history.txt +++ b/dev-tools/log/perf_history.txt @@ -428,3 +428,7 @@ # After introducing zero pointer for roughness | 2015-03-10 14:23:51 | jcnsopc126 | linuxx8664gcc | 0 | 15.987 | 0.352 | 1.709 | 1.059 | 0.468 | 2.192 | 0.264 | 0.522 | 7.944 | 1.478 | | 2015-03-10 14:24:10 | jcnsopc126 | linuxx8664gcc | 0 | 16.347 | 0.358 | 1.727 | 1.061 | 0.477 | 2.419 | 0.278 | 0.576 | 7.953 | 1.498 | + +# After removal polarized intensity map initialization +| 2015-03-10 17:00:39 | jcnsopc126 | linuxx8664gcc | 0 | 15.958 | 0.362 | 1.696 | 1.007 | 0.409 | 2.212 | 0.279 | 0.522 | 7.856 | 1.615 | +| 2015-03-10 17:00:58 | jcnsopc126 | linuxx8664gcc | 0 | 15.996 | 0.358 | 1.667 | 1.009 | 0.412 | 2.253 | 0.274 | 0.525 | 7.881 | 1.617