Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Class Members | File Members

Configuration.cc.svn-base

Go to the documentation of this file.
00001 
00002 // this class header file
00003 #include "../include/Configuration.h"
00004 
00005 #include <iostream>
00006 #include <fstream>
00007 #include <sstream>
00008 
00009 //**********************
00010 
00011 //starting functions
00012 Configuration::Configuration()
00013 {
00014   // the default randomseed will be generated from the time
00015   srand(time(0)%900000000);
00016   rseed=rand();
00017   
00018   // default: 1000 events
00019   nevents=1000;
00020   
00021   // default Outputfilename
00022   OutputFileName="output.root";
00023   
00024   // default: no Algorithm specified
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   // default Jet parameter
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       // read line by line of the file
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           // write read lines into string line
00079           getline (myfile,line);
00080           
00081           // now split the line into the subwords
00082           std::istringstream instring(line);
00083           std::istringstream instring2(line);
00084           std::istringstream instring3(line);
00085           
00086           // and fill string or float
00087           instring >> parameter >> str1 ;
00088           instring2 >> parameter >> myfloat ;
00089           instring3 >> parameter >> mybool ;
00090           mylong=long(myfloat);
00091           
00092           // check for Comments. If the line starts with # than skip the line
00093           std::string::size_type pos = parameter.find("#");
00094           if(pos != std::string::npos) continue;
00095           // check for Comments. If the line starts with * than skip the line
00096           std::string::size_type pos2 = parameter.find("*");
00097           if(pos2 != std::string::npos) continue;
00098           // check for Comments. If the line starts with '/' than skip the line
00099           std::string::size_type pos3 = parameter.find("/");
00100           if(pos3 != std::string::npos) continue;
00101           
00102           // skip if the string is empty
00103           if(parameter.empty()) continue;
00104           
00105           
00106           // read pysub entries
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 }

Generated on Thu Jul 23 14:57:36 2009 for HepMCAnalysis by  doxygen 1.3.9.1