CMS 3D CMS Logo

CMSSW_4_4_3_patch1/src/L1Trigger/GlobalTrigger/interface/L1GlobalTriggerGTL.h

Go to the documentation of this file.
00001 #ifndef GlobalTrigger_L1GlobalTriggerGTL_h
00002 #define GlobalTrigger_L1GlobalTriggerGTL_h
00003 
00021 // system include files
00022 #include <bitset>
00023 #include <vector>
00024 
00025 // user include files
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/Utilities/interface/InputTag.h"
00034 
00035 #include "FWCore/Framework/interface/EventSetup.h"
00036 
00037 // forward declarations
00038 class L1GlobalTriggerPSB;
00039 class L1GtTriggerMenu;
00040 class L1CaloGeometry;
00041 class L1MuTriggerScales;
00042 class L1GtEtaPhiConversions;
00043 
00044 // class declaration
00045 class L1GlobalTriggerGTL
00046 {
00047 
00048 public:
00049 
00050     // constructors
00051     L1GlobalTriggerGTL();
00052 
00053     // destructor
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 
00084     void reset();
00085 
00087     void printGmtData(const int iBxInEvent) const;
00088 
00090     inline const std::bitset<L1GlobalTriggerReadoutSetup::NumberPhysTriggers>& getDecisionWord() const
00091     {
00092         return m_gtlDecisionWord;
00093     }
00094 
00096     inline const std::bitset<L1GlobalTriggerReadoutSetup::NumberPhysTriggers>& getAlgorithmOR() const
00097     {
00098         return m_gtlAlgorithmOR;
00099     }
00100 
00102     inline const std::vector<const L1MuGMTCand*>* getCandL1Mu() const
00103     {
00104         return m_candL1Mu;
00105     }
00106 
00107 public:
00108 
00109     inline void setVerbosity(const int verbosity) {
00110         m_verbosity = verbosity;
00111     }
00112 
00113 private:
00114 
00115     // cached stuff
00116 
00117     // trigger menu
00118     const L1GtTriggerMenu* m_l1GtMenu;
00119     unsigned long long m_l1GtMenuCacheID;
00120 
00121     // L1 scales (phi, eta) for Mu, Calo and EnergySum objects
00122     const L1CaloGeometry* m_l1CaloGeometry;
00123     unsigned long long m_l1CaloGeometryCacheID;
00124 
00125     const L1MuTriggerScales* m_l1MuTriggerScales;
00126     unsigned long long m_l1MuTriggerScalesCacheID;
00127 
00128     // conversions for eta and phi
00129     L1GtEtaPhiConversions* m_gtEtaPhiConversions;
00130 
00131 private:
00132 
00133     std::vector<const L1MuGMTCand*>* m_candL1Mu;
00134 
00135     std::bitset<L1GlobalTriggerReadoutSetup::NumberPhysTriggers> m_gtlAlgorithmOR;
00136     std::bitset<L1GlobalTriggerReadoutSetup::NumberPhysTriggers> m_gtlDecisionWord;
00137 
00138 private:
00139 
00141     int m_verbosity;
00142     bool m_isDebugEnabled;
00143 
00144 
00145 };
00146 
00147 #endif