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 2D paracrystal.
Definition at line 29 of file Interference2DParaCrystal.h.
Public Member Functions | |
Interference2DParaCrystal (const Lattice2D &lattice, double damping_length, double domain_size_1, double domain_size_2) | |
~Interference2DParaCrystal () 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... | |
Interference2DParaCrystal * | clone () const override |
double | dampingLength () const |
std::vector< double > | domainSizes () const |
double | DWfactor (R3 q) const |
structureFactors the Debye-Waller factor for a given wavevector transfer More... | |
bool | integrationOverXi () const |
const Lattice2D & | lattice () const |
std::vector< const INode * > | nodeChildren () const override |
Returns all children. More... | |
std::vector< const INode * > | nodeOffspring () const |
Returns all descendants. More... | |
std::vector< ParaMeta > | parDefs () const final |
Returns the parameter definitions, to be hard-coded in each leaf class. More... | |
double | particleDensity () const override |
If defined by this interference function's parameters, returns the particle density (per area). Otherwise, returns zero or a user-defined value. More... | |
const IProfile2D * | pdf1 () const |
const IProfile2D * | pdf2 () const |
double | positionVariance () const |
Returns the position variance. More... | |
void | setDampingLength (double damping_length) |
Sets the damping length. More... | |
void | setDomainSizes (double size_1, double size_2) |
Sets the sizes of coherence domains. More... | |
void | setIntegrationOverXi (bool integrate_xi) |
Enables/disables averaging over the lattice rotation angle. More... | |
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... | |
void | setProbabilityDistributions (const IProfile2D &pdf_1, const IProfile2D &pdf_2) |
Sets the probability distributions (Fourier transformed) for the two lattice directions. More... | |
virtual double | structureFactor (R3 q, double outer_iff=1.0) const |
The interference function for a given wavevector transfer. More... | |
virtual bool | supportsMultilayer () const |
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 | |
complex_t | FTPDF (double qx, double qy, double xi, size_t index) const |
double | iff_without_dw (R3 q) const override |
Calculates the structure factor without Debye-Waller factor. More... | |
double | interference1D (double qx, double qy, double xi, size_t index) const |
Returns interference function for fixed xi in the dimension determined by the given index. More... | |
double | interferenceForXi (double xi, double qx, double qy) const |
Returns interference function for fixed angle xi. More... | |
void | transformToPrincipalAxes (double qx, double qy, double gamma, double delta, double &q_pa_1, double &q_pa_2) const |
Private Attributes | |
double | m_damping_length |
Damping length for removing delta function singularity at q=0. More... | |
double | m_domain_sizes [2] |
Coherence domain sizes. More... | |
bool | m_integrate_xi |
Integrate over the orientation xi. More... | |
std::unique_ptr< Lattice2D > | m_lattice |
std::unique_ptr< IProfile2D > | m_pdf1 |
std::unique_ptr< IProfile2D > | m_pdf2 |
Interference2DParaCrystal::Interference2DParaCrystal | ( | const Lattice2D & | lattice, |
double | damping_length, | ||
double | domain_size_1, | ||
double | domain_size_2 | ||
) |
Definition at line 20 of file Interference2DParaCrystal.cpp.
References RealLimits::check(), Lattice2D::clone(), lattice(), m_damping_length, m_domain_sizes, m_lattice, RealLimits::nonnegative(), and setDomainSizes().
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 37 of file Interference2DParaCrystal.h.
|
overridevirtual |
Implements IInterference.
Definition at line 36 of file Interference2DParaCrystal.cpp.
References Interference2DParaCrystal(), m_damping_length, m_domain_sizes, m_integrate_xi, m_lattice, m_pdf1, m_pdf2, and IInterference::m_position_var.
|
inline |
std::vector< double > Interference2DParaCrystal::domainSizes | ( | ) | const |
Definition at line 171 of file Interference2DParaCrystal.cpp.
References m_domain_sizes.
|
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().
|
private |
Definition at line 152 of file Interference2DParaCrystal.cpp.
References IProfile2D::delta(), IProfile2D::gamma(), ROOT::Math::Cephes::gamma(), m_damping_length, m_lattice, m_pdf1, m_pdf2, IProfile2D::standardizedFT2D(), and transformToPrincipalAxes().
Referenced by interference1D().
|
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 77 of file Interference2DParaCrystal.cpp.
References RealIntegrator::integrate(), interferenceForXi(), m_integrate_xi, m_lattice, and M_TWOPI.
|
inline |
|
private |
Returns interference function for fixed xi in the dimension determined by the given index.
Definition at line 115 of file Interference2DParaCrystal.cpp.
References FTPDF(), m_domain_sizes, m_lattice, m_pdf1, and m_pdf2.
Referenced by interferenceForXi().
|
private |
Returns interference function for fixed angle xi.
Definition at line 106 of file Interference2DParaCrystal.cpp.
References interference1D(), and m_lattice.
Referenced by iff_without_dw().
const Lattice2D & Interference2DParaCrystal::lattice | ( | ) | const |
Definition at line 185 of file Interference2DParaCrystal.cpp.
References m_lattice.
Referenced by Interference2DParaCrystal().
|
overridevirtual |
|
inherited |
Returns all descendants.
Definition at line 61 of file INode.cpp.
References INode::nodeChildren().
|
inlinefinalvirtual |
Returns the parameter definitions, to be hard-coded in each leaf class.
Reimplemented from INode.
Definition at line 38 of file Interference2DParaCrystal.h.
References INF.
|
overridevirtual |
If defined by this interference function's parameters, returns the particle density (per area). Otherwise, returns zero or a user-defined value.
Reimplemented from IInterference.
Definition at line 66 of file Interference2DParaCrystal.cpp.
References m_lattice.
|
inline |
|
inline |
|
inlineinherited |
Returns the position variance.
Definition at line 40 of file IInterference.h.
References IInterference::m_position_var.
void Interference2DParaCrystal::setDampingLength | ( | double | damping_length | ) |
Sets the damping length.
damping_length | the damping (coherence) length of the paracrystal in nanometers |
Definition at line 61 of file Interference2DParaCrystal.cpp.
References m_damping_length.
void Interference2DParaCrystal::setDomainSizes | ( | double | size_1, |
double | size_2 | ||
) |
Sets the sizes of coherence domains.
size_1 | coherence domain size along the first basis vector in nanometers |
size_2 | coherence domain size along the second basis vector in nanometers |
Definition at line 91 of file Interference2DParaCrystal.cpp.
References m_domain_sizes.
Referenced by Interference2DParaCrystal(), and ExemplarySamples::createRectParaCrystal().
void Interference2DParaCrystal::setIntegrationOverXi | ( | bool | integrate_xi | ) |
Enables/disables averaging over the lattice rotation angle.
integrate_xi | integration flag |
Definition at line 179 of file Interference2DParaCrystal.cpp.
References m_integrate_xi, and m_lattice.
Referenced by ExemplarySamples::createHexParaCrystal(), and ExemplarySamples::createRectParaCrystal().
|
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().
void Interference2DParaCrystal::setProbabilityDistributions | ( | const IProfile2D & | pdf_1, |
const IProfile2D & | pdf_2 | ||
) |
Sets the probability distributions (Fourier transformed) for the two lattice directions.
pdf_1 | probability distribution in first lattice direction |
pdf_2 | probability distribution in second lattice direction |
Definition at line 51 of file Interference2DParaCrystal.cpp.
References IProfile2D::clone(), m_pdf1, and m_pdf2.
Referenced by ExemplarySamples::createBasic2DParaCrystalWithFTDis(), ExemplarySamples::createHexParaCrystal(), and ExemplarySamples::createRectParaCrystal().
|
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().
|
inlinevirtualinherited |
Indicates if this interference function can be used with a sample (DWBA mode)
Reimplemented in InterferenceFinite3DLattice, and Interference3DLattice.
Definition at line 47 of file IInterference.h.
Referenced by IInterference::DWfactor().
|
inlinevirtualinherited |
Used for Python overriding of clone (see swig/tweaks.py)
Definition at line 32 of file ICloneable.h.
|
private |
Definition at line 97 of file Interference2DParaCrystal.cpp.
References ROOT::Math::Cephes::gamma().
Referenced by FTPDF().
|
private |
Damping length for removing delta function singularity at q=0.
Definition at line 79 of file Interference2DParaCrystal.h.
Referenced by Interference2DParaCrystal(), clone(), dampingLength(), FTPDF(), and setDampingLength().
|
private |
Coherence domain sizes.
Definition at line 80 of file Interference2DParaCrystal.h.
Referenced by Interference2DParaCrystal(), clone(), domainSizes(), interference1D(), and setDomainSizes().
|
private |
Integrate over the orientation xi.
Definition at line 76 of file Interference2DParaCrystal.h.
Referenced by clone(), iff_without_dw(), integrationOverXi(), and setIntegrationOverXi().
|
private |
Definition at line 78 of file Interference2DParaCrystal.h.
Referenced by Interference2DParaCrystal(), clone(), FTPDF(), iff_without_dw(), interference1D(), interferenceForXi(), lattice(), nodeChildren(), particleDensity(), and setIntegrationOverXi().
|
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 77 of file Interference2DParaCrystal.h.
Referenced by clone(), FTPDF(), interference1D(), nodeChildren(), pdf1(), and setProbabilityDistributions().
|
private |
Definition at line 77 of file Interference2DParaCrystal.h.
Referenced by clone(), FTPDF(), interference1D(), nodeChildren(), pdf2(), and setProbabilityDistributions().
|
protectedinherited |
Definition at line 53 of file IInterference.h.
Referenced by IInterference::IInterference(), Interference1DLattice::clone(), Interference2DLattice::clone(), clone(), Interference2DSuperLattice::clone(), Interference3DLattice::clone(), InterferenceFinite2DLattice::clone(), InterferenceFinite3DLattice::clone(), InterferenceHardDisk::clone(), InterferenceNone::clone(), InterferenceRadialParaCrystal::clone(), InterferenceTwin::clone(), IInterference::DWfactor(), IInterference::positionVariance(), and IInterference::setPositionVariance().