15 #ifndef BORNAGAIN_CORE_PARAMETRIZATION_RANGEDDISTRIBUTIONS_H
16 #define BORNAGAIN_CORE_PARAMETRIZATION_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;
58 std::unique_ptr<IDistribution1D>
distribution(
double mean,
double stddev)
const;
78 virtual std::string
name()
const = 0;
81 double stddev)
const = 0;
115 std::string
name()
const override;
117 std::unique_ptr<IDistribution1D>
distribution_impl(
double mean,
double stddev)
const override;
140 std::string
name()
const override;
142 std::unique_ptr<IDistribution1D>
distribution_impl(
double median,
double hwhm)
const override;
165 std::string
name()
const override;
167 std::unique_ptr<IDistribution1D>
distribution_impl(
double mean,
double stddev)
const override;
190 std::string
name()
const override;
192 std::unique_ptr<IDistribution1D>
distribution_impl(
double mean,
double stddev)
const override;
215 std::string
name()
const override;
217 std::unique_ptr<IDistribution1D>
distribution_impl(
double mean,
double stddev)
const override;
222 return os << distribution.
pyString();
Defines and implements the standard mix-in ICloneable.
Defines class RealLimits.
std::ostream & operator<<(std::ostream &os, const BasicVector3D< T > &a)
Output to stream.
Interface for polymorphic classes that should not be copied, except by explicit cloning.
Interface for one-dimensional distributions.
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()
Interface for one-dimensional ranged distributions.
std::string pyString() const
Prints python-formatted definition of the distribution.
RangedDistribution * clone() const override=0
RealLimits limits() const
Returns current limits of the distribution.
~RangedDistribution() override
virtual std::unique_ptr< IDistribution1D > distribution_impl(double mean, double stddev) const =0
Returns underlying IDistribution1D object.
void checkInitialization()
size_t nSamples() const
Returns number of samples to generate.
std::vector< ParameterSample > generateSamples(double mean, double stddev) const
std::unique_ptr< IDistribution1D > distribution(double mean, double stddev) const
Public interface function to underlying IDistribution1D object.
double sigmaFactor() const
Returns sigma factor to use during sampling.
virtual std::string name() const =0
Returns distribution name for python-formatted text.
void setLimits(const RealLimits &limits)
Limits for a real fit parameter.
static RealLimits limitless()
Creates an object withoud bounds (default)