From 51529b7b041244a879e1b70800a15b8e08d1c175 Mon Sep 17 00:00:00 2001
From: Gennady Pospelov <g.pospelov@fz-juelich.de>
Date: Tue, 29 Sep 2015 13:33:24 +0200
Subject: [PATCH] FitStrategyAdjustData is abandoned and removed

---
 App/src/TestFittingModule2.cpp               | 65 ++++++++--------
 Fit/FitKernel/inc/FitObject.h                |  6 +-
 Fit/FitKernel/inc/FitStrategyAdjustData.h    | 57 --------------
 Fit/FitKernel/inc/FitSuiteObjects.h          |  4 +-
 Fit/FitKernel/src/FitObject.cpp              | 34 ++++-----
 Fit/FitKernel/src/FitStrategyAdjustData.cpp  | 80 --------------------
 Fit/PythonAPI/src/FitObject.pypp.cpp         | 11 ---
 Fit/PythonAPI/src/FitSuiteObjects.pypp.cpp   | 11 ---
 Fit/PythonAPI/src/IChiSquaredModule.pypp.cpp | 11 +++
 9 files changed, 65 insertions(+), 214 deletions(-)
 delete mode 100644 Fit/FitKernel/inc/FitStrategyAdjustData.h
 delete mode 100644 Fit/FitKernel/src/FitStrategyAdjustData.cpp

diff --git a/App/src/TestFittingModule2.cpp b/App/src/TestFittingModule2.cpp
index 396a22c9884..4735be9abad 100644
--- a/App/src/TestFittingModule2.cpp
+++ b/App/src/TestFittingModule2.cpp
@@ -19,7 +19,6 @@
 #include "Exceptions.h"
 #include "FitSuite.h"
 #include "FitSuiteObserverFactory.h"
-#include "FitStrategyAdjustData.h"
 #include "FitStrategyAdjustParameters.h"
 #include "FormFactors.h"
 #include "Simulation.h"
@@ -170,37 +169,39 @@ void TestFittingModule2::fit_example_chimodule()
 
 void TestFittingModule2::fit_example_strategy_data()
 {
-    initializeSimulation();
-    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_length",
-                                24*Units::nanometer, 2*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: resizing real data
-    m_fitSuite->addFitStrategy(new FitStrategyAdjustData(3));
-    m_fitSuite->addFitStrategy(new FitStrategyAdjustData(2));
-    m_fitSuite->addFitStrategy(new FitStrategyAdjustData(1));
-    m_fitSuite->addFitStrategy(new FitStrategyDefault());
-
-    m_fitSuite->addSimulationAndRealData(*mp_simulation, *mp_real_data);
-
-    m_fitSuite->setMinimizer(
-        MinimizerFactory::createMinimizer("Minuit2", "Migrad") );
-
-    m_fitSuite->runFit();
+    throw NotImplementedException("TestFittingModule2::fit_example_strategy_data() -> Obsolete code.");
+
+//    initializeSimulation();
+//    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_length",
+//                                24*Units::nanometer, 2*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: resizing real data
+//    m_fitSuite->addFitStrategy(new FitStrategyAdjustData(3));
+//    m_fitSuite->addFitStrategy(new FitStrategyAdjustData(2));
+//    m_fitSuite->addFitStrategy(new FitStrategyAdjustData(1));
+//    m_fitSuite->addFitStrategy(new FitStrategyDefault());
+
+//    m_fitSuite->addSimulationAndRealData(*mp_simulation, *mp_real_data);
+
+//    m_fitSuite->setMinimizer(
+//        MinimizerFactory::createMinimizer("Minuit2", "Migrad") );
+
+//    m_fitSuite->runFit();
 }
 
 
diff --git a/Fit/FitKernel/inc/FitObject.h b/Fit/FitKernel/inc/FitObject.h
index c09aff7a0f6..29fd87be93d 100644
--- a/Fit/FitKernel/inc/FitObject.h
+++ b/Fit/FitKernel/inc/FitObject.h
@@ -46,12 +46,10 @@ class BA_CORE_API_ FitObject : public IParameterized
 
     //! Returns real data
     const OutputData<double> *getRealData() const { return m_real_data; }
