BornAgain  1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
Particle.h
Go to the documentation of this file.
1 // ************************************************************************** //
2 //
3 // BornAgain: simulate and fit scattering at grazing incidence
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_CORE_PARTICLE_PARTICLE_H
16 #define BORNAGAIN_CORE_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 {
27 public:
28  Particle();
30  Particle(Material material, const IFormFactor& form_factor);
31  Particle(Material material, const IFormFactor& form_factor, const IRotation& rotation);
32 
33  Particle* clone() const override final;
34 
35  void accept(INodeVisitor* visitor) const override final { visitor->visit(this); }
36 
37  SlicedParticle createSlicedParticle(ZLimits limits) const override final;
38 
40  const Material* material() const override final { return &m_material; }
41 
42  void setFormFactor(const IFormFactor& form_factor);
43 
44  std::vector<const INode*> getChildren() const override final;
45 
46 protected:
48  std::unique_ptr<IFormFactor> mP_form_factor;
49 
50 private:
51  void initialize();
52 };
53 
54 #endif // BORNAGAIN_CORE_PARTICLE_PARTICLE_H
Defines class FormFactorDecoratorMaterial.
Defines class FormFactorDecoratorRotation.
Defines interface IParticle.
Pure virtual base class for all form factors.
Definition: IFormFactor.h:40
Visitor interface to visit ISample objects.
Definition: INodeVisitor.h:149
Pure virtual base class for Particle, ParticleComposition, ParticleCoreShell, MesoCrystal.
Definition: IParticle.h:33
const IRotation * rotation() const
Returns rotation object.
Definition: IParticle.cpp:39
Pure virtual interface for rotations.
Definition: Rotations.h:27
A wrapper for underlying material implementation.
Definition: Material.h:29
A particle with a form factor and refractive index.
Definition: Particle.h:26
Particle * clone() const override final
Returns a clone of this ISample object.
Definition: Particle.cpp:45
Particle()
Definition: Particle.cpp:20
const Material * material() const override final
Returns nullptr, unless overwritten to return a specific material.
Definition: Particle.h:40
std::vector< const INode * > getChildren() const override final
Returns a vector of children (const).
Definition: Particle.cpp:92
void setFormFactor(const IFormFactor &form_factor)
Definition: Particle.cpp:84
void initialize()
Definition: Particle.cpp:97
SlicedParticle createSlicedParticle(ZLimits limits) const override final
Creates a sliced form factor for this particle.
Definition: Particle.cpp:58
Material m_material
Definition: Particle.h:47
std::unique_ptr< IFormFactor > mP_form_factor
Definition: Particle.h:48
void accept(INodeVisitor *visitor) const override final
Calls the INodeVisitor's visit method.
Definition: Particle.h:35
void setMaterial(Material material)
Definition: Particle.cpp:79
Class that contains upper and lower limits of the z-coordinate for the slicing of form factors.
Definition: ZLimits.h:41
Struct that contains information on a sliced particle.