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