ATLAS Offline Software
jFEXForwardJetsAlgo.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 // jFEXForwardJetsAlgo - Algorithm for forward Jets in jFEX
6 // -------------------
7 // begin : 07 06 2021
8 // email : Sergi.Rodriguez@cern.ch
9 //***************************************************************************
10 #include <iostream>
11 #include <vector>
12 #include <string>
13 #include <map>
15 #include "L1CaloFEXSim/jTower.h"
23 #include "StoreGate/StoreGateSvc.h"
24 
25 #include <fstream>
26 
27 namespace LVL1{
28 
29 //Default Constructor
30 LVL1::jFEXForwardJetsAlgo::jFEXForwardJetsAlgo(const std::string& type, const std::string& name, const IInterface* parent):
32  {
33  declareInterface<IjFEXForwardJetsAlgo>(this);
34  }
35 
38 {
39 }
41 
42  ATH_CHECK(m_jFEXForwardJetsAlgo_jTowerContainerKey.initialize());
43 
44  ATH_CHECK(ReadfromFile(PathResolver::find_calib_file(m_SeedRingStr) , m_SeedRingMap ));
45  ATH_CHECK(ReadfromFile(PathResolver::find_calib_file(m_1stRingStr) , m_1stRingMap ));
46  ATH_CHECK(ReadfromFile(PathResolver::find_calib_file(m_2ndRingStr) , m_2ndRingMap ));
47  ATH_CHECK(ReadfromFile(PathResolver::find_calib_file(m_CorrStr) , m_CorrMap ));
48  ATH_CHECK(ReadfromFile(PathResolver::find_calib_file(m_Corr2Str) , m_Corr2Map ));
49  ATH_CHECK(ReadfromFile(PathResolver::find_calib_file(m_SearchGStr) , m_SearchGMap ));
50  ATH_CHECK(ReadfromFile(PathResolver::find_calib_file(m_SearchGeStr) , m_SearchGeMap ));
51 
52  return StatusCode::SUCCESS;
53 
54 }
55 
56 //calls container for TT
58  m_jTowerContainer = SG::ReadHandle<jTowerContainer>(m_jFEXForwardJetsAlgo_jTowerContainerKey);
59  if(! m_jTowerContainer.isValid()) {
60  ATH_MSG_ERROR("Could not retrieve jTowerContainer " << m_jFEXForwardJetsAlgo_jTowerContainerKey.key());
61 
62  return StatusCode::FAILURE;
63  }
64 
65  return StatusCode::SUCCESS;
66 }
67 
69  return StatusCode::SUCCESS;
70 }
71 
73  std::copy(&inputTable[0][0], &inputTable[0][0] + (FEXAlgoSpaceDefs::jFEX_algoSpace_height*FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width), &m_jFEXalgoTowerID[0][0]);
74  m_jfex=jfex;
75 }
76 
77 //Gets geometric global centre Eta and Phi coord of the TT
78 //Has the advantage over the individual eta, phi methods that it does only one tower search
79 std::array<float,2> LVL1::jFEXForwardJetsAlgo::globalEtaPhi(int TTID) {
80  if(TTID == 0) {
81  return {999,999};
82  }
83 
84  const LVL1::jTower *tmpTower = m_jTowerContainer->findTower(TTID);
85  return {tmpTower->centreEta(),tmpTower->centrephi_toPI()};
86 }
87 
88 int LVL1::jFEXForwardJetsAlgo::getEt(unsigned int TTID) {
89  if(TTID == 0) {
90  return -999;
91  }
92 
93  auto itr = m_map_Etvalues.find(TTID);
94 
95  if( itr == m_map_Etvalues.end()) {
96  return -999;
97  }
98 
99  return itr->second[0];
100 }
101 
102 std::unordered_map<int, jFEXForwardJetsInfo> LVL1::jFEXForwardJetsAlgo::FcalJetsTowerIDLists() {
103 
104  std::unordered_map<int, jFEXForwardJetsInfo> FCALJetTowerIDLists;
105 
106  std::vector<int> lower_centre_neta;
107  std::vector<int> upper_centre_neta;
108  m_lowerEM_eta = 0;
109  m_upperEM_eta = 0;
110 
111  //STEP 1: check if we are in module 0 or 5 and assign corrrect eta FEXAlgoSpace parameters
112  if(m_jfex == 0) {
113  //Module 0
118  }
119  else {
120  //Module 5
123 
126 
127  }
128 
129 
130 
131  //STEP 2: define phi FEXAlgoSpace parameters
134 
135  //STEP 3: loop over different EM/FCAL0 eta phi core fpga regions. These are potential central trigger towers for jets
136  for(int myCounter = 0; myCounter<3; myCounter++) {
137  for(int centre_nphi = lower_centre_nphi[myCounter]; centre_nphi < upper_centre_nphi[myCounter]; centre_nphi++) {
138  for(int centre_neta = lower_centre_neta[myCounter]; centre_neta < upper_centre_neta[myCounter]; centre_neta++) {
139 
140  //STEP 4: define TTID which will be the key for class in map
141  int myTTIDKey = m_jFEXalgoTowerID[centre_nphi][centre_neta];
142 
143  //STEP 5: ignore when tower ID is zero. Should not happend though
144  if(myTTIDKey == 0) {
145  continue;
146  }
147  bool iAmJet = false;
148  bool bool_isLM = false;
149  bool bool_condCorr2 = false;
150  bool bool_isLMabove = false;
151  bool bool_condCorr = false;
152 
153  //Know which condition should satisfy
154  unsigned int elemCorr = elementsCorr(myTTIDKey);
155  unsigned int elemCorr2 = elementsCorr2(myTTIDKey);
156 
157  if(elemCorr == 0 and elemCorr2 == 0){
158  bool_isLM = isLM(myTTIDKey);
159  iAmJet = bool_isLM;
160  }
161  else if(elemCorr == 0 and elemCorr2 > 0){
162  bool_isLM = isLM(myTTIDKey);
163  bool_condCorr2 = condCorr2(myTTIDKey);
164  iAmJet = bool_isLM and bool_condCorr2;
165  }
166  else if(elemCorr > 0 and elemCorr2 == 0){
167  bool_isLM = isLM(myTTIDKey);
168  bool_isLMabove = isLMabove(myTTIDKey);
169  bool_condCorr = condCorr(myTTIDKey);
170  iAmJet = bool_isLM or (bool_isLMabove and bool_condCorr);
171  }
172  else if(elemCorr > 0 and elemCorr2 > 0){
173  bool_isLM = isLM(myTTIDKey);
174  bool_condCorr2 = condCorr2(myTTIDKey);
175  bool_isLMabove = isLMabove(myTTIDKey);
176  bool_condCorr = condCorr(myTTIDKey);
177  iAmJet = (bool_isLM and bool_condCorr2) or (bool_isLMabove and bool_condCorr);
178  }
179 
180  if(iAmJet){
181 
182  //STEP 6: define class
183  jFEXForwardJetsInfo TriggerTowerInformation;
184 
185  TriggerTowerInformation.setCentreLocalTTPhi(centre_nphi);
186  TriggerTowerInformation.setCentreLocalTTEta(centre_neta);
187 
188  const auto [centreTT_eta,centreTT_phi] = globalEtaPhi(myTTIDKey);
189  TriggerTowerInformation.setCentreTTPhi(centreTT_phi);
190  TriggerTowerInformation.setCentreTTEta(centreTT_eta);
191 
192 
193  //STEP 7: Filling energies
194  int saturation = 0;
195  // Seed
196  auto it_seed_map = m_SeedRingMap.find(myTTIDKey);
197  if(it_seed_map == m_SeedRingMap.end()) {
198  ATH_MSG_ERROR("Could not find TT" << myTTIDKey << " in Jet seed file.");
199  }
200 
201  for(const auto& seedTT : it_seed_map->second){
202  TriggerTowerInformation.includeTTinSeed(seedTT);
203  saturation = saturation || getTTowerSat(seedTT);
204  TriggerTowerInformation.addToSeedET(getEt(seedTT));
205  }
206 
207  // 1st Energy Ring!
208  it_seed_map = m_1stRingMap.find(myTTIDKey);
209  if(it_seed_map == m_1stRingMap.end()) {
210  ATH_MSG_ERROR("Could not find TT" << myTTIDKey << " in 1st Energy ring file.");
211  }
212 
213  for(const auto& firstER_TT : it_seed_map->second){
214  TriggerTowerInformation.addToFirstEnergyRingET(getEt(firstER_TT));
215  saturation = saturation || getTTowerSat(firstER_TT);
216  if(m_storeEnergyRingTTIDs) {
217  TriggerTowerInformation.includeTTIDinFirstER(firstER_TT);
218  }
219  }
220 
221  //setting saturation for jJ
222  if(saturation) TriggerTowerInformation.setSRjetSat();
223 
224 
225  // 2nd Energy Ring!
226  it_seed_map = m_2ndRingMap.find(myTTIDKey);
227  if(it_seed_map == m_2ndRingMap.end()) {
228  ATH_MSG_ERROR("Could not find TT" << myTTIDKey << " in 2nd Energy ring file.");
229  }
230 
231  for(const auto& secondER_TT : it_seed_map->second){
232  TriggerTowerInformation.addToSecondEnergyRingET(getEt(secondER_TT));
233  saturation = saturation || getTTowerSat(secondER_TT);
234  if(m_storeEnergyRingTTIDs) {
235  TriggerTowerInformation.includeTTIDinSecondER(secondER_TT);
236  }
237  }
238 
239  //setting saturation for jLJ
240  if(saturation) TriggerTowerInformation.setLRjetSat();
241 
242  // Storing all jets in the same map!
243  FCALJetTowerIDLists[myTTIDKey] = TriggerTowerInformation;
244  }
245 
246  }//end of centre_neta loop
247  }//end of centre_nphi loop
248  }//end of myCounter loop
249 
250  return FCALJetTowerIDLists;
251 }
252 
253 int LVL1::jFEXForwardJetsAlgo::SumEtSeed(unsigned int TTID) {
254 
255  // Exists the jTower in the mapping?
256  auto it_seed_map = m_SeedRingMap.find(TTID);
257  if(it_seed_map == m_SeedRingMap.end()) {
258  ATH_MSG_ERROR("Could not find TT" << TTID << " in Jet seed file.");
259  return 0;
260  }
261  int summedEt = 0;
262  for(const auto& seedTT : it_seed_map->second){
263  summedEt += getEt(seedTT);
264  }
265 
266  return summedEt;
267 }
268 
269 bool LVL1::jFEXForwardJetsAlgo::isLM(unsigned int TTID){
270 
271  int CentralSeedEt = SumEtSeed(TTID);
272 
273  // Exists the jTower in the seach (greater than) tower map?
274  auto it_seed_map = m_SearchGMap.find(TTID);
275  if(it_seed_map == m_SearchGMap.end()) {
276  ATH_MSG_ERROR("Could not find TT" << TTID << " in the seach (>) local maxima for jets file.");
277  return false;
278  }
279 
280  bool greater = true;
281  for (const auto& Gtt : it_seed_map->second ){
282  //checking if the Central seed has strictly more energy than its neighbours
283  int tmpEt = SumEtSeed(Gtt);
284  if( !(CentralSeedEt > tmpEt) ){
285  greater = false;
286  break;
287  }
288  }
289 
290  //No need to continue.. Not a LM
291  if(!greater){
292  return false;
293  }
294 
295  // Exists the jTower in the seach (greater or equal than) tower map?
296  it_seed_map = m_SearchGeMap.find(TTID);
297  if(it_seed_map == m_SearchGeMap.end()) {
298  ATH_MSG_ERROR("Could not find TT" << TTID << " in the seach (>=) local maxima for jets file.");
299  return false;
300  }
301 
302  bool greaterEqual = true;
303  for (const auto& Gtt : it_seed_map->second ){
304  //checking if the Central seed has more energy or equal than its neighbours
305  int tmpEt = SumEtSeed(Gtt);
306  if( !(CentralSeedEt >= tmpEt) ){
307  greaterEqual = false;
308  break;
309  }
310  }
311 
312  //Not a LM
313  if(!greaterEqual){
314  return false;
315  }
316  return true;
317 }
318 
319 bool LVL1::jFEXForwardJetsAlgo::isLMabove(unsigned int TTID){
320 
321  // Exists the jTower in the correction tower map?
322  auto it_seed_map = m_CorrMap.find(TTID);
323  if(it_seed_map == m_CorrMap.end()) {
324  ATH_MSG_ERROR("Could not find TT" << TTID << " in the correction (LM above) for jets file.");
325  return false;
326  }
327 
328  // If there is not Trigger tower to correct with, then return false
329  const auto & GttVec = it_seed_map->second;
330  if (! GttVec.empty()) return isLM(GttVec.front());
331  return false;
332 }
333 
334 unsigned int LVL1::jFEXForwardJetsAlgo::elementsCorr(unsigned int TTID){
335  auto it_seed_map = m_CorrMap.find(TTID);
336  if(it_seed_map == m_CorrMap.end()) {
337  ATH_MSG_ERROR("Could not find TT" << TTID << " in the condition (greater than) for jets file.");
338  return 0;
339  }
340 
341  return (it_seed_map->second).size();
342 }
343 
344 bool LVL1::jFEXForwardJetsAlgo::condCorr(unsigned int TTID){
345 
346  // Exists the jTower in the correction tower map?
347  auto it_seed_map = m_CorrMap.find(TTID);
348  if(it_seed_map == m_CorrMap.end()) {
349  ATH_MSG_ERROR("Could not find TT" << TTID << " in the condition (greater than) for jets file.");
350  return false;
351  }
352 
353  // If there is no TT to check then the Et of central is always bigger :D
354  if( (it_seed_map->second).size() == 0){
355  ATH_MSG_ERROR("Elements=0 in condCorr function for element"<< TTID <<". This should never happend. REPORT IT!");
356  return true;
357  }
358 
359  int centralEt = getEt(TTID);
360  int centralSeed = SumEtSeed(TTID);
361  for (const auto& Gtt : it_seed_map->second ){
362  //Checking if central Et is always strictly greater than the previous TT Et
363  int tmpEt = getEt(Gtt);
364  int tmpSeedEt = SumEtSeed(Gtt);
365  if( !(centralEt > tmpEt && centralSeed >= tmpSeedEt ) ){
366  return false;
367  }
368  }
369 
370  return true;
371 
372 }
373 
374 unsigned int LVL1::jFEXForwardJetsAlgo::elementsCorr2(unsigned int TTID){
375  auto it_seed_map = m_Corr2Map.find(TTID);
376  if(it_seed_map == m_Corr2Map.end()) {
377  ATH_MSG_ERROR("Could not find TT" << TTID << " in the condition (greater than) for jets file.");
378  return 0;
379  }
380 
381  return (it_seed_map->second).size();
382 }
383 
384 bool LVL1::jFEXForwardJetsAlgo::condCorr2(unsigned int TTID){
385 
386  // Exists the jTower in the correction tower map?
387  auto it_seed_map = m_Corr2Map.find(TTID);
388  if(it_seed_map == m_Corr2Map.end()) {
389  ATH_MSG_ERROR("Could not find TT" << TTID << " in the correction (greater or equal) file.");
390  return false;
391  }
392 
393  int centralEt = getEt(TTID);
394  int centralSeed = SumEtSeed(TTID);
395 
396  for (const auto& Gtt : it_seed_map->second ){
397  //Checking if central Et is always greater or equal than the previous TT Et
398  int tmpEt = getEt(Gtt);
399 
400  //(central >= 1stElem or seedcentral > seed1stElem) and ( central >= 2stElem or seedcentral > seed2stElem)
401  if( !( centralEt >= tmpEt || centralSeed > SumEtSeed(Gtt) ) ){
402  return false;
403  }
404  }
405 
406  return true;
407 
408 }
409 
410 std::unordered_map<int, jFEXForwardJetsInfo> LVL1::jFEXForwardJetsAlgo::calculateJetETs() {
411 
412  std::unordered_map<int, jFEXForwardJetsInfo> localMaximas = FcalJetsTowerIDLists();
413  return localMaximas;
414 }
415 
416 
417 void LVL1::jFEXForwardJetsAlgo::setFPGAEnergy(std::unordered_map<int,std::vector<int> > et_map){
418  m_map_Etvalues=et_map;
419 }
420 
421 //getter for tower saturation
422 bool LVL1::jFEXForwardJetsAlgo::getTTowerSat(unsigned int TTID ) {
423  if(TTID == 0) {
424  return false;
425  }
426 
427  const LVL1::jTower * tmpTower = m_jTowerContainer->findTower(TTID);
428  return tmpTower->getTowerSat();
429 }
430 
431 StatusCode LVL1::jFEXForwardJetsAlgo::ReadfromFile(const std::string & fileName, std::unordered_map<unsigned int, std::vector<unsigned int> >& fillingMap){
432 
433  std::string myline;
434 
435  //opening file with ifstream
436  std::ifstream myfile(fileName);
437 
438  if ( !myfile.is_open() ){
439  ATH_MSG_ERROR("Could not open file:" << fileName);
440  return StatusCode::FAILURE;
441  }
442 
443  //loading the mapping information
444  while ( std::getline (myfile, myline) ) {
445 
446  //removing the header of the file (it is just information!)
447  if(myline[0] == '#') continue;
448 
449  //Splitting myline in different substrings
450  std::stringstream oneLine(myline);
451 
452  //reading elements
453  std::vector<unsigned int> elements;
454  std::string element;
455  while(std::getline(oneLine, element, ' '))
456  {
457  elements.push_back(std::stoi(element));
458  }
459 
460  // We should have at least two elements! Central TT and (at least) itself
461  if(elements.size() < 1){
462  ATH_MSG_ERROR("Unexpected number of elemennts (<1 expected) in file: "<< fileName);
463  return StatusCode::FAILURE;
464  }
465 
466  //Central TiggerTower
467  unsigned int TTID = elements.at(0);
468 
469  // rest of TTs that need to be checked
470  elements.erase(elements.begin());
471 
472  fillingMap[TTID] = elements;
473 
474  }
475  myfile.close();
476 
477  return StatusCode::SUCCESS;
478 }
479 
480 
481 
482 }// end of namespace LVL1
483 
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_EMB_start_phi
constexpr static int jFEX_algoSpace_EMB_start_phi
Definition: FEXAlgoSpaceDefs.h:89
LVL1::jFEXForwardJetsAlgo::getTTowerSat
bool getTTowerSat(unsigned int TTID)
Definition: jFEXForwardJetsAlgo.cxx:422
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::jFEXForwardJetsAlgo::jFEXForwardJetsAlgo
jFEXForwardJetsAlgo(const std::string &type, const std::string &name, const IInterface *parent)
Constructors.
Definition: jFEXForwardJetsAlgo.cxx:30
LVL1::jFEXForwardJetsAlgo::isLM
bool isLM(unsigned int TTID)
Definition: jFEXForwardJetsAlgo.cxx:269
LVL1::jFEXForwardJetsAlgo::setup
virtual void setup(int inputTable[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width], int jfex) override
Definition: jFEXForwardJetsAlgo.cxx:72
LVL1::jFEXForwardJetsAlgo::setFPGAEnergy
virtual void setFPGAEnergy(std::unordered_map< int, std::vector< int > > et_map) override
Definition: jFEXForwardJetsAlgo.cxx:417
LVL1::jFEXForwardJetsInfo::includeTTIDinSecondER
void includeTTIDinSecondER(int secondER_TTID)
Definition: jFEXForwardJetsInfo.cxx:102
LVL1::jFEXForwardJetsInfo::setCentreTTPhi
void setCentreTTPhi(float centreTTPhi)
Definition: jFEXForwardJetsInfo.cxx:35
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::jFEXForwardJetsAlgo::getEt
int getEt(unsigned int TTID)
Definition: jFEXForwardJetsAlgo.cxx:88
LVL1::jTower::centrephi_toPI
float centrephi_toPI() const
Definition: jTower.h:85
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
jFEXForwardJetsAlgo.h
LVL1::jFEXForwardJetsInfo::setSRjetSat
void setSRjetSat()
Definition: jFEXForwardJetsInfo.h:37
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_height
constexpr static int jFEX_algoSpace_height
Definition: FEXAlgoSpaceDefs.h:27
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_EMB_end_phi
constexpr static int jFEX_algoSpace_EMB_end_phi
Definition: FEXAlgoSpaceDefs.h:90
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_A_lowerEM_eta
constexpr static int jFEX_algoSpace_A_lowerEM_eta
Definition: FEXAlgoSpaceDefs.h:51
LVL1::jFEXForwardJetsAlgo::ReadfromFile
StatusCode ReadfromFile(const std::string &, std::unordered_map< unsigned int, std::vector< unsigned int > > &)
Definition: jFEXForwardJetsAlgo.cxx:431
LVL1::jFEXForwardJetsInfo::includeTTIDinFirstER
void includeTTIDinFirstER(int firstER_TTID)
Definition: jFEXForwardJetsInfo.cxx:93
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::jFEXForwardJetsInfo
Definition: jFEXForwardJetsInfo.h:25
LVL1
eFexTowerBuilder creates xAOD::eFexTowerContainer from supercells (LATOME) and triggerTowers (TREX) i...
Definition: ICMMCPHitsCnvTool.h:18
CxxUtils::fpcompare::greater
bool greater(double a, double b)
Compare two FP numbers, working around x87 precision issues.
Definition: fpcompare.h:140
LVL1::jFEXForwardJetsAlgo::isLMabove
bool isLMabove(unsigned int TTID)
Definition: jFEXForwardJetsAlgo.cxx:319
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_C_lowerEM_eta
constexpr static int jFEX_algoSpace_C_lowerEM_eta
Definition: FEXAlgoSpaceDefs.h:71
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_EMIE_end_phi
constexpr static int jFEX_algoSpace_EMIE_end_phi
Definition: FEXAlgoSpaceDefs.h:92
LVL1::jTower::getTowerSat
bool getTowerSat() const
Definition: jTower.h:65
AthAlgorithm.h
LVL1::jFEXForwardJetsInfo::addToFirstEnergyRingET
void addToFirstEnergyRingET(int firstER_ET)
Definition: jFEXForwardJetsInfo.cxx:84
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_C_upperEM_eta
constexpr static int jFEX_algoSpace_C_upperEM_eta
Definition: FEXAlgoSpaceDefs.h:72
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_C_EMIE_start_eta
constexpr static int jFEX_algoSpace_C_EMIE_start_eta
Definition: FEXAlgoSpaceDefs.h:65
LVL1::jFEXForwardJetsAlgo::globalEtaPhi
std::array< float, 2 > globalEtaPhi(int TTID)
Definition: jFEXForwardJetsAlgo.cxx:79
LVL1::jFEXForwardJetsAlgo::initialize
virtual StatusCode initialize() override
standard Athena-Algorithm method
Definition: jFEXForwardJetsAlgo.cxx:40
FortranAlgorithmOptions.fileName
fileName
Definition: FortranAlgorithmOptions.py:13
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
LVL1::jFEXForwardJetsAlgo::~jFEXForwardJetsAlgo
virtual ~jFEXForwardJetsAlgo()
Destructor.
Definition: jFEXForwardJetsAlgo.cxx:37
LVL1::jFEXForwardJetsAlgo::elementsCorr2
unsigned int elementsCorr2(unsigned int TTID)
Definition: jFEXForwardJetsAlgo.cxx:374
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
LVL1::jFEXForwardJetsAlgo::safetyTest
virtual StatusCode safetyTest() override
Definition: jFEXForwardJetsAlgo.cxx:57
LVL1::FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width
constexpr static int jFEX_wide_algoSpace_width
Definition: FEXAlgoSpaceDefs.h:25
LVL1::jFEXForwardJetsInfo::setCentreLocalTTPhi
void setCentreLocalTTPhi(float centreLocalTTPhi)
Definition: jFEXForwardJetsInfo.cxx:54
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::jFEXForwardJetsInfo::includeTTinSeed
void includeTTinSeed(int TT_ID)
Definition: jFEXForwardJetsInfo.cxx:64
FEXAlgoSpaceDefs.h
LVL1::jFEXForwardJetsInfo::addToSeedET
void addToSeedET(int seed_ET)
Definition: jFEXForwardJetsInfo.cxx:74
TrigConf::name
Definition: HLTChainList.h:35
LVL1::jFEXForwardJetsInfo::setCentreTTEta
void setCentreTTEta(float centreTTEta)
Definition: jFEXForwardJetsInfo.cxx:25
jTowerContainer.h
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_FCAL_end_phi
constexpr static int jFEX_algoSpace_FCAL_end_phi
Definition: FEXAlgoSpaceDefs.h:94
jFEXForwardJetsInfo.h
LVL1::jFEXForwardJetsAlgo::condCorr
bool condCorr(unsigned int TTID)
Definition: jFEXForwardJetsAlgo.cxx:344
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_A_FCAL_start_eta
constexpr static int jFEX_algoSpace_A_FCAL_start_eta
Definition: FEXAlgoSpaceDefs.h:47
LVL1::jFEXForwardJetsInfo::setCentreLocalTTEta
void setCentreLocalTTEta(float centreLocalTTEta)
Definition: jFEXForwardJetsInfo.cxx:44
CaloCellContainer.h
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_A_EMIE_eta
constexpr static int jFEX_algoSpace_A_EMIE_eta
Definition: FEXAlgoSpaceDefs.h:46
LVL1::jFEXForwardJetsAlgo::reset
virtual StatusCode reset() override
Definition: jFEXForwardJetsAlgo.cxx:68
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
LVL1::jFEXForwardJetsAlgo::SumEtSeed
int SumEtSeed(unsigned int TTID)
Definition: jFEXForwardJetsAlgo.cxx:253
LVL1::jFEXForwardJetsInfo::setLRjetSat
void setLRjetSat()
Definition: jFEXForwardJetsInfo.h:38
LVL1::jFEXForwardJetsAlgo::calculateJetETs
virtual std::unordered_map< int, jFEXForwardJetsInfo > calculateJetETs() override
Definition: jFEXForwardJetsAlgo.cxx:410
LVL1::jFEXForwardJetsAlgo::FcalJetsTowerIDLists
virtual std::unordered_map< int, jFEXForwardJetsInfo > FcalJetsTowerIDLists() override
Definition: jFEXForwardJetsAlgo.cxx:102
LVL1::jTower
The jTower class is an interface object for jFEX trigger algorithms The purposes are twofold:
Definition: jTower.h:40
CaloIdManager.h
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_A_upperEM_eta
constexpr static int jFEX_algoSpace_A_upperEM_eta
Definition: FEXAlgoSpaceDefs.h:52
LVL1::jFEXForwardJetsAlgo::elementsCorr
unsigned int elementsCorr(unsigned int TTID)
Definition: jFEXForwardJetsAlgo.cxx:334
calibdata.copy
bool copy
Definition: calibdata.py:27
LVL1::jFEXForwardJetsAlgo::condCorr2
bool condCorr2(unsigned int TTID)
Definition: jFEXForwardJetsAlgo.cxx:384
AthAlgTool
Definition: AthAlgTool.h:26
jTower.h
StoreGateSvc.h
LVL1::jFEXForwardJetsInfo::addToSecondEnergyRingET
void addToSecondEnergyRingET(int secondER_ET)
Definition: jFEXForwardJetsInfo.cxx:111
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_FCAL_start_phi
constexpr static int jFEX_algoSpace_FCAL_start_phi
Definition: FEXAlgoSpaceDefs.h:93