BornAgain  1.19.79
Open-source research software to simulate and fit neutron and x-ray reflectometry and grazing-incidence small-angle scattering
ROOT::Fit::ParameterSettings Class Reference

Description

Class, describing value, limits and step size of the parameters Provides functionality also to set/retrieve values, step sizes, limits and fix the parameters.

To be done: add constraints (equality and inequality) as functions of the parameters

Definition at line 36 of file ParameterSettings.h.

Collaboration diagram for ROOT::Fit::ParameterSettings:
[legend]

Public Member Functions

 ParameterSettings ()
 
 ParameterSettings (const std::string &name, double val)
 constructor for fixed Parameter More...
 
 ParameterSettings (const std::string &name, double val, double err)
 constructor for unlimited named Parameter More...
 
 ParameterSettings (const std::string &name, double val, double err, double min, double max)
 constructor for double limited Parameter. The given value should be within the given limits [min,max] More...
 
 ~ParameterSettings ()
 
void Fix ()
 fix the parameter More...
 
bool HasLowerLimit () const
 check if parameter has lower limit More...
 
bool HasUpperLimit () const
 check if parameter has upper limit More...
 
bool IsBound () const
 check if is bound More...
 
bool IsDoubleBound () const
 check if is double bound (upper AND lower limit) More...
 
bool IsFixed () const
 check if is fixed More...
 
double LowerLimit () const
 return lower limit value More...
 
const std::string & Name () const
 return name More...
 
void Release ()
 release the parameter More...
 
void RemoveLimits ()
 remove all limit More...
 
void Set (const std::string &name, double value)
 set a fixed parameter More...
 
void Set (const std::string &name, double value, double step)
 set value and name (unlimited parameter) More...
 
void Set (const std::string &name, double value, double step, double lower, double upper)
 set a limited parameter. The given value should be within the given limits [min,max] More...
 
void SetLimits (double low, double up)
 set a double side limit, if low == up the parameter is fixed if low > up the limits are removed The current parameter value should be within the given limits [low,up]. If the value is outside the limits, then a new parameter value is set to = (up+low)/2 More...
 
void SetLowerLimit (double low)
 set a single lower limit More...
 
void SetName (const std::string &name)
 set name More...
 
void SetStepSize (double err)
 set the step size More...
 
void SetUpperLimit (double up)
 set a single upper limit More...
 
void SetValue (double val)
 set the value More...
 
double StepSize () const
 return step size More...
 
double UpperLimit () const
 return upper limit value More...
 
double Value () const
 copy constructor and assignment operators (leave them to the compiler) More...
 

Private Attributes

bool fFix
 
bool fHasLowerLimit
 
bool fHasUpperLimit
 
double fLowerLimit
 
std::string fName
 
double fStepSize
 
double fUpperLimit
 
double fValue
 

Constructor & Destructor Documentation

◆ ParameterSettings() [1/4]

ROOT::Fit::ParameterSettings::ParameterSettings ( )
inline

◆ ParameterSettings() [2/4]

ROOT::Fit::ParameterSettings::ParameterSettings ( const std::string &  name,
double  val,
double  err 
)
inline

constructor for unlimited named Parameter

Definition at line 51 of file ParameterSettings.h.

51  :
52  fValue(val), fStepSize(err), fFix(false),
53  fLowerLimit(0.), fUpperLimit(0.), fHasLowerLimit(false), fHasUpperLimit(false),
54  fName(name)
55  {}

◆ ParameterSettings() [3/4]

ROOT::Fit::ParameterSettings::ParameterSettings ( const std::string &  name,
double  val,
double  err,
double  min,
double  max 
)
inline

constructor for double limited Parameter. The given value should be within the given limits [min,max]

Definition at line 58 of file ParameterSettings.h.

59  :
60  fValue(val), fStepSize(err), fFix(false),
61  fLowerLimit(0.), fUpperLimit(0.), fHasLowerLimit(false), fHasUpperLimit(false),
62  fName(name)
63  {
64  SetLimits(min,max);
65  }
void SetLimits(double low, double up)
set a double side limit, if low == up the parameter is fixed if low > up the limits are removed The c...

References SetLimits().

Here is the call graph for this function:

◆ ParameterSettings() [4/4]

ROOT::Fit::ParameterSettings::ParameterSettings ( const std::string &  name,
double  val 
)
inline

constructor for fixed Parameter

Definition at line 68 of file ParameterSettings.h.

68  :
69  fValue(val), fStepSize(0), fFix(true),
70  fLowerLimit(0.), fUpperLimit(0.), fHasLowerLimit(false), fHasUpperLimit(false),
71  fName(name)
72  {}

