15 #ifndef BORNAGAIN_PARAM_DISTRIB_RANGEDDISTRIBUTIONS_H
16 #define BORNAGAIN_PARAM_DISTRIB_RANGEDDISTRIBUTIONS_H
51 std::vector<ParameterSample>
generateSamples(
double mean,
double stddev)
const;
54 std::vector<std::vector<ParameterSample>>
55 generateSamples(
const std::vector<double>& mean,
const std::vector<double>& stddev)
const;
74 virtual std::string
name()
const = 0;
112 std::string
name()
const override;
137 std::string
name()
const override;
162 std::string
name()
const override;
187 std::string
name()
const override;
212 std::string
name()
const override;
Defines and implements the standard mix-in ICloneable.
Defines class RealLimits.
Interface for polymorphic classes that should not be copied, except by explicit cloning.
Interface for one-dimensional distributions.
Interface for one-dimensional ranged distributions. All derived distributions allow for generating sa...
void checkInitialization()
virtual IDistribution1D * distribution_impl(double mean, double stddev) const =0
Returns underlying IDistribution1D object.
IDistribution1D * distribution(double mean, double stddev) const
Public interface function to underlying IDistribution1D object.
double sigmaFactor() const
Returns sigma factor to use during sampling.
~IRangedDistribution() override
virtual std::string name() const =0
Returns distribution name for python-formatted text.
std::vector< ParameterSample > generateSamples(double mean, double stddev) const
RealLimits limits() const
Returns current limits of the distribution.
size_t nSamples() const
Returns number of samples to generate.
void setLimits(const RealLimits &limits)
IRangedDistribution * clone() const override=0
A parameter value with a weight, as obtained when sampling from a distribution.
~RangedDistributionCosine() override=default
RangedDistributionCosine * clone() const override
std::string name() const override
Returns distribution name for python-formatted text.
RangedDistributionCosine()
IDistribution1D * distribution_impl(double mean, double stddev) const override
Returns underlying IDistribution1D object.
Uniform distribution function.
~RangedDistributionGate() override=default
RangedDistributionGate * clone() const override
IDistribution1D * distribution_impl(double mean, double stddev) const override
Returns underlying IDistribution1D object.
std::string name() const override
Returns distribution name for python-formatted text.
Gaussian distribution with standard deviation std_dev.
std::string name() const override
Returns distribution name for python-formatted text.
IDistribution1D * distribution_impl(double mean, double stddev) const override
Returns underlying IDistribution1D object.
RangedDistributionGaussian()
~RangedDistributionGaussian() override=default
RangedDistributionGaussian * clone() const override
IDistribution1D * distribution_impl(double mean, double stddev) const override
Returns underlying IDistribution1D object.
RangedDistributionLogNormal * clone() const override
std::string name() const override
Returns distribution name for python-formatted text.
RangedDistributionLogNormal()
~RangedDistributionLogNormal() override=default
Lorentz distribution with median and hwhm.
~RangedDistributionLorentz() override=default
std::string name() const override
Returns distribution name for python-formatted text.
RangedDistributionLorentz * clone() const override
RangedDistributionLorentz()
IDistribution1D * distribution_impl(double median, double hwhm) const override
Returns underlying IDistribution1D object.
Limits for a real fit parameter.
static RealLimits limitless()
Creates an object without bounds (default)