Skip to content

Commit 721adb3

Browse files
authored
Merge pull request #48142 from missirol/devel_l1tCICADAScoreBXInfoInL1uGT
use BX info in L1-uGT emulation of CICADA conditions
2 parents 5c35891 + 0155f31 commit 721adb3

File tree

3 files changed

+36
-32
lines changed

3 files changed

+36
-32
lines changed

L1Trigger/L1TGlobal/interface/GlobalBoard.h

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,8 @@ namespace l1t {
174174
/// pointer to External data list
175175
inline const BXVector<const GlobalExtBlk*>* getCandL1External() const { return m_candL1External; }
176176

177-
inline const float getCICADAScore() const { return m_cicadaScore; }
177+
/// pointer to CICADA-score data list
178+
inline const BXVector<float>* getCandL1CICADAScore() const { return m_candL1CICADAScore; }
178179

179180
/* Drop individual EtSums for Now
180181
/// pointer to ETM data list
@@ -208,8 +209,6 @@ namespace l1t {
208209
void setResetPSCountersEachLumiSec(bool val) { m_resetPSCountersEachLumiSec = val; }
209210
void setSemiRandomInitialPSCounters(bool val) { m_semiRandomInitialPSCounters = val; }
210211

211-
void setCICADAScore(float val) { m_cicadaScore = val; }
212-
213212
public:
214213
inline void setVerbosity(const int verbosity) { m_verbosity = verbosity; }
215214

@@ -224,6 +223,7 @@ namespace l1t {
224223
BXVector<const l1t::EtSum*>* m_candL1EtSum;
225224
BXVector<const l1t::EtSum*>* m_candL1EtSumZdc;
226225
BXVector<const GlobalExtBlk*>* m_candL1External;
226+
BXVector<float>* m_candL1CICADAScore;
227227

228228
// BXVector<const l1t::EtSum*>* m_candETM;
229229
// BXVector<const l1t::EtSum*>* m_candETT;
@@ -233,8 +233,6 @@ namespace l1t {
233233
int m_bxFirst_;
234234
int m_bxLast_;
235235

236-
float m_cicadaScore = 0.0;
237-
238236
std::bitset<GlobalAlgBlk::maxPhysicsTriggers> m_gtlAlgorithmOR;
239237
std::bitset<GlobalAlgBlk::maxPhysicsTriggers> m_gtlDecisionWord;
240238

L1Trigger/L1TGlobal/src/CICADACondition.cc

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,22 +40,24 @@ l1t::CICADACondition& l1t::CICADACondition::operator=(const l1t::CICADACondition
4040
}
4141

4242
const bool l1t::CICADACondition::evaluateCondition(const int bxEval) const {
43-
bool condResult = false;
44-
const float cicadaScore = m_uGtB->getCICADAScore();
43+
auto const* cicadaScoreBXVec = m_uGtB->getCandL1CICADAScore();
44+
45+
int const useBx = bxEval + m_gtCICADATemplate->condRelativeBx();
46+
47+
if (cicadaScoreBXVec->isEmpty(useBx)) {
48+
return false;
49+
}
50+
51+
float const cicadaScore = cicadaScoreBXVec->at(useBx, 0);
4552

4653
// This gets rid of a GT emulator convention "iCondition".
4754
// This usually indexes the next line, which is somewhat concerning
4855
// AXOL1TL operates this way, but it should be checked
4956
const CICADATemplate::ObjectParameter objPar = (*(m_gtCICADATemplate->objectParameter()))[0];
5057

51-
bool condGEqVal = m_gtCICADATemplate->condGEq();
52-
bool passCondition = false;
53-
54-
passCondition = checkCut(objPar.minCICADAThreshold, cicadaScore, condGEqVal);
55-
56-
condResult |= passCondition;
58+
bool const condGEqVal = m_gtCICADATemplate->condGEq();
5759

58-
return condResult;
60+
return checkCut(objPar.minCICADAThreshold, cicadaScore, condGEqVal);
5961
}
6062

6163
void l1t::CICADACondition::print(std::ostream& myCout) const {

L1Trigger/L1TGlobal/src/GlobalBoard.cc

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -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") << "\nWarning: Input tag for the CICADA score"
346-
<< "\nrequested in configuration, but not found in the event.\n"
347-
<< "\nSetting 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-
<< "\nWarning: CICADA score had a valid input tag, but an empty BX collection"
354-
<< "\nThe CICADA score will be filled with 0.0 to prevent any failure of uGT emulation";
349+
edm::LogWarning("L1TGlobal") << "\nWarning: Input tag for the CICADA-score collection"
350+
<< "\nrequested 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

11951199
void l1t::GlobalBoard::resetExternal() {

0 commit comments

Comments
 (0)