◆ ~ParameterSettings()

ROOT::Fit::ParameterSettings::~ParameterSettings ( )
inline

Destructor (no operations)

Definition at line 103 of file ParameterSettings.h.

103 {}

Member Function Documentation

◆ Fix()

void ROOT::Fit::ParameterSettings::Fix ( )
inline

fix the parameter

Definition at line 136 of file ParameterSettings.h.

136 {fFix = true;}

References fFix.

Referenced by Set(), and SetLimits().

◆ HasLowerLimit()

bool ROOT::Fit::ParameterSettings::HasLowerLimit ( ) const
inline

check if parameter has lower limit

Definition at line 120 of file ParameterSettings.h.

120 {return fHasLowerLimit; }

References fHasLowerLimit.

◆ HasUpperLimit()

bool ROOT::Fit::ParameterSettings::HasUpperLimit ( ) const
inline

check if parameter has upper limit

Definition at line 122 of file ParameterSettings.h.

122 {return fHasUpperLimit; }

References fHasUpperLimit.

◆ IsBound()

bool ROOT::Fit::ParameterSettings::IsBound ( ) const
inline

check if is bound

Definition at line 124 of file ParameterSettings.h.

124 { return fHasLowerLimit || fHasUpperLimit; }

References fHasLowerLimit, and fHasUpperLimit.

◆ IsDoubleBound()

bool ROOT::Fit::ParameterSettings::IsDoubleBound ( ) const
inline

check if is double bound (upper AND lower limit)

Definition at line 126 of file ParameterSettings.h.

126 { return fHasLowerLimit && fHasUpperLimit; }

References fHasLowerLimit, and fHasUpperLimit.

◆ IsFixed()

bool ROOT::Fit::ParameterSettings::IsFixed ( ) const
inline

check if is fixed

Definition at line 118 of file ParameterSettings.h.

118 { return fFix; }

References fFix.

◆ LowerLimit()

double ROOT::Fit::ParameterSettings::LowerLimit ( ) const
inline

return lower limit value

Definition at line 114 of file ParameterSettings.h.

114 {return fLowerLimit;}

References fLowerLimit.

◆ Name()

const std::string& ROOT::Fit::ParameterSettings::Name ( ) const
inline

return name

Definition at line 128 of file ParameterSettings.h.

128 { return fName; }

References fName.

◆ Release()

void ROOT::Fit::ParameterSettings::Release ( )
inline

release the parameter

Definition at line 138 of file ParameterSettings.h.

138 {fFix = false;}

References fFix.

◆ RemoveLimits()

void ROOT::Fit::ParameterSettings::RemoveLimits ( )
inline

remove all limit

Definition at line 182 of file ParameterSettings.h.

182  {
183  fLowerLimit = 0.;
184  fUpperLimit = 0.;
185  fHasLowerLimit = false;
186  fHasUpperLimit = false;
187  }

References fHasLowerLimit, fHasUpperLimit, fLowerLimit, and fUpperLimit.

Referenced by SetLimits().

◆ Set() [1/3]

void ROOT::Fit::ParameterSettings::Set ( const std::string &  name,
double  value 
)
inline

set a fixed parameter

Definition at line 93 of file ParameterSettings.h.

93  {
94  SetName(name);
95  SetValue(value);
96  Fix();
97  }
void SetValue(double val)
set the value
void SetName(const std::string &name)
set name
void Fix()
fix the parameter

References Fix(), SetName(), and SetValue().

Here is the call graph for this function:

◆ Set() [2/3]

void ROOT::Fit::ParameterSettings::Set ( const std::string &  name,
double  value,
double  step 
)
inline

set value and name (unlimited parameter)

Definition at line 78 of file ParameterSettings.h.

78  {
79  SetName(name);
80  SetValue(value);
81  SetStepSize(step);
82  }
void SetStepSize(double err)
set the step size

References SetName(), SetStepSize(), and SetValue().

Here is the call graph for this function:

◆ Set() [3/3]

void ROOT::Fit::ParameterSettings::Set ( const std::string &  name,
double  value,
double  step,
double  lower,
double  upper 
)
inline

set a limited parameter. The given value should be within the given limits [min,max]

Definition at line 85 of file ParameterSettings.h.

85  {
86  SetName(name);
87  SetValue(value);
88  SetStepSize(step);
89  SetLimits(lower,upper);
90  }

References SetLimits(), SetName(), SetStepSize(), and SetValue().

Here is the call graph for this function:

◆ SetLimits()

void ROOT::Fit::ParameterSettings::SetLimits ( double  low,
double  up 
)
inline

