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