00001 /* 00002 * Copyright (C) 2008, 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 00020 fName = "parameter"; 00021 fLowerLimit = 0.0; 00022 fUpperLimit = 1.0; 00023 fNuisance = 0; 00024 00025 } 00026 00027 // --------------------------------------------------------- 00028 00029 BCParameter::BCParameter(const char * name, double lowerlimit, double upperlimit) 00030 { 00031 00032 BCParameter(); 00033 00034 fName = name; 00035 fLowerLimit = lowerlimit; 00036 fUpperLimit = upperlimit; 00037 00038 } 00039 00040 // --------------------------------------------------------- 00041 00042 BCParameter::BCParameter(const BCParameter & parameter) 00043 { 00044 00045 parameter.Copy(*this); 00046 00047 } 00048 00049 // --------------------------------------------------------- 00050 00051 BCParameter & BCParameter::operator = (const BCParameter & parameter) 00052 { 00053 00054 if (this != ¶meter) 00055 parameter.Copy(* this); 00056 00057 return * this; 00058 00059 } 00060 00061 // --------------------------------------------------------- 00062 00063 BCParameter::~BCParameter() 00064 { 00065 00066 } 00067 00068 // --------------------------------------------------------- 00069 00070 void BCParameter::PrintSummary() 00071 { 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 00091 void BCParameter::Copy(BCParameter & parameter) const 00092 { 00093 00094 parameter.fName = this -> fName; 00095 parameter.fIndex = this -> fIndex; 00096 parameter.fLowerLimit = this -> fLowerLimit; 00097 parameter.fUpperLimit = this -> fUpperLimit; 00098 parameter.fNuisance = this -> fNuisance; 00099 00100 } 00101 00102 // --------------------------------------------------------- 00103 00104 bool BCParameter::IsAtLimit(double value) 00105 { 00106 00107 if ( ( (value-fLowerLimit)*(value-fLowerLimit)/fLowerLimit/fLowerLimit <= 1e-10) || 00108 ( (value-fUpperLimit)*(value-fUpperLimit)/fUpperLimit/fUpperLimit <= 1e-10)) 00109 return true; 00110 else 00111 return false; 00112 } 00113 00114 // ---------------------------------------------------------