16 #ifndef BORNAGAIN_SAMPLE_CORRELATIONS_IPEAKSHAPE_H
17 #define BORNAGAIN_SAMPLE_CORRELATIONS_IPEAKSHAPE_H
21 #include <heinz/Vectors3D.h>
28 IPeakShape(
const std::vector<double>& PValues);
50 std::string
className() const final {
return "IsotropicGaussPeakShape"; }
51 std::vector<ParaMeta>
parDefs() const final
53 return {{
"MaxIntensity",
"",
"maximum intensity", 0, +
INF, -1},
54 {
"DomainSize",
"nm",
"domain size", 0, +
INF, -1}};
73 std::string
className() const final {
return "IsotropicLorentzPeakShape"; }
74 std::vector<ParaMeta>
parDefs() const final
76 return {{
"MaxIntensity",
"",
"maximum intensity", 0, +
INF, -1},
77 {
"DomainSize",
"nm",
"domain size", 0, +
INF, -1}};
97 std::string
className() const final {
return "GaussFisherPeakShape"; }
98 std::vector<ParaMeta>
parDefs() const final
100 return {{
"MaxIntensity",
"",
"maximum intensity", 0, +
INF, -1},
101 {
"DomainSize",
"nm",
"domain size", 0, +
INF, -1},
102 {
"Kappa",
"",
"?", 0, +
INF, -1}};
124 std::string
className() const final {
return "LorentzFisherPeakShape"; }
127 return {{
"MaxIntensity",
"",
"maximum intensity", 0, +
INF, -1},
128 {
"DomainSize",
"nm",
"domain size", 0, +
INF, -1},
129 {
"Kappa",
"",
"?", 0, +
INF, -1}};
152 std::string
className() const final {
return "MisesFisherGaussPeakShape"; }
155 return {{
"MaxIntensity",
"",
"maximum intensity", 0, +
INF, -1},
156 {
"Radial Size",
"nm",
"radial size", 0, +
INF, -1},
157 {
"Kappa1",
"",
"?", 0, +
INF, -1},
158 {
"Kappa2",
"",
"?", 0, +
INF, -1}};
180 std::string
className() const final {
return "MisesGaussPeakShape"; }
183 return {{
"MaxIntensity",
"",
"maximum intensity", 0, +
INF, -1},
184 {
"Radial Size",
"nm",
"radial size", 0, +
INF, -1},
185 {
"Kappa",
"",
"?", 0, +
INF, -1}};
Defines and implements the standard mix-in ICloneable.
A peak shape that is Gaussian in the radial direction and uses the Mises-Fisher distribution in the a...
bool angularDisorder() const override
Indicates if the peak shape encodes angular disorder, in which case all peaks in a spherical shell ar...
std::vector< ParaMeta > parDefs() const final
Returns the parameter definitions, to be hard-coded in each leaf class.
double peakDistribution(R3 q, R3 q_lattice_point) const override
Peak shape at q from a reciprocal lattice point at q_lattice_point.
GaussFisherPeakShape(double max_intensity, double radial_size, double kappa)
GaussFisherPeakShape * clone() const override
~GaussFisherPeakShape() override
std::string className() const final
Returns the class name, to be hard-coded in each leaf class that inherits from INode.
Interface for polymorphic classes that should not be copied, except by explicit cloning.
Base class for tree-like structures containing parameterized objects.
Abstract base class class that defines the peak shape of a Bragg peak.
virtual double peakDistribution(R3 q, R3 q_lattice_point) const =0
Peak shape at q from a reciprocal lattice point at q_lattice_point.
virtual bool angularDisorder() const
Indicates if the peak shape encodes angular disorder, in which case all peaks in a spherical shell ar...
IPeakShape * clone() const override=0
Class that implements an isotropic Gaussian peak shape of a Bragg peak.
std::vector< ParaMeta > parDefs() const final
Returns the parameter definitions, to be hard-coded in each leaf class.
IsotropicGaussPeakShape * clone() const override
std::string className() const final
Returns the class name, to be hard-coded in each leaf class that inherits from INode.
double peakDistribution(R3 q, R3 q_lattice_point) const override
Peak shape at q from a reciprocal lattice point at q_lattice_point.
~IsotropicGaussPeakShape() override
IsotropicGaussPeakShape(double max_intensity, double domainsize)
An isotropic Lorentzian peak shape of a Bragg peak.
double peakDistribution(R3 q, R3 q_lattice_point) const override
Peak shape at q from a reciprocal lattice point at q_lattice_point.
std::string className() const final
Returns the class name, to be hard-coded in each leaf class that inherits from INode.
IsotropicLorentzPeakShape(double max_intensity, double domainsize)
IsotropicLorentzPeakShape * clone() const override
std::vector< ParaMeta > parDefs() const final
Returns the parameter definitions, to be hard-coded in each leaf class.
~IsotropicLorentzPeakShape() override
A peak shape that is Lorentzian in the radial direction and uses the Mises-Fisher distribution in the...
LorentzFisherPeakShape(double max_intensity, double radial_size, double kappa)
~LorentzFisherPeakShape() override
LorentzFisherPeakShape * clone() const override
double peakDistribution(R3 q, R3 q_lattice_point) const override
Peak shape at q from a reciprocal lattice point at q_lattice_point.
std::vector< ParaMeta > parDefs() const final
Returns the parameter definitions, to be hard-coded in each leaf class.
std::string className() const final
Returns the class name, to be hard-coded in each leaf class that inherits from INode.
bool angularDisorder() const override
Indicates if the peak shape encodes angular disorder, in which case all peaks in a spherical shell ar...
A peak shape that is Gaussian in the radial direction and a convolution of a Mises-Fisher distributio...
MisesFisherGaussPeakShape(double max_intensity, double radial_size, R3 zenith, double kappa_1, double kappa_2)
MisesFisherGaussPeakShape * clone() const override
bool angularDisorder() const override
Indicates if the peak shape encodes angular disorder, in which case all peaks in a spherical shell ar...
~MisesFisherGaussPeakShape() override
std::vector< ParaMeta > parDefs() const final
Returns the parameter definitions, to be hard-coded in each leaf class.
std::string className() const final
Returns the class name, to be hard-coded in each leaf class that inherits from INode.
double peakDistribution(R3 q, R3 q_lattice_point) const override
Peak shape at q from a reciprocal lattice point at q_lattice_point.
A peak shape that is a convolution of a Mises-Fisher distribution with a 3d Gaussian.
~MisesGaussPeakShape() override
double peakDistribution(R3 q, R3 q_lattice_point) const override
Peak shape at q from a reciprocal lattice point at q_lattice_point.
MisesGaussPeakShape(double max_intensity, double radial_size, R3 zenith, double kappa)
bool angularDisorder() const override
Indicates if the peak shape encodes angular disorder, in which case all peaks in a spherical shell ar...
std::string className() const final
Returns the class name, to be hard-coded in each leaf class that inherits from INode.
std::vector< ParaMeta > parDefs() const final
Returns the parameter definitions, to be hard-coded in each leaf class.
MisesGaussPeakShape * clone() const override