diff --git a/Core/Export/PythonFormatting.cpp b/Core/Export/PythonFormatting.cpp index 945bc69d0382fb7283791049b99a4612d75cf8ba..e5d278a516f049d68e110038348fe18bed9a6c52 100644 --- a/Core/Export/PythonFormatting.cpp +++ b/Core/Export/PythonFormatting.cpp @@ -21,6 +21,7 @@ #include "IShape2D.h" #include "InfinitePlane.h" #include "IParameterized.h" +#include "ISampleBuilder.h" #include "Line.h" #include "Macros.h" #include "MultiLayer.h" diff --git a/Core/Multilayer/ISampleBuilder.h b/Core/Multilayer/ISampleBuilder.h index 3b0062fd0bae2e5c18e13fd5d8bdd3b5ba3ee4b3..519028e9e4f25837de1472f432b4418461445929 100644 --- a/Core/Multilayer/ISampleBuilder.h +++ b/Core/Multilayer/ISampleBuilder.h @@ -18,13 +18,12 @@ #include "IParameterized.h" -class ISample; +class MultiLayer; class IFormFactor; class IFTDistribution2D; -//! @class ISampleBuilder +//! Interface to the class capable to build samples to simulate. //! @ingroup simulation_internal -//! @brief Interface to the class capable to build samples to simulate class BA_CORE_API_ ISampleBuilder : public IParameterized { @@ -32,7 +31,7 @@ public: ISampleBuilder() : IParameterized("SampleBuilder") {} virtual ~ISampleBuilder() {} - virtual ISample* buildSample() const = 0; + virtual MultiLayer* buildSample() const = 0; void set_subtest(const IParameterized* subtest_item) { m_subtest_item = subtest_item; } const IParameterized* m_subtest_item; diff --git a/Core/Multilayer/LayerStrategyBuilder.cpp b/Core/Multilayer/LayerStrategyBuilder.cpp index fbd3cab30aa239ef05ac7370a9cad494964db348..1506c599ea065b417722cb0d537a90d7ef41e77b 100644 --- a/Core/Multilayer/LayerStrategyBuilder.cpp +++ b/Core/Multilayer/LayerStrategyBuilder.cpp @@ -21,6 +21,7 @@ #include "IParticle.h" #include "InterferenceFunctionStrategies.h" #include "InterferenceFunctions.h" +#include "MultiLayer.h" #include "Layer.h" #include "LayerSpecularInfo.h" #include "Simulation.h" diff --git a/Core/Multilayer/LayerStrategyBuilder.h b/Core/Multilayer/LayerStrategyBuilder.h index 16707686296019e20e1abe5b8d2693112b1bbbed..5fe9a95f10aeb0fc721eb8751e5e093ae75be18d 100644 --- a/Core/Multilayer/LayerStrategyBuilder.h +++ b/Core/Multilayer/LayerStrategyBuilder.h @@ -28,9 +28,8 @@ class Layer; class LayerSpecularInfo; class Simulation; -//! @class LayerStrategyBuilder +//! Methods to generate a simulation strategy for decorated Layer SimulationParameters. //! @ingroup algorithms_internal -//! @brief Methods to generate a simulation strategy for decorated Layer SimulationParameters class BA_CORE_API_ LayerStrategyBuilder { @@ -48,9 +47,9 @@ public: virtual IInterferenceFunctionStrategy* createStrategy(); protected: - std::unique_ptr<class Layer> mP_layer; //!< decorated layer - std::unique_ptr<class Simulation> mP_simulation; //!< simulation - SimulationOptions m_sim_params; //!< simulation parameters + std::unique_ptr<class Layer> mP_layer; //!< decorated layer + std::unique_ptr<class Simulation> mP_simulation; //!< simulation + SimulationOptions m_sim_params; //!< simulation parameters std::unique_ptr<class LayerSpecularInfo> mP_specular_info; //!< R and T coefficients for DWBA size_t m_layout_index; //!< index for the layout to be used in the layer diff --git a/Core/Simulation/DWBASimulation.cpp b/Core/Simulation/DWBASimulation.cpp index b825ceb4e01cec9b8a1fc0417c6f92d588ddd49d..563cc8a896433beb8c3ca1cce69204378e122a39 100644 --- a/Core/Simulation/DWBASimulation.cpp +++ b/Core/Simulation/DWBASimulation.cpp @@ -14,7 +14,7 @@ // ************************************************************************** // #include "DWBASimulation.h" -#include "ISample.h" +#include "MultiLayer.h" DWBASimulation::DWBASimulation() : mp_simulation(nullptr) @@ -42,9 +42,9 @@ void DWBASimulation::init(const Simulation& simulation, mp_simulation->initProgressHandlerDWBA(&m_progress); } -DWBASimulation *DWBASimulation::clone() const +DWBASimulation* DWBASimulation::clone() const { - DWBASimulation *p_result = new DWBASimulation(); + DWBASimulation* p_result = new DWBASimulation(); p_result->m_dwba_intensity.copyFrom(m_dwba_intensity); p_result->m_progress.setCallback(m_progress.getCallback()); if (mp_simulation) @@ -57,7 +57,7 @@ bool DWBASimulation::checkPolarizationPresent() const if (!mp_simulation) throw Exceptions::ClassInitializationException("DWBASimulation::" "checkPolarizationPresent(): simulation not initialized"); - ISample *p_sample = mp_simulation->getSample(); + MultiLayer* p_sample = mp_simulation->getSample(); if (!p_sample) throw Exceptions::ClassInitializationException("DWBASimulation::" "checkPolarizationPresent(): sample not initialized"); diff --git a/Core/Simulation/DWBASimulation.h b/Core/Simulation/DWBASimulation.h index d62bda3165a9a24b6a87ba2c4037899b531699d1..121e1d9822cb948b2bca1952c30026e8aa72a2c8 100644 --- a/Core/Simulation/DWBASimulation.h +++ b/Core/Simulation/DWBASimulation.h @@ -32,7 +32,7 @@ public: virtual ~DWBASimulation(); //! Initializes the simulation with the parameters from simulation - virtual void init(const Simulation &simulation, + virtual void init(const Simulation& simulation, std::vector<SimulationElement>::iterator begin_it, std::vector<SimulationElement>::iterator end_it); diff --git a/Core/Simulation/GISASSimulation.cpp b/Core/Simulation/GISASSimulation.cpp index 8b7ffe6e50bf1a679996ecbe7a0ce2f5b86aebb7..cf9fec4b48b95bde7fab5854f8c0f6c7d85b7bec 100644 --- a/Core/Simulation/GISASSimulation.cpp +++ b/Core/Simulation/GISASSimulation.cpp @@ -16,7 +16,8 @@ #include "GISASSimulation.h" #include "BornAgainNamespace.h" #include "Histogram2D.h" -#include "ISample.h" +#include "ISampleBuilder.h" +#include "MultiLayer.h" #include "SimulationElement.h" GISASSimulation::GISASSimulation() @@ -24,7 +25,7 @@ GISASSimulation::GISASSimulation() initialize(); } -GISASSimulation::GISASSimulation(const ISample& p_sample) +GISASSimulation::GISASSimulation(const MultiLayer& p_sample) : Simulation(p_sample) { initialize(); diff --git a/Core/Simulation/GISASSimulation.h b/Core/Simulation/GISASSimulation.h index 1d254c3bc3203bba418ff6adbd65fd290bb834f1..5cf07cbceb8be19452c42e82bac7fb7dc934cc13 100644 --- a/Core/Simulation/GISASSimulation.h +++ b/Core/Simulation/GISASSimulation.h @@ -19,7 +19,7 @@ #include "Simulation.h" #include "Instrument.h" -class ISample; +class MultiLayer; class ISampleBuilder; class IHistogram; class Histogram2D; @@ -31,7 +31,7 @@ class BA_CORE_API_ GISASSimulation : public Simulation { public: GISASSimulation(); - GISASSimulation(const ISample& p_sample); + GISASSimulation(const MultiLayer& p_sample); GISASSimulation(std::shared_ptr<ISampleBuilder> p_sample_builder); virtual ~GISASSimulation() {} diff --git a/Core/Simulation/OffSpecSimulation.cpp b/Core/Simulation/OffSpecSimulation.cpp index b2549507c37da4ee3aa9c14fa554f545bb146c11..15c94f5c624d29fa30a989e9a89142e32cf5c861 100644 --- a/Core/Simulation/OffSpecSimulation.cpp +++ b/Core/Simulation/OffSpecSimulation.cpp @@ -16,7 +16,8 @@ #include "OffSpecSimulation.h" #include "BornAgainNamespace.h" #include "Histogram2D.h" -#include "ISample.h" +#include "ISampleBuilder.h" +#include "MultiLayer.h" #include "SimulationElement.h" OffSpecSimulation::OffSpecSimulation() @@ -25,7 +26,7 @@ OffSpecSimulation::OffSpecSimulation() initialize(); } -OffSpecSimulation::OffSpecSimulation(const ISample& p_sample) +OffSpecSimulation::OffSpecSimulation(const MultiLayer& p_sample) : Simulation(p_sample) , mp_alpha_i_axis(0) { @@ -48,12 +49,12 @@ void OffSpecSimulation::prepareSimulation() int OffSpecSimulation::getNumberOfSimulationElements() const { checkInitialization(); - const IAxis &phi_axis = m_instrument.getDetectorAxis(0); - const IAxis &alpha_axis = m_instrument.getDetectorAxis(1); + const IAxis& phi_axis = m_instrument.getDetectorAxis(0); + const IAxis& alpha_axis = m_instrument.getDetectorAxis(1); return phi_axis.getSize()*alpha_axis.getSize()*mp_alpha_i_axis->getSize(); } -Histogram2D *OffSpecSimulation::getIntensityData() const +Histogram2D* OffSpecSimulation::getIntensityData() const { const std::unique_ptr<OutputData<double> > data(getDetectorIntensity()); return new Histogram2D(*data); @@ -162,9 +163,9 @@ void OffSpecSimulation::initSimulationElementVector() double phi_i = beam.getPhi(); checkInitialization(); - for (size_t alpha_i_index = 0; alpha_i_index < mp_alpha_i_axis->getSize(); ++alpha_i_index) { + for (size_t iAlpha = 0; iAlpha < mp_alpha_i_axis->getSize(); ++iAlpha) { // Incoming angle by convention defined as positive: - double alpha_i = mp_alpha_i_axis->getBin(alpha_i_index).getMidPoint(); + double alpha_i = mp_alpha_i_axis->getBin(iAlpha).getMidPoint(); beam.setCentralK(wavelength, alpha_i, phi_i); m_instrument.setBeam(beam); std::vector<SimulationElement> sim_elements_alpha_i = @@ -180,11 +181,10 @@ void OffSpecSimulation::transferResultsToIntensityMap() updateIntensityMap(); const IAxis &phi_axis = m_instrument.getDetectorAxis(0); size_t phi_f_size = phi_axis.getSize(); - if (phi_f_size*m_intensity_map.getAllocatedSize()!=m_sim_elements.size()) { - throw Exceptions::RuntimeErrorException("OffSpecSimulation::transferResultsToIntensityMap: " - "intensity map size does not conform to number of " - "calculated intensities"); - } + if (phi_f_size*m_intensity_map.getAllocatedSize()!=m_sim_elements.size()) + throw Exceptions::RuntimeErrorException( + "OffSpecSimulation::transferResultsToIntensityMap: " + "intensity map size does not conform to number of calculated intensities"); for (size_t i=0; i<mp_alpha_i_axis->getSize(); ++i) transferDetectorImage(i); } @@ -216,18 +216,16 @@ void OffSpecSimulation::transferDetectorImage(int index) detector_image[i] = m_sim_elements[index*detector_size + i].getIntensity(); m_instrument.applyDetectorResolution(&detector_image); size_t y_axis_size = m_instrument.getDetectorAxis(1).getSize(); - for (size_t i=0; i<detector_size; ++i) { + for (size_t i=0; i<detector_size; ++i) m_intensity_map[index*y_axis_size + i%y_axis_size] += detector_image[i]; - } } void OffSpecSimulation::checkInitialization() const { - if (!mp_alpha_i_axis || mp_alpha_i_axis->getSize()<1) { + if (!mp_alpha_i_axis || mp_alpha_i_axis->getSize()<1) throw Exceptions::ClassInitializationException( "OffSpecSimulation::checkInitialization() " "Incoming alpha range not configured."); - } if (m_instrument.getDetectorDimension()!=2) throw Exceptions::RuntimeErrorException( "OffSpecSimulation::checkInitialization: detector is not two-dimensional"); diff --git a/Core/Simulation/OffSpecSimulation.h b/Core/Simulation/OffSpecSimulation.h index cc7db2398de2774d0dde6cf4ff884471847e09dd..489d4ec3176b6d2ad860b48d11ab0ebe619b9ea8 100644 --- a/Core/Simulation/OffSpecSimulation.h +++ b/Core/Simulation/OffSpecSimulation.h @@ -28,7 +28,7 @@ class BA_CORE_API_ OffSpecSimulation : public Simulation { public: OffSpecSimulation(); - OffSpecSimulation(const ISample& p_sample); + OffSpecSimulation(const MultiLayer& p_sample); OffSpecSimulation(std::shared_ptr<class ISampleBuilder> p_sample_builder); virtual ~OffSpecSimulation() {} diff --git a/Core/Simulation/Simulation.cpp b/Core/Simulation/Simulation.cpp index bb04bf9e2659feec8eb0e567ceb20ac5e676513f..678f3a981a038efc8c9397fbd9c648ed5837de76 100644 --- a/Core/Simulation/Simulation.cpp +++ b/Core/Simulation/Simulation.cpp @@ -15,7 +15,8 @@ #include "Simulation.h" #include "DWBASimulation.h" -#include "ISample.h" +#include "ISampleBuilder.h" +#include "MultiLayer.h" #include "Logger.h" #include "OMPISimulation.h" #include "ParameterPool.h" @@ -32,7 +33,7 @@ Simulation::Simulation() Simulation::~Simulation() {} // forward class declaration prevents move to .h -Simulation::Simulation(const ISample& p_sample) +Simulation::Simulation(const MultiLayer& p_sample) : IParameterized("Simulation") { mP_sample.reset(p_sample.clone()); @@ -102,8 +103,8 @@ void Simulation::runOMPISimulation() ompi.runSimulation(this); } -//! The ISample object will not be owned by the Simulation object -void Simulation::setSample(const ISample& sample) +//! The MultiLayer object will not be owned by the Simulation object +void Simulation::setSample(const MultiLayer& sample) { mP_sample.reset(sample.clone()); } @@ -118,7 +119,7 @@ void Simulation::setSampleBuilder(std::shared_ptr<class ISampleBuilder> p_sample mP_sample.reset(0); } -std::string Simulation::addParametersToExternalPool(std::string path, ParameterPool *external_pool, +std::string Simulation::addParametersToExternalPool(std::string path, ParameterPool* external_pool, int copy_number) const { // add own parameters @@ -157,7 +158,7 @@ const DistributionHandler& Simulation::getDistributionHandler() const void Simulation::updateSample() { if (mp_sample_builder) { - ISample *p_new_sample = mp_sample_builder->buildSample(); + MultiLayer* p_new_sample = mp_sample_builder->buildSample(); std::string builder_type = typeid(*mp_sample_builder).name(); if (builder_type.find("ISampleBuilder_wrapper") != std::string::npos) { msglog(MSG::DEBUG2) << "Simulation::updateSample() -> " @@ -213,7 +214,7 @@ void Simulation::runSingleSimulation() for (int i_thread = 0; i_thread < m_options.getNumberOfThreads(); ++i_thread) { if (i_thread*element_thread_step >= total_batch_elements) break; - DWBASimulation *p_dwba_simulation = mP_sample->createDWBASimulation(); + DWBASimulation* p_dwba_simulation = mP_sample->createDWBASimulation(); verifyDWBASimulation(p_dwba_simulation); std::vector<SimulationElement>::iterator begin_it = batch_start + i_thread * element_thread_step; @@ -271,7 +272,7 @@ void Simulation::normalize(std::vector<SimulationElement>::iterator begin_it, } } -void Simulation::initProgressHandlerDWBA(ProgressHandlerDWBA *dwba_progress) +void Simulation::initProgressHandlerDWBA(ProgressHandlerDWBA* dwba_progress) { // if we have external ProgressHandler (which is normally coming from GUI), // then we will create special callbacks for every DWBASimulation. @@ -281,7 +282,7 @@ void Simulation::initProgressHandlerDWBA(ProgressHandlerDWBA *dwba_progress) } } -void Simulation::verifyDWBASimulation(DWBASimulation *dwbaSimulation) +void Simulation::verifyDWBASimulation(DWBASimulation* dwbaSimulation) { if (!dwbaSimulation) throw Exceptions::RuntimeErrorException( @@ -296,8 +297,10 @@ std::vector<SimulationElement>::iterator Simulation::getBatchStart(int n_batches imposeConsistencyOfBatchNumbers(n_batches, current_batch); int total_size = m_sim_elements.size(); int size_per_batch = total_size/n_batches; - if (total_size%n_batches) ++size_per_batch; - if (current_batch*size_per_batch >= total_size) return m_sim_elements.end(); + if (total_size%n_batches) + ++size_per_batch; + if (current_batch*size_per_batch >= total_size) + return m_sim_elements.end(); return m_sim_elements.begin() + current_batch*size_per_batch; } diff --git a/Core/Simulation/Simulation.h b/Core/Simulation/Simulation.h index 0ca83bd83b9a074d4d609d84cd0f025b1f60ff53..203581be416334ec1f512365124154cf2227e26d 100644 --- a/Core/Simulation/Simulation.h +++ b/Core/Simulation/Simulation.h @@ -18,25 +18,23 @@ #include "DistributionHandler.h" #include "IDetector2D.h" -#include "ISampleBuilder.h" #include "ProgressHandler.h" #include "SimulationOptions.h" template<class T> class OutputData; class DWBASimulation; -class ISample; +class MultiLayer; class ISampleBuilder; class ProgressHandlerDWBA; -//! @class Simulation +//! Main class to run the simulation. //! @ingroup simulation -//! @brief Main class to run the simulation. class BA_CORE_API_ Simulation : public ICloneable, public IParameterized { public: Simulation(); - Simulation(const ISample& p_sample); + Simulation(const MultiLayer& p_sample); Simulation(std::shared_ptr<ISampleBuilder> p_sample_builder); virtual ~Simulation(); @@ -52,10 +50,10 @@ public: void runOMPISimulation(); //! Sets the sample to be tested - void setSample(const ISample& sample); + void setSample(const MultiLayer& sample); //! Returns the sample - ISample* getSample() const { return mP_sample.get(); } + MultiLayer* getSample() const { return mP_sample.get(); } //! Sets the sample builder void setSampleBuilder(std::shared_ptr<ISampleBuilder> sample_builder); @@ -134,7 +132,7 @@ protected: //! Returns the end iterator of simulation elements for the current batch std::vector<SimulationElement>::iterator getBatchEnd(int n_batches, int current_batch); - std::unique_ptr<ISample> mP_sample; + std::unique_ptr<MultiLayer> mP_sample; std::shared_ptr<ISampleBuilder> mp_sample_builder; SimulationOptions m_options; DistributionHandler m_distribution_handler; diff --git a/Core/StandardSamples/BoxCompositionBuilder.cpp b/Core/StandardSamples/BoxCompositionBuilder.cpp index 6d41667b90aeca2cab6d1ac289d3dfa048f1c474..6836e09354527d7788627029037737c1f4020191 100644 --- a/Core/StandardSamples/BoxCompositionBuilder.cpp +++ b/Core/StandardSamples/BoxCompositionBuilder.cpp @@ -61,7 +61,7 @@ MultiLayer* BoxCompositionBuilder::createMultiLayer(const ParticleComposition &c // --- BoxCompositionRotateXBuilder --- -ISample* BoxCompositionRotateXBuilder::buildSample() const +MultiLayer* BoxCompositionRotateXBuilder::buildSample() const { Particle box(*m_particleMaterial, FormFactorBox(m_length/2.0, m_width, m_height)); ParticleComposition composition; @@ -74,7 +74,7 @@ ISample* BoxCompositionRotateXBuilder::buildSample() const // --- BoxCompositionRotateYBuilder --- -ISample* BoxCompositionRotateYBuilder::buildSample() const +MultiLayer* BoxCompositionRotateYBuilder::buildSample() const { Particle box(*m_particleMaterial, FormFactorBox(m_length/2.0, m_width, m_height)); ParticleComposition composition; @@ -87,7 +87,7 @@ ISample* BoxCompositionRotateYBuilder::buildSample() const // --- BoxCompositionRotateZBuilder --- -ISample* BoxCompositionRotateZBuilder::buildSample() const +MultiLayer* BoxCompositionRotateZBuilder::buildSample() const { Particle box(*m_particleMaterial, FormFactorBox(m_length/2.0, m_width, m_height)); ParticleComposition composition; @@ -100,7 +100,7 @@ ISample* BoxCompositionRotateZBuilder::buildSample() const // --- BoxCompositionRotateZandYBuilder --- -ISample* BoxCompositionRotateZandYBuilder::buildSample() const +MultiLayer* BoxCompositionRotateZandYBuilder::buildSample() const { Particle box(*m_particleMaterial, FormFactorBox(m_length/2.0, m_width, m_height)); ParticleComposition composition; @@ -115,7 +115,7 @@ ISample* BoxCompositionRotateZandYBuilder::buildSample() const // --- BoxStackCompositionBuilder --- // Composition of two boxes which gives you the box (10,20,50) with reference point as usual. -ISample* BoxStackCompositionBuilder::buildSample() const +MultiLayer* BoxStackCompositionBuilder::buildSample() const { ParticleComposition composition; diff --git a/Core/StandardSamples/BoxCompositionBuilder.h b/Core/StandardSamples/BoxCompositionBuilder.h index daf1f474d3bb69a1f30b0e6230aa886272044f2f..b992eab5c6eb3e78578a613729b3515da44c4598 100644 --- a/Core/StandardSamples/BoxCompositionBuilder.h +++ b/Core/StandardSamples/BoxCompositionBuilder.h @@ -51,7 +51,7 @@ class BA_CORE_API_ BoxCompositionRotateXBuilder : public BoxCompositionBuilder { public: BoxCompositionRotateXBuilder(){} - ISample* buildSample() const; + MultiLayer* buildSample() const; }; //! @class BoxCompositionRotateYBuilder @@ -62,7 +62,7 @@ class BA_CORE_API_ BoxCompositionRotateYBuilder : public BoxCompositionBuilder { public: BoxCompositionRotateYBuilder(){} - ISample* buildSample() const; + MultiLayer* buildSample() const; }; //! @class BoxCompositionRotateZBuilder @@ -73,7 +73,7 @@ class BA_CORE_API_ BoxCompositionRotateZBuilder : public BoxCompositionBuilder { public: BoxCompositionRotateZBuilder(){} - ISample* buildSample() const; + MultiLayer* buildSample() const; }; //! @class BoxCompositionRotateZandYBuilder @@ -84,7 +84,7 @@ class BA_CORE_API_ BoxCompositionRotateZandYBuilder : public BoxCompositionBuild { public: BoxCompositionRotateZandYBuilder(){} - ISample* buildSample() const; + MultiLayer* buildSample() const; }; //! @class BoxStackCompositionBuilder @@ -95,7 +95,7 @@ class BA_CORE_API_ BoxStackCompositionBuilder : public BoxCompositionBuilder { public: BoxStackCompositionBuilder(){} - ISample* buildSample() const; + MultiLayer* buildSample() const; }; #endif // BOXCOMPOSITIONBUILDER_H diff --git a/Core/StandardSamples/CoreShellParticleBuilder.cpp b/Core/StandardSamples/CoreShellParticleBuilder.cpp index 325cfa6c38cee96b2f1554c9187e3c28b97783be..d986fd15f4e1bc373605e1efb1180cbbfeb62682 100644 --- a/Core/StandardSamples/CoreShellParticleBuilder.cpp +++ b/Core/StandardSamples/CoreShellParticleBuilder.cpp @@ -26,7 +26,7 @@ // --- CoreShellParticleBuilder --- -ISample* CoreShellParticleBuilder::buildSample() const +MultiLayer* CoreShellParticleBuilder::buildSample() const { MultiLayer* multi_layer = new MultiLayer(); @@ -58,7 +58,7 @@ ISample* CoreShellParticleBuilder::buildSample() const // --- CoreShellBoxRotateZandYBuilder --- -ISample* CoreShellBoxRotateZandYBuilder::buildSample() const +MultiLayer* CoreShellBoxRotateZandYBuilder::buildSample() const { const double layer_thickness(100.0*Units::nanometer); @@ -68,7 +68,6 @@ ISample* CoreShellBoxRotateZandYBuilder::buildSample() const HomogeneousMaterial mCore("Ag", 1.245e-5, 5.419e-7); HomogeneousMaterial mShell("AgO2", 8.600e-6, 3.442e-7); - // core shell particle const double shell_length(50.0*Units::nanometer); const double shell_width(20.0*Units::nanometer); diff --git a/Core/StandardSamples/CoreShellParticleBuilder.h b/Core/StandardSamples/CoreShellParticleBuilder.h index deab92c833a34e66538889808a8fcbb86bb89027..9dfe22f5ff0d85d6fd257ff79c94c3e3f2ec299f 100644 --- a/Core/StandardSamples/CoreShellParticleBuilder.h +++ b/Core/StandardSamples/CoreShellParticleBuilder.h @@ -28,7 +28,7 @@ class BA_CORE_API_ CoreShellParticleBuilder : public ISampleBuilder { public: CoreShellParticleBuilder(){} - ISample* buildSample() const; + MultiLayer* buildSample() const; }; @@ -40,7 +40,7 @@ class BA_CORE_API_ CoreShellBoxRotateZandYBuilder : public ISampleBuilder { public: CoreShellBoxRotateZandYBuilder(){} - ISample* buildSample() const; + MultiLayer* buildSample() const; }; #endif // CORESHELLPARTICLEBUILDER_H diff --git a/Core/StandardSamples/CustomMorphologyBuilder.cpp b/Core/StandardSamples/CustomMorphologyBuilder.cpp index bfa89f3b64fb329cc01bb06f294e31b79bf60b5a..526200679337a3de38e42f6dac64eaedaa8b93d3 100644 --- a/Core/StandardSamples/CustomMorphologyBuilder.cpp +++ b/Core/StandardSamples/CustomMorphologyBuilder.cpp @@ -23,7 +23,7 @@ #include "RealParameter.h" #include "Units.h" -ISample* CustomMorphologyBuilder::buildSample() const +MultiLayer* CustomMorphologyBuilder::buildSample() const { MultiLayer* multi_layer = new MultiLayer(); diff --git a/Core/StandardSamples/CustomMorphologyBuilder.h b/Core/StandardSamples/CustomMorphologyBuilder.h index 80190f23488f78f59e572c3bfadea2242c301cba..98b3e42abd3045821805de7faba4589c8c8b11d0 100644 --- a/Core/StandardSamples/CustomMorphologyBuilder.h +++ b/Core/StandardSamples/CustomMorphologyBuilder.h @@ -28,7 +28,7 @@ class BA_CORE_API_ CustomMorphologyBuilder : public ISampleBuilder { public: CustomMorphologyBuilder() {} - ISample* buildSample() const; + MultiLayer* buildSample() const; }; #endif // CUSTOMMORPHOLOGYBUILDER_H diff --git a/Core/StandardSamples/CylindersAndPrismsBuilder.cpp b/Core/StandardSamples/CylindersAndPrismsBuilder.cpp index e876a9f1bc2b422217dd23559ca7c5a9e9406b22..7efa731dcc3374e5c46eb61204b6a12ff2593b55 100644 --- a/Core/StandardSamples/CylindersAndPrismsBuilder.cpp +++ b/Core/StandardSamples/CylindersAndPrismsBuilder.cpp @@ -44,7 +44,7 @@ void CylindersAndPrismsBuilder::init_parameters() registerParameter("cylinder_weight", &m_cylinder_weight).setNonnegative(); } -ISample* CylindersAndPrismsBuilder::buildSample() const +MultiLayer* CylindersAndPrismsBuilder::buildSample() const { MultiLayer* multi_layer = new MultiLayer(); diff --git a/Core/StandardSamples/CylindersAndPrismsBuilder.h b/Core/StandardSamples/CylindersAndPrismsBuilder.h index 2ae54d1913999e1a17346270582b06b10d46e5bf..336730b6fda1724cd13706450b81ef5a578d3a01 100644 --- a/Core/StandardSamples/CylindersAndPrismsBuilder.h +++ b/Core/StandardSamples/CylindersAndPrismsBuilder.h @@ -29,7 +29,7 @@ class BA_CORE_API_ CylindersAndPrismsBuilder : public ISampleBuilder { public: CylindersAndPrismsBuilder(); - ISample* buildSample() const; + MultiLayer* buildSample() const; protected: void init_parameters(); diff --git a/Core/StandardSamples/CylindersBuilder.cpp b/Core/StandardSamples/CylindersBuilder.cpp index 50c2d8bb098a65b18fd88046e91064ec7e0362cf..feebedf3949c4e8c4391b8b6c4ac1204cded790e 100644 --- a/Core/StandardSamples/CylindersBuilder.cpp +++ b/Core/StandardSamples/CylindersBuilder.cpp @@ -41,7 +41,7 @@ void CylindersInDWBABuilder::init_parameters() registerParameter(BornAgain::Height, &m_height).setUnit("nm").setNonnegative(); } -ISample* CylindersInDWBABuilder::buildSample() const +MultiLayer* CylindersInDWBABuilder::buildSample() const { MultiLayer* multi_layer = new MultiLayer(); @@ -81,7 +81,7 @@ void CylindersInBABuilder::init_parameters() registerParameter(BornAgain::Height, &m_height).setUnit("nm").setNonnegative(); } -ISample* CylindersInBABuilder::buildSample() const +MultiLayer* CylindersInBABuilder::buildSample() const { MultiLayer* multi_layer = new MultiLayer(); @@ -118,7 +118,7 @@ void LargeCylindersInDWBABuilder::init_parameters() registerParameter(BornAgain::Height, &m_height).setUnit("nm").setNonnegative(); } -ISample* LargeCylindersInDWBABuilder::buildSample() const +MultiLayer* LargeCylindersInDWBABuilder::buildSample() const { MultiLayer* multi_layer = new MultiLayer(); diff --git a/Core/StandardSamples/CylindersBuilder.h b/Core/StandardSamples/CylindersBuilder.h index 7b3bedf086c63f21abdb39af4254479a84a5b950..796a23371ce19ef1741a17f4382e009882214c33 100644 --- a/Core/StandardSamples/CylindersBuilder.h +++ b/Core/StandardSamples/CylindersBuilder.h @@ -28,7 +28,7 @@ class BA_CORE_API_ CylindersInDWBABuilder : public ISampleBuilder { public: CylindersInDWBABuilder(); - ISample* buildSample() const; + MultiLayer* buildSample() const; protected: void init_parameters(); @@ -46,7 +46,7 @@ class BA_CORE_API_ CylindersInBABuilder : public ISampleBuilder { public: CylindersInBABuilder(); - ISample* buildSample() const; + MultiLayer* buildSample() const; protected: void init_parameters(); @@ -64,7 +64,7 @@ class BA_CORE_API_ LargeCylindersInDWBABuilder : public ISampleBuilder { public: LargeCylindersInDWBABuilder(); - ISample* buildSample() const; + MultiLayer* buildSample() const; protected: void init_parameters(); diff --git a/Core/StandardSamples/LatticeBuilder.cpp b/Core/StandardSamples/LatticeBuilder.cpp index 7f8f78dc895adb07b6da428e63b9ca51d04429ce..bf24b03983115aeedbbb07a0aeb0e027493d735d 100644 --- a/Core/StandardSamples/LatticeBuilder.cpp +++ b/Core/StandardSamples/LatticeBuilder.cpp @@ -35,7 +35,7 @@ Lattice1DBuilder::Lattice1DBuilder() init_parameters(); } -ISample* Lattice1DBuilder::buildSample() const +MultiLayer* Lattice1DBuilder::buildSample() const { MultiLayer* multi_layer = new MultiLayer(); diff --git a/Core/StandardSamples/LatticeBuilder.h b/Core/StandardSamples/LatticeBuilder.h index 5e55ec5d4af0c09b0d08f2f15603499b8e7a61f1..8ebc6ab29fe09ab3e259b9701689a070b5392595 100644 --- a/Core/StandardSamples/LatticeBuilder.h +++ b/Core/StandardSamples/LatticeBuilder.h @@ -28,7 +28,7 @@ class BA_CORE_API_ Lattice1DBuilder : public ISampleBuilder { public: Lattice1DBuilder(); - ISample* buildSample() const; + MultiLayer* buildSample() const; protected: void init_parameters(); diff --git a/Core/StandardSamples/LayersWithAbsorptionBuilder.cpp b/Core/StandardSamples/LayersWithAbsorptionBuilder.cpp index c4570a8f050894979ffbe86d103261297732c2d6..25430bdd9ab9bbd65f94e83aed118c2c9a03018b 100644 --- a/Core/StandardSamples/LayersWithAbsorptionBuilder.cpp +++ b/Core/StandardSamples/LayersWithAbsorptionBuilder.cpp @@ -25,7 +25,7 @@ #include "RealParameter.h" #include "Units.h" -ISample* LayersWithAbsorptionBuilder::buildSample() const +MultiLayer* LayersWithAbsorptionBuilder::buildSample() const { const IFormFactor* form_factor = getFormFactor(); if(!form_factor) diff --git a/Core/StandardSamples/LayersWithAbsorptionBuilder.h b/Core/StandardSamples/LayersWithAbsorptionBuilder.h index 90012bb77aeb792ffa5f4c8a03ed334ae98f40c9..c69ad1caf6481e60ace8c512552092c7cac29737 100644 --- a/Core/StandardSamples/LayersWithAbsorptionBuilder.h +++ b/Core/StandardSamples/LayersWithAbsorptionBuilder.h @@ -18,10 +18,10 @@ #include "ISampleBuilder.h" -//! @class LayersWithAbsorptionBuilder -//! @ingroup standard_samples -//! @brief The LayersWithAbsorptionBuilder class generates a multilayer with 3 layers with +//! The LayersWithAbsorptionBuilder class generates a multilayer with 3 layers with //! absorption (refractive index has imaginary part). +//! @ingroup standard_samples + //! The middle layer is populated with particles. //! Requires IComponentService which generates form factors, used for bulk form factors testing. @@ -30,7 +30,7 @@ class BA_CORE_API_ LayersWithAbsorptionBuilder : public ISampleBuilder public: LayersWithAbsorptionBuilder() {} virtual ~LayersWithAbsorptionBuilder() {} - virtual ISample *buildSample() const; + virtual MultiLayer* buildSample() const; }; #endif // LAYERSWITHABSORPTIONBUILDER_H diff --git a/Core/StandardSamples/MagneticParticlesBuilder.cpp b/Core/StandardSamples/MagneticParticlesBuilder.cpp index a796499d6f9c247fdafbd97a9a4d9b534c328c9e..b63971a4892dc90ad175dbe243ff196bf8b287de 100644 --- a/Core/StandardSamples/MagneticParticlesBuilder.cpp +++ b/Core/StandardSamples/MagneticParticlesBuilder.cpp @@ -42,7 +42,7 @@ void MagneticParticleZeroFieldBuilder::init_parameters() registerParameter("cylinder_height", &m_cylinder_height).setUnit("nm").setNonnegative(); } -ISample* MagneticParticleZeroFieldBuilder::buildSample() const +MultiLayer* MagneticParticleZeroFieldBuilder::buildSample() const { MultiLayer* multi_layer = new MultiLayer(); @@ -83,7 +83,7 @@ void MagneticCylindersBuilder::init_parameters() registerParameter("cylinder_height", &m_cylinder_height).setUnit("nm").setNonnegative(); } -ISample* MagneticCylindersBuilder::buildSample() const +MultiLayer* MagneticCylindersBuilder::buildSample() const { MultiLayer* multi_layer = new MultiLayer(); diff --git a/Core/StandardSamples/MagneticParticlesBuilder.h b/Core/StandardSamples/MagneticParticlesBuilder.h index bcfccfcb6cf8348c130edfd32fa5352c3a1cfedc..2af1efedbe17d7954015b0eab736a1f98fe02810 100644 --- a/Core/StandardSamples/MagneticParticlesBuilder.h +++ b/Core/StandardSamples/MagneticParticlesBuilder.h @@ -28,7 +28,7 @@ class BA_CORE_API_ MagneticParticleZeroFieldBuilder : public ISampleBuilder { public: MagneticParticleZeroFieldBuilder(); - ISample* buildSample() const; + MultiLayer* buildSample() const; protected: void init_parameters(); @@ -46,7 +46,7 @@ class BA_CORE_API_ MagneticCylindersBuilder : public ISampleBuilder { public: MagneticCylindersBuilder(); - ISample* buildSample() const; + MultiLayer* buildSample() const; protected: void init_parameters(); diff --git a/Core/StandardSamples/MesoCrystalBuilder.cpp b/Core/StandardSamples/MesoCrystalBuilder.cpp index 9c4d40be85176a6461375f1f2f266aeea8607c81..dbc0746bc064d470c789e95b1ac1b07615b37cc3 100644 --- a/Core/StandardSamples/MesoCrystalBuilder.cpp +++ b/Core/StandardSamples/MesoCrystalBuilder.cpp @@ -67,7 +67,7 @@ void MesoCrystalBuilder::init_parameters() // create mesocrystal -ISample* MesoCrystalBuilder::buildSample() const +MultiLayer* MesoCrystalBuilder::buildSample() const { // create mesocrystal double surface_density = m_surface_filling_ratio/Pi::PI/m_meso_radius/m_meso_radius; diff --git a/Core/StandardSamples/MesoCrystalBuilder.h b/Core/StandardSamples/MesoCrystalBuilder.h index 7cdeeaa1f6e43c9eb413c6773f88c1fb68bc09b2..0703099c8451425ae9528fd7e791ba5a3afb1209 100644 --- a/Core/StandardSamples/MesoCrystalBuilder.h +++ b/Core/StandardSamples/MesoCrystalBuilder.h @@ -33,7 +33,7 @@ public: MesoCrystalBuilder(); virtual ~MesoCrystalBuilder(){} - virtual ISample* buildSample() const; + virtual MultiLayer* buildSample() const; protected: virtual void init_parameters(); diff --git a/Core/StandardSamples/MultiLayerWithRoughnessBuilder.cpp b/Core/StandardSamples/MultiLayerWithRoughnessBuilder.cpp index ae51fefd2daba19cbbc49c776c2da0cf0a65f55d..a9a26eaf4a85799f0f7c4bc5a7d7acbca1cefa57 100644 --- a/Core/StandardSamples/MultiLayerWithRoughnessBuilder.cpp +++ b/Core/StandardSamples/MultiLayerWithRoughnessBuilder.cpp @@ -44,7 +44,7 @@ void MultiLayerWithRoughnessBuilder::init_parameters() } -ISample* MultiLayerWithRoughnessBuilder::buildSample() const +MultiLayer* MultiLayerWithRoughnessBuilder::buildSample() const { MultiLayer* multi_layer = new MultiLayer(); HomogeneousMaterial air_material("Air", 0., 0.); diff --git a/Core/StandardSamples/MultiLayerWithRoughnessBuilder.h b/Core/StandardSamples/MultiLayerWithRoughnessBuilder.h index 16fe62b9389a3897d7c96e93838a501300bc1d80..0c90b6590cbbf4726536b1180343a0c253e6d2da 100644 --- a/Core/StandardSamples/MultiLayerWithRoughnessBuilder.h +++ b/Core/StandardSamples/MultiLayerWithRoughnessBuilder.h @@ -28,7 +28,7 @@ class BA_CORE_API_ MultiLayerWithRoughnessBuilder : public ISampleBuilder { public: MultiLayerWithRoughnessBuilder(); - ISample* buildSample() const; + MultiLayer* buildSample() const; protected: void init_parameters(); diff --git a/Core/StandardSamples/MultipleLayoutBuilder.cpp b/Core/StandardSamples/MultipleLayoutBuilder.cpp index be1ad9107044f04536d6f49a1f79da24f15b7f58..d04dc3a4f21511cec81e2af330b6e804edf5a6bf 100644 --- a/Core/StandardSamples/MultipleLayoutBuilder.cpp +++ b/Core/StandardSamples/MultipleLayoutBuilder.cpp @@ -43,7 +43,7 @@ void MultipleLayoutBuilder::init_parameters() registerParameter("cylinder_weight", &m_cylinder_weight).setUnit("nm").setNonnegative(); } -ISample* MultipleLayoutBuilder::buildSample() const +MultiLayer* MultipleLayoutBuilder::buildSample() const { MultiLayer* multi_layer = new MultiLayer(); diff --git a/Core/StandardSamples/MultipleLayoutBuilder.h b/Core/StandardSamples/MultipleLayoutBuilder.h index 0782ca3e50602256afe62314a1107aace0e5df49..e290437f92ce4f977079247b13c04eed3e91adcb 100644 --- a/Core/StandardSamples/MultipleLayoutBuilder.h +++ b/Core/StandardSamples/MultipleLayoutBuilder.h @@ -29,7 +29,7 @@ class BA_CORE_API_ MultipleLayoutBuilder : public ISampleBuilder { public: MultipleLayoutBuilder(); - ISample* buildSample() const; + MultiLayer* buildSample() const; protected: void init_parameters(); diff --git a/Core/StandardSamples/ParaCrystalBuilder.cpp b/Core/StandardSamples/ParaCrystalBuilder.cpp index 7aad2f0b544740d019ac5bd2f2341093a8b4be42..bb304159f4b67c58fe7009615ac9e000c549e8d5 100644 --- a/Core/StandardSamples/ParaCrystalBuilder.cpp +++ b/Core/StandardSamples/ParaCrystalBuilder.cpp @@ -35,7 +35,7 @@ RadialParaCrystalBuilder::RadialParaCrystalBuilder() init_parameters(); } -ISample* RadialParaCrystalBuilder::buildSample() const +MultiLayer* RadialParaCrystalBuilder::buildSample() const { MultiLayer* multi_layer = new MultiLayer(); @@ -86,7 +86,7 @@ Basic2DParaCrystalBuilder::~Basic2DParaCrystalBuilder() delete m_pdf1; } -ISample* Basic2DParaCrystalBuilder::buildSample() const +MultiLayer* Basic2DParaCrystalBuilder::buildSample() const { const IFTDistribution2D* pdf2 = getFTDistribution2D(); MultiLayer* multi_layer = new MultiLayer(); @@ -138,7 +138,7 @@ HexParaCrystalBuilder::HexParaCrystalBuilder() init_parameters(); } -ISample* HexParaCrystalBuilder::buildSample() const +MultiLayer* HexParaCrystalBuilder::buildSample() const { MultiLayer* multi_layer = new MultiLayer(); @@ -184,7 +184,7 @@ void HexParaCrystalBuilder::init_parameters() // RectParaCrystalBuilder // ----------------------------------------------------------------------------- -ISample* RectParaCrystalBuilder::buildSample() const +MultiLayer* RectParaCrystalBuilder::buildSample() const { MultiLayer* multi_layer = new MultiLayer(); @@ -223,7 +223,7 @@ ISample* RectParaCrystalBuilder::buildSample() const // IsGISAXS08BBuilder // ----------------------------------------------------------------------------- -ISample* IsGISAXS08BBuilder::buildSample() const +MultiLayer* IsGISAXS08BBuilder::buildSample() const { MultiLayer* multi_layer = new MultiLayer(); diff --git a/Core/StandardSamples/ParaCrystalBuilder.h b/Core/StandardSamples/ParaCrystalBuilder.h index 98e00ae76ec93a463ff0fa1cce49a2c48564f764..b3f67f73dfbecba4b61c787cf19c00a161761823 100644 --- a/Core/StandardSamples/ParaCrystalBuilder.h +++ b/Core/StandardSamples/ParaCrystalBuilder.h @@ -29,7 +29,7 @@ class BA_CORE_API_ RadialParaCrystalBuilder : public ISampleBuilder { public: RadialParaCrystalBuilder(); - ISample* buildSample() const; + MultiLayer* buildSample() const; protected: void init_parameters(); @@ -52,7 +52,7 @@ class BA_CORE_API_ Basic2DParaCrystalBuilder : public ISampleBuilder public: Basic2DParaCrystalBuilder(); virtual ~Basic2DParaCrystalBuilder(); - virtual ISample* buildSample() const; + virtual MultiLayer* buildSample() const; private: IFTDistribution2D* m_pdf1; }; @@ -65,7 +65,7 @@ class BA_CORE_API_ HexParaCrystalBuilder : public ISampleBuilder { public: HexParaCrystalBuilder(); - virtual ISample* buildSample() const; + virtual MultiLayer* buildSample() const; protected: virtual void init_parameters(); @@ -87,7 +87,7 @@ class BA_CORE_API_ RectParaCrystalBuilder : public ISampleBuilder { public: RectParaCrystalBuilder(){} - virtual ISample* buildSample() const; + virtual MultiLayer* buildSample() const; }; //! @class IsGISAXS08BBuilder @@ -99,7 +99,7 @@ class BA_CORE_API_ IsGISAXS08BBuilder : public ISampleBuilder { public: IsGISAXS08BBuilder(){} - virtual ISample* buildSample() const; + virtual MultiLayer* buildSample() const; }; #endif // PARACRYSTALBUILDER_H diff --git a/Core/StandardSamples/ParticleCompositionBuilder.cpp b/Core/StandardSamples/ParticleCompositionBuilder.cpp index eabec7e094313516bda59cbfb53096fce187ddb0..2bb72a0425355837fcc7d5e2b6d00241c32a7b2e 100644 --- a/Core/StandardSamples/ParticleCompositionBuilder.cpp +++ b/Core/StandardSamples/ParticleCompositionBuilder.cpp @@ -27,7 +27,7 @@ // --- ParticleCompositionBuilder --- -ISample* ParticleCompositionBuilder::buildSample() const +MultiLayer* ParticleCompositionBuilder::buildSample() const { MultiLayer* multi_layer = new MultiLayer(); diff --git a/Core/StandardSamples/ParticleCompositionBuilder.h b/Core/StandardSamples/ParticleCompositionBuilder.h index 89f93defdd0d092b60c758b1128c4d920e5102ff..0b0ece8d306dceef1b9fb50fbd091286cf41136d 100644 --- a/Core/StandardSamples/ParticleCompositionBuilder.h +++ b/Core/StandardSamples/ParticleCompositionBuilder.h @@ -26,8 +26,7 @@ class BA_CORE_API_ ParticleCompositionBuilder : public ISampleBuilder { public: ParticleCompositionBuilder(){} - ISample *buildSample() const; - + MultiLayer *buildSample() const; }; #endif // PARTICLECOMPOSITIONBUILDER_H diff --git a/Core/StandardSamples/ParticleDistributionsBuilder.cpp b/Core/StandardSamples/ParticleDistributionsBuilder.cpp index 94388e82805b06ee2869b0c5ac45a4273a2e9857..a1a69cee833170317ff91c5ad917bcb2723b2963 100644 --- a/Core/StandardSamples/ParticleDistributionsBuilder.cpp +++ b/Core/StandardSamples/ParticleDistributionsBuilder.cpp @@ -43,9 +43,9 @@ void CylindersWithSizeDistributionBuilder::init_parameters() } -ISample *CylindersWithSizeDistributionBuilder::buildSample() const +MultiLayer* CylindersWithSizeDistributionBuilder::buildSample() const { - MultiLayer *multi_layer = new MultiLayer(); + MultiLayer* multi_layer = new MultiLayer(); HomogeneousMaterial air_material("Air", 0.0, 0.0); HomogeneousMaterial particle_material("Particle", 6e-4, 2e-8); @@ -102,9 +102,9 @@ void TwoTypesCylindersDistributionBuilder::init_parameters() } -ISample *TwoTypesCylindersDistributionBuilder::buildSample() const +MultiLayer* TwoTypesCylindersDistributionBuilder::buildSample() const { - MultiLayer *multi_layer = new MultiLayer(); + MultiLayer* multi_layer = new MultiLayer(); HomogeneousMaterial air_material("Air", 0.0, 0.0); HomogeneousMaterial particle_material("Particle", 6e-4, 2e-8); diff --git a/Core/StandardSamples/ParticleDistributionsBuilder.h b/Core/StandardSamples/ParticleDistributionsBuilder.h index c82392e38bbcb376d2439c3a17bd94e15cb47f45..04838b95b42022c5b0fcf163f17b90691d839c76 100644 --- a/Core/StandardSamples/ParticleDistributionsBuilder.h +++ b/Core/StandardSamples/ParticleDistributionsBuilder.h @@ -18,15 +18,14 @@ #include "ISampleBuilder.h" -//! @class CylindersWithSizeDistributionBuilder +//! Cylinders in BA with size distributions (IsGISAXS example #3, part II). //! @ingroup standard_samples -//! @brief Cylinders in BA with size distributions (IsGISAXS example #3, part II) class CylindersWithSizeDistributionBuilder : public ISampleBuilder { public: CylindersWithSizeDistributionBuilder(); - ISample *buildSample() const; + MultiLayer* buildSample() const; protected: void init_parameters(); @@ -37,16 +36,14 @@ private: }; -//! @class TwoTypesCylindersDistributionBuilder +//! Builds mixture of cylinder particles with different size distribution (IsGISAXS example #2) //! @ingroup standard_samples -//! @brief Builds sample: mixture cylinder particles with different size -//! distribution (IsGISAXS example #2) class BA_CORE_API_ TwoTypesCylindersDistributionBuilder : public ISampleBuilder { public: TwoTypesCylindersDistributionBuilder(); - ISample *buildSample() const; + MultiLayer* buildSample() const; protected: void init_parameters(); @@ -60,5 +57,4 @@ private: double m_sigma2_ratio; }; - #endif // PARTICLEDISTRIBUTIONSBUILDER_H diff --git a/Core/StandardSamples/ParticleInTheAirBuilder.cpp b/Core/StandardSamples/ParticleInTheAirBuilder.cpp index 8731f0e74e2b0e87b4f64e47104aaf7c9fb1a8d6..d44b4fa95bc3d9084d0101e39876035306d5d49c 100644 --- a/Core/StandardSamples/ParticleInTheAirBuilder.cpp +++ b/Core/StandardSamples/ParticleInTheAirBuilder.cpp @@ -22,7 +22,7 @@ #include "ParticleLayout.h" #include "RealParameter.h" -ISample* ParticleInTheAirBuilder::buildSample() const +MultiLayer* ParticleInTheAirBuilder::buildSample() const { const IFormFactor* form_factor = getFormFactor(); if(!form_factor) diff --git a/Core/StandardSamples/ParticleInTheAirBuilder.h b/Core/StandardSamples/ParticleInTheAirBuilder.h index 217e910f317d4af8810da7210528d62d0c524e4a..bbe4943fce8430f61f3db038f5d66c8f80d54362 100644 --- a/Core/StandardSamples/ParticleInTheAirBuilder.h +++ b/Core/StandardSamples/ParticleInTheAirBuilder.h @@ -29,7 +29,7 @@ class BA_CORE_API_ ParticleInTheAirBuilder : public ISampleBuilder public: ParticleInTheAirBuilder() {} virtual ~ParticleInTheAirBuilder() {} - virtual ISample* buildSample() const; + virtual MultiLayer* buildSample() const; }; #endif // PARTICLEINTHEAIRBUILDER_H diff --git a/Core/StandardSamples/RipplesBuilder.cpp b/Core/StandardSamples/RipplesBuilder.cpp index f2b67da61cd096aabab8cb1f3a5df3d5d1d4a361..3f4c669187ea64ac9fa12a5e5f63032be5ab90b3 100644 --- a/Core/StandardSamples/RipplesBuilder.cpp +++ b/Core/StandardSamples/RipplesBuilder.cpp @@ -44,7 +44,7 @@ void CosineRippleBuilder::init_parameters() registerParameter("interf_width", &m_interf_width).setUnit("nm").setNonnegative(); } -ISample* CosineRippleBuilder::buildSample() const +MultiLayer* CosineRippleBuilder::buildSample() const { MultiLayer* p_multi_layer = new MultiLayer(); @@ -98,7 +98,7 @@ void TriangularRippleBuilder::init_parameters() registerParameter("interf_width", &m_interf_width).setUnit("nm").setNonnegative(); } -ISample* TriangularRippleBuilder::buildSample() const +MultiLayer* TriangularRippleBuilder::buildSample() const { MultiLayer* p_multi_layer = new MultiLayer(); diff --git a/Core/StandardSamples/RipplesBuilder.h b/Core/StandardSamples/RipplesBuilder.h index 61f51158a8a4b2bf274a56e4175f95a2b2d6954b..72f5a309abe96c9de2d1b906343e1bab98b635cf 100644 --- a/Core/StandardSamples/RipplesBuilder.h +++ b/Core/StandardSamples/RipplesBuilder.h @@ -26,7 +26,7 @@ class BA_CORE_API_ CosineRippleBuilder : public ISampleBuilder { public: CosineRippleBuilder(); - ISample* buildSample() const; + MultiLayer* buildSample() const; protected: void init_parameters(); @@ -50,7 +50,7 @@ class BA_CORE_API_ TriangularRippleBuilder : public ISampleBuilder { public: TriangularRippleBuilder(); - ISample* buildSample() const; + MultiLayer* buildSample() const; protected: void init_parameters(); diff --git a/Core/StandardSamples/RotatedPyramidsBuilder.cpp b/Core/StandardSamples/RotatedPyramidsBuilder.cpp index 894f104e87ec19cc311d7bfff33e255cbd45165b..7058d15611428e5bc13e6e0c24df1291d351c75c 100644 --- a/Core/StandardSamples/RotatedPyramidsBuilder.cpp +++ b/Core/StandardSamples/RotatedPyramidsBuilder.cpp @@ -40,7 +40,7 @@ void RotatedPyramidsBuilder::init_parameters() registerParameter("zangle", &m_zangle).setUnit("rad"); } -ISample* RotatedPyramidsBuilder::buildSample() const +MultiLayer* RotatedPyramidsBuilder::buildSample() const { MultiLayer* multi_layer = new MultiLayer(); diff --git a/Core/StandardSamples/RotatedPyramidsBuilder.h b/Core/StandardSamples/RotatedPyramidsBuilder.h index 46216cb99ad6b657da99d47da9785060d043529e..186b734b9de7d3959399ce950e2f1cf2f041dae7 100644 --- a/Core/StandardSamples/RotatedPyramidsBuilder.h +++ b/Core/StandardSamples/RotatedPyramidsBuilder.h @@ -18,16 +18,14 @@ #include "ISampleBuilder.h" -//! @class RotatedPyramidsBuilder +//! Builds sample: Pyramids, rotated pyramids on top of substrate (IsGISAXS example #9) //! @ingroup standard_samples -//! @brief Builds sample: Pyramids, rotated pyramids on top of substrate -//!(IsGISAXS example #9) class BA_CORE_API_ RotatedPyramidsBuilder : public ISampleBuilder { public: RotatedPyramidsBuilder(); - ISample *buildSample() const; + MultiLayer* buildSample() const; protected: void init_parameters(); @@ -39,5 +37,4 @@ private: double m_zangle; }; - #endif // ROTATEDPYRAMIDSBUILDER_H diff --git a/Core/StandardSamples/SampleBuilderFactory.cpp b/Core/StandardSamples/SampleBuilderFactory.cpp index 72b3660f5a38c0477929b7758ec05b405c6218a2..690c4802aad2831860bf20106b7a917e274978b1 100644 --- a/Core/StandardSamples/SampleBuilderFactory.cpp +++ b/Core/StandardSamples/SampleBuilderFactory.cpp @@ -229,7 +229,7 @@ SampleBuilderFactory::SampleBuilderFactory() //! Retrieves a SampleBuilder from the registry, does the build, and returns the result. -ISample *SampleBuilderFactory::createSample(const std::string& name) +MultiLayer* SampleBuilderFactory::createSample(const std::string& name) { return createItem(name)->buildSample(); } diff --git a/Core/StandardSamples/SampleBuilderFactory.h b/Core/StandardSamples/SampleBuilderFactory.h index e925c25aa9e77cc926a9108f8b87f55f8f5c6f62..42e37861939270cd4a6e37c55e9ce42268abfc9a 100644 --- a/Core/StandardSamples/SampleBuilderFactory.h +++ b/Core/StandardSamples/SampleBuilderFactory.h @@ -19,7 +19,7 @@ #include "IFactory.h" #include "ISampleBuilder.h" -class ISample; +class MultiLayer; //! @class SampleBuilderFactory //! @ingroup standard_samples @@ -29,7 +29,7 @@ class BA_CORE_API_ SampleBuilderFactory : public IFactory<std::string, ISampleBu { public: SampleBuilderFactory(); - ISample* createSample(const std::string& name); + MultiLayer* createSample(const std::string& name); }; #endif // SAMPLEBUILDERFACTORY_H diff --git a/Core/StandardSamples/SizeDistributionModelsBuilder.cpp b/Core/StandardSamples/SizeDistributionModelsBuilder.cpp index ea22c233de3815a2dbd2992098fa731c981700d4..a2d98e7d0cab7e12f10135180bdececa0cde31f2 100644 --- a/Core/StandardSamples/SizeDistributionModelsBuilder.cpp +++ b/Core/StandardSamples/SizeDistributionModelsBuilder.cpp @@ -29,7 +29,7 @@ using namespace BornAgain; -ISample* SizeDistributionDAModelBuilder::buildSample() const +MultiLayer* SizeDistributionDAModelBuilder::buildSample() const { MultiLayer* multi_layer = new MultiLayer(); @@ -72,7 +72,7 @@ ISample* SizeDistributionDAModelBuilder::buildSample() const // ---------------------------------------------------------------------------- -ISample* SizeDistributionLMAModelBuilder::buildSample() const +MultiLayer* SizeDistributionLMAModelBuilder::buildSample() const { MultiLayer* multi_layer = new MultiLayer(); @@ -125,7 +125,7 @@ ISample* SizeDistributionLMAModelBuilder::buildSample() const // ---------------------------------------------------------------------------- -ISample* SizeDistributionSSCAModelBuilder::buildSample() const +MultiLayer* SizeDistributionSSCAModelBuilder::buildSample() const { MultiLayer *multi_layer = new MultiLayer(); @@ -171,7 +171,7 @@ ISample* SizeDistributionSSCAModelBuilder::buildSample() const // ---------------------------------------------------------------------------- -ISample* CylindersInSSCABuilder::buildSample() const +MultiLayer* CylindersInSSCABuilder::buildSample() const { MultiLayer* multi_layer = new MultiLayer(); diff --git a/Core/StandardSamples/SizeDistributionModelsBuilder.h b/Core/StandardSamples/SizeDistributionModelsBuilder.h index bbe0dfa34ce6f7a0cabffad96a193ff3cc872d9d..614426770646b08a83bd6c36e06dabd7bfcc430e 100644 --- a/Core/StandardSamples/SizeDistributionModelsBuilder.h +++ b/Core/StandardSamples/SizeDistributionModelsBuilder.h @@ -18,19 +18,17 @@ #include "ISampleBuilder.h" -//! @class SizeDistributionDAModelBuilder +//! Creates the sample demonstrating size distribution model in decoupling approximation. //! @ingroup standard_samples -//! @brief Creates the sample demonstrating size distribution model in decoupling approximation. //! Equivalent of Examples/python/simulation/ex03_InterferenceFunctions/ApproximationDA.py class BA_CORE_API_ SizeDistributionDAModelBuilder : public ISampleBuilder { public: SizeDistributionDAModelBuilder(){} - ISample *buildSample() const; + MultiLayer* buildSample() const; }; -//! @class SizeDistributionLMAModelBuilder //! @ingroup standard_samples //! @brief Creates the sample demonstrating size distribution model in local monodisperse //! approximation. @@ -40,33 +38,28 @@ class BA_CORE_API_ SizeDistributionLMAModelBuilder : public ISampleBuilder { public: SizeDistributionLMAModelBuilder(){} - ISample *buildSample() const; + MultiLayer* buildSample() const; }; -//! @class SizeDistributionSSCAModelBuilder +//! Creates the sample demonstrating size distribution model in size space coupling approximation. //! @ingroup standard_samples -//! @brief Creates the sample demonstrating size distribution model in size space coupling -//! approximation. //! Equivalent of Examples/python/simulation/ex03_InterferenceFunctions/ApproximationSSCA.py class BA_CORE_API_ SizeDistributionSSCAModelBuilder : public ISampleBuilder { public: SizeDistributionSSCAModelBuilder(){} - ISample *buildSample() const; + MultiLayer* buildSample() const; }; -//! @class CylindersInSSCABuilder +//! Builds sample: size spacing correlation approximation (IsGISAXS example #15). //! @ingroup standard_samples -//! @brief Builds sample: size spacing correlation approximation -//! (IsGISAXS example #15) class BA_CORE_API_ CylindersInSSCABuilder : public ISampleBuilder { public: CylindersInSSCABuilder(){} - ISample *buildSample() const; + MultiLayer* buildSample() const; }; - #endif // SIZEDISTRIBUTIONMODELSBUILDER_H diff --git a/Core/StandardSamples/TransformationsBuilder.cpp b/Core/StandardSamples/TransformationsBuilder.cpp index 6b3463aebf9d7d3878b14c2ba911b43a000ceb17..ae224f7bb4d8b93d60642fbe45813147b5fee748 100644 --- a/Core/StandardSamples/TransformationsBuilder.cpp +++ b/Core/StandardSamples/TransformationsBuilder.cpp @@ -23,7 +23,7 @@ #include "RealParameter.h" #include "Units.h" -ISample* TransformBoxBuilder::buildSample() const +MultiLayer* TransformBoxBuilder::buildSample() const { HomogeneousMaterial mAmbience("Air", 0.0, 0.0); HomogeneousMaterial mMiddle("Teflon", 2.900e-6, 6.019e-9); diff --git a/Core/StandardSamples/TransformationsBuilder.h b/Core/StandardSamples/TransformationsBuilder.h index c390e79a870488814eb5b99bd79c09add27213b2..ebdd4c06474e16840adf3f9998b4e41e7f525149 100644 --- a/Core/StandardSamples/TransformationsBuilder.h +++ b/Core/StandardSamples/TransformationsBuilder.h @@ -18,16 +18,14 @@ #include "ISampleBuilder.h" -//! @class TransformBoxBuilder +//! Rotated box in 3 layers system. //! @ingroup standard_samples -//! @brief Rotated box in 3 layers system class BA_CORE_API_ TransformBoxBuilder : public ISampleBuilder { public: TransformBoxBuilder(){} - ISample *buildSample() const; + MultiLayer* buildSample() const; }; - #endif // TRANSFORMATIONSBUILDER_H diff --git a/Core/StandardSamples/TwoDimLatticeBuilder.cpp b/Core/StandardSamples/TwoDimLatticeBuilder.cpp index 14292acb0452f201cb099a7062db1dfd6de10c48..fc4a70777347328f538ee683d1b4d9c8a417d36c 100644 --- a/Core/StandardSamples/TwoDimLatticeBuilder.cpp +++ b/Core/StandardSamples/TwoDimLatticeBuilder.cpp @@ -28,9 +28,9 @@ // ----------------------------------------------------------------------------- // lattice #1: // ----------------------------------------------------------------------------- -ISample *SquareLatticeBuilder::buildSample() const +MultiLayer* SquareLatticeBuilder::buildSample() const { - MultiLayer *multi_layer = new MultiLayer(); + MultiLayer* multi_layer = new MultiLayer(); HomogeneousMaterial particle_material("Particle", 6e-4, 2e-8); HomogeneousMaterial air_material("Air", 0.0, 0.0); @@ -65,9 +65,9 @@ ISample *SquareLatticeBuilder::buildSample() const // ----------------------------------------------------------------------------- // lattice #2: centered // ----------------------------------------------------------------------------- -ISample *CenteredSquareLatticeBuilder::buildSample() const +MultiLayer* CenteredSquareLatticeBuilder::buildSample() const { - MultiLayer *multi_layer = new MultiLayer(); + MultiLayer* multi_layer = new MultiLayer(); HomogeneousMaterial particle_material("Particle", 6e-4, 2e-8); HomogeneousMaterial air_material("Air", 0.0, 0.0); @@ -107,9 +107,9 @@ ISample *CenteredSquareLatticeBuilder::buildSample() const // ----------------------------------------------------------------------------- // lattice #3: rotated // ----------------------------------------------------------------------------- -ISample *RotatedSquareLatticeBuilder::buildSample() const +MultiLayer* RotatedSquareLatticeBuilder::buildSample() const { - MultiLayer *multi_layer = new MultiLayer(); + MultiLayer* multi_layer = new MultiLayer(); HomogeneousMaterial particle_material("Particle", 6e-4, 2e-8); HomogeneousMaterial air_material("Air", 0.0, 0.0); diff --git a/Core/StandardSamples/TwoDimLatticeBuilder.h b/Core/StandardSamples/TwoDimLatticeBuilder.h index 7fb6cff4b3b2e3c34d76bbe2ade1d66ca8f17439..a3e3aa82bf472edd124edc3dc6bb00b6094c1c9b 100644 --- a/Core/StandardSamples/TwoDimLatticeBuilder.h +++ b/Core/StandardSamples/TwoDimLatticeBuilder.h @@ -18,38 +18,36 @@ #include "ISampleBuilder.h" -//! @class SquareLatticeBuilder +//! Builds sample: 2D lattice with different disorder (IsGISAXS example #6). //! @ingroup standard_samples -//! @brief Builds sample: 2D lattice with different disorder (IsGISAXS example #6) class BA_CORE_API_ SquareLatticeBuilder : public ISampleBuilder { public: SquareLatticeBuilder(){} - ISample *buildSample() const; + MultiLayer* buildSample() const; }; -//! @class CenteredSquareLatticeBuilder +//! Builds sample: 2D lattice with different disorder (IsGISAXS example #6). //! @ingroup standard_samples -//! @brief Builds sample: 2D lattice with different disorder (IsGISAXS example #6) class BA_CORE_API_ CenteredSquareLatticeBuilder : public ISampleBuilder { public: CenteredSquareLatticeBuilder(){} - ISample *buildSample() const; + MultiLayer* buildSample() const; }; -//! @class RotatedSquareLatticeBuilder + +//! Builds sample: 2D lattice with different disorder (IsGISAXS example #6). //! @ingroup standard_samples -//! @brief Builds sample: 2D lattice with different disorder (IsGISAXS example #6) class BA_CORE_API_ RotatedSquareLatticeBuilder : public ISampleBuilder { public: RotatedSquareLatticeBuilder(){} - ISample *buildSample() const; + MultiLayer* buildSample() const; }; #endif // TWODIMLATTICEBUILDER_H diff --git a/GUI/coregui/Models/ApplicationModels.cpp b/GUI/coregui/Models/ApplicationModels.cpp index 7a476896ed650caa01dde3845243a310e5e83917..3e5d75f8a73fe2ae246304a905c4e73554353844 100644 --- a/GUI/coregui/Models/ApplicationModels.cpp +++ b/GUI/coregui/Models/ApplicationModels.cpp @@ -25,6 +25,7 @@ #include "JobModel.h" #include "MaterialModel.h" #include "MaterialSvc.h" +#include "MultiLayer.h" #include "RealDataModel.h" #include "SampleBuilderFactory.h" #include "SampleModel.h" diff --git a/GUI/coregui/Models/GUIExamplesFactory.cpp b/GUI/coregui/Models/GUIExamplesFactory.cpp index 443bdc9f191da472c642e6de6f69fa3325aba5a8..6c09a9cda17d232f3e65d3d4efe3cdd1a98d1414 100644 --- a/GUI/coregui/Models/GUIExamplesFactory.cpp +++ b/GUI/coregui/Models/GUIExamplesFactory.cpp @@ -16,7 +16,7 @@ #include "GUIExamplesFactory.h" #include "GUIObjectBuilder.h" -#include "ISample.h" +#include "MultiLayer.h" #include "SampleBuilderFactory.h" #include <memory> diff --git a/GUI/coregui/Models/GUIObjectBuilder.cpp b/GUI/coregui/Models/GUIObjectBuilder.cpp index 2b732792686fb44217b6f89fbc3da71e985bed4b..f2d3e9a988a35a294000ea85f354d8fe8dcbd0b4 100644 --- a/GUI/coregui/Models/GUIObjectBuilder.cpp +++ b/GUI/coregui/Models/GUIObjectBuilder.cpp @@ -28,6 +28,7 @@ #include "GUIHelpers.h" #include "IMaterial.h" #include "InstrumentModel.h" +#include "ISampleBuilder.h" #include "Layer.h" #include "LayerItem.h" #include "MaterialModel.h" diff --git a/GUI/coregui/Views/MaskWidgets/MaskEditor.cpp b/GUI/coregui/Views/MaskWidgets/MaskEditor.cpp index b191129f78a28ad6d2d5ad6a308988cd68107dfe..27d1a6feb3bbf008245aafa54cf887ba9faba8e0 100644 --- a/GUI/coregui/Views/MaskWidgets/MaskEditor.cpp +++ b/GUI/coregui/Views/MaskWidgets/MaskEditor.cpp @@ -17,7 +17,6 @@ #include "MaskEditor.h" #include "GISASSimulation.h" #include "GUIHelpers.h" -#include "ISample.h" #include "IntensityDataItem.h" #include "MaskEditorActions.h" #include "MaskEditorCanvas.h" @@ -26,6 +25,7 @@ #include "MaskGraphicsScene.h" #include "MaskGraphicsView.h" #include "MaskItems.h" +#include "MultiLayer.h" #include "SampleBuilderFactory.h" #include "SessionModel.h" #include "SimulationFactory.h" @@ -94,7 +94,8 @@ void MaskEditor::init_test_model() const std::unique_ptr<GISASSimulation> simulation(simRegistry.createItem("BasicGISAS")); SampleBuilderFactory sampleFactory; - const std::unique_ptr<ISample> sample(sampleFactory.createSample("CylindersAndPrismsBuilder")); + const std::unique_ptr<MultiLayer> sample( + sampleFactory.createSample("CylindersAndPrismsBuilder")); simulation->setSample(*sample.get()); simulation->runSimulation(); diff --git a/Tests/Functional/Fit/IMinimizerTest.cpp b/Tests/Functional/Fit/IMinimizerTest.cpp index 7ea643125eea1cd21928a3bbe556b1bd9d92ee92..31532425800f46313816554af7cf61e28b5024ba 100644 --- a/Tests/Functional/Fit/IMinimizerTest.cpp +++ b/Tests/Functional/Fit/IMinimizerTest.cpp @@ -16,7 +16,7 @@ #include "IMinimizerTest.h" #include "FitSuite.h" #include "GISASSimulation.h" -#include "ISample.h" +#include "MultiLayer.h" #include "MinimizerFactory.h" #include "MinimizerOptions.h" #include "SampleBuilderFactory.h" @@ -48,7 +48,7 @@ IMinimizerTest::IMinimizerTest(const std::string& minimizer_name, bool IMinimizerTest::runTest() { - std::unique_ptr<ISample> sample(createSample()); + std::unique_ptr<MultiLayer> sample(createSample()); for (size_t i = 0; i < m_parameters.size(); ++i) sample->setParameterValue(m_parameters[i].m_name, m_parameters[i].m_real_value); @@ -97,10 +97,10 @@ std::unique_ptr<FitSuite> IMinimizerTest::createFitSuite() return result; } -std::unique_ptr<ISample> IMinimizerTest::createSample() +std::unique_ptr<MultiLayer> IMinimizerTest::createSample() { SampleBuilderFactory builderFactory; - std::unique_ptr<ISample> result(builderFactory.createSample(m_sample_builder_name)); + std::unique_ptr<MultiLayer> result(builderFactory.createSample(m_sample_builder_name)); return result; } diff --git a/Tests/Functional/Fit/IMinimizerTest.h b/Tests/Functional/Fit/IMinimizerTest.h index 853d498af7f1a7c9bdfa6412cb6d72fb189eaae4..95ec49cb61ac890a2710ce0ced9b974d68411ee1 100644 --- a/Tests/Functional/Fit/IMinimizerTest.h +++ b/Tests/Functional/Fit/IMinimizerTest.h @@ -21,7 +21,7 @@ #include <memory> class FitSuite; -class ISample; +class MultiLayer; class GISASSimulation; //! @class IMinimizerTest @@ -32,7 +32,7 @@ class IMinimizerTest : public IFunctionalTest { public: IMinimizerTest(const std::string &minimizer_name, - const std::string &minimizer_algorithm = std::string()); + const std::string &minimizer_algorithm = std::string()); virtual ~IMinimizerTest(){} bool runTest() final; @@ -51,7 +51,7 @@ public: protected: virtual std::unique_ptr<FitSuite> createFitSuite(); - virtual std::unique_ptr<ISample> createSample(); + virtual std::unique_ptr<MultiLayer> createSample(); virtual std::unique_ptr<GISASSimulation> createSimulation(); virtual std::unique_ptr<OutputData<double>> createOutputData(const GISASSimulation* simulation); diff --git a/Tests/UnitTests/Core/2/SpecularSimulationTest.h b/Tests/UnitTests/Core/2/SpecularSimulationTest.h index ec32ff18457749978f4a8b147b5437a3f1d3d18d..516d20c13b043301af718b342315520d055bbd2a 100644 --- a/Tests/UnitTests/Core/2/SpecularSimulationTest.h +++ b/Tests/UnitTests/Core/2/SpecularSimulationTest.h @@ -14,19 +14,10 @@ class SpecularSimulationTest : public ::testing::Test { protected: SpecularSimulationTest(); - - class SampleBuilder : public ISampleBuilder - { - public: - virtual ISample *buildSample() const { return new Layer(); } - }; - - std::shared_ptr<class ISampleBuilder> sample_builder; MultiLayer multilayer; }; SpecularSimulationTest::SpecularSimulationTest() - : sample_builder(new SampleBuilder) { HomogeneousMaterial mat0("ambience", 0.0, 0.0); HomogeneousMaterial mat1("PartA", 5e-6, 0.0); @@ -127,8 +118,6 @@ TEST_F(SpecularSimulationTest, SimulationClone) EXPECT_EQ(size_t(10), clone->getScalarR(0).size()); EXPECT_EQ(size_t(10), clone->getScalarT(0).size()); EXPECT_EQ(size_t(10), clone->getScalarKz(0).size()); - } - #endif // SPECULARSIMULATIONTEST_H diff --git a/Tests/UnitTests/Core/4/GISASSimulationTest.h b/Tests/UnitTests/Core/4/GISASSimulationTest.h index c1d151487ac17716c0065a2188dbdecf5ee31fe3..3913470f45d1d74164a02a56fc36f9bb79a666d2 100644 --- a/Tests/UnitTests/Core/4/GISASSimulationTest.h +++ b/Tests/UnitTests/Core/4/GISASSimulationTest.h @@ -4,28 +4,18 @@ #include "GISASSimulation.h" #include "OutputData.h" #include "Beam.h" -#include "MultiLayer.h" +#include "Layer.h" #include "ISampleBuilder.h" #include "BornAgainNamespace.h" #include "Layer.h" #include <memory> #include <cmath> - class GISASSimulationTest : public ::testing::Test { protected: GISASSimulationTest(); virtual ~GISASSimulationTest(); - - class SampleBuilder : public ISampleBuilder - { - public: - virtual ISample *buildSample() const { return new Layer(); } - }; - - std::shared_ptr<class ISampleBuilder> sample_builder; - GISASSimulation emptySimulation; GISASSimulation constructedSimulation; OutputData<double> test_data; @@ -33,7 +23,6 @@ class GISASSimulationTest : public ::testing::Test GISASSimulationTest::GISASSimulationTest() - : sample_builder(new SampleBuilder) { test_data.addAxis(BornAgain::PHI_AXIS_NAME, 10, 0., 10.); test_data.addAxis("theta_f", 20, 0., 20.); @@ -51,7 +40,6 @@ TEST_F(GISASSimulationTest, SimulationInitialState) EXPECT_EQ( size_t(1), emptySimulation.getOutputData()->getAllocatedSize()); EXPECT_EQ( size_t(0), emptySimulation.getOutputData()->getRank()); EXPECT_TRUE(emptySimulation.getOutputData()->getRank() == emptySimulation.getInstrument().getDetectorDimension() ); - EXPECT_EQ(nullptr, emptySimulation.getSampleBuilder().get()); } @@ -66,17 +54,7 @@ TEST_F(GISASSimulationTest, SimulationConstruction) Layer layer; ml.addLayer(layer); constructedSimulation.setSample(ml); - EXPECT_EQ( size_t(1), dynamic_cast<MultiLayer *>(constructedSimulation.getSample())->getNumberOfLayers()); - constructedSimulation.setSampleBuilder(sample_builder); - EXPECT_EQ( nullptr, constructedSimulation.getSample()); - EXPECT_EQ( sample_builder.get(), constructedSimulation.getSampleBuilder().get()); - - constructedSimulation.prepareSimulation(); - - EXPECT_TRUE( nullptr == constructedSimulation.getSample()); - std::unique_ptr<ISample> sample(constructedSimulation.getSampleBuilder()->buildSample()); - EXPECT_EQ( std::string("Layer"), sample->getName()); - EXPECT_EQ( dynamic_cast<Layer *>(sample.get())->getThickness(), 0.); + EXPECT_EQ( size_t(1), dynamic_cast<MultiLayer*>(constructedSimulation.getSample())->getNumberOfLayers()); } TEST_F(GISASSimulationTest, SimulationInitialStateOfClone) @@ -96,7 +74,6 @@ TEST_F(GISASSimulationTest, SimulationClone) GISASSimulation *originalSimulation = new GISASSimulation(); originalSimulation->setBeamIntensity(10); originalSimulation->setDetectorParameters(test_data); - originalSimulation->setSampleBuilder(sample_builder); GISASSimulation *clonedSimulation = originalSimulation->clone(); delete originalSimulation; diff --git a/auto/Wrap/libBornAgainCore.py b/auto/Wrap/libBornAgainCore.py index a16e461350c4f8d2427ba663e9bfc9055b9334b3..2a5ed6542e8b44b3eb535a27a8213e5d60fb7e0f 100644 --- a/auto/Wrap/libBornAgainCore.py +++ b/auto/Wrap/libBornAgainCore.py @@ -6577,7 +6577,7 @@ class ISampleBuilder(IParameterized): def buildSample(self): """ - buildSample(ISampleBuilder self) -> ISample + buildSample(ISampleBuilder self) -> MultiLayer virtual ISample* ISampleBuilder::buildSample() const =0 @@ -14884,7 +14884,7 @@ class Simulation(ICloneable, IParameterized): def setSample(self, sample): """ - setSample(Simulation self, ISample sample) + setSample(Simulation self, MultiLayer sample) void Simulation::setSample(const ISample &sample) @@ -14898,7 +14898,7 @@ class Simulation(ICloneable, IParameterized): def getSample(self): """ - getSample(Simulation self) -> ISample + getSample(Simulation self) -> MultiLayer ISample* Simulation::getSample() const @@ -15188,7 +15188,7 @@ class GISASSimulation(Simulation): def __init__(self, *args): """ __init__(GISASSimulation self) -> GISASSimulation - __init__(GISASSimulation self, ISample p_sample) -> GISASSimulation + __init__(GISASSimulation self, MultiLayer p_sample) -> GISASSimulation __init__(GISASSimulation self, std::shared_ptr< ISampleBuilder > p_sample_builder) -> GISASSimulation GISASSimulation::GISASSimulation(std::shared_ptr< ISampleBuilder > p_sample_builder) @@ -21221,7 +21221,7 @@ class OffSpecSimulation(Simulation): def __init__(self, *args): """ __init__(OffSpecSimulation self) -> OffSpecSimulation - __init__(OffSpecSimulation self, ISample p_sample) -> OffSpecSimulation + __init__(OffSpecSimulation self, MultiLayer p_sample) -> OffSpecSimulation __init__(OffSpecSimulation self, std::shared_ptr< ISampleBuilder > p_sample_builder) -> OffSpecSimulation OffSpecSimulation::OffSpecSimulation(std::shared_ptr< class ISampleBuilder > p_sample_builder) diff --git a/auto/Wrap/libBornAgainCore_wrap.cpp b/auto/Wrap/libBornAgainCore_wrap.cpp index c527045af960e5cee2c894ea74683459a8988511..e9448bf9f409d8c3e8ae578d2dfb5e9940acc2d4 100644 --- a/auto/Wrap/libBornAgainCore_wrap.cpp +++ b/auto/Wrap/libBornAgainCore_wrap.cpp @@ -7659,12 +7659,12 @@ void SwigDirector_ISampleBuilder::print(std::ostream &ostr) const { } -ISample *SwigDirector_ISampleBuilder::buildSample() const { +MultiLayer *SwigDirector_ISampleBuilder::buildSample() const { void *swig_argp ; int swig_res ; swig_owntype own ; - ISample *c_result; + MultiLayer *c_result; if (!swig_get_self()) { Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call ISampleBuilder.__init__."); } @@ -7682,13 +7682,13 @@ ISample *SwigDirector_ISampleBuilder::buildSample() const { Swig::DirectorMethodException::raise("Error detected when calling 'ISampleBuilder.buildSample'"); } } - swig_res = SWIG_ConvertPtrAndOwn(result, &swig_argp, SWIGTYPE_p_ISample, 0 | SWIG_POINTER_DISOWN, &own); + swig_res = SWIG_ConvertPtrAndOwn(result, &swig_argp, SWIGTYPE_p_MultiLayer, 0 | SWIG_POINTER_DISOWN, &own); if (!SWIG_IsOK(swig_res)) { - Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError(swig_res)), "in output value of type '""ISample *""'"); + Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError(swig_res)), "in output value of type '""MultiLayer *""'"); } - c_result = reinterpret_cast< ISample * >(swig_argp); + c_result = reinterpret_cast< MultiLayer * >(swig_argp); swig_acquire_ownership_obj(SWIG_as_voidptr(c_result), own /* & TODO: SWIG_POINTER_OWN */); - return (ISample *) c_result; + return (MultiLayer *) c_result; } @@ -43001,7 +43001,7 @@ SWIGINTERN PyObject *_wrap_ISampleBuilder_buildSample(PyObject *SWIGUNUSEDPARM(s PyObject * obj0 = 0 ; Swig::Director *director = 0; bool upcall = false; - ISample *result = 0 ; + MultiLayer *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:ISampleBuilder_buildSample",&obj0)) SWIG_fail; { @@ -43025,18 +43025,12 @@ SWIGINTERN PyObject *_wrap_ISampleBuilder_buildSample(PyObject *SWIGUNUSEDPARM(s if (upcall) { Swig::DirectorPureVirtualException::raise("ISampleBuilder::buildSample"); } else { - result = (ISample *)((ISampleBuilder const *)arg1)->buildSample(); + result = (MultiLayer *)((ISampleBuilder const *)arg1)->buildSample(); } } catch (Swig::DirectorException&) { SWIG_fail; } - director = SWIG_DIRECTOR_CAST(result); - if (director) { - resultobj = director->swig_get_self(); - Py_INCREF(resultobj); - } else { - resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ISample, 0 | 0 ); - } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_MultiLayer, 0 | 0 ); if (director) { SWIG_AcquirePtr(resultobj, director->swig_release_ownership(SWIG_as_voidptr(result))); } @@ -68281,7 +68275,7 @@ fail: SWIGINTERN PyObject *_wrap_Simulation_setSample(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; Simulation *arg1 = (Simulation *) 0 ; - ISample *arg2 = 0 ; + MultiLayer *arg2 = 0 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 = 0 ; @@ -68295,15 +68289,15 @@ SWIGINTERN PyObject *_wrap_Simulation_setSample(PyObject *SWIGUNUSEDPARM(self), SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Simulation_setSample" "', argument " "1"" of type '" "Simulation *""'"); } arg1 = reinterpret_cast< Simulation * >(argp1); - res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_ISample, 0 | 0); + res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_MultiLayer, 0 | 0); if (!SWIG_IsOK(res2)) { - SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Simulation_setSample" "', argument " "2"" of type '" "ISample const &""'"); + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Simulation_setSample" "', argument " "2"" of type '" "MultiLayer const &""'"); } if (!argp2) { - SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Simulation_setSample" "', argument " "2"" of type '" "ISample const &""'"); + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Simulation_setSample" "', argument " "2"" of type '" "MultiLayer const &""'"); } - arg2 = reinterpret_cast< ISample * >(argp2); - (arg1)->setSample((ISample const &)*arg2); + arg2 = reinterpret_cast< MultiLayer * >(argp2); + (arg1)->setSample((MultiLayer const &)*arg2); resultobj = SWIG_Py_Void(); return resultobj; fail: @@ -68317,8 +68311,7 @@ SWIGINTERN PyObject *_wrap_Simulation_getSample(PyObject *SWIGUNUSEDPARM(self), void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; - Swig::Director *director = 0; - ISample *result = 0 ; + MultiLayer *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:Simulation_getSample",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Simulation, 0 | 0 ); @@ -68326,14 +68319,8 @@ SWIGINTERN PyObject *_wrap_Simulation_getSample(PyObject *SWIGUNUSEDPARM(self), SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Simulation_getSample" "', argument " "1"" of type '" "Simulation const *""'"); } arg1 = reinterpret_cast< Simulation * >(argp1); - result = (ISample *)((Simulation const *)arg1)->getSample(); - director = SWIG_DIRECTOR_CAST(result); - if (director) { - resultobj = director->swig_get_self(); - Py_INCREF(resultobj); - } else { - resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ISample, 0 | 0 ); - } + result = (MultiLayer *)((Simulation const *)arg1)->getSample(); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_MultiLayer, 0 | 0 ); return resultobj; fail: return NULL; @@ -69486,22 +69473,22 @@ fail: SWIGINTERN PyObject *_wrap_new_GISASSimulation__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; - ISample *arg1 = 0 ; + MultiLayer *arg1 = 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; GISASSimulation *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:new_GISASSimulation",&obj0)) SWIG_fail; - res1 = SWIG_ConvertPtr(obj0, &argp1, SWIGTYPE_p_ISample, 0 | 0); + res1 = SWIG_ConvertPtr(obj0, &argp1, SWIGTYPE_p_MultiLayer, 0 | 0); if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_GISASSimulation" "', argument " "1"" of type '" "ISample const &""'"); + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_GISASSimulation" "', argument " "1"" of type '" "MultiLayer const &""'"); } if (!argp1) { - SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_GISASSimulation" "', argument " "1"" of type '" "ISample const &""'"); + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_GISASSimulation" "', argument " "1"" of type '" "MultiLayer const &""'"); } - arg1 = reinterpret_cast< ISample * >(argp1); - result = (GISASSimulation *)new GISASSimulation((ISample const &)*arg1); + arg1 = reinterpret_cast< MultiLayer * >(argp1); + result = (GISASSimulation *)new GISASSimulation((MultiLayer const &)*arg1); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_GISASSimulation, SWIG_POINTER_NEW | 0 ); return resultobj; fail: @@ -69552,7 +69539,7 @@ SWIGINTERN PyObject *_wrap_new_GISASSimulation(PyObject *self, PyObject *args) { } if (argc == 1) { int _v; - int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_ISample, 0); + int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_MultiLayer, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_new_GISASSimulation__SWIG_1(self, args); @@ -69571,7 +69558,7 @@ fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'new_GISASSimulation'.\n" " Possible C/C++ prototypes are:\n" " GISASSimulation::GISASSimulation()\n" - " GISASSimulation::GISASSimulation(ISample const &)\n" + " GISASSimulation::GISASSimulation(MultiLayer const &)\n" " GISASSimulation::GISASSimulation(std::shared_ptr< ISampleBuilder >)\n"); return 0; } @@ -88438,22 +88425,22 @@ fail: SWIGINTERN PyObject *_wrap_new_OffSpecSimulation__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; - ISample *arg1 = 0 ; + MultiLayer *arg1 = 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; OffSpecSimulation *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:new_OffSpecSimulation",&obj0)) SWIG_fail; - res1 = SWIG_ConvertPtr(obj0, &argp1, SWIGTYPE_p_ISample, 0 | 0); + res1 = SWIG_ConvertPtr(obj0, &argp1, SWIGTYPE_p_MultiLayer, 0 | 0); if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_OffSpecSimulation" "', argument " "1"" of type '" "ISample const &""'"); + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_OffSpecSimulation" "', argument " "1"" of type '" "MultiLayer const &""'"); } if (!argp1) { - SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_OffSpecSimulation" "', argument " "1"" of type '" "ISample const &""'"); + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_OffSpecSimulation" "', argument " "1"" of type '" "MultiLayer const &""'"); } - arg1 = reinterpret_cast< ISample * >(argp1); - result = (OffSpecSimulation *)new OffSpecSimulation((ISample const &)*arg1); + arg1 = reinterpret_cast< MultiLayer * >(argp1); + result = (OffSpecSimulation *)new OffSpecSimulation((MultiLayer const &)*arg1); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_OffSpecSimulation, SWIG_POINTER_NEW | 0 ); return resultobj; fail: @@ -88504,7 +88491,7 @@ SWIGINTERN PyObject *_wrap_new_OffSpecSimulation(PyObject *self, PyObject *args) } if (argc == 1) { int _v; - int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_ISample, 0); + int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_MultiLayer, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_new_OffSpecSimulation__SWIG_1(self, args); @@ -88523,7 +88510,7 @@ fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'new_OffSpecSimulation'.\n" " Possible C/C++ prototypes are:\n" " OffSpecSimulation::OffSpecSimulation()\n" - " OffSpecSimulation::OffSpecSimulation(ISample const &)\n" + " OffSpecSimulation::OffSpecSimulation(MultiLayer const &)\n" " OffSpecSimulation::OffSpecSimulation(std::shared_ptr< ISampleBuilder >)\n"); return 0; } @@ -103566,7 +103553,7 @@ static PyMethodDef SwigMethods[] = { "\n" ""}, { (char *)"ISampleBuilder_buildSample", _wrap_ISampleBuilder_buildSample, METH_VARARGS, (char *)"\n" - "ISampleBuilder_buildSample(ISampleBuilder self) -> ISample\n" + "ISampleBuilder_buildSample(ISampleBuilder self) -> MultiLayer\n" "\n" "virtual ISample* ISampleBuilder::buildSample() const =0\n" "\n" @@ -107938,7 +107925,7 @@ static PyMethodDef SwigMethods[] = { "\n" ""}, { (char *)"Simulation_setSample", _wrap_Simulation_setSample, METH_VARARGS, (char *)"\n" - "Simulation_setSample(Simulation self, ISample sample)\n" + "Simulation_setSample(Simulation self, MultiLayer sample)\n" "\n" "void Simulation::setSample(const ISample &sample)\n" "\n" @@ -107948,7 +107935,7 @@ static PyMethodDef SwigMethods[] = { "\n" ""}, { (char *)"Simulation_getSample", _wrap_Simulation_getSample, METH_VARARGS, (char *)"\n" - "Simulation_getSample(Simulation self) -> ISample\n" + "Simulation_getSample(Simulation self) -> MultiLayer\n" "\n" "ISample* Simulation::getSample() const\n" "\n" @@ -108114,7 +108101,7 @@ static PyMethodDef SwigMethods[] = { { (char *)"SimulationOptions_swigregister", SimulationOptions_swigregister, METH_VARARGS, NULL}, { (char *)"new_GISASSimulation", _wrap_new_GISASSimulation, METH_VARARGS, (char *)"\n" "GISASSimulation()\n" - "GISASSimulation(ISample p_sample)\n" + "GISASSimulation(MultiLayer p_sample)\n" "new_GISASSimulation(std::shared_ptr< ISampleBuilder > p_sample_builder) -> GISASSimulation\n" "\n" "GISASSimulation::GISASSimulation(std::shared_ptr< ISampleBuilder > p_sample_builder)\n" @@ -111463,7 +111450,7 @@ static PyMethodDef SwigMethods[] = { { (char *)"MultiLayer_swigregister", MultiLayer_swigregister, METH_VARARGS, NULL}, { (char *)"new_OffSpecSimulation", _wrap_new_OffSpecSimulation, METH_VARARGS, (char *)"\n" "OffSpecSimulation()\n" - "OffSpecSimulation(ISample p_sample)\n" + "OffSpecSimulation(MultiLayer p_sample)\n" "new_OffSpecSimulation(std::shared_ptr< ISampleBuilder > p_sample_builder) -> OffSpecSimulation\n" "\n" "OffSpecSimulation::OffSpecSimulation(std::shared_ptr< class ISampleBuilder > p_sample_builder)\n" diff --git a/auto/Wrap/libBornAgainCore_wrap.h b/auto/Wrap/libBornAgainCore_wrap.h index 209b764f52a039da9c157ea1407f1093928d63bb..3ee9c32a58212a4d8f0e69416698e608f3c67aad 100644 --- a/auto/Wrap/libBornAgainCore_wrap.h +++ b/auto/Wrap/libBornAgainCore_wrap.h @@ -247,7 +247,7 @@ public: virtual void printSwigPublic(std::ostream &ostr) const { IParameterized::print(ostr); } - virtual ISample *buildSample() const; + virtual MultiLayer *buildSample() const; /* Internal director utilities */ public: