BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
RealLimitsItems.cpp
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file GUI/coregui/Models/RealLimitsItems.cpp
6 //! @brief Defines RealLimitsItems's classes
7 //!
8 //! @homepage http://www.bornagainproject.org
9 //! @license GNU General Public License v3 or higher (see COPYING)
10 //! @copyright Forschungszentrum Jülich GmbH 2018
11 //! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
12 //
13 // ************************************************************************************************
14 
16 
17 namespace {
18 const QString tooltip_min_value = "Minimum allowed value, value included.";
19 const QString tooltip_max_value = "Maximum allowed value, value excluded.";
20 } // namespace
21 
22 const QString RealLimitsItem::P_XMIN = "Min";
23 const QString RealLimitsItem::P_XMAX = "Max";
24 
26 
27 // --------------------------------------------------------------------------------------------- //
28 
29 LimitlessItem::LimitlessItem() : RealLimitsItem("RealLimitsLimitless") {}
30 
31 RealLimits LimitlessItem::createRealLimits(double /*scale_factor*/) const
32 {
33  return RealLimits();
34 }
35 
36 // --------------------------------------------------------------------------------------------- //
37 
38 PositiveItem::PositiveItem() : RealLimitsItem("RealLimitsPositive") {}
39 
40 RealLimits PositiveItem::createRealLimits(double /*scale_factor*/) const
41 {
42  return RealLimits::positive();
43 }
44 
45 // --------------------------------------------------------------------------------------------- //
46 
47 NonnegativeItem::NonnegativeItem() : RealLimitsItem("RealLimitsNonnegative") {}
48 
49 RealLimits NonnegativeItem::createRealLimits(double /*scale_factor*/) const
50 {
51  return RealLimits::nonnegative();
52 }
53 
54 // --------------------------------------------------------------------------------------------- //
55 
57 {
58  addProperty(P_XMIN, 0.0)->setToolTip(tooltip_min_value).setLimits(RealLimits::limitless());
59 }
60 
62 {
63  return RealLimits::lowerLimited(scale_factor * getItemValue(P_XMIN).toDouble());
64 }
65 
66 // --------------------------------------------------------------------------------------------- //
67 
69 {
70  addProperty(P_XMAX, 1.0)->setToolTip(tooltip_max_value).setLimits(RealLimits::limitless());
71 }
72 
74 {
75  return RealLimits::upperLimited(scale_factor * getItemValue(P_XMAX).toDouble());
76 }
77 
78 // --------------------------------------------------------------------------------------------- //
79 
80 LimitedItem::LimitedItem() : RealLimitsItem("RealLimitsLimited")
81 {
82  addProperty(P_XMIN, 0.0)->setToolTip(tooltip_min_value).setLimits(RealLimits::limitless());
83  addProperty(P_XMAX, 1.0)->setToolTip(tooltip_max_value).setLimits(RealLimits::limitless());
84 }
85 
86 RealLimits LimitedItem::createRealLimits(double scale_factor) const
87 {
88  return RealLimits::limited(scale_factor * getItemValue(P_XMIN).toDouble(),
89  scale_factor * getItemValue(P_XMAX).toDouble());
90 }
Defines RealLimitsItems's classes.
RealLimits createRealLimits(double scale_factor=1.0) const
RealLimits createRealLimits(double scale_factor=1.0) const
RealLimits createRealLimits(double scale_factor=1.0) const
RealLimits createRealLimits(double scale_factor=1.0) const
RealLimits createRealLimits(double scale_factor=1.0) const
static const QString P_XMAX
static const QString P_XMIN
RealLimitsItem(const QString &name)
Limits for a real fit parameter.
Definition: RealLimits.h:24
static RealLimits limitless()
Creates an object withoud bounds (default)
Definition: RealLimits.cpp:130
static RealLimits upperLimited(double bound_value)
Creates an object bounded from the right.
Definition: RealLimits.cpp:120
static RealLimits lowerLimited(double bound_value)
Creates an object bounded from the left.
Definition: RealLimits.cpp:105
static RealLimits positive()
Creates an object which can have only positive values (>0., zero is not included)
Definition: RealLimits.cpp:110
static RealLimits nonnegative()
Creates an object which can have only positive values with 0. included.
Definition: RealLimits.cpp:115
static RealLimits limited(double left_bound_value, double right_bound_value)
Creates an object bounded from the left and right.
Definition: RealLimits.cpp:125
SessionItem * addProperty(const QString &name, const QVariant &variant)
Add new property item and register new tag.
QVariant getItemValue(const QString &tag) const
Directly access value of item under given tag.
SessionItem & setToolTip(const QString &tooltip)
SessionItem & setLimits(const RealLimits &value)
RealLimits createRealLimits(double scale_factor=1.0) const
QString const & name(EShape k)
Definition: particles.cpp:21