00001
00002 #include "../include/Configuration.h"
00003
00004 #include <iostream>
00005 #include <fstream>
00006 #include <sstream>
00007 #include <cstdlib>
00008
00009 using namespace std;
00010
00011
00012 Configuration::Configuration()
00013 {
00014
00015 srand( time(0) % 900000000 );
00016 rseed = rand();
00017
00018
00019 nevents = 1000;
00020
00021
00022 OutputFileName = "output.root";
00023
00024
00025 jet = false;
00026 z = false;
00027 wplusjet = false;
00028 ztautau = false;
00029 ttbar = false;
00030 ue = false;
00031 etmiss = false;
00032 elasScat = false;
00033 wtaunu = false;
00034 bbbar = false;
00035 user = false;
00036
00037
00038 coneRadius = 0.4;
00039 overlapThreshold = 0.75;
00040 jet_ptmin = 15.0;
00041 lepton_ptmin = 15.0;
00042 DeltaR_lepton_track = 0.4;
00043 max_eta = 2.5;
00044 min_pt = 0.5;
00045 jetalgorithm = 2;
00046
00047 FSR = true;
00048 ISR = true;
00049 MI = true;
00050
00051 IsOK = true;
00052 }
00053
00054
00055 Configuration::Configuration( const string &configfile )
00056 {
00057 Configuration();
00058 IsOK = read( configfile );
00059 }
00060
00061
00062 Configuration::~Configuration()
00063 {}
00064
00065
00066 int Configuration::read( const string &configfile )
00067 {
00068 ifstream myfile( configfile.c_str() );
00069 cout << "readConfigFile: Read in Configuration from file '" << configfile << "'" << endl;
00070
00071 if ( !myfile.is_open() ) {
00072 cerr << "readConfigFile: Unable to open file" << endl;
00073 return 1;
00074 }
00075
00076
00077 ConfigFileNames.clear();
00078 InputFileNames.clear();
00079
00080
00081 string line;
00082 while ( !myfile.eof() ) {
00083 string parameter, str1;
00084
00085 int mylong = -9999;
00086 double myfloat = -9999.9;
00087 bool mybool = false;
00088
00089
00090 getline( myfile, line );
00091
00092
00093 istringstream instring( line );
00094 istringstream instring2( line );
00095 istringstream instring3( line );
00096
00097
00098 instring >> parameter >> str1 ;
00099 instring2 >> parameter >> myfloat ;
00100 instring3 >> parameter >> mybool ;
00101 mylong = static_cast< long >( myfloat );
00102
00103
00104 string::size_type pos = parameter.find( "#" );
00105 if ( pos != string::npos ) continue;
00106
00107
00108 string::size_type pos2 = parameter.find( "*" );
00109 if ( pos2 != string::npos ) continue;
00110
00111
00112 string::size_type pos3 = parameter.find( "/" );
00113 if( pos3 != string::npos ) continue;
00114
00115
00116 if( parameter.empty() ) continue;
00117
00118
00119 if ( ( parameter == "rseed" ) && ( mylong != -9999 ) ) {
00120 rseed = mylong;
00121 cout << "readConfigFile: Parameter " << parameter << "=" << rseed << endl;
00122 }
00123 else if ( ( parameter == "nevents" ) && ( mylong != -9999 ) ) {
00124 nevents = static_cast< unsigned int >( mylong );
00125 cout << "readConfigFile: Parameter " << parameter << "=" << nevents << endl;
00126 }
00127 else if ( ( parameter == "OutputFileName" ) && ( !str1.empty() ) ) {
00128 OutputFileName = str1;
00129 cout << "readConfigFile: Parameter " << parameter << "=" << OutputFileName << endl;
00130 }
00131 else if ( ( parameter == "ConfigFileNames" ) && ( !str1.empty() ) ) {
00132 ConfigFileNames.push_back( str1 );
00133 cout << "readConfigFile: Parameter " << parameter << "=" << ConfigFileNames.back() << endl;
00134 }
00135 else if ( ( parameter == "InputFileNames" ) && ( !str1.empty() ) ) {
00136 InputFileNames.push_back( str1 );
00137 cout << "readConfigFile: Parameter " << parameter << "=" << InputFileNames.back() << endl;
00138 }
00139 else if ( ( parameter == "jet_analysis" ) && ( !str1.empty() ) ) {
00140 jet = isParamOn( str1 );
00141 cout << "readConfigFile: Parameter " << parameter << "=" << jet << endl;
00142 }
00143 else if ( ( parameter == "z_analysis" ) && ( !str1.empty() ) ) {
00144 z = isParamOn( str1 );
00145 cout << "readConfigFile: Parameter " << parameter << "=" << z << endl;
00146 }
00147 else if ( ( parameter == "wplusjet_analysis" ) && ( !str1.empty() ) ) {
00148 wplusjet = isParamOn( str1 );
00149 cout << "readConfigFile: Parameter " << parameter << "=" << wplusjet << endl;
00150 }
00151 else if ( ( parameter == "ztautau_analysis" ) && ( !str1.empty() ) ) {
00152 ztautau = isParamOn( str1 );
00153 cout << "readConfigFile: Parameter " << parameter << "=" << ztautau << endl;
00154 }
00155 else if ( ( parameter == "ttbar_analysis" ) && ( !str1.empty() ) ) {
00156 ttbar = isParamOn( str1 );
00157 cout << "readConfigFile: Parameter " << parameter << "=" << ttbar << endl;
00158 }
00159 else if ( ( parameter == "ue_analysis" ) && ( !str1.empty() ) ) {
00160 ue = isParamOn( str1 );
00161 cout << "readConfigFile: Parameter " << parameter << "=" << ue << endl;
00162 }
00163 else if ( ( parameter == "etmiss_analysis" ) && ( !str1.empty() ) ) {
00164 etmiss = isParamOn( str1 );
00165 cout << "readConfigFile: Parameter " << parameter << "=" << etmiss << endl;
00166 }
00167 else if ( ( parameter == "elasScat_analysis" ) && ( !str1.empty() ) ) {
00168 elasScat = isParamOn( str1 );
00169 cout << "readConfigFile: Parameter " << parameter << "=" << elasScat << endl;
00170 }
00171 else if ( ( parameter == "wtaunu_analysis" ) && ( !str1.empty() ) ) {
00172 wtaunu = isParamOn( str1 );
00173 cout << "readConfigFile: Parameter " << parameter << "=" << wtaunu << endl;
00174 }
00175 else if ( ( parameter == "bbbar_analysis" ) && ( !str1.empty() ) ) {
00176 bbbar = isParamOn( str1 );
00177 cout << "readConfigFile: Parameter " << parameter << "=" << bbbar << endl;
00178 }
00179 else if ( ( parameter == "user_analysis") && ( !str1.empty() ) ) {
00180 user = isParamOn( str1 );
00181 cout << "readConfigFile: Parameter " << parameter << "=" << user << endl;
00182 }
00183 else if ( ( parameter == "jet_coneRadius" ) && ( myfloat != -9999.9 ) ) {
00184 coneRadius = myfloat;
00185 cout << "readConfigFile: Parameter " << parameter << "=" << coneRadius << endl;
00186 }
00187 else if ( ( parameter == "jet_overlapThreshold" ) && ( myfloat != -9999.9 ) ) {
00188 overlapThreshold = myfloat;
00189 cout << "readConfigFile: Parameter " << parameter << "=" << overlapThreshold << endl;
00190 }
00191 else if ( ( parameter == "jet_ptmin" ) && ( myfloat != -9999.9 ) ) {
00192 jet_ptmin = myfloat;
00193 cout << "readConfigFile: Parameter " << parameter << "=" << jet_ptmin << endl;
00194 }
00195 else if ( ( parameter == "DeltaR_lepton_track" ) && ( myfloat != -9999.9 ) ) {
00196 DeltaR_lepton_track = myfloat;
00197 cout << "readConfigFile: Parameter " << parameter << "=" << DeltaR_lepton_track << endl;
00198 }
00199 else if ( ( parameter == "lepton_ptmin" ) && ( myfloat != -9999.9 ) ) {
00200 lepton_ptmin = myfloat;
00201 cout << "readConfigFile: Parameter " << parameter << "=" << lepton_ptmin << endl;
00202 }
00203 else if ( ( parameter == "max_eta" ) && ( myfloat != -9999.9 ) ) {
00204 max_eta = myfloat;
00205 cout << "readConfigFile: Parameter " << parameter << "=" << max_eta << endl;
00206 }
00207 else if ( ( parameter == "min_pt" ) && ( myfloat != -9999.9 ) ){
00208 min_pt = myfloat;
00209 cout << "readConfigFile: Parameter " << parameter << "=" << min_pt << endl;
00210 }
00211 else if ((parameter == "jetalgorithm") && (mylong!=-9999)){
00212 jetalgorithm=mylong;
00213 cout << "readConfigFile: Parameter " << parameter << "=" << jetalgorithm << endl;
00214 }
00215 else if ( ( parameter == "FSR" ) && ( !str1.empty() ) ) {
00216 FSR = isParamOn( str1 );
00217 cout << "readConfigFile: Parameter " << parameter << "=" << FSR << endl;
00218 }
00219 else if ( ( parameter == "ISR" ) && ( !str1.empty() ) ) {
00220 ISR = isParamOn( str1 );
00221 cout << "readConfigFile: Parameter " << parameter << "=" << ISR << endl;
00222 }
00223 else if ( ( parameter == "MI" ) && ( !str1.empty() ) ) {
00224 MI = isParamOn( str1 );
00225 cout << "readConfigFile: Parameter " << parameter << "=" << MI << endl;
00226 }
00227 else{
00228 cout << "readConfigFile: Parameter " << parameter << " not recognized!" << endl;
00229 return 1;
00230 }
00231 }
00232 myfile.close();
00233
00234 return 0;
00235 }
00236
00237
00238 bool Configuration::isParamOn( const string &str ) const
00239 {
00240 return ( str == "on" ) || ( str == "true" ) || ( str == "True" );
00241 }
00242