From d5f09e1536deaf2a4d44f8b56e96a8ca3dc2c20e Mon Sep 17 00:00:00 2001
From: Walter Van Herck <w.van.herck@fz-juelich.de>
Date: Mon, 18 Feb 2013 10:37:18 +0100
Subject: [PATCH] Fix build problem (pythonAPI files not correctly staged into
 git)

---
 .../inc/DiffuseDWBASimulation.pypp.h          |   8 +
 Core/PythonAPI/inc/Experiment.pypp.h          |   8 -
 Core/PythonAPI/inc/GISASExperiment.pypp.h     |   8 -
 Core/PythonAPI/inc/ISimulation.pypp.h         |   8 +
 Core/PythonAPI/inc/LayerDWBASimulation.pypp.h |   8 +
 .../inc/LayerDecoratorDWBASimulation.pypp.h   |   8 +
 .../inc/MultiLayerDWBASimulation.pypp.h       |   8 +
 Core/PythonAPI/inc/Simulation.pypp.h          |   8 +
 .../src/DiffuseDWBASimulation.pypp.cpp        | 126 +++++++++++
 Core/PythonAPI/src/Experiment.pypp.cpp        | 197 ------------------
 Core/PythonAPI/src/ISimulation.pypp.cpp       | 111 ++++++++++
 .../src/LayerDWBASimulation.pypp.cpp          | 123 +++++++++++
 .../src/LayerDecoratorDWBASimulation.pypp.cpp | 121 +++++++++++
 .../src/MultiLayerDWBASimulation.pypp.cpp     | 138 ++++++++++++
 ...xperiment.pypp.cpp => Simulation.pypp.cpp} | 127 +++++------
 15 files changed, 733 insertions(+), 274 deletions(-)
 create mode 100644 Core/PythonAPI/inc/DiffuseDWBASimulation.pypp.h
 delete mode 100644 Core/PythonAPI/inc/Experiment.pypp.h
 delete mode 100644 Core/PythonAPI/inc/GISASExperiment.pypp.h
 create mode 100644 Core/PythonAPI/inc/ISimulation.pypp.h
 create mode 100644 Core/PythonAPI/inc/LayerDWBASimulation.pypp.h
 create mode 100644 Core/PythonAPI/inc/LayerDecoratorDWBASimulation.pypp.h
 create mode 100644 Core/PythonAPI/inc/MultiLayerDWBASimulation.pypp.h
 create mode 100644 Core/PythonAPI/inc/Simulation.pypp.h
 create mode 100644 Core/PythonAPI/src/DiffuseDWBASimulation.pypp.cpp
 delete mode 100644 Core/PythonAPI/src/Experiment.pypp.cpp
 create mode 100644 Core/PythonAPI/src/ISimulation.pypp.cpp
 create mode 100644 Core/PythonAPI/src/LayerDWBASimulation.pypp.cpp
 create mode 100644 Core/PythonAPI/src/LayerDecoratorDWBASimulation.pypp.cpp
 create mode 100644 Core/PythonAPI/src/MultiLayerDWBASimulation.pypp.cpp
 rename Core/PythonAPI/src/{GISASExperiment.pypp.cpp => Simulation.pypp.cpp} (60%)

