BornAgain
1.19.79
Open-source research software to simulate and fit neutron and x-ray reflectometry and grazing-incidence small-angle scattering
|
Interference function of a 3D lattice.
Definition at line 26 of file Interference3DLattice.h.
Public Member Functions | |
Interference3DLattice (const Lattice3D &lattice) | |
~Interference3DLattice () override | |
void | checkNodeArgs () const |
Raises exception if a parameter value is invalid. More... | |
std::string | className () const final |
Returns the class name, to be hard-coded in each leaf class that inherits from INode. More... | |
Interference3DLattice * | clone () const override |
double | DWfactor (R3 q) const |
structureFactors the Debye-Waller factor for a given wavevector transfer More... | |
const Lattice3D & | lattice () const |
std::vector< const INode * > | nodeChildren () const override |
Returns all children. More... | |
std::vector< const INode * > | nodeOffspring () const |
Returns all descendants. More... | |
virtual std::vector< ParaMeta > | parDefs () const |
Returns the parameter definitions, to be hard-coded in each leaf class. More... | |
virtual double | particleDensity () const |
If defined by this interference function's parameters, returns the particle density (per area). Otherwise, returns zero or a user-defined value. More... | |
double | positionVariance () const |
Returns the position variance. More... | |
void | setPeakShape (const IPeakShape &peak_shape) |
void | setPositionVariance (double var) |
Sets the variance of the position for the calculation of the DW factor It is defined as the variance in each relevant dimension. More... | |
virtual double | structureFactor (R3 q, double outer_iff=1.0) const |
The interference function for a given wavevector transfer. More... | |
bool | supportsMultilayer () const override |
Indicates if this interference function can be used with a sample (DWBA mode) More... | |
virtual void | transferToCPP () |
Used for Python overriding of clone (see swig/tweaks.py) More... | |
Protected Member Functions | |
double | iff_no_inner (R3 q, double outer_iff) const |
Calculates the structure factor in the absence of extra inner structure. More... | |
Protected Attributes | |
std::vector< double > | m_P |
double | m_position_var |
Private Member Functions | |
double | iff_without_dw (R3 q) const override |
Calculates the structure factor without Debye-Waller factor. More... | |
Private Attributes | |
Lattice3D | m_lattice |
std::unique_ptr< IPeakShape > | m_peak_shape |
double | m_rec_radius |
radius in reciprocal space defining the nearest q vectors to use More... | |
Interference3DLattice::Interference3DLattice | ( | const Lattice3D & | lattice | ) |
Definition at line 21 of file Interference3DLattice.cpp.
References Lattice3D::basisVectorA(), Lattice3D::basisVectorB(), Lattice3D::basisVectorC(), m_lattice, M_PI, and m_rec_radius.
Referenced by clone().
|
overridedefault |
|
inherited |
Raises exception if a parameter value is invalid.
Definition at line 27 of file INode.cpp.
References ASSERT, RealLimits::check(), INode::className(), INF, RealLimits::limited(), RealLimits::limitless(), INode::m_P, ParaMeta::name, RealLimits::nonnegative(), INode::parDefs(), ParaMeta::vMax, and ParaMeta::vMin.
Referenced by BarGauss::BarGauss(), BarLorentz::BarLorentz(), Bipyramid4::Bipyramid4(), Box::Box(), CantellatedCube::CantellatedCube(), Cone::Cone(), ConstantBackground::ConstantBackground(), CosineRippleBox::CosineRippleBox(), CosineRippleGauss::CosineRippleGauss(), CosineRippleLorentz::CosineRippleLorentz(), Cylinder::Cylinder(), DistributionCosine::DistributionCosine(), DistributionGate::DistributionGate(), DistributionGaussian::DistributionGaussian(), DistributionLogNormal::DistributionLogNormal(), DistributionLorentz::DistributionLorentz(), DistributionTrapezoid::DistributionTrapezoid(), Dodecahedron::Dodecahedron(), EllipsoidalCylinder::EllipsoidalCylinder(), FootprintGauss::FootprintGauss(), FootprintSquare::FootprintSquare(), FuzzySphere::FuzzySphere(), GaussSphere::GaussSphere(), HemiEllipsoid::HemiEllipsoid(), HollowSphere::HollowSphere(), HorizontalCylinder::HorizontalCylinder(), Icosahedron::Icosahedron(), LongBoxGauss::LongBoxGauss(), LongBoxLorentz::LongBoxLorentz(), PlatonicOctahedron::PlatonicOctahedron(), PlatonicTetrahedron::PlatonicTetrahedron(), Prism3::Prism3(), Prism6::Prism6(), Profile1DCauchy::Profile1DCauchy(), Profile1DCosine::Profile1DCosine(), Profile1DGate::Profile1DGate(), Profile1DGauss::Profile1DGauss(), Profile1DTriangle::Profile1DTriangle(), Profile1DVoigt::Profile1DVoigt(), Profile2DCauchy::Profile2DCauchy(), Profile2DCone::Profile2DCone(), Profile2DGate::Profile2DGate(), Profile2DGauss::Profile2DGauss(), Profile2DVoigt::Profile2DVoigt(), Pyramid2::Pyramid2(), Pyramid3::Pyramid3(), Pyramid4::Pyramid4(), Pyramid6::Pyramid6(), RotationEuler::RotationEuler(), RotationX::RotationX(), RotationY::RotationY(), RotationZ::RotationZ(), SawtoothRippleBox::SawtoothRippleBox(), SawtoothRippleGauss::SawtoothRippleGauss(), SawtoothRippleLorentz::SawtoothRippleLorentz(), Sphere::Sphere(), Spheroid::Spheroid(), TruncatedCube::TruncatedCube(), TruncatedSphere::TruncatedSphere(), and TruncatedSpheroid::TruncatedSpheroid().
|
inlinefinalvirtual |
Returns the class name, to be hard-coded in each leaf class that inherits from INode.
Implements INode.
Definition at line 32 of file Interference3DLattice.h.
|
overridevirtual |
Implements IInterference.
Definition at line 37 of file Interference3DLattice.cpp.
References Interference3DLattice(), m_lattice, m_peak_shape, and IInterference::m_position_var.
|
inherited |
structureFactors the Debye-Waller factor for a given wavevector transfer
Definition at line 48 of file IInterference.cpp.
References IInterference::m_position_var, and IInterference::supportsMultilayer().
Referenced by IInterference::iff_no_inner(), and Interference2DSuperLattice::interferenceForXi().
|
protectedinherited |
Calculates the structure factor in the absence of extra inner structure.
Definition at line 56 of file IInterference.cpp.
References IInterference::DWfactor(), and IInterference::iff_without_dw().
Referenced by IInterference::structureFactor().
|
overrideprivatevirtual |
Calculates the structure factor without Debye-Waller factor.
Implements IInterference.
Definition at line 61 of file Interference3DLattice.cpp.
References ASSERT, m_lattice, m_peak_shape, m_rec_radius, and Lattice3D::reciprocalLatticeVectorsWithinRadius().
const Lattice3D & Interference3DLattice::lattice | ( | ) | const |
Definition at line 51 of file Interference3DLattice.cpp.
References m_lattice.
|
overridevirtual |
Returns all children.
Reimplemented from INode.
Definition at line 56 of file Interference3DLattice.cpp.
|
inherited |
Returns all descendants.
Definition at line 61 of file INode.cpp.
References INode::nodeChildren().
|
inlinevirtualinherited |
Returns the parameter definitions, to be hard-coded in each leaf class.
Reimplemented in ConstantBackground, GaussSphere, FuzzySphere, RotationEuler, RotationZ, RotationY, RotationX, Crystal, Layer, HexagonalLattice2D, SquareLattice2D, BasicLattice2D, LayerRoughness, TruncatedSpheroid, TruncatedSphere, TruncatedCube, Spheroid, Sphere, SawtoothRippleLorentz, SawtoothRippleGauss, SawtoothRippleBox, Pyramid6, Pyramid4, Pyramid3, Pyramid2, Prism6, Prism3, PlatonicTetrahedron, PlatonicOctahedron, LongBoxLorentz, LongBoxGauss, Icosahedron, HorizontalCylinder, HollowSphere, HemiEllipsoid, EllipsoidalCylinder, Dodecahedron, Cylinder, CosineRippleLorentz, CosineRippleGauss, CosineRippleBox, Cone, CantellatedCube, Box, Bipyramid4, BarLorentz, BarGauss, Profile2DVoigt, Profile2DCone, Profile2DGate, Profile2DGauss, Profile2DCauchy, Profile1DVoigt, Profile1DCosine, Profile1DTriangle, Profile1DGate, Profile1DGauss, Profile1DCauchy, MisesGaussPeakShape, MisesFisherGaussPeakShape, LorentzFisherPeakShape, GaussFisherPeakShape, IsotropicLorentzPeakShape, IsotropicGaussPeakShape, ParticleLayout, InterferenceTwin, InterferenceRadialParaCrystal, InterferenceHardDisk, Interference2DSuperLattice, Interference2DParaCrystal, Interference1DLattice, DistributionTrapezoid, DistributionCosine, DistributionLogNormal, DistributionGaussian, DistributionLorentz, DistributionGate, ResolutionFunction2DGaussian, PolFilter, FootprintSquare, and FootprintGauss.
Definition at line 51 of file INode.h.
Referenced by INode::checkNodeArgs(), and IFormFactor::pythonConstructor().
|
inlinevirtualinherited |
If defined by this interference function's parameters, returns the particle density (per area). Otherwise, returns zero or a user-defined value.
Reimplemented in InterferenceHardDisk, InterferenceFinite2DLattice, Interference2DParaCrystal, and Interference2DLattice.
Definition at line 44 of file IInterference.h.
|
inlineinherited |
Returns the position variance.
Definition at line 40 of file IInterference.h.
References IInterference::m_position_var.
void Interference3DLattice::setPeakShape | ( | const IPeakShape & | peak_shape | ) |
Definition at line 46 of file Interference3DLattice.cpp.
References IPeakShape::clone(), and m_peak_shape.
|
inherited |
Sets the variance of the position for the calculation of the DW factor It is defined as the variance in each relevant dimension.
Definition at line 40 of file IInterference.cpp.
References IInterference::m_position_var.
Referenced by ExemplarySamples::createFiniteSquareLattice2D(), and ExemplarySamples::createSuperLattice().
|
virtualinherited |
The interference function for a given wavevector transfer.
Reimplemented in Interference2DSuperLattice.
Definition at line 35 of file IInterference.cpp.
References IInterference::iff_no_inner().
|
inlineoverridevirtual |
Indicates if this interference function can be used with a sample (DWBA mode)
Reimplemented from IInterference.
Definition at line 38 of file Interference3DLattice.h.
|
inlinevirtualinherited |
Used for Python overriding of clone (see swig/tweaks.py)
Definition at line 32 of file ICloneable.h.
|
private |
Definition at line 45 of file Interference3DLattice.h.
Referenced by Interference3DLattice(), clone(), iff_without_dw(), and lattice().
|
protectedinherited |
Definition at line 63 of file INode.h.
Referenced by IFootprintFactor::IFootprintFactor(), INode::checkNodeArgs(), IProfile1D::pythonConstructor(), IProfile2D::pythonConstructor(), IFormFactor::pythonConstructor(), Profile1DVoigt::pythonConstructor(), and Profile2DVoigt::pythonConstructor().
|
private |
Definition at line 46 of file Interference3DLattice.h.
Referenced by clone(), iff_without_dw(), and setPeakShape().
|
protectedinherited |
Definition at line 53 of file IInterference.h.
Referenced by IInterference::IInterference(), Interference1DLattice::clone(), Interference2DLattice::clone(), Interference2DParaCrystal::clone(), Interference2DSuperLattice::clone(), clone(), InterferenceFinite2DLattice::clone(), InterferenceFinite3DLattice::clone(), InterferenceHardDisk::clone(), InterferenceNone::clone(), InterferenceRadialParaCrystal::clone(), InterferenceTwin::clone(), IInterference::DWfactor(), IInterference::positionVariance(), and IInterference::setPositionVariance().
|
private |
radius in reciprocal space defining the nearest q vectors to use
Definition at line 47 of file Interference3DLattice.h.
Referenced by Interference3DLattice(), and iff_without_dw().