26 const int min_points = 4;
35 setName(
"Interference1DLattice");
48 ret->setDecayFunction(*
m_decay);
58 double decay_length =
m_decay->decayLength();
60 m_na =
static_cast<int>(std::lround(std::abs(qa_max) + 0.5));
66 return std::vector<const INode*>() <<
m_decay;
82 double qx_prime = qxr * std::cos(xi) + qyr * std::sin(xi);
85 int qa_int =
static_cast<int>(qx_prime / a_rec);
86 qx_frac = qx_prime - qa_int * a_rec;
88 for (
int i = -
m_na; i <
m_na + 1; ++i) {
89 double qx = qx_frac + i * a_rec;
90 result +=
m_decay->evaluate(qx);
Defines the macro ASSERT.
#define ASSERT(condition)
Defines classes IFTDecayFunction1D, IFTDecayFunction2D,.
Defines classes IFTDecayFunction1D, IFTDecayFunction2D,.
Defines class InterferenceFunction1DLattice.
Defines class RealParameter.
T y() const
Returns y-component in cartesian coordinate system.
T x() const
Returns x-component in cartesian coordinate system.
Interface for a one-dimensional decay function, with evaluate(q) returning the Fourier transform,...
virtual IFTDecayFunction1D * clone() const =0
Abstract base class of interference functions.
void registerChild(INode *node)
void setName(const std::string &name)
RealParameter & registerParameter(const std::string &name, double *parpointer)
Interference function of a 1D lattice.
std::unique_ptr< IFTDecayFunction1D > m_decay
~InterferenceFunction1DLattice() override
std::vector< const INode * > getChildren() const override
Returns a vector of children.
InterferenceFunction1DLattice(double length, double xi)
Constructor of interference function of one-dimensional lattice.
int m_na
determines the number of reciprocal lattice points to use
void setDecayFunction(const IFTDecayFunction1D &decay)
Sets one-dimensional decay function.
InterferenceFunction1DLattice * clone() const override
Returns a clone of this ISampleNode object.
double iff_without_dw(const kvector_t q) const override
Calculates the structure factor without Debye-Waller factor.
RealParameter & setNonnegative()
RealParameter & setUnit(const std::string &name)