diff --git a/Core/PythonAPI/inc/DiffuseDWBASimulation.pypp.h b/Core/PythonAPI/inc/DiffuseDWBASimulation.pypp.h
new file mode 100644
index 00000000000..f52b60d3ba9
--- /dev/null
+++ b/Core/PythonAPI/inc/DiffuseDWBASimulation.pypp.h
@@ -0,0 +1,8 @@
+// This file has been generated by Py++.
+
+#ifndef DiffuseDWBASimulation_hpp__pyplusplus_wrapper
+#define DiffuseDWBASimulation_hpp__pyplusplus_wrapper
+
+void register_DiffuseDWBASimulation_class();
+
+#endif//DiffuseDWBASimulation_hpp__pyplusplus_wrapper
diff --git a/Core/PythonAPI/inc/Experiment.pypp.h b/Core/PythonAPI/inc/Experiment.pypp.h
deleted file mode 100644
index efbc7d97d9a..00000000000
--- a/Core/PythonAPI/inc/Experiment.pypp.h
+++ /dev/null
@@ -1,8 +0,0 @@
-// This file has been generated by Py++.
-
-#ifndef Experiment_hpp__pyplusplus_wrapper
-#define Experiment_hpp__pyplusplus_wrapper
-
-void register_Experiment_class();
-
-#endif//Experiment_hpp__pyplusplus_wrapper
diff --git a/Core/PythonAPI/inc/GISASExperiment.pypp.h b/Core/PythonAPI/inc/GISASExperiment.pypp.h
deleted file mode 100644
index efbc7d97d9a..00000000000
--- a/Core/PythonAPI/inc/GISASExperiment.pypp.h
+++ /dev/null
@@ -1,8 +0,0 @@
-// This file has been generated by Py++.
-
-#ifndef Experiment_hpp__pyplusplus_wrapper
-#define Experiment_hpp__pyplusplus_wrapper
-
-void register_Experiment_class();
-
-#endif//Experiment_hpp__pyplusplus_wrapper
diff --git a/Core/PythonAPI/inc/ISimulation.pypp.h b/Core/PythonAPI/inc/ISimulation.pypp.h
new file mode 100644
index 00000000000..75ad5e93e8f
--- /dev/null
+++ b/Core/PythonAPI/inc/ISimulation.pypp.h
@@ -0,0 +1,8 @@
+// This file has been generated by Py++.
+
+#ifndef ISimulation_hpp__pyplusplus_wrapper
+#define ISimulation_hpp__pyplusplus_wrapper
+
+void register_ISimulation_class();
+
+#endif//ISimulation_hpp__pyplusplus_wrapper
diff --git a/Core/PythonAPI/inc/LayerDWBASimulation.pypp.h b/Core/PythonAPI/inc/LayerDWBASimulation.pypp.h
new file mode 100644
index 00000000000..cf1ee657300
--- /dev/null
+++ b/Core/PythonAPI/inc/LayerDWBASimulation.pypp.h
@@ -0,0 +1,8 @@
+// This file has been generated by Py++.
+
+#ifndef LayerDWBASimulation_hpp__pyplusplus_wrapper
+#define LayerDWBASimulation_hpp__pyplusplus_wrapper
+
+void register_LayerDWBASimulation_class();
+
+#endif//LayerDWBASimulation_hpp__pyplusplus_wrapper
diff --git a/Core/PythonAPI/inc/LayerDecoratorDWBASimulation.pypp.h b/Core/PythonAPI/inc/LayerDecoratorDWBASimulation.pypp.h
new file mode 100644
index 00000000000..11b8962ec1a
--- /dev/null
+++ b/Core/PythonAPI/inc/LayerDecoratorDWBASimulation.pypp.h
@@ -0,0 +1,8 @@
+// This file has been generated by Py++.
+
+#ifndef LayerDecoratorDWBASimulation_hpp__pyplusplus_wrapper
+#define LayerDecoratorDWBASimulation_hpp__pyplusplus_wrapper
+
+void register_LayerDecoratorDWBASimulation_class();
+
+#endif//LayerDecoratorDWBASimulation_hpp__pyplusplus_wrapper
diff --git a/Core/PythonAPI/inc/MultiLayerDWBASimulation.pypp.h b/Core/PythonAPI/inc/MultiLayerDWBASimulation.pypp.h
new file mode 100644
index 00000000000..d7ceb0a5606
--- /dev/null
+++ b/Core/PythonAPI/inc/MultiLayerDWBASimulation.pypp.h
@@ -0,0 +1,8 @@
+// This file has been generated by Py++.
+
+#ifndef MultiLayerDWBASimulation_hpp__pyplusplus_wrapper
+#define MultiLayerDWBASimulation_hpp__pyplusplus_wrapper
+
+void register_MultiLayerDWBASimulation_class();
+
+#endif//MultiLayerDWBASimulation_hpp__pyplusplus_wrapper
diff --git a/Core/PythonAPI/inc/Simulation.pypp.h b/Core/PythonAPI/inc/Simulation.pypp.h
new file mode 100644
index 00000000000..dce651f3eff
--- /dev/null
+++ b/Core/PythonAPI/inc/Simulation.pypp.h
@@ -0,0 +1,8 @@
+// This file has been generated by Py++.
+
+#ifndef Simulation_hpp__pyplusplus_wrapper
+#define Simulation_hpp__pyplusplus_wrapper
+
+void register_Simulation_class();
+
+#endif//Simulation_hpp__pyplusplus_wrapper
diff --git a/Core/PythonAPI/src/DiffuseDWBASimulation.pypp.cpp b/Core/PythonAPI/src/DiffuseDWBASimulation.pypp.cpp
new file mode 100644
index 00000000000..1020f0afb8d
--- /dev/null
+++ b/Core/PythonAPI/src/DiffuseDWBASimulation.pypp.cpp
@@ -0,0 +1,126 @@
+// This file has been generated by Py++.
+
+#include "Macros.h"
+GCC_DIAG_OFF(unused-parameter);
+GCC_DIAG_OFF(missing-field-initializers);
+#include "boost/python.hpp"
+#include "boost/python/suite/indexing/vector_indexing_suite.hpp"
+GCC_DIAG_ON(unused-parameter);
+GCC_DIAG_ON(missing-field-initializers);
+#include "BasicVector3D.h"
+#include "FormFactorCrystal.h"
+#include "FormFactorCylinder.h"
+#include "FormFactorDecoratorDebyeWaller.h"
+#include "FormFactorFullSphere.h"
+#include "FormFactorGauss.h"
+#include "FormFactorLorentz.h"
+#include "FormFactorPrism3.h"
+#include "FormFactorPyramid.h"
+#include "FormFactorSphereGaussianRadius.h"
+#include "HomogeneousMaterial.h"
+#include "ICloneable.h"
+#include "IClusteredParticles.h"
+#include "ICompositeSample.h"
+#include "IDecoration.h"
+#include "IFormFactor.h"
+#include "IFormFactorBorn.h"
+#include "IFormFactorDecorator.h"
+#include "IInterferenceFunction.h"
+#include "InterferenceFunctionNone.h"
+#include "InterferenceFunction1DParaCrystal.h"
+#include "IMaterial.h"
+#include "IParameterized.h"
+#include "ISample.h"
+#include "ISampleBuilder.h"
+#include "ISelectionRule.h"
+#include "ISingleton.h"
+#include "Lattice.h"
+#include "LatticeBasis.h"
+#include "Layer.h"
+#include "LayerDecorator.h"
+#include "LayerRoughness.h"
+#include "MaterialManager.h"
+#include "MesoCrystal.h"
+#include "MultiLayer.h"
+#include "Particle.h"
+#include "Crystal.h"
+#include "ParticleDecoration.h"
+#include "OpticalFresnel.h"
+#include "ParameterPool.h"
+#include "ParticleInfo.h"
+#include "DiffuseParticleInfo.h"
+#include "PythonOutputData.h"
+#include "PythonPlusplusHelper.h"
+#include "RealParameterWrapper.h"
+#include "Simulation.h"
+#include "Transform3D.h"
+#include "Units.h"
+#include "Types.h"
+#include "DiffuseDWBASimulation.pypp.h"
+
+namespace bp = boost::python;
+
+struct DiffuseDWBASimulation_wrapper : DiffuseDWBASimulation, bp::wrapper< DiffuseDWBASimulation > {
+
+    DiffuseDWBASimulation_wrapper( )
+    : DiffuseDWBASimulation( )
+      , bp::wrapper< DiffuseDWBASimulation >(){
+        // null constructor
+    
+    }
+
+    virtual void run(  ) {
+        if( bp::override func_run = this->get_override( "run" ) )
+            func_run(  );
+        else{
+            this->DiffuseDWBASimulation::run(  );
+        }
+    }
+    
+    void default_run(  ) {
+        DiffuseDWBASimulation::run( );
+    }
+
+    virtual ::LayerDWBASimulation * clone(  ) const  {
+        if( bp::override func_clone = this->get_override( "clone" ) )
+            return func_clone(  );
+        else{
+            return this->LayerDWBASimulation::clone(  );
+        }
+    }
+    
+    ::LayerDWBASimulation * default_clone(  ) const  {
+        return LayerDWBASimulation::clone( );
+    }
+
+};
+
+void register_DiffuseDWBASimulation_class(){
+
+    bp::class_< DiffuseDWBASimulation_wrapper, bp::bases< LayerDWBASimulation >, boost::noncopyable >( "DiffuseDWBASimulation", bp::init< >() )    
+        .def( 
+            "getSize"
+            , (::size_t ( ::DiffuseDWBASimulation::* )(  ) const)( &::DiffuseDWBASimulation::getSize ) )    
+        .def( 
+            "rescaleAbundances"
+            , (void ( ::DiffuseDWBASimulation::* )( double ) )( &::DiffuseDWBASimulation::rescaleAbundances )
+            , ( bp::arg("factor") ) )    
+        .def( 
+            "run"
+            , (void ( ::DiffuseDWBASimulation::* )(  ) )(&::DiffuseDWBASimulation::run)
+            , (void ( DiffuseDWBASimulation_wrapper::* )(  ) )(&DiffuseDWBASimulation_wrapper::default_run) )    
+        .def( 
+            "setRefractiveIndex"
+            , (void ( ::DiffuseDWBASimulation::* )( ::complex_t ) )( &::DiffuseDWBASimulation::setRefractiveIndex )
+            , ( bp::arg("n") ) )    
+        .def( 
+            "setSurfaceDensity"
+            , (void ( ::DiffuseDWBASimulation::* )( double ) )( &::DiffuseDWBASimulation::setSurfaceDensity )
+            , ( bp::arg("surface_density") ) )    
+        .def( 
+            "clone"
+            , (::LayerDWBASimulation * ( ::LayerDWBASimulation::* )(  ) const)(&::LayerDWBASimulation::clone)
+            , (::LayerDWBASimulation * ( DiffuseDWBASimulation_wrapper::* )(  ) const)(&DiffuseDWBASimulation_wrapper::default_clone)
+            , bp::return_value_policy< bp::manage_new_object >() );
+
+}
diff --git a/Core/PythonAPI/src/Experiment.pypp.cpp b/Core/PythonAPI/src/Experiment.pypp.cpp
deleted file mode 100644
index 4a51e113376..00000000000
--- a/Core/PythonAPI/src/Experiment.pypp.cpp
+++ /dev/null
@@ -1,197 +0,0 @@
-// This file has been generated by Py++.
-
-#include "Macros.h"
-GCC_DIAG_OFF(unused-parameter);
-GCC_DIAG_OFF(missing-field-initializers);
-#include "Macros.h"
-GCC_DIAG_OFF(unused-parameter);
-GCC_DIAG_OFF(missing-field-initializers);
-#include "boost/python.hpp"
-#include "boost/python/suite/indexing/vector_indexing_suite.hpp"
-GCC_DIAG_ON(unused-parameter);
-GCC_DIAG_ON(missing-field-initializers);
-GCC_DIAG_ON(unused-parameter);
-GCC_DIAG_ON(missing-field-initializers);
-#include "BasicVector3D.h"
-#include "Simulation.h"
-#include "FormFactorCrystal.h"
-#include "FormFactorCylinder.h"
-#include "FormFactorDecoratorDebyeWaller.h"
-#include "FormFactorFullSphere.h"
-#include "FormFactorGauss.h"
-#include "FormFactorLorentz.h"
-#include "FormFactorPrism3.h"
-#include "FormFactorPyramid.h"
-#include "FormFactorSphereGaussianRadius.h"
-#include "Simulation.h"
-#include "HomogeneousMaterial.h"
-#include "ICloneable.h"
-#include "IClusteredParticles.h"
-#include "ICompositeSample.h"
-#include "IDecoration.h"
-#include "IFormFactor.h"
-#include "IFormFactorBorn.h"
-#include "IFormFactorDecorator.h"
-#include "IInterferenceFunction.h"
-#include "InterferenceFunctionNone.h"
-#include "InterferenceFunction1DParaCrystal.h"
-#include "IMaterial.h"
-#include "IParameterized.h"
-#include "ISample.h"
-#include "ISampleBuilder.h"
-#include "ISelectionRule.h"
-#include "ISingleton.h"
-#include "Lattice.h"
-#include "LatticeBasis.h"
-#include "Layer.h"
-#include "LayerDecorator.h"
-#include "LayerRoughness.h"
-#include "MaterialManager.h"
-#include "MesoCrystal.h"
-#include "MultiLayer.h"
-#include "Particle.h"
-#include "Crystal.h"
-#include "ParticleDecoration.h"
-#include "OpticalFresnel.h"
-#include "ParameterPool.h"
-#include "ParticleInfo.h"
-#include "DiffuseParticleInfo.h"
-#include "PythonOutputData.h"
-#include "PythonPlusplusHelper.h"
-#include "RealParameterWrapper.h"
-#include "Transform3D.h"
-#include "Units.h"
-#include "Types.h"
-#include "Experiment.pypp.h"
-
-namespace bp = boost::python;
-
-struct Experiment_wrapper : Simulation, bp::wrapper< Simulation > {
-
-    Experiment_wrapper( )
-    : Simulation( )
-      , bp::wrapper< Simulation >(){
-        // null constructor
-    
-    }
-
-    virtual void normalize(  ) {
-        if( bp::override func_normalize = this->get_override( "normalize" ) )
-            func_normalize(  );
-        else{
-            this->Simulation::normalize(  );
-        }
-    }
-    
-    void default_normalize(  ) {
-        Simulation::normalize( );
-    }
-
-    virtual void runExperiment(  ) {
-        if( bp::override func_runExperiment = this->get_override( "runExperiment" ) )
-            func_runExperiment(  );
-        else{
-            this->Simulation::runSimulation(  );
-        }
-    }
-    
-    void default_runExperiment(  ) {
-        Simulation::runSimulation( );
-    }
-
-    virtual bool areParametersChanged(  ) {
-        if( bp::override func_areParametersChanged = this->get_override( "areParametersChanged" ) )
-            return func_areParametersChanged(  );
-        else{
-            return this->IParameterized::areParametersChanged(  );
-        }
-    }
-    
-    bool default_areParametersChanged(  ) {
-        return IParameterized::areParametersChanged( );
-    }
-
-    virtual ::ParameterPool * createParameterTree(  ) const  {
-        if( bp::override func_createParameterTree = this->get_override( "createParameterTree" ) )
-            return func_createParameterTree(  );
-        else{
-            return this->IParameterized::createParameterTree(  );
-        }
-    }
-    
-    ::ParameterPool * default_createParameterTree(  ) const  {
-        return IParameterized::createParameterTree( );
-    }
-
-    virtual void printParameters(  ) const  {
-        if( bp::override func_printParameters = this->get_override( "printParameters" ) )
-            func_printParameters(  );
-        else{
-            this->IParameterized::printParameters(  );
-        }
-    }
-    
-    void default_printParameters(  ) const  {
-        IParameterized::printParameters( );
-    }
-
-    virtual void setParametersAreChanged(  ) {
-        if( bp::override func_setParametersAreChanged = this->get_override( "setParametersAreChanged" ) )
-            func_setParametersAreChanged(  );
-        else{
-            this->IParameterized::setParametersAreChanged(  );
-        }
-    }
-    
-    void default_setParametersAreChanged(  ) {
-        IParameterized::setParametersAreChanged( );
-    }
-
-};
-
-void register_Experiment_class(){
-
-    bp::class_< Experiment_wrapper, bp::bases< IParameterized, ICloneable >, boost::noncopyable >( "Experiment", bp::init< >() )    
-        .def( 
-            "normalize"
-            , (void ( ::Simulation::* )(  ) )(&::Simulation::normalize)
-            , (void ( Experiment_wrapper::* )(  ) )(&Experiment_wrapper::default_normalize) )    
-        .def( 
-            "runExperiment"
-            , (void ( ::Simulation::* )(  ) )(&::Simulation::runSimulation)
-            , (void ( Experiment_wrapper::* )(  ) )(&Experiment_wrapper::default_runExperiment) )    
-        .def( 
-            "setBeamIntensity"
-            , (void ( ::Simulation::* )( double ) )( &::Simulation::setBeamIntensity )
-            , ( bp::arg("intensity") ) )    
-        .def( 
-            "setBeamParameters"
-            , (void ( ::Simulation::* )( double,double,double ) )( &::Simulation::setBeamParameters )
-            , ( bp::arg("lambda"), bp::arg("alpha_i"), bp::arg("phi_i") ) )    
-        .def( 
-            "setSample"
-            , (void ( ::Simulation::* )( ::ISample const & ) )( &::Simulation::setSample )
-            , ( bp::arg("p_sample") ) )    
-        .def( 
-            "setSampleBuilder"
-            , (void ( ::Simulation::* )( ::ISampleBuilder const * ) )( &::Simulation::setSampleBuilder )
-            , ( bp::arg("p_sample_builder") ) )    
-        .def( 
-            "areParametersChanged"
-            , (bool ( ::IParameterized::* )(  ) )(&::IParameterized::areParametersChanged)
-            , (bool ( Experiment_wrapper::* )(  ) )(&Experiment_wrapper::default_areParametersChanged) )    
-        .def( 
-            "createParameterTree"
-            , (::ParameterPool * ( ::IParameterized::* )(  ) const)(&::IParameterized::createParameterTree)
-            , (::ParameterPool * ( Experiment_wrapper::* )(  ) const)(&Experiment_wrapper::default_createParameterTree)
-            , bp::return_value_policy< bp::manage_new_object >() )    
-        .def( 
-            "printParameters"
-            , (void ( ::IParameterized::* )(  ) const)(&::IParameterized::printParameters)
-            , (void ( Experiment_wrapper::* )(  ) const)(&Experiment_wrapper::default_printParameters) )    
-        .def( 
-            "setParametersAreChanged"
-            , (void ( ::IParameterized::* )(  ) )(&::IParameterized::setParametersAreChanged)
-            , (void ( Experiment_wrapper::* )(  ) )(&Experiment_wrapper::default_setParametersAreChanged) );
-
-}
diff --git a/Core/PythonAPI/src/ISimulation.pypp.cpp b/Core/PythonAPI/src/ISimulation.pypp.cpp
new file mode 100644
index 00000000000..1ae5100eafb
--- /dev/null
+++ b/Core/PythonAPI/src/ISimulation.pypp.cpp
@@ -0,0 +1,111 @@
+// This file has been generated by Py++.
+
+#include "Macros.h"
+GCC_DIAG_OFF(unused-parameter);
+GCC_DIAG_OFF(missing-field-initializers);
+#include "boost/python.hpp"
+#include "boost/python/suite/indexing/vector_indexing_suite.hpp"
+GCC_DIAG_ON(unused-parameter);
+GCC_DIAG_ON(missing-field-initializers);
+#include "BasicVector3D.h"
+#include "FormFactorCrystal.h"
+#include "FormFactorCylinder.h"
+#include "FormFactorDecoratorDebyeWaller.h"
+#include "FormFactorFullSphere.h"
+#include "FormFactorGauss.h"
+#include "FormFactorLorentz.h"
+#include "FormFactorPrism3.h"
+#include "FormFactorPyramid.h"
+#include "FormFactorSphereGaussianRadius.h"
+#include "HomogeneousMaterial.h"
+#include "ICloneable.h"
+#include "IClusteredParticles.h"
+#include "ICompositeSample.h"
+#include "IDecoration.h"
+#include "IFormFactor.h"
+#include "IFormFactorBorn.h"
+#include "IFormFactorDecorator.h"
+#include "IInterferenceFunction.h"
+#include "InterferenceFunctionNone.h"
+#include "InterferenceFunction1DParaCrystal.h"
+#include "IMaterial.h"
+#include "IParameterized.h"
+#include "ISample.h"
+#include "ISampleBuilder.h"
+#include "ISelectionRule.h"
+#include "ISingleton.h"
+#include "Lattice.h"
+#include "LatticeBasis.h"
+#include "Layer.h"
+#include "LayerDecorator.h"
+#include "LayerRoughness.h"
+#include "MaterialManager.h"
+#include "MesoCrystal.h"
+#include "MultiLayer.h"
+#include "Particle.h"
+#include "Crystal.h"
+#include "ParticleDecoration.h"
+#include "OpticalFresnel.h"
+#include "ParameterPool.h"
+#include "ParticleInfo.h"
+#include "DiffuseParticleInfo.h"
+#include "PythonOutputData.h"
+#include "PythonPlusplusHelper.h"
+#include "RealParameterWrapper.h"
+#include "Simulation.h"
+#include "Transform3D.h"
+#include "Units.h"
+#include "Types.h"
+#include "ISimulation.pypp.h"
+
+namespace bp = boost::python;
+
+struct ISimulation_wrapper : ISimulation, bp::wrapper< ISimulation > {
+
+    ISimulation_wrapper()
+    : ISimulation()
+      , bp::wrapper< ISimulation >(){
+        // null constructor
+        
+    }
+
+    virtual ::ISimulation * clone(  ) const  {
+        if( bp::override func_clone = this->get_override( "clone" ) )
+            return func_clone(  );
+        else{
+            return this->ISimulation::clone(  );
+        }
+    }
+    
+    ::ISimulation * default_clone(  ) const  {
+        return ISimulation::clone( );
+    }
+
+    virtual void run(  ) {
+        if( bp::override func_run = this->get_override( "run" ) )
+            func_run(  );
+        else{
+            this->ISimulation::run(  );
+        }
+    }
+    
+    void default_run(  ) {
+        ISimulation::run( );
+    }
+
+};
+
+void register_ISimulation_class(){
+
+    bp::class_< ISimulation_wrapper, bp::bases< ICloneable >, boost::noncopyable >( "ISimulation" )    
+        .def( 
+            "clone"
+            , (::ISimulation * ( ::ISimulation::* )(  ) const)(&::ISimulation::clone)
+            , (::ISimulation * ( ISimulation_wrapper::* )(  ) const)(&ISimulation_wrapper::default_clone)
+            , bp::return_value_policy< bp::manage_new_object >() )    
+        .def( 
+            "run"
+            , (void ( ::ISimulation::* )(  ) )(&::ISimulation::run)
+            , (void ( ISimulation_wrapper::* )(  ) )(&ISimulation_wrapper::default_run) );
+
+}
diff --git a/Core/PythonAPI/src/LayerDWBASimulation.pypp.cpp b/Core/PythonAPI/src/LayerDWBASimulation.pypp.cpp
new file mode 100644
index 00000000000..08ab81a1a3a
--- /dev/null
+++ b/Core/PythonAPI/src/LayerDWBASimulation.pypp.cpp
@@ -0,0 +1,123 @@
+// This file has been generated by Py++.
+
+#include "Macros.h"
+GCC_DIAG_OFF(unused-parameter);
+GCC_DIAG_OFF(missing-field-initializers);
+#include "boost/python.hpp"
+#include "boost/python/suite/indexing/vector_indexing_suite.hpp"
+GCC_DIAG_ON(unused-parameter);
+GCC_DIAG_ON(missing-field-initializers);
+#include "BasicVector3D.h"
+#include "FormFactorCrystal.h"
+#include "FormFactorCylinder.h"
+#include "FormFactorDecoratorDebyeWaller.h"
+#include "FormFactorFullSphere.h"
+#include "FormFactorGauss.h"
+#include "FormFactorLorentz.h"
+#include "FormFactorPrism3.h"
+#include "FormFactorPyramid.h"
+#include "FormFactorSphereGaussianRadius.h"
+#include "HomogeneousMaterial.h"
+#include "ICloneable.h"
+#include "IClusteredParticles.h"
+#include "ICompositeSample.h"
+#include "IDecoration.h"
+#include "IFormFactor.h"
+#include "IFormFactorBorn.h"
+#include "IFormFactorDecorator.h"
+#include "IInterferenceFunction.h"
+#include "InterferenceFunctionNone.h"
+#include "InterferenceFunction1DParaCrystal.h"
+#include "IMaterial.h"
+#include "IParameterized.h"
+#include "ISample.h"
+#include "ISampleBuilder.h"
+#include "ISelectionRule.h"
+#include "ISingleton.h"
+#include "Lattice.h"
+#include "LatticeBasis.h"
+#include "Layer.h"
+#include "LayerDecorator.h"
+#include "LayerRoughness.h"
+#include "MaterialManager.h"
+#include "MesoCrystal.h"
+#include "MultiLayer.h"
+#include "Particle.h"
+#include "Crystal.h"
+#include "ParticleDecoration.h"
+#include "OpticalFresnel.h"
+#include "ParameterPool.h"
+#include "ParticleInfo.h"
+#include "DiffuseParticleInfo.h"
+#include "PythonOutputData.h"
+#include "PythonPlusplusHelper.h"
+#include "RealParameterWrapper.h"
+#include "Simulation.h"
+#include "Transform3D.h"
+#include "Units.h"
+#include "Types.h"
+#include "LayerDWBASimulation.pypp.h"
+
+namespace bp = boost::python;
+
+struct LayerDWBASimulation_wrapper : LayerDWBASimulation, bp::wrapper< LayerDWBASimulation > {
+
+    LayerDWBASimulation_wrapper( )
+    : LayerDWBASimulation( )
+      , bp::wrapper< LayerDWBASimulation >(){
+        // null constructor
+    
+    }
+
+    virtual ::LayerDWBASimulation * clone(  ) const  {
+        if( bp::override func_clone = this->get_override( "clone" ) )
+            return func_clone(  );
+        else{
+            return this->LayerDWBASimulation::clone(  );
+        }
+    }
+    
+    ::LayerDWBASimulation * default_clone(  ) const  {
+        return LayerDWBASimulation::clone( );
+    }
+
+    virtual void run(  ) {
+        if( bp::override func_run = this->get_override( "run" ) )
+            func_run(  );
+        else{
+            this->ISimulation::run(  );
+        }
+    }
+    
+    void default_run(  ) {
+        ISimulation::run( );
+    }
+
+};
+
+void register_LayerDWBASimulation_class(){
+
+    bp::class_< LayerDWBASimulation_wrapper, boost::noncopyable >( "LayerDWBASimulation", bp::init< >() )    
+        .def( 
+            "clone"
+            , (::LayerDWBASimulation * ( ::LayerDWBASimulation::* )(  ) const)(&::LayerDWBASimulation::clone)
+            , (::LayerDWBASimulation * ( LayerDWBASimulation_wrapper::* )(  ) const)(&LayerDWBASimulation_wrapper::default_clone)
+            , bp::return_value_policy< bp::manage_new_object >() )    
+        .def( 
+            "setKzAndRTFunctions"
+            , (void ( ::LayerDWBASimulation::* )( ::IDoubleToComplexMap const &,::IDoubleToPairOfComplexMap const & ) )( &::LayerDWBASimulation::setKzAndRTFunctions )
+            , ( bp::arg("kz_function"), bp::arg("rt_map") ) )    
+        .def( 
+            "setKzFunction"
+            , (void ( ::LayerDWBASimulation::* )( ::IDoubleToComplexMap const & ) )( &::LayerDWBASimulation::setKzFunction )
+            , ( bp::arg("kz_function") ) )    
+        .def( 
+            "setReflectionTransmissionFunction"
+            , (void ( ::LayerDWBASimulation::* )( ::IDoubleToPairOfComplexMap const & ) )( &::LayerDWBASimulation::setReflectionTransmissionFunction )
+            , ( bp::arg("rt_map") ) )    
+        .def( 
+            "run"
+            , (void ( ::ISimulation::* )(  ) )(&::ISimulation::run)
+            , (void ( LayerDWBASimulation_wrapper::* )(  ) )(&LayerDWBASimulation_wrapper::default_run) );
+
+}
diff --git a/Core/PythonAPI/src/LayerDecoratorDWBASimulation.pypp.cpp b/Core/PythonAPI/src/LayerDecoratorDWBASimulation.pypp.cpp
new file mode 100644
index 00000000000..7e9e5143e30
--- /dev/null
+++ b/Core/PythonAPI/src/LayerDecoratorDWBASimulation.pypp.cpp
@@ -0,0 +1,121 @@
+// This file has been generated by Py++.
+
+#include "Macros.h"
+GCC_DIAG_OFF(unused-parameter);
+GCC_DIAG_OFF(missing-field-initializers);
+#include "boost/python.hpp"
+#include "boost/python/suite/indexing/vector_indexing_suite.hpp"
+GCC_DIAG_ON(unused-parameter);
+GCC_DIAG_ON(missing-field-initializers);
+#include "BasicVector3D.h"
+#include "FormFactorCrystal.h"
+#include "FormFactorCylinder.h"
+#include "FormFactorDecoratorDebyeWaller.h"
+#include "FormFactorFullSphere.h"
+#include "FormFactorGauss.h"
+#include "FormFactorLorentz.h"
+#include "FormFactorPrism3.h"
+#include "FormFactorPyramid.h"
+#include "FormFactorSphereGaussianRadius.h"
+#include "HomogeneousMaterial.h"
+#include "ICloneable.h"
+#include "IClusteredParticles.h"
+#include "ICompositeSample.h"
+#include "IDecoration.h"
+#include "IFormFactor.h"
+#include "IFormFactorBorn.h"
+#include "IFormFactorDecorator.h"
+#include "IInterferenceFunction.h"
+#include "InterferenceFunctionNone.h"
+#include "InterferenceFunction1DParaCrystal.h"
+#include "IMaterial.h"
+#include "IParameterized.h"
+#include "ISample.h"
+#include "ISampleBuilder.h"
+#include "ISelectionRule.h"
+#include "ISingleton.h"
+#include "Lattice.h"
+#include "LatticeBasis.h"
+#include "Layer.h"
+#include "LayerDecorator.h"
+#include "LayerRoughness.h"
+#include "MaterialManager.h"
+#include "MesoCrystal.h"
+#include "MultiLayer.h"
+#include "Particle.h"
+#include "Crystal.h"
+#include "ParticleDecoration.h"
+#include "OpticalFresnel.h"
+#include "ParameterPool.h"
+#include "ParticleInfo.h"
+#include "DiffuseParticleInfo.h"
+#include "PythonOutputData.h"
+#include "PythonPlusplusHelper.h"
+#include "RealParameterWrapper.h"
+#include "Simulation.h"
+#include "Transform3D.h"
+#include "Units.h"
+#include "Types.h"
+#include "LayerDecoratorDWBASimulation.pypp.h"
+
+namespace bp = boost::python;
+
+struct LayerDecoratorDWBASimulation_wrapper : LayerDecoratorDWBASimulation, bp::wrapper< LayerDecoratorDWBASimulation > {
+
+    virtual ::LayerDecoratorDWBASimulation * clone(  ) const  {
+        if( bp::override func_clone = this->get_override( "clone" ) )
+            return func_clone(  );
+        else{
+            return this->LayerDecoratorDWBASimulation::clone(  );
+        }
+    }
+    
+    ::LayerDecoratorDWBASimulation * default_clone(  ) const  {
+        return LayerDecoratorDWBASimulation::clone( );
+    }
+
+    virtual void init( ::Simulation const & simulation ) {
+        if( bp::override func_init = this->get_override( "init" ) )
+            func_init( boost::ref(simulation) );
+        else{
+            this->LayerDecoratorDWBASimulation::init( boost::ref(simulation) );
+        }
+    }
+    
+    void default_init( ::Simulation const & simulation ) {
+        LayerDecoratorDWBASimulation::init( boost::ref(simulation) );
+    }
+
+    virtual void run(  ) {
+        if( bp::override func_run = this->get_override( "run" ) )
+            func_run(  );
+        else{
+            this->LayerDecoratorDWBASimulation::run(  );
+        }
+    }
+    
+    void default_run(  ) {
+        LayerDecoratorDWBASimulation::run( );
+    }
+
+};
+
+void register_LayerDecoratorDWBASimulation_class(){
+
+    bp::class_< LayerDecoratorDWBASimulation_wrapper, bp::bases< LayerDWBASimulation >, boost::noncopyable >( "LayerDecoratorDWBASimulation", bp::no_init )    
+        .def( 
+            "clone"
+            , (::LayerDecoratorDWBASimulation * ( ::LayerDecoratorDWBASimulation::* )(  ) const)(&::LayerDecoratorDWBASimulation::clone)
+            , (::LayerDecoratorDWBASimulation * ( LayerDecoratorDWBASimulation_wrapper::* )(  ) const)(&LayerDecoratorDWBASimulation_wrapper::default_clone)
+            , bp::return_value_policy< bp::manage_new_object >() )    
+        .def( 
+            "init"
+            , (void ( ::LayerDecoratorDWBASimulation::* )( ::Simulation const & ) )(&::LayerDecoratorDWBASimulation::init)
+            , (void ( LayerDecoratorDWBASimulation_wrapper::* )( ::Simulation const & ) )(&LayerDecoratorDWBASimulation_wrapper::default_init)
+            , ( bp::arg("simulation") ) )    
+        .def( 
+            "run"
+            , (void ( ::LayerDecoratorDWBASimulation::* )(  ) )(&::LayerDecoratorDWBASimulation::run)
+            , (void ( LayerDecoratorDWBASimulation_wrapper::* )(  ) )(&LayerDecoratorDWBASimulation_wrapper::default_run) );
+
+}
diff --git a/Core/PythonAPI/src/MultiLayerDWBASimulation.pypp.cpp b/Core/PythonAPI/src/MultiLayerDWBASimulation.pypp.cpp
new file mode 100644
index 00000000000..0954fc5edab
--- /dev/null
+++ b/Core/PythonAPI/src/MultiLayerDWBASimulation.pypp.cpp
@@ -0,0 +1,138 @@
+// This file has been generated by Py++.
+
+#include "Macros.h"
+GCC_DIAG_OFF(unused-parameter);
+GCC_DIAG_OFF(missing-field-initializers);
+#include "boost/python.hpp"
+#include "boost/python/suite/indexing/vector_indexing_suite.hpp"
+GCC_DIAG_ON(unused-parameter);
+GCC_DIAG_ON(missing-field-initializers);
+#include "BasicVector3D.h"
+#include "FormFactorCrystal.h"
+#include "FormFactorCylinder.h"
+#include "FormFactorDecoratorDebyeWaller.h"
+#include "FormFactorFullSphere.h"
+#include "FormFactorGauss.h"
+#include "FormFactorLorentz.h"
+#include "FormFactorPrism3.h"
+#include "FormFactorPyramid.h"
+#include "FormFactorSphereGaussianRadius.h"
+#include "HomogeneousMaterial.h"
+#include "ICloneable.h"
+#include "IClusteredParticles.h"
+#include "ICompositeSample.h"
+#include "IDecoration.h"
+#include "IFormFactor.h"
+#include "IFormFactorBorn.h"
+#include "IFormFactorDecorator.h"
+#include "IInterferenceFunction.h"
+#include "InterferenceFunctionNone.h"
+#include "InterferenceFunction1DParaCrystal.h"
+#include "IMaterial.h"
+#include "IParameterized.h"
+#include "ISample.h"
+#include "ISampleBuilder.h"
+#include "ISelectionRule.h"
+#include "ISingleton.h"
+#include "Lattice.h"
+#include "LatticeBasis.h"
+#include "Layer.h"
+#include "LayerDecorator.h"
+#include "LayerRoughness.h"
+#include "MaterialManager.h"
+#include "MesoCrystal.h"
+#include "MultiLayer.h"
+#include "Particle.h"
+#include "Crystal.h"
+#include "ParticleDecoration.h"
+#include "OpticalFresnel.h"
+#include "ParameterPool.h"
+#include "ParticleInfo.h"
+#include "DiffuseParticleInfo.h"
+#include "PythonOutputData.h"
+#include "PythonPlusplusHelper.h"
+#include "RealParameterWrapper.h"
+#include "Simulation.h"
+#include "Transform3D.h"
+#include "Units.h"
+#include "Types.h"
+#include "MultiLayerDWBASimulation.pypp.h"
+
+namespace bp = boost::python;
+
+struct MultiLayerDWBASimulation_wrapper : MultiLayerDWBASimulation, bp::wrapper< MultiLayerDWBASimulation > {
+
+    virtual ::MultiLayerDWBASimulation * clone(  ) const  {
+        if( bp::override func_clone = this->get_override( "clone" ) )
+            return func_clone(  );
+        else{
+            return this->MultiLayerDWBASimulation::clone(  );
+        }
+    }
+    
+    ::MultiLayerDWBASimulation * default_clone(  ) const  {
+        return MultiLayerDWBASimulation::clone( );
+    }
+
+    virtual void init( ::Simulation const & simulation ) {
+        if( bp::override func_init = this->get_override( "init" ) )
+            func_init( boost::ref(simulation) );
+        else{
+            this->MultiLayerDWBASimulation::init( boost::ref(simulation) );
+        }
+    }
+    
+    void default_init( ::Simulation const & simulation ) {
+        MultiLayerDWBASimulation::init( boost::ref(simulation) );
+    }
+
+    virtual void run(  ) {
+        if( bp::override func_run = this->get_override( "run" ) )
+            func_run(  );
+        else{
+            this->MultiLayerDWBASimulation::run(  );
+        }
+    }
+    
+    void default_run(  ) {
+        MultiLayerDWBASimulation::run( );
+    }
+
+    virtual void setThreadInfo( ::ThreadInfo const & thread_info ) {
+        if( bp::override func_setThreadInfo = this->get_override( "setThreadInfo" ) )
+            func_setThreadInfo( boost::ref(thread_info) );
+        else{
+            this->MultiLayerDWBASimulation::setThreadInfo( boost::ref(thread_info) );
+        }
+    }
+    
+    void default_setThreadInfo( ::ThreadInfo const & thread_info ) {
+        MultiLayerDWBASimulation::setThreadInfo( boost::ref(thread_info) );
+    }
+
+};
+
+void register_MultiLayerDWBASimulation_class(){
+
+    bp::class_< MultiLayerDWBASimulation_wrapper, boost::noncopyable >( "MultiLayerDWBASimulation", bp::no_init )    
+        .def( 
+            "clone"
+            , (::MultiLayerDWBASimulation * ( ::MultiLayerDWBASimulation::* )(  ) const)(&::MultiLayerDWBASimulation::clone)
+            , (::MultiLayerDWBASimulation * ( MultiLayerDWBASimulation_wrapper::* )(  ) const)(&MultiLayerDWBASimulation_wrapper::default_clone)
+            , bp::return_value_policy< bp::manage_new_object >() )    
+        .def( 
+            "init"
+            , (void ( ::MultiLayerDWBASimulation::* )( ::Simulation const & ) )(&::MultiLayerDWBASimulation::init)
+            , (void ( MultiLayerDWBASimulation_wrapper::* )( ::Simulation const & ) )(&MultiLayerDWBASimulation_wrapper::default_init)
+            , ( bp::arg("simulation") ) )    
+        .def( 
+            "run"
+            , (void ( ::MultiLayerDWBASimulation::* )(  ) )(&::MultiLayerDWBASimulation::run)
+            , (void ( MultiLayerDWBASimulation_wrapper::* )(  ) )(&MultiLayerDWBASimulation_wrapper::default_run) )    
+        .def( 
+            "setThreadInfo"
+            , (void ( ::MultiLayerDWBASimulation::* )( ::ThreadInfo const & ) )(&::MultiLayerDWBASimulation::setThreadInfo)
+            , (void ( MultiLayerDWBASimulation_wrapper::* )( ::ThreadInfo const & ) )(&MultiLayerDWBASimulation_wrapper::default_setThreadInfo)
+            , ( bp::arg("thread_info") ) );
+
+}
diff --git a/Core/PythonAPI/src/GISASExperiment.pypp.cpp b/Core/PythonAPI/src/Simulation.pypp.cpp
similarity index 60%
rename from Core/PythonAPI/src/GISASExperiment.pypp.cpp
rename to Core/PythonAPI/src/Simulation.pypp.cpp
index af53e10485f..8f73a467f9c 100644
--- a/Core/PythonAPI/src/GISASExperiment.pypp.cpp
+++ b/Core/PythonAPI/src/Simulation.pypp.cpp
@@ -1,8 +1,5 @@
 // This file has been generated by Py++.
 
