15 #ifndef BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTIONFINITE3DLATTICE_H
16 #define BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTIONFINITE3DLATTICE_H
42 std::vector<const INode*>
getChildren()
const override;
Defines and implements the interface class IInterferenceFunction.
Abstract base class of interference functions.
Visitor interface to visit ISampleNode objects.
virtual void visit(const BasicLattice2D *)
Interference function of a finite 3D lattice.
double iff_without_dw(const kvector_t q) const override
Calculates the structure factor without Debye-Waller factor.
bool supportsMultilayer() const override
Indicates if this interference function can be used with a multilayer (DWBA mode)
std::unique_ptr< Lattice3D > m_lattice
InterferenceFunctionFinite3DLattice * clone() const override
Returns a clone of this ISampleNode object.
InterferenceFunctionFinite3DLattice(const Lattice3D &lattice, unsigned N_1, unsigned N_2, unsigned N_3)
void accept(INodeVisitor *visitor) const override
Calls the INodeVisitor's visit method.
unsigned numberUnitCells2() const
unsigned numberUnitCells1() const
~InterferenceFunctionFinite3DLattice() override
std::vector< const INode * > getChildren() const override
Returns a vector of children.
unsigned numberUnitCells3() const
const Lattice3D & lattice() const
unsigned m_N_3
Size of the finite lattice in lattice units.
void setLattice(const Lattice3D &lattice)
A Bravais lattice, characterized by three basis vectors, and optionally an ISelectionRule.