/* * ---- Delphes ---- * A Fast Simulator for general purpose LHC detector * S. Ovyn ~~~~ severine.ovyn@uclouvain.be * * Center for Particle Physics and Phenomenology (CP3) * Universite Catholique de Louvain (UCL) * Louvain-la-Neuve, Belgium * */ // \brief Trigger class, and some generic definitions #include "interface/TriggerUtil.h" #include "TRandom.h" #include #include #include #include #include using namespace std; Trigger::Trigger() {} vector Trigger::GetCuts(const vector &Sequences) { vector OrderedValue; string ptVal; Int_t PtVal=0; for(unsigned int i=0; i < Sequences.size(); i++) { ptVal = Sequences[i].substr( Sequences[i].find("'")+1) ; PtVal = atoi( ptVal.c_str() ); OrderedValue.push_back(PtVal); } return OrderedValue; } void Trigger::getTrigCondition(const string& trigger_algorithm) { vector ElecSequences; vector MuonSequences; vector JetSequences; vector TauJetSequences; vector EtmisSequences; vector GammaSequences; char *result = NULL; result = strtok( (char*) trigger_algorithm.c_str(),"&"); while( result != NULL ) { if(strstr (result,"ELEC"))ElecSequences.push_back(result); if(strstr (result,"MUON"))MuonSequences.push_back(result); if(strstr (result,"JET"))JetSequences.push_back(result); if(strstr (result,"TAUJET"))TauJetSequences.push_back(result); if(strstr (result,"ETMIS"))EtmisSequences.push_back(result); if(strstr (result,"GAMMA"))GammaSequences.push_back(result); result = strtok( NULL,"&"); } vector ElecValues = GetCuts(ElecSequences); vector MuonValues = GetCuts(MuonSequences); vector JetValues = GetCuts(JetSequences); vector TauJetValues = GetCuts(TauJetSequences); vector EtmisValues = GetCuts(EtmisSequences); vector GammaValues = GetCuts(GammaSequences); } void Trigger::TriggerReader(const string filename) { ifstream trigger_file(filename.c_str()); if( !trigger_file.good() ) { cout << "ERROR: Trigger input file "<< filename << " not found. Exiting.\n"; return; } string temp_string, temp_string_no_comment, trigger_name, trigger_algorithm; while ( getline(trigger_file,temp_string) ) { string temp_string_no_comment = temp_string.substr(0,temp_string.find("#")); //remove comments if(temp_string_no_comment.size()<2) continue; // avoid empty lines istringstream temp_stream(temp_string_no_comment); temp_stream >> trigger_name; trigger_algorithm = temp_string_no_comment.substr( temp_string_no_comment.find(">>")+2) ; getTrigCondition(trigger_algorithm); } }