00001 #ifndef __BCPARAMETER__H 00002 #define __BCPARAMETER__H 00003 00015 /* 00016 * Copyright (C) 2008, Daniel Kollar and Kevin Kroeninger. 00017 * All rights reserved. 00018 * 00019 * For the licensing terms see doc/COPYING. 00020 */ 00021 00022 // --------------------------------------------------------- 00023 00024 #include <string> 00025 #include <vector> 00026 00027 // --------------------------------------------------------- 00028 00029 class BCParameter 00030 { 00031 00032 public: 00033 00035 /* @{ */ 00036 00039 BCParameter(); 00040 00046 BCParameter(const char* name, double lowerlimit, double upperlimit); 00047 00050 BCParameter(const BCParameter & parameter); 00051 00054 ~BCParameter(); 00055 00056 /* @} */ 00057 00059 /* @{ */ 00060 00063 BCParameter & operator = (const BCParameter & parameter); 00064 00065 /* @} */ 00066 00068 /* @{ */ 00069 00072 std::string GetName() 00073 { return fName; }; 00074 00079 int GetIndex() 00080 { return fIndex; }; 00081 00084 double GetLowerLimit() 00085 { return fLowerLimit; }; 00086 00089 double GetUpperLimit() 00090 { return fUpperLimit; }; 00091 00096 double GetRangeWidth() 00097 { return (fUpperLimit>fLowerLimit)?fUpperLimit-fLowerLimit:fLowerLimit-fUpperLimit; }; 00098 00099 /* @} */ 00100 00102 /* @{ */ 00103 00106 void SetName(const char * name) 00107 { fName = name; }; 00108 00113 void SetIndex(int index) 00114 { fIndex = index; }; 00115 00119 void SetLowerLimit(double limit = 0) 00120 { fLowerLimit = limit; }; 00121 00125 void SetUpperLimit(double limit = 1) 00126 { fUpperLimit = limit; }; 00127 00132 void SetLimits(double lowerlimit = 0, double upperlimit = 1) 00133 { fLowerLimit = lowerlimit; fUpperLimit = upperlimit; }; 00134 00138 void SetNuisance(int nuisance = 1) 00139 { fNuisance = nuisance; }; 00140 00141 /* @} */ 00142 00144 /* @{ */ 00145 00149 double IsNuisance() 00150 { return fNuisance; }; 00151 00155 bool IsAtLimit(double value); 00156 00159 void PrintSummary(); 00160 00161 /* @} */ 00162 00163 private: 00164 00165 /* 00166 * Copies this BCParameter into another one */ 00167 void Copy(BCParameter & parameter) const; 00168 00171 std::string fName; 00172 00175 int fIndex; 00176 00179 double fLowerLimit; 00180 00183 double fUpperLimit; 00184 00187 int fNuisance; 00188 00189 }; 00190 00191 // --------------------------------------------------------- 00192 00193 /* 00194 * \typedef 00195 * \brief A vector of pointer to BCParameter.*/ 00196 typedef std::vector<BCParameter*> BCParameterSet; 00197 00198 // --------------------------------------------------------- 00199 00200 #endif