ATLAS Offline Software
jFEXForwardElecAlgo.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 // jFEXForwardElecAlgo - Algorithm for Forward Electron Algorithm in jFEX
6 // -------------------
7 // begin : 16 11 2021
8 // email : Sergi.Rodriguez@cern.ch
9 // email : ulla.blumenschein@cern.ch
10 // email : sjolin@cern.ch
11 //***************************************************************************
12 
13 #include <iostream>
14 #include <vector>
15 #include <stdio.h>
16 #include <math.h>
17 #include <fstream>
21 #include "L1CaloFEXSim/jTower.h"
27 #include "StoreGate/StoreGateSvc.h"
29 
30 namespace LVL1 {
31 
32  //Default Constructor
33  LVL1::jFEXForwardElecAlgo::jFEXForwardElecAlgo(const std::string& type, const std::string& name, const IInterface* parent): AthAlgTool(type, name, parent) {
34  declareInterface<IjFEXForwardElecAlgo>(this);
35  }
36 
39  }
40 
42  ATH_CHECK(m_jTowerContainerKey.initialize());
43 
44  ATH_CHECK(ReadfromFile(PathResolver::find_calib_file(m_IsoMapStr), m_IsoMap ));
45  ATH_CHECK(ReadfromFile(PathResolver::find_calib_file(m_Frac1MapStr), m_Frac1Map ));
46  ATH_CHECK(ReadfromFile(PathResolver::find_calib_file(m_Frac2MapStr), m_Frac2Map ));
47  ATH_CHECK(ReadfromFile(PathResolver::find_calib_file(m_SearchGTauStr), m_SearchGTauMap));
48  ATH_CHECK(ReadfromFile(PathResolver::find_calib_file(m_SearchGeTauStr), m_SearchGeTauMap));
49 
50  return StatusCode::SUCCESS;
51  }
52 
53  //calls container for TT
55  m_jTowerContainer = SG::ReadHandle<jTowerContainer>(m_jTowerContainerKey);
56  if(! m_jTowerContainer.isValid()) {
57  ATH_MSG_ERROR("Could not retrieve jTowerContainer " << m_jTowerContainerKey.key());
58  return StatusCode::FAILURE;
59  }
60  return StatusCode::SUCCESS;
61  }
62 
64  return StatusCode::SUCCESS;
65  }
66 
68  std::copy(&inputTable[0][0], &inputTable[0][0] + (FEXAlgoSpaceDefs::jFEX_algoSpace_height*FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width), &m_jFEXalgoTowerID[0][0]);
69  m_jfex=jfex;
70  m_fpga=fpga;
71  }
72 
73  //global centre Eta and Phi coord of the TT
74  std::array<float,2> LVL1::jFEXForwardElecAlgo::getEtaPhi(uint ttID) {
75  if(ttID == 0) {
76  return {999,999};
77  }
78  const LVL1::jTower *tmpTower = m_jTowerContainer->findTower(ttID);
79  return {tmpTower->centreEta(),tmpTower->centrePhi()};
80  }
81 
82  std::array<int,2> LVL1::jFEXForwardElecAlgo::getEtEmHad(uint ttID) {
83  if(ttID == 0) {
84  return {0,0};
85  }
86  int TT_EtEM = 0;
87  if(m_map_Etvalues_EM.find(ttID) != m_map_Etvalues_EM.end()) {
88  TT_EtEM = m_map_Etvalues_EM[ttID][0];
89  }
90  int TT_EtHad = 0;
91  if(m_map_Etvalues_HAD.find(ttID) != m_map_Etvalues_HAD.end()) {
92  TT_EtHad = m_map_Etvalues_HAD[ttID][0];
93  }
94 
95  return {TT_EtEM, TT_EtHad};
96  }
97 
98  bool LVL1::jFEXForwardElecAlgo::getEMSat(unsigned int ttID ) {
99  if(ttID == 0) {
100  return false;
101  }
102 
103  const LVL1::jTower * tmpTower = m_jTowerContainer->findTower(ttID);
104  return tmpTower->getEMSat();
105  }
106 
108  std::unordered_map<int,std::vector<int> > etmapEM,
109  std::unordered_map<int,std::vector<int> > etmapHAD) {
110  m_map_Etvalues_EM=etmapEM;
111  m_map_Etvalues_HAD=etmapHAD;
112  }
113 
114 
116  auto [centreTT_EtEM,centreTT_EtHad] = getEtEmHad(seedTTID);
117  // check if seed has strictly more energy than its neighbours
118  {
119  auto it_seed_map = m_SearchGTauMap.find(seedTTID);
120  if(it_seed_map == m_SearchGTauMap.end()) {
121  ATH_MSG_ERROR("Could not find TT" << seedTTID << " in the seach (>) local maxima for tau/em file.");
122  return false;
123  }
124  for (const auto& gtt : it_seed_map->second ){
125  auto [tmp_EtEM,tmp_EtHad] = getEtEmHad(gtt);
126  if(tmp_EtEM>=centreTT_EtEM) {
127  return false;
128  }
129  }
130  }
131 
132  // check if seed has equal or more energy than its neighbours
133  {
134  auto it_seed_map = m_SearchGeTauMap.find(seedTTID);
135  if(it_seed_map == m_SearchGeTauMap.end()) {
136  ATH_MSG_ERROR("Could not find TT" << seedTTID << " in the seach (>=) local maxima for tau/em file.");
137  return false;
138  }
139  for (const auto& gtt : it_seed_map->second ){
140  auto [tmp_EtEM,tmp_EtHad] = getEtEmHad(gtt);
141  if( tmp_EtEM>centreTT_EtEM) {
142  return false;
143  }
144  }
145  }
146 
147  return true;
148  }
149 
150 
152  //determine direction for offsets (-1 : C-side, +1: A-side)
153  int direction = m_jfex < 3 ? -1 : +1;
154 
155  std::vector<std::pair<int,int>> neighbours;
156  //eta/phi index offsets depend on the position of the seed the cluster is created from
157  //differentiate the (many) different cases:
158  if ( direction>0 ? neta < FEXAlgoSpaceDefs::jFEX_algoSpace_A_EMIE_eta - 1 // A-side condition
159  : neta > FEXAlgoSpaceDefs::jFEX_algoSpace_C_EMB_start_eta) // C-side condition
160  { //Barrel
161  neighbours = { {neta , nphi+1},
162  {neta , nphi-1},
163  {neta+1, nphi },
164  {neta-1, nphi }
165  };
166  } else if ( direction>0 ? neta == FEXAlgoSpaceDefs::jFEX_algoSpace_A_EMIE_eta - 1
168  { //Barrel next to Endcap
169  neighbours = { {neta, nphi+1},
170  {neta, nphi-1},
171  {neta-direction, nphi},
172  {neta+direction, nphi/2} //boundary crossing into endcap -> reduced phi granularity
173  };
174  } else if ( direction>0 ? neta == FEXAlgoSpaceDefs::jFEX_algoSpace_A_EMIE_eta
176  { //Endcap next to Barrel
177  neighbours = { {neta, nphi+1},
178  {neta, nphi-1},
179  {neta+direction, nphi},
180  {neta-direction, 2*nphi+0}, //crossing into barrel region, higher phi granularity
181  {neta-direction, 2*nphi+1}, // -> consider both "touching" towers
182  };
184  : neta < FEXAlgoSpaceDefs::jFEX_algoSpace_C_EMIE_end_eta - 1 && neta > FEXAlgoSpaceDefs::jFEX_algoSpace_C_EMIE_start_eta )
185  { //Endcap
186  neighbours = { {neta , nphi+1},
187  {neta , nphi-1},
188  {neta+1, nphi },
189  {neta-1, nphi }
190  };
191  } else if ( direction>0 ? neta == FEXAlgoSpaceDefs::jFEX_algoSpace_A_FCAL_start_eta - 1
193  { //Endcap next to FCal
194  neighbours = { {neta, nphi+1},
195  {neta, nphi-1},
196  {neta-direction, nphi},
197  {neta+2*direction, nphi/2} //boundary crossing into FCal -> reduced phi granularity and skip first FCal bin
198  };
199  } else if ( direction>0 ? neta == FEXAlgoSpaceDefs::jFEX_algoSpace_A_FCAL_start_eta + 1 //first FCal bin must be skipped!
200  : neta == FEXAlgoSpaceDefs::jFEX_algoSpace_C_EMIE_start_eta - 2 ) //first FCal bin must be skipped!
201  { //FCal next to Endcap
202  //phi spacing in FCal is very wide, no longer consider adding towers in phi direction
203  neighbours = { {neta-2*direction, 2*nphi+0}, //boundary crossing into endcap, higher phi granularity
204  {neta-2*direction, 2*nphi+1}, // -> consider both "touching" towers
205  {neta+direction, nphi}
206  };
208  : neta < FEXAlgoSpaceDefs::jFEX_algoSpace_C_FCAL_end_eta - 2 && neta > FEXAlgoSpaceDefs::jFEX_algoSpace_C_FCAL_start_eta )
209  { //FCal
210  neighbours = { {neta+1, nphi},
211  {neta-1, nphi}
212  };
213  } else if ( direction>0 ? neta == FEXAlgoSpaceDefs::jFEX_algoSpace_A_FCAL_end_eta - 1
215  { //FCal, last eta bin
216  neighbours = { {neta-direction, nphi}
217  };
218  } else {
219  ATH_MSG_ERROR("Eta index " << neta << " (side: "<< (direction>0?"A":"C") << ") does not seem to belong to any valid seed region");
220  }
221 
222  //iterate over neighbours, find most energetic one
223  for (const auto& candEtaPhi: neighbours) {
224  uint candID = m_jFEXalgoTowerID[candEtaPhi.second][candEtaPhi.first];
225  const auto [candTT_EtEM, candTT_EtHad] = getEtEmHad(candID);
226  if (candTT_EtEM > elCluster.getNextTTEtEM()) {
227  elCluster.setNextTTEtEM(candTT_EtEM);
228  elCluster.setNextTTID(candID);
229  elCluster.setNextTTSatEM(getEMSat(candID));
230  }
231  }
232 
233  }
234 
235 
236  std::unordered_map<uint, LVL1::jFEXForwardElecInfo> LVL1::jFEXForwardElecAlgo::calculateEDM(void) {
237  std::unordered_map<uint, LVL1::jFEXForwardElecInfo> clusterList;
238  std::vector<int> lower_centre_neta;
239  std::vector<int> upper_centre_neta;
240 
241  //check if we are in module 0 or 5 and assign corrrect eta FEXAlgoSpace parameters
242  if(m_jfex == 0) {
243  //Module 0
244  lower_centre_neta.assign({FEXAlgoSpaceDefs::jFEX_algoSpace_C_EMB_start_eta, // 28
247 
248  upper_centre_neta.assign({FEXAlgoSpaceDefs::jFEX_algoSpace_C_EMB_end_eta, // 37
251  }
252  else {
253  //Module 5
254  lower_centre_neta.assign({FEXAlgoSpaceDefs::jFEX_algoSpace_A_EMB_eta, // 8
257 
258  upper_centre_neta.assign({FEXAlgoSpaceDefs::jFEX_algoSpace_A_EMIE_eta, // 17
261  }
262 
263  //define phi FEXAlgoSpace parameters
266 
267  //loop over different EM/FCAL1 eta phi core fpga regions with different granularities. These are potential seed towers for electron clusters
268  for(uint region = 0; region<3; region++) {
269  for(int nphi = lower_centre_nphi[region]; nphi < upper_centre_nphi[region]; nphi++) {
270  for(int neta = lower_centre_neta[region]; neta < upper_centre_neta[region]; neta++) {
271 
272  // ignore seeds for |eta| < 2.3 or from the first FCAL eta bin
273  if (m_jfex == 0 && neta >= FEXAlgoSpaceDefs::jFEX_algoSpace_C_FwdEl_start) continue;
274  if (m_jfex == 5 && neta <= FEXAlgoSpaceDefs::jFEX_algoSpace_A_FwdEl_start) continue;
275  if (m_jfex == 0 && neta == FEXAlgoSpaceDefs::jFEX_algoSpace_C_FCAL1_1st) continue;
276  if (m_jfex == 5 && neta == FEXAlgoSpaceDefs::jFEX_algoSpace_A_FCAL1_1st) continue;
277 
278  // define ttID (only FCAL1 in the third region) which will be the key for class in map, ignore tower ID = 0
279  uint ttID = m_jFEXalgoTowerID[nphi][neta];
280  if(ttID == 0) continue;
281  //check if seed candidate is actual seed (passes local maximum criteria)
282  if(!isValidSeed(ttID)) continue;
283 
284  //gather some first, basic information for resulting cluster/TOB
285  jFEXForwardElecInfo elCluster;
286  elCluster.setup(m_jfex, ttID, neta, nphi);
287  const auto [centreTT_eta, centreTT_phi] = getEtaPhi(ttID);
288  const auto [centreTT_EtEM, centreTT_EtHad] = getEtEmHad(ttID);
289  elCluster.setCoreTTfPhi(centreTT_phi);
290  elCluster.setCoreTTfEta(centreTT_eta);
291  elCluster.setCoreTTEtEM(centreTT_EtEM);
292  elCluster.setCoreTTSatEM(getEMSat(ttID));
293  elCluster.setNextTTEtEM(0);
294  elCluster.setNextTTID(0);
295  elCluster.setTTEtEMiso(0);
296 
297  //find "NextTT", i.e., highest ET neighbour
298  findAndFillNextTT(elCluster, neta, nphi);
299 
300  // sum up EM isolation using the isolation map and remove cluster ET
301  {
302  int sumEtEM = 0;
303  auto it_iso_map = m_IsoMap.find(ttID);
304  if(it_iso_map != m_IsoMap.end()) {
305  for(const auto& gtt : it_iso_map->second){
306  auto [tmp_EtEM,tmp_EtHad] = getEtEmHad(gtt);
307  sumEtEM += tmp_EtEM;
308  }
309  elCluster.setTTEtEMiso(sumEtEM-elCluster.getNextTTEtEM());
310  } else {
311  ATH_MSG_ERROR("Could not find TT" << ttID << " in jEM isolation map file.");
312  }
313  }
314 
315  if(fabs(centreTT_eta) < 3.2) {
316  // for non-FCal positions only Frac1 is meaningful and has a "trivial" mapping
317  elCluster.setTTEtHad1(centreTT_EtHad);
318  elCluster.setTTEtHad2(0);
319  } else {
320  // sum up Et for hadronic fraction 1
321  {
322  int sumEtHad1 = 0;
323  auto it_frac1_map = m_Frac1Map.find(ttID);
324  if(it_frac1_map != m_Frac1Map.end()) {
325  for(const auto& gtt : it_frac1_map->second){
326  auto [tmp_EtEM,tmp_EtHad] = getEtEmHad(gtt);
327  sumEtHad1 += tmp_EtHad;
328  }
329  elCluster.setTTEtHad1(sumEtHad1);
330  } else {
331  ATH_MSG_ERROR("Could not find TT" << ttID << " in jEM frac1 map file.");
332  }
333  }
334 
335  // sum up Et for hadronic fraction 2 (only FCal!)
336  {
337  int sumEtHad2 = 0;
338  auto it_frac2_map = m_Frac2Map.find(ttID);
339  if(it_frac2_map != m_Frac2Map.end()) {
340  for(const auto& gtt : it_frac2_map->second) {
341  auto [tmp_EtEM,tmp_EtHad] = getEtEmHad(gtt);
342  sumEtHad2 += tmp_EtHad;
343  }
344  elCluster.setTTEtHad2(sumEtHad2);
345  } else {
346  ATH_MSG_ERROR("Could not find TT" << ttID << " in jEM frac2 map file.");
347  }
348  }
349  }
350 
351  // save this cluster in the list
352  clusterList[ttID] = elCluster;
353  }//eta
354  }//phi
355  }// 3 regions
356  return clusterList;
357  }
358 
359  StatusCode LVL1::jFEXForwardElecAlgo::ReadfromFile(const std::string & fileName, std::unordered_map<unsigned int, std::vector<unsigned int> >& fillingMap){
360  std::string myline;
361  //opening file with ifstream
362  std::ifstream myfile(fileName);
363  if ( !myfile.is_open() ){
364  ATH_MSG_ERROR("Could not open file:" << fileName);
365  return StatusCode::FAILURE;
366  }
367 
368  //loading the mapping information
369  while ( std::getline (myfile, myline) ) {
370  //removing the header of the file (it is just information!)
371  if(myline[0] == '#') continue;
372 
373  //Splitting myline in different substrings
374  std::stringstream oneLine(myline);
375 
376  //reading elements
377  std::vector<unsigned int> elements;
378  std::string element;
379  while(std::getline(oneLine, element, ' '))
380  {
381  elements.push_back(std::stoi(element));
382  }
383 
384  // We should have at least two elements! Central TT and (at least) itself
385  if(elements.size() < 1){
386  ATH_MSG_ERROR("Unexpected number of elemennts (<1 expected) in file: "<< fileName);
387  return StatusCode::FAILURE;
388  }
389 
390  //Central TiggerTower
391  unsigned int TTID = elements.at(0);
392 
393  // rest of TTs that need to be checked
394  elements.erase(elements.begin());
395  fillingMap[TTID] = elements;
396  }
397  myfile.close();
398 
399  return StatusCode::SUCCESS;
400  }
401 }// end of namespace LVL1
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_EMB_start_phi
constexpr static int jFEX_algoSpace_EMB_start_phi
Definition: FEXAlgoSpaceDefs.h:89
PathResolver::find_calib_file
static std::string find_calib_file(const std::string &logical_file_name)
Definition: PathResolver.cxx:384
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_EMIE_start_phi
constexpr static int jFEX_algoSpace_EMIE_start_phi
Definition: FEXAlgoSpaceDefs.h:91
LVL1::jFEXForwardElecAlgo::getEMSat
bool getEMSat(unsigned int ttID)
Definition: jFEXForwardElecAlgo.cxx:98
jFEXForwardElecTOB.h
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_C_EMIE_end_eta
constexpr static int jFEX_algoSpace_C_EMIE_end_eta
Definition: FEXAlgoSpaceDefs.h:66
LVL1::jFEXForwardElecInfo::setCoreTTEtEM
void setCoreTTEtEM(int ET_EM)
Definition: jFEXForwardElecInfo.cxx:73
LVL1::jFEXForwardElecAlgo::ReadfromFile
StatusCode ReadfromFile(const std::string &, std::unordered_map< unsigned int, std::vector< unsigned int > > &)
Definition: jFEXForwardElecAlgo.cxx:359
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_C_FCAL_end_eta
constexpr static int jFEX_algoSpace_C_FCAL_end_eta
Definition: FEXAlgoSpaceDefs.h:68
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_A_FCAL_end_eta
constexpr static int jFEX_algoSpace_A_FCAL_end_eta
Definition: FEXAlgoSpaceDefs.h:48
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_C_EMB_start_eta
constexpr static int jFEX_algoSpace_C_EMB_start_eta
Definition: FEXAlgoSpaceDefs.h:63
LVL1::jFEXForwardElecInfo::setCoreTTSatEM
void setCoreTTSatEM(bool sat)
Definition: jFEXForwardElecInfo.cxx:81
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_height
constexpr static int jFEX_algoSpace_height
Definition: FEXAlgoSpaceDefs.h:27
LVL1::jFEXForwardElecInfo::setTTEtHad1
void setTTEtHad1(int ET_HAD)
Definition: jFEXForwardElecInfo.cxx:138
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_EMB_end_phi
constexpr static int jFEX_algoSpace_EMB_end_phi
Definition: FEXAlgoSpaceDefs.h:90
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_C_FCAL_start_eta
constexpr static int jFEX_algoSpace_C_FCAL_start_eta
Definition: FEXAlgoSpaceDefs.h:67
LVL1::jTower::centreEta
float centreEta() const
Definition: jTower.h:83
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_A_EMB_eta
constexpr static int jFEX_algoSpace_A_EMB_eta
Definition: FEXAlgoSpaceDefs.h:45
LVL1
eFexTowerBuilder creates xAOD::eFexTowerContainer from supercells (LATOME) and triggerTowers (TREX) i...
Definition: ICMMCPHitsCnvTool.h:18
LVL1::jFEXForwardElecInfo::setTTEtHad2
void setTTEtHad2(int ET_HAD)
Definition: jFEXForwardElecInfo.cxx:150
LVL1::jFEXForwardElecInfo::setTTEtEMiso
void setTTEtEMiso(int iso_ET)
Definition: jFEXForwardElecInfo.cxx:113
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_EMIE_end_phi
constexpr static int jFEX_algoSpace_EMIE_end_phi
Definition: FEXAlgoSpaceDefs.h:92
LVL1::jFEXForwardElecInfo::setNextTTEtEM
void setNextTTEtEM(int ET_EM)
Definition: jFEXForwardElecInfo.cxx:97
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_A_FwdEl_start
constexpr static int jFEX_algoSpace_A_FwdEl_start
Definition: FEXAlgoSpaceDefs.h:85
AthAlgorithm.h
uint
unsigned int uint
Definition: LArOFPhaseFill.cxx:20
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_C_EMIE_start_eta
constexpr static int jFEX_algoSpace_C_EMIE_start_eta
Definition: FEXAlgoSpaceDefs.h:65
FortranAlgorithmOptions.fileName
fileName
Definition: FortranAlgorithmOptions.py:13
LVL1::jFEXForwardElecInfo::setup
void setup(int jfex, uint ttid, int neta, int nphi)
Definition: jFEXForwardElecInfo.cxx:26
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
LVL1::FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width
constexpr static int jFEX_wide_algoSpace_width
Definition: FEXAlgoSpaceDefs.h:25
LVL1::jFEXForwardElecInfo::getNextTTEtEM
int getNextTTEtEM()
Definition: jFEXForwardElecInfo.cxx:101
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_C_EMB_end_eta
constexpr static int jFEX_algoSpace_C_EMB_end_eta
Definition: FEXAlgoSpaceDefs.h:64
test_pyathena.parent
parent
Definition: test_pyathena.py:15
CaloCell_SuperCell_ID.h
Helper class for offline supercell identifiers.
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
LVL1::jFEXForwardElecAlgo::setFPGAEnergy
virtual void setFPGAEnergy(std::unordered_map< int, std::vector< int > > etmapEM, std::unordered_map< int, std::vector< int > > etmapHAD) override
Definition: jFEXForwardElecAlgo.cxx:107
LVL1::jFEXForwardElecAlgo::findAndFillNextTT
void findAndFillNextTT(jFEXForwardElecInfo &elCluster, int neta, int nphi)
Definition: jFEXForwardElecAlgo.cxx:151
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_C_FCAL1_1st
constexpr static int jFEX_algoSpace_C_FCAL1_1st
Definition: FEXAlgoSpaceDefs.h:82
jFEXForwardElecAlgo.h
TrigConf::name
Definition: HLTChainList.h:35
LVL1::jFEXForwardElecAlgo::jFEXForwardElecAlgo
jFEXForwardElecAlgo(const std::string &type, const std::string &name, const IInterface *parent)
Constructors.
Definition: jFEXForwardElecAlgo.cxx:33
jTowerContainer.h
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_FCAL_end_phi
constexpr static int jFEX_algoSpace_FCAL_end_phi
Definition: FEXAlgoSpaceDefs.h:94
PathResolver.h
LVL1::jFEXForwardElecAlgo::initialize
virtual StatusCode initialize() override
standard Athena-Algorithm method
Definition: jFEXForwardElecAlgo.cxx:41
LVL1::jFEXForwardElecInfo::setNextTTSatEM
void setNextTTSatEM(bool sat)
Definition: jFEXForwardElecInfo.cxx:105
LVL1::jFEXForwardElecAlgo::calculateEDM
virtual std::unordered_map< uint, jFEXForwardElecInfo > calculateEDM() override
Definition: jFEXForwardElecAlgo.cxx:236
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_A_FCAL_start_eta
constexpr static int jFEX_algoSpace_A_FCAL_start_eta
Definition: FEXAlgoSpaceDefs.h:47
LVL1::jFEXForwardElecAlgo::safetyTest
virtual StatusCode safetyTest() override
Standard methods.
Definition: jFEXForwardElecAlgo.cxx:54
LVL1::jFEXForwardElecInfo::setNextTTID
void setNextTTID(uint TTID)
Definition: jFEXForwardElecInfo.cxx:89
CaloCellContainer.h
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_A_EMIE_eta
constexpr static int jFEX_algoSpace_A_EMIE_eta
Definition: FEXAlgoSpaceDefs.h:46
LVL1::jTower::centrePhi
float centrePhi() const
Definition: jTower.h:84
LVL1::jFEXForwardElecInfo::setCoreTTfPhi
void setCoreTTfPhi(float fphi)
Definition: jFEXForwardElecInfo.cxx:65
LVL1::jTower::getEMSat
bool getEMSat() const
Definition: jTower.h:60
LVL1::jFEXForwardElecAlgo::reset
virtual StatusCode reset() override
Definition: jFEXForwardElecAlgo.cxx:63
LVL1::jFEXForwardElecAlgo::getEtEmHad
virtual std::array< int, 2 > getEtEmHad(uint) override
Definition: jFEXForwardElecAlgo.cxx:82
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
jFEXForwardElecInfo.h
LVL1::jFEXForwardElecAlgo::setup
virtual void setup(int inputTable[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width], int jfex, int fpga) override
Definition: jFEXForwardElecAlgo.cxx:67
LVL1::jTower
The jTower class is an interface object for jFEX trigger algorithms The purposes are twofold:
Definition: jTower.h:40
CaloIdManager.h
LVL1::jFEXForwardElecInfo
Definition: jFEXForwardElecInfo.h:28
LVL1::jFEXForwardElecAlgo::getEtaPhi
virtual std::array< float, 2 > getEtaPhi(uint) override
Definition: jFEXForwardElecAlgo.cxx:74
calibdata.copy
bool copy
Definition: calibdata.py:27
AthAlgTool
Definition: AthAlgTool.h:26
LVL1::jFEXForwardElecAlgo::~jFEXForwardElecAlgo
virtual ~jFEXForwardElecAlgo()
Destructor.
Definition: jFEXForwardElecAlgo.cxx:38
LVL1::jFEXForwardElecInfo::setCoreTTfEta
void setCoreTTfEta(float feta)
Definition: jFEXForwardElecInfo.cxx:52
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_C_FwdEl_start
constexpr static int jFEX_algoSpace_C_FwdEl_start
Definition: FEXAlgoSpaceDefs.h:86
jTower.h
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_A_FCAL1_1st
constexpr static int jFEX_algoSpace_A_FCAL1_1st
Definition: FEXAlgoSpaceDefs.h:81
StoreGateSvc.h
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_FCAL_start_phi
constexpr static int jFEX_algoSpace_FCAL_start_phi
Definition: FEXAlgoSpaceDefs.h:93
LVL1::jFEXForwardElecAlgo::isValidSeed
bool isValidSeed(uint seedTTID)
Definition: jFEXForwardElecAlgo.cxx:115