@@ -75,6 +75,7 @@ l1t::GlobalBoard::GlobalBoard()
7575 m_candL1EtSum(new BXVector<const l1t::EtSum*>),
7676 m_candL1EtSumZdc(new BXVector<const l1t::EtSum*>),
7777 m_candL1External(new BXVector<const GlobalExtBlk*>),
78+ m_candL1CICADAScore(new BXVector<float >),
7879 m_currentLumi(0 ),
7980 m_isDebugEnabled(edm::isDebugEnabled()) {
8081 m_uGtAlgBlk.reset ();
@@ -98,6 +99,7 @@ l1t::GlobalBoard::~GlobalBoard() {
9899 delete m_candL1EtSum;
99100 delete m_candL1EtSumZdc;
100101 delete m_candL1External;
102+ delete m_candL1CICADAScore;
101103}
102104
103105// Operations
@@ -124,6 +126,7 @@ void l1t::GlobalBoard::init(const int numberPhysTriggers,
124126 m_candL1EtSum->setBXRange (m_bxFirst_, m_bxLast_);
125127 m_candL1EtSumZdc->setBXRange (m_bxFirst_, m_bxLast_);
126128 m_candL1External->setBXRange (m_bxFirst_, m_bxLast_);
129+ m_candL1CICADAScore->setBXRange (m_bxFirst_, m_bxLast_);
127130
128131 m_uGtAlgBlk.reset ();
129132
@@ -338,26 +341,26 @@ void l1t::GlobalBoard::receiveCaloObjectData(const edm::Event& iEvent,
338341 }
339342 }
340343 if (receiveCICADA) {
341- edm::Handle<BXVector<float >> cicadaScoreHandle;
342- iEvent.getByToken (CICADAInputToken, cicadaScoreHandle);
343- if (not cicadaScoreHandle.isValid ()) {
344- if (m_verbosity) {
345- edm::LogWarning (" L1Tglobal" ) << " \n Warning: Input tag for the CICADA score"
346- << " \n requested in configuration, but not found in the event.\n "
347- << " \n Setting score to 0.0" ;
348- }
349- setCICADAScore (0.0 );
350- } else if (cicadaScoreHandle->isEmpty (0 )) {
344+ edm::Handle<BXVector<float >> cicadaScoreData;
345+ iEvent.getByToken (CICADAInputToken, cicadaScoreData);
346+
347+ if (!cicadaScoreData.isValid ()) {
351348 if (m_verbosity) {
352- edm::LogWarning (" L1Tglobal" )
353- << " \n Warning: CICADA score had a valid input tag, but an empty BX collection"
354- << " \n The CICADA score will be filled with 0.0 to prevent any failure of uGT emulation" ;
349+ edm::LogWarning (" L1TGlobal" ) << " \n Warning: Input tag for the CICADA-score collection"
350+ << " \n requested in configuration, but not found in the event.\n " ;
355351 }
356- setCICADAScore (0.0 );
357352 } else {
358- setCICADAScore (cicadaScoreHandle->at (
359- 0 ,
360- 0 )); // CICADA emulation will only provide a central BX, and one value. Unpacking may have more values, but that can't be guaranteed.
353+ for (int i = cicadaScoreData->getFirstBX (); i <= cicadaScoreData->getLastBX (); ++i) {
354+ // Prevent from pushing back bx that is outside of allowed range
355+ if (i < m_bxFirst_ || i > m_bxLast_)
356+ continue ;
357+
358+ for (std::vector<float >::const_iterator cicadaScore = cicadaScoreData->begin (i);
359+ cicadaScore != cicadaScoreData->end (i);
360+ ++cicadaScore) {
361+ m_candL1CICADAScore->push_back (i, *cicadaScore);
362+ }
363+ } // end loop over Bx
361364 }
362365 }
363366}
@@ -1183,13 +1186,14 @@ void l1t::GlobalBoard::resetCalo() {
11831186 m_candL1Jet->clear ();
11841187 m_candL1EtSum->clear ();
11851188 m_candL1EtSumZdc->clear ();
1186- m_cicadaScore = 0.0 ;
1189+ m_candL1CICADAScore-> clear () ;
11871190
11881191 m_candL1EG->setBXRange (m_bxFirst_, m_bxLast_);
11891192 m_candL1Tau->setBXRange (m_bxFirst_, m_bxLast_);
11901193 m_candL1Jet->setBXRange (m_bxFirst_, m_bxLast_);
11911194 m_candL1EtSum->setBXRange (m_bxFirst_, m_bxLast_);
11921195 m_candL1EtSumZdc->setBXRange (m_bxFirst_, m_bxLast_);
1196+ m_candL1CICADAScore->setBXRange (m_bxFirst_, m_bxLast_);
11931197}
11941198
11951199void l1t::GlobalBoard::resetExternal () {
0 commit comments