21 const std::vector<double>& PValues)
43 throw std::runtime_error(
"IInterferenceFunction::setPositionVariance: "
44 "variance should be positive.");
Defines and implements the interface class IInterferenceFunction.
Defines class RealParameter.
double mag2() const
Returns magnitude squared of the vector.
void setZ(const T &a)
Sets z-component in cartesian coordinate system.
double DWfactor(kvector_t q) const
Evaluates the Debye-Waller factor for a given wavevector transfer.
virtual bool supportsMultilayer() const
Indicates if this interference function can be used with a multilayer (DWBA mode)
void setPositionVariance(double var)
Sets the variance of the position for the calculation of the DW factor It is defined as the variance ...
double iff_no_inner(const kvector_t q, double outer_iff) const
Calculates the structure factor in the absence of extra inner structure.
virtual double evaluate(const kvector_t q, double outer_iff=1.0) const
Evaluates the interference function for a given wavevector transfer.
virtual double iff_without_dw(const kvector_t q) const =0
Calculates the structure factor without Debye-Waller factor.
IInterferenceFunction(const NodeMeta &meta, const std::vector< double > &PValues)
RealParameter & registerParameter(const std::string &name, double *parpointer)
Pure virtual base class for sample components and properties related to scattering.
RealParameter & setNonnegative()
RealParameter & setUnit(const std::string &name)