-    //! Sets real data
-    void setRealData(const OutputData<double >& real_data);
+//    //! Sets real data
+//    void setRealData(const OutputData<double >& real_data);
 
     //! Returns simulated data
-//    const OutputData<double> *getSimulationData() const {
-//        return m_simulation->getOutputData(); }
     const OutputData<double> *getSimulationData() const {
         return m_chi2_module->getSimulationData(); }
 
diff --git a/Fit/FitKernel/inc/FitStrategyAdjustData.h b/Fit/FitKernel/inc/FitStrategyAdjustData.h
deleted file mode 100644
index 1ff4b00821a..00000000000
--- a/Fit/FitKernel/inc/FitStrategyAdjustData.h
+++ /dev/null
@@ -1,57 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      FitKernel/inc/FitStrategyAdjustData.h
-//! @brief     Defines class FitStrategyAdjustData
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2015
-//! @authors   Scientific Computing Group at MLZ Garching
-//! @authors   C. Durniak, M. Ganeva, G. Pospelov, W. Van Herck, J. Wuttke
-//
-// ************************************************************************** //
-
-#ifndef FITSTRATEGYADJUSTDATA_H
-#define FITSTRATEGYADJUSTDATA_H
-
-#include "IFitStrategy.h"
-
-//! @class FitStrategyAdjustData
-//! @ingroup fitting
-//! @brief Strategy modifies data before running minimization round
-
-class BA_CORE_API_ FitStrategyAdjustData : public IFitStrategy
-{
-public:
-    FitStrategyAdjustData(int power_of_two = 1,
-            bool preserve_original=true, bool call_minimize=true)
-        : IFitStrategy("FitStrategyAdjustData")
-        , m_power_of_two(power_of_two)
-        , m_preserve_original_data(preserve_original)
-        , m_call_minimize(call_minimize) { }
-
-    virtual FitStrategyAdjustData *clone() const { return new FitStrategyAdjustData(*this); }
-
-    void setPreserveOriginalData(bool preserve_original) {
-        m_preserve_original_data = preserve_original;
-    }
-    void setCallMinimize(bool call_minimize) {
-        m_call_minimize = call_minimize;
-    }
-    virtual void execute();
-protected:
-    FitStrategyAdjustData(const FitStrategyAdjustData &other);
-
-    size_t m_power_of_two;
-    //! if it is true, strategy will restore original data in FitSuite
-    //! before exiting
-    bool m_preserve_original_data;
-    //! if it's true, modify data and then call FitSuite's minimizer,
-    //! if false - simply modify the data
-    bool m_call_minimize;
-};
-
-#endif // FITSTRATEGYADJUSTDATA_H
-
diff --git a/Fit/FitKernel/inc/FitSuiteObjects.h b/Fit/FitKernel/inc/FitSuiteObjects.h
index 6aecc361b83..01207625086 100644
--- a/Fit/FitKernel/inc/FitSuiteObjects.h
+++ b/Fit/FitKernel/inc/FitSuiteObjects.h
@@ -76,8 +76,8 @@ class BA_CORE_API_  FitSuiteObjects : public IParameterized
         return m_fit_objects[check_index(i_item)]->getRealData(); }
 
     //! Sets real data
-    void setRealData(const OutputData<double >& real_data, size_t i_item = 0) {
-        m_fit_objects[check_index(i_item)]->setRealData(real_data);}
+//    void setRealData(const OutputData<double >& real_data, size_t i_item = 0) {
+//        m_fit_objects[check_index(i_item)]->setRealData(real_data);}
 
     //! Returns simulated data
     const OutputData<double> * getSimulationData(size_t i_item = 0) const { return m_fit_objects[check_index(i_item)]->getSimulationData(); }
diff --git a/Fit/FitKernel/src/FitObject.cpp b/Fit/FitKernel/src/FitObject.cpp
index 5da46fca264..3c68a2135c7 100644
--- a/Fit/FitKernel/src/FitObject.cpp
+++ b/Fit/FitKernel/src/FitObject.cpp
@@ -46,23 +46,23 @@ FitObject::~FitObject()
 }
 
 //! Sets real data
