15 #ifndef BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTION2DSUPERLATTICE_H
16 #define BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTION2DSUPERLATTICE_H
29 unsigned size_1,
unsigned size_2);
48 std::vector<const INode*>
getChildren()
const override;
Defines and implements the interface class IInterferenceFunction.
Defines classes of Lattice2D family.
Abstract base class of interference functions.
Visitor interface to visit ISampleNode objects.
virtual void visit(const BasicLattice2D *)
Interference function of a 2D superlattice with a configurable interference function for each lattice...
InterferenceFunction2DSuperLattice * clone() const override
Returns a clone of this ISampleNode object.
const Lattice2D & lattice() const
bool integrationOverXi() const
unsigned m_size_2
Size of the finite lattice in lattice units.
InterferenceFunction2DSuperLattice(const Lattice2D &lattice, unsigned size_1, unsigned size_2)
~InterferenceFunction2DSuperLattice() override
unsigned domainSize1() const
void setSubstructureIFF(const IInterferenceFunction &sub_iff)
void accept(INodeVisitor *visitor) const override
Calls the INodeVisitor's visit method.
std::vector< const INode * > getChildren() const override
Returns a vector of children.
std::unique_ptr< Lattice2D > m_lattice
double interferenceForXi(double xi) const
double evaluate(const kvector_t q, double outer_iff=1.0) const override
Evaluates the interference function for a given wavevector transfer.
std::unique_ptr< IInterferenceFunction > m_substructure
IFF of substructure.
double iff_without_dw(const kvector_t q) const override
Calculates the structure factor without Debye-Waller factor.
bool m_integrate_xi
Integrate over the orientation xi.
void setIntegrationOverXi(bool integrate_xi)
unsigned domainSize2() const
const IInterferenceFunction & substructureIFF() const
A two-dimensional Bravais lattice.