00001 #ifndef GlobalTrigger_L1GlobalTrigger_h 00002 #define GlobalTrigger_L1GlobalTrigger_h 00003 00024 // system include files 00025 #include <string> 00026 #include <vector> 00027 00028 #include <boost/cstdint.hpp> 00029 00030 // user include files 00031 00032 #include "CondFormats/L1TObjects/interface/L1GtFwd.h" 00033 #include "CondFormats/L1TObjects/interface/L1GtBoard.h" 00034 00035 #include "FWCore/Framework/interface/Frameworkfwd.h" 00036 #include "FWCore/Framework/interface/EDProducer.h" 00037 00038 #include "FWCore/Framework/interface/Event.h" 00039 #include "FWCore/Framework/interface/EventSetup.h" 00040 00041 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00042 #include "FWCore/Utilities/interface/InputTag.h" 00043 00044 // forward classes 00045 class L1GlobalTriggerPSB; 00046 class L1GlobalTriggerGTL; 00047 class L1GlobalTriggerFDL; 00048 00049 class L1GtStableParameters; 00050 class L1GtParameters; 00051 class L1GtBoardMaps; 00052 00053 class L1GtPrescaleFactors; 00054 class L1GtTriggerMask; 00055 00056 // class declaration 00057 class L1GlobalTrigger : public edm::EDProducer 00058 { 00059 00060 public: 00061 00062 explicit L1GlobalTrigger(const edm::ParameterSet&); 00063 ~L1GlobalTrigger(); 00064 00065 virtual void produce(edm::Event&, const edm::EventSetup&); 00066 00067 // return pointer to PSB 00068 inline const L1GlobalTriggerPSB* gtPSB() const 00069 { 00070 return m_gtPSB; 00071 } 00072 00073 // return pointer to GTL 00074 inline const L1GlobalTriggerGTL* gtGTL() const 00075 { 00076 return m_gtGTL; 00077 } 00078 00079 // return pointer to FDL 00080 inline const L1GlobalTriggerFDL* gtFDL() const 00081 { 00082 return m_gtFDL; 00083 } 00084 00085 private: 00086 00088 00090 const L1GtStableParameters* m_l1GtStablePar; 00091 unsigned long long m_l1GtStableParCacheID; 00092 00094 unsigned int m_numberPhysTriggers; 00095 00097 unsigned int m_numberTechnicalTriggers; 00098 00100 unsigned int m_numberDaqPartitions; 00101 00104 int m_nrL1Mu; 00105 00106 int m_nrL1NoIsoEG; 00107 int m_nrL1IsoEG; 00108 00109 int m_nrL1CenJet; 00110 int m_nrL1ForJet; 00111 int m_nrL1TauJet; 00112 00113 int m_nrL1JetCounts; 00114 00115 // ... the rest of the objects are global 00116 00117 int m_ifMuEtaNumberBits; 00118 int m_ifCaloEtaNumberBits; 00119 00120 00122 const L1GtParameters* m_l1GtPar; 00123 unsigned long long m_l1GtParCacheID; 00124 00126 int m_totalBxInEvent; 00127 00129 boost::uint16_t m_activeBoardsGtDaq; 00130 boost::uint16_t m_activeBoardsGtEvm; 00131 00133 unsigned int m_bstLengthBytes; 00134 00136 const L1GtBoardMaps* m_l1GtBM; 00137 unsigned long long m_l1GtBMCacheID; 00138 00139 00141 const L1GtPrescaleFactors* m_l1GtPfAlgo; 00142 unsigned long long m_l1GtPfAlgoCacheID; 00143 00144 const L1GtPrescaleFactors* m_l1GtPfTech; 00145 unsigned long long m_l1GtPfTechCacheID; 00146 00147 const std::vector<std::vector<int> >* m_prescaleFactorsAlgoTrig; 00148 const std::vector<std::vector<int> >* m_prescaleFactorsTechTrig; 00149 00151 const L1GtTriggerMask* m_l1GtTmAlgo; 00152 unsigned long long m_l1GtTmAlgoCacheID; 00153 00154 const L1GtTriggerMask* m_l1GtTmTech; 00155 unsigned long long m_l1GtTmTechCacheID; 00156 00157 const L1GtTriggerMask* m_l1GtTmVetoAlgo; 00158 unsigned long long m_l1GtTmVetoAlgoCacheID; 00159 00160 const L1GtTriggerMask* m_l1GtTmVetoTech; 00161 unsigned long long m_l1GtTmVetoTechCacheID; 00162 00163 std::vector<unsigned int> m_triggerMaskAlgoTrig; 00164 std::vector<unsigned int> m_triggerMaskTechTrig; 00165 00166 std::vector<unsigned int> m_triggerMaskVetoAlgoTrig; 00167 std::vector<unsigned int> m_triggerMaskVetoTechTrig; 00168 00169 private: 00170 00171 00172 L1GlobalTriggerPSB* m_gtPSB; 00173 L1GlobalTriggerGTL* m_gtGTL; 00174 L1GlobalTriggerFDL* m_gtFDL; 00175 00177 edm::InputTag m_muGmtInputTag; 00178 00180 edm::InputTag m_caloGctInputTag; 00181 00183 edm::InputTag m_castorInputTag; 00184 00186 std::vector<edm::InputTag> m_technicalTriggersInputTags; 00187 00189 bool m_produceL1GtDaqRecord; 00190 00192 bool m_produceL1GtEvmRecord; 00193 00195 bool m_produceL1GtObjectMapRecord; 00196 00198 bool m_writePsbL1GtDaqRecord; 00199 00201 bool m_readTechnicalTriggerRecords; 00202 00207 int m_emulateBxInEvent; 00208 00212 std::vector<int> m_recordLength; 00213 00216 unsigned int m_alternativeNrBxBoardDaq; 00217 00220 unsigned int m_alternativeNrBxBoardEvm; 00221 00223 int m_psBstLengthBytes; 00224 00228 bool m_algorithmTriggersUnprescaled; 00229 00232 bool m_algorithmTriggersUnmasked; 00233 00237 bool m_technicalTriggersUnprescaled; 00238 00241 bool m_technicalTriggersUnmasked; 00242 00245 bool m_technicalTriggersVetoUnmasked; 00246 00247 00248 private: 00249 00251 int m_verbosity; 00252 bool m_isDebugEnabled; 00253 00254 }; 00255 00256 #endif /*GlobalTrigger_L1GlobalTrigger_h*/