diff --git a/GUI/Models/DistributionItems.cpp b/GUI/Models/DistributionItems.cpp index 119fe7ea59d2a5bb2aa95174e5b2738032071e8e..88c3faa679af90114689cd463c1b8eeb3997e489 100644 --- a/GUI/Models/DistributionItems.cpp +++ b/GUI/Models/DistributionItems.cpp @@ -228,6 +228,13 @@ void DistributionGateItem::init_distribution(double value) setItemValue(P_MAX, value + sigma); } +void DistributionGateItem::setRange(const double minimum, const double maximum) +{ + ASSERT(minimum <= maximum); + setItemValue(P_MIN, minimum); + setItemValue(P_MAX, maximum); +} + // --------------------------------------------------------------------------------------------- // const QString DistributionLorentzItem::P_HWHM = QString::fromStdString("HWHM"); diff --git a/GUI/Models/DistributionItems.h b/GUI/Models/DistributionItems.h index 8f80904f1d8640593483f4ecdd12fc7956fc2601..54af499b520c2be9849fbbf65295f8f0149cf643 100644 --- a/GUI/Models/DistributionItems.h +++ b/GUI/Models/DistributionItems.h @@ -85,10 +85,11 @@ public: }; class BA_CORE_API_ DistributionGateItem : public DistributionItem { -public: +private: static const QString P_MIN; static const QString P_MAX; +public: static const QString M_TYPE; DistributionGateItem(); @@ -96,6 +97,8 @@ public: std::unique_ptr<IDistribution1D> createDistribution(double scale = 1.0) const override; void init_distribution(double value) override; void showMean(bool) override {} + + void setRange(double minimum, double maximum); }; class BA_CORE_API_ DistributionLorentzItem : public SymmetricDistributionItem { diff --git a/GUI/Models/TransformFromDomain.cpp b/GUI/Models/TransformFromDomain.cpp index 149fecdc967ce933e450ada8b68cd79f25675f14..74151fe3117fbbaec1a244ceedcc5303f02a94bc 100644 --- a/GUI/Models/TransformFromDomain.cpp +++ b/GUI/Models/TransformFromDomain.cpp @@ -749,9 +749,11 @@ void setDistribution(BeamDistributionItem* part_distr_item, ParameterDistributio SessionItem* item = nullptr; if (const DistributionGate* distr = dynamic_cast<const DistributionGate*>(p_distribution)) { - item = part_distr_item->setDistributionGroupItem<DistributionGateItem>(); - item->setItemValue(DistributionGateItem::P_MIN, factor * distr->lowerBound()); - item->setItemValue(DistributionGateItem::P_MAX, factor * distr->upperBound()); + DistributionGateItem* distr_gate_item = + part_distr_item->setDistributionGroupItem<DistributionGateItem>(); + distr_gate_item->setRange(factor * distr->lowerBound(), + factor * distr->upperBound()); + item = distr_gate_item; } else if (const DistributionLorentz* distr = dynamic_cast<const DistributionLorentz*>(p_distribution)) { DistributionLorentzItem* distr_lorentz_item =