77 {
78
79
80 SG::ReadHandle<TrigConf::L1Menu> l1Menu (
m_l1MenuKey);
81
82 const TrigConf::L1ThrExtraInfo_jTAU & thr_jTAU = l1Menu->thrExtraInfo().jTAU();
83 const TrigConf::L1ThrExtraInfo_jJ & thr_jJ = l1Menu->thrExtraInfo().jJ();
84 const TrigConf::L1ThrExtraInfo_jLJ & thr_jLJ = l1Menu->thrExtraInfo().jLJ();
85 const TrigConf::L1ThrExtraInfo_jTE & thr_jTE = l1Menu->thrExtraInfo().jTE();
86 const TrigConf::L1ThrExtraInfo_jXE & thr_jXE = l1Menu->thrExtraInfo().jXE();
87
89 if(!jTowerContainer.isValid()) {
91 return StatusCode::FAILURE;
92 }
93
98 }
99 else {
101 }
102
103
105
106
108
109
112
116 std::vector<int> pileup_ID;
117 std::vector<int> pileup_HAD_jet;
118 std::vector<int> pileup_EM_jet;
119 std::vector<int> pileup_Total_jet;
120 std::vector<int> pileup_HAD_met;
121 std::vector<int> pileup_EM_met;
122 std::vector<int> pileup_Total_met;
124 {
125 pileup_ID.push_back(key);
126 pileup_HAD_jet.push_back(val[0]);
128 pileup_Total_jet.push_back(map_Etvalues_FPGA[key][0]);
129 pileup_HAD_met.push_back(val[1]);
131 pileup_Total_met.push_back(map_Etvalues_FPGA[key][1]);
132 }
133
134
135 inputOutputCollection->addValue_pileup(
"pileup_FPGAid",
m_id);
136 inputOutputCollection->addValue_pileup(
"pileup_jFEXid",
m_jfexid);
137 inputOutputCollection->addValue_pileup("pileup_rho_EM", pileup_rho[0]);
138 inputOutputCollection->addValue_pileup("pileup_rho_HAD1", pileup_rho[1]);
139 inputOutputCollection->addValue_pileup("pileup_rho_HAD2", pileup_rho[2]);
140 inputOutputCollection->addValue_pileup("pileup_rho_HAD3", pileup_rho[3]);
141 inputOutputCollection->addValue_pileup("pileup_rho_FCAL", pileup_rho[4]);
142 inputOutputCollection->addValue_pileup("pileup_map_ID" , std::move(pileup_ID));
143 inputOutputCollection->addValue_pileup("pileup_map_Et_values_HAD_jet" , std::move(pileup_HAD_jet));
144 inputOutputCollection->addValue_pileup("pileup_map_Et_values_EM_jet" , std::move(pileup_EM_jet));
145 inputOutputCollection->addValue_pileup("pileup_map_Et_values_Total_jet", std::move(pileup_Total_jet));
146 inputOutputCollection->addValue_pileup("pileup_map_Et_values_HAD_met" , std::move(pileup_HAD_met));
147 inputOutputCollection->addValue_pileup("pileup_map_Et_values_EM_met" , std::move(pileup_EM_met));
148 inputOutputCollection->addValue_pileup("pileup_map_Et_values_Total_met", std::move(pileup_Total_met));
149 inputOutputCollection->fill_pileup();
150
156
159
161
162 std::unique_ptr<jFEXTOB> jXE_tob = std::make_unique<jFEXTOB>();
164
165 std::unique_ptr<jFEXTOB> jTE_tob = std::make_unique<jFEXTOB>();
167
168
169 int hemisphere =
m_id == 0 ? 1 : -1;
170
172
173
176
177
180 }
182
186 for(int mphi = 0; mphi <= max_phi_it; mphi++) {
187 for(int meta = 0; meta <= max_eta_it; meta++) {
189 }
190 }
191
194
195
198 }
200
201
204
205
208 }
209
213
214 std::tuple<int,bool> jTElow;
215 std::tuple<int,bool> jTEhigh;
216
217
221 }
222 else{
225 }
226
230 }
231
232
233 ATH_MSG_DEBUG(
"================ Central Algorithms ================");
234
236
237
238
243
246
247
248 int TT_seed_ID[3][3]= {{0}};
249 int TT_First_ETring[36]= {0};
250 int First_ETring_it = 0;
251
252 int Jet_SearchWindow[7][7] = {{0}};
253 int Jet_SearchWindowDisplaced[7][7] = {{0}};
254 int largeRCluster_IDs[15][15]= {{0}};
255
256
257 for(
int i = -7;
i< 8;
i++ ) {
258 for(
int j = -7;
j< 8;
j++) {
259
260 if(std::abs(i)<4 && std::abs(j)<4) {
263 }
264
265 uint deltaR = std::sqrt(std::pow(i,2)+std::pow(j,2));
266
269 }
272 ++First_ETring_it;
273
274 }
277 }
278 }
279 }
280
281
287
289
290 if(is_Jet_LM) {
291
292
296
299
300 int meta_LM = meta;
301 int mphi_LM = mphi;
302
303
304
306
307 std::unique_ptr<jFEXTOB> jJ_tob = std::make_unique<jFEXTOB>();
309 if ( SRJet_tobword != 0 ){
311 }
312
313
319
320 std::unique_ptr <jFEXTOB> jLJ_tob = std::make_unique<jFEXTOB>();
324 }
325 }
326
327
331
332
333 if ( is_tau_LocalMax ) {
334
335
337
338
340
341 std::unique_ptr<jFEXTOB> jTau_tob = std::make_unique<jFEXTOB>();
343
344 if ( jTau_tobword != 0 ){
346 }
347 }
348 }
349 }
350 }
351
352
354
355
360
361 std::unordered_map<int, jFEXForwardJetsInfo> FCALJets =
m_jFEXForwardJetsAlgoTool->calculateJetETs(srJet_seedThresholdMeV);
362 for(std::unordered_map<int, jFEXForwardJetsInfo>::iterator it = FCALJets.begin(); it!=FCALJets.end(); ++it) {
363
365 jFEXForwardJetsInfo FCALJets =
it->second;
366
367 int iphi = FCALJets.getCentreLocalTTPhi();
368 int ieta = FCALJets.getCentreLocalTTEta();
369 int SRJetET = FCALJets.getSeedET() + FCALJets.getFirstEnergyRingET();
370 int LRJetET = SRJetET + FCALJets.getSecondEnergyRingET();
371 int seedET = FCALJets.getSeedET();
372
373 bool SRJ_sat = FCALJets.getSRjetSat();
374
376
377 std::unique_ptr<jFEXTOB> jJ_tob = std::make_unique<jFEXTOB>();
379
380 if ( SRFCAL_Jet_tobword != 0 ){
382 }
383
385 bool LRJ_sat = FCALJets.getLRjetSat();
387
388 std::unique_ptr<jFEXTOB> jLJ_tob = std::make_unique<jFEXTOB>();
390 if ( LRFCAL_Jet_tobword != 0 )
m_LRJet_tobwords.push_back(std::move(jLJ_tob));
391 }
392
393 }
394
400
402 SG::ReadHandle<TrigConf::L1Menu> l1Menu (
m_l1MenuKey);
403 const TrigConf::L1ThrExtraInfo_jEM & thr_jEM = l1Menu->thrExtraInfo().jEM();
407
408 std::vector<int> Ciso;
409 std::vector<int> Chad1;
410 std::vector<int> Chad2;
411
412 for(std::unordered_map<uint, jFEXForwardElecInfo>::iterator itel = ForwardElecs.begin(); itel!=ForwardElecs.end(); ++itel) {
414 jFEXForwardElecInfo elCluster = itel->second;
415 uint meta = elCluster.getCoreIeta();
416
417
421 Ciso.clear();
422 Chad1.clear();
423 Chad2.clear();
424 Ciso.push_back(wp_loose.iso_fw());
425 Ciso.push_back(wp_medium.iso_fw());
426 Ciso.push_back(wp_tight.iso_fw());
427 Chad1.push_back(wp_loose.frac_fw());
428 Chad1.push_back(wp_medium.frac_fw());
429 Chad1.push_back(wp_tight.frac_fw());
430 Chad2.push_back(wp_loose.frac2_fw());
431 Chad2.push_back(wp_medium.frac2_fw());
432 Chad2.push_back(wp_tight.frac2_fw());
433 int Cval[9] = {Ciso[0], Ciso[1], Ciso[2], Chad1[0], Chad1[1], Chad1[2], Chad2[0], Chad2[1], Chad2[2]};
434
435 elCluster.setup(Cval,jFEXETResolution);
436 elCluster.calcFwdElEDM();
437
438 uint etEM = elCluster.getEt();
439 uint32_t FwdEl_tobword = elCluster.getTobWord();
440
441
442 std::vector<uint32_t> FwdEltob_aux{FwdEl_tobword,TTID};
443 if ( FwdEl_tobword != 0 && etEM>minEtThreshold)
m_FwdEl_tobwords.push_back(std::move(FwdEltob_aux));
444 }
445
446
448 int max_meta=17;
449
454 }
455 }
456
457 }
459
460
462 for(
int j=4;
j<17;
j++) {
464 }
465 }
466 }
467 ATH_MSG_DEBUG(
"============================ jFEXtauAlgo ============================");
470 for(int mphi = 8; mphi < 24; mphi++) {
471 for(int meta = 8; meta < max_meta; meta++) {
472
473 bool is_tau_LocalMax =
m_jFEXtauAlgoTool->isSeedLocalMaxima_fwd(jTowersIDs[mphi][meta]);
474
475
476 if ( is_tau_LocalMax ) {
477
479
480 std::unique_ptr<jFEXTOB> jTau_tob = std::make_unique<jFEXTOB>();
482 if ( jTau_tobword != 0 ){
484 }
485 }
486 }
487 }
488 }
489 return StatusCode::SUCCESS;
490}
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::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::vector< std::unique_ptr< jFEXTOB > > m_Met_tobwords
std::vector< std::unique_ptr< jFEXTOB > > m_LRJet_tobwords
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