64 m_candHfRingEtSums(0),
90 const int nrL1CenJet,
const int nrL1ForJet,
const int nrL1TauJet,
91 const int numberTechnicalTriggers)
110 const bool receiveNoIsoEG,
const int nrL1NoIsoEG,
111 const bool receiveIsoEG,
const int nrL1IsoEG,
112 const bool receiveCenJet,
const int nrL1CenJet,
113 const bool receiveForJet,
const int nrL1ForJet,
114 const bool receiveTauJet,
const int nrL1TauJet,
115 const bool receiveETM,
const bool receiveETT,
const bool receiveHTT,
const bool receiveHTM,
116 const bool receiveJetCounts,
117 const bool receiveHfBitCounts,
118 const bool receiveHfRingEtSums)
128 std::ostringstream warningsStream;
131 if (receiveNoIsoEG) {
138 if (warningEnabled) {
140 <<
"\nWarning: L1GctEmCandCollection with input label " << caloGctInputTag.
label()
141 <<
" and instance \"nonIsoEm\" \n"
142 <<
"requested in configuration, but not found in the event.\n"
148 for (L1GctEmCandCollection::const_iterator it = emCands->begin(); it
149 != emCands->end(); it++) {
151 if ((*it).bx() == iBxInEvent) {
153 (*m_candL1NoIsoEG).push_back(&(*it));
169 if (warningEnabled) {
171 <<
"\nWarning: L1GctEmCandCollection with input label "
172 << caloGctInputTag.
label()
173 <<
" and instance \"isoEm\" \n"
174 <<
"requested in configuration, but not found in the event.\n"
180 for (L1GctEmCandCollection::const_iterator it = isoEmCands->begin(); it
181 != isoEmCands->end(); it++) {
183 if ((*it).bx() == iBxInEvent) {
185 (*m_candL1IsoEG).push_back(&(*it));
202 if (warningEnabled) {
204 <<
"\nWarning: L1GctJetCandCollection with input label " << caloGctInputTag.
label()
205 <<
" and instance \"cenJets\" \n"
206 <<
"requested in configuration, but not found in the event.\n"
212 for (L1GctJetCandCollection::const_iterator it = cenJets->begin(); it
213 != cenJets->end(); it++) {
215 if ((*it).bx() == iBxInEvent) {
217 (*m_candL1CenJet).push_back(&(*it));
233 if (warningEnabled) {
235 <<
"\nWarning: L1GctJetCandCollection with input label "
236 << caloGctInputTag.
label()
237 <<
" and instance \"forJets\" \n"
238 <<
"requested in configuration, but not found in the event.\n"
244 for (L1GctJetCandCollection::const_iterator it = forJets->begin(); it
245 != forJets->end(); it++) {
247 if ((*it).bx() == iBxInEvent) {
249 (*m_candL1ForJet).push_back(&(*it));
265 if (warningEnabled) {
267 <<
"\nWarning: L1GctJetCandCollection with input label " << caloGctInputTag.
label()
268 <<
" and instance \"tauJets\" \n"
269 <<
"requested in configuration, but not found in the event.\n"
275 for (L1GctJetCandCollection::const_iterator it = tauJets->begin(); it
276 != tauJets->end(); it++) {
278 if ((*it).bx() == iBxInEvent) {
280 (*m_candL1TauJet).push_back(&(*it));
293 iEvent.
getByLabel(caloGctInputTag, missEtColl) ;
296 if (warningEnabled) {
298 <<
"\nWarning: L1GctEtMissCollection with input tag " << caloGctInputTag
299 <<
"\nrequested in configuration, but not found in the event.\n"
305 for (L1GctEtMissCollection::const_iterator it = missEtColl->begin(); it
306 != missEtColl->end(); it++) {
308 if ((*it).bx() == iBxInEvent) {
323 iEvent.
getByLabel(caloGctInputTag, sumEtColl) ;
326 if (warningEnabled) {
328 <<
"\nWarning: L1GctEtTotalCollection with input tag " << caloGctInputTag
329 <<
"\nrequested in configuration, but not found in the event.\n"
335 for (L1GctEtTotalCollection::const_iterator it = sumEtColl->begin(); it
336 != sumEtColl->end(); it++) {
338 if ((*it).bx() == iBxInEvent) {
353 iEvent.
getByLabel(caloGctInputTag, sumHtColl) ;
356 if (warningEnabled) {
358 <<
"\nWarning: L1GctEtHadCollection with input tag " << caloGctInputTag
359 <<
"\nrequested in configuration, but not found in the event.\n"
365 for (L1GctEtHadCollection::const_iterator it = sumHtColl->begin(); it
366 != sumHtColl->end(); it++) {
368 if ((*it).bx() == iBxInEvent) {
383 iEvent.
getByLabel(caloGctInputTag, missHtColl) ;
386 if (warningEnabled) {
388 <<
"\nWarning: L1GctHtMissCollection with input tag " << caloGctInputTag
389 <<
"\nrequested in configuration, but not found in the event.\n"
395 for (L1GctHtMissCollection::const_iterator it = missHtColl->begin(); it
396 != missHtColl->end(); it++) {
398 if ((*it).bx() == iBxInEvent) {
410 if (receiveJetCounts) {
413 iEvent.
getByLabel(caloGctInputTag, jetCountColl) ;
416 if (warningEnabled) {
418 <<
"\nWarning: L1GctJetCountsCollection with input tag " << caloGctInputTag
419 <<
"\nrequested in configuration, but not found in the event.\n"
425 for (L1GctJetCountsCollection::const_iterator it =
426 jetCountColl->begin(); it != jetCountColl->end(); it++) {
428 if ((*it).bx() == iBxInEvent) {
441 if (receiveHfBitCounts) {
444 iEvent.
getByLabel(caloGctInputTag, hfBitCountsColl) ;
446 if (!hfBitCountsColl.
isValid()) {
447 if (warningEnabled) {
449 <<
"\nWarning: L1GctHFBitCountsCollection with input tag " << caloGctInputTag
450 <<
"\nrequested in configuration, but not found in the event.\n"
456 for (L1GctHFBitCountsCollection::const_iterator it =
457 hfBitCountsColl->begin(); it != hfBitCountsColl->end(); it++) {
459 if ((*it).bx() == iBxInEvent) {
472 if (receiveHfRingEtSums) {
475 iEvent.
getByLabel(caloGctInputTag, hfRingEtSums) ;
478 if (warningEnabled) {
480 <<
"\nWarning: L1GctHFRingEtSumsCollection with input tag " << caloGctInputTag
481 <<
"\nrequested in configuration, but not found in the event.\n"
487 for (L1GctHFRingEtSumsCollection::const_iterator it =
488 hfRingEtSums->begin(); it != hfRingEtSums->end(); it++) {
490 if ((*it).bx() == iBxInEvent) {
503 if (warningsStream.tellp() > 0) {
511 <<
"\n**** L1GlobalTriggerPSB receiving calorimeter data for BxInEvent = "
512 << iBxInEvent <<
"\n from " << caloGctInputTag <<
"\n"
524 const bool receiveCastor,
const bool readFromPsb) {
568 const bool receiveBptx,
const bool readFromPsb) {
577 const std::vector<edm::InputTag>& externalInputTags,
578 const int iBxInEvent,
579 const bool receiveExternal,
const bool readFromPsb) {
589 edm::Event&
iEvent,
const std::vector<edm::InputTag>& technicalTriggersInputTags,
590 const int iBxInEvent,
const bool receiveTechTr,
const int nrL1TechTr) {
592 std::ostringstream warningsStream;
604 for (std::vector<edm::InputTag>::const_iterator it = technicalTriggersInputTags.begin(); it
605 != technicalTriggersInputTags.end(); it++) {
610 if (!techTrigRecord.
isValid()) {
611 if (warningEnabled) {
612 warningsStream <<
"\nWarning: L1GtTechnicalTriggerRecord with input tag "
614 <<
"\nrequested in configuration, but not found in the event.\n"
619 const std::vector<L1GtTechnicalTrigger>& ttVec =
620 techTrigRecord->gtTechnicalTrigger();
621 size_t ttVecSize = ttVec.size();
623 for (
size_t iTT = 0; iTT < ttVecSize; ++iTT) {
626 int ttBxInEvent = ttBxRecord.
bxInEvent();
628 if (ttBxInEvent == iBxInEvent) {
635 LogTrace(
"L1GlobalTrigger") <<
"Add for BxInEvent " << iBxInEvent
636 <<
" the technical trigger produced by " << (*it) <<
" : name "
638 << ttBitNumber <<
" and result " << ttResult << std::endl;
652 if (warningsStream.tellp() > 0) {
659 <<
"\n**** L1GlobalTriggerPSB receiving technical triggers: " << std::endl;
664 std::ostringstream myCout;
669 myCout << ( *ritBit ?
'1' :
'0' );
671 if ( ( ( ( iBit + 1 ) % 16 ) == ( sizeW64 % 16 ) ) && ( iBit != 63 )) {
678 LogTrace(
"L1GlobalTrigger") << myCout.str() <<
"\n" << std::endl;
688 const boost::uint16_t& activeBoardsGtDaq,
689 const int recordLength0,
690 const int recordLength1,
691 const unsigned int altNrBxBoardDaq,
692 const std::vector<L1GtBoard>& boardMaps,
693 const int iBxInEvent,
694 std::auto_ptr<L1GlobalTriggerReadoutRecord>& gtDaqReadoutRecord)
700 boost::uint16_t bxCrossHw = 0;
701 if ((bxCross & 0xFFF) == bxCross) {
702 bxCrossHw =
static_cast<boost::uint16_t
> (bxCross);
709 <<
"\nBunch cross number [hex] = " << std::hex << bxCross
710 <<
"\n larger than 12 bits. Set to 0! \n" << std::dec
715 typedef std::vector<L1GtBoard>::const_iterator CItBoardMaps;
721 itBoard = boardMaps.begin();
722 itBoard != boardMaps.end(); ++itBoard) {
724 int iPosition = itBoard->gtPositionDaqRecord();
727 int iActiveBit = itBoard->gtBitDaqActiveBoards();
728 bool activeBoard =
false;
729 bool writeBoard =
false;
733 if (iActiveBit >= 0) {
734 activeBoard = activeBoardsGtDaq & (1 << iActiveBit);
736 int altNrBxBoard = (altNrBxBoardDaq & ( 1 << iActiveBit )) >> iActiveBit;
738 if (altNrBxBoard == 1) {
739 recLength = recordLength1;
741 recLength = recordLength0;
744 int lowBxInEvent = (recLength + 1)/2 - recLength;
745 int uppBxInEvent = (recLength + 1)/2 - 1;
747 if ((iBxInEvent >= lowBxInEvent) && (iBxInEvent <= uppBxInEvent)) {
766 if (activeBoard && writeBoard && (itBoard->gtBoardType() ==
PSB)) {
771 psbWordValue.
setBoardId(itBoard->gtBoardId());
777 boost::uint16_t bxNrValue = bxCrossHw;
778 psbWordValue.
setBxNr(bxNrValue);
783 static_cast<boost::uint32_t>(iEvent.
id().
event()) );
787 boost::uint16_t localBxNrValue = bxCrossHw;
795 std::vector<L1GtPsbQuad> quadInPsb = itBoard->gtQuadInPsb();
796 int nrCables = quadInPsb.size();
798 boost::uint16_t aDataVal = 0;
799 boost::uint16_t bDataVal = 0;
802 for (std::vector<L1GtPsbQuad>::const_iterator
803 itQuad = quadInPsb.begin();
804 itQuad != quadInPsb.end(); ++itQuad) {
808 int iAB = (nrCables - iCable - 1)*nrObjRow;
822 int bitsPerWord = 16;
829 boost::uint16_t bitVal = 0;
831 for (
int i = 0;
i < bitsPerWord; ++
i) {
839 aDataVal = aDataVal | (bitVal <<
i);
842 psbWordValue.
setAData(aDataVal, iAB + iPair);
847 for (
int i = 0;
i < bitsPerWord; ++
i) {
855 bDataVal = bDataVal | (bitVal <<
i);
858 psbWordValue.
setBData(bDataVal, iAB + iPair);
864 for (
int i = 0;
i < bitsPerWord; ++
i) {
872 aDataVal = aDataVal | (bitVal <<
i);
875 psbWordValue.
setAData(aDataVal, iAB + iPair);
879 for (
int i = 0;
i < bitsPerWord; ++
i) {
887 bDataVal = bDataVal | (bitVal <<
i);
890 psbWordValue.
setBData(bDataVal, iAB + iPair);
904 for (
int iPair = 0; iPair < nrObjRow; ++iPair) {
905 if (iPair < recL1NoIsoEG) {
907 (
static_cast<const L1GctEmCand*
> ((*m_candL1NoIsoEG)[iPair]))->raw();
912 psbWordValue.
setAData(aDataVal, iAB + iPair);
914 if ((iPair + nrObjRow) < recL1NoIsoEG) {
916 (
static_cast<const L1GctEmCand*
> ((*m_candL1NoIsoEG)[iPair + nrObjRow]))->raw();
921 psbWordValue.
setBData(bDataVal, iAB + iPair);
937 for (
int iPair = 0; iPair < nrObjRow; ++iPair) {
938 if (iPair < recL1IsoEG) {
940 (
static_cast<const L1GctEmCand*
> ((*m_candL1IsoEG)[iPair]))->raw();
945 psbWordValue.
setAData(aDataVal, iAB + iPair);
947 if ((iPair + nrObjRow) < recL1IsoEG) {
949 (
static_cast<const L1GctEmCand*
> ((*m_candL1IsoEG)[iPair + nrObjRow]))->raw();
954 psbWordValue.
setBData(bDataVal, iAB + iPair);
971 for (
int iPair = 0; iPair < nrObjRow; ++iPair) {
972 if (iPair < recL1CenJet) {
974 (
static_cast<const L1GctJetCand*
> ((*m_candL1CenJet)[iPair]))->raw();
979 psbWordValue.
setAData(aDataVal, iAB + iPair);
981 if ((iPair + nrObjRow) < recL1CenJet) {
983 (
static_cast<const L1GctJetCand*
> ((*m_candL1CenJet)[iPair + nrObjRow]))->raw();
988 psbWordValue.
setBData(bDataVal, iAB + iPair);
1004 for (
int iPair = 0; iPair < nrObjRow; ++iPair) {
1005 if (iPair < recL1ForJet) {
1007 (
static_cast<const L1GctJetCand*
> ((*m_candL1ForJet)[iPair]))->raw();
1012 psbWordValue.
setAData(aDataVal, iAB + iPair);
1014 if ((iPair + nrObjRow) < recL1ForJet) {
1016 (
static_cast<const L1GctJetCand*
> ((*m_candL1ForJet)[iPair + nrObjRow]))->raw();
1021 psbWordValue.
setBData(bDataVal, iAB + iPair);
1038 for (
int iPair = 0; iPair < nrObjRow; ++iPair) {
1039 if (iPair < recL1TauJet) {
1041 (
static_cast<const L1GctJetCand*
> ((*m_candL1TauJet)[iPair]))->raw();
1046 psbWordValue.
setAData(aDataVal, iAB + iPair);
1048 if ((iPair + nrObjRow) < recL1TauJet) {
1050 (
static_cast<const L1GctJetCand*
> ((*m_candL1TauJet)[iPair + nrObjRow]))->raw();
1055 psbWordValue.
setBData(bDataVal, iAB + iPair);
1089 psbWordValue.
setAData(aDataVal, iAB + iPair);
1097 psbWordValue.
setBData(bDataVal, iAB + iPair);
1121 psbWordValue.
setAData(aDataVal, iAB + iPair);
1136 psbWordValue.
setBData(bDataVal, iAB + iPair);
1160 int jetCountsBits = 5;
1161 int countsPerWord = 3;
1172 for (
int i = 0;
i < countsPerWord; ++
i) {
1175 << (jetCountsBits*
i));
1181 for (
int i = 0;
i < countsPerWord; ++
i) {
1184 << (jetCountsBits*
i));
1190 psbWordValue.
setAData(aDataVal, iAB + iPair);
1191 psbWordValue.
setBData(bDataVal, iAB + iPair);
1199 for (
int i = 0;
i < countsPerWord; ++
i) {
1202 << (jetCountsBits*
i));
1208 for (
int i = 0;
i < countsPerWord; ++
i) {
1211 << (jetCountsBits*
i));
1217 psbWordValue.
setAData(aDataVal, iAB + iPair);
1218 psbWordValue.
setBData(bDataVal, iAB + iPair);
1239 int nHfBitCounts = hfBitCounts.
nCounts();
1242 int nHfRingEtSums = hfRingEtSums.
nSums();
1250 int hfPerWord =
sizeof(aDataVal)*8/hfBits;
1258 bool aDataFlag =
true;
1259 bool bDataFlag =
false;
1263 for (
int i = 0;
i < nHfBitCounts; ++
i) {
1266 if (iHf < hfPerWord) {
1284 if (iHf < hfPerWord) {
1302 iHf = nHfBitCounts%hfPerWord;
1309 if (aDataFlag && bDataFlag) {
1311 <<
"\n HfBitCounts collection filled aData and bData ["
1312 << (iAB + iPair) <<
"]"
1313 <<
"\n HfRingEtSums collection has no space to be written"
1319 for (
int i = 0;
i < nHfRingEtSums; ++
i) {
1322 if (iHf < hfPerWord) {
1340 if (iHf < hfPerWord) {
1358 iHf = nHfRingEtSums%hfPerWord;
1365 psbWordValue.
setAData(aDataVal, iAB + iPair);
1366 psbWordValue.
setBData(bDataVal, iAB + iPair);
1375 if (aDataFlag && bDataFlag) {
1377 <<
"\n aData and bData ["
1378 << (iAB + iPair) <<
"] full"
1379 <<
"\n HfRingEtSums collection has not enough space to be written"
1401 gtDaqReadoutRecord->setGtPsbWord(psbWordValue);
1441 <<
"\nL1GlobalTrigger: GCT data [hex] received by PSBs for BxInEvent = "
1442 << iBxInEvent <<
"\n" << std::endl;
1444 std::vector<const L1GctCand*>::const_iterator iterConst;
1446 LogTrace(
"L1GlobalTrigger") <<
" GCT NoIsoEG " << std::endl;
1451 <<
"Rank = " << (*iterConst)->rank()
1452 <<
" Eta index = " << (*iterConst)->etaIndex()
1453 <<
" Phi index = " << (*iterConst)->phiIndex()
1458 LogTrace(
"L1GlobalTrigger") <<
" GCT IsoEG " << std::endl;
1462 <<
"Rank = " << (*iterConst)->rank()
1463 <<
" Eta index = " << (*iterConst)->etaIndex()
1464 <<
" Phi index = " << (*iterConst)->phiIndex()
1469 LogTrace(
"L1GlobalTrigger") <<
" GCT CenJet " << std::endl;
1473 <<
"Rank = " << (*iterConst)->rank()
1474 <<
" Eta index = " << (*iterConst)->etaIndex()
1475 <<
" Phi index = " << (*iterConst)->phiIndex()
1480 LogTrace(
"L1GlobalTrigger") <<
" GCT ForJet " << std::endl;
1484 <<
"Rank = " << (*iterConst)->rank()
1485 <<
" Eta index = " << (*iterConst)->etaIndex()
1486 <<
" Phi index = " << (*iterConst)->phiIndex()
1491 LogTrace(
"L1GlobalTrigger") <<
" GCT TauJet " << std::endl;
1495 <<
"Rank = " << (*iterConst)->rank()
1496 <<
" Eta index = " << (*iterConst)->etaIndex()
1497 <<
" Phi index = " << (*iterConst)->phiIndex()
1502 LogTrace(
"L1GlobalTrigger") <<
" GCT ETM " << std::endl;
1517 LogTrace(
"L1GlobalTrigger") <<
" GCT ETT " << std::endl;
1526 LogTrace(
"L1GlobalTrigger") <<
" GCT HTT " << std::endl;
1535 LogTrace(
"L1GlobalTrigger") <<
" GCT HTM " << std::endl;
1550 LogTrace(
"L1GlobalTrigger") <<
" GCT JetCounts " << std::endl;
1552 LogTrace(
"L1GlobalTrigger") << (*m_candJetCounts) << std::endl;
1555 LogTrace(
"L1GlobalTrigger") <<
" GCT HfBitCounts " << std::endl;
1557 LogTrace(
"L1GlobalTrigger") << (*m_candHfBitCounts) << std::endl;
1560 LogTrace(
"L1GlobalTrigger") <<
" GCT HfRingEtSums " << std::endl;
1562 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< const L1GctCand * > * m_candL1TauJet
Level-1 Trigger jet candidate.
int bunchCrossing() const
void setBData(cms_uint16_t bDataVal, int iB)
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
std::vector< const L1GctCand * > * m_candL1ForJet
Level-1 Trigger EM candidate at output of GCT.
uint16_t bitCount(unsigned const i) const
const L1GctHFBitCounts * m_candHfBitCounts
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
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
const std::string gtTechnicalTriggerName() const
get / set technical trigger name, bit number, bunch cross in the GT event record and result ...
void printGctObjectData(const int iBxInEvent) const
print Global Calorimeter Trigger data
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
unsigned et() const
get the magnitude
uint16_t raw() const
get the data
const L1GctEtTotal * m_candETT
ABC for GCT EM and jet candidates.
void setLocalBxNr(cms_uint16_t localBxNrValue)
uint16_t etSum(unsigned const i) const
static unsigned nCounts()
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, std::auto_ptr< L1GlobalTriggerReadoutRecord > >DaqReadoutRecord)
fill the content of active PSB boards
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)
std::vector< const L1GctCand * > * m_candL1NoIsoEG
std::vector< const L1GctCand * > * m_candL1CenJet
unsigned phi() const
get the Et
std::vector< const L1GctCand * > * m_candL1IsoEG