-void FitObject::setRealData(const OutputData<double >& real_data)
-{
-    delete m_real_data;
-    m_real_data = real_data.clone();
-    if( m_simulation) {
-        if( !m_real_data->hasSameShape(*m_simulation->getOutputData()) ) {
-            msglog(MSG::INFO) << "FitObject::setRealData() -> "
-                "Real data and the detector have different shape. "
-                "Adjusting detector...";
-        } else {
-            msglog(MSG::INFO) << "FitObject::setRealData() -> "
-                "Real data and the detector have same shape. "
-                "No need to adjust detector.";
-        }
-        m_simulation->setDetectorParameters(*m_real_data);
-    }
-}
+//void FitObject::setRealData(const OutputData<double >& real_data)
+//{
+//    delete m_real_data;
+//    m_real_data = real_data.clone();
+//    if( m_simulation) {
+//        if( !m_real_data->hasSameShape(*m_simulation->getOutputData()) ) {
+//            msglog(MSG::INFO) << "FitObject::setRealData() -> "
+//                "Real data and the detector have different shape. "
+//                "Adjusting detector...";
+//        } else {
+//            msglog(MSG::INFO) << "FitObject::setRealData() -> "
+//                "Real data and the detector have same shape. "
+//                "No need to adjust detector.";
+//        }
+//        m_simulation->setDetectorParameters(*m_real_data);
+//    }
+//}
 
 //! Updates m_chi2_module; returns chi squared value.
 
diff --git a/Fit/FitKernel/src/FitStrategyAdjustData.cpp b/Fit/FitKernel/src/FitStrategyAdjustData.cpp
deleted file mode 100644
index 0e89d80373c..00000000000
--- a/Fit/FitKernel/src/FitStrategyAdjustData.cpp
+++ /dev/null
@@ -1,80 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      FitKernel/src/FitStrategyAdjustData.cpp
-//! @brief     Implements class FitStrategyAdjustData.
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2015
-//! @authors   Scientific Computing Group at MLZ Garching
-//! @authors   C. Durniak, M. Ganeva, G. Pospelov, W. Van Herck, J. Wuttke
-//
-// ************************************************************************** //
-
-#include "FitStrategyAdjustData.h"
-#include "FitSuite.h"
-#include "OutputDataFunctions.h"
-#include "MessageService.h"
-
-
-
-FitStrategyAdjustData::FitStrategyAdjustData(const FitStrategyAdjustData &other)
-    : IFitStrategy(other)
-    , m_power_of_two(other.m_power_of_two)
-    , m_preserve_original_data(other.m_preserve_original_data)
-    , m_call_minimize(other.m_call_minimize)
-{
-
-}
-
-
-//! adjust (rebin) data before running fit suite minimization round
-void FitStrategyAdjustData::execute()
-{
-    if( !m_fit_suite ) throw NullPointerException("FitStrategyAdjustData::execute() -> FitSuite doesn't exists");
-
-    // if no data rediction was requested, just call FitSuite's minimization
-    if( m_power_of_two == 0 ) {
-        if(m_call_minimize) {
-            m_fit_suite->minimize();
-        }
-        return;
-    }
-
-    // adjusting real data for every simulation defined
-    std::vector<OutputData<double > *> original_data_collection;
-    for(size_t i_exp = 0; i_exp<m_fit_suite->getFitObjects()->size(); ++i_exp) {
-        // saving original data
-        OutputData<double > *orig_data = m_fit_suite->getFitObjects()->getRealData()->clone();
-        original_data_collection.push_back(orig_data);
-
-        // create adjusted data which will have doubled (2,4,8,...) bin size
-        OutputData<double> *adjusted_data = orig_data;
-        for(size_t i=0; i<m_power_of_two; ++i) {
-            OutputData<double> *new_data = OutputDataFunctions::doubleBinSize(*adjusted_data);
-            if(i!=0) {
-                delete adjusted_data;
-            }
-            adjusted_data = new_data;
-        }
-        m_fit_suite->getFitObjects()->setRealData(*adjusted_data, i_exp);
-        delete adjusted_data;
-    }
-
-    // calling minimization
-    if(m_call_minimize) {
-        m_fit_suite->getMinimizer()->clear(); // clear minimizer's parameters and error matrixes
-        m_fit_suite->minimize();
-    }
-
-    // setting back original data
-    if(m_preserve_original_data) {
-        msglog(MSG::INFO) << "FitSuiteStrategyAdjustData::execute() -> Returning original data back ";
-        for(size_t i_exp = 0; i_exp<m_fit_suite->getFitObjects()->size(); ++i_exp) {
-            m_fit_suite->getFitObjects()->setRealData(*original_data_collection[i_exp], i_exp);
-            delete original_data_collection[i_exp];
-        }
-    }
-}
diff --git a/Fit/PythonAPI/src/FitObject.pypp.cpp b/Fit/PythonAPI/src/FitObject.pypp.cpp
index 7b5623fe5ab..1b3a7296104 100644
--- a/Fit/PythonAPI/src/FitObject.pypp.cpp
+++ b/Fit/PythonAPI/src/FitObject.pypp.cpp
@@ -220,17 +220,6 @@ void register_FitObject_class(){
                 , ( bp::arg("chi2_module") )
                 , "Sets chi2 module." );
         
