00001 #ifndef GlobalTrigger_L1GlobalTriggerGTL_h
00002 #define GlobalTrigger_L1GlobalTriggerGTL_h
00003
00021
00022 #include <bitset>
00023 #include <vector>
00024
00025
00026 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutSetupFwd.h"
00027 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutSetup.h"
00028 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerObjectMapRecord.h"
00029
00030 #include "DataFormats/L1GlobalMuonTrigger/interface/L1MuGMTCand.h"
00031
00032 #include "FWCore/Framework/interface/Event.h"
00033 #include "FWCore/ParameterSet/interface/InputTag.h"
00034
00035 #include "FWCore/Framework/interface/EventSetup.h"
00036
00037
00038 class L1GlobalTriggerPSB;
00039 class L1GtTriggerMenu;
00040 class L1CaloGeometry;
00041 class L1MuTriggerScales;
00042 class L1GtEtaPhiConversions;
00043
00044
00045 class L1GlobalTriggerGTL
00046 {
00047
00048 public:
00049
00050
00051 L1GlobalTriggerGTL();
00052
00053
00054 virtual ~L1GlobalTriggerGTL();
00055
00056 public:
00057
00059 void receiveGmtObjectData(
00060 edm::Event&,
00061 const edm::InputTag&, const int iBxInEvent,
00062 const bool receiveMu, const int nrL1Mu);
00063
00064
00066 void init(const int nrL1Mu, const int numberPhysTriggers);
00067
00069 void run(edm::Event& iEvent, const edm::EventSetup& evSetup,
00070 const L1GlobalTriggerPSB* ptrGtPSB, const bool produceL1GtObjectMapRecord,
00071 const int iBxInEvent, std::auto_ptr<L1GlobalTriggerObjectMapRecord>& gtObjectMapRecord,
00072 const unsigned int numberPhysTriggers,
00073 const int nrL1Mu,
00074 const int nrL1NoIsoEG,
00075 const int nrL1IsoEG,
00076 const int nrL1CenJet,
00077 const int nrL1ForJet,
00078 const int nrL1TauJet,
00079 const int nrL1JetCounts,
00080 const int ifMuEtaNumberBits,
00081 const int ifCaloEtaNumberBits,
00082 const bool receiveCastor,
00083 const edm::InputTag castorInputTag);
00084
00086 void reset();
00087
00089 void printGmtData(const int iBxInEvent) const;
00090
00092 inline const std::bitset<L1GlobalTriggerReadoutSetup::NumberPhysTriggers>& getDecisionWord() const
00093 {
00094 return m_gtlDecisionWord;
00095 }
00096
00098 inline const std::bitset<L1GlobalTriggerReadoutSetup::NumberPhysTriggers>& getAlgorithmOR() const
00099 {
00100 return m_gtlAlgorithmOR;
00101 }
00102
00104 inline const std::vector<const L1MuGMTCand*>* getCandL1Mu() const
00105 {
00106 return m_candL1Mu;
00107 }
00108
00109 private:
00110
00111
00112
00113
00114 const L1GtTriggerMenu* m_l1GtMenu;
00115 unsigned long long m_l1GtMenuCacheID;
00116
00117
00118 const L1CaloGeometry* m_l1CaloGeometry;
00119 unsigned long long m_l1CaloGeometryCacheID;
00120
00121 const L1MuTriggerScales* m_l1MuTriggerScales;
00122 unsigned long long m_l1MuTriggerScalesCacheID;
00123
00124
00125 L1GtEtaPhiConversions* m_gtEtaPhiConversions;
00126
00127 private:
00128
00129 std::vector<const L1MuGMTCand*>* m_candL1Mu;
00130
00131 std::bitset<L1GlobalTriggerReadoutSetup::NumberPhysTriggers> m_gtlAlgorithmOR;
00132 std::bitset<L1GlobalTriggerReadoutSetup::NumberPhysTriggers> m_gtlDecisionWord;
00133
00134
00135 };
00136
00137 #endif