BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
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 
18 namespace {
19 const double default_step = 0.01;
20 const double step_factor = 0.01;
21 
22 double step_for_value(double value)
23 {
24  return value == 0.0 ? default_step : std::abs(value) * step_factor;
25 }
26 } // namespace
27 
28 using namespace mumufit;
29 
30 Parameter::Parameter() : m_start_value(0.0), m_value(0.0), m_step(0.0), m_error(0.0) {}
31 
32 Parameter::Parameter(const std::string& name, double value, const AttLimits& limits, double step)
33  : m_name(name)
34  , m_start_value(value)
35  , m_value(value)
36  , m_step(step)
37  , m_error(0.0)
38  , m_limits(limits)
39 {
40  if (step <= 0.0)
41  m_step = step_for_value(value);
42 }
43 
44 std::string Parameter::name() const
45 {
46  return m_name;
47 }
48 
49 double Parameter::startValue() const
50 {
51  return m_start_value;
52 }
53 
55 {
56  return m_limits;
57 }
58 
59 double Parameter::value() const
60 {
61  return m_value;
62 }
63 
64 void Parameter::setValue(double value)
65 {
66  m_value = value;
67 }
68 
69 double Parameter::step() const
70 {
71  return m_step;
72 }
73 
74 double Parameter::error() const
75 {
76  return m_error;
77 }
78 
79 void Parameter::setError(double value)
80 {
81  m_error = value;
82 }
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:64
double startValue() const
Definition: Parameter.cpp:49
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:69
std::string name() const
Definition: Parameter.cpp:44
AttLimits limits() const
Definition: Parameter.cpp:54
double value() const
Definition: Parameter.cpp:59
double error() const
Definition: Parameter.cpp:74
void setError(double value)
Definition: Parameter.cpp:79
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
QString const & name(EShape k)
Definition: particles.cpp:21
The multi-library, multi-algorithm fit wrapper library.