BornAgain  1.19.79
Open-source research software to simulate and fit neutron and x-ray reflectometry and grazing-incidence small-angle scattering
Particle.h
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file Sample/Particle/Particle.h
6 //! @brief Defines class Particle.
7 //!
8 //! @homepage http://www.bornagainproject.org
9 //! @license GNU General Public License v3 or higher (see COPYING)
10 //! @copyright Forschungszentrum Jülich GmbH 2018
11 //! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
12 //
13 // ************************************************************************************************
14 
15 #ifndef BORNAGAIN_SAMPLE_PARTICLE_PARTICLE_H
16 #define BORNAGAIN_SAMPLE_PARTICLE_PARTICLE_H
17 
21 
22 //! A particle with a form factor and refractive index.
23 //! @ingroup samples
24 
25 class Particle : public IParticle {
26 public:
27  Particle(Material material, const IFormFactor& formfactor);
28  Particle(Material material, const IFormFactor& formfactor, const IRotation& rotation);
29  ~Particle() override;
30 
31  Particle* clone() const override;
32  std::string className() const override { return "Particle"; }
33  std::vector<const INode*> nodeChildren() const override;
34 
35  const Material* material() const override { return &m_material; }
36 
37  const IFormFactor* formfactor_at_bottom() const { return m_formfactor.get(); }
38 
39 private:
41  std::unique_ptr<const IFormFactor> m_formfactor;
42 };
43 
44 #endif // BORNAGAIN_SAMPLE_PARTICLE_PARTICLE_H
Defines interface IDecoratableBorn.
Defines interface IParticle.
Defines and implements class Material.
Abstract base class for Born form factors.
Definition: IFormFactor.h:36
Abstract base class for Particle, ParticleComposition, ParticleCoreShell, MesoCrystal....
Definition: IParticle.h:31
const IRotation * rotation() const
Returns rotation object.
Definition: IParticle.cpp:31
Abstract base class for rotations.
Definition: Rotations.h:29
A wrapper for underlying material implementation.
Definition: Material.h:35
A particle with a form factor and refractive index.
Definition: Particle.h:25
const Material * material() const override
Returns nullptr, unless overwritten to return a specific material.
Definition: Particle.h:35
~Particle() override
Particle(Material material, const IFormFactor &formfactor)
Definition: Particle.cpp:20
Particle * clone() const override
Returns a clone of this ISampleNode object.
Definition: Particle.cpp:34
const IFormFactor * formfactor_at_bottom() const
Definition: Particle.h:37
std::string className() const override
Returns the class name, to be hard-coded in each leaf class that inherits from INode.
Definition: Particle.h:32
std::vector< const INode * > nodeChildren() const override
Returns all children.
Definition: Particle.cpp:46
const Material m_material
Definition: Particle.h:40
std::unique_ptr< const IFormFactor > m_formfactor
Definition: Particle.h:41