51 const std::vector<edm::InputTag> &m_technicalTriggersInputTags,
81 for (std::vector<edm::InputTag>::const_iterator it =
82 m_technicalTriggersInputTags.begin();
83 it != m_technicalTriggersInputTags.end(); it++) {
103 const int nrL1CenJet,
const int nrL1ForJet,
104 const int nrL1TauJet,
105 const int numberTechnicalTriggers) {
121 const int iBxInEvent,
const bool receiveNoIsoEG,
const int nrL1NoIsoEG,
122 const bool receiveIsoEG,
const int nrL1IsoEG,
const bool receiveCenJet,
123 const int nrL1CenJet,
const bool receiveForJet,
const int nrL1ForJet,
124 const bool receiveTauJet,
const int nrL1TauJet,
const bool receiveETM,
125 const bool receiveETT,
const bool receiveHTT,
const bool receiveHTM,
126 const bool receiveJetCounts,
const bool receiveHfBitCounts,
127 const bool receiveHfRingEtSums) {
137 std::ostringstream warningsStream;
140 if (receiveNoIsoEG) {
147 if (warningEnabled) {
149 <<
"\nWarning: L1GctEmCandCollection with input label " 150 << caloGctInputTag.
label() <<
" and instance \"nonIsoEm\" \n" 151 <<
"requested in configuration, but not found in the event.\n" 156 for (L1GctEmCandCollection::const_iterator it = emCands->begin();
157 it != emCands->end(); it++) {
159 if ((*it).bx() == iBxInEvent) {
161 (*m_candL1NoIsoEG).push_back(&(*it));
175 if (warningEnabled) {
177 <<
"\nWarning: L1GctEmCandCollection with input label " 178 << caloGctInputTag.
label() <<
" and instance \"isoEm\" \n" 179 <<
"requested in configuration, but not found in the event.\n" 184 for (L1GctEmCandCollection::const_iterator it = isoEmCands->begin();
185 it != isoEmCands->end(); it++) {
187 if ((*it).bx() == iBxInEvent) {
189 (*m_candL1IsoEG).push_back(&(*it));
203 if (warningEnabled) {
205 <<
"\nWarning: L1GctJetCandCollection with input label " 206 << caloGctInputTag.
label() <<
" and instance \"cenJets\" \n" 207 <<
"requested in configuration, but not found in the event.\n" 212 for (L1GctJetCandCollection::const_iterator it = cenJets->begin();
213 it != cenJets->end(); it++) {
215 if ((*it).bx() == iBxInEvent) {
217 (*m_candL1CenJet).push_back(&(*it));
231 if (warningEnabled) {
233 <<
"\nWarning: L1GctJetCandCollection with input label " 234 << caloGctInputTag.
label() <<
" and instance \"forJets\" \n" 235 <<
"requested in configuration, but not found in the event.\n" 240 for (L1GctJetCandCollection::const_iterator it = forJets->begin();
241 it != forJets->end(); it++) {
243 if ((*it).bx() == iBxInEvent) {
245 (*m_candL1ForJet).push_back(&(*it));
259 if (warningEnabled) {
261 <<
"\nWarning: L1GctJetCandCollection with input label " 262 << caloGctInputTag.
label() <<
" and instance \"tauJets\" \n" 263 <<
"requested in configuration, but not found in the event.\n" 268 for (L1GctJetCandCollection::const_iterator it = tauJets->begin();
269 it != tauJets->end(); it++) {
271 if ((*it).bx() == iBxInEvent) {
273 (*m_candL1TauJet).push_back(&(*it));
284 iEvent.
getByLabel(caloGctInputTag, missEtColl);
287 if (warningEnabled) {
289 <<
"\nWarning: L1GctEtMissCollection with input tag " 291 <<
"\nrequested in configuration, but not found in the event.\n" 296 for (L1GctEtMissCollection::const_iterator it = missEtColl->begin();
297 it != missEtColl->end(); it++) {
299 if ((*it).bx() == iBxInEvent) {
312 iEvent.
getByLabel(caloGctInputTag, sumEtColl);
315 if (warningEnabled) {
317 <<
"\nWarning: L1GctEtTotalCollection with input tag " 319 <<
"\nrequested in configuration, but not found in the event.\n" 324 for (L1GctEtTotalCollection::const_iterator it = sumEtColl->begin();
325 it != sumEtColl->end(); it++) {
327 if ((*it).bx() == iBxInEvent) {
340 iEvent.
getByLabel(caloGctInputTag, sumHtColl);
343 if (warningEnabled) {
345 <<
"\nWarning: L1GctEtHadCollection with input tag " 347 <<
"\nrequested in configuration, but not found in the event.\n" 352 for (L1GctEtHadCollection::const_iterator it = sumHtColl->begin();
353 it != sumHtColl->end(); it++) {
355 if ((*it).bx() == iBxInEvent) {
368 iEvent.
getByLabel(caloGctInputTag, missHtColl);
371 if (warningEnabled) {
373 <<
"\nWarning: L1GctHtMissCollection with input tag " 375 <<
"\nrequested in configuration, but not found in the event.\n" 380 for (L1GctHtMissCollection::const_iterator it = missHtColl->begin();
381 it != missHtColl->end(); it++) {
383 if ((*it).bx() == iBxInEvent) {
393 if (receiveJetCounts) {
396 iEvent.
getByLabel(caloGctInputTag, jetCountColl);
399 if (warningEnabled) {
401 <<
"\nWarning: L1GctJetCountsCollection with input tag " 403 <<
"\nrequested in configuration, but not found in the event.\n" 408 for (L1GctJetCountsCollection::const_iterator it = jetCountColl->begin();
409 it != jetCountColl->end(); it++) {
411 if ((*it).bx() == iBxInEvent) {
421 if (receiveHfBitCounts) {
424 iEvent.
getByLabel(caloGctInputTag, hfBitCountsColl);
426 if (!hfBitCountsColl.
isValid()) {
427 if (warningEnabled) {
429 <<
"\nWarning: L1GctHFBitCountsCollection with input tag " 431 <<
"\nrequested in configuration, but not found in the event.\n" 436 for (L1GctHFBitCountsCollection::const_iterator it =
437 hfBitCountsColl->begin();
438 it != hfBitCountsColl->end(); it++) {
440 if ((*it).bx() == iBxInEvent) {
451 if (receiveHfRingEtSums) {
454 iEvent.
getByLabel(caloGctInputTag, hfRingEtSums);
457 if (warningEnabled) {
459 <<
"\nWarning: L1GctHFRingEtSumsCollection with input tag " 461 <<
"\nrequested in configuration, but not found in the event.\n" 466 for (L1GctHFRingEtSumsCollection::const_iterator it =
467 hfRingEtSums->begin();
468 it != hfRingEtSums->end(); it++) {
470 if ((*it).bx() == iBxInEvent) {
481 if (warningsStream.tellp() > 0) {
489 <<
"\n**** L1GlobalTriggerPSB receiving calorimeter data for BxInEvent " 491 << iBxInEvent <<
"\n from " << caloGctInputTag <<
"\n" 501 const int iBxInEvent,
502 const bool receiveCastor,
503 const bool readFromPsb) {
547 const int iBxInEvent,
548 const bool receiveBptx,
549 const bool readFromPsb) {}
556 const int iBxInEvent,
const bool receiveExternal,
const bool readFromPsb) {}
563 const std::vector<edm::InputTag> &technicalTriggersInputTags,
564 const int iBxInEvent,
const bool receiveTechTr,
const int nrL1TechTr) {
566 std::ostringstream warningsStream;
578 for (std::vector<edm::InputTag>::const_iterator it =
579 technicalTriggersInputTags.begin();
580 it != technicalTriggersInputTags.end(); it++) {
585 if (!techTrigRecord.
isValid()) {
586 if (warningEnabled) {
588 <<
"\nWarning: L1GtTechnicalTriggerRecord with input tag " 590 <<
"\nrequested in configuration, but not found in the event.\n" 595 const std::vector<L1GtTechnicalTrigger> &ttVec =
597 size_t ttVecSize = ttVec.size();
599 for (
size_t iTT = 0; iTT < ttVecSize; ++iTT) {
602 int ttBxInEvent = ttBxRecord.
bxInEvent();
604 if (ttBxInEvent == iBxInEvent) {
612 <<
"Add for BxInEvent " << iBxInEvent
613 <<
" the technical trigger produced by " << (*it)
615 <<
" , bit number " << ttBitNumber <<
" and result " 616 << ttResult << std::endl;
625 if (warningsStream.tellp() > 0) {
632 <<
"\n**** L1GlobalTriggerPSB receiving technical triggers: " 638 std::ostringstream myCout;
640 for (std::vector<bool>::reverse_iterator ritBit =
644 myCout << (*ritBit ?
'1' :
'0');
646 if ((((iBit + 1) % 16) == (sizeW64 % 16)) && (iBit != 63)) {
653 LogTrace(
"L1GlobalTrigger") << myCout.str() <<
"\n" << std::endl;
660 const int recordLength0,
const int recordLength1,
661 const unsigned int altNrBxBoardDaq,
const std::vector<L1GtBoard> &boardMaps,
667 boost::uint16_t bxCrossHw = 0;
668 if ((bxCross & 0xFFF) == bxCross) {
669 bxCrossHw =
static_cast<boost::uint16_t
>(bxCross);
675 <<
"\nBunch cross number [hex] = " << std::hex << bxCross
676 <<
"\n larger than 12 bits. Set to 0! \n" 681 typedef std::vector<L1GtBoard>::const_iterator CItBoardMaps;
686 for (CItBoardMaps itBoard = boardMaps.begin(); itBoard != boardMaps.end();
689 int iPosition = itBoard->gtPositionDaqRecord();
692 int iActiveBit = itBoard->gtBitDaqActiveBoards();
693 bool activeBoard =
false;
694 bool writeBoard =
false;
698 if (iActiveBit >= 0) {
699 activeBoard = activeBoardsGtDaq & (1 << iActiveBit);
701 int altNrBxBoard = (altNrBxBoardDaq & (1 << iActiveBit)) >> iActiveBit;
703 if (altNrBxBoard == 1) {
704 recLength = recordLength1;
706 recLength = recordLength0;
709 int lowBxInEvent = (recLength + 1) / 2 - recLength;
710 int uppBxInEvent = (recLength + 1) / 2 - 1;
712 if ((iBxInEvent >= lowBxInEvent) && (iBxInEvent <= uppBxInEvent)) {
732 if (activeBoard && writeBoard && (itBoard->gtBoardType() ==
PSB)) {
737 psbWordValue.
setBoardId(itBoard->gtBoardId());
743 boost::uint16_t bxNrValue = bxCrossHw;
744 psbWordValue.
setBxNr(bxNrValue);
748 static_cast<boost::uint32_t>(iEvent.
id().
event()));
752 boost::uint16_t localBxNrValue = bxCrossHw;
760 std::vector<L1GtPsbQuad> quadInPsb = itBoard->gtQuadInPsb();
761 int nrCables = quadInPsb.size();
763 boost::uint16_t aDataVal = 0;
764 boost::uint16_t bDataVal = 0;
767 for (std::vector<L1GtPsbQuad>::const_iterator itQuad =
769 itQuad != quadInPsb.end(); ++itQuad) {
773 int iAB = (nrCables - iCable - 1) * nrObjRow;
787 int bitsPerWord = 16;
794 boost::uint16_t bitVal = 0;
796 for (
int i = 0;
i < bitsPerWord; ++
i) {
803 aDataVal = aDataVal | (bitVal <<
i);
806 psbWordValue.
setAData(aDataVal, iAB + iPair);
811 for (
int i = 0;
i < bitsPerWord; ++
i) {
818 bDataVal = bDataVal | (bitVal <<
i);
821 psbWordValue.
setBData(bDataVal, iAB + iPair);
827 for (
int i = 0;
i < bitsPerWord; ++
i) {
834 aDataVal = aDataVal | (bitVal <<
i);
837 psbWordValue.
setAData(aDataVal, iAB + iPair);
841 for (
int i = 0;
i < bitsPerWord; ++
i) {
848 bDataVal = bDataVal | (bitVal <<
i);
851 psbWordValue.
setBData(bDataVal, iAB + iPair);
865 for (
int iPair = 0; iPair < nrObjRow; ++iPair) {
866 if (iPair < recL1NoIsoEG) {
868 (*m_candL1NoIsoEG)[iPair]))
873 psbWordValue.
setAData(aDataVal, iAB + iPair);
875 if ((iPair + nrObjRow) < recL1NoIsoEG) {
877 (*m_candL1NoIsoEG)[iPair + nrObjRow]))
882 psbWordValue.
setBData(bDataVal, iAB + iPair);
897 for (
int iPair = 0; iPair < nrObjRow; ++iPair) {
898 if (iPair < recL1IsoEG) {
900 (
static_cast<const L1GctEmCand *
>((*m_candL1IsoEG)[iPair]))
905 psbWordValue.
setAData(aDataVal, iAB + iPair);
907 if ((iPair + nrObjRow) < recL1IsoEG) {
909 (*m_candL1IsoEG)[iPair + nrObjRow]))
914 psbWordValue.
setBData(bDataVal, iAB + iPair);
930 for (
int iPair = 0; iPair < nrObjRow; ++iPair) {
931 if (iPair < recL1CenJet) {
933 (*m_candL1CenJet)[iPair]))
938 psbWordValue.
setAData(aDataVal, iAB + iPair);
940 if ((iPair + nrObjRow) < recL1CenJet) {
942 (*m_candL1CenJet)[iPair + nrObjRow]))
947 psbWordValue.
setBData(bDataVal, iAB + iPair);
962 for (
int iPair = 0; iPair < nrObjRow; ++iPair) {
963 if (iPair < recL1ForJet) {
965 (*m_candL1ForJet)[iPair]))
970 psbWordValue.
setAData(aDataVal, iAB + iPair);
972 if ((iPair + nrObjRow) < recL1ForJet) {
974 (*m_candL1ForJet)[iPair + nrObjRow]))
979 psbWordValue.
setBData(bDataVal, iAB + iPair);
995 for (
int iPair = 0; iPair < nrObjRow; ++iPair) {
996 if (iPair < recL1TauJet) {
998 (*m_candL1TauJet)[iPair]))
1003 psbWordValue.
setAData(aDataVal, iAB + iPair);
1005 if ((iPair + nrObjRow) < recL1TauJet) {
1007 (*m_candL1TauJet)[iPair + nrObjRow]))
1012 psbWordValue.
setBData(bDataVal, iAB + iPair);
1044 psbWordValue.
setAData(aDataVal, iAB + iPair);
1051 psbWordValue.
setBData(bDataVal, iAB + iPair);
1074 psbWordValue.
setAData(aDataVal, iAB + iPair);
1088 psbWordValue.
setBData(bDataVal, iAB + iPair);
1112 int jetCountsBits = 5;
1113 int countsPerWord = 3;
1124 for (
int i = 0;
i < countsPerWord; ++
i) {
1126 << (jetCountsBits *
i));
1132 for (
int i = 0;
i < countsPerWord; ++
i) {
1134 << (jetCountsBits *
i));
1139 psbWordValue.
setAData(aDataVal, iAB + iPair);
1140 psbWordValue.
setBData(bDataVal, iAB + iPair);
1148 for (
int i = 0;
i < countsPerWord; ++
i) {
1150 << (jetCountsBits *
i));
1156 for (
int i = 0;
i < countsPerWord; ++
i) {
1158 << (jetCountsBits *
i));
1163 psbWordValue.
setAData(aDataVal, iAB + iPair);
1164 psbWordValue.
setBData(bDataVal, iAB + iPair);
1185 int nHfBitCounts = hfBitCounts.
nCounts();
1188 int nHfRingEtSums = hfRingEtSums.
nSums();
1196 int hfPerWord =
sizeof(aDataVal) * 8 / hfBits;
1204 bool aDataFlag =
true;
1205 bool bDataFlag =
false;
1209 for (
int i = 0;
i < nHfBitCounts; ++
i) {
1212 if (iHf < hfPerWord) {
1229 if (iHf < hfPerWord) {
1246 iHf = nHfBitCounts % hfPerWord;
1253 if (aDataFlag && bDataFlag) {
1255 <<
"\n HfBitCounts collection filled aData and bData [" 1256 << (iAB + iPair) <<
"]" 1257 <<
"\n HfRingEtSums collection has no space to be written" 1263 for (
int i = 0;
i < nHfRingEtSums; ++
i) {
1266 if (iHf < hfPerWord) {
1283 if (iHf < hfPerWord) {
1300 iHf = nHfRingEtSums % hfPerWord;
1307 psbWordValue.
setAData(aDataVal, iAB + iPair);
1308 psbWordValue.
setBData(bDataVal, iAB + iPair);
1317 if (aDataFlag && bDataFlag) {
1319 <<
"\n aData and bData [" << (iAB + iPair) <<
"] full" 1320 <<
"\n HfRingEtSums collection has not enough space to be " 1379 <<
"\nL1GlobalTrigger: GCT data [hex] received by PSBs for BxInEvent = " 1380 << iBxInEvent <<
"\n" 1383 std::vector<const L1GctCand *>::const_iterator iterConst;
1385 LogTrace(
"L1GlobalTrigger") <<
" GCT NoIsoEG " << std::endl;
1390 << std::hex <<
"Rank = " << (*iterConst)->rank()
1391 <<
" Eta index = " << (*iterConst)->etaIndex()
1392 <<
" Phi index = " << (*iterConst)->phiIndex() <<
std::dec << std::endl;
1395 LogTrace(
"L1GlobalTrigger") <<
" GCT IsoEG " << std::endl;
1399 << std::hex <<
"Rank = " << (*iterConst)->rank()
1400 <<
" Eta index = " << (*iterConst)->etaIndex()
1401 <<
" Phi index = " << (*iterConst)->phiIndex() <<
std::dec << std::endl;
1404 LogTrace(
"L1GlobalTrigger") <<
" GCT CenJet " << std::endl;
1408 << std::hex <<
"Rank = " << (*iterConst)->rank()
1409 <<
" Eta index = " << (*iterConst)->etaIndex()
1410 <<
" Phi index = " << (*iterConst)->phiIndex() <<
std::dec << std::endl;
1413 LogTrace(
"L1GlobalTrigger") <<
" GCT ForJet " << std::endl;
1417 << std::hex <<
"Rank = " << (*iterConst)->rank()
1418 <<
" Eta index = " << (*iterConst)->etaIndex()
1419 <<
" Phi index = " << (*iterConst)->phiIndex() <<
std::dec << std::endl;
1422 LogTrace(
"L1GlobalTrigger") <<
" GCT TauJet " << std::endl;
1426 << std::hex <<
"Rank = " << (*iterConst)->rank()
1427 <<
" Eta index = " << (*iterConst)->etaIndex()
1428 <<
" Phi index = " << (*iterConst)->phiIndex() <<
std::dec << std::endl;
1431 LogTrace(
"L1GlobalTrigger") <<
" GCT ETM " << std::endl;
1440 LogTrace(
"L1GlobalTrigger") <<
" GCT ETT " << std::endl;
1446 LogTrace(
"L1GlobalTrigger") <<
" GCT HTT " << std::endl;
1452 LogTrace(
"L1GlobalTrigger") <<
" GCT HTM " << std::endl;
1461 LogTrace(
"L1GlobalTrigger") <<
" GCT JetCounts " << std::endl;
1463 LogTrace(
"L1GlobalTrigger") << (*m_candJetCounts) << std::endl;
1466 LogTrace(
"L1GlobalTrigger") <<
" GCT HfBitCounts " << std::endl;
1468 LogTrace(
"L1GlobalTrigger") << (*m_candHfBitCounts) << std::endl;
1471 LogTrace(
"L1GlobalTrigger") <<
" GCT HfRingEtSums " << std::endl;
1473 LogTrace(
"L1GlobalTrigger") << (*m_candHfRingEtSums) << std::endl;
EventNumber_t event() const
uint16_t raw() const
get the data
virtual ~L1GlobalTriggerPSB()
unsigned et() const
get the Et
const L1GctHtMiss * m_candHTM
std::vector< L1GctEtMiss > L1GctEtMissCollection
std::vector< L1GctHFRingEtSums > L1GctHFRingEtSumsCollection
std::vector< L1GctEtHad > L1GctEtHadCollection
Level-1 Trigger jet candidate.
int bunchCrossing() const
void setBData(cms_uint16_t bDataVal, int iB)
std::vector< L1GctJetCounts > L1GctJetCountsCollection
void receiveGctObjectData(edm::Event &iEvent, const edm::InputTag &caloGctInputTag, const int iBxInEvent, const bool receiveNoIsoEG, const int nrL1NoIsoEG, const bool receiveIsoEG, const int nrL1IsoEG, const bool receiveCenJet, const int nrL1CenJet, const bool receiveForJet, const int nrL1ForJet, const bool receiveTauJet, const int nrL1TauJet, const bool receiveETM, const bool receiveETT, const bool receiveHTT, const bool receiveHTM, const bool receiveJetCounts, const bool receiveHfBitCounts, const bool receiveHfRingEtSums)
receive Global Calorimeter Trigger objects
unsigned phi() const
get the Et
L1GlobalTriggerPSB(const edm::InputTag &caloTag, const std::vector< edm::InputTag > &vecTag, edm::ConsumesCollector &&iC)
std::vector< const L1GctCand * > * m_candL1NoIsoEG
Level-1 Trigger EM candidate at output of GCT.
uint16_t bitCount(unsigned const i) const
std::vector< L1GctEtTotal > L1GctEtTotalCollection
const L1GctHFBitCounts * m_candHfBitCounts
std::vector< L1GctHFBitCounts > L1GctHFBitCountsCollection
std::vector< L1GctJetCand > L1GctJetCandCollection
const L1GctEtMiss * m_candETM
void setEventNr(cms_uint32_t eventNrValue)
void setBxNr(cms_uint16_t bxNrValue)
unsigned et() const
get the Et
void setBoardId(cms_uint16_t boardIdValue)
const bool gtTechnicalTriggerResult() const
std::vector< const L1GctCand * > * m_candL1ForJet
const L1GctJetCounts * m_candJetCounts
void receiveTechnicalTriggers(edm::Event &iEvent, const std::vector< edm::InputTag > &technicalTriggersInputTags, const int iBxInEvent, const bool receiveTechTr, const int nrL1TechTr)
receive technical trigger
std::vector< bool > m_gtTechnicalTriggers
technical trigger bits
void setBxInEvent(int bxInEventValue)
const unsigned int gtTechnicalTriggerBitNumber() const
unsigned et() const
get the magnitude
int m_verbosity
verbosity level
void receiveBptxData(edm::Event &iEvent, const edm::InputTag &bptxInputTag, const int iBxInEvent, const bool receiveBptx, const bool readFromPsb)
receive BPTX objects
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
const int bxInEvent() const
get/set bunch cross in the GT event record
unsigned count(unsigned i) const
get count by index
std::vector< const L1GctCand * > * m_candL1CenJet
const std::string gtTechnicalTriggerName() const
get / set technical trigger name, bit number, bunch cross in the GT event record and result ...
std::vector< L1GctHtMiss > L1GctHtMissCollection
void printGctObjectData(const int iBxInEvent) const
print Global Calorimeter Trigger data
std::vector< const L1GctCand * > * m_candL1IsoEG
void receiveExternalData(edm::Event &iEvent, const std::vector< edm::InputTag > &externalInputTags, const int iBxInEvent, const bool receiveExternal, const bool readFromPsb)
receive External objects
const L1GctHFRingEtSums * m_candHfRingEtSums
const L1GctEtHad * m_candHTT
void receiveCastorData(edm::Event &iEvent, const edm::InputTag &castorInputTag, const int iBxInEvent, const bool receiveCastor, const bool readFromPsb)
receive CASTOR objects
uint32_t raw() const
get the data
void fillPsbBlock(edm::Event &iEvent, const boost::uint16_t &activeBoardsGtDaq, const int recordLength0, const int recordLength1, const unsigned int altNrBxBoardDaq, const std::vector< L1GtBoard > &boardMaps, const int iBxInEvent, L1GlobalTriggerReadoutRecord *gtDaqReadoutRecord)
fill the content of active PSB boards
std::vector< const L1GctCand * > * m_candL1TauJet
unsigned et() const
get the magnitude
uint16_t raw() const
get the data
const L1GctEtTotal * m_candETT
void setGtPsbWord(const L1GtPsbWord &, cms_uint16_t boardIdValue, int bxInEventValue)
ABC for GCT EM and jet candidates.
void setLocalBxNr(cms_uint16_t localBxNrValue)
const std::vector< L1GtTechnicalTrigger > & gtTechnicalTrigger() const
get / set the vector of technical triggers
uint16_t etSum(unsigned const i) const
static unsigned nCounts()
void setAData(cms_uint16_t aDataVal, int iA)
void init(const int nrL1NoIsoEG, const int nrL1IsoEG, const int nrL1CenJet, const int nrL1ForJet, const int nrL1TauJet, const int numberTechnicalTriggers)
initialize the class (mainly reserve)
unsigned phi() const
get the Et
std::vector< L1GctEmCand > L1GctEmCandCollection