-#include "Macros.h"
-GCC_DIAG_OFF(unused-parameter);
-GCC_DIAG_OFF(missing-field-initializers);
 #include "Macros.h"
 GCC_DIAG_OFF(unused-parameter);
 GCC_DIAG_OFF(missing-field-initializers);
@@ -10,10 +7,7 @@ GCC_DIAG_OFF(missing-field-initializers);
 #include "boost/python/suite/indexing/vector_indexing_suite.hpp"
 GCC_DIAG_ON(unused-parameter);
 GCC_DIAG_ON(missing-field-initializers);
-GCC_DIAG_ON(unused-parameter);
-GCC_DIAG_ON(missing-field-initializers);
 #include "BasicVector3D.h"
-#include "Simulation.h"
 #include "FormFactorCrystal.h"
 #include "FormFactorCylinder.h"
 #include "FormFactorDecoratorDebyeWaller.h"
@@ -23,7 +17,6 @@ GCC_DIAG_ON(missing-field-initializers);
 #include "FormFactorPrism3.h"
 #include "FormFactorPyramid.h"
 #include "FormFactorSphereGaussianRadius.h"
-#include "Simulation.h"
 #include "HomogeneousMaterial.h"
 #include "ICloneable.h"
 #include "IClusteredParticles.h"
