From 0f2106248f1462df14d1ffe1e6e1c72aaf919545 Mon Sep 17 00:00:00 2001 From: pospelov <pospelov@fz-juelich.de> Date: Tue, 27 Nov 2012 16:33:03 +0100 Subject: [PATCH] Code cleanup in TestFittingModules --- App/inc/IsGISAXSTools.h | 3 + App/inc/TestFittingModule1.h | 10 +- App/inc/TestFittingModule2.h | 14 +- App/inc/TestFittingModule3.h | 1 - App/src/IsGISAXSTools.cpp | 21 +- App/src/TestFittingModule1.cpp | 59 ++---- App/src/TestFittingModule2.cpp | 186 ++++++++++-------- App/src/TestFittingModule3.cpp | 24 +-- Core/Algorithms/src/IOutputDataNormalizer.cpp | 2 - 9 files changed, 168 insertions(+), 152 deletions(-) diff --git a/App/inc/IsGISAXSTools.h b/App/inc/IsGISAXSTools.h index 436be6992a3..5e7b490c37b 100644 --- a/App/inc/IsGISAXSTools.h +++ b/App/inc/IsGISAXSTools.h @@ -104,6 +104,9 @@ public: //! Create TH1D for displaying of one-dimensional data scan static TH1D *getOutputDataScanHist(const OutputData<double> &data, const std::string &hname=std::string("scan_hist")); + //! create noisy data + static OutputData<double > *createNoisyData(const OutputData<double> &exact_data, double noise_factor = 0.1); + private: static double m_hist_min; // minimum value of y-axis (for 1D histograms), or z-axis (for 2D histograms) static double m_hist_max; // maximum value of y-axis (for 1D histograms), or z-axis (for 2D histograms) diff --git a/App/inc/TestFittingModule1.h b/App/inc/TestFittingModule1.h index ff9217e0855..e46def35e0b 100644 --- a/App/inc/TestFittingModule1.h +++ b/App/inc/TestFittingModule1.h @@ -26,7 +26,7 @@ class FitSuite; //- ------------------------------------------------------------------- //! @class TestFittingModule1 -//! @brief Testing of fitting module with simplified sample (layer + nanoparticles), 2 parameters +//! @brief Testing of fitting module with simple samples //- ------------------------------------------------------------------- class TestFittingModule1 : public IFunctionalTest { @@ -36,12 +36,14 @@ public: virtual void execute(); private: - void initializeSample(); + //! initialize sample: layer + nanoparticles, 2 parameters + void initializeSample1(); + //! initialize sample: layer + substrate + nanoparticles, 4 parameters void initializeSample2(); + void initializeExperiment(); - void generateRealData(double noise_factor); + void initializeRealData(); - OutputData<double> *mp_exact_data; OutputData<double> *mp_real_data; OutputData<double> *mp_simulated_data; GISASExperiment *mp_experiment; diff --git a/App/inc/TestFittingModule2.h b/App/inc/TestFittingModule2.h index b35a0fe36f5..7c4e95d66dc 100644 --- a/App/inc/TestFittingModule2.h +++ b/App/inc/TestFittingModule2.h @@ -28,7 +28,7 @@ class FitSuite; //- ------------------------------------------------------------------- //! @class TestFittingModule2 //! @brief Testing of fitting module with 5 parameters sample using -//! sample builder and different fit strategies +//! sample builder, different fit strategies and chi2 modules //- ------------------------------------------------------------------- class TestFittingModule2 : public IFunctionalTest { @@ -54,11 +54,19 @@ public: double m_cylinder_ratio; }; + //! basic fit example + void fit_example_basics(); + + //! fit example with chi2 module adjustment + void fit_example_chimodule(); + + //! fit example with strategies + void fit_example_strategies(); + private: void initializeExperiment(); - void generateRealData(double noise_factor); + void initializeRealData(); - OutputData<double> *mp_exact_data; OutputData<double> *mp_real_data; OutputData<double> *mp_simulated_data; GISASExperiment *mp_experiment; diff --git a/App/inc/TestFittingModule3.h b/App/inc/TestFittingModule3.h index 298cb3b9fb8..b0718937db0 100644 --- a/App/inc/TestFittingModule3.h +++ b/App/inc/TestFittingModule3.h @@ -41,7 +41,6 @@ private: void initializeSample(); void initializeExperiment(); void initializeRealData(); - OutputData<double > *createNoisyData(const OutputData<double> &exact_data, double noise_factor = 0.1); GISASExperiment *m_experiment; ISample *m_sample; diff --git a/App/src/IsGISAXSTools.cpp b/App/src/IsGISAXSTools.cpp index 89aa4a3b145..0cc6dbbb321 100644 --- a/App/src/IsGISAXSTools.cpp +++ b/App/src/IsGISAXSTools.cpp @@ -1,6 +1,7 @@ #include "IsGISAXSTools.h" #include "Units.h" #include "Exceptions.h" +#include "MathFunctions.h" #include "TCanvas.h" #include "TH1D.h" @@ -563,11 +564,29 @@ TH1D *IsGISAXSTools::getOutputDataScanHist(const OutputData<double> &data, const if( !hist1 ) throw LogicErrorException("IsGISAXSTools::getOutputDataScanHist() -> Error! Failed to make projection, existing name?"); hist1->SetTitle(ostr_title.str().c_str()); - // FIXME remove this trick to bypass weared bug with DrawCopy of TH2D's projection + // FIXME remove this trick to bypass weared bug with DrawCopy of TH1D projection of TH1D histohgrams TH1D *h1 = (TH1D*)hist1->Clone(); delete hist1; return h1; } +/* ************************************************************************* */ +// add noise to data +/* ************************************************************************* */ +OutputData<double > *IsGISAXSTools::createNoisyData(const OutputData<double> &exact_data, double noise_factor) +{ + OutputData<double > *real_data = exact_data.clone(); + OutputData<double>::iterator it = real_data->begin(); + while (it != real_data->end()) { + double current = *it; + double sigma = noise_factor*std::sqrt(current); + double random = MathFunctions::GenerateNormalRandom(current, sigma); + if (random<0.0) random = 0.0; + *it = random; + ++it; + } + return real_data; +} + diff --git a/App/src/TestFittingModule1.cpp b/App/src/TestFittingModule1.cpp index 33db0c8d8cd..b2ad0a236d2 100644 --- a/App/src/TestFittingModule1.cpp +++ b/App/src/TestFittingModule1.cpp @@ -30,19 +30,17 @@ TestFittingModule1::TestFittingModule1() -: mp_exact_data(0) -, mp_real_data(0) -, mp_simulated_data(0) -, mp_experiment(0) -, mp_sample(0) -, m_fitSuite(0) + : mp_real_data(0) + , mp_simulated_data(0) + , mp_experiment(0) + , mp_sample(0) + , m_fitSuite(0) { } TestFittingModule1::~TestFittingModule1() { - delete mp_exact_data; delete mp_real_data; delete mp_simulated_data; delete mp_experiment; @@ -57,17 +55,9 @@ void TestFittingModule1::execute() // initializing data initializeSample2(); - initializeExperiment(); - generateRealData(0.1); - - // drawing initial data - std::string canvas_name("TestFittingModule_c1"); - TCanvas *c1 = new TCanvas(canvas_name.c_str(), "Test of the fitting suite", 800, 600); - c1->cd(); gPad->SetLogz(); - IsGISAXSTools::drawOutputDataInPad(*mp_exact_data, "CONT4 Z", "exact data"); - c1->Update(); -\ + initializeRealData(); + m_fitSuite->addExperimentAndRealData(*mp_experiment, *mp_real_data); m_fitSuite->setMinimizer( new ROOTMinimizer("Minuit2", "Migrad") ); @@ -116,10 +106,9 @@ void TestFittingModule1::initializeExperiment() /* ************************************************************************* */ -// simple sample - cylinders in BA -// 2 fit parameters +// initialize sample: layer + nanoparticles, 2 parameters /* ************************************************************************* */ -void TestFittingModule1::initializeSample() +void TestFittingModule1::initializeSample1() { delete mp_sample; @@ -144,6 +133,9 @@ void TestFittingModule1::initializeSample() } +/* ************************************************************************* */ +// initialize sample: layer + substrate + nanoparticles, 4 parameters +/* ************************************************************************* */ void TestFittingModule1::initializeSample2() { delete mp_sample; @@ -182,36 +174,21 @@ void TestFittingModule1::initializeSample2() m_fitSuite->addFitParameter("*FormFactorCylinder/radius", 2*Units::nanometer, 1*Units::nanometer, AttLimits::lowerLimited(0.01) ); m_fitSuite->addFitParameter("*FormFactorPrism3/half_side", 12*Units::nanometer, 1*Units::nanometer, AttLimits::lowerLimited(0.01) ); m_fitSuite->addFitParameter("*FormFactorPrism3/height", 2*Units::nanometer, 1*Units::nanometer, AttLimits::lowerLimited(0.01) ); -// m_fitSuite->addFitParameter("*FormFactorCylinder/height", 12*Units::nanometer, 1*Units::nanometer, AttLimits::limited(1.,15.) ); -// m_fitSuite->addFitParameter("*FormFactorCylinder/radius", 2*Units::nanometer, 1*Units::nanometer, AttLimits::limited(1.,15.) ); -// m_fitSuite->addFitParameter("*FormFactorPrism3/half_side", 12*Units::nanometer, 1*Units::nanometer, AttLimits::limited(1.,15.) ); -// m_fitSuite->addFitParameter("*FormFactorPrism3/height", 2*Units::nanometer, 1*Units::nanometer, AttLimits::limited(1.,15.) ); } - /* ************************************************************************* */ -// generate real data +// initializing real data /* ************************************************************************* */ -void TestFittingModule1::generateRealData(double noise_factor) +void TestFittingModule1::initializeRealData() { - if(mp_exact_data) delete mp_exact_data; + if( !mp_experiment ) throw NullPointerException("TestFittingModule2::initializeRealData() -> Error! No experiment o sample defined "); mp_experiment->runSimulation(); mp_experiment->normalize(); - mp_exact_data = mp_experiment->getOutputDataClone(); - if (mp_real_data) delete mp_real_data; - - mp_real_data = mp_exact_data->clone(); - OutputData<double>::iterator it = mp_real_data->begin(); - while (it != mp_real_data->end()) { - double current = *it; - double sigma = noise_factor*std::sqrt(current); - double random = MathFunctions::GenerateNormalRandom(current, sigma); - if (random<0.0) random = 0.0; - *it = random; - ++it; - } + delete mp_real_data; + mp_real_data = IsGISAXSTools::createNoisyData(*mp_experiment->getOutputData()); } + diff --git a/App/src/TestFittingModule2.cpp b/App/src/TestFittingModule2.cpp index 9fbeca3e922..de1e71e1de5 100644 --- a/App/src/TestFittingModule2.cpp +++ b/App/src/TestFittingModule2.cpp @@ -26,22 +26,28 @@ #include "TCanvas.h" #include "TLatex.h" #include "TPaveText.h" +#include "TH2D.h" TestFittingModule2::TestFittingModule2() -: mp_exact_data(0) -, mp_real_data(0) -, mp_simulated_data(0) -, mp_experiment(0) -, mp_sample_builder(0) -, m_fitSuite(0) + : mp_real_data(0) + , mp_simulated_data(0) + , mp_experiment(0) + , mp_sample_builder(0) + , m_fitSuite(0) { + mp_sample_builder = new TestSampleBuilder(); + + // setting up fitSuite + m_fitSuite = new FitSuite(); + m_fitSuite->setMinimizer( new ROOTMinimizer("Minuit2", "Migrad") ); + m_fitSuite->attachObserver( new FitSuiteObserverPrint() ); + m_fitSuite->attachObserver( new FitSuiteObserverDraw() ); } TestFittingModule2::~TestFittingModule2() { - delete mp_exact_data; delete mp_real_data; delete mp_simulated_data; delete mp_experiment; @@ -52,28 +58,78 @@ TestFittingModule2::~TestFittingModule2() void TestFittingModule2::execute() { - // new sample builder - mp_sample_builder = new TestSampleBuilder(); - ParameterPool *pool = mp_sample_builder->createParameterTree(); - std::cout << *pool << std::endl; - delete pool; + // basic fit example + //fit_example_basics(); - // creating fit suite - m_fitSuite = new FitSuite(); + // fit example with normalizer + fit_example_chimodule(); + + // fit example with strategies + //fit_example_strategies(); +} -// m_fitSuite->addFitParameter("*SampleBuilder/m_cylinder_height", 12*Units::nanometer, 1*Units::nanometer, AttLimits::lowerLimited(0.01) ); -// m_fitSuite->addFitParameter("*SampleBuilder/m_cylinder_radius", 2*Units::nanometer, 1*Units::nanometer, AttLimits::lowerLimited(0.01) ); -// m_fitSuite->addFitParameter("*SampleBuilder/m_prism3_half_side", 12*Units::nanometer, 1*Units::nanometer, AttLimits::lowerLimited(0.01) ); -// m_fitSuite->addFitParameter("*SampleBuilder/m_prism3_height", 2*Units::nanometer, 1*Units::nanometer, AttLimits::lowerLimited(0.01) ); - m_fitSuite->addFitParameter("*SampleBuilder/m_cylinder_height", 12*Units::nanometer, 1*Units::nanometer, AttLimits::limited(1,15) ); - m_fitSuite->addFitParameter("*SampleBuilder/m_cylinder_radius", 2*Units::nanometer, 1*Units::nanometer, AttLimits::limited(1,15) ); - m_fitSuite->addFitParameter("*SampleBuilder/m_prism3_half_side", 12*Units::nanometer, 1*Units::nanometer, AttLimits::limited(1,15) ); - m_fitSuite->addFitParameter("*SampleBuilder/m_prism3_height", 2*Units::nanometer, 1*Units::nanometer, AttLimits::limited(1,15) ); +/* ************************************************************************* */ +// basic fit example +/* ************************************************************************* */ +void TestFittingModule2::fit_example_basics() +{ + initializeExperiment(); + initializeRealData(); + m_fitSuite->addFitParameter("*SampleBuilder/m_cylinder_height", 12*Units::nanometer, 1*Units::nanometer, AttLimits::lowerLimited(0.01) ); + m_fitSuite->addFitParameter("*SampleBuilder/m_cylinder_radius", 2*Units::nanometer, 1*Units::nanometer, AttLimits::lowerLimited(0.01) ); + m_fitSuite->addFitParameter("*SampleBuilder/m_prism3_half_side", 12*Units::nanometer, 1*Units::nanometer, AttLimits::lowerLimited(0.01) ); + m_fitSuite->addFitParameter("*SampleBuilder/m_prism3_height", 2*Units::nanometer, 1*Units::nanometer, AttLimits::lowerLimited(0.01) ); //m_fitSuite->addFitParameter("*SampleBuilder/m_cylinder_ratio", 0.5, 0.1, AttLimits::limited(0.1, 0.9)); m_fitSuite->addFitParameter("*SampleBuilder/m_cylinder_ratio", 0.2, 0.1, AttLimits::fixed()); + m_fitSuite->addExperimentAndRealData(*mp_experiment, *mp_real_data); + + m_fitSuite->runFit(); + +} + + +/* ************************************************************************* */ +// fit example with chi2 module adjustment +/* ************************************************************************* */ +void TestFittingModule2::fit_example_chimodule() +{ + initializeExperiment(); + initializeRealData(); + + m_fitSuite->addFitParameter("*SampleBuilder/m_cylinder_height", 12*Units::nanometer, 1*Units::nanometer, AttLimits::lowerLimited(0.01) ); + m_fitSuite->addFitParameter("*SampleBuilder/m_cylinder_radius", 2*Units::nanometer, 1*Units::nanometer, AttLimits::lowerLimited(0.01) ); + m_fitSuite->addFitParameter("*SampleBuilder/m_prism3_half_side", 12*Units::nanometer, 1*Units::nanometer, AttLimits::lowerLimited(0.01) ); + m_fitSuite->addFitParameter("*SampleBuilder/m_prism3_height", 2*Units::nanometer, 1*Units::nanometer, AttLimits::lowerLimited(0.01) ); + m_fitSuite->addFitParameter("*Normalizer/scale", 1e10, 1e3, AttLimits::limited(1e8, 1e12)); + + // setting up fitSuite + ChiSquaredModule chiModule; + chiModule.setChiSquaredFunction( SquaredFunctionWithSystematicError() ); + chiModule.setOutputDataNormalizer( OutputDataNormalizerScaleAndShift(1e10,0) ); + m_fitSuite->addExperimentAndRealData(*mp_experiment, *mp_real_data, chiModule); + + m_fitSuite->runFit(); + +} + + +/* ************************************************************************* */ +// fit example with strategies +/* ************************************************************************* */ +void TestFittingModule2::fit_example_strategies() +{ + initializeExperiment(); + initializeRealData(); + + m_fitSuite->addFitParameter("*SampleBuilder/m_cylinder_height", 12*Units::nanometer, 1*Units::nanometer, AttLimits::lowerLimited(0.01) ); + m_fitSuite->addFitParameter("*SampleBuilder/m_cylinder_radius", 2*Units::nanometer, 1*Units::nanometer, AttLimits::lowerLimited(0.01) ); + m_fitSuite->addFitParameter("*SampleBuilder/m_prism3_half_side", 12*Units::nanometer, 1*Units::nanometer, AttLimits::lowerLimited(0.01) ); + m_fitSuite->addFitParameter("*SampleBuilder/m_prism3_height", 2*Units::nanometer, 1*Units::nanometer, AttLimits::lowerLimited(0.01) ); + m_fitSuite->addFitParameter("*SampleBuilder/m_cylinder_ratio", 0.2, 0.1, AttLimits::fixed()); + // Applying fit strategy: fixing/releasing parameters // FitSuiteStrategyAdjustParameters *strategy0 = new FitSuiteStrategyAdjustParameters("strategy0"); // strategy0->fix_all().release("*SampleBuilder/m_cylinder_ratio"); @@ -85,50 +141,25 @@ void TestFittingModule2::execute() // strategy2->release_all(); // m_fitSuite->addFitStrategy(strategy2); - // Applying fit strategy: resizing real data -// m_fitSuite->addFitStrategy(new FitSuiteStrategyAdjustData(3)); -// m_fitSuite->addFitStrategy(new FitSuiteStrategyAdjustData(2)); -// m_fitSuite->addFitStrategy(new FitSuiteStrategyAdjustData(1)); -// m_fitSuite->addFitStrategy(new FitSuiteStrategyDefault()); + m_fitSuite->addFitStrategy(new FitSuiteStrategyAdjustData(3)); + m_fitSuite->addFitStrategy(new FitSuiteStrategyAdjustData(2)); + m_fitSuite->addFitStrategy(new FitSuiteStrategyAdjustData(1)); + m_fitSuite->addFitStrategy(new FitSuiteStrategyDefault()); - // Applying fit strategy: disturning data to get out of local minima + // Applying fit strategy: disturbing data to get out of local minima //m_fitSuite->addFitStrategy(new FitSuiteStrategyBootstrap()); - initializeExperiment(); - generateRealData(0.1); - - // drawing initial data - std::string canvas_name("TestFittingModule_c1"); - TCanvas *c1 = new TCanvas(canvas_name.c_str(), "Test of the fitting suite", 800, 600); - c1->cd(); gPad->SetLogz(); - IsGISAXSTools::drawOutputDataInPad(*mp_exact_data, "CONT4 Z", "exact data"); - c1->Update(); -\ - // setting up fitSuite -// m_fitSuite->setExperiment(mp_experiment); -// m_fitSuite->setRealData(*mp_real_data); - - // setting up fitSuite - ChiSquaredModule chiModule; - chiModule.setChiSquaredFunction( SquaredFunctionWithSystematicError() ); - chiModule.setOutputDataNormalizer( OutputDataNormalizerScaleAndShift(1e10,0) ); - - m_fitSuite->addExperimentAndRealData(*mp_experiment, *mp_real_data, chiModule); + m_fitSuite->addExperimentAndRealData(*mp_experiment, *mp_real_data); m_fitSuite->setMinimizer( new ROOTMinimizer("Minuit2", "Migrad") ); - m_fitSuite->attachObserver( new FitSuiteObserverPrint() ); - m_fitSuite->attachObserver( new FitSuiteObserverDraw() ); - //fitSuite->attachObserver( new FitSuiteObserverWriteTree() ); - m_fitSuite->runFit(); -// delete drawObserver; -// delete writeObserver; } + /* ************************************************************************* */ // initializing experiment /* ************************************************************************* */ @@ -147,6 +178,28 @@ void TestFittingModule2::initializeExperiment() } +/* ************************************************************************* */ +// initializing real data +/* ************************************************************************* */ +void TestFittingModule2::initializeRealData() +{ + if( !mp_experiment ) throw NullPointerException("TestFittingModule2::initializeRealData() -> Error! No experiment o sample defined "); + + // generating "real" data + mp_experiment->runSimulation(); + mp_experiment->normalize(); + delete mp_real_data; + mp_real_data = IsGISAXSTools::createNoisyData(*mp_experiment->getOutputData()); + + // drawing data + TCanvas *c1 = new TCanvas("c1","c1",640, 480); + c1->cd(); gPad->SetLogz(); + TH2D *hist = IsGISAXSTools::getOutputDataTH2D( *mp_real_data, "real_data"); + hist->Draw("COLZ"); + c1->Update(); +} + + /* ************************************************************************* */ // simple sample - mixture of cylinders and prisms on top of substrate // builder via ISampleBuilder @@ -198,28 +251,3 @@ void TestFittingModule2::TestSampleBuilder::init_parameters() } -/* ************************************************************************* */ -// generate real data -/* ************************************************************************* */ -void TestFittingModule2::generateRealData(double noise_factor) -{ - if(mp_exact_data) delete mp_exact_data; - - mp_experiment->runSimulation(); - mp_experiment->normalize(); - mp_exact_data = mp_experiment->getOutputDataClone(); - if (mp_real_data) delete mp_real_data; - - mp_real_data = mp_exact_data->clone(); - OutputData<double>::iterator it = mp_real_data->begin(); - while (it != mp_real_data->end()) { - double current = *it; - double sigma = noise_factor*std::sqrt(current); - double random = MathFunctions::GenerateNormalRandom(current, sigma); - if (random<0.0) random = 0.0; - *it = random; - ++it; - } -} - - diff --git a/App/src/TestFittingModule3.cpp b/App/src/TestFittingModule3.cpp index 2d879ee738b..4ca8943b682 100644 --- a/App/src/TestFittingModule3.cpp +++ b/App/src/TestFittingModule3.cpp @@ -102,7 +102,7 @@ void TestFittingModule3::initializeExperiment() m_experiment->setDetectorParameters(100, 0.0*Units::degree, 2.0*Units::degree,100 , 0.0*Units::degree, 2.0*Units::degree); // m_experiment->setDetectorParameters(100, 0.0*Units::degree, 2.0*Units::degree, 1, 0.01, 0.011); m_experiment->setBeamParameters(1.0*Units::angstrom, -0.2*Units::degree, 0.0*Units::degree); - m_experiment->setDetectorResolutionFunction(new ResolutionFunction2DSimple(0.0002, 0.0002)); + //m_experiment->setDetectorResolutionFunction(new ResolutionFunction2DSimple(0.0002, 0.0002)); m_experiment->setBeamIntensity(1e10); } @@ -150,7 +150,7 @@ void TestFittingModule3::initializeRealData() m_experiment->runSimulation(); m_experiment->normalize(); delete m_real_data; - m_real_data = createNoisyData(*m_experiment->getOutputData()); + m_real_data = IsGISAXSTools::createNoisyData(*m_experiment->getOutputData()); // setting up 1d scans by making slices on real data for(DataScan_t::iterator it=m_data_scans.begin(); it!= m_data_scans.end(); ++it) { @@ -158,7 +158,7 @@ void TestFittingModule3::initializeRealData() } m_data_scans.clear(); m_data_scans.push_back( OutputDataFunctions::selectRangeOnOneAxis(*m_real_data, "alpha_f", 0.012, 0.012) ); -// m_data_scans.push_back( OutputDataFunctions::selectRangeOnOneAxis(*m_real_data, "phi_f", 0.011, 0.011) ); + m_data_scans.push_back( OutputDataFunctions::selectRangeOnOneAxis(*m_real_data, "phi_f", 0.011, 0.011) ); // drawing data and scans TCanvas *c1 = new TCanvas("c1","c1",1024, 768); @@ -184,22 +184,4 @@ void TestFittingModule3::initializeRealData() } -/* ************************************************************************* */ -// add noise to data -/* ************************************************************************* */ -OutputData<double > *TestFittingModule3::createNoisyData(const OutputData<double> &exact_data, double noise_factor) -{ - OutputData<double > *real_data = exact_data.clone(); - OutputData<double>::iterator it = real_data->begin(); - while (it != real_data->end()) { - double current = *it; - double sigma = noise_factor*std::sqrt(current); - double random = MathFunctions::GenerateNormalRandom(current, sigma); - if (random<0.0) random = 0.0; -// *it = random; - *it=current; - ++it; - } - return real_data; -} diff --git a/Core/Algorithms/src/IOutputDataNormalizer.cpp b/Core/Algorithms/src/IOutputDataNormalizer.cpp index 52fc5ca5bf6..e5bbd0ed7e2 100644 --- a/Core/Algorithms/src/IOutputDataNormalizer.cpp +++ b/Core/Algorithms/src/IOutputDataNormalizer.cpp @@ -47,7 +47,6 @@ OutputData<double> *OutputDataNormalizerScaleAndShift::createNormalizedData(cons OutputData<double >::const_iterator cit = std::max_element(data.begin(), data.end()); double max_intensity = (*cit); - std::cout << "QQQ before " << data.totalSum() << std::endl; if(max_intensity) { OutputData<double >::iterator it = normalized_data->begin(); while(it!=normalized_data->end()) { @@ -55,7 +54,6 @@ OutputData<double> *OutputDataNormalizerScaleAndShift::createNormalizedData(cons (*it) = m_scale*(value/max_intensity) + m_shift; ++it; } - std::cout << "QQQ after " << normalized_data->totalSum() << std::endl; } else { std::cout << "OutputDataNormalizerScaleAndShift::createNormalizedData() -> Warning! Zero maximum intensity" << std::endl; } -- GitLab