set a double side limit, if low == up the parameter is fixed if low > up the limits are removed The current parameter value should be within the given limits [low,up]. If the value is outside the limits, then a new parameter value is set to = (up+low)/2

Definition at line 147 of file ParameterSettings.h.

147  {
148 
149  if ( low > up ) {
150  RemoveLimits();
151  return;
152  }
153  if (low == up && low == fValue) {
154  Fix();
155  return;
156  }
157  if (low > fValue || up < fValue) {
158  MATH_INFO_MSG("ParameterSettings","lower/upper bounds outside current parameter value. The value will be set to (low+up)/2 ");
159  fValue = 0.5 * (up+low);
160  }
161  fLowerLimit = low;
162  fUpperLimit = up;
163  fHasLowerLimit = true;
164  fHasUpperLimit = true;
165  }
#define MATH_INFO_MSG(loc, str)
Definition: Error.h:44
void RemoveLimits()
remove all limit

References fHasLowerLimit, fHasUpperLimit, Fix(), fLowerLimit, fUpperLimit, fValue, MATH_INFO_MSG, and RemoveLimits().

Referenced by ParameterSettings(), and Set().

Here is the call graph for this function:

◆ SetLowerLimit()

void ROOT::Fit::ParameterSettings::SetLowerLimit ( double  low)
inline

set a single lower limit

Definition at line 174 of file ParameterSettings.h.

174  {
175  fLowerLimit = low;
176  fUpperLimit = 0.;
177  fHasLowerLimit = true;
178  fHasUpperLimit = false;
179  }

References fHasLowerLimit, fHasUpperLimit, fLowerLimit, and fUpperLimit.

◆ SetName()

void ROOT::Fit::ParameterSettings::SetName ( const std::string &  name)
inline

set name

interaction

Definition at line 133 of file ParameterSettings.h.

133 { fName = name; }

References fName.

Referenced by Set().

◆ SetStepSize()

void ROOT::Fit::ParameterSettings::SetStepSize ( double  err)
inline

set the step size

Definition at line 142 of file ParameterSettings.h.

142 {fStepSize = err;}

References fStepSize.

Referenced by Set().

◆ SetUpperLimit()

void ROOT::Fit::ParameterSettings::SetUpperLimit ( double  up)
inline

set a single upper limit

Definition at line 167 of file ParameterSettings.h.

167  {
168  fLowerLimit = 0.;
169  fUpperLimit = up;
170  fHasLowerLimit = false;
171  fHasUpperLimit = true;
172  }

References fHasLowerLimit, fHasUpperLimit, fLowerLimit, and fUpperLimit.

◆ SetValue()

void ROOT::Fit::ParameterSettings::SetValue ( double  val)
inline

set the value

Definition at line 140 of file ParameterSettings.h.

140 {fValue = val;}

References fValue.

Referenced by Set().

◆ StepSize()

double ROOT::Fit::ParameterSettings::StepSize ( ) const
inline

return step size

Definition at line 112 of file ParameterSettings.h.

112 { return fStepSize; }

References fStepSize.

◆ UpperLimit()

double ROOT::Fit::ParameterSettings::UpperLimit ( ) const
inline

return upper limit value

Definition at line 116 of file ParameterSettings.h.

116 {return fUpperLimit;}

References fUpperLimit.

◆ Value()

double ROOT::Fit::ParameterSettings::Value ( ) const
inline

copy constructor and assignment operators (leave them to the compiler)

return parameter value

Definition at line 110 of file ParameterSettings.h.

110 { return fValue; }

References fValue.

Member Data Documentation

◆ fFix

bool ROOT::Fit::ParameterSettings::fFix
private

Definition at line 198 of file ParameterSettings.h.

Referenced by Fix(), IsFixed(), and Release().

◆ fHasLowerLimit

bool ROOT::Fit::ParameterSettings::fHasLowerLimit
private

◆ fHasUpperLimit

bool ROOT::Fit::ParameterSettings::fHasUpperLimit
private

◆ fLowerLimit

double ROOT::Fit::ParameterSettings::fLowerLimit
private

◆ fName

std::string ROOT::Fit::ParameterSettings::fName
private

Definition at line 204 of file ParameterSettings.h.

Referenced by Name(), and SetName().

◆ fStepSize

double ROOT::Fit::ParameterSettings::fStepSize
private

Definition at line 197 of file ParameterSettings.h.

Referenced by SetStepSize(), and StepSize().

◆ fUpperLimit

double ROOT::Fit::ParameterSettings::fUpperLimit
private

◆ fValue

double ROOT::Fit::ParameterSettings::fValue
private

Definition at line 196 of file ParameterSettings.h.

Referenced by SetLimits(), SetValue(), and Value().


The documentation for this class was generated from the following file: