ATLAS Offline Software
jFEXFPGA.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 //***************************************************************************
6 // jFEXFPGA - description
7 // -------------------
8 // begin : 19 10 2020
9 // email : jacob.julian.kempster@cern.ch
10 // ***************************************************************************/
11 
12 #include "L1CaloFEXSim/jFEXFPGA.h"
13 #include "L1CaloFEXSim/jTower.h"
26 #include "L1CaloFEXSim/jFEXTOB.h"
27 
28 
29 namespace LVL1 {
30 
31  // default constructor for persistency
32 
33 jFEXFPGA::jFEXFPGA(const std::string& type,const std::string& name,const IInterface* parent): AthAlgTool(type,name,parent) {
34  declareInterface<IjFEXFPGA>(this);
35 }
36 
39 {
40 }
41 
42 //================ Initialisation =================================================
43 
45 
48  ATH_CHECK(m_jFEXtauAlgoTool.retrieve());
49  return StatusCode::SUCCESS;
50 }
51 
52 StatusCode jFEXFPGA::init(int id, int jfexid) {
53  m_id = id;
54  m_jfexid = jfexid;
55 
56  return StatusCode::SUCCESS;
57 
58 }
59 
61 
62  m_id = -1;
63  m_jfexid = -1;
64  m_tau_tobwords.clear();
65  m_SRJet_tobwords.clear();
66  m_LRJet_tobwords.clear();
67  m_sumET_tobwords.clear();
68  m_Met_tobwords.clear();
69  m_map_Etvalues_FPGA.clear();
70  m_map_EM_Etvalues_FPGA.clear();
72  m_FwdEl_tobwords.clear();
73 }
74 
75 StatusCode jFEXFPGA::execute(jFEXOutputCollection* inputOutputCollection, const std::pair<unsigned int, const std::vector<int>&> & jetCalibrationParameters) {
76 
77  // Retrieve the L1 menu configuration
79 
80  const TrigConf::L1ThrExtraInfo_jTAU & thr_jTAU = l1Menu->thrExtraInfo().jTAU();
81  const TrigConf::L1ThrExtraInfo_jJ & thr_jJ = l1Menu->thrExtraInfo().jJ();
82  const TrigConf::L1ThrExtraInfo_jLJ & thr_jLJ = l1Menu->thrExtraInfo().jLJ();
83  const TrigConf::L1ThrExtraInfo_jTE & thr_jTE = l1Menu->thrExtraInfo().jTE();
84  const TrigConf::L1ThrExtraInfo_jXE & thr_jXE = l1Menu->thrExtraInfo().jXE();
85 
87  if(!jTowerContainer.isValid()) {
88  ATH_MSG_ERROR("Could not retrieve container " << m_jTowerContainerKey.key() );
89  return StatusCode::FAILURE;
90  }
91 
92  ATH_CHECK( m_jFEXPileupAndNoiseTool->safetyTest());
94  if(m_jfexid == 0 || m_jfexid == 5) {
96  }
97  else {
99  }
100 
101  //Calculating and sustracting pileup
102  const std::vector<int> pileup_rho = m_jFEXPileupAndNoiseTool->CalculatePileup();
103 
104  //From the DB
105  ATH_CHECK(m_jFEXPileupAndNoiseTool->ApplyPileup());
106 
107  //Noise should be always applied
108  m_jFEXPileupAndNoiseTool->ApplyNoise2Jets(true);
109  m_jFEXPileupAndNoiseTool->ApplyNoise2Met(true);
110  //Getting the values
111  m_map_HAD_Etvalues_FPGA = m_jFEXPileupAndNoiseTool->Get_HAD_Et_values();
112  m_map_EM_Etvalues_FPGA = m_jFEXPileupAndNoiseTool->Get_EM_Et_values();
114  std::vector<int> pileup_ID;
115  std::vector<int> pileup_HAD_jet;
116  std::vector<int> pileup_EM_jet;
117  std::vector<int> pileup_Total_jet;
118  std::vector<int> pileup_HAD_met;
119  std::vector<int> pileup_EM_met;
120  std::vector<int> pileup_Total_met;
121  for (auto const& [key, val] : m_map_HAD_Etvalues_FPGA)
122  {
123  pileup_ID.push_back(key);
124  pileup_HAD_jet.push_back(val[0]);
125  pileup_EM_jet.push_back(m_map_EM_Etvalues_FPGA[key][0]);
126  pileup_Total_jet.push_back(m_map_Etvalues_FPGA[key][0]);
127  pileup_HAD_met.push_back(val[1]);
128  pileup_EM_met.push_back(m_map_EM_Etvalues_FPGA[key][1]);
129  pileup_Total_met.push_back(m_map_Etvalues_FPGA[key][1]);
130  }
131 
132  //saving pileup information
133  inputOutputCollection->addValue_pileup("pileup_FPGAid", m_id);
134  inputOutputCollection->addValue_pileup("pileup_jFEXid", m_jfexid);
135  inputOutputCollection->addValue_pileup("pileup_rho_EM", pileup_rho[0]);
136  inputOutputCollection->addValue_pileup("pileup_rho_HAD1", pileup_rho[1]);
137  inputOutputCollection->addValue_pileup("pileup_rho_HAD2", pileup_rho[2]);
138  inputOutputCollection->addValue_pileup("pileup_rho_HAD3", pileup_rho[3]);
139  inputOutputCollection->addValue_pileup("pileup_rho_FCAL", pileup_rho[4]);
140  inputOutputCollection->addValue_pileup("pileup_map_ID" , std::move(pileup_ID));
141  inputOutputCollection->addValue_pileup("pileup_map_Et_values_HAD_jet" , std::move(pileup_HAD_jet));
142  inputOutputCollection->addValue_pileup("pileup_map_Et_values_EM_jet" , std::move(pileup_EM_jet));
143  inputOutputCollection->addValue_pileup("pileup_map_Et_values_Total_jet", std::move(pileup_Total_jet));
144  inputOutputCollection->addValue_pileup("pileup_map_Et_values_HAD_met" , std::move(pileup_HAD_met));
145  inputOutputCollection->addValue_pileup("pileup_map_Et_values_EM_met" , std::move(pileup_EM_met));
146  inputOutputCollection->addValue_pileup("pileup_map_Et_values_Total_met", std::move(pileup_Total_met));
147  inputOutputCollection->fill_pileup();
148 
149  if(m_id==0 || m_id==3) {
150  ATH_CHECK( m_jFEXsumETAlgoTool->safetyTest());
151  ATH_CHECK( m_jFEXsumETAlgoTool->reset());
152  ATH_CHECK( m_jFEXmetAlgoTool->safetyTest());
153  ATH_CHECK( m_jFEXmetAlgoTool->reset());
154 
156  m_jFEXmetAlgoTool->setFPGAEnergy(m_map_Etvalues_FPGA);
157 
158  unsigned int bin_pos = thr_jTE.etaBoundary_fw(m_jfex_string[m_jfexid]);
159 
160  std::unique_ptr<jFEXTOB> jXE_tob = std::make_unique<jFEXTOB>();
161  uint32_t jXE_tobword = 0;
162 
163  std::unique_ptr<jFEXTOB> jTE_tob = std::make_unique<jFEXTOB>();
164  uint32_t jTE_tobword = 0;
165 
166 
167  int hemisphere = m_id == 0 ? 1 : -1;
168 
169  if(m_jfexid > 0 && m_jfexid < 5) {
170 
171  //-----------------jFEXsumETAlgo-----------------
173  m_jFEXsumETAlgoTool->buildBarrelSumET();
174 
175  //-----------------jFEXmetAlgo-----------------
176  m_jFEXmetAlgoTool->setup(m_jTowersIDs_Thin, hemisphere);
177  m_jFEXmetAlgoTool->buildBarrelmet();
178  }
179  else if(m_jfexid == 0 ) {
180 
182  int max_phi_it = FEXAlgoSpaceDefs::jFEX_algoSpace_height-1;
184  for(int mphi = 0; mphi <= max_phi_it; mphi++) {
185  for(int meta = 0; meta <= max_eta_it; meta++) {
186  flipped_jTowersIDs[mphi][meta]=m_jTowersIDs_Wide[mphi][max_eta_it-meta];
187  }
188  }
189  //-----------------jFEXsumETAlgo-----------------
190  m_jFEXsumETAlgoTool->setup(flipped_jTowersIDs);
191  m_jFEXsumETAlgoTool->buildFWDSumET();
192 
193  //-----------------jFEXmetAlgo-----------------
194  m_jFEXmetAlgoTool->setup(flipped_jTowersIDs, hemisphere);
195  m_jFEXmetAlgoTool->buildFWDmet();
196  }
197  else if(m_jfexid == 5) {
198 
199  //-----------------jFEXsumETAlgo-----------------
201  m_jFEXsumETAlgoTool->buildFWDSumET();
202 
203  //-----------------jFEXmetAlgo-----------------
204  m_jFEXmetAlgoTool->setup(m_jTowersIDs_Wide, hemisphere);
205  m_jFEXmetAlgoTool->buildFWDmet();
206  }
207 
208  jXE_tobword = m_IjFEXFormTOBsTool->formMetTOB(m_jFEXmetAlgoTool->GetMetXComponent(), m_jFEXmetAlgoTool->GetMetYComponent(),m_jFEXmetAlgoTool->getjXESat(),thr_jXE.resolutionMeV());
209  jXE_tob->initialize(m_id,m_jfexid,jXE_tobword,thr_jXE.resolutionMeV(),0);
210  m_Met_tobwords.push_back(std::move(jXE_tob));
211 
212  std::tuple<int,bool> jTElow;
213  std::tuple<int,bool> jTEhigh;
214 
215  // NOTE: Foward FPGA in the C-side is already flipped, however we still need to flip the jFEX module 1 and 2
216  if(m_jfexid == 1 || m_jfexid == 2){
217  jTElow = m_jFEXsumETAlgoTool->getETupperEta(bin_pos);
218  jTEhigh = m_jFEXsumETAlgoTool->getETlowerEta(bin_pos);
219  }
220  else{
221  jTElow = m_jFEXsumETAlgoTool->getETlowerEta(bin_pos);
222  jTEhigh = m_jFEXsumETAlgoTool->getETupperEta(bin_pos);
223  }
224 
225  jTE_tobword = m_IjFEXFormTOBsTool->formSumETTOB(jTElow,jTEhigh,thr_jTE.resolutionMeV());
226  jTE_tob->initialize(m_id,m_jfexid,jTE_tobword,thr_jTE.resolutionMeV(),0);
227  m_sumET_tobwords.push_back(std::move(jTE_tob));
228  }
229 
230  //-----------jFEXSmallRJet & Large R Jet Algo-----------------
231  ATH_MSG_DEBUG("================ Central Algorithms ================");
232 
233  int srJet_seedThresholdMeV = thr_jJ.seedThresholdMeV(m_jfex_string[m_jfexid]); //jFEX internal granularity, i.e., 25 MeV/count
234 
235 
236  //Central region algorithms
237  if(m_jfexid > 0 && m_jfexid < 5) {
240  m_jFEXtauAlgoTool->setFPGAEnergy(m_map_Etvalues_FPGA);
241 
242  for(int mphi = 8; mphi < FEXAlgoSpaceDefs::jFEX_algoSpace_height-8; mphi++) {
243  for(int meta = 8; meta < FEXAlgoSpaceDefs::jFEX_thin_algoSpace_width-8; meta++) {
244 
245  //definition of arrays
246  int TT_seed_ID[3][3]= {{0}};
247  int TT_First_ETring[36]= {0};
248  int First_ETring_it = 0;
249 
250  int Jet_SearchWindow[7][7] = {{0}};
251  int Jet_SearchWindowDisplaced[7][7] = {{0}};
252  int largeRCluster_IDs[15][15]= {{0}};
253 
254  //filling up array to send them to the algorithms
255  for(int i = -7; i< 8; i++ ) {
256  for(int j = -7; j< 8; j++) {
257 
258  if(std::abs(i)<4 && std::abs(j)<4) {
259  Jet_SearchWindow[3 + i][3 + j] = m_jTowersIDs_Thin[mphi + i][meta +j];
260  Jet_SearchWindowDisplaced[3 + i][3 + j] = m_jTowersIDs_Thin[mphi+i+1][meta+j+1];
261  }
262 
263  uint deltaR = std::sqrt(std::pow(i,2)+std::pow(j,2));
264 
265  if(deltaR<2) {
266  TT_seed_ID[i+1][j+1] = m_jTowersIDs_Thin[mphi +i][meta +j]; // Seed 0.3x0.3 in phi-eta plane
267  }
268  else if(deltaR<4) {
269  TT_First_ETring[First_ETring_it]= m_jTowersIDs_Thin[mphi +i][meta +j]; // First energy ring, will be used as tau ISO
270  ++First_ETring_it;
271 
272  }
273  else if(deltaR<8) {
274  largeRCluster_IDs[7 +i][7 +j] = m_jTowersIDs_Thin[mphi + i][meta +j];
275  }
276  }
277  }
278 
279  // ******** jJ and jLJ algorithms ********
280  ATH_CHECK( m_jFEXSmallRJetAlgoTool->safetyTest());
281  ATH_CHECK( m_jFEXLargeRJetAlgoTool->safetyTest());
282  m_jFEXSmallRJetAlgoTool->setup(Jet_SearchWindow, Jet_SearchWindowDisplaced);
283  m_jFEXLargeRJetAlgoTool->setupCluster(largeRCluster_IDs);
284  m_jFEXSmallRJetAlgoTool->buildSeeds();
285 
286  bool is_Jet_LM = m_jFEXSmallRJetAlgoTool->isSeedLocalMaxima(srJet_seedThresholdMeV);
287 
288  if(is_Jet_LM) {
289 
290  //getting the energies
291  int SRj_Et = m_jFEXSmallRJetAlgoTool->getSmallClusterET();
292  int LRj_Et = m_jFEXLargeRJetAlgoTool->getLargeClusterET(SRj_Et,m_jFEXLargeRJetAlgoTool->getRingET());
293  int seed_Et = m_jFEXSmallRJetAlgoTool->getSeedET();
294 
295  bool SRj_Sat = m_jFEXSmallRJetAlgoTool->getSRjetSat();
296  bool LRj_Sat = SRj_Sat || m_jFEXLargeRJetAlgoTool->getLRjetSat();
297 
298  int meta_LM = meta;
299  int mphi_LM = mphi;
300 
301 
302  //Creating SR TOB
303  uint32_t SRJet_tobword = m_IjFEXFormTOBsTool->formSRJetTOB(m_jfexid, mphi_LM, meta_LM, SRj_Et, SRj_Sat, thr_jJ.resolutionMeV(), thr_jJ.ptMinToTopoMeV(m_jfex_string[m_jfexid]), jetCalibrationParameters);
304 
305  std::unique_ptr<jFEXTOB> jJ_tob = std::make_unique<jFEXTOB>();
306  jJ_tob->initialize(m_id,m_jfexid,SRJet_tobword,thr_jJ.resolutionMeV(),m_jTowersIDs_Thin[mphi_LM][meta_LM],seed_Et);
307  if ( SRJet_tobword != 0 ){
308  m_SRJet_tobwords.push_back(std::move(jJ_tob));
309  }
310 
311  //Creating LR TOB
312  uint32_t LRJet_tobword = m_IjFEXFormTOBsTool->formLRJetTOB(m_jfexid, mphi_LM, meta_LM, LRj_Et, LRj_Sat, thr_jLJ.resolutionMeV(), thr_jLJ.ptMinToTopoMeV(m_jfex_string[m_jfexid]));
313 
314  std::unique_ptr<jFEXTOB> jLJ_tob = std::make_unique<jFEXTOB>();
315  jLJ_tob->initialize(m_id,m_jfexid,LRJet_tobword,thr_jLJ.resolutionMeV(),m_jTowersIDs_Thin[mphi_LM][meta_LM],seed_Et);
316  if ( LRJet_tobword != 0 ) m_LRJet_tobwords.push_back(std::move(jLJ_tob));
317 
318  }
319  // ******** jTau algorithm ********
320 
321  ATH_CHECK( m_jFEXtauAlgoTool->safetyTest());
322  m_jFEXtauAlgoTool->setup(TT_seed_ID);
323  bool is_tau_LocalMax = m_jFEXtauAlgoTool->isSeedLocalMaxima();
324 
325  // Save TOB is tau is a local maxima
326  if ( is_tau_LocalMax ) {
327 
328  //calculates the 1st energy ring
329  m_jFEXtauAlgoTool->setFirstEtRing(TT_First_ETring);
330 
331 
332  uint32_t jTau_tobword = m_IjFEXFormTOBsTool->formTauTOB(m_jfexid,mphi,meta,m_jFEXtauAlgoTool->getClusterEt(),m_jFEXtauAlgoTool->getFirstEtRing(),m_jFEXtauAlgoTool->getTauSat(),thr_jTAU.resolutionMeV(),thr_jTAU.ptMinToTopoMeV(m_jfex_string[m_jfexid]));
333 
334  std::unique_ptr<jFEXTOB> jTau_tob = std::make_unique<jFEXTOB>();
335  jTau_tob->initialize(m_id,m_jfexid,jTau_tobword,thr_jTAU.resolutionMeV(),m_jTowersIDs_Thin[mphi][meta]);
336 
337  if ( jTau_tobword != 0 ){
338  m_tau_tobwords.push_back(std::move(jTau_tob));
339  }
340  }
341  }
342  }
343  } //end of if statement for checking if in central jfex modules
344 
345  //FCAL region algorithm
346  if(m_jfexid ==0 || m_jfexid ==5) {
347 
348  //**********Forward Jets***********************
349  ATH_CHECK(m_jFEXForwardJetsAlgoTool->safetyTest());
353 
354  m_FCALJets = m_jFEXForwardJetsAlgoTool->calculateJetETs(srJet_seedThresholdMeV);
356 
357  uint32_t TTID = it->first;
358  jFEXForwardJetsInfo FCALJets = it->second;
359 
360  int iphi = FCALJets.getCentreLocalTTPhi();
361  int ieta = FCALJets.getCentreLocalTTEta();
362  m_SRJetET = FCALJets.getSeedET() + FCALJets.getFirstEnergyRingET();
364  int seedET = FCALJets.getSeedET();
365 
366  bool SRJ_sat = FCALJets.getSRjetSat();
367 
368  uint32_t SRFCAL_Jet_tobword = m_IjFEXFormTOBsTool->formSRJetTOB(m_jfexid, iphi, ieta, m_SRJetET, SRJ_sat, thr_jJ.resolutionMeV(), thr_jJ.ptMinToTopoMeV(m_jfex_string[m_jfexid]), jetCalibrationParameters);
369 
370  std::unique_ptr<jFEXTOB> jJ_tob = std::make_unique<jFEXTOB>();
371  jJ_tob->initialize(m_id,m_jfexid,SRFCAL_Jet_tobword,thr_jJ.resolutionMeV(),TTID,seedET);
372 
373  if ( SRFCAL_Jet_tobword != 0 ){
374  m_SRJet_tobwords.push_back(std::move(jJ_tob));
375  }
376 
377  if(std::fabs(FCALJets.getCentreTTEta())<2.51){
378  bool LRJ_sat = FCALJets.getLRjetSat();
379  uint32_t LRFCAL_Jet_tobword = m_IjFEXFormTOBsTool->formLRJetTOB(m_jfexid, iphi, ieta, m_LRJetET, LRJ_sat, thr_jLJ.resolutionMeV(),thr_jLJ.ptMinToTopoMeV(m_jfex_string[m_jfexid]));
380 
381  std::unique_ptr<jFEXTOB> jLJ_tob = std::make_unique<jFEXTOB>();
382  jLJ_tob->initialize(m_id,m_jfexid,LRFCAL_Jet_tobword,thr_jLJ.resolutionMeV(),TTID);
383  if ( LRFCAL_Jet_tobword != 0 ) m_LRJet_tobwords.push_back(std::move(jLJ_tob));
384  }
385 
386  }
387  //********** Forward Electrons ***********************
388  ATH_CHECK(m_jFEXForwardElecAlgoTool->safetyTest());
392  m_ForwardElecs = m_jFEXForwardElecAlgoTool->calculateEDM();
393 
396  const TrigConf::L1ThrExtraInfo_jEM & thr_jEM = l1Menu->thrExtraInfo().jEM();
397  const uint jFEXETResolution = thr_jEM.resolutionMeV();//200
398  std::string str_jfexname = m_jfex_string[m_jfexid];
399  uint minEtThreshold = thr_jEM.ptMinToTopoMeV(str_jfexname)/jFEXETResolution;
400  //uint Cval[9] = {1,2,3,20,30,40,20,30,40};//C values for iso, emfr1 and emfr2
401  std::vector<int> Ciso;
402  std::vector<int> Chad1;
403  std::vector<int> Chad2;
404 
406  uint32_t TTID = itel->first;
407  jFEXForwardElecInfo elCluster = itel->second;
408  uint meta = elCluster.getCoreIeta();//check whether this is the one used by the Trigger conf
409 
410  //retrieve jet rejection thresholds from trigger configuration
411  const auto & wp_loose = thr_jEM.isolation(TrigConf::Selection::WP::LOOSE, meta);
412  const auto & wp_medium = thr_jEM.isolation(TrigConf::Selection::WP::MEDIUM, meta);
413  const auto & wp_tight = thr_jEM.isolation(TrigConf::Selection::WP::TIGHT, meta);
414  Ciso.clear();
415  Chad1.clear();
416  Chad2.clear();
417  Ciso.push_back(wp_loose.iso_fw());
418  Ciso.push_back(wp_medium.iso_fw());
419  Ciso.push_back(wp_tight.iso_fw());
420  Chad1.push_back(wp_loose.frac_fw());
421  Chad1.push_back(wp_medium.frac_fw());
422  Chad1.push_back(wp_tight.frac_fw());
423  Chad2.push_back(wp_loose.frac2_fw());
424  Chad2.push_back(wp_medium.frac2_fw());
425  Chad2.push_back(wp_tight.frac2_fw());
426  int Cval[9] = {Ciso[0], Ciso[1], Ciso[2], Chad1[0], Chad1[1], Chad1[2], Chad2[0], Chad2[1], Chad2[2]};
427 
428  elCluster.setup(Cval,jFEXETResolution);
429  elCluster.calcFwdElEDM();
430 
431  uint etEM = elCluster.getEt();
432  uint32_t FwdEl_tobword = elCluster.getTobWord();
433 
434 
435  std::vector<uint32_t> FwdEltob_aux{FwdEl_tobword,TTID};
436  if ( FwdEl_tobword != 0 && etEM>minEtThreshold) m_FwdEl_tobwords.push_back(FwdEltob_aux);
437  }
438 
439  //******************************** TAU **********************************************
441  int max_meta=17;
442 
443  if(m_jfexid ==0) {
445  for(int j=28; j<(FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width-6); j++) { //lower values of j (j<28) are the Fcals not entering in the jFEX tau range
446  jTowersIDs[i][j-28+8]=m_jTowersIDs_Wide[i][j]; // second argument in m_jTowersIDs is to center the FPGA core area in te same region as the central FPGAs
447  }
448  }
449 
450  }
451  else if(m_jfexid ==5 ) {
452 
453  // Filling m_jTowersIDs with the m_jTowersIDs_Wide ID values up to 2.5 eta
455  for(int j=4; j<17; j++) { //higher values of j (j>16) are the Fcals not entering in the jFEX tau range
456  jTowersIDs[i][j]=m_jTowersIDs_Wide[i][j];
457  }
458  }
459  }
460  ATH_MSG_DEBUG("============================ jFEXtauAlgo ============================");
461  ATH_CHECK( m_jFEXtauAlgoTool->safetyTest());
462  m_jFEXtauAlgoTool->setFPGAEnergy(m_map_Etvalues_FPGA);
463  for(int mphi = 8; mphi < 24; mphi++) {
464  for(int meta = 8; meta < max_meta; meta++) {
465 
466  bool is_tau_LocalMax = m_jFEXtauAlgoTool->isSeedLocalMaxima_fwd(jTowersIDs[mphi][meta]);
467 
468  // Save TOB is tau is a local maxima
469  if ( is_tau_LocalMax ) {
470 
471  uint32_t jTau_tobword = m_IjFEXFormTOBsTool->formTauTOB(m_jfexid,mphi,meta,m_jFEXtauAlgoTool->getClusterEt(),m_jFEXtauAlgoTool->getFirstEtRing(),m_jFEXtauAlgoTool->getTauSat(),thr_jTAU.resolutionMeV(),thr_jTAU.ptMinToTopoMeV(m_jfex_string[m_jfexid]));
472 
473  std::unique_ptr<jFEXTOB> jTau_tob = std::make_unique<jFEXTOB>();
474  jTau_tob->initialize(m_id,m_jfexid,jTau_tobword,thr_jTAU.resolutionMeV(),jTowersIDs[mphi][meta]);
475  if ( jTau_tobword != 0 ){
476  m_tau_tobwords.push_back(std::move(jTau_tob));
477  }
478  }
479  }
480  }
481  } //end of if statement for checking if in central jfex modules
482  return StatusCode::SUCCESS;
483 } //end of the execute function
484 
486 
488  const int cols = sizeof tmp_jTowersIDs_subset[0] / sizeof tmp_jTowersIDs_subset[0][0];
489 
490  std::copy(&tmp_jTowersIDs_subset[0][0], &tmp_jTowersIDs_subset[0][0]+(rows*cols),&m_jTowersIDs_Wide[0][0]);
491 
492  ATH_MSG_DEBUG("\n==== jFEXFPGA ========= FPGA (" << m_id << ") [on jFEX " << m_jfexid << "] IS RESPONSIBLE FOR jTOWERS :");
493 
494  for (int thisRow=rows-1; thisRow>=0; thisRow--){
495  for (int thisCol=0; thisCol<cols; thisCol++){
496  if(thisCol != cols-1){ ATH_MSG_DEBUG("| " << m_jTowersIDs_Wide[thisRow][thisCol] << " "); }
497  else { ATH_MSG_DEBUG("| " << m_jTowersIDs_Wide[thisRow][thisCol] << " |"); }
498  }
499  }
500 
501 }
502 
504 
506  const int cols = sizeof tmp_jTowersIDs_subset[0] / sizeof tmp_jTowersIDs_subset[0][0];
507 
508  std::copy(&tmp_jTowersIDs_subset[0][0], &tmp_jTowersIDs_subset[0][0]+(rows*cols),&m_jTowersIDs_Thin[0][0]);
509 
510  //this prints out the jTower IDs that each FPGA is responsible for
511  ATH_MSG_DEBUG("\n==== jFEXFPGA ========= FPGA (" << m_id << ") [on jFEX " << m_jfexid << "] IS RESPONSIBLE FOR jTOWERS :");
512 
513  for (int thisRow=rows-1; thisRow>=0; thisRow--) {
514  for (int thisCol=0; thisCol<cols; thisCol++) {
515  if(thisCol != cols-1) {
516  ATH_MSG_DEBUG("| " << m_jTowersIDs_Thin[thisRow][thisCol] << " ");
517  }
518  else {
519  ATH_MSG_DEBUG("| " << m_jTowersIDs_Thin[thisRow][thisCol] << " |");
520  }
521  }
522  }
523 
524 }
525 
526 std::vector <std::unique_ptr<jFEXTOB>> jFEXFPGA::getSmallRJetTOBs()
527 {
528 
529  std::vector<std::unique_ptr<jFEXTOB>> tobsSort;
530  tobsSort.clear();
531 
532  // We need the copy since we cannot move a member of the class, since it will not be part of it anymore
533  for(auto &j : m_SRJet_tobwords) {
534  tobsSort.push_back(std::move(j));
535  }
536  std::sort (tobsSort.begin(), tobsSort.end(), std::bind(TOBetSort<std::unique_ptr<jFEXTOB>>, std::placeholders::_1, std::placeholders::_2, FEXAlgoSpaceDefs::jJ_etBit, 0x7ff));
537 
538  return tobsSort;
539 
540 }
541 
542 std::vector <std::unique_ptr<jFEXTOB>> jFEXFPGA::getLargeRJetTOBs()
543 {
544 
545 
546  std::vector<std::unique_ptr<jFEXTOB>> tobsSort;
547  tobsSort.clear();
548 
549  // We need the copy since we cannot move a member of the class, since it will not be part of it anymore
550  for(auto &j : m_LRJet_tobwords) {
551  tobsSort.push_back(std::move(j));
552  }
553  std::sort (tobsSort.begin(), tobsSort.end(), std::bind(TOBetSort<std::unique_ptr<jFEXTOB>>, std::placeholders::_1, std::placeholders::_2, FEXAlgoSpaceDefs::jLJ_etBit, 0x1fff));
554 
555  return tobsSort;
556 
557 }
558 
559 
560  std::vector <std::vector <uint32_t>> jFEXFPGA::getFwdElTOBs()
561  {
562  auto tobsSort = m_FwdEl_tobwords;
563 
564  ATH_MSG_DEBUG("number of Forward Elec tobs: " << tobsSort.size() << " in FPGA: " << m_id<< " before truncation");
565  //sort tobs by their et
566  std::sort (tobsSort.begin(), tobsSort.end(), etFwdElSort);
567 
568  return tobsSort;
569 
570  }
571 
572 
573 std::vector <std::unique_ptr<jFEXTOB>> jFEXFPGA::getTauTOBs() {
574 
575  std::vector<std::unique_ptr<jFEXTOB>> tobsSort;
576  tobsSort.clear();
577 
578  // We need the copy since we cannot move a member of the class, since it will not be part of it anymore
579  for(auto &j : m_tau_tobwords) {
580  tobsSort.push_back(std::move(j));
581  }
582  std::sort (tobsSort.begin(), tobsSort.end(), std::bind(TOBetSort<std::unique_ptr<jFEXTOB>>, std::placeholders::_1, std::placeholders::_2, FEXAlgoSpaceDefs::jTau_etBit, 0x7ff));
583 
584  return tobsSort;
585 }
586 
587 std::vector<std::unique_ptr<jFEXTOB>> jFEXFPGA::getSumEtTOBs() {
588 
589  std::vector<std::unique_ptr<jFEXTOB>> tobsSort;
590  tobsSort.clear();
591 
592  // We need the copy since we cannot move a member of the class, since it will not be part of it anymore
593  for(auto &j : m_sumET_tobwords) {
594  tobsSort.push_back(std::move(j));
595  }
596 
597  return tobsSort;
598 
599 }
600 
601 
602 
603 std::vector<std::unique_ptr<jFEXTOB>> jFEXFPGA::getMetTOBs() {
604 
605  std::vector<std::unique_ptr<jFEXTOB>> tobsSort;
606  tobsSort.clear();
607 
608  // We need the copy since we cannot move a member of the class, since it will not be part of it anymore
609  for(auto &j : m_Met_tobwords) {
610  tobsSort.push_back(std::move(j));
611  }
612 
613  return tobsSort;
614 
615 }
616 
617 
618 //Returns the Electromagnetic energy for Jet Algos (NOT MET/SumET)
619 int jFEXFPGA::getTTowerET_EM(unsigned int TTID) {
620 
621  if(m_map_EM_Etvalues_FPGA.find(TTID) != m_map_EM_Etvalues_FPGA.end()){
622  return m_map_EM_Etvalues_FPGA[TTID][0];
623  }
624 
625  ATH_MSG_DEBUG("In jFEXFPGA::getTTowerET_EM, TTower ID not found in map: " << TTID );
626  return -99999;
627 
628 }
629 
630 
631 //Returns the Hadronic energy for Jet Algos (NOT MET/SumET)
632 int jFEXFPGA::getTTowerET_HAD(unsigned int TTID) {
633 
634  if(m_map_HAD_Etvalues_FPGA.find(TTID) != m_map_HAD_Etvalues_FPGA.end()){
635  return m_map_HAD_Etvalues_FPGA[TTID][0];
636  }
637 
638  ATH_MSG_DEBUG("In jFEXFPGA::getTTowerET_HAD, TTower ID not found in map: " << TTID );
639  return -99999;
640 
641 }
642 
643 
644 //Returns the Total TT energy for Jet Algos (NOT MET/SumET)
645 int jFEXFPGA::getTTowerET(unsigned int TTID) {
646 
647  return getTTowerET_EM(TTID)+getTTowerET_HAD(TTID);
648 
649 }
650 
651 
652 //Returns the Total TT energy for MET/SumÉT Algos
653 int jFEXFPGA::getTTowerET_forMET(unsigned int TTID) {
654 
655  int tmp_EM = 0;
656  if(m_map_EM_Etvalues_FPGA.find(TTID) != m_map_EM_Etvalues_FPGA.end()){
657  tmp_EM = m_map_EM_Etvalues_FPGA[TTID][1];
658  }
659  else{
660  ATH_MSG_DEBUG("In jFEXFPGA::getTTowerET_forMET (EM energy), TTower ID not found in map: " << TTID );
661  tmp_EM = -99999;
662  }
663 
664 
665  int tmp_HAD = 0;
666  if(m_map_HAD_Etvalues_FPGA.find(TTID) != m_map_HAD_Etvalues_FPGA.end()){
667  tmp_HAD = m_map_HAD_Etvalues_FPGA[TTID][1];
668  }
669  else{
670  ATH_MSG_DEBUG("In jFEXFPGA::getTTowerET_forMET (HAD energy), TTower ID not found in map: " << TTID );
671  tmp_HAD = -99999;
672  }
673 
674 
675  return tmp_EM + tmp_HAD;
676 
677 }
678 
679 
680 //Returns de ET of a given TT ID for Algorithm
681 int jFEXFPGA::getTTowerET_SG(unsigned int TTID) {
682 
683  if(TTID == 0){
684  return -999;
685  }
687  const LVL1::jTower * tmpTower = jTowerContainer->findTower(TTID);
688  return tmpTower->getTotalET();
689 }
690 
691 
692 
693 
694 
695 
696 } // end of namespace bracket
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
LVL1::jFEXForwardElecInfo::calcFwdElEDM
void calcFwdElEDM()
Calculate variables for top word.
Definition: jFEXForwardElecInfo.cxx:198
jFEXTOB.h
LVL1::jFEXFPGA::getMetTOBs
virtual std::vector< std::unique_ptr< jFEXTOB > > getMetTOBs() override
Form a tob word out of the potential candidate MET tob.
Definition: jFEXFPGA.cxx:603
TrigConf::Selection::WP::LOOSE
@ LOOSE
LVL1::jFEXFPGA::m_FwdEl_tobwords
std::vector< std::vector< uint32_t > > m_FwdEl_tobwords
Definition: jFEXFPGA.h:114
jFEXSmallRJetAlgo.h
LVL1::jFEXFPGA::jFEXFPGA
jFEXFPGA(const std::string &type, const std::string &name, const IInterface *parent)
Constructors.
Definition: jFEXFPGA.cxx:33
TrigConf::L1ThrExtraInfo::jEM
const L1ThrExtraInfo_jEM & jEM() const
Definition: L1ThrExtraInfo.cxx:128
LVL1::FEXAlgoSpaceDefs::jJ_etBit
constexpr static int jJ_etBit
Definition: FEXAlgoSpaceDefs.h:119
LVL1::jFEXFPGA::m_l1MenuKey
SG::ReadHandleKey< TrigConf::L1Menu > m_l1MenuKey
Definition: jFEXFPGA.h:134
TrigConf::L1ThrExtraInfo_jJ::seedThresholdMeV
unsigned int seedThresholdMeV(const std::string &module) const
Definition: L1ThrExtraInfo.h:414
LVL1::jFEXForwardJetsInfo::getCentreLocalTTPhi
float getCentreLocalTTPhi()
Definition: jFEXForwardJetsInfo.cxx:59
LVL1::jFEXFPGA::reset
virtual void reset() override
Definition: jFEXFPGA.cxx:60
LVL1::jFEXFPGA::m_LRJetET
int m_LRJetET
Definition: jFEXFPGA.h:129
LVL1::FEXAlgoSpaceDefs::jFEX_thin_algoSpace_width
constexpr static int jFEX_thin_algoSpace_width
Definition: FEXAlgoSpaceDefs.h:26
LVL1::jFEXFPGA::m_jTowerContainerKey
SG::ReadHandleKey< LVL1::jTowerContainer > m_jTowerContainerKey
Definition: jFEXFPGA.h:133
TrigConf::L1ThrExtraInfo_jEM::isolation
const WorkingPoints_jEM & isolation(TrigConf::Selection::WP wp, int eta) const
Definition: L1ThrExtraInfo.h:215
LVL1::jFEXFPGA::m_jFEXtauAlgoTool
ToolHandle< IjFEXtauAlgo > m_jFEXtauAlgoTool
Definition: jFEXFPGA.h:137
LVL1::jFEXForwardJetsInfo::getFirstEnergyRingET
int getFirstEnergyRingET()
Definition: jFEXForwardJetsInfo.cxx:88
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
LVL1::jFEXForwardElecInfo::getCoreIeta
uint getCoreIeta()
Definition: jFEXForwardElecInfo.cxx:44
TrigConf::L1ThrExtraInfo::jLJ
const L1ThrExtraInfo_jLJ & jLJ() const
Definition: L1ThrExtraInfo.cxx:153
LVL1::jFEXFPGA::m_jfex_string
std::string m_jfex_string[6]
Definition: jFEXFPGA.h:146
TrigConf::L1ThrExtraInfo_jTE
Definition: L1ThrExtraInfo.h:554
LVL1::jFEXFPGA::m_jFEXSmallRJetAlgoTool
ToolHandle< IjFEXSmallRJetAlgo > m_jFEXSmallRJetAlgoTool
Definition: jFEXFPGA.h:135
LVL1::jFEXFPGA::getTTowerET
int getTTowerET(unsigned int TTID) override
Definition: jFEXFPGA.cxx:645
TrigConf::L1Menu::thrExtraInfo
const L1ThrExtraInfo & thrExtraInfo() const
Access to extra info for threshold types.
Definition: L1Menu.cxx:307
skel.it
it
Definition: skel.GENtoEVGEN.py:396
TrigConf::L1ThrExtraInfo_jJ::ptMinToTopoMeV
unsigned int ptMinToTopoMeV(const std::string &module) const
Definition: L1ThrExtraInfo.h:398
jFEXForwardJetsAlgo.h
LVL1::jFEXFPGA::m_Met_tobwords
std::vector< std::unique_ptr< jFEXTOB > > m_Met_tobwords
Definition: jFEXFPGA.h:109
jFEXtauAlgo.h
LVL1::jTowerContainer::findTower
const LVL1::jTower * findTower(int towerID) const
fast find method given identifier.
Definition: jTowerContainer.cxx:31
LVL1::jFEXFPGA::m_sumET_tobwords
std::vector< std::unique_ptr< jFEXTOB > > m_sumET_tobwords
Definition: jFEXFPGA.h:108
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_height
constexpr static int jFEX_algoSpace_height
Definition: FEXAlgoSpaceDefs.h:27
TrigConf::L1ThrExtraInfo::jTAU
const L1ThrExtraInfo_jTAU & jTAU() const
Definition: L1ThrExtraInfo.cxx:138
LVL1::jFEXFPGA::getTTowerET_HAD
int getTTowerET_HAD(unsigned int TTID) override
Definition: jFEXFPGA.cxx:632
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
TrigConf::L1ThrExtraInfo::jJ
const L1ThrExtraInfo_jJ & jJ() const
Definition: L1ThrExtraInfo.cxx:148
LVL1::jFEXForwardJetsInfo
Definition: jFEXForwardJetsInfo.h:25
LVL1
eFexTowerBuilder creates xAOD::eFexTowerContainer from supercells (LATOME) and triggerTowers (TREX) i...
Definition: ICMMCPHitsCnvTool.h:18
LVL1::jFEXFPGA::initialize
virtual StatusCode initialize() override
standard Athena-Algorithm method
Definition: jFEXFPGA.cxx:44
LVL1::jFEXForwardJetsInfo::getCentreTTEta
float getCentreTTEta()
Definition: jFEXForwardJetsInfo.cxx:30
jFEXOutputCollection.h
LVL1::jFEXFPGA::getTauTOBs
virtual std::vector< std::unique_ptr< jFEXTOB > > getTauTOBs() override
Definition: jFEXFPGA.cxx:573
LVL1::jFEXFPGA::m_jFEXForwardJetsAlgoTool
ToolHandle< IjFEXForwardJetsAlgo > m_jFEXForwardJetsAlgoTool
Definition: jFEXFPGA.h:140
TrigConf::L1ThrExtraInfo_jXE
Definition: L1ThrExtraInfo.h:542
jFEXPileupAndNoise.h
LVL1::jFEXFPGA::m_SRJet_tobwords
std::vector< std::unique_ptr< jFEXTOB > > m_SRJet_tobwords
Definition: jFEXFPGA.h:106
LVL1::jFEXFPGA::getTTowerET_forMET
int getTTowerET_forMET(unsigned int TTID) override
Definition: jFEXFPGA.cxx:653
LVL1::jFEXFPGA::m_tau_tobwords
std::vector< std::unique_ptr< jFEXTOB > > m_tau_tobwords
Definition: jFEXFPGA.h:105
uint
unsigned int uint
Definition: LArOFPhaseFill.cxx:20
TrigConf::L1ThrExtraInfo_jTAU::ptMinToTopoMeV
unsigned int ptMinToTopoMeV(const std::string &module) const
Definition: L1ThrExtraInfo.h:320
beamspotnt.cols
list cols
Definition: bin/beamspotnt.py:1114
LVL1::jFEXFPGA::m_jTowersIDs_Wide
int m_jTowersIDs_Wide[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width]
Definition: jFEXFPGA.h:116
LVL1::jFEXFPGA::m_jFEXsumETAlgoTool
ToolHandle< IjFEXsumETAlgo > m_jFEXsumETAlgoTool
Definition: jFEXFPGA.h:138
LVL1::jFEXForwardJetsInfo::getCentreLocalTTEta
float getCentreLocalTTEta()
Definition: jFEXForwardJetsInfo.cxx:49
LVL1::jFEXForwardJetsInfo::getLRjetSat
bool getLRjetSat()
Definition: jFEXForwardJetsInfo.h:40
TrigConf::L1ThrExtraInfo_jTE::etaBoundary_fw
unsigned int etaBoundary_fw(const std::string &module) const
Definition: L1ThrExtraInfo.h:560
LVL1::jFEXForwardElecInfo::setup
void setup(int jfex, uint ttid, int neta, int nphi)
Definition: jFEXForwardElecInfo.cxx:26
LVL1::jFEXFPGA::init
virtual StatusCode init(int id, int efexid) override
Definition: jFEXFPGA.cxx:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
LVL1::FEXAlgoSpaceDefs::jLJ_etBit
constexpr static int jLJ_etBit
Definition: FEXAlgoSpaceDefs.h:127
jFEXsumETAlgo.h
TrigConf::L1ThrExtraInfo_jLJ::ptMinToTopoMeV
unsigned int ptMinToTopoMeV(const std::string &module) const
Definition: L1ThrExtraInfo.h:443
lumiFormat.i
int i
Definition: lumiFormat.py:85
LVL1::jFEXFPGA::m_ForwardElecs
std::unordered_map< uint, jFEXForwardElecInfo > m_ForwardElecs
Definition: jFEXFPGA.h:126
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
jFEXFPGA.h
LVL1::FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width
constexpr static int jFEX_wide_algoSpace_width
Definition: FEXAlgoSpaceDefs.h:25
TrigConf::L1ThrExtraInfo::jXE
const L1ThrExtraInfo_jXE & jXE() const
Definition: L1ThrExtraInfo.cxx:168
LVL1::jFEXFPGA::getLargeRJetTOBs
virtual std::vector< std::unique_ptr< jFEXTOB > > getLargeRJetTOBs() override
Definition: jFEXFPGA.cxx:542
LVL1::jFEXFPGA::m_FCALJets
std::unordered_map< int, jFEXForwardJetsInfo > m_FCALJets
Definition: jFEXFPGA.h:125
LVL1::jFEXFPGA::TOBetSort
static bool TOBetSort(const TOBObjectClass &i, const TOBObjectClass &j, uint bits, uint mask)
Internal data.
Definition: jFEXFPGA.h:97
LVL1::jFEXFPGA::m_map_Etvalues_FPGA
std::unordered_map< int, std::vector< int > > m_map_Etvalues_FPGA
Definition: jFEXFPGA.h:120
test_pyathena.parent
parent
Definition: test_pyathena.py:15
LVL1::jTower::getTotalET
int getTotalET() const
Get ET sum of all cells in the jTower in MeV.
Definition: jTower.cxx:201
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
LVL1::jFEXFPGA::getSmallRJetTOBs
virtual std::vector< std::unique_ptr< jFEXTOB > > getSmallRJetTOBs() override
Form a tob word out of the potential candidate SmallRJet tob.
Definition: jFEXFPGA.cxx:526
LVL1::FEXAlgoSpaceDefs::jTau_etBit
constexpr static int jTau_etBit
Definition: FEXAlgoSpaceDefs.h:100
LVL1::jFEXFPGA::m_IjFEXFormTOBsTool
ToolHandle< IjFEXFormTOBs > m_IjFEXFormTOBsTool
Definition: jFEXFPGA.h:143
beamspotnt.rows
list rows
Definition: bin/beamspotnt.py:1112
LVL1::jFEXOutputCollection
Definition: jFEXOutputCollection.h:23
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
LVL1::jFEXFPGA::SetTowersAndCells_SG
virtual void SetTowersAndCells_SG(int[][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width]) override
Definition: jFEXFPGA.cxx:485
jFEXForwardElecAlgo.h
LVL1::jTowerContainer
Definition: jTowerContainer.h:33
LVL1::jFEXFPGA::m_jfexid
int m_jfexid
Definition: jFEXFPGA.h:112
TrigConf::name
Definition: HLTChainList.h:35
jFEXForwardJetsInfo.h
LVL1::jFEXFPGA::m_LRJet_tobwords
std::vector< std::unique_ptr< jFEXTOB > > m_LRJet_tobwords
Definition: jFEXFPGA.h:107
LVL1::jFEXOutputCollection::fill_pileup
void fill_pileup()
Definition: jFEXOutputCollection.cxx:136
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:227
LVL1::jFEXFPGA::getFwdElTOBs
virtual std::vector< std::vector< uint32_t > > getFwdElTOBs() override
sorted Electron tobs
Definition: jFEXFPGA.cxx:560
jFEXLargeRJetAlgo.h
LVL1::jFEXForwardJetsInfo::getSRjetSat
bool getSRjetSat()
Definition: jFEXForwardJetsInfo.h:39
TrigConf::L1ThrExtraInfo_jTAU
Definition: L1ThrExtraInfo.h:296
LVL1::jFEXFPGA::etFwdElSort
static bool etFwdElSort(const std::vector< uint32_t > &i, const std::vector< uint32_t > &j)
Definition: jFEXFPGA.h:101
TrigConf::L1ThrExtraInfoBase::resolutionMeV
unsigned int resolutionMeV() const
Definition: L1ThresholdBase.h:101
LVL1::jFEXForwardElecInfo::getEt
uint getEt()
Definition: jFEXForwardElecInfo.cxx:170
LVL1::jFEXFPGA::m_jFEXForwardElecAlgoTool
ToolHandle< IjFEXForwardElecAlgo > m_jFEXForwardElecAlgoTool
Definition: jFEXFPGA.h:141
LVL1::jFEXFPGA::m_jFEXmetAlgoTool
ToolHandle< IjFEXmetAlgo > m_jFEXmetAlgoTool
Definition: jFEXFPGA.h:139
LVL1::jFEXFPGA::execute
virtual StatusCode execute(jFEXOutputCollection *inputOutputCollection, const std::pair< unsigned int, const std::vector< int > & > &jetCalibrationParameters) override
Definition: jFEXFPGA.cxx:75
LVL1::jFEXFPGA::getSumEtTOBs
virtual std::vector< std::unique_ptr< jFEXTOB > > getSumEtTOBs() override
Form a tob word out of the potential candidate SumET tob.
Definition: jFEXFPGA.cxx:587
TrigConf::Selection::WP::MEDIUM
@ MEDIUM
LVL1::jFEXFPGA::m_map_EM_Etvalues_FPGA
std::unordered_map< int, std::vector< int > > m_map_EM_Etvalues_FPGA
Definition: jFEXFPGA.h:122
TrigConf::Selection::WP::TIGHT
@ TIGHT
LVL1::jFEXForwardJetsInfo::getSecondEnergyRingET
int getSecondEnergyRingET()
Definition: jFEXForwardJetsInfo.cxx:116
LVL1::jFEXFPGA::m_map_HAD_Etvalues_FPGA
std::unordered_map< int, std::vector< int > > m_map_HAD_Etvalues_FPGA
Definition: jFEXFPGA.h:121
LVL1::jFEXOutputCollection::addValue_pileup
void addValue_pileup(std::string, int)
Definition: jFEXOutputCollection.cxx:97
LVL1::jFEXFPGA::m_id
int m_id
Definition: jFEXFPGA.h:111
LVL1::jFEXFPGA::~jFEXFPGA
virtual ~jFEXFPGA()
Destructor.
Definition: jFEXFPGA.cxx:38
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
LVL1::jFEXFPGA::getTTowerET_EM
int getTTowerET_EM(unsigned int TTID) override
Definition: jFEXFPGA.cxx:619
jFEXForwardElecInfo.h
jFEXmetAlgo.h
LVL1::jFEXForwardJetsInfo::getSeedET
int getSeedET()
Definition: jFEXForwardJetsInfo.cxx:79
LVL1::jTower
The jTower class is an interface object for jFEX trigger algorithms The purposes are twofold:
Definition: jTower.h:40
TrigConf::L1ThrExtraInfo_jEM::ptMinToTopoMeV
unsigned int ptMinToTopoMeV(const std::string &module) const
Definition: L1ThrExtraInfo.h:222
LVL1::jFEXForwardElecInfo
Definition: jFEXForwardElecInfo.h:28
TrigConf::L1ThrExtraInfo_jLJ
Definition: L1ThrExtraInfo.h:435
calibdata.copy
bool copy
Definition: calibdata.py:27
AthAlgTool
Definition: AthAlgTool.h:26
TrigConf::L1ThrExtraInfo::jTE
const L1ThrExtraInfo_jTE & jTE() const
Definition: L1ThrExtraInfo.cxx:173
jFEXFormTOBs.h
TrigConf::L1ThrExtraInfo_jEM
Definition: L1ThrExtraInfo.h:189
LVL1::jFEXFPGA::m_SRJetET
int m_SRJetET
Definition: jFEXFPGA.h:128
jTower.h
pow
constexpr int pow(int base, int exp) noexcept
Definition: ap_fixedTest.cxx:15
makeComparison.deltaR
float deltaR
Definition: makeComparison.py:36
LVL1::jFEXFPGA::getTTowerET_SG
int getTTowerET_SG(unsigned int TTID)
Definition: jFEXFPGA.cxx:681
LVL1::jFEXForwardElecInfo::getTobWord
uint32_t getTobWord()
Definition: jFEXForwardElecInfo.cxx:182
LVL1::jFEXFPGA::m_jFEXLargeRJetAlgoTool
ToolHandle< IjFEXLargeRJetAlgo > m_jFEXLargeRJetAlgoTool
Definition: jFEXFPGA.h:136
TrigConf::L1ThrExtraInfo_jJ
Definition: L1ThrExtraInfo.h:390
LVL1::jFEXFPGA::m_jFEXPileupAndNoiseTool
ToolHandle< IjFEXPileupAndNoise > m_jFEXPileupAndNoiseTool
Definition: jFEXFPGA.h:142
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
LVL1::jFEXFPGA::m_jTowersIDs_Thin
int m_jTowersIDs_Thin[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_thin_algoSpace_width]
Definition: jFEXFPGA.h:117