ATLAS Offline Software
jFEXForwardElecInfo.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 //***************************************************************************
5 // jFEXForwardElecInfo -
6 // -------------------
7 // begin : 12 05 2022
8 // email : ulla.blumenschein@cern.ch
9 //***************************************************************************
10 
11 #include <vector>
14 
15 
16 void LVL1::jFEXForwardElecInfo::setup(int jfex, uint ttid, int neta, int nphi){
17  m_jfex = jfex;
18  m_coreTTID = ttid;
19  m_ieta = neta;
20  m_iphi = nphi;
21 }
22 
23 
24 void LVL1::jFEXForwardElecInfo::setup(int *cval, uint reso){
25  m_reso = reso;
26  for(int i=0;i<9;i++) m_cval[i] = cval[i];
27 }
28 
29 
31  return m_coreTTID;
32 }
33 
35  return m_ieta;
36 }
37 
39  return m_iphi;
40 }
41 
43  m_coreTTfEta = fEta;
44 }
45 
46 
48  return m_coreTTfEta;
49 }
50 
52  return m_ieta;
53 }
54 
56  m_coreTTfPhi = fPhi;
57 }
58 
60  return m_coreTTfPhi;
61 }
62 
64  m_coreTTEtEM = ET_EM;
65 }
66 
68  return m_coreTTEtEM;
69 }
70 
72  m_coreTTsatEM = sat;
73 }
74 
76  return m_coreTTsatEM;
77 }
78 
80  m_nextTTID = TTID;
81 }
82 
84  return m_nextTTID;
85 }
86 
88  m_nextTTEtEM = nextEt;
89 }
90 
92  return m_nextTTEtEM;
93 }
94 
96  m_nextTTsatEM = sat;
97 }
98 
100  return m_nextTTsatEM;
101 }
102 
104  m_TTEtEMiso = iso_ET;
105 }
106 
108  m_TTEtEMiso += iso_ET;
109 }
110 
112  return m_TTEtEMiso;
113 }
114 
116  m_TTClusEtEM = m_coreTTEtEM + m_nextTTEtEM;
117  m_TTClusSatEM = m_coreTTsatEM || m_nextTTsatEM;
118 }
119 
121  return m_TTClusEtEM ;
122 }
123 
125  return m_TTClusSatEM ;
126 }
127 
129  m_TTEtHad1 = ET_HAD;
130 }
131 
133  m_TTEtHad1 += ET_HAD;
134 }
135 
137  return m_TTEtHad1;
138 }
139 
141  m_TTEtHad2 = ET_HAD;
142 }
143 
145  return m_TTEtHad2;
146 }
147 
149  return m_EtEMiso;
150 }
151 
153  return m_EtHad2;
154 }
155 
157  return m_EtHad1;
158 }
159 
161  return m_et ;
162 }
163 
165  return m_eta;
166 }
167 
169  return m_phi;
170 }
171 
173  return m_tob;
174 }
175 
177  m_TTsInSearchWindow.push_back(TT_ID);
178 }
179 
181  return m_TTsInSearchWindow;
182 }
183 
184 
185 
186 // Calculating Top quantities
187 
189  m_res = 0;
190  m_sat = 0;
191  m_emiso = 0;
192  m_emfr1 = 0;
193  m_emfr2 = 0;
194  m_eta = 0;
195  m_phi = 0;
196  m_et = 0;
197  m_tob = 0;
198  m_EtEMiso = 0;
199  m_EtHad1 = 0;
200  m_EtHad2 = 0;
201  m_EtEM = 0;
202 
203  if(m_jfex == 5) {
204  m_eta = m_ieta -8;
205  if(m_ieta < FEXAlgoSpaceDefs::jFEX_algoSpace_A_EMIE_eta) { // ieta lower than EMIE stats -> belong to EMB
206  m_phi = m_iphi-8;
207  }
208  else if(m_ieta < FEXAlgoSpaceDefs::jFEX_algoSpace_A_FCAL_start_eta) { // ieta lower than FCAL stats -> belong to EMIE
209  m_phi = m_iphi -4;
210  }
211  else { // rest ieta belongs to FCAL
212  m_phi = m_iphi -2;
213  }
214  }
215  else if(m_jfex == 0) {
216  m_eta = 36 - m_ieta;
217 
218  if(m_ieta < FEXAlgoSpaceDefs::jFEX_algoSpace_C_FCAL_end_eta) { // ieta lower than FCal ends -> FCAL
219  m_phi = m_iphi -2 ;
220  }
221  else if(m_ieta < FEXAlgoSpaceDefs::jFEX_algoSpace_C_EMIE_end_eta) {// ieta lower than EMIE ends -> EMIE
222  m_phi = m_iphi -4 ;
223  }
224  else {// rest of ieta -> EMB
225  m_phi = m_iphi -8 ;
226  }
227  }
228 
229  calcTTClusEtEM();
230 
231  if(m_reso > 0){
232  m_et = m_TTClusEtEM/m_reso;
233  m_EtEMiso = m_TTEtEMiso/m_reso;
234  m_EtHad1 = m_TTEtHad1/m_reso;
235  m_EtHad2 = m_TTEtHad2/m_reso;
236  m_EtEM = m_coreTTEtEM/m_reso;
237  }
238 
239  if (m_et > 0x7ff) { //0x7ff is 11 bits
240  m_et = 0x7ff;
241  //current FW convention is to NOT set the saturation bit on value overflow, but only to propagate cell saturation information from LAr
242  //m_sat=1;
243  }
244  m_sat = m_TTClusSatEM;
245 
246 
247  // jFEX internal values are at higher granularity (25MeV), not output granularity (200MeV).
248  // since we avoid divisions, MeV values are just as good (given that input granularity is already 25MeV)
249  if (m_TTClusEtEM > m_cval[2] * m_TTEtEMiso) {
250  m_emiso = 3;
251  } else if (m_TTClusEtEM > m_cval[1] * m_TTEtEMiso){
252  m_emiso = 2;
253  } else if (m_TTClusEtEM > m_cval[0] * m_TTEtEMiso){
254  m_emiso = 1;
255  }
256 
257  // hadronic fraction: only compare to core (=seed) tower
258  if (m_coreTTEtEM > m_cval[5] * m_TTEtHad1) {
259  m_emfr1 = 3;
260  } else if (m_coreTTEtEM > m_cval[4] * m_TTEtHad1){
261  m_emfr1 = 2;
262  } else if (m_coreTTEtEM > m_cval[3] * m_TTEtHad1){
263  m_emfr1 = 1;
264  }
265  if (m_coreTTEtEM > m_cval[8] * m_TTEtHad2) {
266  m_emfr2 = 3;
267  } else if (m_coreTTEtEM > m_cval[7] * m_TTEtHad2){
268  m_emfr2 = 2;
269  } else if (m_coreTTEtEM > m_cval[6] * m_TTEtHad2){
270  m_emfr2 = 1;
271  }
272 
273  m_tob = m_tob + (m_res << FEXAlgoSpaceDefs::jEM_resBit) + (m_emfr2 << FEXAlgoSpaceDefs::jEM_emf2Bit) + (m_emfr1 << FEXAlgoSpaceDefs::jEM_emf1Bit) + ( m_emiso << FEXAlgoSpaceDefs::jEM_isoBit) + (m_et << FEXAlgoSpaceDefs::jEM_etBit) + (m_eta << FEXAlgoSpaceDefs::jEM_etaBit) + (m_phi << FEXAlgoSpaceDefs::jEM_phiBit) + m_sat;
274 }
275 
276 
277 
278 std::unique_ptr<LVL1::jFEXForwardElecTOB> LVL1::jFEXForwardElecInfo::getFwdElTOBs(){
279 
280  std::unique_ptr<LVL1::jFEXForwardElecTOB> tob = std::make_unique<LVL1::jFEXForwardElecTOB>();
281 
282  calcFwdElEDM();
283 
284  tob->setET(m_et);
285  tob->setPhi(m_phi);
286  tob->setEta(m_eta);
287  tob->setIso(m_emiso);
288  tob->setEMf1(m_emfr1);
289  tob->setEMf2(m_emfr2);
290  tob->setSat(m_sat);
291  return tob;
292 }
LVL1::jFEXForwardElecInfo::calcFwdElEDM
void calcFwdElEDM()
Calculate variables for top word.
Definition: jFEXForwardElecInfo.cxx:188
LVL1::jFEXForwardElecInfo::getEtHad1
uint getEtHad1()
Definition: jFEXForwardElecInfo.cxx:156
LVL1::jFEXForwardElecInfo::includeTTinSearchWindow
void includeTTinSearchWindow(uint TT_ID)
Definition: jFEXForwardElecInfo.cxx:176
LVL1::jFEXForwardElecTOB::setET
void setET(unsigned int)
Definition: jFEXForwardElecTOB.cxx:44
LVL1::jFEXForwardElecInfo::getTTClusSatEM
bool getTTClusSatEM()
Definition: jFEXForwardElecInfo.cxx:124
LVL1::jFEXForwardElecInfo::m_iphi
int m_iphi
Definition: jFEXForwardElecInfo.h:100
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
LVL1::jFEXForwardElecInfo::getTTEtHad2
int getTTEtHad2()
Definition: jFEXForwardElecInfo.cxx:144
LVL1::jFEXForwardElecInfo::getCoreIeta
uint getCoreIeta()
Definition: jFEXForwardElecInfo.cxx:34
LVL1::jFEXForwardElecInfo::getTTinSearchWindow
const std::vector< uint > & getTTinSearchWindow()
Definition: jFEXForwardElecInfo.cxx:180
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_C_EMIE_end_eta
constexpr static int jFEX_algoSpace_C_EMIE_end_eta
Definition: FEXAlgoSpaceDefs.h:68
LVL1::jFEXForwardElecInfo::setCoreTTEtEM
void setCoreTTEtEM(int ET_EM)
Definition: jFEXForwardElecInfo.cxx:63
LVL1::FEXAlgoSpaceDefs::jEM_resBit
constexpr static int jEM_resBit
Definition: FEXAlgoSpaceDefs.h:109
LVL1::jFEXForwardElecInfo::getCoreTTiEta
uint getCoreTTiEta()
Definition: jFEXForwardElecInfo.cxx:51
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_C_FCAL_end_eta
constexpr static int jFEX_algoSpace_C_FCAL_end_eta
Definition: FEXAlgoSpaceDefs.h:70
LVL1::jFEXForwardElecInfo::addTTEtEMiso
void addTTEtEMiso(int iso_ET)
Definition: jFEXForwardElecInfo.cxx:107
LVL1::jFEXForwardElecInfo::m_ieta
int m_ieta
Definition: jFEXForwardElecInfo.h:99
LVL1::jFEXForwardElecInfo::getNextTTSatEM
bool getNextTTSatEM()
Definition: jFEXForwardElecInfo.cxx:99
LVL1::FEXAlgoSpaceDefs::jEM_isoBit
constexpr static int jEM_isoBit
Definition: FEXAlgoSpaceDefs.h:112
LVL1::jFEXForwardElecInfo::setCoreTTSatEM
void setCoreTTSatEM(bool sat)
Definition: jFEXForwardElecInfo.cxx:71
LVL1::jFEXForwardElecInfo::setTTEtHad1
void setTTEtHad1(int ET_HAD)
Definition: jFEXForwardElecInfo.cxx:128
LVL1::jFEXForwardElecTOB::setEMf1
void setEMf1(unsigned int)
Definition: jFEXForwardElecTOB.cxx:54
LVL1::jFEXForwardElecInfo::getTTEtHad1
int getTTEtHad1()
Definition: jFEXForwardElecInfo.cxx:136
LVL1::jFEXForwardElecInfo::addTTEtHad1
void addTTEtHad1(int ET_HAD)
Definition: jFEXForwardElecInfo.cxx:132
LVL1::jFEXForwardElecInfo::getFwdElTOBs
std::unique_ptr< jFEXForwardElecTOB > getFwdElTOBs()
Calculate top word.
Definition: jFEXForwardElecInfo.cxx:278
LVL1::jFEXForwardElecInfo::setTTEtHad2
void setTTEtHad2(int ET_HAD)
Definition: jFEXForwardElecInfo.cxx:140
LVL1::jFEXForwardElecTOB::setPhi
void setPhi(unsigned int)
Definition: jFEXForwardElecTOB.cxx:39
LVL1::jFEXForwardElecInfo::setTTEtEMiso
void setTTEtEMiso(int iso_ET)
Definition: jFEXForwardElecInfo.cxx:103
LVL1::jFEXForwardElecInfo::getTTEtEMiso
int getTTEtEMiso()
Definition: jFEXForwardElecInfo.cxx:111
LVL1::jFEXForwardElecInfo::setNextTTEtEM
void setNextTTEtEM(int ET_EM)
Definition: jFEXForwardElecInfo.cxx:87
uint
unsigned int uint
Definition: LArOFPhaseFill.cxx:20
LVL1::jFEXForwardElecInfo::setup
void setup(int jfex, uint ttid, int neta, int nphi)
Definition: jFEXForwardElecInfo.cxx:16
LVL1::jFEXForwardElecInfo::getEtEMiso
uint getEtEMiso()
Definition: jFEXForwardElecInfo.cxx:148
lumiFormat.i
int i
Definition: lumiFormat.py:85
LVL1::jFEXForwardElecInfo::calcTTClusEtEM
void calcTTClusEtEM()
Definition: jFEXForwardElecInfo.cxx:115
LVL1::jFEXForwardElecInfo::m_coreTTID
uint m_coreTTID
Definition: jFEXForwardElecInfo.h:98
LVL1::jFEXForwardElecInfo::getNextTTEtEM
int getNextTTEtEM()
Definition: jFEXForwardElecInfo.cxx:91
LVL1::FEXAlgoSpaceDefs::jEM_phiBit
constexpr static int jEM_phiBit
Definition: FEXAlgoSpaceDefs.h:115
LVL1::FEXAlgoSpaceDefs::jEM_etaBit
constexpr static int jEM_etaBit
Definition: FEXAlgoSpaceDefs.h:114
LVL1::jFEXForwardElecInfo::getTTClusEtEM
int getTTClusEtEM()
Definition: jFEXForwardElecInfo.cxx:120
LVL1::jFEXForwardElecInfo::getEtHad2
uint getEtHad2()
Definition: jFEXForwardElecInfo.cxx:152
LVL1::jFEXForwardElecInfo::getCoreTTfPhi
float getCoreTTfPhi()
Definition: jFEXForwardElecInfo.cxx:59
LVL1::jFEXForwardElecInfo::getCoreTTfEta
float getCoreTTfEta()
Definition: jFEXForwardElecInfo.cxx:47
FEXAlgoSpaceDefs.h
LVL1::jFEXForwardElecInfo::getGlobalEta
int getGlobalEta()
Definition: jFEXForwardElecInfo.cxx:164
LVL1::jFEXForwardElecInfo::getCoreTTEtEM
int getCoreTTEtEM()
Definition: jFEXForwardElecInfo.cxx:67
LVL1::jFEXForwardElecInfo::getCoreTTID
uint getCoreTTID()
Definition: jFEXForwardElecInfo.cxx:30
LVL1::jFEXForwardElecTOB::setIso
void setIso(unsigned int)
Definition: jFEXForwardElecTOB.cxx:49
LVL1::jFEXForwardElecInfo::setNextTTSatEM
void setNextTTSatEM(bool sat)
Definition: jFEXForwardElecInfo.cxx:95
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_A_FCAL_start_eta
constexpr static int jFEX_algoSpace_A_FCAL_start_eta
Definition: FEXAlgoSpaceDefs.h:49
LVL1::jFEXForwardElecInfo::getEt
uint getEt()
Definition: jFEXForwardElecInfo.cxx:160
LVL1::jFEXForwardElecInfo::setNextTTID
void setNextTTID(uint TTID)
Definition: jFEXForwardElecInfo.cxx:79
LVL1::jFEXForwardElecInfo::getNextTTID
uint getNextTTID()
Definition: jFEXForwardElecInfo.cxx:83
LVL1::jFEXForwardElecTOB::setSat
void setSat(unsigned int)
Definition: jFEXForwardElecTOB.cxx:65
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_A_EMIE_eta
constexpr static int jFEX_algoSpace_A_EMIE_eta
Definition: FEXAlgoSpaceDefs.h:48
LVL1::jFEXForwardElecInfo::setCoreTTfPhi
void setCoreTTfPhi(float fphi)
Definition: jFEXForwardElecInfo.cxx:55
LVL1::FEXAlgoSpaceDefs::jEM_emf2Bit
constexpr static int jEM_emf2Bit
Definition: FEXAlgoSpaceDefs.h:110
LVL1::jFEXForwardElecInfo::m_jfex
uint m_jfex
Definition: jFEXForwardElecInfo.h:101
jFEXForwardElecInfo.h
LVL1::jFEXForwardElecInfo::getGlobalPhi
uint getGlobalPhi()
Definition: jFEXForwardElecInfo.cxx:168
LVL1::jFEXForwardElecTOB::setEMf2
void setEMf2(unsigned int)
Definition: jFEXForwardElecTOB.cxx:59
LVL1::FEXAlgoSpaceDefs::jEM_emf1Bit
constexpr static int jEM_emf1Bit
Definition: FEXAlgoSpaceDefs.h:111
LVL1::jFEXForwardElecTOB::setEta
void setEta(unsigned int)
Definition: jFEXForwardElecTOB.cxx:34
LVL1::jFEXForwardElecInfo::setCoreTTfEta
void setCoreTTfEta(float feta)
Definition: jFEXForwardElecInfo.cxx:42
LVL1::jFEXForwardElecInfo::getCoreIphi
uint getCoreIphi()
Definition: jFEXForwardElecInfo.cxx:38
LVL1::FEXAlgoSpaceDefs::jEM_etBit
constexpr static int jEM_etBit
Definition: FEXAlgoSpaceDefs.h:113
LVL1::jFEXForwardElecInfo::getCoreTTSatEM
bool getCoreTTSatEM()
Definition: jFEXForwardElecInfo.cxx:75
LVL1::jFEXForwardElecInfo::getTobWord
uint32_t getTobWord()
Definition: jFEXForwardElecInfo.cxx:172