15 #ifndef BORNAGAIN_SAMPLE_CORRELATIONS_FTDISTRIBUTIONS1D_H
16 #define BORNAGAIN_SAMPLE_CORRELATIONS_FTDISTRIBUTIONS1D_H
44 virtual std::unique_ptr<IDistribution1DSampler>
createSampler()
const = 0;
64 double evaluate(
double q)
const final;
68 std::unique_ptr<IDistribution1DSampler>
createSampler() const final;
83 double evaluate(
double q)
const final;
87 std::unique_ptr<IDistribution1DSampler>
createSampler() const final;
102 double evaluate(
double q)
const final;
106 std::unique_ptr<IDistribution1DSampler>
createSampler() const final;
121 double evaluate(
double q)
const final;
125 std::unique_ptr<IDistribution1DSampler>
createSampler() const final;
141 double evaluate(
double q)
const final;
145 std::unique_ptr<IDistribution1DSampler>
createSampler() const final;
161 double evaluate(
double q)
const final;
166 std::unique_ptr<IDistribution1DSampler>
createSampler() const final;
Defines and implements the standard mix-in ICloneable.
Defines interface class IFTDistribution1D, and children thereof.
Exponential IFTDistribution1D exp(-|omega*x|); its Fourier transform evaluate(q) is a Cauchy-Lorentzi...
double qSecondDerivative() const final
Returns the negative of the second order derivative in q space around q=0.
FTDistribution1DCauchy * clone() const final
void accept(INodeVisitor *visitor) const final
Calls the INodeVisitor's visit method.
std::unique_ptr< IDistribution1DSampler > createSampler() const final
FTDistribution1DCauchy(const std::vector< double > P)
double evaluate(double q) const final
Returns Fourier transform of this distribution; is a decay function starting at evaluate(0)=1.
IFTDistribution1D consisting of one cosine wave [1+cos(pi*x/omega) if |x|<omega, and 0 otherwise]; it...
std::unique_ptr< IDistribution1DSampler > createSampler() const final
double evaluate(double q) const final
Returns Fourier transform of this distribution; is a decay function starting at evaluate(0)=1.
FTDistribution1DCosine * clone() const final
void accept(INodeVisitor *visitor) const final
Calls the INodeVisitor's visit method.
FTDistribution1DCosine(const std::vector< double > P)
double qSecondDerivative() const final
Returns the negative of the second order derivative in q space around q=0.
Square gate IFTDistribution1D; its Fourier transform evaluate(q) is a sinc function starting at evalu...
FTDistribution1DGate * clone() const final
FTDistribution1DGate(const std::vector< double > P)
std::unique_ptr< IDistribution1DSampler > createSampler() const final
double qSecondDerivative() const final
Returns the negative of the second order derivative in q space around q=0.
void accept(INodeVisitor *visitor) const final
Calls the INodeVisitor's visit method.
double evaluate(double q) const final
Returns Fourier transform of this distribution; is a decay function starting at evaluate(0)=1.
Gaussian IFTDistribution1D; its Fourier transform evaluate(q) is a Gaussian starting at evaluate(0)=1...
void accept(INodeVisitor *visitor) const final
Calls the INodeVisitor's visit method.
FTDistribution1DGauss(const std::vector< double > P)
std::unique_ptr< IDistribution1DSampler > createSampler() const final
double qSecondDerivative() const final
Returns the negative of the second order derivative in q space around q=0.
FTDistribution1DGauss * clone() const final
double evaluate(double q) const final
Returns Fourier transform of this distribution; is a decay function starting at evaluate(0)=1.
Triangle IFTDistribution1D [1-|x|/omega if |x|<omega, and 0 otherwise]; its Fourier transform evaluat...
double qSecondDerivative() const final
Returns the negative of the second order derivative in q space around q=0.
FTDistribution1DTriangle(const std::vector< double > P)
FTDistribution1DTriangle * clone() const final
void accept(INodeVisitor *visitor) const final
Calls the INodeVisitor's visit method.
double evaluate(double q) const final
Returns Fourier transform of this distribution; is a decay function starting at evaluate(0)=1.
std::unique_ptr< IDistribution1DSampler > createSampler() const final
IFTDistribution1D that provides a Fourier transform evaluate(q) in form of a pseudo-Voigt decay funct...
double evaluate(double q) const final
Returns Fourier transform of this distribution; is a decay function starting at evaluate(0)=1.
double qSecondDerivative() const final
Returns the negative of the second order derivative in q space around q=0.
void accept(INodeVisitor *visitor) const final
Calls the INodeVisitor's visit method.
FTDistribution1DVoigt * clone() const final
std::unique_ptr< IDistribution1DSampler > createSampler() const final
FTDistribution1DVoigt(const std::vector< double > P)
Interface for polymorphic classes that should not be copied, except by explicit cloning.
Interface for a one-dimensional distribution, with normalization adjusted so that the Fourier transfo...
virtual IFTDistribution1D * clone() const =0
virtual double qSecondDerivative() const =0
Returns the negative of the second order derivative in q space around q=0.
IFTDistribution1D(const NodeMeta &meta, const std::vector< double > &PValues)
virtual std::unique_ptr< IDistribution1DSampler > createSampler() const =0
virtual double evaluate(double q) const =0
Returns Fourier transform of this distribution; is a decay function starting at evaluate(0)=1.
Visitor interface to visit ISampleNode objects.
Base class for tree-like structures containing parameterized objects.