00001
00002
00003 #include "../include/Configuration.h"
00004
00005 #include <iostream>
00006 #include <fstream>
00007 #include <sstream>
00008
00009
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 dijet = false;
00026 z = false;
00027 wplusjet = false;
00028 tau = false;
00029 top = false;
00030 ue = false;
00031 etmiss = false;
00032 user = false;
00033
00034
00035 coneRadius = 0.4;
00036 overlapThreshold = 0.75;
00037 jet_ptmin = 15.0;
00038 lepton_ptmin = 15.0;
00039 DeltaR_lepton_track = 0.4;
00040 max_eta = 2.5;
00041 min_pt = 0.5;
00042
00043 FSR=true;
00044 ISR=true;
00045 MI=true;
00046
00047 IsOK=true;
00048 }
00049
00050 Configuration::Configuration( std::string configfile )
00051 {
00052 Configuration();
00053 IsOK=read(configfile);
00054 }
00055
00056 Configuration::~Configuration()
00057 {
00058 while(!ConfigFileNames.empty())
00059 ConfigFileNames.pop_back();
00060 }
00061
00062
00063 int Configuration::read(std::string configfile){
00064 std::string line;
00065 std::ifstream myfile (configfile.c_str());
00066 std::cout << "readConfigFile: Read in Configuration from file " << configfile << std::endl;
00067 if (myfile.is_open())
00068 {
00069
00070 while (! myfile.eof() )
00071 {
00072 std::string parameter;
00073 std::string str1;
00074 int mylong=-9999;
00075 double myfloat=-9999.9;
00076 bool mybool=false;
00077
00078
00079 getline (myfile,line);
00080
00081
00082 std::istringstream instring(line);
00083 std::istringstream instring2(line);
00084 std::istringstream instring3(line);
00085
00086
00087 instring >> parameter >> str1 ;
00088 instring2 >> parameter >> myfloat ;
00089 instring3 >> parameter >> mybool ;
00090 mylong=long(myfloat);
00091
00092
00093 std::string::size_type pos = parameter.find("#");
00094 if(pos != std::string::npos) continue;
00095
00096 std::string::size_type pos2 = parameter.find("*");
00097 if(pos2 != std::string::npos) continue;
00098
00099 std::string::size_type pos3 = parameter.find("/");
00100 if(pos3 != std::string::npos) continue;
00101
00102
00103 if(parameter.empty()) continue;
00104
00105
00106
00107 if ((parameter == "rseed") && (mylong!=-9999)) {
00108 rseed=mylong;
00109 std::cout << "readConfigFile: Parameter " << parameter << "=" << rseed << std::endl;
00110 }
00111 else if ((parameter == "nevents") && (mylong!=-9999)){
00112 nevents=(unsigned int)mylong;
00113 std::cout << "readConfigFile: Parameter " << parameter << "=" << nevents << std::endl;
00114 }
00115 else if ((parameter == "OutputFileName") && (!str1.empty())){
00116 OutputFileName=str1;
00117 std::cout << "readConfigFile: Parameter " << parameter << "=" << OutputFileName << std::endl;
00118 }
00119 else if ((parameter == "ConfigFileNames") && (!str1.empty())){
00120 ConfigFileNames.push_back(str1);
00121 std::cout << "readConfigFile: Parameter " << parameter << "=" << ConfigFileNames.back() << std::endl;
00122 }
00123 else if ((parameter == "InputFileNames") && (!str1.empty())){
00124 InputFileNames.push_back(str1);
00125 std::cout << "readConfigFile: Parameter " << parameter << "=" << InputFileNames.back() << std::endl;
00126 }
00127 else if ((parameter == "dijet_analysis") && (!str1.empty())){
00128 if( (str1 == "on") || (str1 == "true") || (str1 == "True")) dijet=true;
00129 std::cout << "readConfigFile: Parameter " << parameter << "=" << dijet << std::endl;
00130 }
00131 else if ((parameter == "z_analysis") && (!str1.empty())){
00132 if( (str1 == "on") || (str1 == "true") || (str1 == "True")) z=true;
00133 std::cout << "readConfigFile: Parameter " << parameter << "=" << z << std::endl;
00134 }
00135 else if ((parameter == "wplusjet_analysis") && (!str1.empty())){
00136 if( (str1 == "on") || (str1 == "true") || (str1 == "True") ) wplusjet=true;
00137 std::cout << "readConfigFile: Parameter " << parameter << "=" << wplusjet << std::endl;
00138 }
00139 else if ((parameter == "tau_analysis") && (!str1.empty())){
00140 if( (str1 == "on") || (str1 == "true") || (str1 == "True") ) tau=true;
00141 std::cout << "readConfigFile: Parameter " << parameter << "=" << tau << std::endl;
00142 }
00143 else if ((parameter == "top_analysis") && (!str1.empty())){
00144 if( (str1 == "on") || (str1 == "true") || (str1 == "True") ) top=true;
00145 std::cout << "readConfigFile: Parameter " << parameter << "=" << top << std::endl;
00146 }
00147 else if ((parameter == "ue_analysis") && (!str1.empty())){
00148 if( (str1 == "on") || (str1 == "true") || (str1 == "True") ) ue=true;
00149 std::cout << "readConfigFile: Parameter " << parameter << "=" << ue << std::endl;
00150 }
00151 else if ((parameter == "etmiss_analysis") && (!str1.empty())){
00152 if( (str1 == "on") || (str1 == "true") || (str1 == "True") ) etmiss=true;
00153 std::cout << "readConfigFile: Parameter " << parameter << "=" << etmiss << std::endl;
00154 }
00155 else if ((parameter == "user_analysis") && (!str1.empty())){
00156 if( (str1 == "on") || (str1 == "true") || (str1 == "True") ) user=true;
00157 std::cout << "readConfigFile: Parameter " << parameter << "=" << user << std::endl;
00158 }
00159 else if ((parameter == "jet_coneRadius") && (myfloat!=-9999.9)){
00160 coneRadius=myfloat;
00161 std::cout << "readConfigFile: Parameter " << parameter << "=" << coneRadius << std::endl;
00162 }
00163 else if ((parameter == "jet_overlapThreshold") && (myfloat!=-9999.9)){
00164 overlapThreshold=myfloat;
00165 std::cout << "readConfigFile: Parameter " << parameter << "=" << overlapThreshold << std::endl;
00166 }
00167 else if ((parameter == "jet_ptmin") && (myfloat!=-9999.9)){
00168 jet_ptmin=myfloat;
00169 std::cout << "readConfigFile: Parameter " << parameter << "=" << jet_ptmin << std::endl;
00170 }
00171 else if ((parameter == "DeltaR_lepton_track") && (myfloat!=-9999.9)){
00172 DeltaR_lepton_track=myfloat;
00173 std::cout << "readConfigFile: Parameter " << parameter << "=" << DeltaR_lepton_track << std::endl;
00174 }
00175 else if ((parameter == "lepton_ptmin") && (myfloat!=-9999.9)){
00176 lepton_ptmin=myfloat;
00177 std::cout << "readConfigFile: Parameter " << parameter << "=" << lepton_ptmin << std::endl;
00178 }
00179 else if ((parameter == "max_eta") && (myfloat!=-9999.9)){
00180 max_eta=myfloat;
00181 std::cout << "readConfigFile: Parameter " << parameter << "=" << max_eta << std::endl;
00182 }
00183 else if ((parameter == "min_pt") && (myfloat!=-9999.9)){
00184 min_pt=myfloat;
00185 std::cout << "readConfigFile: Parameter " << parameter << "=" << min_pt << std::endl;
00186 }
00187 else if ((parameter == "FSR") && (!str1.empty())){
00188 if( (str1 == "on") || (str1 == "true") || (str1 == "True") ) FSR=true;
00189 else FSR=false;
00190 std::cout << "readConfigFile: Parameter " << parameter << "=" << FSR << std::endl;
00191 }
00192 else if ((parameter == "ISR") && (!str1.empty())){
00193 if( (str1 == "on") || (str1 == "true") || (str1 == "True") ) ISR=true;
00194 else ISR=false;
00195 std::cout << "readConfigFile: Parameter " << parameter << "=" << ISR << std::endl;
00196 }
00197 else if ((parameter == "MI") && (!str1.empty())){
00198 if( (str1 == "on") || (str1 == "true") || (str1 == "True") ) MI=true;
00199 else MI=false;
00200 std::cout << "readConfigFile: Parameter " << parameter << "=" << MI << std::endl;
00201 }
00202 else{
00203 std::cout << "readConfigFile: Parameter " << parameter << " not recognized!" << std::endl;
00204 return 1;
00205 }
00206 }
00207 myfile.close();
00208 }
00209 else
00210 {
00211 std::cerr << "readConfigFile: Unable to open file" << std::endl;
00212 return 1;
00213 }
00214 return 0;
00215 }