28 const int min_points = 4;
37 setName(
"Interference1DLattice");
38 registerParameter(
"Length", &m_length).setUnit(
"nm").setNonnegative();
39 registerParameter(
"Xi", &m_xi).setUnit(
"rad");
42 InterferenceFunction1DLattice::~InterferenceFunction1DLattice() =
default;
47 ret->setPositionVariance(m_position_var);
50 ret->setDecayFunction(*mP_decay);
58 mP_decay.reset(decay.clone());
59 registerChild(mP_decay.get());
60 double decay_length = mP_decay->decayLength();
61 double qa_max = m_length * nmax / decay_length / M_TWOPI;
62 m_na =
static_cast<int>(std::lround(std::abs(qa_max) + 0.5));
63 m_na = std::max(m_na, min_points);
68 return std::vector<const INode*>() << mP_decay;
71 double InterferenceFunction1DLattice::iff_without_dw(
const kvector_t q)
const
80 double a_rec = M_TWOPI / a;
84 double qx_prime = qxr * std::cos(xi) + qyr * std::sin(xi);
87 int qa_int =
static_cast<int>(qx_prime / a_rec);
88 qx_frac = qx_prime - qa_int * a_rec;
90 for (
int i = -m_na; i < m_na + 1; ++i) {
91 double qx = qx_frac + i * a_rec;
92 result += mP_decay->evaluate(qx);
Defines the macro ASSERT.
Defines many exception classes in namespace Exceptionss.
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,...
Pure virtual base class of interference functions.
Interference function of a 1D lattice.
std::vector< const INode * > getChildren() const override final
Returns a vector of children (const).
InterferenceFunction1DLattice * clone() const override final
Returns a clone of this ISample object.
InterferenceFunction1DLattice(double length, double xi)
Constructor of interference function of one-dimensional lattice.
void setDecayFunction(const IFTDecayFunction1D &decay)
Sets one-dimensional decay function.