BornAgain  1.19.79
Open-source research software to simulate and fit neutron and x-ray reflectometry and grazing-incidence small-angle scattering
Parameter.cpp
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file Fit/Param/Parameter.cpp
6 //! @brief Implements class Parameter.
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 
15 #include "Fit/Param/Parameter.h"
16 #include <cmath>
17 #include <utility>
18 
19 namespace {
20 
21 const double default_step = 0.01;
22 const double step_factor = 0.01;
23 
24 double step_for_value(double value)
25 {
26  return value == 0.0 ? default_step : std::abs(value) * step_factor;
27 }
28 
29 } // namespace
30 
31 using namespace mumufit;
32 
34  : m_start_value(0.0)
35  , m_value(0.0)
36  , m_step(0.0)
37  , m_error(0.0)
38 {
39 }
40 
41 Parameter::Parameter(std::string name, double value, const AttLimits& limits, double step)
42  : m_name(std::move(name))
43  , m_start_value(value)
44  , m_value(value)
45  , m_step(step)
46  , m_error(0.0)
47  , m_limits(limits)
48 {
49  if (step <= 0.0)
50  m_step = step_for_value(value);
51 }
52 
53 std::string Parameter::name() const
54 {
55  return m_name;
56 }
57 
58 double Parameter::startValue() const
59 {
60  return m_start_value;
61 }
62 
64 {
65  return m_limits;
66 }
67 
68 double Parameter::value() const
69 {
70  return m_value;
71 }
72 
73 void Parameter::setValue(double value)
74 {
75  m_value = value;
76 }
77 
78 double Parameter::step() const
79 {
80  return m_step;
81 }
82 
83 double Parameter::error() const
84 {
85  return m_error;
86 }
87 
88 void Parameter::setError(double value)
89 {
90  m_error = value;
91 }
Defines class Parameter.
Attributes and limits of a fit parameter, and coupling between these properties.
Definition: AttLimits.h:25
void setValue(double value)
Definition: Parameter.cpp:73
double startValue() const
Definition: Parameter.cpp:58
double m_value
current value of fit parameters
Definition: Parameter.h:56
std::string m_name
unique fit parameter name
Definition: Parameter.h:54
AttLimits m_limits
Definition: Parameter.h:59
double step() const
Definition: Parameter.cpp:78
std::string name() const
Definition: Parameter.cpp:53
AttLimits limits() const
Definition: Parameter.cpp:63
double value() const
Definition: Parameter.cpp:68
double error() const
Definition: Parameter.cpp:83
void setError(double value)
Definition: Parameter.cpp:88
double m_start_value
starting value of fit parameters
Definition: Parameter.h:55
double m_step
approximate initial step for the minimizer
Definition: Parameter.h:57
double m_error
error of fit parameter calculated by the minimizer
Definition: Parameter.h:58
The multi-library, multi-algorithm fit wrapper library.