diff --git a/App/src/DrawHelper.cpp b/App/src/DrawHelper.cpp index d7e618b0f7a9da6f540d9555e09e5bd37deaded6..38afcc969bc2dd3b5790d8d3e63bab4e5cfa6786 100644 --- a/App/src/DrawHelper.cpp +++ b/App/src/DrawHelper.cpp @@ -18,7 +18,6 @@ #include "MultiLayer.h" #include "Utils.h" #include "Lattice.h" -#include "LayerDecorator.h" #include "MesoCrystal.h" #include "Crystal.h" #include "LatticeBasis.h" diff --git a/App/src/StandardSamples.cpp b/App/src/StandardSamples.cpp index 8eeea50a6ca95e5aa44b9d6cbf8190ff2d1d240c..7fade17d8448844987197a0fa06fc5eb9b364c46 100644 --- a/App/src/StandardSamples.cpp +++ b/App/src/StandardSamples.cpp @@ -21,7 +21,6 @@ #include "FormFactors.h" #include "ParticleDecoration.h" #include "InterferenceFunctionNone.h" -#include "LayerDecorator.h" #include "Lattice.h" #include "LatticeBasis.h" #include "Crystal.h" @@ -368,8 +367,9 @@ ISample *StandardSamples::IsGISAXS7_morphology() (new Particle(n_particle, ff10), m10, pos10, 0.5); particle_decoration.addParticleInfo(particle_info10); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - p_multi_layer->addLayer(air_layer_decorator); + air_layer.setDecoration(particle_decoration); + + p_multi_layer->addLayer(air_layer); return p_multi_layer; } @@ -401,9 +401,10 @@ ISample *StandardSamples::IsGISAXS8_2DDL_lattice() (new Particle(n_particle, new FormFactorCylinder (5*Units::nanometer, 5*Units::nanometer))); particle_decoration.addInterferenceFunction(p_interference_function); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - p_multi_layer->addLayer(air_layer_decorator); + air_layer.setDecoration(particle_decoration); + + p_multi_layer->addLayer(air_layer); p_multi_layer->addLayer(substrate_layer); return p_multi_layer; } @@ -436,9 +437,10 @@ ISample *StandardSamples::IsGISAXS8_2DDL_lattice2() (new Particle(n_particle, new FormFactorCylinder (5*Units::nanometer, 5*Units::nanometer))); particle_decoration.addInterferenceFunction(p_interference_function); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - p_multi_layer->addLayer(air_layer_decorator); + air_layer.setDecoration(particle_decoration); + + p_multi_layer->addLayer(air_layer); p_multi_layer->addLayer(substrate_layer); return p_multi_layer; } @@ -465,9 +467,10 @@ ISample *StandardSamples::IsGISAXS10_CylindersParacrystal1D() (5*Units::nanometer, 5*Units::nanometer))); particle_decoration.addInterferenceFunction(p_interference_function); // particle_decoration.setTotalParticleSurfaceDensity(1.0/(20.0*Units::nanometer*20.0*Units::nanometer)); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - p_multi_layer->addLayer(air_layer_decorator); + air_layer.setDecoration(particle_decoration); + + p_multi_layer->addLayer(air_layer); p_multi_layer->addLayer(substrate_layer); return p_multi_layer; } @@ -492,9 +495,10 @@ ISample *StandardSamples::IsGISAXS11_CoreShellParticles() ParticleCoreShell particle(shell_particle, core_particle, core_position); ParticleDecoration particle_decoration(particle.clone()); particle_decoration.addInterferenceFunction(new InterferenceFunctionNone()); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - p_multi_layer->addLayer(air_layer_decorator); + air_layer.setDecoration(particle_decoration); + + p_multi_layer->addLayer(air_layer); return p_multi_layer; } @@ -521,9 +525,10 @@ ISample *StandardSamples::IsGISAXS14_LayeredSpheresOnGradedInterface() (new Particle(n_particle, new FormFactorSphere (5*Units::nanometer, 5.*2.0*Units::nanometer))); particle_decoration.addInterferenceFunction(p_interference_function); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - p_multi_layer->addLayer(air_layer_decorator); + air_layer.setDecoration(particle_decoration); + + p_multi_layer->addLayer(air_layer); p_multi_layer->addLayer(substrate_layer); return p_multi_layer; @@ -562,8 +567,10 @@ ISample *StandardSamples::IsGISAXS15_SSCA() std::cout << "Number of replacements: " << nbr_replacements << std::endl; particle_decoration.addInterferenceFunction(p_interference_function); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - p_multi_layer->addLayer(air_layer_decorator); + + air_layer.setDecoration(particle_decoration); + + p_multi_layer->addLayer(air_layer); return p_multi_layer; } @@ -616,9 +623,10 @@ ISample *StandardSamples::MesoCrystal1() particle_decoration.addParticle(meso.clone(), 0.0, 0.5); particle_decoration.addParticle(meso2.clone(), 0.0, 0.5); particle_decoration.addInterferenceFunction(p_interference_function); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - p_multi_layer->addLayer(air_layer_decorator); + air_layer.setDecoration(particle_decoration); + + p_multi_layer->addLayer(air_layer); p_multi_layer->addLayer(substrate_layer); return p_multi_layer; @@ -683,9 +691,11 @@ ISample *StandardSamples::MesoCrystal2() particle_decoration.addParticle(meso_crystal, 0.2*Units::micrometer); particle_decoration.setTotalParticleSurfaceDensity(surface_density); particle_decoration.addInterferenceFunction(p_interference_function); - LayerDecorator avg_layer_decorator(avg_layer, particle_decoration); + + avg_layer.setDecoration(particle_decoration); + p_multi_layer->addLayer(air_layer); - p_multi_layer->addLayer(avg_layer_decorator); + p_multi_layer->addLayer(avg_layer); p_multi_layer->addLayer(substrate_layer); return p_multi_layer; @@ -714,8 +724,10 @@ ISample *StandardSamples::FormFactor_Box() 5*Units::nanometer))); particle_decoration.addInterferenceFunction (new InterferenceFunctionNone()); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - p_multi_layer->addLayer(air_layer_decorator); + + air_layer.setDecoration(particle_decoration); + + p_multi_layer->addLayer(air_layer); p_multi_layer->addLayer(substrate_layer); return p_multi_layer; } @@ -743,8 +755,10 @@ ISample *StandardSamples::FormFactor_Cone() Units::deg2rad(54.73 )))); particle_decoration.addInterferenceFunction (new InterferenceFunctionNone()); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - p_multi_layer->addLayer(air_layer_decorator); + + air_layer.setDecoration(particle_decoration); + + p_multi_layer->addLayer(air_layer); p_multi_layer->addLayer(substrate_layer); return p_multi_layer; } @@ -771,8 +785,10 @@ ISample *StandardSamples::FormFactor_Sphere() 5*Units::nanometer))); particle_decoration.addInterferenceFunction (new InterferenceFunctionNone()); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - p_multi_layer->addLayer(air_layer_decorator); + + air_layer.setDecoration(particle_decoration); + + p_multi_layer->addLayer(air_layer); p_multi_layer->addLayer(substrate_layer); return p_multi_layer; } @@ -801,8 +817,10 @@ ISample *StandardSamples::FormFactor_Ellipsoid() Units::deg2rad(54.73 )))); particle_decoration.addInterferenceFunction (new InterferenceFunctionNone()); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - p_multi_layer->addLayer(air_layer_decorator); + + air_layer.setDecoration(particle_decoration); + + p_multi_layer->addLayer(air_layer); p_multi_layer->addLayer(substrate_layer); return p_multi_layer; } @@ -829,8 +847,10 @@ ISample *StandardSamples::FormFactor_FullSpheroid() 7*Units::nanometer ))); particle_decoration.addInterferenceFunction (new InterferenceFunctionNone()); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - p_multi_layer->addLayer(air_layer_decorator); + + air_layer.setDecoration(particle_decoration); + + p_multi_layer->addLayer(air_layer); p_multi_layer->addLayer(substrate_layer); return p_multi_layer; } @@ -858,8 +878,10 @@ ISample *StandardSamples::FormFactor_HemiSpheroid() 2*Units::nanometer))); particle_decoration.addInterferenceFunction (new InterferenceFunctionNone()); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - p_multi_layer->addLayer(air_layer_decorator); + + air_layer.setDecoration(particle_decoration); + + p_multi_layer->addLayer(air_layer); p_multi_layer->addLayer(substrate_layer); return p_multi_layer; } @@ -887,8 +909,10 @@ ISample *StandardSamples::FormFactor_Parallelpiped() ParticleDecoration particle_decoration(particle.clone()); particle_decoration.addInterferenceFunction (new InterferenceFunctionNone()); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - p_multi_layer->addLayer(air_layer_decorator); + + air_layer.setDecoration(particle_decoration); + + p_multi_layer->addLayer(air_layer); return p_multi_layer; } @@ -915,9 +939,11 @@ ISample *StandardSamples::FormFactor_Cylinder() ParticleDecoration particle_decoration(particle.clone()); particle_decoration.addInterferenceFunction (new InterferenceFunctionNone()); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - p_multi_layer->addLayer(air_layer_decorator); + air_layer.setDecoration(particle_decoration); + + + p_multi_layer->addLayer(air_layer); return p_multi_layer; } @@ -944,9 +970,10 @@ ISample *StandardSamples::FormFactor_Pyramid() Units::deg2rad(54.73 ) ) ) ); particle_decoration.addInterferenceFunction (new InterferenceFunctionNone()); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - p_multi_layer->addLayer(air_layer_decorator); + air_layer.setDecoration(particle_decoration); + + p_multi_layer->addLayer(air_layer); p_multi_layer->addLayer(substrate_layer); return p_multi_layer; } @@ -973,9 +1000,10 @@ ISample *StandardSamples::FormFactor_Prism3() 5*Units::nanometer))); particle_decoration.addInterferenceFunction (new InterferenceFunctionNone()); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - p_multi_layer->addLayer(air_layer_decorator); + air_layer.setDecoration(particle_decoration); + + p_multi_layer->addLayer(air_layer); p_multi_layer->addLayer(substrate_layer); return p_multi_layer; } @@ -1001,9 +1029,10 @@ ISample *StandardSamples::FormFactor_FullSphere() new FormFactorFullSphere(5*Units::nanometer ) ) ); particle_decoration.addInterferenceFunction (new InterferenceFunctionNone()); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - p_multi_layer->addLayer(air_layer_decorator); + air_layer.setDecoration(particle_decoration); + + p_multi_layer->addLayer(air_layer); p_multi_layer->addLayer(substrate_layer); return p_multi_layer; } diff --git a/App/src/TestDetectorResolution.cpp b/App/src/TestDetectorResolution.cpp index 6a13b97683893562676ee45afd31c753926c2e66..5cd4aa0cc7f45827ce402f4ad973215b49a82da8 100644 --- a/App/src/TestDetectorResolution.cpp +++ b/App/src/TestDetectorResolution.cpp @@ -21,7 +21,6 @@ #include "Simulation.h" #include "MultiLayer.h" #include "MaterialManager.h" -#include "LayerDecorator.h" #include "MathFunctions.h" #include "ResolutionFunction2DSimple.h" @@ -73,9 +72,10 @@ void TestDetectorResolution::initializeSample() new FormFactorCylinder(5*Units::nanometer, 5*Units::nanometer))); particle_decoration.addInterferenceFunction(p_interference_funtion); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - p_multi_layer->addLayer(air_layer_decorator); + air_layer.setDecoration(particle_decoration); + + p_multi_layer->addLayer(air_layer); p_multi_layer->addLayer(substrate_layer); mp_sample = p_multi_layer; } diff --git a/App/src/TestFittingModule1.cpp b/App/src/TestFittingModule1.cpp index 988aa9f02d77858ff450516ce434d6f89e738099..9fa45e36baeb4e605664450982c9ce7a2a6f9a2e 100644 --- a/App/src/TestFittingModule1.cpp +++ b/App/src/TestFittingModule1.cpp @@ -25,7 +25,6 @@ #include "InterferenceFunction1DParaCrystal.h" #include "InterferenceFunctionNone.h" #include "IsGISAXSTools.h" -#include "LayerDecorator.h" #include "MaterialManager.h" #include "MathFunctions.h" #include "MinimizerFactory.h" @@ -121,8 +120,10 @@ void TestFittingModule1::initializeSample1() ParticleDecoration particle_decoration( new Particle(n_particle, new FormFactorCylinder(5*Units::nanometer, 5*Units::nanometer))); particle_decoration.addInterferenceFunction(new InterferenceFunctionNone()); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - p_multi_layer->addLayer(air_layer_decorator); + + air_layer.setDecoration(particle_decoration); + + p_multi_layer->addLayer(air_layer); mp_sample = p_multi_layer; // defining parameters for minimization @@ -163,9 +164,10 @@ void TestFittingModule1::initializeSample2() particle_decoration.addParticle(new Particle(n_particle, new FormFactorCylinder(cylinder_height, cylinder_radius)),0.0, 0.2); particle_decoration.addParticle(new Particle(n_particle, new FormFactorPrism3(prism3_height, prism3_half_side)), 0.0, 0.8); particle_decoration.addInterferenceFunction(new InterferenceFunctionNone()); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - p_multi_layer->addLayer(air_layer_decorator); + air_layer.setDecoration(particle_decoration); + + p_multi_layer->addLayer(air_layer); p_multi_layer->addLayer(substrate_layer); mp_sample = p_multi_layer; diff --git a/App/src/TestFittingModule2.cpp b/App/src/TestFittingModule2.cpp index 0a945ecee3d9a2bd1ccdd93de807da3237d8bda2..0c73396687dcc2b18dddf429506afb9109181a7a 100644 --- a/App/src/TestFittingModule2.cpp +++ b/App/src/TestFittingModule2.cpp @@ -27,7 +27,6 @@ #include "InterferenceFunction1DParaCrystal.h" #include "InterferenceFunctionNone.h" #include "IsGISAXSTools.h" -#include "LayerDecorator.h" #include "MaterialManager.h" #include "MathFunctions.h" #include "MinimizerFactory.h" @@ -340,9 +339,10 @@ ISample *TestFittingModule2::SampleBuilder::buildSample() const m_prism3_half_side)), 0.0, 1.0 - m_cylinder_ratio); particle_decoration.addInterferenceFunction(new InterferenceFunctionNone()); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - p_multi_layer->addLayer(air_layer_decorator); + air_layer.setDecoration(particle_decoration); + + p_multi_layer->addLayer(air_layer); p_multi_layer->addLayer(substrate_layer); return p_multi_layer; diff --git a/App/src/TestFittingModule3.cpp b/App/src/TestFittingModule3.cpp index c5fcba934311ddfea2c7a897e9e8f1766bbb3244..3aa40f68872ac855e52a35d5aa5ed65c1b919c4e 100644 --- a/App/src/TestFittingModule3.cpp +++ b/App/src/TestFittingModule3.cpp @@ -24,7 +24,6 @@ #include "InterferenceFunction1DParaCrystal.h" #include "InterferenceFunctionNone.h" #include "IsGISAXSTools.h" -#include "LayerDecorator.h" #include "MaterialManager.h" #include "MathFunctions.h" #include "MinimizerFactory.h" @@ -128,8 +127,10 @@ void TestFittingModule3::initializeSample() particle_decoration.addParticle(new Particle(n_particle, new FormFactorCylinder(cylinder_height, cylinder_radius)),0.0, 0.2); particle_decoration.addParticle(new Particle(n_particle, new FormFactorPrism3(prism3_height, prism3_half_side)), 0.0, 0.8); particle_decoration.addInterferenceFunction(new InterferenceFunctionNone()); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - p_multi_layer->addLayer(air_layer_decorator); + + air_layer.setDecoration(particle_decoration); + + p_multi_layer->addLayer(air_layer); p_multi_layer->addLayer(substrate_layer); m_sample = p_multi_layer; } diff --git a/App/src/TestIsGISAXS12.cpp b/App/src/TestIsGISAXS12.cpp index c421b61af8a5b800d07404eb411eb9ebe2ce7d5c..fcad0c8cf2d227b07ef9aa31d0c8f75db64add20 100644 --- a/App/src/TestIsGISAXS12.cpp +++ b/App/src/TestIsGISAXS12.cpp @@ -24,7 +24,6 @@ #include "IsGISAXSData.h" #include "IsGISAXSTools.h" #include "Layer.h" -#include "LayerDecorator.h" #include "MaterialManager.h" #include "MathFunctions.h" #include "MinimizerFactory.h" @@ -519,9 +518,9 @@ ISample *TestIsGISAXS12::TestSampleBuilder::buildSample() const builder.setPrototype(cylinder2,"/Particle/FormFactorCylinder/radius", par2, particle_probability2); builder.plantParticles(particle_decoration); - // making layer holding all whose nano particles - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - p_multi_layer->addLayer(air_layer_decorator); + air_layer.setDecoration(particle_decoration); + + p_multi_layer->addLayer(air_layer); Layer substrate_layer; substrate_layer.setMaterial(substrate_material); diff --git a/App/src/TestIsGISAXS13.cpp b/App/src/TestIsGISAXS13.cpp index 6445d51c2a59027c5a12b913069874fe87423e62..2ec6832c9127c078887028716e7cf4b640b19bc8 100644 --- a/App/src/TestIsGISAXS13.cpp +++ b/App/src/TestIsGISAXS13.cpp @@ -23,7 +23,6 @@ #include "IsGISAXSData.h" #include "IsGISAXSTools.h" #include "Layer.h" -#include "LayerDecorator.h" #include "MaterialManager.h" #include "MathFunctions.h" #include "MinimizerFactory.h" diff --git a/App/src/TestIsGISAXS5.cpp b/App/src/TestIsGISAXS5.cpp index a48b86f57168f1c6facc0f6f27cdf8e7d83ec809..44bce3ad91d4a116664b9792579a768995db4170 100644 --- a/App/src/TestIsGISAXS5.cpp +++ b/App/src/TestIsGISAXS5.cpp @@ -24,7 +24,6 @@ #include "IsGISAXSData.h" #include "IsGISAXSTools.h" #include "Layer.h" -#include "LayerDecorator.h" #include "MaterialManager.h" #include "MathFunctions.h" #include "MinimizerFactory.h" @@ -303,8 +302,9 @@ ISample *TestIsGISAXS5::SampleBuilder::buildSample() const builder.plantParticles(particle_decoration); // making layer holding all whose nano particles - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - p_multi_layer->addLayer(air_layer_decorator); + air_layer.setDecoration(particle_decoration); + + p_multi_layer->addLayer(air_layer); Layer substrate_layer; substrate_layer.setMaterial(substrate_material); diff --git a/App/src/TestMesoCrystal1.cpp b/App/src/TestMesoCrystal1.cpp index fc90f678de84708c19322f75d753b36f563ec8ef..9c278539975a399af6cae4565a5ebc3bd5ed1276 100644 --- a/App/src/TestMesoCrystal1.cpp +++ b/App/src/TestMesoCrystal1.cpp @@ -20,7 +20,6 @@ #include "Simulation.h" #include "MultiLayer.h" #include "MaterialManager.h" -#include "LayerDecorator.h" #include "ParticleDecoration.h" #include "MesoCrystal.h" #include "Crystal.h" @@ -231,12 +230,13 @@ ISample* TestMesoCrystal1::SampleBuilder::buildSample() const particle_decoration.setTotalParticleSurfaceDensity(surface_density); particle_decoration.addInterferenceFunction(p_interference_funtion); - LayerDecorator avg_layer_decorator(avg_layer, particle_decoration); + + avg_layer.setDecoration(particle_decoration); LayerRoughness roughness(m_roughness, 0.3, 500.0*Units::nanometer); p_multi_layer->addLayer(air_layer); - p_multi_layer->addLayer(avg_layer_decorator); + p_multi_layer->addLayer(avg_layer); p_multi_layer->addLayerWithTopRoughness(substrate_layer, roughness); // std::cout << "Average layer index: " << n_avg << std::endl; diff --git a/App/src/TestMesoCrystal2.cpp b/App/src/TestMesoCrystal2.cpp index 8ecb161b531399abef93da225ee27846d02459fb..4b5354a5cb60f975cbccdca83c4b9714c2790035 100644 --- a/App/src/TestMesoCrystal2.cpp +++ b/App/src/TestMesoCrystal2.cpp @@ -26,7 +26,6 @@ #include "InterferenceFunctionNone.h" #include "IsGISAXSTools.h" #include "LatticeBasis.h" -#include "LayerDecorator.h" #include "MaterialManager.h" #include "MathFunctions.h" #include "MesoCrystal.h" @@ -603,12 +602,13 @@ ISample* TestMesoCrystal2::SampleBuilder::buildSample() const particle_decoration.setTotalParticleSurfaceDensity(surface_density); particle_decoration.addInterferenceFunction(p_interference_funtion); - LayerDecorator avg_layer_decorator(avg_layer, particle_decoration); + + avg_layer.setDecoration(particle_decoration); LayerRoughness roughness(m_roughness, 0.3, 500.0*Units::nanometer); p_multi_layer->addLayer(air_layer); - p_multi_layer->addLayer(avg_layer_decorator); + p_multi_layer->addLayer(avg_layer); p_multi_layer->addLayerWithTopRoughness(substrate_layer, roughness); // std::cout << "Average layer index: " << n_avg << std::endl; diff --git a/App/src/TestMiscellaneous.cpp b/App/src/TestMiscellaneous.cpp index 3f7f41aabdc47070fb30a30d7d916f8e41888700..fe8db6678908af44c63030643262f3374da15c4f 100644 --- a/App/src/TestMiscellaneous.cpp +++ b/App/src/TestMiscellaneous.cpp @@ -24,7 +24,6 @@ #include "Simulation.h" #include "IsGISAXSTools.h" #include "Lattice.h" -#include "LayerDecorator.h" #include "MesoCrystal.h" #include "Crystal.h" #include "LatticeBasis.h" diff --git a/App/src/TestRootTree.cpp b/App/src/TestRootTree.cpp index 49480877efca930908dd82ac44ff974b8aca8536..b0b957f458c5888177055fd499cbf5525261b120 100644 --- a/App/src/TestRootTree.cpp +++ b/App/src/TestRootTree.cpp @@ -18,7 +18,6 @@ #include "MaterialManager.h" #include "ParticleDecoration.h" #include "Particle.h" -#include "LayerDecorator.h" #include "Simulation.h" #include "FormFactors.h" #include "Units.h" @@ -425,10 +424,11 @@ void TestRootTree::initializeMesoCrystal( particle_decoration.setTotalParticleSurfaceDensity(surface_density); particle_decoration.addInterferenceFunction(p_interference_funtion); - LayerDecorator avg_layer_decorator(avg_layer, particle_decoration); + + avg_layer.setDecoration(particle_decoration); p_multi_layer->addLayer(air_layer); - p_multi_layer->addLayer(avg_layer_decorator); + p_multi_layer->addLayer(avg_layer); p_multi_layer->addLayer(substrate_layer); mp_sample = p_multi_layer; } diff --git a/Core/Algorithms/inc/LayerDecoratorDWBASimulation.h b/Core/Algorithms/inc/LayerDecoratorDWBASimulation.h index 233514d3622bb2bc9c26bf120f5c8980e7ea755e..ada2ef4646193823ef4ab1452bcb0d7ac4c76adc 100644 --- a/Core/Algorithms/inc/LayerDecoratorDWBASimulation.h +++ b/Core/Algorithms/inc/LayerDecoratorDWBASimulation.h @@ -20,14 +20,14 @@ #include "DiffuseDWBASimulation.h" #include "IInterferenceFunctionStrategy.h" -class LayerDecorator; +class Layer; //! Calculates scattering cross sections in DWBA for a layer with particles in/on it class LayerDecoratorDWBASimulation : public LayerDWBASimulation { public: - LayerDecoratorDWBASimulation(const LayerDecorator *p_layer_decorator); + LayerDecoratorDWBASimulation(const Layer *p_layer_decorator); virtual ~LayerDecoratorDWBASimulation(); LayerDecoratorDWBASimulation *clone() const @@ -40,7 +40,7 @@ class LayerDecoratorDWBASimulation : public LayerDWBASimulation virtual void run(); protected: - LayerDecorator *mp_layer_decorator; + Layer *mp_layer; DiffuseDWBASimulation *mp_diffuseDWBA; private: diff --git a/Core/Algorithms/inc/StrategyBuilder.h b/Core/Algorithms/inc/StrategyBuilder.h index 7568cf959cd7125ef5e927b95504371913a82692..b3e231f2654fd33706c1a42cba68cfac8a63ea43 100644 --- a/Core/Algorithms/inc/StrategyBuilder.h +++ b/Core/Algorithms/inc/StrategyBuilder.h @@ -24,24 +24,22 @@ class FormFactorInfo; class IInterferenceFunction; class IInterferenceFunctionStrategy; -class LayerDecorator; +class Layer; class Simulation; class IDoubleToPairOfComplexMap; class ParticleInfo; class IFormFactor; -//! Methods to generate a simulation strategy from a LayerDecorator and SimulationParameters +//! Methods to generate a simulation strategy for decorated Layer SimulationParameters class LayerDecoratorStrategyBuilder { - public: - /* out-of-place implementation required due to LayerDecorator */ +public: LayerDecoratorStrategyBuilder( - const LayerDecorator& decorated_layer, + const Layer& decorated_layer, const Simulation& simulation, const SimulationParameters& sim_params); - /* out-of-place implementation required due to LayerDecorator */ virtual ~LayerDecoratorStrategyBuilder(); //! Sets R and T coefficient map for DWBA simulation @@ -50,12 +48,14 @@ class LayerDecoratorStrategyBuilder //! Creates a strategy object which is able to calculate the scattering for fixed k_f virtual IInterferenceFunctionStrategy *createStrategy(); - protected: - LayerDecorator *mp_layer_decorator; //!< decorated layer + +protected: + Layer *mp_layer_decorator; //!< decorated layer Simulation *mp_simulation; //!< simulation SimulationParameters m_sim_params; //!< simulation parameters IDoubleToPairOfComplexMap *mp_RT_function; //!< R and T coefficients for DWBA - private: + +private: //! collect the formfactor info of all particles in the decoration and decorate //! these for DWBA when needed void collectFormFactorInfos(); @@ -73,9 +73,10 @@ class LayerDecoratorStrategyBuilder SafePointerVector<IInterferenceFunction> m_ifs; }; + class FormFactorInfo : public ICloneable { - public: +public: FormFactorInfo() : mp_ff(0), m_pos_x(0.0), m_pos_y(0.0), m_abundance(0.0) {} ~FormFactorInfo(); diff --git a/Core/Algorithms/src/LayerDecoratorDWBASimulation.cpp b/Core/Algorithms/src/LayerDecoratorDWBASimulation.cpp index 1b97b889cd83713acc18867b4793a6beb33d2b06..7ffc825f958016b997404554ba34704d7377cbc4 100644 --- a/Core/Algorithms/src/LayerDecoratorDWBASimulation.cpp +++ b/Core/Algorithms/src/LayerDecoratorDWBASimulation.cpp @@ -14,20 +14,21 @@ // ************************************************************************** // #include "LayerDecoratorDWBASimulation.h" -#include "LayerDecorator.h" +//#include "LayerDecorator.h" +#include "Layer.h" #include "FormFactors.h" #include "MessageService.h" LayerDecoratorDWBASimulation::LayerDecoratorDWBASimulation( - const LayerDecorator *p_layer_decorator) + const Layer *p_layer) { - mp_layer_decorator = p_layer_decorator->clone(); - mp_diffuseDWBA = mp_layer_decorator->createDiffuseDWBASimulation(); + mp_layer = p_layer->clone(); + mp_diffuseDWBA = mp_layer->createDiffuseDWBASimulation(); } LayerDecoratorDWBASimulation::~LayerDecoratorDWBASimulation() { - delete mp_layer_decorator; + delete mp_layer; delete mp_diffuseDWBA; } @@ -55,7 +56,7 @@ IInterferenceFunctionStrategy *LayerDecoratorDWBASimulation::createAndInitStrategy() const { LayerDecoratorStrategyBuilder builder( - *mp_layer_decorator, *mp_simulation, m_sim_params); + *mp_layer, *mp_simulation, m_sim_params); if (mp_RT_function) builder.setReflectionTransmissionFunction(*mp_RT_function); IInterferenceFunctionStrategy *p_strategy = builder.createStrategy(); @@ -67,8 +68,8 @@ LayerDecoratorDWBASimulation::createDWBAFormFactors() const { msglog(MSG::DEBUG) << "LayerDecoratorDWBASimulation::create...()"; std::vector<IFormFactor*> result; - const IDecoration *p_decoration = mp_layer_decorator->getDecoration(); - complex_t n_layer = mp_layer_decorator->getRefractiveIndex(); + const IDecoration *p_decoration = mp_layer->getDecoration(); + complex_t n_layer = mp_layer->getRefractiveIndex(); size_t number_of_particles = p_decoration->getNumberOfParticles(); for (size_t particle_index = 0; particle_index<number_of_particles; ++particle_index) { @@ -109,7 +110,7 @@ void LayerDecoratorDWBASimulation::calculateCoherentIntensity( msglog(MSG::DEBUG) << "LayerDecoratorDWBASimulation::calculateCoh...()"; double wavelength = getWaveLength(); double total_surface_density = - mp_layer_decorator->getTotalParticleSurfaceDensity(); + mp_layer->getTotalParticleSurfaceDensity(); cvector_t k_ij = m_ki; k_ij.setZ(-mp_kz_function->evaluate(-m_alpha_i)); diff --git a/Core/Algorithms/src/StrategyBuilder.cpp b/Core/Algorithms/src/StrategyBuilder.cpp index 03e7f4b3b724d05869532ff126181a99522cfc28..d420ed4169c2211d88e8c3a70ba3b3fa88845bc0 100644 --- a/Core/Algorithms/src/StrategyBuilder.cpp +++ b/Core/Algorithms/src/StrategyBuilder.cpp @@ -15,7 +15,7 @@ // ************************************************************************** // #include "StrategyBuilder.h" -#include "LayerDecorator.h" +#include "Layer.h" #include "Simulation.h" #include "IDoubleToComplexFunction.h" #include "InterferenceFunctions.h" @@ -26,7 +26,7 @@ #include <cmath> LayerDecoratorStrategyBuilder::LayerDecoratorStrategyBuilder( - const LayerDecorator& decorated_layer, const Simulation& simulation, + const Layer& decorated_layer, const Simulation& simulation, const SimulationParameters& sim_params) : mp_layer_decorator(decorated_layer.clone()) , mp_simulation(simulation.clone()) diff --git a/Core/Core.pro b/Core/Core.pro index 7a42368f8d04203d0106ef6f88885bc8bb41f475..944aaff175525b5dbe2cb23932cf511da722d789 100644 --- a/Core/Core.pro +++ b/Core/Core.pro @@ -112,7 +112,6 @@ SOURCES += \ Samples/src/Lattice.cpp \ Samples/src/LatticeBasis.cpp \ Samples/src/Layer.cpp \ - Samples/src/LayerDecorator.cpp \ Samples/src/LayerInterface.cpp \ Samples/src/LayerRoughness.cpp \ Samples/src/MaterialManager.cpp \ @@ -284,7 +283,6 @@ HEADERS += \ Samples/inc/Lattice2DIFParameters.h \ Samples/inc/LatticeBasis.h \ Samples/inc/Layer.h \ - Samples/inc/LayerDecorator.h \ Samples/inc/LayerInterface.h \ Samples/inc/LayerRoughness.h \ Samples/inc/MaterialManager.h \ diff --git a/Core/PythonAPI/inc/PythonCoreList.h b/Core/PythonAPI/inc/PythonCoreList.h index db28eea6eaee11b9e628159c0d5e72c550efdbcd..73aa060f44de066e7fdfb374b230024ece11900d 100644 --- a/Core/PythonAPI/inc/PythonCoreList.h +++ b/Core/PythonAPI/inc/PythonCoreList.h @@ -53,7 +53,6 @@ #include "Lattice2DIFParameters.h" #include "LatticeBasis.h" #include "Layer.h" -#include "LayerDecorator.h" #include "LayerRoughness.h" #include "MathFunctions.h" #include "MaterialManager.h" diff --git a/Core/Samples/inc/ICompositeSample.h b/Core/Samples/inc/ICompositeSample.h index 173a24ee782e0d1f1452c0794fadd3790256b007..d5867c0a9bf160307e1582d8d1edbaf22cb6800b 100644 --- a/Core/Samples/inc/ICompositeSample.h +++ b/Core/Samples/inc/ICompositeSample.h @@ -22,23 +22,7 @@ //! Interface to equip ISample with a tree structure. -//! As of March 2013, this is the base class for -//! - IClustered Particle -//! - Crystal -//! - IDecoration -//! - ParticleDecoration -//! - Layer -//! - LayerDecorator -//! - LayerInterface -//! - MultiLayer -//! - Particle -//! - LatticeBasis -//! - MesoCrystal -//! - ParticleCoreShell -//! - ParticleInfo -//! - DiffuseParticleInfo -//! - PositionParticleInfo -//! + class BA_CORE_API_ ICompositeSample : public ISample { public: diff --git a/Core/Samples/inc/ISampleVisitor.h b/Core/Samples/inc/ISampleVisitor.h index 84932cb948311831bca3aa60fe2074bd570b2211..257adc86590aae189175060db7ab1299dc35d88e 100644 --- a/Core/Samples/inc/ISampleVisitor.h +++ b/Core/Samples/inc/ISampleVisitor.h @@ -22,7 +22,6 @@ class ISample; class MultiLayer; class Layer; class LayerInterface; -class LayerDecorator; class ParticleDecoration; class ParticleInfo; class Particle; @@ -49,7 +48,6 @@ public: virtual void visit(const ISample *) { throw NotImplementedException("ISampleVisitor::visit(ISample *)"); } virtual void visit(const MultiLayer *) { throw NotImplementedException("ISampleVisitor::visit(MultiLayer *)"); } virtual void visit(const Layer *) { throw NotImplementedException("ISampleVisitor::visit(Layer *)"); } - virtual void visit(const LayerDecorator *) { throw NotImplementedException("ISampleVisitor::visit(LayerDecorator *)"); } virtual void visit(const LayerInterface *) { throw NotImplementedException("ISampleVisitor::visit(LayerInterface *)"); } virtual void visit(const ParticleDecoration *) { throw NotImplementedException("ISampleVisitor::visit(ParticleDecoration *)"); } virtual void visit(const ParticleInfo *) { throw NotImplementedException("ISampleVisitor::visit(ParticleInfo *)"); } diff --git a/Core/Samples/inc/Layer.h b/Core/Samples/inc/Layer.h index 15762495db2f839acb1a9a0c8057fa1a1658edb8..7c0180a8829712793d71e93d680c7f605718404e 100644 --- a/Core/Samples/inc/Layer.h +++ b/Core/Samples/inc/Layer.h @@ -21,6 +21,8 @@ #include "IMaterial.h" #include "HomogeneousMaterial.h" #include "LayerDWBASimulation.h" +#include "ParticleDecoration.h" +#include "LayerDecoratorDWBASimulation.h" //! A Layer with thickness and pointer to the material @@ -28,16 +30,12 @@ class BA_CORE_API_ Layer : public ICompositeSample { public: //! Constructs empty layer. - Layer() : mp_material(0), m_thickness(0) - { - setName("Layer"); - init_parameters(); - } + Layer(); //! Constructs layer made of _material_ with _thickness_ in nanometers. Layer(const IMaterial* material, double thickness=0); - virtual ~Layer() {} + virtual ~Layer(); virtual Layer *clone() const { return new Layer(*this); } @@ -62,11 +60,22 @@ class BA_CORE_API_ Layer : public ICompositeSample //! Returns refractive index of the layer's material. virtual complex_t getRefractiveIndex() const; - //! Returns false (override is important for polymorphism of LayerDecorator). - virtual bool hasDWBASimulation() const { return false; } + //! sets particle decoration + void setDecoration(IDecoration *decoration) { delete mp_decoration; mp_decoration = decoration; } + void setDecoration(const IDecoration &decoration) { delete mp_decoration; mp_decoration = decoration.clone(); } + + //! returns particle decoration + const IDecoration* getDecoration() const { return mp_decoration; } + + //! Returns true if decoration is present + virtual bool hasDWBASimulation() const { return (mp_decoration ? true : false); } + + //! creates and return LayerDWBASimulation in the case of present decoration + virtual LayerDWBASimulation *createDWBASimulation() const; + + virtual DiffuseDWBASimulation *createDiffuseDWBASimulation() const; - //! Returns zero pointer (override is important for polymorphism of LayerDecorator). - virtual LayerDWBASimulation *createDWBASimulation() const { return 0; } + virtual double getTotalParticleSurfaceDensity() const; protected: Layer(const Layer& other); @@ -76,6 +85,7 @@ class BA_CORE_API_ Layer : public ICompositeSample void print(std::ostream& ostr) const; const IMaterial* mp_material; //!< pointer to the material + IDecoration *mp_decoration; //!< particle decoration double m_thickness; //!< layer thickness in nanometers }; @@ -86,6 +96,14 @@ inline complex_t Layer::getRefractiveIndex() const return (material ? material->getRefractiveIndex() : complex_t(0,0)); } +inline double Layer::getTotalParticleSurfaceDensity() const +{ + if (mp_decoration) { + return mp_decoration->getTotalParticleSurfaceDensity(); + } + return 0.0; +} + #endif // LAYER_H diff --git a/Core/Samples/inc/LayerDecorator.h b/Core/Samples/inc/LayerDecorator.h deleted file mode 100644 index d28fb70292888b084e5d6635945668a91998deeb..0000000000000000000000000000000000000000 --- a/Core/Samples/inc/LayerDecorator.h +++ /dev/null @@ -1,129 +0,0 @@ -// ************************************************************************** // -// -// BornAgain: simulate and fit scattering at grazing incidence -// -//! @file Samples/inc/LayerDecorator.h -//! @brief Defines class LayerDecorator. -//! -//! @homepage http://apps.jcns.fz-juelich.de/BornAgain -//! @license GNU General Public License v3 or higher (see COPYING) -//! @copyright Forschungszentrum Jülich GmbH 2013 -//! @authors Scientific Computing Group at MLZ Garching -//! @authors C. Durniak, G. Pospelov, W. Van Herck, J. Wuttke -// -// ************************************************************************** // - -#ifndef LAYERDECORATOR_H_ -#define LAYERDECORATOR_H_ - -#include "WinDllMacros.h" -#include "Layer.h" -#include "ParticleDecoration.h" -#include "LayerDecoratorDWBASimulation.h" - -//! Combines a Layer with an IDecoration. - -class BA_CORE_API_ LayerDecorator : public Layer -{ - public: - //! Constructs LayerDecorator object by cloning _layer_ and _decoration_. - LayerDecorator(const Layer& layer, const IDecoration& decoration); - virtual ~LayerDecorator(); - - virtual LayerDecorator *clone() const; - - //! calls the ISampleVisitor's visit method - virtual void accept(ISampleVisitor *visitor) const { visitor->visit(this); } - - //! Sets _thickness_ in nanometers. - virtual void setThickness(double thickness); - - //! Returns thickness in nanometers. - virtual double getThickness() const; - - //! Sets _material_. - virtual void setMaterial(const IMaterial* material); - - //! Sets _material_ and _thickness_ in nanometers. - virtual void setMaterial(const IMaterial* material, double thickness); - - //! Returns material - const virtual IMaterial* getMaterial() const; - - //! Returns refractive index. - virtual complex_t getRefractiveIndex() const; - - virtual void init_parameters(); - - const Layer* getDecoratedLayer() const { return mp_decorated_layer; } - - const IDecoration* getDecoration() const { return mp_decoration; } - - virtual bool hasDWBASimulation() const { return true; } - - virtual LayerDecoratorDWBASimulation *createDWBASimulation() const - { return new LayerDecoratorDWBASimulation(this); } - - virtual DiffuseDWBASimulation *createDiffuseDWBASimulation() const; - - virtual double getTotalParticleSurfaceDensity() const; - - protected: - //! Constructs a new object by cloning _other_'s layer and decoration. - LayerDecorator(const LayerDecorator& other); - - Layer *mp_decorated_layer; - IDecoration *mp_decoration; - - private: - void print(std::ostream& ostr) const; -}; - - -inline LayerDecorator *LayerDecorator::clone() const -{ - return new LayerDecorator(*this); -} - -inline void LayerDecorator::setThickness(double thickness) -{ - mp_decorated_layer->setThickness(thickness); -} - -inline double LayerDecorator::getThickness() const -{ - return mp_decorated_layer->getThickness(); -} - -inline void LayerDecorator::setMaterial(const IMaterial* material) -{ - mp_decorated_layer->setMaterial(material); -} - -inline void LayerDecorator::setMaterial(const IMaterial* material, double thickness) -{ - mp_decorated_layer->setMaterial(material, thickness); -} - -inline const IMaterial* LayerDecorator::getMaterial() const -{ - return mp_decorated_layer->getMaterial(); -} - -inline complex_t LayerDecorator::getRefractiveIndex() const -{ - return mp_decorated_layer->getRefractiveIndex(); -} - -inline double LayerDecorator::getTotalParticleSurfaceDensity() const -{ - if (mp_decoration) { - return mp_decoration->getTotalParticleSurfaceDensity(); - } - return 0.; -} - - -#endif /* LAYERDECORATOR_H_ */ - - diff --git a/Core/Samples/inc/Samples.h b/Core/Samples/inc/Samples.h index 21ebbbf337670152602b7143cbd9f286aea2604e..24323147de93d64506fb0ae3b17d60234c483864 100644 --- a/Core/Samples/inc/Samples.h +++ b/Core/Samples/inc/Samples.h @@ -19,7 +19,6 @@ #include "Crystal.h" #include "MaterialManager.h" #include "Layer.h" -#include "LayerDecorator.h" #include "LayerInterface.h" #include "MultiLayer.h" #include "Particle.h" diff --git a/Core/Samples/src/Layer.cpp b/Core/Samples/src/Layer.cpp index f78b17c104dd5603d0449bce6fc4df1a300dc077..97951050d2d2c7662ff43107bee1f4166cdf1101 100644 --- a/Core/Samples/src/Layer.cpp +++ b/Core/Samples/src/Layer.cpp @@ -18,8 +18,19 @@ #include <iomanip> +Layer::Layer() + : mp_material(0) + , mp_decoration(0) + , m_thickness(0) +{ + setName("Layer"); + init_parameters(); +} + + Layer::Layer(const IMaterial* material, double thickness) - : m_thickness(thickness) + : mp_decoration(0) + , m_thickness(thickness) { setName("Layer"); setMaterial(material); @@ -30,12 +41,20 @@ Layer::Layer(const IMaterial* material, double thickness) Layer::Layer(const Layer& other) : ICompositeSample() { mp_material = other.mp_material; + mp_decoration = 0; + if(other.getDecoration()) mp_decoration = other.getDecoration()->clone(); m_thickness = other.m_thickness; setName(other.getName()); init_parameters(); } +Layer::~Layer() +{ + delete mp_decoration; +} + + void Layer::init_parameters() { clearParameterPool(); @@ -76,3 +95,40 @@ void Layer::print(std::ostream& ostr) const } +LayerDWBASimulation *Layer::createDWBASimulation() const +{ + if(mp_decoration) { + return new LayerDecoratorDWBASimulation(this); + } + return 0; +} + + +DiffuseDWBASimulation* Layer::createDiffuseDWBASimulation() const +{ + DiffuseDWBASimulation *p_sim = new DiffuseDWBASimulation; + size_t nbr_particles = mp_decoration->getNumberOfParticles(); + double particle_density = mp_decoration->getTotalParticleSurfaceDensity(); + for (size_t i=0; i<nbr_particles; ++i) { + const ParticleInfo *p_info = mp_decoration->getParticleInfo(i); + std::vector<DiffuseParticleInfo *> *p_diffuse_nps = + p_info->getParticle()->createDiffuseParticleInfo(*p_info); + if (p_diffuse_nps) { + for (size_t j=0; j<p_diffuse_nps->size(); ++j) { + DiffuseParticleInfo *p_diff_info = (*p_diffuse_nps)[j]; + p_diff_info->setNumberPerMeso( + particle_density * p_info->getAbundance() * + p_diff_info->getNumberPerMeso()); + p_sim->addParticleInfo((*p_diffuse_nps)[j]); + } + delete p_diffuse_nps; + break; // TODO: remove this break (this necessitates the creation of a phi-averaged mesocrystal class generating only one nanoparticle for diffuse calculations) + } + } + if (p_sim->getSize()>0) { + p_sim->setRefractiveIndex(getRefractiveIndex()); + return p_sim; + } + delete p_sim; + return 0; +} diff --git a/Core/Samples/src/LayerDecorator.cpp b/Core/Samples/src/LayerDecorator.cpp deleted file mode 100644 index 8fae10b8e6330da17d91db26dbd61370c5273565..0000000000000000000000000000000000000000 --- a/Core/Samples/src/LayerDecorator.cpp +++ /dev/null @@ -1,89 +0,0 @@ -// ************************************************************************** // -// -// BornAgain: simulate and fit scattering at grazing incidence -// -//! @file Samples/src/LayerDecorator.cpp -//! @brief Implements class LayerDecorator. -//! -//! @homepage http://apps.jcns.fz-juelich.de/BornAgain -//! @license GNU General Public License v3 or higher (see COPYING) -//! @copyright Forschungszentrum Jülich GmbH 2013 -//! @authors Scientific Computing Group at MLZ Garching -//! @authors C. Durniak, G. Pospelov, W. Van Herck, J. Wuttke -// -// ************************************************************************** // - -#include "LayerDecorator.h" - - -LayerDecorator::LayerDecorator(const Layer& layer, const IDecoration& decoration) - : mp_decorated_layer(layer.clone()), mp_decoration(decoration.clone()) -{ - setName("LayerDecorator"); - registerChild(mp_decorated_layer); - registerChild(mp_decoration); - init_parameters(); -} - - -LayerDecorator::LayerDecorator(const LayerDecorator& other) - : Layer(other) -{ - mp_decorated_layer = other.getDecoratedLayer()->clone(); - mp_decoration = other.getDecoration()->clone(); - setName("LayerDecorator"); - registerChild(mp_decorated_layer); - registerChild(mp_decoration); - init_parameters(); -} - - -LayerDecorator::~LayerDecorator() -{ - delete mp_decorated_layer; - delete mp_decoration; -} - - -void LayerDecorator::init_parameters() -{ - clearParameterPool(); -} - - -DiffuseDWBASimulation* LayerDecorator::createDiffuseDWBASimulation() const -{ - DiffuseDWBASimulation *p_sim = new DiffuseDWBASimulation; - size_t nbr_particles = mp_decoration->getNumberOfParticles(); - double particle_density = mp_decoration->getTotalParticleSurfaceDensity(); - for (size_t i=0; i<nbr_particles; ++i) { - const ParticleInfo *p_info = mp_decoration->getParticleInfo(i); - std::vector<DiffuseParticleInfo *> *p_diffuse_nps = - p_info->getParticle()->createDiffuseParticleInfo(*p_info); - if (p_diffuse_nps) { - for (size_t j=0; j<p_diffuse_nps->size(); ++j) { - DiffuseParticleInfo *p_diff_info = (*p_diffuse_nps)[j]; - p_diff_info->setNumberPerMeso( - particle_density * p_info->getAbundance() * - p_diff_info->getNumberPerMeso()); - p_sim->addParticleInfo((*p_diffuse_nps)[j]); - } - delete p_diffuse_nps; - break; // TODO: remove this break (this necessitates the creation of a phi-averaged mesocrystal class generating only one nanoparticle for diffuse calculations) - } - } - if (p_sim->getSize()>0) { - p_sim->setRefractiveIndex(getRefractiveIndex()); - return p_sim; - } - delete p_sim; - return 0; -} - -void LayerDecorator::print(std::ostream& ostr) const -{ - Layer::print(ostr); - ostr << "-->LayerDecorator{" << *mp_decoration << "}"; -} - - diff --git a/Core/StandardSamples/IsGISAXS01Builder.cpp b/Core/StandardSamples/IsGISAXS01Builder.cpp index f30e3d97622a99203017d7e5cc470277823f5449..1bd91710529c25cae24039e94e2404b52b9a99c3 100644 --- a/Core/StandardSamples/IsGISAXS01Builder.cpp +++ b/Core/StandardSamples/IsGISAXS01Builder.cpp @@ -1,7 +1,6 @@ #include "IsGISAXS01Builder.h" #include "MultiLayer.h" #include "ParticleDecoration.h" -#include "LayerDecorator.h" #include "MaterialManager.h" #include "FormFactorCylinder.h" #include "FormFactorPrism3.h" @@ -56,9 +55,10 @@ ISample *IsGISAXS01Builder::buildSample() const 0.0, 1.0-m_cylinder_weight); particle_decoration.addInterferenceFunction(new InterferenceFunctionNone()); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); + //LayerDecorator air_layer_decorator(air_layer, particle_decoration); + air_layer.setDecoration(particle_decoration); - multi_layer->addLayer(air_layer_decorator); + multi_layer->addLayer(air_layer); multi_layer->addLayer(substrate_layer); return multi_layer; } diff --git a/Core/StandardSamples/IsGISAXS02Builder.cpp b/Core/StandardSamples/IsGISAXS02Builder.cpp index 8a139788dc71ca23ec12e2df9b6899f3959623e8..273bb3207a7e42e06ef630e576b529c2643d4711 100644 --- a/Core/StandardSamples/IsGISAXS02Builder.cpp +++ b/Core/StandardSamples/IsGISAXS02Builder.cpp @@ -1,7 +1,6 @@ #include "IsGISAXS02Builder.h" #include "MultiLayer.h" #include "ParticleDecoration.h" -#include "LayerDecorator.h" #include "MaterialManager.h" #include "FormFactorCylinder.h" #include "FormFactorPrism3.h" @@ -74,9 +73,10 @@ ISample *IsGISAXS02Builder::buildSample() const builder.plantParticles(particle_decoration); particle_decoration.addInterferenceFunction(new InterferenceFunctionNone()); - // making layer holding all whose nano particles - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - multi_layer->addLayer(air_layer_decorator); + + air_layer.setDecoration(particle_decoration); + + multi_layer->addLayer(air_layer); return multi_layer; } diff --git a/Core/StandardSamples/IsGISAXS03Builder.cpp b/Core/StandardSamples/IsGISAXS03Builder.cpp index 524ad7b48f5619e3aa0a27863b96503c6f42e2c6..abc08aabe62f3497de4429594285faebc3a82484 100644 --- a/Core/StandardSamples/IsGISAXS03Builder.cpp +++ b/Core/StandardSamples/IsGISAXS03Builder.cpp @@ -1,7 +1,6 @@ #include "IsGISAXS03Builder.h" #include "MultiLayer.h" #include "ParticleDecoration.h" -#include "LayerDecorator.h" #include "MaterialManager.h" #include "FormFactorCylinder.h" #include "FormFactorPrism3.h" @@ -47,8 +46,9 @@ ISample *IsGISAXS03DWBABuilder::buildSample() const ParticleDecoration particle_decoration( new Particle(n_particle, new FormFactorCylinder(m_height, m_radius))); particle_decoration.addInterferenceFunction(new InterferenceFunctionNone()); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - multi_layer->addLayer(air_layer_decorator); + air_layer.setDecoration(particle_decoration); + + multi_layer->addLayer(air_layer); multi_layer->addLayer(substrate_layer); return multi_layer; @@ -89,8 +89,9 @@ ISample *IsGISAXS03BABuilder::buildSample() const complex_t n_particle(1.0-6e-4, 2e-8); ParticleDecoration particle_decoration( new Particle(n_particle, new FormFactorCylinder(m_height, m_radius))); particle_decoration.addInterferenceFunction(new InterferenceFunctionNone()); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - multi_layer->addLayer(air_layer_decorator); + + air_layer.setDecoration(particle_decoration); + multi_layer->addLayer(air_layer); return multi_layer; } @@ -141,9 +142,10 @@ ISample *IsGISAXS03BASizeBuilder::buildSample() const builder.setPrototype(nano_particle,"/Particle/FormFactorCylinder/radius", par); builder.plantParticles(particle_decoration); particle_decoration.addInterferenceFunction(new InterferenceFunctionNone()); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - multi_layer->addLayer(air_layer_decorator); + air_layer.setDecoration(particle_decoration); + + multi_layer->addLayer(air_layer); return multi_layer; } diff --git a/Core/StandardSamples/IsGISAXS04Builder.cpp b/Core/StandardSamples/IsGISAXS04Builder.cpp index e72f88d16441990ac80fafd70a1e2a72daeb6cd4..b0905b93e7933fb812a49656548ca0d56b6f1939 100644 --- a/Core/StandardSamples/IsGISAXS04Builder.cpp +++ b/Core/StandardSamples/IsGISAXS04Builder.cpp @@ -1,7 +1,6 @@ #include "IsGISAXS04Builder.h" #include "MultiLayer.h" #include "ParticleDecoration.h" -#include "LayerDecorator.h" #include "MaterialManager.h" #include "InterferenceFunction1DParaCrystal.h" #include "InterferenceFunction2DParaCrystal.h" @@ -46,9 +45,10 @@ ISample *IsGISAXS04Para1DBuilder::buildSample() const IInterferenceFunction *p_interference_function = new InterferenceFunction1DParaCrystal(m_corr_peak_distance,m_corr_width, m_corr_length); ParticleDecoration particle_decoration( new Particle(n_particle, new FormFactorCylinder(m_cylinder_height, m_cylinder_radius))); particle_decoration.addInterferenceFunction(p_interference_function); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - multi_layer->addLayer(air_layer_decorator); + air_layer.setDecoration(particle_decoration); + + multi_layer->addLayer(air_layer); multi_layer->addLayer(substrate_layer); return multi_layer; @@ -101,9 +101,10 @@ ISample *IsGISAXS04Para2DBuilder::buildSample() const p_interference_function->setProbabilityDistributions(pdf, pdf); ParticleDecoration particle_decoration( new Particle(n_particle, new FormFactorCylinder(m_cylinder_height, m_cylinder_radius))); particle_decoration.addInterferenceFunction(p_interference_function); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - multi_layer->addLayer(air_layer_decorator); + air_layer.setDecoration(particle_decoration); + + multi_layer->addLayer(air_layer); multi_layer->addLayer(substrate_layer); return multi_layer; diff --git a/Core/StandardSamples/IsGISAXS06Builder.cpp b/Core/StandardSamples/IsGISAXS06Builder.cpp index 4fc51f8676b4bd5208e94bf4b82b4425bded1f7d..93bc2e8b54421720b384e29fe562505542af6733 100644 --- a/Core/StandardSamples/IsGISAXS06Builder.cpp +++ b/Core/StandardSamples/IsGISAXS06Builder.cpp @@ -1,7 +1,6 @@ #include "IsGISAXS06Builder.h" #include "MultiLayer.h" #include "ParticleDecoration.h" -#include "LayerDecorator.h" #include "FormFactorCylinder.h" #include "Simulation.h" #include "Units.h" @@ -58,9 +57,10 @@ ISample *IsGISAXS06Lattice1Builder::buildSample() const particle_decoration.addParticleInfo(particle_info); particle_decoration.addInterferenceFunction(p_interference_function); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - multi_layer->addLayer(air_layer_decorator); + air_layer.setDecoration(particle_decoration); + + multi_layer->addLayer(air_layer); multi_layer->addLayer(substrate_layer); return multi_layer; @@ -113,9 +113,10 @@ ISample *IsGISAXS06Lattice2Builder::buildSample() const particle_decoration.addParticleInfo(particle_info); particle_decoration.addInterferenceFunction(p_interference_function); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - multi_layer->addLayer(air_layer_decorator); + air_layer.setDecoration(particle_decoration); + + multi_layer->addLayer(air_layer); multi_layer->addLayer(substrate_layer); return multi_layer; @@ -166,9 +167,10 @@ ISample *IsGISAXS06Lattice3Builder::buildSample() const new Particle(n_particle, ff_cyl.clone()), position, 1.0); particle_decoration.addParticleInfo(particle_info); particle_decoration.addInterferenceFunction(p_interference_function); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - multi_layer->addLayer(air_layer_decorator); + air_layer.setDecoration(particle_decoration); + + multi_layer->addLayer(air_layer); multi_layer->addLayer(substrate_layer); return multi_layer; @@ -228,9 +230,10 @@ ISample *IsGISAXS06Lattice4Builder::buildSample() const particle_decoration.addParticleInfo(particle_info); particle_decoration.addInterferenceFunction(p_interference_function); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - p_multi_layer->addLayer(air_layer_decorator); + air_layer.setDecoration(particle_decoration); + + p_multi_layer->addLayer(air_layer); p_multi_layer->addLayer(substrate_layer); return p_multi_layer; diff --git a/Core/StandardSamples/IsGISAXS09Builder.cpp b/Core/StandardSamples/IsGISAXS09Builder.cpp index 961615b36fa0c60a7c37dfb2bc8b8d9c04c57438..2c12bb0e520c65b8b70e14bf16f62f1715f8a977 100644 --- a/Core/StandardSamples/IsGISAXS09Builder.cpp +++ b/Core/StandardSamples/IsGISAXS09Builder.cpp @@ -1,7 +1,6 @@ #include "IsGISAXS09Builder.h" #include "FormFactorPyramid.h" #include "InterferenceFunctionNone.h" -#include "LayerDecorator.h" #include "MaterialManager.h" #include "MultiLayer.h" #include "ParticleDecoration.h" @@ -50,8 +49,9 @@ ISample *IsGISAXS09Builder::buildSample() const particle_decoration.addInterferenceFunction(new InterferenceFunctionNone()); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - multi_layer->addLayer(air_layer_decorator); + air_layer.setDecoration(particle_decoration); + + multi_layer->addLayer(air_layer); multi_layer->addLayer(substrate_layer); return multi_layer; @@ -106,8 +106,9 @@ ISample *IsGISAXS09RotatedBuilder::buildSample() const particle_decoration.addParticle(pyramid, transform); particle_decoration.addInterferenceFunction(new InterferenceFunctionNone()); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - multi_layer->addLayer(air_layer_decorator); + air_layer.setDecoration(particle_decoration); + + multi_layer->addLayer(air_layer); multi_layer->addLayer(substrate_layer); diff --git a/Core/Tools/inc/SamplePrintVisitor.h b/Core/Tools/inc/SamplePrintVisitor.h index 77029abf5bc423bc87bdc97d413d0a5693fc413f..f4388bafa4c8513ce1feb37e3b211cd4932a9d8e 100644 --- a/Core/Tools/inc/SamplePrintVisitor.h +++ b/Core/Tools/inc/SamplePrintVisitor.h @@ -13,7 +13,6 @@ public: void visit(const ISample *sample); void visit(const MultiLayer *sample); void visit(const Layer *sample); - void visit(const LayerDecorator *sample); void visit(const LayerInterface *sample); void visit(const ParticleDecoration *sample); void visit(const ParticleInfo *sample); diff --git a/Core/Tools/src/SamplePrintVisitor.cpp b/Core/Tools/src/SamplePrintVisitor.cpp index 4edecd8f629666adb4d4af4fc0f58c88f8034f6b..b2b5e6130ce86d1097b67ab05d5dae906a246c4f 100644 --- a/Core/Tools/src/SamplePrintVisitor.cpp +++ b/Core/Tools/src/SamplePrintVisitor.cpp @@ -2,7 +2,6 @@ #include "ISample.h" #include "FormFactors.h" #include "MultiLayer.h" -#include "LayerDecorator.h" #include "ParticleDecoration.h" #include "Particle.h" #include "InterferenceFunction1DParaCrystal.h" @@ -52,6 +51,7 @@ void SamplePrintVisitor::visit(const Layer *sample) } +/* void SamplePrintVisitor::visit(const LayerDecorator *sample) { assert(sample); @@ -69,7 +69,7 @@ void SamplePrintVisitor::visit(const LayerDecorator *sample) goBack(); } - +*/ void SamplePrintVisitor::visit(const LayerInterface *sample) { diff --git a/Doc/UserManual/UserManual.pdf b/Doc/UserManual/UserManual.pdf index 0eed5704e5fbbb3103926630873ffd6085647c4f..687115dafc8a2ab2fab10abd1df8aac576a24dcf 100644 Binary files a/Doc/UserManual/UserManual.pdf and b/Doc/UserManual/UserManual.pdf differ diff --git a/Doc/UserManual/UserManual.tex b/Doc/UserManual/UserManual.tex index 4817f7389fb800859a5dbf56ffcc99d7c2925bf8..9de3acd59f13d59ba061fe69c8eda1d3ce3024de 100644 --- a/Doc/UserManual/UserManual.tex +++ b/Doc/UserManual/UserManual.tex @@ -127,8 +127,6 @@ BornAgain - simulating and fitting X-ray and neutron scattering at grazing incid \author{Scientific Computing Group at FRM-II} - - \usepackage{eso-pic} \newcommand\BackgroundPic{% \put(0,0){% diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS06/IsGISAXS06.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS06/IsGISAXS06.cpp index f73596b961692ef4d4ee9dafd3849470b8a8cebf..2d3a7bc005dabfac7faeb29342cc1e98a9db93ac 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS06/IsGISAXS06.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS06/IsGISAXS06.cpp @@ -1,7 +1,6 @@ #include "IsGISAXS06.h" #include "MultiLayer.h" #include "ParticleDecoration.h" -#include "LayerDecorator.h" #include "FormFactorCylinder.h" #include "Simulation.h" #include "Units.h" diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS07/IsGISAXS07.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS07/IsGISAXS07.cpp index 926c2c723a7a1ca6f8bfaae60d1a79bac9b65c75..7013480447399259073246f3a6d5f075b18c59a3 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS07/IsGISAXS07.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS07/IsGISAXS07.cpp @@ -4,7 +4,6 @@ #include "MaterialManager.h" #include "FormFactorBox.h" #include "ParticleDecoration.h" -#include "LayerDecorator.h" #include "Simulation.h" #include "OutputDataIOFactory.h" #include "PositionParticleInfo.h" @@ -91,8 +90,8 @@ void FunctionalTests::IsGISAXS07::run() PositionParticleInfo particle_info10(new Particle(n_particle, ff10), m10, pos10, 0.5); particle_decoration.addParticleInfo(particle_info10); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - multi_layer.addLayer(air_layer_decorator); + air_layer.setDecoration(particle_decoration); + multi_layer.addLayer(air_layer); // --------------------- // building simulation diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS08/IsGISAXS08.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS08/IsGISAXS08.cpp index e285ff511b413650f2f9507eb6aca51bbba0abcb..a4909f77e47c5dfc298d3d17e7121eacdab5ea10 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS08/IsGISAXS08.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS08/IsGISAXS08.cpp @@ -1,7 +1,6 @@ #include "IsGISAXS08.h" #include "MultiLayer.h" #include "ParticleDecoration.h" -#include "LayerDecorator.h" #include "ParticleBuilder.h" #include "InterferenceFunction2DParaCrystal.h" #include "FormFactorCylinder.h" @@ -54,9 +53,10 @@ void FunctionalTests::IsGISAXS08::run2DDL() ParticleDecoration particle_decoration( new Particle(n_particle, new FormFactorCylinder(5*Units::nanometer, 5*Units::nanometer))); particle_decoration.addInterferenceFunction(p_interference_function); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - multi_layer.addLayer(air_layer_decorator); + air_layer.setDecoration(particle_decoration); + + multi_layer.addLayer(air_layer); multi_layer.addLayer(substrate_layer); // building simulation @@ -99,9 +99,10 @@ void FunctionalTests::IsGISAXS08::run2DDL2() ParticleDecoration particle_decoration( new Particle(n_particle, new FormFactorCylinder(5*Units::nanometer, 5*Units::nanometer))); particle_decoration.addInterferenceFunction(p_interference_function); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - multi_layer.addLayer(air_layer_decorator); + air_layer.setDecoration(particle_decoration); + + multi_layer.addLayer(air_layer); multi_layer.addLayer(substrate_layer); // building simulation diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS10/IsGISAXS10.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS10/IsGISAXS10.cpp index 461fea1c6e3a71ad1271adba29b1067904050bee..49832bade974f7003c6f2a67f86cfe4647e9c8f3 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS10/IsGISAXS10.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS10/IsGISAXS10.cpp @@ -1,7 +1,6 @@ #include "IsGISAXS10.h" #include "FormFactorCylinder.h" #include "InterferenceFunction1DParaCrystal.h" -#include "LayerDecorator.h" #include "MaterialManager.h" #include "MultiLayer.h" #include "OutputDataIOFactory.h" @@ -42,9 +41,9 @@ void FunctionalTests::IsGISAXS10::run() new FormFactorCylinder(5*Units::nanometer, 5*Units::nanometer))); particle_decoration.addInterferenceFunction(p_interference_function); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); + air_layer.setDecoration(particle_decoration); - multi_layer.addLayer(air_layer_decorator); + multi_layer.addLayer(air_layer); multi_layer.addLayer(substrate_layer); // building simulation diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS11/IsGISAXS11.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS11/IsGISAXS11.cpp index 6eacd5a005806a64197fd9c77089948b22ad51c1..497f8049457223c423055f2ea1fc7e453375cabb 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS11/IsGISAXS11.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS11/IsGISAXS11.cpp @@ -1,7 +1,6 @@ #include "IsGISAXS11.h" #include "FormFactorParallelepiped.h" #include "InterferenceFunctionNone.h" -#include "LayerDecorator.h" #include "MaterialManager.h" #include "MultiLayer.h" #include "OutputDataIOFactory.h" @@ -44,9 +43,10 @@ void FunctionalTests::IsGISAXS11::run() ParticleCoreShell particle(shell_particle, core_particle, core_position); ParticleDecoration particle_decoration(particle.clone()); particle_decoration.addInterferenceFunction(new InterferenceFunctionNone()); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - multi_layer.addLayer(air_layer_decorator); + air_layer.setDecoration(particle_decoration); + + multi_layer.addLayer(air_layer); // building simulation Simulation simulation; diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS15/IsGISAXS15.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS15/IsGISAXS15.cpp index 67adc58d08e621ba59a7cea74e61546f8bc7ebc1..6616cccc0409ddb360c6973227d2b02f71f071f5 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS15/IsGISAXS15.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS15/IsGISAXS15.cpp @@ -1,7 +1,6 @@ #include "IsGISAXS15.h" #include "MultiLayer.h" #include "ParticleDecoration.h" -#include "LayerDecorator.h" #include "ParticleBuilder.h" #include "InterferenceFunction1DParaCrystal.h" #include "FormFactorCylinder.h" @@ -52,8 +51,10 @@ void FunctionalTests::IsGISAXS15::run() p_parameters->fixRatioBetweenParameters("height", "radius", 1.0); particle_decoration.addInterferenceFunction(p_interference_function); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - multi_layer.addLayer(air_layer_decorator); + + air_layer.setDecoration(particle_decoration); + + multi_layer.addLayer(air_layer); // building simulation Simulation simulation; diff --git a/Tests/FunctionalTests/TestCore/MesoCrystal1/SampleBuilder.cpp b/Tests/FunctionalTests/TestCore/MesoCrystal1/SampleBuilder.cpp index 483efcba3b9559faca4ee26abf27110fa8474bf9..8486a43d6ade2815dfb149fbd137e7e141e92da9 100644 --- a/Tests/FunctionalTests/TestCore/MesoCrystal1/SampleBuilder.cpp +++ b/Tests/FunctionalTests/TestCore/MesoCrystal1/SampleBuilder.cpp @@ -6,7 +6,6 @@ #include "Crystal.h" #include "MesoCrystal.h" #include "ParticleDecoration.h" -#include "LayerDecorator.h" #include "Units.h" #include "MaterialManager.h" #include "FormFactorSphereGaussianRadius.h" @@ -86,12 +85,13 @@ ISample* SampleBuilder::buildSample() const particle_decoration.setTotalParticleSurfaceDensity(surface_density); particle_decoration.addInterferenceFunction(p_interference_funtion); - LayerDecorator avg_layer_decorator(avg_layer, particle_decoration); + + avg_layer.setDecoration(particle_decoration); LayerRoughness roughness(m_roughness, 0.3, 500.0*Units::nanometer); p_multi_layer->addLayer(air_layer); - p_multi_layer->addLayer(avg_layer_decorator); + p_multi_layer->addLayer(avg_layer); p_multi_layer->addLayerWithTopRoughness(substrate_layer, roughness); return p_multi_layer; diff --git a/Tests/FunctionalTests/TestFit/TestFit01/TestFit01.cpp b/Tests/FunctionalTests/TestFit/TestFit01/TestFit01.cpp index 0bf98b94ec6aa771745deecbc781b1eda0dd54bd..b4c456b49f15426cb406f2d7d981e938bdc8fb99 100644 --- a/Tests/FunctionalTests/TestFit/TestFit01/TestFit01.cpp +++ b/Tests/FunctionalTests/TestFit/TestFit01/TestFit01.cpp @@ -2,7 +2,6 @@ #include "MaterialManager.h" #include "MessageService.h" #include "MultiLayer.h" -#include "LayerDecorator.h" #include "ParticleDecoration.h" #include "InterferenceFunctions.h" #include "FormFactorCylinder.h" @@ -117,8 +116,10 @@ ISample *TestFit01::buildSample() complex_t n_particle(1.0-6e-4, 2e-8); ParticleDecoration particle_decoration( new Particle(n_particle, new FormFactorCylinder(m_cylinder_height, m_cylinder_radius))); particle_decoration.addInterferenceFunction(new InterferenceFunctionNone()); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - multi_layer->addLayer(air_layer_decorator); + + air_layer.setDecoration(particle_decoration); + + multi_layer->addLayer(air_layer); return multi_layer; } diff --git a/Tests/FunctionalTests/TestFit/TestFit02/SampleBuilder.cpp b/Tests/FunctionalTests/TestFit/TestFit02/SampleBuilder.cpp index 1317e42b505fc8f5f9172a201408ec4334627dcb..c996ecea4478fa8d671157601b38dde03752da30 100644 --- a/Tests/FunctionalTests/TestFit/TestFit02/SampleBuilder.cpp +++ b/Tests/FunctionalTests/TestFit/TestFit02/SampleBuilder.cpp @@ -1,6 +1,5 @@ #include "SampleBuilder.h" #include "MultiLayer.h" -#include "LayerDecorator.h" #include "ParticleDecoration.h" #include "InterferenceFunctions.h" #include "FormFactorCylinder.h" @@ -54,8 +53,10 @@ ISample *SampleBuilder::buildSample() const particle_decoration.addParticle(new Particle(n_particle, new FormFactorCylinder(m_cylinder_height, m_cylinder_radius)),0.0, m_cylinder_ratio); particle_decoration.addParticle(new Particle(n_particle, new FormFactorPrism3(m_prism3_height, m_prism3_half_side)), 0.0, 1.0 - m_cylinder_ratio); particle_decoration.addInterferenceFunction(new InterferenceFunctionNone()); - LayerDecorator air_layer_decorator(air_layer, particle_decoration); - multi_layer->addLayer(air_layer_decorator); + + air_layer.setDecoration(particle_decoration); + + multi_layer->addLayer(air_layer); multi_layer->addLayer(substrate_layer); return multi_layer; } diff --git a/dev-tools/python-bindings/MakePyCore.py b/dev-tools/python-bindings/MakePyCore.py index a1f51c606f4d5d20e2a156e261e4120bbc611ce2..f7b8b5b2a58747cd6f73656c2c880283aad0c092 100644 --- a/dev-tools/python-bindings/MakePyCore.py +++ b/dev-tools/python-bindings/MakePyCore.py @@ -85,7 +85,7 @@ include_classes = [ "Lattice2DIFParameters", "LatticeBasis", "Layer", -"LayerDecorator", +#"LayerDecorator", "LayerInterface", "LayerRoughness", "MaterialManager", diff --git a/shared.pri b/shared.pri index b7e1937aa875952ad040126628aed149d36567f1..8e044455a20645a562ccaacd37071cc0428dd38b 100644 --- a/shared.pri +++ b/shared.pri @@ -126,7 +126,8 @@ win32 { isEmpty(BOOST_LIB): message("Can't find" $${BOOST_LIBFILES} "in" $${BOOST_LIB_LOCATIONS}) INCLUDEPATH *= $${BOOST_INCLUDE} LIBS *= -L$${BOOST_LIB} -LIBS += -lboost_program_options -lboost_iostreams -lboost_system -lboost_filesystem -lboost_regex -lboost_thread -lz +LIBS += -lboost_program_options -lboost_iostreams -lboost_system -lboost_filesystem -lboost_regex -lboost_thread +#LIBS += -lboost_program_options -lboost_iostreams -lboost_system -lboost_filesystem -lboost_regex -lboost_thread -lz # checking special case when system doesn't have libboost_thread library but have libboost_thread-mt !win32 { NumberOfSuchFiles=$$system(ls $${BOOST_LIB}/libboost_thread-mt* 2> /dev/null | wc -l)