-        }
-        { //::FitObject::setRealData
-        
-            typedef void ( ::FitObject::*setRealData_function_type)( ::OutputData< double > const & ) ;
-            
-            FitObject_exposer.def( 
-                "setRealData"
-                , setRealData_function_type( &::FitObject::setRealData )
-                , ( bp::arg("real_data") )
-                , "Returns real data." );
-        
         }
         { //::FitObject::setSimulation
         
diff --git a/Fit/PythonAPI/src/FitSuiteObjects.pypp.cpp b/Fit/PythonAPI/src/FitSuiteObjects.pypp.cpp
index e56360d39e0..fc9a09ec0d6 100644
--- a/Fit/PythonAPI/src/FitSuiteObjects.pypp.cpp
+++ b/Fit/PythonAPI/src/FitSuiteObjects.pypp.cpp
@@ -279,17 +279,6 @@ void register_FitSuiteObjects_class(){
                 , setNfreeParameters_function_type( &::FitSuiteObjects::setNfreeParameters )
                 , ( bp::arg("nfree_parameters") ) );
         
-        }
-        { //::FitSuiteObjects::setRealData
-        
-            typedef void ( ::FitSuiteObjects::*setRealData_function_type)( ::OutputData< double > const &,::std::size_t ) ;
-            
-            FitSuiteObjects_exposer.def( 
-                "setRealData"
-                , setRealData_function_type( &::FitSuiteObjects::setRealData )
-                , ( bp::arg("real_data"), bp::arg("i_item")=(::std::size_t)(0) )
-                , "Sets real data." );
-        
         }
         { //::FitSuiteObjects::setSimulationNormalize
         
diff --git a/Fit/PythonAPI/src/IChiSquaredModule.pypp.cpp b/Fit/PythonAPI/src/IChiSquaredModule.pypp.cpp
index 3b89107440f..2b854b7e324 100644
--- a/Fit/PythonAPI/src/IChiSquaredModule.pypp.cpp
+++ b/Fit/PythonAPI/src/IChiSquaredModule.pypp.cpp
@@ -327,6 +327,17 @@ void register_IChiSquaredModule_class(){
                 , default_setIntensityNormalizer_function_type(&IChiSquaredModule_wrapper::default_setIntensityNormalizer)
                 , ( bp::arg("data_normalizer") ) );
         
+        }
+        { //::IChiSquaredModule::setMasks
+        
+            typedef void ( ::IChiSquaredModule::*setMasks_function_type)( ::OutputData< bool > const & ) ;
+            
+            IChiSquaredModule_exposer.def( 
+                "setMasks"
+                , setMasks_function_type( &::IChiSquaredModule::setMasks )
+                , ( bp::arg("masks") )
+                , "Sets detector masks." );
+        
         }
         { //::IChiSquaredModule::setNdegreeOfFreedom
         
-- 
GitLab