15 #ifndef BORNAGAIN_CORE_PARAMETRIZATION_DISTRIBUTIONS_H
16 #define BORNAGAIN_CORE_PARAMETRIZATION_DISTRIBUTIONS_H
46 std::vector<ParameterSample>
equidistantSamples(
size_t nbr_samples,
double sigma_factor = 0.,
55 virtual std::vector<double>
67 virtual void setUnits(
const std::string& units);
74 std::vector<ParameterSample>
100 virtual std::vector<double>
equidistantPoints(
size_t nbr_samples,
double sigma_factor,
133 virtual std::vector<double>
equidistantPoints(
size_t nbr_samples,
double sigma_factor,
169 virtual std::vector<double>
equidistantPoints(
size_t nbr_samples,
double sigma_factor,
206 virtual std::vector<double>
equidistantPoints(
size_t nbr_samples,
double sigma_factor,
213 virtual void setUnits(
const std::string& units);
241 virtual std::vector<double>
equidistantPoints(
size_t nbr_samples,
double sigma_factor,
279 virtual std::vector<double>
equidistantPoints(
size_t nbr_samples,
double sigma_factor,
Defines and implements the standard mix-in ICloneable.
Defines class RealLimits.
double getMean() const final
Returns the distribution-specific mean.
double probabilityDensity(double x) const final
Returns the distribution-specific probability density for value x.
void accept(INodeVisitor *visitor) const final
Calls the INodeVisitor's visit method.
bool isDelta() const final
Returns true if the distribution is in the limit case of a Dirac delta distribution.
virtual std::vector< double > equidistantPoints(size_t nbr_samples, double sigma_factor, const RealLimits &limits=RealLimits()) const
generate list of sample values
DistributionCosine * clone() const final
Uniform distribution function with half width hwhm.
void accept(INodeVisitor *visitor) const final
Calls the INodeVisitor's visit method.
DistributionGate * clone() const final
bool isDelta() const final
Returns true if the distribution is in the limit case of a Dirac delta distribution.
virtual std::vector< double > equidistantPoints(size_t nbr_samples, double sigma_factor, const RealLimits &limits=RealLimits()) const
Returns list of sample values.
double getMean() const final
Returns the distribution-specific mean.
double probabilityDensity(double x) const final
Returns the distribution-specific probability density for value x.
Gaussian distribution with standard deviation std_dev.
double getMean() const final
Returns the distribution-specific mean.
bool isDelta() const final
Returns true if the distribution is in the limit case of a Dirac delta distribution.
double probabilityDensity(double x) const final
Returns the distribution-specific probability density for value x.
void accept(INodeVisitor *visitor) const final
Calls the INodeVisitor's visit method.
virtual std::vector< double > equidistantPoints(size_t nbr_samples, double sigma_factor, const RealLimits &limits=RealLimits()) const
generate list of sample values
DistributionGaussian * clone() const final
double probabilityDensity(double x) const final
Returns the distribution-specific probability density for value x.
DistributionLogNormal * clone() const final
double getMean() const final
Returns the distribution-specific mean.
const double & m_scale_param
virtual void setUnits(const std::string &units)
Sets distribution units.
void accept(INodeVisitor *visitor) const final
Calls the INodeVisitor's visit method.
double getScalePar() const
DistributionLogNormal()=delete
bool isDelta() const final
Returns true if the distribution is in the limit case of a Dirac delta distribution.
virtual std::vector< double > equidistantPoints(size_t nbr_samples, double sigma_factor, const RealLimits &limits=RealLimits()) const
generate list of sample values
Lorentz distribution with half width hwhm.
bool isDelta() const final
Returns true if the distribution is in the limit case of a Dirac delta distribution.
virtual std::vector< double > equidistantPoints(size_t nbr_samples, double sigma_factor, const RealLimits &limits=RealLimits()) const
generate list of sample values
DistributionLorentz * clone() const final
double getMean() const final
Returns the distribution-specific mean.
void accept(INodeVisitor *visitor) const final
Calls the INodeVisitor's visit method.
double probabilityDensity(double x) const final
Returns the distribution-specific probability density for value x.
Trapezoidal distribution.
bool isDelta() const final
Returns true if the distribution is in the limit case of a Dirac delta distribution.
double getMean() const final
Returns the distribution-specific mean.
double probabilityDensity(double x) const final
Returns the distribution-specific probability density for value x.
virtual std::vector< double > equidistantPoints(size_t nbr_samples, double sigma_factor, const RealLimits &limits=RealLimits()) const
generate list of sample values
DistributionTrapezoid * clone() const final
double getRightWidth() const
double getLeftWidth() const
double getMiddleWidth() const
void accept(INodeVisitor *visitor) const final
Calls the INodeVisitor's visit method.
void adjustLimitsToNonZeroSamples(double &min, double &max, size_t nbr_samples) const
Interface for polymorphic classes that should not be copied, except by explicit cloning.
Interface for one-dimensional distributions.
std::vector< ParameterSample > generateSamplesFromValues(const std::vector< double > &sample_values) const
Returns weighted samples from given interpolation points and probabilityDensity().
virtual double probabilityDensity(double x) const =0
Returns the distribution-specific probability density for value x.
virtual double getMean() const =0
Returns the distribution-specific mean.
std::vector< ParameterSample > equidistantSamplesInRange(size_t nbr_samples, double xmin, double xmax) const
Returns equidistant samples from xmin to xmax, weighted with probabilityDensity().
IDistribution1D(const NodeMeta &meta, const std::vector< double > &PValues)
void adjustMinMaxForLimits(double &xmin, double &xmax, const RealLimits &limits) const
modifies xmin and xmax if they are outside of limits
virtual std::vector< double > equidistantPointsInRange(size_t nbr_samples, double xmin, double xmax) const
Returns equidistant interpolation points from xmin to xmax.
virtual bool isDelta() const =0
Returns true if the distribution is in the limit case of a Dirac delta distribution.
virtual std::vector< double > equidistantPoints(size_t nbr_samples, double sigma_factor, const RealLimits &limits=RealLimits()) const =0
Returns equidistant interpolation points, with range computed in distribution-specific way from mean ...
virtual IDistribution1D * clone() const =0
virtual void setUnits(const std::string &units)
Sets distribution units.
std::vector< ParameterSample > equidistantSamples(size_t nbr_samples, double sigma_factor=0., const RealLimits &limits=RealLimits()) const
Returns equidistant samples, using intrinsic parameters, weighted with probabilityDensity().
Visitor interface to visit ISample objects.
Base class for tree-like structures containing parameterized objects.
A parameter value with a weight, as obtained when sampling from a distribution.
Limits for a real fit parameter.