diff --git a/Core/Tools/inc/OutputDataFunctions.h b/Core/Tools/inc/OutputDataFunctions.h index 10e4969612884952bfefddc8fba50a11d74f0c66..5ae6566de95a2b05f2abfc70a265c0a0ea76aa47 100644 --- a/Core/Tools/inc/OutputDataFunctions.h +++ b/Core/Tools/inc/OutputDataFunctions.h @@ -93,6 +93,10 @@ namespace OutputDataFunctions BA_CORE_API_ Mask *CreateEllipticMask( const OutputData<double>& data, double xc, double yc, double rx, double ry); + + // compare result with reference and return the difference + double GetDifference(const OutputData<double> &result, + const OutputData<double> &reference); } #endif // OUTPUTDATAFUNCTIONS_H diff --git a/Core/Tools/src/OutputDataFunctions.cpp b/Core/Tools/src/OutputDataFunctions.cpp index 18ea7e13323fdc68f7b7767ab81a7ea64286b462..83678eb9141e10ba9a66a8dfa0141be9a24f80e5 100644 --- a/Core/Tools/src/OutputDataFunctions.cpp +++ b/Core/Tools/src/OutputDataFunctions.cpp @@ -482,3 +482,27 @@ Mask* OutputDataFunctions::CreateEllipticMask( return OutputDataFunctions::CreateEllipticMask(data, center, radii); } +double OutputDataFunctions::GetDifference(const OutputData<double> &result, + const OutputData<double> &reference) +{ + OutputData<double> *c_result = result.clone(); + OutputData<double> *c_reference = reference.clone(); + + // Calculating average relative difference. + *c_result -= *c_reference; + *c_result /= *c_reference; + + double diff(0); + for(OutputData<double>::const_iterator it = + c_result->begin(); it!=c_result->end(); ++it) { + diff+= std::fabs(*it); + } + diff /= c_result->getAllocatedSize(); + + if (std::isnan(diff)) throw RuntimeErrorException("diff=NaN!"); + + delete c_result; + delete c_reference; + + return diff; +} diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS01/IsGISAXS01.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS01/IsGISAXS01.cpp index 25c5ee9b58316ea9a69f773daf0ceb5be319a709..56fa5f93737609b193e999a05023e8a7433e4fd9 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS01/IsGISAXS01.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS01/IsGISAXS01.cpp @@ -6,6 +6,7 @@ #include "Units.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> @@ -40,19 +41,12 @@ int FunctionalTests::IsGISAXS01::analyseResults() const double threshold(2e-10); // Calculating average relative difference. - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it = - m_result->begin(); it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); // Assess result. bool status_ok(true); - if( diff > threshold || std::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; + std::cout << " diff " << diff << std::endl; std::cout << m_name << " " << m_description << " " << diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS02/IsGISAXS02.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS02/IsGISAXS02.cpp index d8516fee326ff637f1b899ce9ff5580e306fb906..57d8f4ce2441b13232f667c7e02e3dd654fa5aea 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS02/IsGISAXS02.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS02/IsGISAXS02.cpp @@ -6,6 +6,7 @@ #include "SampleBuilderFactory.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> @@ -40,18 +41,11 @@ int FunctionalTests::IsGISAXS02::analyseResults() const double threshold(2e-10); // calculating average relative difference - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it=m_result->begin(); it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); // Assess result. bool status_ok(true); - if( diff > threshold || std::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << " diff " << diff << std::endl; std::cout << m_name << " " << m_description << " " << diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS03BA/IsGISAXS03BA.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS03BA/IsGISAXS03BA.cpp index 4d2479daa4e449ae648e7c9bd3a4e55bcde35564..dbf923becbf586cf350ea17300e9c3a848d76665 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS03BA/IsGISAXS03BA.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS03BA/IsGISAXS03BA.cpp @@ -6,6 +6,7 @@ #include "Units.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> @@ -40,19 +41,11 @@ int FunctionalTests::IsGISAXS03BA::analyseResults() const double threshold(2e-10); // Calculating average relative difference. - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it = - m_result->begin(); it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); // Assess result. bool status_ok(true); - if( diff > threshold || std::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << " diff " << diff << std::endl; std::cout << m_name << " " << m_description << " " << diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS03DWBA/IsGISAXS03DWBA.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS03DWBA/IsGISAXS03DWBA.cpp index 35d4cce9eed424f65b82846d3acfabe9119ba11c..4a019771877c31de269ce139ad9cb7153bdb9208 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS03DWBA/IsGISAXS03DWBA.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS03DWBA/IsGISAXS03DWBA.cpp @@ -6,6 +6,7 @@ #include "Units.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> @@ -40,19 +41,11 @@ int FunctionalTests::IsGISAXS03DWBA::analyseResults() const double threshold(2e-10); // Calculating average relative difference. - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it = - m_result->begin(); it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); // Assess result. bool status_ok(true); - if( diff > threshold || std::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << " diff " << diff << std::endl; std::cout << m_name << " " << m_description << " " << diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS041DDL/IsGISAXS041DDL.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS041DDL/IsGISAXS041DDL.cpp index a73abde9b89470a8d4b10b465a0d5849d747f72c..b309783ce5243347e32287cf0ac19c32153feb33 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS041DDL/IsGISAXS041DDL.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS041DDL/IsGISAXS041DDL.cpp @@ -6,6 +6,7 @@ #include "Utils.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> #include <gsl/gsl_errno.h> @@ -40,19 +41,11 @@ int FunctionalTests::IsGISAXS041DDL::analyseResults() const double threshold(2e-10); // Calculating average relative difference. - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it = - m_result->begin(); it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); // Assess result. bool status_ok(true); - if( diff > threshold || std::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << " diff " << diff << std::endl; std::cout << m_name << " " << m_description << " " << diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS042DDL/IsGISAXS042DDL.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS042DDL/IsGISAXS042DDL.cpp index 8e4c868988438c264f7822339ab69dd9b2c07d6e..fe256e96147120eb7733dffd9784d9f49545373e 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS042DDL/IsGISAXS042DDL.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS042DDL/IsGISAXS042DDL.cpp @@ -6,6 +6,7 @@ #include "Utils.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> #include <gsl/gsl_errno.h> @@ -40,19 +41,11 @@ int FunctionalTests::IsGISAXS042DDL::analyseResults() const double threshold(2e-10); // Calculating average relative difference. - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it = - m_result->begin(); it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); // Assess result. bool status_ok(true); - if( diff > threshold || std::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << " diff " << diff << std::endl; std::cout << m_name << " " << m_description << " " << diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS06L1/IsGISAXS06L1.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS06L1/IsGISAXS06L1.cpp index c9259141db9adc089e9e5ac1f5f5984e6391959f..622eafd92988e8ef8afe11d4df47b32f83f1ab0e 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS06L1/IsGISAXS06L1.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS06L1/IsGISAXS06L1.cpp @@ -15,6 +15,7 @@ #include "IsGISAXS06Builder.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> @@ -49,19 +50,11 @@ int FunctionalTests::IsGISAXS06L1::analyseResults() const double threshold(2e-10); // Calculating average relative difference. - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it = - m_result->begin(); it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); // Assess result. bool status_ok(true); - if( diff > threshold || std::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << " diff " << diff << std::endl; std::cout << m_name << " " << m_description << " " << diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS06L2/IsGISAXS06L2.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS06L2/IsGISAXS06L2.cpp index 6cc0d3fadaeceab9dfd479add19623035d8cd295..1dadfbcae4efdfb30dc2c50cd233fed5e6e97210 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS06L2/IsGISAXS06L2.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS06L2/IsGISAXS06L2.cpp @@ -15,6 +15,7 @@ #include "IsGISAXS06Builder.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> @@ -49,19 +50,11 @@ int FunctionalTests::IsGISAXS06L2::analyseResults() const double threshold(2e-10); // Calculating average relative difference. - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it = - m_result->begin(); it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); // Assess result. bool status_ok(true); - if( diff > threshold || std::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << " diff " << diff << std::endl; std::cout << m_name << " " << m_description << " " << diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS06L3/IsGISAXS06L3.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS06L3/IsGISAXS06L3.cpp index 56c0ab4bf6772f6c5ed1117062696ef20fdcdaa0..25edf329ae4929cfec1eb427f052e746a26801e4 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS06L3/IsGISAXS06L3.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS06L3/IsGISAXS06L3.cpp @@ -15,6 +15,7 @@ #include "IsGISAXS06Builder.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> @@ -49,19 +50,11 @@ int FunctionalTests::IsGISAXS06L3::analyseResults() const double threshold(2e-10); // Calculating average relative difference. - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it = - m_result->begin(); it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); // Assess result. bool status_ok(true); - if( diff > threshold || std::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << " diff " << diff << std::endl; std::cout << m_name << " " << m_description << " " << diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS06L4/IsGISAXS06L4.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS06L4/IsGISAXS06L4.cpp index 72f9ab064765944445be227e18941e3c7dc918e0..cf34e6f5d4198e9795313a95a251e82ebc52dd3c 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS06L4/IsGISAXS06L4.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS06L4/IsGISAXS06L4.cpp @@ -15,6 +15,7 @@ #include "IsGISAXS06Builder.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> @@ -69,19 +70,11 @@ int FunctionalTests::IsGISAXS06L4::analyseResults() const double threshold(2e-10); // Calculating average relative difference. - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it = - m_result->begin(); it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); // Assess result. bool status_ok(true); - if( diff > threshold || std::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << " diff " << diff << std::endl; std::cout << m_name << " " << m_description << " " << diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS07/IsGISAXS07.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS07/IsGISAXS07.cpp index e540d38eeb5f22652a272569eab48fcf4b2159bc..46d107c925edbce65e827c6c4fca4d49814556c1 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS07/IsGISAXS07.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS07/IsGISAXS07.cpp @@ -11,6 +11,7 @@ #include "Units.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> @@ -42,17 +43,10 @@ int FunctionalTests::IsGISAXS07::analyseResults() const double threshold(2e-10); // calculating average relative difference - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it=m_result->begin(); it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); bool status_ok(true); - if( diff > threshold || std::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << m_name << " " << m_description << " " << (status_ok ? "[OK]" : "[FAILED]") << std::endl; return (status_ok ? 0 : 1); diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS082DDL/IsGISAXS082DDL.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS082DDL/IsGISAXS082DDL.cpp index ddccf21bf50419194c07d22b1c267ad504a5cc21..83ae4af28314d258d87763c928dbc88f73b2a758 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS082DDL/IsGISAXS082DDL.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS082DDL/IsGISAXS082DDL.cpp @@ -6,6 +6,7 @@ #include "Utils.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> @@ -39,19 +40,11 @@ int FunctionalTests::IsGISAXS082DDL::analyseResults() const double threshold(2e-10); // Calculating average relative difference. - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it = - m_result->begin(); it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); // Assess result. bool status_ok(true); - if( diff > threshold || std::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << " diff " << diff << std::endl; std::cout << m_name << " " << m_description << " " << diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS082DDL2/IsGISAXS082DDL2.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS082DDL2/IsGISAXS082DDL2.cpp index 52c1f778f7d644a785ffe2e55228f18905135844..f9128facbb7da365620d467d62630fe05a23b11f 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS082DDL2/IsGISAXS082DDL2.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS082DDL2/IsGISAXS082DDL2.cpp @@ -6,6 +6,7 @@ #include "Utils.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> @@ -39,19 +40,11 @@ int FunctionalTests::IsGISAXS082DDL2::analyseResults() const double threshold(2e-10); // Calculating average relative difference. - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it = - m_result->begin(); it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); // Assess result. bool status_ok(true); - if( diff > threshold || std::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << " diff " << diff << std::endl; std::cout << m_name << " " << m_description << " " << diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS09P/IsGISAXS09P.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS09P/IsGISAXS09P.cpp index c8ed78222fb980af2ed0bc5c4c8ef7362e784ea0..6c68c27a1fda145101e12dd4eac70de0ee3f1c70 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS09P/IsGISAXS09P.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS09P/IsGISAXS09P.cpp @@ -6,6 +6,7 @@ #include "Units.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> @@ -40,19 +41,11 @@ int FunctionalTests::IsGISAXS09::analyseResults() const double threshold(2e-10); // Calculating average relative difference. - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it = - m_result->begin(); it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); // Assess result. bool status_ok(true); - if( diff > threshold || std::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << " diff " << diff << std::endl; std::cout << m_name << " " << m_description << " " << diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS09R/IsGISAXS09R.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS09R/IsGISAXS09R.cpp index fd65882d1d95b3af2d6cc9fe825211ec713c20a8..e713372df69af9c55621d98d0c56b54291643e8c 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS09R/IsGISAXS09R.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS09R/IsGISAXS09R.cpp @@ -6,6 +6,7 @@ #include "Units.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> @@ -40,19 +41,11 @@ int FunctionalTests::IsGISAXS09R::analyseResults() const double threshold(2e-10); // Calculating average relative difference. - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it = - m_result->begin(); it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); // Assess result. bool status_ok(true); - if( diff > threshold || std::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << " diff " << diff << std::endl; std::cout << m_name << " " << m_description << " " << diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS10/IsGISAXS10.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS10/IsGISAXS10.cpp index fb1e0d6f250af2d0f3456f80c30d38fdc9980da4..151a71ecf29465733efbbb02d0c5a73ac765a2f3 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS10/IsGISAXS10.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS10/IsGISAXS10.cpp @@ -10,6 +10,7 @@ #include "Utils.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> @@ -44,18 +45,10 @@ int FunctionalTests::IsGISAXS10::analyseResults() const double threshold(2e-10); // calculating average relative difference - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it=m_result->begin(); - it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); bool status_ok(true); - if( diff > threshold || MathFunctions::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << m_name << " " << m_description << " " << (status_ok ? "[OK]" : "[FAILED]") << std::endl; diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS11/IsGISAXS11.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS11/IsGISAXS11.cpp index da55cac7ae29951f2196fd28b0e2e8645db01ed4..6757e0fd36b2e99b5d10946736bb4e38d4032f34 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS11/IsGISAXS11.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS11/IsGISAXS11.cpp @@ -12,6 +12,7 @@ #include "Utils.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> @@ -47,18 +48,10 @@ int FunctionalTests::IsGISAXS11::analyseResults() const double threshold(2e-10); // calculating average relative difference - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it=m_result->begin(); - it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); bool status_ok(true); - if( diff > threshold || MathFunctions::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << m_name << " " << m_description << " " << (status_ok ? "[OK]" : "[FAILED]") << std::endl; diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS15/IsGISAXS15.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS15/IsGISAXS15.cpp index 84fbc01a416cc01de953eb21c5203a159d29c628..fbbb1008c54b9f2012fdd251afb7d203828e970a 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS15/IsGISAXS15.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS15/IsGISAXS15.cpp @@ -13,6 +13,7 @@ #include "Utils.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> @@ -46,18 +47,10 @@ int FunctionalTests::IsGISAXS15::analyseResults() const double threshold(2e-10); // calculating average relative difference - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it=m_result->begin(); - it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); bool status_ok(true); - if( diff > threshold || MathFunctions::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << m_name << " " << m_description << " " << (status_ok ? "[OK]" : "[FAILED]") << std::endl; diff --git a/Tests/FunctionalTests/TestCore/MesoCrystal1/MesoCrystal1.cpp b/Tests/FunctionalTests/TestCore/MesoCrystal1/MesoCrystal1.cpp index 17bdb4e26ec91198a2b3ffda6a579285d3857c70..052b78cfd01458266f3e243ec0de03644cdbad0f 100644 --- a/Tests/FunctionalTests/TestCore/MesoCrystal1/MesoCrystal1.cpp +++ b/Tests/FunctionalTests/TestCore/MesoCrystal1/MesoCrystal1.cpp @@ -6,6 +6,7 @@ #include "Units.h" #include "Types.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" using namespace FunctionalTests; @@ -45,18 +46,10 @@ int MesoCrystal1::analyseResults() const double threshold(1e-10); // calculating average relative difference - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it=m_result->begin(); - it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); bool status_ok(true); - if( diff > threshold || std::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << " diff " << diff << std::endl; std::cout << m_name << " " << m_description << " " << diff --git a/Tests/FunctionalTests/TestCore/PolarizedDWBAZeroMag/PolarizedDWBAZeroMag.cpp b/Tests/FunctionalTests/TestCore/PolarizedDWBAZeroMag/PolarizedDWBAZeroMag.cpp index 722166fb6ef638adc72dcfc8143ce6c2655666ba..f76a130a8e5b5762ee19ef95028a088abc7a0ba3 100644 --- a/Tests/FunctionalTests/TestCore/PolarizedDWBAZeroMag/PolarizedDWBAZeroMag.cpp +++ b/Tests/FunctionalTests/TestCore/PolarizedDWBAZeroMag/PolarizedDWBAZeroMag.cpp @@ -6,6 +6,7 @@ #include "Units.h" #include "Types.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" using namespace FunctionalTests; @@ -42,18 +43,10 @@ int PolarizedDWBAZeroMag::analyseResults() const double threshold(1e-10); // calculating average relative difference - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it=m_result->begin(); - it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); bool status_ok(true); - if( diff > threshold || std::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << " diff " << diff << std::endl; std::cout << m_name << " " << m_description << " " <<