15 #ifndef BORNAGAIN_PARAM_DISTRIB_RANGEDDISTRIBUTIONS_H
16 #define BORNAGAIN_PARAM_DISTRIB_RANGEDDISTRIBUTIONS_H
52 std::vector<ParameterSample>
generateSamples(
double mean,
double stddev)
const;
55 std::vector<std::vector<ParameterSample>>
56 generateSamples(
const std::vector<double>& mean,
const std::vector<double>& stddev)
const;
59 std::unique_ptr<IDistribution1D>
distribution(
double mean,
double stddev)
const;
75 virtual std::string
name()
const = 0;
80 double stddev)
const = 0;
114 std::string
name()
const override;
118 std::unique_ptr<IDistribution1D>
distribution_impl(
double mean,
double stddev)
const override;
139 std::string
name()
const override;
143 std::unique_ptr<IDistribution1D>
distribution_impl(
double median,
double hwhm)
const override;
164 std::string
name()
const override;
168 std::unique_ptr<IDistribution1D>
distribution_impl(
double mean,
double stddev)
const override;
189 std::string
name()
const override;
193 std::unique_ptr<IDistribution1D>
distribution_impl(
double mean,
double stddev)
const override;
214 std::string
name()
const override;
218 std::unique_ptr<IDistribution1D>
distribution_impl(
double mean,
double stddev)
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.
void checkInitialization()
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::unique_ptr< IDistribution1D > distribution(double mean, double stddev) const
Public interface function to underlying IDistribution1D object.
virtual std::unique_ptr< IDistribution1D > distribution_impl(double mean, double stddev) const =0
Returns underlying IDistribution1D object.
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::unique_ptr< 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.
RangedDistributionCosine()
Uniform distribution function.
~RangedDistributionGate() override=default
RangedDistributionGate * clone() const override
std::string name() const override
Returns distribution name for python-formatted text.
std::unique_ptr< IDistribution1D > distribution_impl(double mean, double stddev) const override
Returns underlying IDistribution1D object.
Gaussian distribution with standard deviation std_dev.
std::string name() const override
Returns distribution name for python-formatted text.
RangedDistributionGaussian()
std::unique_ptr< IDistribution1D > distribution_impl(double mean, double stddev) const override
Returns underlying IDistribution1D object.
~RangedDistributionGaussian() override=default
RangedDistributionGaussian * clone() const override
RangedDistributionLogNormal * clone() const override
std::string name() const override
Returns distribution name for python-formatted text.
RangedDistributionLogNormal()
~RangedDistributionLogNormal() override=default
std::unique_ptr< IDistribution1D > distribution_impl(double mean, double stddev) const override
Returns underlying IDistribution1D object.
Lorentz distribution with median and hwhm.
~RangedDistributionLorentz() override=default
std::string name() const override
Returns distribution name for python-formatted text.
std::unique_ptr< IDistribution1D > distribution_impl(double median, double hwhm) const override
Returns underlying IDistribution1D object.
RangedDistributionLorentz * clone() const override
RangedDistributionLorentz()
Limits for a real fit parameter.
static RealLimits limitless()
Creates an object withoud bounds (default)