Warning, file /include/root/Fit/ParameterSettings.h was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef ROOT_Fit_ParameterSettings
0012 #define ROOT_Fit_ParameterSettings
0013
0014 #include <string>
0015
0016 namespace ROOT::Fit {
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028 class ParameterSettings {
0029
0030 public:
0031
0032
0033
0034
0035 ParameterSettings () {}
0036
0037
0038
0039 ParameterSettings(const std::string & name, double val, double err) :
0040 fValue(val), fStepSize(err),
0041 fName(name)
0042 {}
0043
0044
0045 ParameterSettings(const std::string & name, double val, double err,
0046 double min, double max) :
0047 fValue(val), fStepSize(err),
0048 fName(name)
0049 {
0050 SetLimits(min,max);
0051 }
0052
0053
0054 ParameterSettings(const std::string & name, double val) :
0055 fValue(val), fStepSize(0), fFix(true),
0056 fName(name)
0057 {}
0058
0059
0060
0061
0062
0063 void Set(const std::string & name, double value, double step) {
0064 SetName(name);
0065 SetValue(value);
0066 SetStepSize(step);
0067 }
0068
0069
0070 void Set(const std::string & name, double value, double step, double lower, double upper ) {
0071 SetName(name);
0072 SetValue(value);
0073 SetStepSize(step);
0074 SetLimits(lower,upper);
0075 }
0076
0077
0078 void Set(const std::string & name, double value) {
0079 SetName(name);
0080 SetValue(value);
0081 Fix();
0082 }
0083
0084
0085 double Value() const { return fValue; }
0086
0087 double StepSize() const { return fStepSize; }
0088
0089 double LowerLimit() const {return fLowerLimit;}
0090
0091 double UpperLimit() const {return fUpperLimit;}
0092
0093 bool IsFixed() const { return fFix; }
0094
0095 bool HasLowerLimit() const {return fHasLowerLimit; }
0096
0097 bool HasUpperLimit() const {return fHasUpperLimit; }
0098
0099 bool IsBound() const { return fHasLowerLimit || fHasUpperLimit; }
0100
0101 bool IsDoubleBound() const { return fHasLowerLimit && fHasUpperLimit; }
0102
0103 const std::string & Name() const { return fName; }
0104
0105
0106
0107
0108 void SetName(const std::string & name ) { fName = name; }
0109
0110
0111 void Fix() {fFix = true;}
0112
0113 void Release() {fFix = false;}
0114
0115 void SetValue(double val) {fValue = val;}
0116
0117 void SetStepSize(double err) {fStepSize = err;}
0118 void SetLimits(double low, double up);
0119
0120 void SetUpperLimit(double up) {
0121 fLowerLimit = 0.;
0122 fUpperLimit = up;
0123 fHasLowerLimit = false;
0124 fHasUpperLimit = true;
0125 }
0126
0127 void SetLowerLimit(double low) {
0128 fLowerLimit = low;
0129 fUpperLimit = 0.;
0130 fHasLowerLimit = true;
0131 fHasUpperLimit = false;
0132 }
0133
0134
0135 void RemoveLimits() {
0136 fLowerLimit = 0.;
0137 fUpperLimit = 0.;
0138 fHasLowerLimit = false;
0139 fHasUpperLimit = false;
0140 }
0141
0142 private:
0143
0144 double fValue = 0.0;
0145 double fStepSize = 0.1;
0146 bool fFix = false;
0147 double fLowerLimit = 0.0;
0148 double fUpperLimit = 0.0;
0149 bool fHasLowerLimit = false;
0150 bool fHasUpperLimit = false;
0151
0152 std::string fName;
0153 };
0154
0155 }
0156
0157 #endif