22 const ReParticle& outer_shape,
double position_variance)
24 , m_basis(basis.clone())
25 , m_outer_shape(outer_shape.clone())
26 , m_position_variance(position_variance)
60 C3 q = wavevectors.
getQ();
65 complex_t result(0.0, 0.0);
66 for (
const auto& rec : rec_vectors) {
69 complex_t basis_factor =
m_basis->
theFF(basis_wavevectors);
72 result += dw_factor * basis_factor * meso_factor;
82 C3 q = wavevectors.
getQ();
88 for (
const auto& rec : rec_vectors) {
94 result += dw_factor * basis_factor * meso_factor;
113 auto q2 = q_i.mag2();
Defines M_PI and some more mathematical constants.
Defines class ReMesocrystal.
Defines interface class ReParticle.
Defines class SpinMatrix.
Abstract base class for reprocessed particles.
virtual SpinMatrix thePolFF(const WavevectorInfo &wavevectors) const
Returns scattering amplitude for matrix interactions.
virtual complex_t theFF(const WavevectorInfo &wavevectors) const =0
Returns scattering amplitude for complex wavevectors ki, kf.
Abstract base class for rotations.
A Bravais lattice, characterized by three basis vectors, and optionally an ISelectionRule.
double unitCellVolume() const
Returns the volume of the unit cell.
R3 basisVectorB() const
Returns basis vector b.
R3 basisVectorC() const
Returns basis vector c.
R3 basisVectorA() const
Returns basis vector a.
std::vector< R3 > reciprocalLatticeVectorsWithinRadius(R3 q, double dq) const
Returns a list of reciprocal lattice vectors within distance dq of a vector q.
complex_t theFF(const WavevectorInfo &wavevectors) const override
Returns scattering amplitude for complex wavevectors ki, kf.
void calculateLargestReciprocalDistance()
double radialExtension() const override
Returns the (approximate in some cases) radial size of the particle of this form factor's shape....
double topZ(const IRotation *rotation) const override
Returns the z-coordinate of the lowest point in this shape after a given rotation.
double m_position_variance
SpinMatrix thePolFF(const WavevectorInfo &wavevectors) const override
Returns scattering amplitude for matrix interactions.
double bottomZ(const IRotation *rotation) const override
Returns the z-coordinate of the lowest point in this shape after a given rotation.
complex_t debyeWallerFactor(const R3 &q_i) const
ReParticle * m_outer_shape
The outer shape of this mesocrystal.
double volume() const override
Returns the total volume of the particle of this form factor's shape.
ReMesocrystal(const Lattice3D &lattice, const IReParticle &basis, const ReParticle &outer_shape, double position_variance=0.0)
~ReMesocrystal() override
A reprocessed simple particle, with shape m_ff.
double radialExtension() const override
Returns the (approximate in some cases) radial size of the particle of this form factor's shape....
double topZ(const IRotation *rotation) const override
Returns the z-coordinate of the lowest point in this shape after a given rotation.
double bottomZ(const IRotation *rotation) const override
Returns the z-coordinate of the lowest point in this shape after a given rotation.
double volume() const override
Returns the total volume of the particle of this form factor's shape.
complex_t theFF(const WavevectorInfo &wavevectors) const override
Returns scattering amplitude for complex wavevectors ki, kf.
Holds all wavevector information relevant for calculating form factors.
double vacuumLambda() const