24 , m_peak_shape(nullptr)
78 for (
const auto& q_rec : rec_vectors)
81 result += exp(-(q - q_rec).mag2() / 2 / pow(.06, 2));
Defines the macro ASSERT.
#define ASSERT(condition)
Defines the interface IPeakShape and subclasses.
Defines class Interference3DLattice.
Abstract base class of interference functions.
Abstract base class class that defines the peak shape of a Bragg peak.
IPeakShape * clone() const override=0
Interference function of a 3D lattice.
void setPeakShape(const IPeakShape &peak_shape)
double m_rec_radius
radius in reciprocal space defining the nearest q vectors to use
Interference3DLattice(const Lattice3D &lattice)
~Interference3DLattice() override
Interference3DLattice * clone() const override
const Lattice3D & lattice() const
double iff_without_dw(R3 q) const override
Calculates the structure factor without Debye-Waller factor.
std::vector< const INode * > nodeChildren() const override
Returns all children.
std::unique_ptr< IPeakShape > m_peak_shape
A Bravais lattice, characterized by three basis vectors, and optionally an ISelectionRule.
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.