15 #ifndef BORNAGAIN_SAMPLE_AGGREGATE_IINTERFERENCE_H
16 #define BORNAGAIN_SAMPLE_AGGREGATE_IINTERFERENCE_H
20 #include <heinz/Vectors3D.h>
Defines and implements the standard mix-in ICloneable.
Interface for polymorphic classes that should not be copied, except by explicit cloning.
Abstract base class of interference functions.
IInterference * clone() const override=0
double DWfactor(R3 q) const
structureFactors the Debye-Waller factor for a given wavevector transfer
double positionVariance() const
Returns the position variance.
virtual bool supportsMultilayer() const
Indicates if this interference function can be used with a sample (DWBA mode)
virtual double structureFactor(R3 q, double outer_iff=1.0) const
The interference function for a given wavevector transfer.
void setPositionVariance(double var)
Sets the variance of the position for the calculation of the DW factor It is defined as the variance ...
virtual double particleDensity() const
If defined by this interference function's parameters, returns the particle density (per area)....
double iff_no_inner(R3 q, double outer_iff) const
Calculates the structure factor in the absence of extra inner structure.
virtual double iff_without_dw(R3 q) const =0
Calculates the structure factor without Debye-Waller factor.
IInterference(const std::vector< double > &PValues)
Base class for tree-like structures containing parameterized objects.