BornAgain  1.19.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 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 
20 
21 //! A particle with a form factor and refractive index.
22 //! @ingroup samples
23 
24 class Particle : public IParticle {
25 public:
26  Particle() = delete;
29  Particle(Material material, const IFormFactor& form_factor);
30  Particle(Material material, const IFormFactor& form_factor, const IRotation& rotation);
31 
32  Particle* clone() const final;
33 
34  void accept(INodeVisitor* visitor) const final { visitor->visit(this); }
35 
36  SlicedParticle createSlicedParticle(ZLimits limits) const final;
37 
39  const Material* material() const final { return &m_material; }
40 
41  std::vector<const INode*> getChildren() const final;
42 
43 protected:
46 
47 private:
48  void initialize();
49  void setFormFactor(const IFormFactor& form_factor);
50 };
51 
52 #endif // BORNAGAIN_SAMPLE_PARTICLE_PARTICLE_H
Defines interface IParticle.
Defines and implements class Material.
Abstract base class for all form factors.
Definition: IFormFactor.h:36
Visitor interface to visit ISampleNode objects.
Definition: INodeVisitor.h:146
Abstract base class for Particle, ParticleComposition, ParticleCoreShell, MesoCrystal.
Definition: IParticle.h:33
const IRotation * rotation() const
Returns rotation object.
Definition: IParticle.cpp:39
Abstract base class for rotations.
Definition: Rotations.h:28
A wrapper for underlying material implementation.
Definition: Material.h:29
A particle with a form factor and refractive index.
Definition: Particle.h:24
std::vector< const INode * > getChildren() const final
Returns a vector of children.
Definition: Particle.cpp:92
Particle * clone() const final
Returns a clone of this ISampleNode object.
Definition: Particle.cpp:45
const Material * material() const final
Returns nullptr, unless overwritten to return a specific material.
Definition: Particle.h:39
void setFormFactor(const IFormFactor &form_factor)
Definition: Particle.cpp:84
Particle()=delete
void initialize()
Definition: Particle.cpp:97
SlicedParticle createSlicedParticle(ZLimits limits) const final
Creates a sliced form factor for this particle.
Definition: Particle.cpp:58
void accept(INodeVisitor *visitor) const final
Calls the INodeVisitor's visit method.
Definition: Particle.h:34
Material m_material
Definition: Particle.h:44
void setMaterial(Material material)
Definition: Particle.cpp:79
std::unique_ptr< IFormFactor > m_form_factor
Definition: Particle.h:45
Class that contains upper and lower limits of the z-coordinate for the slicing of form factors.
Definition: ZLimits.h:45
Definition: filesystem.h:81
Struct that contains information on a sliced particle.