15 #ifndef BORNAGAIN_SAMPLE_PARTICLE_CRYSTAL_H
16 #define BORNAGAIN_SAMPLE_PARTICLE_CRYSTAL_H
52 std::vector<const INode*>
getChildren() const final;
Defines interface class ISampleNode.
A crystal structure, defined by a Bravais lattice, a basis, and a position variance.
Crystal(const IParticle &basis, const Lattice3D &lattice, double position_variance=0)
void accept(INodeVisitor *visitor) const final
Calls the INodeVisitor's visit method.
std::vector< HomogeneousRegion > homogeneousRegions() const
std::vector< const INode * > getChildren() const final
Returns a vector of children.
IFormFactor * createTotalFormFactor(const IFormFactor &meso_crystal_form_factor, const IRotation *p_rotation, const kvector_t &translation) const
Lattice3D transformedLattice(const IRotation *p_rotation=nullptr) const
std::unique_ptr< IParticle > m_basis
const double m_position_variance
Crystal * clone() const final
Returns a clone of this ISampleNode object.
Visitor interface to visit ISampleNode objects.
Abstract base class for Particle, ParticleComposition, ParticleCoreShell, MesoCrystal.
Abstract base class for rotations.
Abstract base class for sample components and properties related to scattering.
A Bravais lattice, characterized by three basis vectors, and optionally an ISelectionRule.
Struct that contains information on a single homogeneous region of a particle inside a single layer.