78 {
79
80
81 SG::ReadHandle<TrigConf::L1Menu> l1Menu (
m_l1MenuKey);
82
83 const TrigConf::L1ThrExtraInfo_jTAU & thr_jTAU = l1Menu->thrExtraInfo().jTAU();
84 const TrigConf::L1ThrExtraInfo_jJ & thr_jJ = l1Menu->thrExtraInfo().jJ();
85 const TrigConf::L1ThrExtraInfo_jLJ & thr_jLJ = l1Menu->thrExtraInfo().jLJ();
86 const TrigConf::L1ThrExtraInfo_jTE & thr_jTE = l1Menu->thrExtraInfo().jTE();
87 const TrigConf::L1ThrExtraInfo_jXE & thr_jXE = l1Menu->thrExtraInfo().jXE();
88
90 if(!jTowerContainer.isValid()) {
92 return StatusCode::FAILURE;
93 }
94
99 }
100 else {
102 }
103
104
106
107
109
110
113
117 std::vector<int> pileup_ID;
118 std::vector<int> pileup_HAD_jet;
119 std::vector<int> pileup_EM_jet;
120 std::vector<int> pileup_Total_jet;
121 std::vector<int> pileup_HAD_met;
122 std::vector<int> pileup_EM_met;
123 std::vector<int> pileup_Total_met;
125 {
126 pileup_ID.push_back(key);
127 pileup_HAD_jet.push_back(val[0]);
130 pileup_HAD_met.push_back(val[1]);
133 }
134
135
136 inputOutputCollection->addValue_pileup(
"pileup_FPGAid",
m_id);
137 inputOutputCollection->addValue_pileup(
"pileup_jFEXid",
m_jfexid);
138 inputOutputCollection->addValue_pileup("pileup_rho_EM", pileup_rho[0]);
139 inputOutputCollection->addValue_pileup("pileup_rho_HAD1", pileup_rho[1]);
140 inputOutputCollection->addValue_pileup("pileup_rho_HAD2", pileup_rho[2]);
141 inputOutputCollection->addValue_pileup("pileup_rho_HAD3", pileup_rho[3]);
142 inputOutputCollection->addValue_pileup("pileup_rho_FCAL", pileup_rho[4]);
143 inputOutputCollection->addValue_pileup("pileup_map_ID" , std::move(pileup_ID));
144 inputOutputCollection->addValue_pileup("pileup_map_Et_values_HAD_jet" , std::move(pileup_HAD_jet));
145 inputOutputCollection->addValue_pileup("pileup_map_Et_values_EM_jet" , std::move(pileup_EM_jet));
146 inputOutputCollection->addValue_pileup("pileup_map_Et_values_Total_jet", std::move(pileup_Total_jet));
147 inputOutputCollection->addValue_pileup("pileup_map_Et_values_HAD_met" , std::move(pileup_HAD_met));
148 inputOutputCollection->addValue_pileup("pileup_map_Et_values_EM_met" , std::move(pileup_EM_met));
149 inputOutputCollection->addValue_pileup("pileup_map_Et_values_Total_met", std::move(pileup_Total_met));
150 inputOutputCollection->fill_pileup();
151
157
160
162
163 std::unique_ptr<jFEXTOB> jXE_tob = std::make_unique<jFEXTOB>();
165
166 std::unique_ptr<jFEXTOB> jTE_tob = std::make_unique<jFEXTOB>();
168
169
170 int hemisphere =
m_id == 0 ? 1 : -1;
171
173
174
177
178
181 }
183
187 for(int mphi = 0; mphi <= max_phi_it; mphi++) {
188 for(int meta = 0; meta <= max_eta_it; meta++) {
190 }
191 }
192
195
196
199 }
201
202
205
206
209 }
210
214
215 std::tuple<int,bool> jTElow;
216 std::tuple<int,bool> jTEhigh;
217
218
222 }
223 else{
226 }
227
231 }
232
233
234 ATH_MSG_DEBUG(
"================ Central Algorithms ================");
235
237
238
239
244
247
248
249 int TT_seed_ID[3][3]= {{0}};
250 int TT_First_ETring[36]= {0};
251 int First_ETring_it = 0;
252
253 int Jet_SearchWindow[7][7] = {{0}};
254 int Jet_SearchWindowDisplaced[7][7] = {{0}};
255 int largeRCluster_IDs[15][15]= {{0}};
256
257
258 for(
int i = -7;
i< 8;
i++ ) {
259 for(int j = -7; j< 8; j++) {
260
261 if(std::abs(i)<4 && std::abs(j)<4) {
264 }
265
266 uint deltaR = std::sqrt(std::pow(i,2)+std::pow(j,2));
267
270 }
273 ++First_ETring_it;
274
275 }
278 }
279 }
280 }
281
282
288
290
291 if(is_Jet_LM) {
292
293
297
300
301 int meta_LM = meta;
302 int mphi_LM = mphi;
303
304
305
307
308 std::unique_ptr<jFEXTOB> jJ_tob = std::make_unique<jFEXTOB>();
310 if ( SRJet_tobword != 0 ){
312 }
313
314
320
321 std::unique_ptr <jFEXTOB> jLJ_tob = std::make_unique<jFEXTOB>();
325 }
326 }
327
328
332
333
334 if ( is_tau_LocalMax ) {
335
336
338
339
341
342 std::unique_ptr<jFEXTOB> jTau_tob = std::make_unique<jFEXTOB>();
344
345 if ( jTau_tobword != 0 ){
347 }
348 }
349 }
350 }
351 }
352
353
355
356
361
363 for(std::unordered_map<int, jFEXForwardJetsInfo>::iterator it =
m_FCALJets.begin(); it!=(
m_FCALJets.end()); ++it) {
364
366 jFEXForwardJetsInfo FCALJets =
it->second;
367
368 int iphi = FCALJets.getCentreLocalTTPhi();
369 int ieta = FCALJets.getCentreLocalTTEta();
370 m_SRJetET = FCALJets.getSeedET() + FCALJets.getFirstEnergyRingET();
372 int seedET = FCALJets.getSeedET();
373
374 bool SRJ_sat = FCALJets.getSRjetSat();
375
377
378 std::unique_ptr<jFEXTOB> jJ_tob = std::make_unique<jFEXTOB>();
380
381 if ( SRFCAL_Jet_tobword != 0 ){
383 }
384
386 bool LRJ_sat = FCALJets.getLRjetSat();
388
389 std::unique_ptr<jFEXTOB> jLJ_tob = std::make_unique<jFEXTOB>();
391 if ( LRFCAL_Jet_tobword != 0 )
m_LRJet_tobwords.push_back(std::move(jLJ_tob));
392 }
393
394 }
395
401
403 SG::ReadHandle<TrigConf::L1Menu> l1Menu (
m_l1MenuKey);
404 const TrigConf::L1ThrExtraInfo_jEM & thr_jEM = l1Menu->thrExtraInfo().jEM();
408
409 std::vector<int> Ciso;
410 std::vector<int> Chad1;
411 std::vector<int> Chad2;
412
415 jFEXForwardElecInfo elCluster = itel->second;
416 uint meta = elCluster.getCoreIeta();
417
418
422 Ciso.clear();
423 Chad1.clear();
424 Chad2.clear();
425 Ciso.push_back(wp_loose.iso_fw());
426 Ciso.push_back(wp_medium.iso_fw());
427 Ciso.push_back(wp_tight.iso_fw());
428 Chad1.push_back(wp_loose.frac_fw());
429 Chad1.push_back(wp_medium.frac_fw());
430 Chad1.push_back(wp_tight.frac_fw());
431 Chad2.push_back(wp_loose.frac2_fw());
432 Chad2.push_back(wp_medium.frac2_fw());
433 Chad2.push_back(wp_tight.frac2_fw());
434 int Cval[9] = {Ciso[0], Ciso[1], Ciso[2], Chad1[0], Chad1[1], Chad1[2], Chad2[0], Chad2[1], Chad2[2]};
435
436 elCluster.setup(Cval,jFEXETResolution);
437 elCluster.calcFwdElEDM();
438
439 uint etEM = elCluster.getEt();
440 uint32_t FwdEl_tobword = elCluster.getTobWord();
441
442
443 std::vector<uint32_t> FwdEltob_aux{FwdEl_tobword,TTID};
444 if ( FwdEl_tobword != 0 && etEM>minEtThreshold)
m_FwdEl_tobwords.push_back(std::move(FwdEltob_aux));
445 }
446
447
449 int max_meta=17;
450
455 }
456 }
457
458 }
460
461
463 for(int j=4; j<17; j++) {
465 }
466 }
467 }
468 ATH_MSG_DEBUG(
"============================ jFEXtauAlgo ============================");
471 for(int mphi = 8; mphi < 24; mphi++) {
472 for(int meta = 8; meta < max_meta; meta++) {
473
474 bool is_tau_LocalMax =
m_jFEXtauAlgoTool->isSeedLocalMaxima_fwd(jTowersIDs[mphi][meta]);
475
476
477 if ( is_tau_LocalMax ) {
478
480
481 std::unique_ptr<jFEXTOB> jTau_tob = std::make_unique<jFEXTOB>();
483 if ( jTau_tobword != 0 ){
485 }
486 }
487 }
488 }
489 }
490 return StatusCode::SUCCESS;
491}
Scalar deltaR(const MatrixBase< Derived > &vec) const
#define ATH_CHECK
Evaluate an expression and check for errors.
static constexpr int jFEX_wide_algoSpace_width
static constexpr int jFEX_thin_algoSpace_width
static constexpr int jFEX_algoSpace_height
std::vector< std::vector< uint32_t > > m_FwdEl_tobwords
ToolHandle< IjFEXSmallRJetAlgo > m_jFEXSmallRJetAlgoTool
std::unordered_map< int, std::vector< int > > m_map_Etvalues_FPGA
std::string m_jfex_string[6]
std::unordered_map< int, std::vector< int > > m_map_EM_Etvalues_FPGA
ToolHandle< IjFEXPileupAndNoise > m_jFEXPileupAndNoiseTool
ToolHandle< IjFEXForwardJetsAlgo > m_jFEXForwardJetsAlgoTool
ToolHandle< IjFEXmetAlgo > m_jFEXmetAlgoTool
std::vector< std::unique_ptr< jFEXTOB > > m_tau_tobwords
SG::ReadHandleKey< TrigConf::L1Menu > m_l1MenuKey
std::unordered_map< int, std::vector< int > > m_map_HAD_Etvalues_FPGA
int m_jTowersIDs_Thin[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_thin_algoSpace_width]
ToolHandle< IjFEXFormTOBs > m_IjFEXFormTOBsTool
std::vector< std::unique_ptr< jFEXTOB > > m_sumET_tobwords
std::vector< std::unique_ptr< jFEXTOB > > m_SRJet_tobwords
ToolHandle< IjFEXsumETAlgo > m_jFEXsumETAlgoTool
ToolHandle< IjFEXtauAlgo > m_jFEXtauAlgoTool
std::unordered_map< int, jFEXForwardJetsInfo > m_FCALJets
std::vector< std::unique_ptr< jFEXTOB > > m_Met_tobwords
std::vector< std::unique_ptr< jFEXTOB > > m_LRJet_tobwords
std::unordered_map< uint, jFEXForwardElecInfo > m_ForwardElecs
SG::ReadHandleKey< LVL1::jTowerContainer > m_jTowerContainerKey
ToolHandle< IjFEXLargeRJetAlgo > m_jFEXLargeRJetAlgoTool
int m_jTowersIDs_Wide[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width]
ToolHandle< IjFEXForwardElecAlgo > m_jFEXForwardElecAlgoTool