#ifndef _TRIGUTIL_H_ #define _TRIGUTIL_H_ /*********************************************************************** ** ** ** /----------------------------------------------\ ** ** | Delphes, a framework for the fast simulation | ** ** | of a generic collider experiment | ** ** \----------------------------------------------/ ** ** ** ** ** ** This package uses: ** ** ------------------ ** ** FastJet algorithm: Phys. Lett. B641 (2006) [hep-ph/0512210] ** ** Hector: JINST 2:P09005 (2007) [physics.acc-ph:0707.1198v2] ** ** FROG: [hep-ex/0901.2718v1] ** ** ** ** ------------------------------------------------------------------ ** ** ** ** Main authors: ** ** ------------- ** ** ** ** Severine Ovyn Xavier Rouby ** ** severine.ovyn@uclouvain.be xavier.rouby@cern ** ** ** ** Center for Particle Physics and Phenomenology (CP3) ** ** Universite catholique de Louvain (UCL) ** ** Louvain-la-Neuve, Belgium ** ** ** ** Copyright (C) 2008-2009, ** ** All rights reserved. ** ** ** ***********************************************************************/ #include #include "TClonesArray.h" #include "BlockClasses.h" #include "Utilities/ExRootAnalysis/interface/TSimpleArray.h" #include "Utilities/ExRootAnalysis/interface/ExRootTreeBranch.h" using namespace std; class TriggerBit { public: TriggerBit(); TriggerBit(const TriggerBit& tb); TriggerBit& operator=(const TriggerBit& tb); ~TriggerBit(); void GetTrigCondition(const string& trigger_algorithm); void PrintTrigCondition(const string& LogName, const int i); bool GetResult(TClonesArray *branchElecTrig, TClonesArray *branchMuonTrig, TClonesArray *branchJetTrig, TClonesArray *branchTauJetTrig, TClonesArray *branchPhotonTrig, TClonesArray *branchETmisTrig); vector GetCuts(const vector &Sequences); TSimpleArray SubArrayBjets(TClonesArray *JET); TSimpleArray SubArrayIElec(TClonesArray *ELEC); TSimpleArray SubArrayIMuon(TClonesArray *MUON); private: vector ElecValues; vector IElecValues; vector MuonValues; vector IMuonValues; vector JetValues; vector BjetValues; vector TauJetValues; vector EtmisValues; vector GammaValues; bool Result; }; class TriggerTable { public: TriggerTable(); ~TriggerTable() { list_of_trigger_bits.clear();}; TriggerTable& operator=(TriggerTable& tt); TriggerTable(const TriggerTable& tt); void TriggerCardReader(const string& filename="data/trigger.dat"); // avant, ça s'appellait TriggerReader // appelle la méthode TriggerBit::GetTrigCondition void PrintTriggerTable(const string& LogName); // fait un cout des triggers bits, c'est toujours pratique // appelle la méthode TriggerBit::PriniTrigCondition bool GetGlobalResult(TClonesArray *branchElecTrig, TClonesArray *branchMuonTrig, TClonesArray *branchJetTrig, TClonesArray *branchTauJetTrig, TClonesArray *branchPhotonTrig, TClonesArray *branchETmisTrig,ExRootTreeBranch *branchTrigger); void WriteResult(); // sauve dans le TTree // ce nom est stupide, faut le changer private: //bool Evaluate( int event_i ); // boucle sur list_of_trigger_bits, comme on a dit // appelle la methode TriggerBit::Evaluate ou TriggerBit::GetResult (à voir) // renvoie la réponse globale du trigger // à la fin, mettre has_been_evaluated = true; // voir le NB ci-dessous vector list_of_trigger_bits; bool has_been_evaluated; bool GlobalResult; int event_i; }; #endif