diff --git a/App/src/DrawHelper.cpp b/App/src/DrawHelper.cpp index 176184889cd51f16d7cfd21fb16b753df4c27c8b..60db046937e35132a8fb671baf698480542cc65b 100644 --- a/App/src/DrawHelper.cpp +++ b/App/src/DrawHelper.cpp @@ -409,7 +409,7 @@ void DrawHelper::DrawMesoCrystal(const MultiLayer *sample) const LayerDecorator *layer_decor = dynamic_cast<const LayerDecorator *>(sample->getLayer(1)); if( !layer_decor ) throw RuntimeErrorException("DrawHelper::DrawMesoCrystal() -> layer_decor panic"); - const MesoCrystal *meso = dynamic_cast<const MesoCrystal *>(layer_decor->getDecoration()->getNanoParticleInfo(0)->getNanoParticle()); + const MesoCrystal *meso = dynamic_cast<const MesoCrystal *>(layer_decor->getDecoration()->getParticleInfo(0)->getParticle()); if( !meso ) throw RuntimeErrorException("DrawHelper::DrawMesoCrystal() -> meso panic"); const NanoParticleCrystal *nano_crystal = dynamic_cast<const NanoParticleCrystal *>(meso->getClusteredNanoParticles()); if( !nano_crystal ) throw RuntimeErrorException("DrawHelper::DrawMesoCrystal() -> nano_crystal panic"); diff --git a/App/src/StandardSamples.cpp b/App/src/StandardSamples.cpp index ff37044be57f7a5028dae97b931fa6e7e5874346..eb2a958f2a0203671fc525a757a128f229270880 100644 --- a/App/src/StandardSamples.cpp +++ b/App/src/StandardSamples.cpp @@ -250,8 +250,8 @@ ISample *StandardSamples::IsGISAXS1_CylinderAndPrism() Layer substrate_layer; substrate_layer.setMaterial(p_substrate_material); NanoParticleDecoration particle_decoration; - particle_decoration.addNanoParticle(new Particle(n_particle, new FormFactorCylinder(5*Units::nanometer, 5*Units::nanometer)),0.0, 0.5); - particle_decoration.addNanoParticle(new Particle(n_particle, new FormFactorPrism3(5*Units::nanometer, 5*Units::nanometer)), 0.0, 0.5); + particle_decoration.addParticle(new Particle(n_particle, new FormFactorCylinder(5*Units::nanometer, 5*Units::nanometer)),0.0, 0.5); + particle_decoration.addParticle(new Particle(n_particle, new FormFactorPrism3(5*Units::nanometer, 5*Units::nanometer)), 0.0, 0.5); particle_decoration.addInterferenceFunction(new InterferenceFunctionNone()); LayerDecorator air_layer_decorator(air_layer, particle_decoration); @@ -281,11 +281,11 @@ ISample *StandardSamples::IsGISAXS2_CylindersMixture() double radius2 = 10*Units::nanometer; double height1 = radius1; double height2 = radius2; - FormFactorCylinder ff_cylinder1(height1, radius1); - Particle cylinder1(n_particle, ff_cylinder1 ); + FormFactorCylinder *p_ff_cylinder1 = new FormFactorCylinder(height1, radius1); + Particle cylinder1(n_particle, p_ff_cylinder1 ); - FormFactorCylinder ff_cylinder2(height2, radius2); - Particle cylinder2(n_particle, ff_cylinder2 ); + FormFactorCylinder *p_ff_cylinder2 = new FormFactorCylinder(height2, radius2); + Particle cylinder2(n_particle, p_ff_cylinder2 ); // radius of nanoparticles will be sampled with gaussian probability int nbins=150; @@ -369,8 +369,8 @@ ISample *StandardSamples::IsGISAXS3_CylinderBASize() // preparing prototype of nano particle double radius = 5*Units::nanometer; double sigma = 0.2*radius; - FormFactorCylinder ff_cylinder( 5*Units::nanometer, radius); - Particle nano_particle(n_particle, ff_cylinder); + FormFactorCylinder *p_ff_cylinder = new FormFactorCylinder( 5*Units::nanometer, radius); + Particle nano_particle(n_particle, p_ff_cylinder); // radius of nanoparticles will be sampled with gaussian probability int nbins(100), nfwhm(2); @@ -439,7 +439,7 @@ ISample *StandardSamples::IsGISAXS9_RotatedPyramid() NanoParticleDecoration particle_decoration; - particle_decoration.addNanoParticle(pyramid, transform); + particle_decoration.addParticle(pyramid, transform); particle_decoration.addInterferenceFunction(new InterferenceFunctionNone()); LayerDecorator air_layer_decorator(air_layer, particle_decoration); @@ -516,7 +516,7 @@ ISample *StandardSamples::MesoCrystal1() IInterferenceFunction *p_interference_funtion = new InterferenceFunction1DParaCrystal(800.0*Units::nanometer, 50*Units::nanometer, 1e7*Units::nanometer); NanoParticleDecoration particle_decoration(meso.clone(), 0.0, 0.5); - particle_decoration.addNanoParticle(meso2.clone(), 0.0, 0.5); + particle_decoration.addParticle(meso2.clone(), 0.0, 0.5); particle_decoration.addInterferenceFunction(p_interference_funtion); LayerDecorator air_layer_decorator(air_layer, particle_decoration); @@ -579,7 +579,7 @@ ISample *StandardSamples::MesoCrystal2() NanoParticleCrystal npc(basis, lat); MesoCrystal *meso_crystal = new MesoCrystal(npc.clone(), p_meso_form_factor->clone()); - particle_decoration.addNanoParticle(meso_crystal, 0.2*Units::micrometer); + particle_decoration.addParticle(meso_crystal, 0.2*Units::micrometer); particle_decoration.setTotalParticleSurfaceDensity(surface_density); particle_decoration.addInterferenceFunction(p_interference_funtion); diff --git a/App/src/TestMesoCrystal.cpp b/App/src/TestMesoCrystal.cpp index 88391b66771fdd75fe51ffdc56b3994daf8f838f..e7521d382ff82848bb43408c00c65cdcf6ac9c7d 100644 --- a/App/src/TestMesoCrystal.cpp +++ b/App/src/TestMesoCrystal.cpp @@ -106,7 +106,7 @@ void TestMesoCrystal::initializeSample() Geometry::RotateZ3D transform1(phi_start + i*phi_step); Geometry::RotateY3D transform2(alpha_start + j*alpha_step); Geometry::Transform3D *p_total_transform = new Geometry::Transform3D(transform1*transform2); - particle_decoration.addNanoParticle(createMesoCrystal(6.1*Units::nanometer, + particle_decoration.addParticle(createMesoCrystal(6.1*Units::nanometer, n_particle_adapted, &ff_meso), p_total_transform, 0.2*Units::micrometer); } } diff --git a/App/src/TestRootTree.cpp b/App/src/TestRootTree.cpp index 14f989d43102d262f55895c81cdfaa0d67273adc..e808f8d2166e694dcd72d42c28ff26df0e163acf 100644 --- a/App/src/TestRootTree.cpp +++ b/App/src/TestRootTree.cpp @@ -398,7 +398,7 @@ void TestRootTree::initializeMesoCrystal(double meso_alpha, double meso_phi, dou Geometry::RotateZ3D transform1(meso_phi); Geometry::RotateY3D transform2(meso_alpha); Geometry::Transform3D *p_total_transform = new Geometry::Transform3D(transform1*transform2); - particle_decoration.addNanoParticle(createMesoCrystal(R, n_particle_adapted, &ff_meso), p_total_transform, 0.2*Units::micrometer); + particle_decoration.addParticle(createMesoCrystal(R, n_particle_adapted, &ff_meso), p_total_transform, 0.2*Units::micrometer); particle_decoration.setTotalParticleSurfaceDensity(surface_density); particle_decoration.addInterferenceFunction(p_interference_funtion); diff --git a/Core/Algorithms/inc/DiffuseDWBASimulation.h b/Core/Algorithms/inc/DiffuseDWBASimulation.h index dedab8a417fe6cd4cca2becc1ab1b547cafbb9be..a2a6f2d0b08ded479733869257fac7246848b5e1 100644 --- a/Core/Algorithms/inc/DiffuseDWBASimulation.h +++ b/Core/Algorithms/inc/DiffuseDWBASimulation.h @@ -15,7 +15,7 @@ //! @date Sep 4, 2012 #include "LayerDWBASimulation.h" -#include "DiffuseNanoParticleInfo.h" +#include "DiffuseParticleInfo.h" class DiffuseDWBASimulation: public LayerDWBASimulation { @@ -25,7 +25,7 @@ public: virtual void run(); size_t getSize() const { return m_np_infos.size(); } - void addNanoParticleInfo(DiffuseNanoParticleInfo *p_info); + void addNanoParticleInfo(DiffuseParticleInfo *p_info); void setRefractiveIndex(complex_t n) { m_refractive_index = n; } void setSurfaceDensity(double surface_density) { m_surface_density = surface_density; } void rescaleAbundances(double factor); @@ -33,7 +33,7 @@ public: protected: complex_t m_refractive_index; double m_surface_density; - std::vector<DiffuseNanoParticleInfo *> m_np_infos; + std::vector<DiffuseParticleInfo *> m_np_infos; }; #endif /* DIFFUSEDWBASIMULATION_H_ */ diff --git a/Core/Algorithms/src/DiffuseDWBASimulation.cpp b/Core/Algorithms/src/DiffuseDWBASimulation.cpp index 6338a8d57d4a99a5015157caf5342c6c56439649..99c693054cc42a58859c49d07eb24a76b6ab77f7 100644 --- a/Core/Algorithms/src/DiffuseDWBASimulation.cpp +++ b/Core/Algorithms/src/DiffuseDWBASimulation.cpp @@ -23,8 +23,8 @@ void DiffuseDWBASimulation::run() std::vector<IFormFactor *> form_factors; // collect all nanoparticle formfactors and create dwba formfactors for these for (size_t np_index=0; np_index<number_of_nps; ++np_index) { - NanoParticleInfo *p_np_info = m_np_infos[np_index]; - Particle *p_np = p_np_info->getNanoParticle()->clone(); + ParticleInfo *p_np_info = m_np_infos[np_index]; + Particle *p_np = p_np_info->getParticle()->clone(); double depth = p_np_info->getDepth(); p_np->setAmbientRefractiveIndex(m_refractive_index); @@ -68,7 +68,7 @@ void DiffuseDWBASimulation::run() } } -void DiffuseDWBASimulation::addNanoParticleInfo(DiffuseNanoParticleInfo *p_info) +void DiffuseDWBASimulation::addNanoParticleInfo(DiffuseParticleInfo *p_info) { m_np_infos.push_back(p_info); } diff --git a/Core/Algorithms/src/LayerDecoratorDWBASimulation.cpp b/Core/Algorithms/src/LayerDecoratorDWBASimulation.cpp index 15354cd80e692e85db64aa849e71968ed1383f7e..f07b23824aa7b39f7509d769bba309698745b0e1 100644 --- a/Core/Algorithms/src/LayerDecoratorDWBASimulation.cpp +++ b/Core/Algorithms/src/LayerDecoratorDWBASimulation.cpp @@ -41,9 +41,9 @@ void LayerDecoratorDWBASimulation::run() // NanoParticle *p_particle = p_decoration->getNanoParticle(particle_index)->clone(); // double depth = p_decoration->getDepthOfNanoParticle(particle_index); // Geometry::Transform3D *transform = p_decoration->getTransformationOfNanoParticle(particle_index); - Particle *p_particle = p_decoration->getNanoParticleInfo(particle_index)->getNanoParticle()->clone(); - double depth = p_decoration->getNanoParticleInfo(particle_index)->getDepth(); - const Geometry::Transform3D *transform = p_decoration->getNanoParticleInfo(particle_index)->getTransform3D(); + Particle *p_particle = p_decoration->getParticleInfo(particle_index)->getParticle()->clone(); + double depth = p_decoration->getParticleInfo(particle_index)->getDepth(); + const Geometry::Transform3D *transform = p_decoration->getParticleInfo(particle_index)->getTransform3D(); p_particle->setAmbientRefractiveIndex(n_layer); complex_t wavevector_scattering_factor = M_PI/lambda/lambda; diff --git a/Core/Core.pro b/Core/Core.pro index 9d814485371718dc6b081b1fc2546f686f308dcc..6e11201c5dc739b7c7903c37f536de6efb10c483 100644 --- a/Core/Core.pro +++ b/Core/Core.pro @@ -47,7 +47,7 @@ SOURCES += \ Geometry/src/Transform3D.cpp \ Geometry/src/Vector3D.cpp \ \ - Samples/src/DiffuseNanoParticleInfo.cpp \ + Samples/src/DiffuseParticleInfo.cpp \ Samples/src/FormFactorCylinder.cpp \ Samples/src/FormFactorFullSphere.cpp \ Samples/src/FormFactorGauss.cpp \ @@ -75,7 +75,7 @@ SOURCES += \ Samples/src/NanoParticleCrystal.cpp \ Samples/src/NanoParticleCrystalFormFactor.cpp \ Samples/src/NanoParticleDecoration.cpp \ - Samples/src/NanoParticleInfo.cpp \ + Samples/src/ParticleInfo.cpp \ Samples/src/ParameterPool.cpp \ Samples/src/WeightedFormFactor.cpp \ \ @@ -141,7 +141,7 @@ HEADERS += \ Geometry/inc/Transform3D.icc \ Geometry/inc/Vector3D.h \ \ - Samples/inc/DiffuseNanoParticleInfo.h \ + Samples/inc/DiffuseParticleInfo.h \ Samples/inc/FormFactorCylinder.h \ Samples/inc/FormFactorFullSphere.h \ Samples/inc/FormFactorGauss.h \ @@ -176,7 +176,7 @@ HEADERS += \ Samples/inc/NanoParticleCrystal.h \ Samples/inc/NanoParticleCrystalFormFactor.h \ Samples/inc/NanoParticleDecoration.h \ - Samples/inc/NanoParticleInfo.h \ + Samples/inc/ParticleInfo.h \ Samples/inc/ParameterPool.h \ Samples/inc/WeightedFormFactor.h \ \ diff --git a/Core/PythonAPI/src/PythonInterface_classes_1.cpp b/Core/PythonAPI/src/PythonInterface_classes_1.cpp index a4ca071187ec973e23c2ffac2a96b314e5a3af90..28cecc6d5c1385484557c76e079a6587ee68479f 100644 --- a/Core/PythonAPI/src/PythonInterface_classes_1.cpp +++ b/Core/PythonAPI/src/PythonInterface_classes_1.cpp @@ -635,10 +635,10 @@ void register_classes_1(){ } { //::std::vector< DiffuseNanoParticleInfo* > - typedef bp::class_< std::vector< DiffuseNanoParticleInfo* > > vector_less__DiffuseNanoParticleInfo_ptr___greater__exposer_t; + typedef bp::class_< std::vector< DiffuseParticleInfo* > > vector_less__DiffuseNanoParticleInfo_ptr___greater__exposer_t; vector_less__DiffuseNanoParticleInfo_ptr___greater__exposer_t vector_less__DiffuseNanoParticleInfo_ptr___greater__exposer = vector_less__DiffuseNanoParticleInfo_ptr___greater__exposer_t( "vector_less__DiffuseNanoParticleInfo_ptr___greater_" ); bp::scope vector_less__DiffuseNanoParticleInfo_ptr___greater__scope( vector_less__DiffuseNanoParticleInfo_ptr___greater__exposer ); - vector_less__DiffuseNanoParticleInfo_ptr___greater__exposer.def( bp::vector_indexing_suite< ::std::vector< DiffuseNanoParticleInfo* > >() ); + vector_less__DiffuseNanoParticleInfo_ptr___greater__exposer.def( bp::vector_indexing_suite< ::std::vector< DiffuseParticleInfo* > >() ); } bp::class_< Experiment_wrapper, boost::noncopyable >( "Experiment", bp::init< >() ) diff --git a/Core/PythonAPI/src/PythonInterface_classes_2.cpp b/Core/PythonAPI/src/PythonInterface_classes_2.cpp index a6caccf9f256d49607d9d64df220b2b337b8c201..7992c7d966dd685951a7f79810dee6a8006ae85f 100644 --- a/Core/PythonAPI/src/PythonInterface_classes_2.cpp +++ b/Core/PythonAPI/src/PythonInterface_classes_2.cpp @@ -342,7 +342,7 @@ struct IClusteredNanoParticles_wrapper : IClusteredNanoParticles, bp::wrapper< I return func_clone( ); } - virtual ::std::vector< DiffuseNanoParticleInfo* > * createDiffuseNanoParticleInfo( double depth, double weight, ::Geometry::Transform3D const & transform, double meso_volume ) const { + virtual ::std::vector< DiffuseParticleInfo* > * createDiffuseNanoParticleInfo( double depth, double weight, ::Geometry::Transform3D const & transform, double meso_volume ) const { bp::override func_createDiffuseNanoParticleInfo = this->get_override( "createDiffuseNanoParticleInfo" ); return func_createDiffuseNanoParticleInfo( depth, weight, boost::ref(transform), meso_volume ); } @@ -911,7 +911,7 @@ void register_classes_2(){ , bp::return_value_policy< bp::reference_existing_object >() ) .def( "createDiffuseNanoParticleInfo" - , bp::pure_virtual( (::std::vector< DiffuseNanoParticleInfo* > * ( ::IClusteredNanoParticles::* )( double,double,::Geometry::Transform3D const &,double ) const)(&::IClusteredNanoParticles::createDiffuseNanoParticleInfo) ) + , bp::pure_virtual( (::std::vector< DiffuseParticleInfo* > * ( ::IClusteredNanoParticles::* )( double,double,::Geometry::Transform3D const &,double ) const)(&::IClusteredNanoParticles::createDiffuseNanoParticleInfo) ) , ( bp::arg("depth"), bp::arg("weight"), bp::arg("transform"), bp::arg("meso_volume") ) /* undefined call policies */ ) .def( diff --git a/Core/PythonAPI/src/PythonInterface_classes_3.cpp b/Core/PythonAPI/src/PythonInterface_classes_3.cpp index 4235980791997b7dc466b688606991d85c37aa1a..a8048bdbfcc327f4afb67d82a4ab970afd52d1d1 100644 --- a/Core/PythonAPI/src/PythonInterface_classes_3.cpp +++ b/Core/PythonAPI/src/PythonInterface_classes_3.cpp @@ -852,11 +852,11 @@ void register_classes_3(){ , ( bp::arg("interference_function") ) ) .def( "addNanoParticle" - , (void ( ::NanoParticleDecoration::* )( ::Particle const &,::Geometry::Transform3D const &,double,double ) )( &::NanoParticleDecoration::addNanoParticle ) + , (void ( ::NanoParticleDecoration::* )( ::Particle const &,::Geometry::Transform3D const &,double,double ) )( &::NanoParticleDecoration::addParticle ) , ( bp::arg("p_particle"), bp::arg("transform"), bp::arg("depth")=0, bp::arg("abundance")=1.0e+0 ) ) .def( "addNanoParticle" - , (void ( ::NanoParticleDecoration::* )( ::Particle const &,double,double ) )( &::NanoParticleDecoration::addNanoParticle ) + , (void ( ::NanoParticleDecoration::* )( ::Particle const &,double,double ) )( &::NanoParticleDecoration::addParticle ) , ( bp::arg("p_particle"), bp::arg("depth")=0.0, bp::arg("abundance")=1.0e+0 ) ) .def( "setTotalParticleSurfaceDensity" diff --git a/Core/Samples/inc/DiffuseNanoParticleInfo.h b/Core/Samples/inc/DiffuseParticleInfo.h similarity index 76% rename from Core/Samples/inc/DiffuseNanoParticleInfo.h rename to Core/Samples/inc/DiffuseParticleInfo.h index 59d6e41710b57b78e91ed8f2dc560355b7cb6e9e..8d2b1896f8e9b6be50c10bc8f781d857af922bf9 100644 --- a/Core/Samples/inc/DiffuseNanoParticleInfo.h +++ b/Core/Samples/inc/DiffuseParticleInfo.h @@ -1,5 +1,5 @@ -#ifndef DIFFUSENANOPARTICLEINFO_H_ -#define DIFFUSENANOPARTICLEINFO_H_ +#ifndef DIFFUSEPARTICLEINFO_H_ +#define DIFFUSEPARTICLEINFO_H_ // ******************************************************************** // * The BornAgain project * // * Simulation of neutron and x-ray scattering at grazing incidence * @@ -9,18 +9,18 @@ // * eget quam orci. Quisque porta varius dui, quis posuere nibh * // * mollis quis. Mauris commodo rhoncus porttitor. * // ******************************************************************** -//! @file DiffuseNanoParticleInfo.h +//! @file DiffuseParticleInfo.h //! @brief Definition of //! @author Scientific Computing Group at FRM II //! @date Sep 4, 2012 -#include "NanoParticleInfo.h" +#include "ParticleInfo.h" -class DiffuseNanoParticleInfo: public NanoParticleInfo +class DiffuseParticleInfo: public ParticleInfo { public: - DiffuseNanoParticleInfo(Particle *p_particle, Geometry::Transform3D *transform=0, double depth=0, double abundance=0); - virtual ~DiffuseNanoParticleInfo(); + DiffuseParticleInfo(Particle *p_particle, Geometry::Transform3D *transform=0, double depth=0, double abundance=0); + virtual ~DiffuseParticleInfo(); //! scale abundance void scaleAbundance(double factor) { m_abundance *= factor; } @@ -38,4 +38,4 @@ protected: }; -#endif /* DIFFUSENANOPARTICLEINFO_H_ */ +#endif /* DIFFUSEPARTICLEINFO_H_ */ diff --git a/Core/Samples/inc/IClusteredNanoParticles.h b/Core/Samples/inc/IClusteredNanoParticles.h index 1e8c02abd2cdbeac13c39281301441ed5c9d2d45..4514f73d8286ed40cefd01795d7b54ac7772515f 100644 --- a/Core/Samples/inc/IClusteredNanoParticles.h +++ b/Core/Samples/inc/IClusteredNanoParticles.h @@ -16,7 +16,7 @@ #include "IFormFactor.h" #include "ICompositeSample.h" -#include "NanoParticleInfo.h" +#include "ParticleInfo.h" #include "Transform3D.h" //- ------------------------------------------------------------------- @@ -39,7 +39,7 @@ public: virtual IFormFactor *createTotalFormFactor(const IFormFactor &meso_crystal_form_factor, complex_t ambient_refractive_index) const=0; - virtual std::vector<DiffuseNanoParticleInfo *> *createDiffuseNanoParticleInfo(double depth, double weight, + virtual std::vector<DiffuseParticleInfo *> *createDiffuseNanoParticleInfo(double depth, double weight, const Geometry::Transform3D &transform, double meso_volume) const=0; }; diff --git a/Core/Samples/inc/MesoCrystal.h b/Core/Samples/inc/MesoCrystal.h index 75e7ab01f1d0852a1af6ac43eb753f884621aea9..b0818fa4f3ea69bc31493333576cfa86c7b38f8f 100644 --- a/Core/Samples/inc/MesoCrystal.h +++ b/Core/Samples/inc/MesoCrystal.h @@ -47,7 +47,7 @@ public: const IClusteredNanoParticles *getClusteredNanoParticles() const {return mp_nano_particle_structure; } - virtual std::vector<DiffuseNanoParticleInfo *> *createDiffuseNanoParticleInfo(double depth, double weight, + virtual std::vector<DiffuseParticleInfo *> *createDiffuseParticleInfo(double depth, double weight, const Geometry::Transform3D &transform) const; private: diff --git a/Core/Samples/inc/NanoParticleCrystal.h b/Core/Samples/inc/NanoParticleCrystal.h index e6662ce512bfdae460d38796f36104f0c423c6e2..98b333a9efca78e608ebbe8fbc08dd6a2ce733a3 100644 --- a/Core/Samples/inc/NanoParticleCrystal.h +++ b/Core/Samples/inc/NanoParticleCrystal.h @@ -49,7 +49,7 @@ public: void setDWFactor(double dw_factor) { m_dw_factor = dw_factor; } - virtual std::vector<DiffuseNanoParticleInfo *> *createDiffuseNanoParticleInfo(double depth, double weight, + virtual std::vector<DiffuseParticleInfo *> *createDiffuseNanoParticleInfo(double depth, double weight, const Geometry::Transform3D &transform, double meso_volume) const; private: diff --git a/Core/Samples/inc/NanoParticleDecoration.h b/Core/Samples/inc/NanoParticleDecoration.h index 70f27b74f3ae12d1cf99b972f25c667e04e3afcf..c7acfeaacb061fb635812e8d00d746f97997dfdb 100644 --- a/Core/Samples/inc/NanoParticleDecoration.h +++ b/Core/Samples/inc/NanoParticleDecoration.h @@ -16,7 +16,7 @@ #include "IDecoration.h" #include "Particle.h" -#include "NanoParticleInfo.h" +#include "ParticleInfo.h" #include "IInterferenceFunction.h" #include "IInterferenceFunctionStrategy.h" #include "Transform3D.h" @@ -37,24 +37,24 @@ public: /// add nano particle giving depth and transformation - void addNanoParticle(Particle *p_particle, Geometry::Transform3D *transform=0, double depth=0, double abundance=1.0); - void addNanoParticle(const Particle &p_particle, const Geometry::Transform3D &transform, double depth=0, double abundance=1.0); + void addParticle(Particle *p_particle, Geometry::Transform3D *transform=0, double depth=0, double abundance=1.0); + void addParticle(const Particle &p_particle, const Geometry::Transform3D &transform, double depth=0, double abundance=1.0); /// add nano particle giving depth - void addNanoParticle(const Particle &p_particle, double depth=0.0, double abundance=1.0); - void addNanoParticle(Particle *p_particle, double depth=0.0, double abundance=1.0); + void addParticle(const Particle &p_particle, double depth=0.0, double abundance=1.0); + void addParticle(Particle *p_particle, double depth=0.0, double abundance=1.0); /// Add nano particle info - void addNanoParticleInfo(const NanoParticleInfo &p_info); + void addParticleInfo(const ParticleInfo &p_info); /// Get number of particles size_t getNumberOfParticles() const { return m_particles.size(); } /// get information about nano particle with index - const NanoParticleInfo *getNanoParticleInfo(size_t index) const; + const ParticleInfo *getParticleInfo(size_t index) const; /// Get abundance fraction of particle with index - double getAbundanceFractionOfNanoParticle(size_t index) const; + double getAbundanceFractionOfParticle(size_t index) const; /// Add interference function @@ -80,7 +80,7 @@ private: NanoParticleDecoration &operator=(const NanoParticleDecoration &); //! adding nano particle information with simultaneous registration in parent class - void addAndRegisterNanoParticleInfo(NanoParticleInfo *child) + void addAndRegisterParticleInfo(ParticleInfo *child) { m_total_abundance += child->getAbundance(); m_particles.push_back(child); @@ -94,7 +94,7 @@ private: registerChild(child); } - std::vector<NanoParticleInfo *> m_particles; + std::vector<ParticleInfo *> m_particles; ///< Vector of the types of nano particles std::vector<IInterferenceFunction *> m_interference_functions; ///< Currently only a scalar interference function (instead of matrix) diff --git a/Core/Samples/inc/Particle.h b/Core/Samples/inc/Particle.h index 08adddc1b9649a60ed5bd1a899afb55fa47b28d5..2c8b6ec5d17f09886e13dc3a44bb56dce72ad88d 100644 --- a/Core/Samples/inc/Particle.h +++ b/Core/Samples/inc/Particle.h @@ -1,5 +1,5 @@ -#ifndef NANOPARTICLE_H -#define NANOPARTICLE_H +#ifndef PARTICLE_H +#define PARTICLE_H // ******************************************************************** // * The BornAgain project * // * Simulation of neutron and x-ray scattering at grazing incidence * @@ -18,24 +18,19 @@ #include "IFormFactor.h" #include "FormFactorDecoratorRefractiveIndex.h" -class DiffuseNanoParticleInfo; +class DiffuseParticleInfo; //- ------------------------------------------------------------------- -//! @class NanoParticle -//! @brief Definition of a nanoparticle with a form factor +//! @class Particle +//! @brief Definition of a particle with a form factor and refractive index //- ------------------------------------------------------------------- class Particle : public ICompositeSample { public: Particle(complex_t refractive_index, IFormFactor* p_form_factor = 0); - Particle(complex_t refractive_index, const IFormFactor &p_form_factor); virtual ~Particle(); virtual Particle *clone() const; -// virtual complex_t getRefractiveIndex() const -// { -// return m_refractive_index; -// } - + //! Set the refractive index of the ambient material (which influences its scattering power) virtual void setAmbientRefractiveIndex(complex_t refractive_index) { m_ambient_refractive_index = refractive_index; @@ -49,6 +44,7 @@ public: return p_ff; } + //! set the from factor of the particle virtual void setFormFactor(IFormFactor* p_form_factor) { if (p_form_factor != mp_form_factor) { @@ -60,8 +56,8 @@ public: //! return form factor of the particle const IFormFactor *getFormFactor() const { return mp_form_factor;} - //! create list of contained nanoparticles for diffuse calculations - virtual std::vector<DiffuseNanoParticleInfo *> *createDiffuseNanoParticleInfo(double depth, double weight, + //! create list of contained particles for diffuse calculations + virtual std::vector<DiffuseParticleInfo *> *createDiffuseParticleInfo(double depth, double weight, const Geometry::Transform3D &transform) const { (void)depth; (void)weight; @@ -71,15 +67,15 @@ public: protected: complex_t m_ambient_refractive_index; + complex_t m_refractive_index; + IFormFactor* mp_form_factor; + ///< pointer to the form factor private: //! copy constructor and assignment operator are hidden since there is a clone method Particle(const Particle &); Particle &operator=(const Particle &); - complex_t m_refractive_index; - IFormFactor* mp_form_factor; - ///< pointer to the form factor }; -#endif // NANOPARTICLE_H +#endif // PARTICLE_H diff --git a/Core/Samples/inc/NanoParticleInfo.h b/Core/Samples/inc/ParticleInfo.h similarity index 57% rename from Core/Samples/inc/NanoParticleInfo.h rename to Core/Samples/inc/ParticleInfo.h index a34420c64de06ed37f115b9d7ecc905e59523469..8e17e3714f27e17157f94653736f074655ef47fb 100644 --- a/Core/Samples/inc/NanoParticleInfo.h +++ b/Core/Samples/inc/ParticleInfo.h @@ -1,5 +1,5 @@ -#ifndef NANOPARTICLEINFO_H -#define NANOPARTICLEINFO_H +#ifndef PARTICLEINFO_H +#define PARTICLEINFO_H // ******************************************************************** // * The BornAgain project * // * Simulation of neutron and x-ray scattering at grazing incidence * @@ -9,7 +9,7 @@ // * eget quam orci. Quisque porta varius dui, quis posuere nibh * // * mollis quis. Mauris commodo rhoncus porttitor. * // ******************************************************************** -//! @file NanoParticleInfo.h +//! @file ParticleInfo.h //! @brief Definition of Layer class //! @author Scientific Computing Group at FRM II //! @date 18.07.2012 @@ -19,39 +19,35 @@ #include "Transform3D.h" //- ------------------------------------------------------------------- -//! @class NanoParticleInfo -//! @brief holds additional information about nanoparticle (used in NanoParticleDecoration) +//! @class ParticleInfo +//! @brief holds additional information about particle (used in NanoParticleDecoration) //- ------------------------------------------------------------------- -class NanoParticleInfo : public ICompositeSample +class ParticleInfo : public ICompositeSample { public: - //! default constructor - //NanoParticleInfo(); - //! constructor for nano particle having depth and abundance - //NanoParticleInfo(NanoParticle *p_particle, double depth, double abundance); - //! constructor for nano particle having transformation property and abundance - NanoParticleInfo(Particle *p_particle, Geometry::Transform3D *transform=0, double depth=0, double abundance=0); + //! constructor for particle info having transformation property and abundance + ParticleInfo(Particle *p_particle, Geometry::Transform3D *transform=0, double depth=0, double abundance=0); - virtual ~NanoParticleInfo(); + virtual ~ParticleInfo(); - //! clone nano particle info - virtual NanoParticleInfo *clone() const; + //! clone particle info + virtual ParticleInfo *clone() const; - //! return nano particle - const Particle *getNanoParticle() const { return mp_particle; } + //! return particle + const Particle *getParticle() const { return mp_particle; } - //! return nano particle transformation + //! return particle transformation const Geometry::Transform3D *getTransform3D() const { return m_transform; } - //! return nano particle depth + //! return particle depth double getDepth() const { return m_depth;} - //! return nano particle abundance + //! return particle abundance double getAbundance() const { return m_abundance; } protected: - NanoParticleInfo &operator=(const NanoParticleInfo &right); - NanoParticleInfo(const NanoParticleInfo &source); + ParticleInfo &operator=(const ParticleInfo &right); + ParticleInfo(const ParticleInfo &source); //! initialize pool parameters, i.e. register some of class members for later access via parameter pool virtual void init_parameters(); @@ -63,4 +59,4 @@ protected: }; -#endif // NANOPARTICLEINFO_H +#endif // PARTICLEINFO_H diff --git a/Core/Samples/src/DiffuseNanoParticleInfo.cpp b/Core/Samples/src/DiffuseNanoParticleInfo.cpp deleted file mode 100644 index ad363eab596a643e6dfa9f7c47451c3eb30c2654..0000000000000000000000000000000000000000 --- a/Core/Samples/src/DiffuseNanoParticleInfo.cpp +++ /dev/null @@ -1,12 +0,0 @@ -#include "DiffuseNanoParticleInfo.h" - -DiffuseNanoParticleInfo::DiffuseNanoParticleInfo(Particle* p_particle, Geometry::Transform3D *transform, double depth, double abundance) -: NanoParticleInfo(p_particle, transform, depth, abundance) -, m_number_per_meso(0.0) -{ -} - -DiffuseNanoParticleInfo::~DiffuseNanoParticleInfo() -{ -} - diff --git a/Core/Samples/src/DiffuseParticleInfo.cpp b/Core/Samples/src/DiffuseParticleInfo.cpp new file mode 100644 index 0000000000000000000000000000000000000000..23eaecef821361e65e6ee1d018b0347c72802c6b --- /dev/null +++ b/Core/Samples/src/DiffuseParticleInfo.cpp @@ -0,0 +1,12 @@ +#include "DiffuseParticleInfo.h" + +DiffuseParticleInfo::DiffuseParticleInfo(Particle* p_particle, Geometry::Transform3D *transform, double depth, double abundance) +: ParticleInfo(p_particle, transform, depth, abundance) +, m_number_per_meso(0.0) +{ +} + +DiffuseParticleInfo::~DiffuseParticleInfo() +{ +} + diff --git a/Core/Samples/src/LayerDecorator.cpp b/Core/Samples/src/LayerDecorator.cpp index 94917236c99b77c78e5480ab4d8d16ecb93651fa..5ebef72d89a63b04b086f3dd3de89b3c7be5249f 100644 --- a/Core/Samples/src/LayerDecorator.cpp +++ b/Core/Samples/src/LayerDecorator.cpp @@ -54,9 +54,9 @@ DiffuseDWBASimulation* LayerDecorator::createDiffuseDWBASimulation() const double nps_per_meso = 0.0; double total_abundance = 0.0; for (size_t i=0; i<nbr_particles; ++i) { - const NanoParticleInfo *p_info = mp_decoration->getNanoParticleInfo(i); - std::vector<DiffuseNanoParticleInfo *> *p_diffuse_nps = - p_info->getNanoParticle()->createDiffuseNanoParticleInfo(p_info->getDepth(), + const ParticleInfo *p_info = mp_decoration->getParticleInfo(i); + std::vector<DiffuseParticleInfo *> *p_diffuse_nps = + p_info->getParticle()->createDiffuseParticleInfo(p_info->getDepth(), p_info->getAbundance(), *(p_info->getTransform3D())); if (p_diffuse_nps) { for (size_t j=0; j<p_diffuse_nps->size(); ++j) { diff --git a/Core/Samples/src/MesoCrystal.cpp b/Core/Samples/src/MesoCrystal.cpp index 4783dfdc3e69a3a9df7b1f1dbfc8777bb2328185..46c2e17d42a645bc32aa333412f8f442b9c30b88 100644 --- a/Core/Samples/src/MesoCrystal.cpp +++ b/Core/Samples/src/MesoCrystal.cpp @@ -34,7 +34,7 @@ MesoCrystal* MesoCrystal::clone() const return new MesoCrystal(mp_nano_particle_structure->clone(), mp_meso_form_factor->clone()); } -std::vector<DiffuseNanoParticleInfo*>* MesoCrystal::createDiffuseNanoParticleInfo( +std::vector<DiffuseParticleInfo*>* MesoCrystal::createDiffuseParticleInfo( double depth, double weight, const Geometry::Transform3D& transform) const { diff --git a/Core/Samples/src/NanoParticleBuilder.cpp b/Core/Samples/src/NanoParticleBuilder.cpp index bfd53e8d49ff46e3f58ba0ee250f6fd6778f942e..d8d7a1d48d7ffc766d61775a19a28bbf94240228 100644 --- a/Core/Samples/src/NanoParticleBuilder.cpp +++ b/Core/Samples/src/NanoParticleBuilder.cpp @@ -66,7 +66,7 @@ void NanoParticleBuilder::plantNanoParticles(NanoParticleDecoration &decor) Particle *particle = m_prototype->clone(); if(weight/maximum_value > Numeric::probthreshold) { // isgisaxs way - decor.addNanoParticle(*particle, 0.0, weight/sum_of_weights*m_scale); + decor.addParticle(*particle, 0.0, weight/sum_of_weights*m_scale); } delete particle; diff --git a/Core/Samples/src/NanoParticleCrystal.cpp b/Core/Samples/src/NanoParticleCrystal.cpp index ebd1251ff1e92d804e3760dfd767d1ede996fac8..3b4482960780be1c69fb12c6325a8b2f22dd279e 100644 --- a/Core/Samples/src/NanoParticleCrystal.cpp +++ b/Core/Samples/src/NanoParticleCrystal.cpp @@ -4,7 +4,7 @@ #include "Units.h" #include "MathFunctions.h" #include "FormFactorFullSphere.h" -#include "DiffuseNanoParticleInfo.h" +#include "DiffuseParticleInfo.h" NanoParticleCrystal::NanoParticleCrystal(const LatticeBasis& lattice_basis, const Lattice& lattice) @@ -39,7 +39,7 @@ IFormFactor* NanoParticleCrystal::createTotalFormFactor( return p_npcrystal; } -std::vector<DiffuseNanoParticleInfo*>* NanoParticleCrystal::createDiffuseNanoParticleInfo( +std::vector<DiffuseParticleInfo*>* NanoParticleCrystal::createDiffuseNanoParticleInfo( double depth, double weight, const Geometry::Transform3D& transform, double meso_volume) const { @@ -52,7 +52,7 @@ std::vector<DiffuseNanoParticleInfo*>* NanoParticleCrystal::createDiffuseNanoPar double sigma = 2.0*Units::nanometer; size_t nbr_radii = 25; complex_t n_particle(0.999966, 5.62664e-7); - std::vector<DiffuseNanoParticleInfo *> *p_infos = new std::vector<DiffuseNanoParticleInfo *>(); + std::vector<DiffuseParticleInfo *> *p_infos = new std::vector<DiffuseParticleInfo *>(); double total_prob = 0.0; for (size_t i=0; i<nbr_radii; ++i) { double radius = (mean_radius-1.5*sigma) + 3.0*sigma/(nbr_radii-1); @@ -69,9 +69,9 @@ std::vector<DiffuseNanoParticleInfo*>* NanoParticleCrystal::createDiffuseNanoPar } double particle_weight = weight*MathFunctions::Gaussian(radius, mean_radius, sigma)/total_prob; Particle particle(n_particle, new FormFactorFullSphere(radius)); - DiffuseNanoParticleInfo *p_new_np_info; + DiffuseParticleInfo *p_new_np_info; if (nbr_heights<2) { - p_new_np_info = new DiffuseNanoParticleInfo(particle.clone(), + p_new_np_info = new DiffuseParticleInfo(particle.clone(), new Geometry::Transform3D(transform), 5.0*Units::nanometer, particle_weight); p_new_np_info->setNumberPerMeso(np_density*particle_weight); p_infos->push_back(p_new_np_info); @@ -79,7 +79,7 @@ std::vector<DiffuseNanoParticleInfo*>* NanoParticleCrystal::createDiffuseNanoPar else { for (size_t j=0; j<nbr_heights; ++j) { double particle_depth = depth - j*height/(nbr_heights-1); - p_new_np_info = new DiffuseNanoParticleInfo(particle.clone(), + p_new_np_info = new DiffuseParticleInfo(particle.clone(), new Geometry::Transform3D(transform), particle_depth, particle_weight); p_new_np_info->setNumberPerMeso(np_density*particle_weight); p_infos->push_back(p_new_np_info); diff --git a/Core/Samples/src/NanoParticleDecoration.cpp b/Core/Samples/src/NanoParticleDecoration.cpp index 729ae95a386a16e46370c5ad459d7822fe2a0fcb..c1feac0d3d27160872ac574f45979613e1ec848a 100644 --- a/Core/Samples/src/NanoParticleDecoration.cpp +++ b/Core/Samples/src/NanoParticleDecoration.cpp @@ -16,7 +16,7 @@ NanoParticleDecoration::NanoParticleDecoration(Particle* p_particle, double dept , m_total_particle_surface_density(1.0) { setName("NanoParticleDecoration"); - addNanoParticle(p_particle, 0, depth, abundance); + addParticle(p_particle, 0, depth, abundance); } NanoParticleDecoration::~NanoParticleDecoration() @@ -37,7 +37,7 @@ NanoParticleDecoration* NanoParticleDecoration::clone() const p_new->setName(getName()); for (size_t i=0; i<m_particles.size(); ++i) { - p_new->addAndRegisterNanoParticleInfo(m_particles[i]->clone()); + p_new->addAndRegisterParticleInfo(m_particles[i]->clone()); } for (size_t i=0; i<m_interference_functions.size(); ++i) { @@ -54,43 +54,43 @@ NanoParticleDecoration* NanoParticleDecoration::clone() const /* ************************************************************************* */ // add nano particle /* ************************************************************************* */ -void NanoParticleDecoration::addNanoParticle(Particle* p_particle, +void NanoParticleDecoration::addParticle(Particle* p_particle, double depth, double abundance) { - addNanoParticle(p_particle, 0, depth, abundance); + addParticle(p_particle, 0, depth, abundance); } -void NanoParticleDecoration::addNanoParticle(const Particle &p_particle, +void NanoParticleDecoration::addParticle(const Particle &p_particle, double depth, double abundance) { - addNanoParticle(p_particle.clone(), 0, depth, abundance); + addParticle(p_particle.clone(), 0, depth, abundance); } -void NanoParticleDecoration::addNanoParticle(const Particle &p_particle, +void NanoParticleDecoration::addParticle(const Particle &p_particle, const Geometry::Transform3D &transform, double depth, double abundance) { - addNanoParticle(p_particle.clone(), new Geometry::Transform3D(transform), depth, abundance); + addParticle(p_particle.clone(), new Geometry::Transform3D(transform), depth, abundance); } // main function to add nano particle -void NanoParticleDecoration::addNanoParticle(Particle* p_particle, +void NanoParticleDecoration::addParticle(Particle* p_particle, Geometry::Transform3D *transform, double depth, double abundance) { - addAndRegisterNanoParticleInfo( new NanoParticleInfo(p_particle, transform, depth, abundance) ); + addAndRegisterParticleInfo( new ParticleInfo(p_particle, transform, depth, abundance) ); } /* ************************************************************************* */ // add nano particle info /* ************************************************************************* */ -void NanoParticleDecoration::addNanoParticleInfo(const NanoParticleInfo &info) +void NanoParticleDecoration::addParticleInfo(const ParticleInfo &info) { - addAndRegisterNanoParticleInfo( info.clone() ); + addAndRegisterParticleInfo( info.clone() ); } /* ************************************************************************* */ // get nano particle info /* ************************************************************************* */ -const NanoParticleInfo* NanoParticleDecoration::getNanoParticleInfo(size_t index) const +const ParticleInfo* NanoParticleDecoration::getParticleInfo(size_t index) const { if (index<m_particles.size()) { return m_particles[index]; @@ -98,9 +98,9 @@ const NanoParticleInfo* NanoParticleDecoration::getNanoParticleInfo(size_t index throw OutOfBoundsException("Not so many interference functions in this decoration."); } -double NanoParticleDecoration::getAbundanceFractionOfNanoParticle(size_t index) const +double NanoParticleDecoration::getAbundanceFractionOfParticle(size_t index) const { - return getNanoParticleInfo(index)->getAbundance()/m_total_abundance; + return getParticleInfo(index)->getAbundance()/m_total_abundance; } @@ -134,7 +134,7 @@ IInterferenceFunctionStrategy* NanoParticleDecoration::createStrategy( { std::vector<double> fractions; for (size_t i=0; i<m_particles.size(); ++i) { - fractions.push_back(getAbundanceFractionOfNanoParticle(i)); + fractions.push_back(getAbundanceFractionOfParticle(i)); } IInterferenceFunctionStrategy *p_strategy; size_t n_particles = m_particles.size(); diff --git a/Core/Samples/src/Particle.cpp b/Core/Samples/src/Particle.cpp index 182e64e46763d12c42b2ff775a279c1183e6eae0..1b0a283b1ee005e7fe9eae2b839a3d4d47a012ab 100644 --- a/Core/Samples/src/Particle.cpp +++ b/Core/Samples/src/Particle.cpp @@ -9,17 +9,6 @@ Particle::Particle(complex_t refractive_index, IFormFactor *p_form_factor) if(mp_form_factor) registerChild(mp_form_factor); } -Particle::Particle(complex_t refractive_index, const IFormFactor &p_form_factor) -: m_ambient_refractive_index(complex_t(1.0, 0.0)) -, m_refractive_index(refractive_index) -, mp_form_factor(0) -{ - setName("NanoParticle"); - mp_form_factor = p_form_factor.clone(); - registerChild(mp_form_factor); -} - - Particle::~Particle() { delete mp_form_factor; diff --git a/Core/Samples/src/NanoParticleInfo.cpp b/Core/Samples/src/ParticleInfo.cpp similarity index 84% rename from Core/Samples/src/NanoParticleInfo.cpp rename to Core/Samples/src/ParticleInfo.cpp index 23c2068f812fd1aec4d16ea301b78157dcda9f4f..c04b27dc5593d9da9f40bb22667c75722a65b0c1 100644 --- a/Core/Samples/src/NanoParticleInfo.cpp +++ b/Core/Samples/src/ParticleInfo.cpp @@ -1,4 +1,4 @@ -#include "NanoParticleInfo.h" +#include "ParticleInfo.h" @@ -20,7 +20,7 @@ //} -NanoParticleInfo::NanoParticleInfo(Particle* p_particle, Geometry::Transform3D *transform, double depth, double abundance) +ParticleInfo::ParticleInfo(Particle* p_particle, Geometry::Transform3D *transform, double depth, double abundance) : mp_particle(p_particle) , m_transform(transform) , m_depth(depth) @@ -49,7 +49,7 @@ NanoParticleInfo::NanoParticleInfo(Particle* p_particle, Geometry::Transform3D * //} -NanoParticleInfo::~NanoParticleInfo() +ParticleInfo::~ParticleInfo() { delete mp_particle; delete m_transform; @@ -57,7 +57,7 @@ NanoParticleInfo::~NanoParticleInfo() // initialize pool parameters, i.e. register some of class members for later access via parameter pool -void NanoParticleInfo::init_parameters() +void ParticleInfo::init_parameters() { getParameterPool()->clear(); getParameterPool()->registerParameter("depth", &m_depth); @@ -67,11 +67,11 @@ void NanoParticleInfo::init_parameters() /* ************************************************************************* */ // clone method /* ************************************************************************* */ -NanoParticleInfo *NanoParticleInfo::clone() const +ParticleInfo *ParticleInfo::clone() const { Geometry::Transform3D *transform(0); if(m_transform) transform = new Geometry::Transform3D(*m_transform); - return new NanoParticleInfo(mp_particle->clone(), transform, m_depth, m_abundance); + return new ParticleInfo(mp_particle->clone(), transform, m_depth, m_abundance); }