15 #ifndef BORNAGAIN_CORE_CORRELATIONS_FTDISTRIBUTIONS2D_H
16 #define BORNAGAIN_CORE_CORRELATIONS_FTDISTRIBUTIONS2D_H
43 virtual double evaluate(
double qx,
double qy)
const = 0;
46 virtual std::unique_ptr<IDistribution2DSampler>
createSampler()
const = 0;
50 double sumsq(
double qx,
double qy)
const;
70 double evaluate(
double qx,
double qy)
const final;
72 std::unique_ptr<IDistribution2DSampler>
createSampler() const final;
89 double evaluate(
double qx,
double qy)
const final;
91 std::unique_ptr<IDistribution2DSampler>
createSampler() const final;
108 double evaluate(
double qx,
double qy)
const final;
110 std::unique_ptr<IDistribution2DSampler>
createSampler() const final;
127 double evaluate(
double qx,
double qy)
const final;
129 std::unique_ptr<IDistribution2DSampler>
createSampler() const final;
145 double evaluate(
double qx,
double qy)
const final;
148 std::unique_ptr<IDistribution2DSampler>
createSampler() const final;
Defines and implements the standard mix-in ICloneable.
Defines interface class IFTDistribution1D, and children thereof.
Defines M_PI and some more mathematical constants.
Two-dimensional Cauchy distribution in Fourier space; corresponds to a normalized exp(-r) in real spa...
FTDistribution2DCauchy(const std::vector< double > P)
double evaluate(double qx, double qy) const final
evaluate Fourier transformed distribution for q in X,Y coordinates the original distribution (in real...
void accept(INodeVisitor *visitor) const final
Calls the INodeVisitor's visit method.
FTDistribution2DCauchy * clone() const final
std::unique_ptr< IDistribution2DSampler > createSampler() const final
Two-dimensional cone distribution in Fourier space; corresponds to 1-r if r<1 (and 0 otherwise) in re...
std::unique_ptr< IDistribution2DSampler > createSampler() const final
void accept(INodeVisitor *visitor) const final
Calls the INodeVisitor's visit method.
FTDistribution2DCone(const std::vector< double > P)
FTDistribution2DCone * clone() const final
double evaluate(double qx, double qy) const final
evaluate Fourier transformed distribution for q in X,Y coordinates the original distribution (in real...
Two-dimensional gate distribution in Fourier space; corresponds to normalized constant if r<1 (and 0 ...
FTDistribution2DGate(const std::vector< double > P)
FTDistribution2DGate * clone() const final
double evaluate(double qx, double qy) const final
evaluate Fourier transformed distribution for q in X,Y coordinates the original distribution (in real...
void accept(INodeVisitor *visitor) const final
Calls the INodeVisitor's visit method.
std::unique_ptr< IDistribution2DSampler > createSampler() const final
Two-dimensional Gauss distribution in Fourier space; corresponds to normalized exp(-r^2/2) in real sp...
FTDistribution2DGauss(const std::vector< double > P)
std::unique_ptr< IDistribution2DSampler > createSampler() const final
FTDistribution2DGauss * clone() const final
double evaluate(double qx, double qy) const final
evaluate Fourier transformed distribution for q in X,Y coordinates the original distribution (in real...
void accept(INodeVisitor *visitor) const final
Calls the INodeVisitor's visit method.
Two-dimensional Voigt distribution in Fourier space; corresponds to eta*Gauss + (1-eta)*Cauchy.
FTDistribution2DVoigt(const std::vector< double > P)
void accept(INodeVisitor *visitor) const final
Calls the INodeVisitor's visit method.
double evaluate(double qx, double qy) const final
evaluate Fourier transformed distribution for q in X,Y coordinates the original distribution (in real...
FTDistribution2DVoigt * clone() const final
std::unique_ptr< IDistribution2DSampler > createSampler() const final
Interface for polymorphic classes that should not be copied, except by explicit cloning.
Interface for two-dimensional distributions in Fourier space.
virtual std::unique_ptr< IDistribution2DSampler > createSampler() const =0
IFTDistribution2D * clone() const =0
double delta() const
Angle in direct space between X- and Y-axis of distribution.
IFTDistribution2D(const NodeMeta &meta, const std::vector< double > &PValues)
double sumsq(double qx, double qy) const
virtual double evaluate(double qx, double qy) const =0
evaluate Fourier transformed distribution for q in X,Y coordinates the original distribution (in real...
Visitor interface to visit ISample objects.
Base class for tree-like structures containing parameterized objects.