00001 /* 00002 * Copyright (C) 2008-2012, Daniel Kollar and Kevin Kroeninger. 00003 * All rights reserved. 00004 * 00005 * For the licensing terms see doc/COPYING. 00006 */ 00007 00008 // --------------------------------------------------------- 00009 00010 #include <iostream> 00011 #include <fstream> 00012 00013 #include "BCParameter.h" 00014 00015 // --------------------------------------------------------- 00016 00017 BCParameter::BCParameter() 00018 { 00019 fName = "parameter"; 00020 fLowerLimit = 0.; 00021 fUpperLimit = 1.; 00022 fNuisance = 0; 00023 } 00024 00025 // --------------------------------------------------------- 00026 00027 BCParameter::BCParameter(const char * name, double lowerlimit, double upperlimit) 00028 { 00029 fName = "parameter"; 00030 fLowerLimit = 0.; 00031 fUpperLimit = 1.; 00032 fNuisance = 0; 00033 00034 fName = name; 00035 fLowerLimit = lowerlimit; 00036 fUpperLimit = upperlimit; 00037 } 00038 00039 // --------------------------------------------------------- 00040 00041 BCParameter::BCParameter(const BCParameter & parameter) 00042 { 00043 fName = parameter.fName; 00044 fIndex = parameter.fIndex; 00045 fLowerLimit = parameter.fLowerLimit; 00046 fUpperLimit = parameter.fUpperLimit; 00047 fNuisance = parameter.fNuisance; 00048 } 00049 00050 // --------------------------------------------------------- 00051 00052 BCParameter & BCParameter::operator = (const BCParameter & parameter) 00053 { 00054 fName = parameter.fName; 00055 fIndex = parameter.fIndex; 00056 fLowerLimit = parameter.fLowerLimit; 00057 fUpperLimit = parameter.fUpperLimit; 00058 fNuisance = parameter.fNuisance; 00059 00060 // return this 00061 return *this; 00062 } 00063 00064 // --------------------------------------------------------- 00065 00066 BCParameter::~BCParameter() 00067 {} 00068 00069 // --------------------------------------------------------- 00070 00071 void BCParameter::PrintSummary() 00072 { 00073 std::cout 00074 <<" > Parameter : "<< fName << std::endl 00075 <<" Index : "<< fIndex << std::endl 00076 <<" Lower Limit : "<< fLowerLimit << std::endl 00077 <<" Upper Limit : "<< fUpperLimit << std::endl 00078 <<" Nuisance : "; 00079 00080 if(fNuisance) 00081 std::cout<<"Yes"<<std::endl; 00082 else 00083 std::cout<<"No"<<std::endl; 00084 00085 std::cout << std::endl; 00086 } 00087 00088 // --------------------------------------------------------- 00089 00090 bool BCParameter::IsAtLimit(double value) 00091 { 00092 if (fLowerLimit == fUpperLimit) 00093 return false; 00094 00095 if ( ( (value-fLowerLimit)*(value-fLowerLimit)/fLowerLimit/fLowerLimit <= 1e-10) || 00096 ( (value-fUpperLimit)*(value-fUpperLimit)/fUpperLimit/fUpperLimit <= 1e-10)) 00097 return true; 00098 else 00099 return false; 00100 } 00101 00102 // ---------------------------------------------------------