@@ -59,16 +52,17 @@ GCC_DIAG_ON(missing-field-initializers);
 #include "PythonOutputData.h"
 #include "PythonPlusplusHelper.h"
 #include "RealParameterWrapper.h"
+#include "Simulation.h"
 #include "Transform3D.h"
 #include "Units.h"
 #include "Types.h"
-#include "Experiment.pypp.h"
+#include "Simulation.pypp.h"
 
 namespace bp = boost::python;
 
-struct Experiment_wrapper : Simulation, bp::wrapper< Simulation > {
+struct Simulation_wrapper : Simulation, bp::wrapper< Simulation > {
 
-    Experiment_wrapper( )
+    Simulation_wrapper( )
     : Simulation( )
       , bp::wrapper< Simulation >(){
         // null constructor
@@ -87,42 +81,6 @@ struct Experiment_wrapper : Simulation, bp::wrapper< Simulation > {
         return Simulation::clone( );
     }
 
-    virtual void normalize(  ) {
-        if( bp::override func_normalize = this->get_override( "normalize" ) )
-            func_normalize(  );
-        else{
-            this->Simulation::normalize(  );
-        }
-    }
-    
-    void default_normalize(  ) {
-        Simulation::normalize( );
-    }
-
-    virtual void runExperiment(  ) {
-        if( bp::override func_runExperiment = this->get_override( "runExperiment" ) )
-            func_runExperiment(  );
-        else{
-            this->Simulation::runSimulation(  );
-        }
-    }
-    
-    void default_runExperiment(  ) {
-        Simulation::runSimulation( );
-    }
-
-    virtual void runExperimentElement( ::size_t index ) {
-        if( bp::override func_runExperimentElement = this->get_override( "runExperimentElement" ) )
-            func_runExperimentElement( index );
-        else{
-            this->Simulation::runSimulationElement( index );
-        }
-    }
-    
-    void default_runExperimentElement( ::size_t index ) {
-        Simulation::runSimulationElement( index );
-    }
-
     virtual bool areParametersChanged(  ) {
         if( bp::override func_areParametersChanged = this->get_override( "areParametersChanged" ) )
             return func_areParametersChanged(  );
@@ -173,27 +131,66 @@ struct Experiment_wrapper : Simulation, bp::wrapper< Simulation > {
 
 };
 
-void register_Experiment_class(){
+void register_Simulation_class(){
 
-    bp::class_< Experiment_wrapper, bp::bases< Simulation >, boost::noncopyable >( "Experiment", bp::init< >() )    
+    bp::class_< Simulation_wrapper, bp::bases< IParameterized, ICloneable >, boost::noncopyable >( "Simulation", bp::init< >() )    
         .def( 
             "clone"
             , (::Simulation * ( ::Simulation::* )(  ) const)(&::Simulation::clone)
-            , (::Simulation * ( Experiment_wrapper::* )(  ) const)(&Experiment_wrapper::default_clone)
+            , (::Simulation * ( Simulation_wrapper::* )(  ) const)(&Simulation_wrapper::default_clone)
             , bp::return_value_policy< bp::manage_new_object >() )    
+        .def( 
+            "getInstrument"
+            , (::Instrument & ( ::Simulation::* )(  ) )( &::Simulation::getInstrument )
+            , bp::return_value_policy< bp::reference_existing_object >() )    
+        .def( 
+            "getInstrument"
+            , (::Instrument const & ( ::Simulation::* )(  ) const)( &::Simulation::getInstrument )
+            , bp::return_value_policy< bp::copy_const_reference >() )    
+        .def( 
+            "getOutputData"
+            , (::OutputData< double > const * ( ::Simulation::* )(  ) const)( &::Simulation::getOutputData )
+            , bp::return_value_policy< bp::reference_existing_object >() )    
+        .def( 
+            "getOutputDataClone"
+            , (::OutputData< double > * ( ::Simulation::* )(  ) const)( &::Simulation::getOutputDataClone )
+            , bp::return_value_policy< bp::reference_existing_object >() )    
+        .def( 
+            "getSample"
+            , (::ISample * ( ::Simulation::* )(  ) )( &::Simulation::getSample )
+            , bp::return_value_policy< bp::reference_existing_object >() )    
+        .def( 
+            "getSample"
+            , (::ISample const * ( ::Simulation::* )(  ) const)( &::Simulation::getSample )
+            , bp::return_value_policy< bp::reference_existing_object >() )    
+        .def( 
+            "getSimulationParameters"
+            , (::SimulationParameters ( ::Simulation::* )(  ) const)( &::Simulation::getSimulationParameters ) )    
         .def( 
             "normalize"
-            , (void ( ::Simulation::* )(  ) )(&::Simulation::normalize)
-            , (void ( Experiment_wrapper::* )(  ) )(&Experiment_wrapper::default_normalize) )    
+            , (void ( ::Simulation::* )(  ) )( &::Simulation::normalize ) )    
         .def( 
-            "runExperiment"
-            , (void ( ::Simulation::* )(  ) )(&::Simulation::runSimulation)
-            , (void ( Experiment_wrapper::* )(  ) )(&Experiment_wrapper::default_runExperiment) )    
+            "prepareSimulation"
+            , (void ( ::Simulation::* )(  ) )( &::Simulation::prepareSimulation ) )    
         .def( 
-            "runExperimentElement"
-            , (void ( ::Simulation::* )( ::size_t ) )(&::Simulation::runSimulationElement)
-            , (void ( Experiment_wrapper::* )( ::size_t ) )(&Experiment_wrapper::default_runExperimentElement)
+            "runSimulation"
+            , (void ( ::Simulation::* )(  ) )( &::Simulation::runSimulation ) )    
+        .def( 
+            "runSimulationElement"
+            , (void ( ::Simulation::* )( ::size_t ) )( &::Simulation::runSimulationElement )
             , ( bp::arg("index") ) )    
+        .def( 
+            "setBeamIntensity"
+            , (void ( ::Simulation::* )( double ) )( &::Simulation::setBeamIntensity )
+            , ( bp::arg("intensity") ) )    
+        .def( 
+            "setBeamParameters"
+            , (void ( ::Simulation::* )( double,double,double ) )( &::Simulation::setBeamParameters )
+            , ( bp::arg("lambda"), bp::arg("alpha_i"), bp::arg("phi_i") ) )    
+        .def( 
+            "setDetectorParameters"
+            , (void ( ::Simulation::* )( ::OutputData< double > const & ) )( &::Simulation::setDetectorParameters )
+            , ( bp::arg("output_data") ) )    
         .def( 
             "setDetectorParameters"
             , (void ( ::Simulation::* )( ::size_t,double,double,::size_t,double,double,bool ) )( &::Simulation::setDetectorParameters )
@@ -202,25 +199,33 @@ void register_Experiment_class(){
             "setDetectorParameters"
             , (void ( ::Simulation::* )( ::DetectorParameters const & ) )( &::Simulation::setDetectorParameters )
             , ( bp::arg("params") ) )    
+        .def( 
+            "setSample"
+            , (void ( ::Simulation::* )( ::ISample const & ) )( &::Simulation::setSample )
+            , ( bp::arg("p_sample") ) )    
+        .def( 
+            "setSimulationParameters"
+            , (void ( ::Simulation::* )( ::SimulationParameters const & ) )( &::Simulation::setSimulationParameters )
+            , ( bp::arg("sim_params") ) )    
         .def( 
             "smearIntensityFromZAxisTilting"
             , (void ( ::Simulation::* )(  ) )( &::Simulation::smearIntensityFromZAxisTilting ) )    
         .def( 
             "areParametersChanged"
             , (bool ( ::IParameterized::* )(  ) )(&::IParameterized::areParametersChanged)
-            , (bool ( Experiment_wrapper::* )(  ) )(&Experiment_wrapper::default_areParametersChanged) )    
+            , (bool ( Simulation_wrapper::* )(  ) )(&Simulation_wrapper::default_areParametersChanged) )    
         .def( 
             "createParameterTree"
             , (::ParameterPool * ( ::IParameterized::* )(  ) const)(&::IParameterized::createParameterTree)
-            , (::ParameterPool * ( Experiment_wrapper::* )(  ) const)(&Experiment_wrapper::default_createParameterTree)
+            , (::ParameterPool * ( Simulation_wrapper::* )(  ) const)(&Simulation_wrapper::default_createParameterTree)
             , bp::return_value_policy< bp::manage_new_object >() )    
         .def( 
             "printParameters"
             , (void ( ::IParameterized::* )(  ) const)(&::IParameterized::printParameters)
-            , (void ( Experiment_wrapper::* )(  ) const)(&Experiment_wrapper::default_printParameters) )    
+            , (void ( Simulation_wrapper::* )(  ) const)(&Simulation_wrapper::default_printParameters) )    
         .def( 
             "setParametersAreChanged"
             , (void ( ::IParameterized::* )(  ) )(&::IParameterized::setParametersAreChanged)
-            , (void ( Experiment_wrapper::* )(  ) )(&Experiment_wrapper::default_setParametersAreChanged) );
+            , (void ( Simulation_wrapper::* )(  ) )(&Simulation_wrapper::default_setParametersAreChanged) );
 
 }
-- 
GitLab