diff --git a/Core/Algorithms/inc/ChiSquaredModule.h b/Core/Algorithms/inc/ChiSquaredModule.h index 65fa517fdbe3994ee35b6fcdffb3f9a4c4a0e9a6..abca447da7e638518b870de0ad32bdf2c3685d2b 100644 --- a/Core/Algorithms/inc/ChiSquaredModule.h +++ b/Core/Algorithms/inc/ChiSquaredModule.h @@ -41,6 +41,7 @@ public: //! Returns residual between data and simulation for single element. virtual double getResidualValue(size_t index ) const; + }; #endif /* CHISQUAREDMODULE_H_ */ diff --git a/Core/Algorithms/src/ChiSquaredModule.cpp b/Core/Algorithms/src/ChiSquaredModule.cpp index 10255cbdee1bad9208405064988408b614003524..38e05c600e38fd5acc8b743d05498aefb50f3276 100644 --- a/Core/Algorithms/src/ChiSquaredModule.cpp +++ b/Core/Algorithms/src/ChiSquaredModule.cpp @@ -46,6 +46,7 @@ double ChiSquaredModule::calculateChiSquared() OutputData<double> *p_difference = createChi2DifferenceMap(); OutputData<double>::const_iterator it_weights = mp_weights->begin(); OutputData<double>::const_iterator it_diff = p_difference->begin(); + double sum = 0; while(it_diff != p_difference->end()) sum += (*it_diff++)*(*it_weights++); @@ -92,6 +93,9 @@ OutputData<double>* ChiSquaredModule::createChi2DifferenceMap() const OutputData<double>::const_iterator it_real = mp_real_data->begin(); while (it_diff != p_difference->end()) { + if( (it_sim.getIndex() != it_real.getIndex()) || (it_sim.getIndex() != it_diff.getIndex()) ) { + throw DomainErrorException("ChiSquaredModule::calculateChiSquared() -> Iterator inconsistency"); + } double value_simu = *it_sim++; double value_real = *it_real++; double squared_difference = @@ -105,3 +109,4 @@ OutputData<double>* ChiSquaredModule::createChi2DifferenceMap() const } +