00001 00012 /* 00013 * Copyright (C) 2008, Daniel Kollar and Kevin Kroeninger. 00014 * All rights reserved. 00015 * 00016 * For the licensing terms see doc/COPYING. 00017 */ 00018 00019 // --------------------------------------------------------- 00020 00021 #ifndef __BCPARAMETER__H 00022 #define __BCPARAMETER__H 00023 00024 #include <string> 00025 #include <vector> 00026 00027 // --------------------------------------------------------- 00028 00029 class BCParameter 00030 { 00031 00032 public: 00033 00035 /* @{ */ 00036 00040 BCParameter(); 00041 00048 BCParameter(const char* name, double lowerlimit, double upperlimit); 00049 00053 BCParameter(const BCParameter & parameter); 00054 00058 ~BCParameter(); 00059 00060 /* @} */ 00061 00063 /* @{ */ 00064 00068 BCParameter & operator = (const BCParameter & parameter); 00069 00070 /* @} */ 00071 00073 /* @{ */ 00074 00078 std::string GetName() 00079 { return fName; }; 00080 00086 int GetIndex() 00087 { return fIndex; }; 00088 00092 double GetLowerLimit() 00093 { return fLowerLimit; }; 00094 00098 double GetUpperLimit() 00099 { return fUpperLimit; }; 00100 00106 double GetRangeWidth() 00107 { return (fUpperLimit>fLowerLimit)?fUpperLimit-fLowerLimit:fLowerLimit-fUpperLimit; }; 00108 00109 /* @} */ 00110 00112 /* @{ */ 00113 00117 void SetName(const char * name) 00118 { fName = name; }; 00119 00125 void SetIndex(int index) 00126 { fIndex = index; }; 00127 00132 void SetLowerLimit(double limit = 0) 00133 { fLowerLimit = limit; }; 00134 00139 void SetUpperLimit(double limit = 1) 00140 { fUpperLimit = limit; }; 00141 00147 void SetLimits(double lowerlimit = 0, double upperlimit = 1) 00148 { fLowerLimit = lowerlimit; fUpperLimit = upperlimit; }; 00149 00154 void SetNuisance(int nuisance = 1) 00155 { fNuisance = nuisance; }; 00156 00157 /* @} */ 00158 00160 /* @{ */ 00161 00166 double IsNuisance() 00167 { return fNuisance; }; 00168 00173 bool IsAtLimit(double value); 00174 00178 void PrintSummary(); 00179 00180 /* @} */ 00181 00182 private: 00183 00184 /* 00185 * Copies this BCParameter into another one 00186 */ 00187 void Copy(BCParameter & parameter) const; 00188 00192 std::string fName; 00193 00198 int fIndex; 00199 00203 double fLowerLimit; 00204 00208 double fUpperLimit; 00209 00214 int fNuisance; 00215 00216 }; 00217 00218 // --------------------------------------------------------- 00219 00220 /* 00221 * \typedef 00222 * \brief A vector of pointer to BCParameter. 00223 */ 00224 typedef std::vector<BCParameter*> BCParameterSet; 00225 00226 // --------------------------------------------------------- 00227 00228 #endif