22 template <
class DistrType>
23 std::unique_ptr<IRangedDistribution>
150 return std::make_unique<DistributionGate>(scale * min, scale * max);
155 double sigma(0.1 * std::abs(
value));
180 return std::make_unique<DistributionLorentz>(scale * mean, scale * hwhm);
183 std::unique_ptr<IRangedDistribution>
186 return ::createIRangedDistribution<RangedDistributionLorentz>(*
this, scale);
196 double sigma(0.1 * std::abs(
value));
223 return std::make_unique<DistributionGaussian>(scale * mean, scale * std_dev);
226 std::unique_ptr<IRangedDistribution>
229 return ::createIRangedDistribution<RangedDistributionGaussian>(*
this, scale);
239 double sigma(0.1 * std::abs(
value));
266 return std::make_unique<DistributionLogNormal>(scale * median, scale_par);
271 double sigma(0.1 * std::abs(
value));
302 return std::make_unique<DistributionCosine>(scale * mean, scale * sigma);
305 std::unique_ptr<IRangedDistribution>
308 return ::createIRangedDistribution<RangedDistributionCosine>(*
this, scale);
318 double sigma(0.1 * std::abs(
value));
350 return std::make_unique<DistributionTrapezoid>(scale * center, scale * left, scale * middle,
356 double width(0.1 * std::abs(
value));
371 template <
class DistrType>
372 std::unique_ptr<IRangedDistribution>
380 limits_item ?
dynamic_cast<RealLimitsItem*
>(limits_item)->createRealLimits(scale)
383 return std::make_unique<DistrType>(n_samples, n_sig, limits);
Defines class DistributionItem and several subclasses.
Defines classes representing one-dimensional distributions.
Defines classes representing ranged one-dimensional distributions.
Defines RealLimitsItems's classes.
double deviation(double scale) const override
std::unique_ptr< IRangedDistribution > createIRangedDistribution(double scale) const override
void init_distribution(double value) override
std::unique_ptr< IDistribution1D > createDistribution(double scale=1.0) const override
static const QString P_SIGMA
std::unique_ptr< IDistribution1D > createDistribution(double scale=1.0) const override
static const QString P_MAX
void init_distribution(double value) override
static const QString P_MIN
std::unique_ptr< IDistribution1D > createDistribution(double scale=1.0) const override
DistributionGaussianItem()
static const QString P_STD_DEV
double deviation(double scale) const override
void init_distribution(double value) override
std::unique_ptr< IRangedDistribution > createIRangedDistribution(double scale) const override
void init_parameters(double value, const RealLimits &limits=RealLimits::limitless())
Provides initialization of the distribution with some reasonable parameters around given value.
virtual void init_distribution(double)
void register_number_of_samples()
void register_sigma_factor()
void init_limits_group(const RealLimits &limits, double factor=1.0)
static const QString P_LIMITS
DistributionItem(const QString &name)
static const QString P_IS_INITIALIZED
static const QString P_NUMBER_OF_SAMPLES
static const QString P_SIGMA_FACTOR
void showMean(bool flag) override
std::unique_ptr< IDistribution1D > createDistribution(double scale=1.0) const override
static const QString P_MEDIAN
static const QString P_SCALE_PAR
DistributionLogNormalItem()
void init_distribution(double value) override
void init_distribution(double value) override
static const QString P_HWHM
double deviation(double scale) const override
std::unique_ptr< IDistribution1D > createDistribution(double scale=1.0) const override
std::unique_ptr< IRangedDistribution > createIRangedDistribution(double scale) const override
DistributionLorentzItem()
std::unique_ptr< IDistribution1D > createDistribution(double scale=1.0) const override
double deviation(double scale) const override
std::unique_ptr< IRangedDistribution > createIRangedDistribution(double scale) const override
void init_distribution(double value) override
static const QString P_LEFTWIDTH
DistributionTrapezoidItem()
std::unique_ptr< IDistribution1D > createDistribution(double scale=1.0) const override
void showMean(bool flag) override
static const QString P_RIGHTWIDTH
static const QString P_MIDDLEWIDTH
static const QString P_CENTER
void init_distribution(double value) override
static const QString P_XMAX
static const QString P_XMIN
Limits for a real fit parameter.
static RealLimits limitless()
Creates an object withoud bounds (default)
bool isLowerLimited() const
static RealLimits lowerLimited(double bound_value)
Creates an object bounded from the left.
double upperLimit() const
Returns upper limit.
double lowerLimit() const
Returns lower limit.
bool isNonnegative() const
bool isUpperLimited() const
bool isTag(const QString &name) const
Returns true if tag is available.
SessionItem * addProperty(const QString &name, const QVariant &variant)
Add new property item and register new tag.
SessionItem & setDecimals(int n)
SessionItem * getGroupItem(const QString &groupName) const
Access subitem of group item.
QVariant value() const
Get value.
void setVisible(bool enabled)
Flags accessors.
QVariant getItemValue(const QString &tag) const
Directly access value of item under given tag.
void setDisplayName(const QString &display_name)
Set display name.
SessionItem * addGroupProperty(const QString &groupTag, const QString &groupType)
Creates new group item and register new tag, returns GroupItem.
void setItemValue(const QString &tag, const QVariant &variant)
Directly set value of item under given tag.
SessionItem * setGroupProperty(const QString &groupTag, const QString &modelType) const
Set the current type of group item.
RealLimits limits() const
SessionItem * getItem(const QString &tag="", int row=0) const
Returns item in given row of given tag.
SessionItem & setLimits(const RealLimits &value)
void showMean(bool flag) override
SymmetricDistributionItem(const QString &name)
static const QString P_MEAN
QString const & name(EShape k)