15 #ifndef BORNAGAIN_CORE_CORRELATIONS_FTDISTRIBUTIONS1D_H
16 #define BORNAGAIN_CORE_CORRELATIONS_FTDISTRIBUTIONS1D_H
43 virtual std::unique_ptr<IDistribution1DSampler>
createSampler()
const = 0;
62 double evaluate(
double q)
const override final;
66 std::unique_ptr<IDistribution1DSampler>
createSampler() const override final;
82 double evaluate(
double q)
const override final;
86 std::unique_ptr<IDistribution1DSampler>
createSampler() const override final;
102 double evaluate(
double q)
const override final;
106 std::unique_ptr<IDistribution1DSampler>
createSampler() const override final;
122 double evaluate(
double q)
const override final;
126 std::unique_ptr<IDistribution1DSampler>
createSampler() const override final;
143 double evaluate(
double q)
const override final;
147 std::unique_ptr<IDistribution1DSampler>
createSampler() const override final;
164 double evaluate(
double q)
const override final;
169 std::unique_ptr<IDistribution1DSampler>
createSampler() const override 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...
void accept(INodeVisitor *visitor) const override final
Calls the INodeVisitor's visit method.
FTDistribution1DCauchy * clone() const override final
double qSecondDerivative() const override final
Returns the negative of the second order derivative in q space around q=0.
std::unique_ptr< IDistribution1DSampler > createSampler() const override final
FTDistribution1DCauchy(const std::vector< double > P)
double evaluate(double q) const override 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 override final
FTDistribution1DCosine * clone() const override final
void accept(INodeVisitor *visitor) const override final
Calls the INodeVisitor's visit method.
double evaluate(double q) const override final
Returns Fourier transform of this distribution; is a decay function starting at evaluate(0)=1.
FTDistribution1DCosine(const std::vector< double > P)
double qSecondDerivative() const override 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...
double evaluate(double q) const override final
Returns Fourier transform of this distribution; is a decay function starting at evaluate(0)=1.
double qSecondDerivative() const override final
Returns the negative of the second order derivative in q space around q=0.
void accept(INodeVisitor *visitor) const override final
Calls the INodeVisitor's visit method.
FTDistribution1DGate(const std::vector< double > P)
std::unique_ptr< IDistribution1DSampler > createSampler() const override final
FTDistribution1DGate * clone() const override final
Gaussian IFTDistribution1D; its Fourier transform evaluate(q) is a Gaussian starting at evaluate(0)=1...
FTDistribution1DGauss(const std::vector< double > P)
void accept(INodeVisitor *visitor) const override final
Calls the INodeVisitor's visit method.
FTDistribution1DGauss * clone() const override final
double qSecondDerivative() const override final
Returns the negative of the second order derivative in q space around q=0.
std::unique_ptr< IDistribution1DSampler > createSampler() const override final
double evaluate(double q) const override 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...
FTDistribution1DTriangle * clone() const override final
FTDistribution1DTriangle(const std::vector< double > P)
void accept(INodeVisitor *visitor) const override final
Calls the INodeVisitor's visit method.
double evaluate(double q) const override final
Returns Fourier transform of this distribution; is a decay function starting at evaluate(0)=1.
std::unique_ptr< IDistribution1DSampler > createSampler() const override final
double qSecondDerivative() const override final
Returns the negative of the second order derivative in q space around q=0.
IFTDistribution1D that provides a Fourier transform evaluate(q) in form of a pseudo-Voigt decay funct...
void accept(INodeVisitor *visitor) const override final
Calls the INodeVisitor's visit method.
FTDistribution1DVoigt * clone() const override final
double evaluate(double q) const override final
Returns Fourier transform of this distribution; is a decay function starting at evaluate(0)=1.
double qSecondDerivative() const override final
Returns the negative of the second order derivative in q space around q=0.
FTDistribution1DVoigt(const std::vector< double > P)
std::unique_ptr< IDistribution1DSampler > createSampler() const override final
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 ISample objects.
Base class for tree-like structures containing parameterized objects.