15 #ifndef BORNAGAIN_SAMPLE_PARTICLE_CRYSTAL_H
16 #define BORNAGAIN_SAMPLE_PARTICLE_CRYSTAL_H
19 #include <heinz/Vectors3D.h>
40 std::string
className() const final {
return "Crystal"; }
42 std::vector<ParaMeta>
parDefs() const final
44 return {{
"Variance",
"nm?",
"position variance", 0, +
INF, 0}};
Defines interface class ISampleNode.
The list of material admixtures to a slice.
A crystal structure, defined by a Bravais lattice, a basis, and a position variance.
std::vector< ParaMeta > parDefs() const final
Returns the parameter definitions, to be hard-coded in each leaf class.
Crystal * transformed(const IRotation *rotation, const R3 &translation) const
Crystal(const IParticle &basis, const Lattice3D &lattice, double position_variance=0)
const IParticle * basis() const
std::vector< const INode * > nodeChildren() const override
Returns all children.
double position_variance() const
const Lattice3D * lattice() const
std::unique_ptr< Lattice3D > m_lattice
Crystal * clone() const override
Returns a clone of this ISampleNode object.
std::unique_ptr< IParticle > m_basis
std::string className() const final
Returns the class name, to be hard-coded in each leaf class that inherits from INode.
const double m_position_variance
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.