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 <TROOT.h> 00014 00015 #include "BCLog.h" 00016 #include "BCParameter.h" 00017 00018 // --------------------------------------------------------- 00019 00020 BCParameter::BCParameter() 00021 { 00022 fName = "parameter"; 00023 fLowerLimit = 0.; 00024 fUpperLimit = 1.; 00025 fNuisance = 0; 00026 } 00027 00028 // --------------------------------------------------------- 00029 00030 BCParameter::BCParameter(const char * name, double lowerlimit, double upperlimit) 00031 { 00032 fName = "parameter"; 00033 fLowerLimit = 0.; 00034 fUpperLimit = 1.; 00035 fNuisance = 0; 00036 00037 fName = name; 00038 fLowerLimit = lowerlimit; 00039 fUpperLimit = upperlimit; 00040 } 00041 00042 // --------------------------------------------------------- 00043 00044 BCParameter::BCParameter(const BCParameter & parameter) 00045 { 00046 fName = parameter.fName; 00047 fIndex = parameter.fIndex; 00048 fLowerLimit = parameter.fLowerLimit; 00049 fUpperLimit = parameter.fUpperLimit; 00050 fNuisance = parameter.fNuisance; 00051 } 00052 00053 // --------------------------------------------------------- 00054 00055 BCParameter & BCParameter::operator = (const BCParameter & parameter) 00056 { 00057 fName = parameter.fName; 00058 fIndex = parameter.fIndex; 00059 fLowerLimit = parameter.fLowerLimit; 00060 fUpperLimit = parameter.fUpperLimit; 00061 fNuisance = parameter.fNuisance; 00062 00063 // return this 00064 return *this; 00065 } 00066 00067 // --------------------------------------------------------- 00068 00069 BCParameter::~BCParameter() 00070 {} 00071 00072 // --------------------------------------------------------- 00073 00074 void BCParameter::PrintSummary() 00075 { 00076 BCLog::OutSummary("Parameter summary:"); 00077 BCLog::OutSummary(Form("Parameter : %s", fName.c_str())); 00078 BCLog::OutSummary(Form("Index : %d", fIndex)); 00079 BCLog::OutSummary(Form("Lower limit : %f", fLowerLimit)); 00080 BCLog::OutSummary(Form("Upper limit : %f", fUpperLimit)); 00081 } 00082 00083 // --------------------------------------------------------- 00084 00085 bool BCParameter::IsAtLimit(double value) 00086 { 00087 if (fLowerLimit == fUpperLimit) 00088 return false; 00089 00090 if ( ( (value-fLowerLimit)*(value-fLowerLimit)/fLowerLimit/fLowerLimit <= 1e-10) || 00091 ( (value-fUpperLimit)*(value-fUpperLimit)/fUpperLimit/fUpperLimit <= 1e-10)) 00092 return true; 00093 else 00094 return false; 00095 } 00096 00097 // ---------------------------------------------------------