00001 #ifndef GlobalTrigger_L1GlobalTriggerPSB_h
00002 #define GlobalTrigger_L1GlobalTriggerPSB_h
00003
00023
00024 #include <vector>
00025 #include <boost/cstdint.hpp>
00026
00027
00028 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutSetupFwd.h"
00029 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutSetup.h"
00030 #include "DataFormats/L1GlobalTrigger/interface/L1GtTechnicalTriggerRecord.h"
00031
00032 #include "DataFormats/Common/interface/Handle.h"
00033
00034 #include "FWCore/Framework/interface/Event.h"
00035 #include "FWCore/ParameterSet/interface/InputTag.h"
00036
00037 #include "CondFormats/L1TObjects/interface/L1GtFwd.h"
00038 #include "CondFormats/L1TObjects/interface/L1GtBoard.h"
00039 #include "CondFormats/L1TObjects/interface/L1GtBoardMaps.h"
00040
00041
00042
00043 class L1GctCand;
00044
00045 class L1GctEmCand;
00046 class L1GctJetCand;
00047
00048 class L1GctEtMiss;
00049 class L1GctEtTotal;
00050 class L1GctEtHad;
00051
00052 class L1GctJetCounts;
00053 class L1GctHFBitCounts;
00054 class L1GctHFRingEtSums;
00055
00056 class L1GlobalTriggerReadoutRecord;
00057
00058
00059 class L1GlobalTriggerPSB
00060 {
00061
00062 public:
00063
00064
00065 L1GlobalTriggerPSB();
00066
00067
00068 virtual ~L1GlobalTriggerPSB();
00069
00070 public:
00071
00073 void init(const int nrL1NoIsoEG, const int nrL1IsoEG,
00074 const int nrL1CenJet, const int nrL1ForJet, const int nrL1TauJet,
00075 const int numberTechnicalTriggers);
00076
00078 void receiveGctObjectData(
00079 edm::Event& iEvent,
00080 const edm::InputTag& caloGctInputTag, const int iBxInEvent,
00081 const bool receiveNoIsoEG, const int nrL1NoIsoEG,
00082 const bool receiveIsoEG, const int nrL1IsoEG,
00083 const bool receiveCenJet, const int nrL1CenJet,
00084 const bool receiveForJet, const int nrL1ForJet,
00085 const bool receiveTauJet, const int nrL1TauJet,
00086 const bool receiveETM, const bool receiveETT, const bool receiveHTT,
00087 const bool receiveJetCounts,
00088 const bool receiveHfBitCounts,
00089 const bool receiveHfRingEtSums);
00090
00092 void receiveTechnicalTriggers(edm::Event& iEvent,
00093 const std::vector<edm::InputTag>& technicalTriggersInputTags,
00094 const int iBxInEvent, const bool receiveTechTr,
00095 const int nrL1TechTr);
00096
00098 void fillPsbBlock(
00099 edm::Event& iEvent,
00100 const boost::uint16_t& activeBoardsGtDaq,
00101 const std::vector<L1GtBoard>& boardMaps,
00102 const int iBxInEvent,
00103 std::auto_ptr<L1GlobalTriggerReadoutRecord>& gtDaqReadoutRecord);
00104
00106 void reset();
00107
00109 void printGctObjectData(const int iBxInEvent) const;
00110
00112 inline const std::vector<const L1GctCand*>* getCandL1NoIsoEG() const
00113 {
00114 return m_candL1NoIsoEG;
00115 }
00116
00118 inline const std::vector<const L1GctCand*>* getCandL1IsoEG() const
00119 {
00120 return m_candL1IsoEG;
00121 }
00122
00124 inline const std::vector<const L1GctCand*>* getCandL1CenJet() const
00125 {
00126 return m_candL1CenJet;
00127 }
00128
00130 inline const std::vector<const L1GctCand*>* getCandL1ForJet() const
00131 {
00132 return m_candL1ForJet;
00133 }
00134
00136 inline const std::vector<const L1GctCand*>* getCandL1TauJet() const
00137 {
00138 return m_candL1TauJet;
00139 }
00140
00142 inline const L1GctEtMiss* getCandL1ETM() const
00143 {
00144 return m_candETM;
00145 }
00146
00148 inline const L1GctEtTotal* getCandL1ETT() const
00149 {
00150 return m_candETT;
00151 }
00152
00154 inline const L1GctEtHad* getCandL1HTT() const
00155 {
00156 return m_candHTT;
00157 }
00158
00160 inline const L1GctJetCounts* getCandL1JetCounts() const
00161 {
00162 return m_candJetCounts;
00163 }
00164
00166 inline const L1GctHFBitCounts* getCandL1HfBitCounts() const
00167 {
00168 return m_candHfBitCounts;
00169 }
00170
00172 inline const L1GctHFRingEtSums* getCandL1HfRingEtSums() const
00173 {
00174 return m_candHfRingEtSums;
00175 }
00176
00178 inline const std::vector<bool>* getGtTechnicalTriggers() const
00179 {
00180 return &m_gtTechnicalTriggers;
00181 }
00182
00183 private:
00184
00185 std::vector<const L1GctCand*>* m_candL1NoIsoEG;
00186 std::vector<const L1GctCand*>* m_candL1IsoEG;
00187 std::vector<const L1GctCand*>* m_candL1CenJet;
00188 std::vector<const L1GctCand*>* m_candL1ForJet;
00189 std::vector<const L1GctCand*>* m_candL1TauJet;
00190
00191 const L1GctEtMiss* m_candETM;
00192 const L1GctEtTotal* m_candETT;
00193 const L1GctEtHad* m_candHTT;
00194
00195 const L1GctJetCounts* m_candJetCounts;
00196
00197 const L1GctHFBitCounts* m_candHfBitCounts;
00198 const L1GctHFRingEtSums* m_candHfRingEtSums;
00199
00201 std::vector<bool> m_gtTechnicalTriggers;
00202
00203 };
00204
00205 #endif