From b080ec4d2de5403da0b8a09b0e8cd67b5c079184 Mon Sep 17 00:00:00 2001 From: Dmitry Yurov <d.yurov@fz-juelich.de> Date: Tue, 26 Mar 2019 16:27:15 +0100 Subject: [PATCH] Make all the necessary constructors of ranged distributions visible from python --- Core/Parametrization/RangedDistributions.cpp | 70 ++++++++++++++++++++ Core/Parametrization/RangedDistributions.h | 52 +++++++++++++-- 2 files changed, 116 insertions(+), 6 deletions(-) diff --git a/Core/Parametrization/RangedDistributions.cpp b/Core/Parametrization/RangedDistributions.cpp index 3f1ae7cd18a..5da29632430 100644 --- a/Core/Parametrization/RangedDistributions.cpp +++ b/Core/Parametrization/RangedDistributions.cpp @@ -114,6 +114,20 @@ void RangedDistribution::checkInitialization() "shall not exceed the upper one."); } +RangedDistributionGate::RangedDistributionGate() : RangedDistribution() {} + +RangedDistributionGate::RangedDistributionGate(size_t n_samples, double sigma_factor, + const RealLimits& limits) + : RangedDistribution(n_samples, sigma_factor, limits) +{ +} + +RangedDistributionGate::RangedDistributionGate(size_t n_samples, double sigma_factor, double min, + double max) + : RangedDistribution(n_samples, sigma_factor, min, max) +{ +} + RangedDistributionGate* RangedDistributionGate::clone() const { return makeCopy(*this).release(); @@ -132,6 +146,20 @@ RangedDistributionGate::distribution_impl(double mean, double stddev) const return std::make_unique<DistributionGate>(x_min, x_max); } +RangedDistributionLorentz::RangedDistributionLorentz() : RangedDistribution() {} + +RangedDistributionLorentz::RangedDistributionLorentz(size_t n_samples, double hwhm_factor, + const RealLimits& limits) + : RangedDistribution(n_samples, hwhm_factor, limits) +{ +} + +RangedDistributionLorentz::RangedDistributionLorentz(size_t n_samples, double hwhm_factor, + double min, double max) + : RangedDistribution(n_samples, hwhm_factor, min, max) +{ +} + RangedDistributionLorentz* RangedDistributionLorentz::clone() const { return makeCopy(*this).release(); @@ -148,6 +176,20 @@ RangedDistributionLorentz::distribution_impl(double median, double hwhm) const return std::make_unique<DistributionLorentz>(median, hwhm); } +RangedDistributionGaussian::RangedDistributionGaussian() : RangedDistribution() {} + +RangedDistributionGaussian::RangedDistributionGaussian(size_t n_samples, double sigma_factor, + const RealLimits& limits) + : RangedDistribution(n_samples, sigma_factor, limits) +{ +} + +RangedDistributionGaussian::RangedDistributionGaussian(size_t n_samples, double sigma_factor, + double min, double max) + : RangedDistribution(n_samples, sigma_factor, min, max) +{ +} + RangedDistributionGaussian* RangedDistributionGaussian::clone() const { return makeCopy(*this).release(); @@ -164,6 +206,20 @@ RangedDistributionGaussian::distribution_impl(double mean, double stddev) const return std::make_unique<DistributionGaussian>(mean, stddev); } +RangedDistributionLogNormal::RangedDistributionLogNormal() : RangedDistribution() {} + +RangedDistributionLogNormal::RangedDistributionLogNormal(size_t n_samples, double sigma_factor, + const RealLimits& limits) + : RangedDistribution(n_samples, sigma_factor, limits) +{ +} + +RangedDistributionLogNormal::RangedDistributionLogNormal(size_t n_samples, double sigma_factor, + double min, double max) + : RangedDistribution(n_samples, sigma_factor, min, max) +{ +} + RangedDistributionLogNormal* RangedDistributionLogNormal::clone() const { return makeCopy(*this).release(); @@ -187,6 +243,20 @@ RangedDistributionLogNormal::distribution_impl(double mean, double stddev) const return std::make_unique<DistributionLogNormal>(median, scale); } +RangedDistributionCosine::RangedDistributionCosine() : RangedDistribution() {} + +RangedDistributionCosine::RangedDistributionCosine(size_t n_samples, double sigma_factor, + const RealLimits& limits) + : RangedDistribution(n_samples, sigma_factor, limits) +{ +} + +RangedDistributionCosine::RangedDistributionCosine(size_t n_samples, double sigma_factor, + double min, double max) + : RangedDistribution(n_samples, sigma_factor, min, max) +{ +} + RangedDistributionCosine* RangedDistributionCosine::clone() const { return makeCopy(*this).release(); diff --git a/Core/Parametrization/RangedDistributions.h b/Core/Parametrization/RangedDistributions.h index 5969e408a6b..c67249ad529 100644 --- a/Core/Parametrization/RangedDistributions.h +++ b/Core/Parametrization/RangedDistributions.h @@ -41,7 +41,7 @@ public: const RealLimits& limits = RealLimits::limitless()); //! Initializes Ranged distribution with given number of samples, sigma factor //! (range in standard deviations to take into account during sample generation) - //! and limits (either RealLimits object or just min and max values for such an object). + //! and limits (either RealLimits object or just min and max limits). //! By default _n_samples_ = 5, _sigma_factor_ = 2.0, while the limits are (-inf, +inf). RangedDistribution(size_t n_samples, double sigma_factor, double min, double max); RangedDistribution* clone() const override = 0; @@ -97,7 +97,15 @@ private: class BA_CORE_API_ RangedDistributionGate : public RangedDistribution { public: - using RangedDistribution::RangedDistribution; + RangedDistributionGate(); + RangedDistributionGate(size_t n_samples, double sigma_factor, + const RealLimits& limits = RealLimits::limitless()); + //! Initializes Ranged distribution with given number of samples, sigma factor + //! (range in standard deviations to take into account during sample generation) + //! and limits (either RealLimits object or just min and max limits). + //! By default _n_samples_ = 5, _sigma_factor_ = 2.0, while the limits are (-inf, +inf). + RangedDistributionGate(size_t n_samples, double sigma_factor, double min, double max); + RangedDistributionGate* clone() const override; ~RangedDistributionGate() override = default; @@ -115,7 +123,15 @@ protected: class BA_CORE_API_ RangedDistributionLorentz : public RangedDistribution { public: - using RangedDistribution::RangedDistribution; + RangedDistributionLorentz(); + RangedDistributionLorentz(size_t n_samples, double hwhm_factor, + const RealLimits& limits = RealLimits::limitless()); + //! Initializes Ranged distribution with given number of samples, sigma factor + //! (range in standard deviations to take into account during sample generation) + //! and limits (either RealLimits object or just min and max limits). + //! By default _n_samples_ = 5, _hwhm_factor_ = 2.0, while the limits are (-inf, +inf). + RangedDistributionLorentz(size_t n_samples, double hwhm_factor, double min, double max); + RangedDistributionLorentz* clone() const override; ~RangedDistributionLorentz() override = default; @@ -133,7 +149,15 @@ protected: class BA_CORE_API_ RangedDistributionGaussian: public RangedDistribution { public: - using RangedDistribution::RangedDistribution; + RangedDistributionGaussian(); + RangedDistributionGaussian(size_t n_samples, double sigma_factor, + const RealLimits& limits = RealLimits::limitless()); + //! Initializes Ranged distribution with given number of samples, sigma factor + //! (range in standard deviations to take into account during sample generation) + //! and limits (either RealLimits object or just min and max limits). + //! By default _n_samples_ = 5, _sigma_factor_ = 2.0, while the limits are (-inf, +inf). + RangedDistributionGaussian(size_t n_samples, double sigma_factor, double min, double max); + RangedDistributionGaussian* clone() const override; ~RangedDistributionGaussian() override = default; @@ -151,7 +175,15 @@ protected: class BA_CORE_API_ RangedDistributionLogNormal: public RangedDistribution { public: - using RangedDistribution::RangedDistribution; + RangedDistributionLogNormal(); + RangedDistributionLogNormal(size_t n_samples, double sigma_factor, + const RealLimits& limits = RealLimits::limitless()); + //! Initializes Ranged distribution with given number of samples, sigma factor + //! (range in standard deviations to take into account during sample generation) + //! and limits (either RealLimits object or just min and max limits). + //! By default _n_samples_ = 5, _sigma_factor_ = 2.0, while the limits are (-inf, +inf). + RangedDistributionLogNormal(size_t n_samples, double sigma_factor, double min, double max); + RangedDistributionLogNormal* clone() const override; ~RangedDistributionLogNormal() override = default; @@ -169,7 +201,15 @@ protected: class BA_CORE_API_ RangedDistributionCosine: public RangedDistribution { public: - using RangedDistribution::RangedDistribution; + RangedDistributionCosine(); + RangedDistributionCosine(size_t n_samples, double sigma_factor, + const RealLimits& limits = RealLimits::limitless()); + //! Initializes Ranged distribution with given number of samples, sigma factor + //! (range in standard deviations to take into account during sample generation) + //! and limits (either RealLimits object or just min and max limits). + //! By default _n_samples_ = 5, _sigma_factor_ = 2.0, while the limits are (-inf, +inf). + RangedDistributionCosine(size_t n_samples, double sigma_factor, double min, double max); + RangedDistributionCosine* clone() const override; ~RangedDistributionCosine() override = default; -- GitLab