ATLAS Offline Software
Loading...
Searching...
No Matches
LVL1::gFexInputProvider Class Reference

#include <gFexInputProvider.h>

Inheritance diagram for LVL1::gFexInputProvider:
Collaboration diagram for LVL1::gFexInputProvider:

Public Member Functions

 gFexInputProvider (const std::string &type, const std::string &name, const IInterface *parent)
virtual ~gFexInputProvider ()=default
virtual StatusCode initialize () override final
virtual StatusCode fillTopoInputEvent (TCS::TopoInputEvent &) const override final

Private Member Functions

StatusCode fillSRJet (TCS::TopoInputEvent &inputEvent) const
StatusCode fillLRJet (TCS::TopoInputEvent &inputEvent) const
StatusCode fillXEJWOJ (TCS::TopoInputEvent &inputEvent) const
StatusCode fillMHT (TCS::TopoInputEvent &inputEvent) const
StatusCode fillXENC (TCS::TopoInputEvent &inputEvent) const
StatusCode fillXERHO (TCS::TopoInputEvent &inputEvent) const
StatusCode fillTE (TCS::TopoInputEvent &inputEvent) const
StatusCode fillGESPRESSO (TCS::TopoInputEvent &inputEvent) const

Private Attributes

ToolHandle< GenericMonitoringToolm_monTool {this, "MonTool", "", "Monitoring tool to create online histograms"}
SG::ReadHandleKey< xAOD::gFexJetRoIContainerm_gJet_EDMKey {this, "gFexSRJetRoIKey", "L1_gFexSRJetRoI", "gFEX Jet EDM"}
SG::ReadHandleKey< xAOD::gFexJetRoIContainerm_gLJet_EDMKey {this, "gFexLRJetRoIKey", "L1_gFexLRJetRoI", "gFEX LJet EDM"}
SG::ReadHandleKey< xAOD::gFexGlobalRoIContainerm_gXEJWOJ_EDMKey {this, "gMETComponentsJwojKey", "L1_gMETComponentsJwoj", "gFEX XEJWOJ EDM"}
SG::ReadHandleKey< xAOD::gFexGlobalRoIContainerm_gMHT_EDMKey {this,"gMHTComponentsJwojKey", "L1_gMHTComponentsJwoj", "gFEX MHT EDM"}
SG::ReadHandleKey< xAOD::gFexGlobalRoIContainerm_gXENC_EDMKey {this, "gMETComponentsNoiseCutKey", "L1_gMETComponentsNoiseCut", "gFEX XENC EDM"}
SG::ReadHandleKey< xAOD::gFexGlobalRoIContainerm_gXERHO_EDMKey {this, "gMETComponentsRmsKey", "L1_gMETComponentsRms", "gFEX RHO ROI EDM"}
SG::ReadHandleKey< xAOD::gFexGlobalRoIContainerm_gTE_EDMKey {this, "gScalarEJwojKey", "L1_gScalarEJwoj", "gFEX TE EDM"}
SG::ReadHandleKey< xAOD::gFexGlobalRoIContainerm_gESPRESSO_EDMKey {this, "gEspressoKey", "L1_gEspresso", "gFEX gESPRESSO EDM"}

Static Private Attributes

static const int m_EtJet_conversion = 2
static const double m_EtGlobal_conversion = 0.01
static const int m_phi_conversion = 1
static const int m_eta_conversion = 40
static const double m_EtDoubleJet_conversion = 0.1
static const double m_EtDoubleGlobal_conversion = 0.1
static const double m_phiDouble_conversion = 0.05
static const double m_etaDouble_conversion = 0.025

Detailed Description

Definition at line 19 of file gFexInputProvider.h.

Constructor & Destructor Documentation

◆ gFexInputProvider()

gFexInputProvider::gFexInputProvider ( const std::string & type,
const std::string & name,
const IInterface * parent )

Definition at line 31 of file gFexInputProvider.cxx.

32 :
33 base_class(type, name, parent)
34{
35 declareInterface<LVL1::IInputTOBConverter>( this );
36}

◆ ~gFexInputProvider()

virtual LVL1::gFexInputProvider::~gFexInputProvider ( )
virtualdefault

Member Function Documentation

◆ fillGESPRESSO()

StatusCode gFexInputProvider::fillGESPRESSO ( TCS::TopoInputEvent & inputEvent) const
private

Definition at line 407 of file gFexInputProvider.cxx.

407 {
408 if (m_gESPRESSO_EDMKey.empty()) {
409 ATH_MSG_DEBUG("gFex ESPRESSO input disabled, skip filling");
410 return StatusCode::SUCCESS;
411 }
412
413 SG::ReadHandle<xAOD::gFexGlobalRoIContainer> gESPRESSO_EDM(m_gESPRESSO_EDMKey);
414 if (! gESPRESSO_EDM.isValid() ) {
415 //gESPRESSO is only active in HI runs and only available from data. If not present simply skip it.
416 ATH_MSG_DEBUG("gFex ESPRESSO input is not available, skip filling");
417 return StatusCode::SUCCESS;
418 }
419
420 for(const xAOD::gFexGlobalRoI* gFexRoI : * gESPRESSO_EDM) {
421
422 auto globalType = gFexRoI->globalType();
423 if ( globalType != 1 ) { continue; } // 1 = scalar values (MET, SumET)
424
425 ATH_MSG_DEBUG( "EDM gFex ESPRESSO type: "
426 << gFexRoI->globalType()
427 << " sumEt: "
428 << gFexRoI->METquantityTwo() // returns sumEt in MeV
429 );
430
431 unsigned int sumEtTopo = gFexRoI->METquantityTwo()*m_EtGlobal_conversion;
432
433 TCS::gTETOB gespresso( sumEtTopo, TCS::GESPRESSO );
434
435 gespresso.setSumEtDouble( static_cast<double>(sumEtTopo*m_EtDoubleGlobal_conversion) );
436
437 inputEvent.setgESPRESSO( gespresso );
438 auto mon_h_gTEsumEt = Monitored::Scalar("gESPRESSOsumEt", gespresso.sumEtDouble());
439 Monitored::Group(m_monTool, mon_h_gTEsumEt);
440
441 }
442
443 return StatusCode::SUCCESS;
444}
#define ATH_MSG_DEBUG(x)
static const double m_EtGlobal_conversion
static const double m_EtDoubleGlobal_conversion
SG::ReadHandleKey< xAOD::gFexGlobalRoIContainer > m_gESPRESSO_EDMKey
ToolHandle< GenericMonitoringTool > m_monTool
StatusCode setgESPRESSO(const gTETOB &gESPRESSO)
gFexGlobalRoI_v1 gFexGlobalRoI
Define the latest version of the eFexEMRoI class.

◆ fillLRJet()

StatusCode gFexInputProvider::fillLRJet ( TCS::TopoInputEvent & inputEvent) const
private

Definition at line 115 of file gFexInputProvider.cxx.

115 {
116
117 if (m_gLJet_EDMKey.empty()) {
118 ATH_MSG_DEBUG("gFex LJet input disabled, skip filling");
119 return StatusCode::SUCCESS;
120 }
121
122 SG::ReadHandle<xAOD::gFexJetRoIContainer> gLJet_EDM(m_gLJet_EDMKey);
123 ATH_CHECK(gLJet_EDM.isValid());
124
125 for(const xAOD::gFexJetRoI* gFexRoI : * gLJet_EDM) {
126
127 auto jetType = gFexRoI->gFexType();
128 if ( jetType != 3 ) { continue; } // 3 = gFEX gJet (L1Topo gLJet)
129
130 ATH_MSG_DEBUG( "EDM gFex LJet type: "
131 << gFexRoI->gFexType()
132 << " Et: "
133 << gFexRoI->et() // returns the et value of the jet in units of MeV
134 << " gFexTobEt: "
135 << gFexRoI->gFexTobEt() // returns the et value of the jet in units of 200 MeV
136 << " eta: "
137 << gFexRoI->eta() // returns a floating point eta corresponding to the center of the tower (fixed values, defined in gFexJetRoI_v1.cxx)
138 << " phi: "
139 << gFexRoI->phi() // returns a floating point phi corresponding to the center of the tower
140 << " iPhiTopo: "
141 << gFexRoI->iPhiTopo() // returns an integer phi from 0 to 127
142 );
143
144 unsigned int EtTopo = gFexRoI->gFexTobEt()*m_EtJet_conversion;
145 unsigned int phiTopo = gFexRoI->iPhiTopo()*m_phi_conversion;
146 int etaTopo = static_cast<int>(gFexRoI->eta()*m_eta_conversion);
147
148 TCS::gLJetTOB gJet( EtTopo, etaTopo, phiTopo );
149
150 gJet.setEtDouble( static_cast<double>(EtTopo*m_EtDoubleJet_conversion) );
151 gJet.setEtaDouble( static_cast<double>(etaTopo*m_etaDouble_conversion) );
152 gJet.setPhiDouble( static_cast<double>(phiTopo*m_phiDouble_conversion) );
153
154 inputEvent.addgLJet( gJet );
155 auto mon_h_gLJetPt = Monitored::Scalar("gLJetTOBPt", gJet.EtDouble());
156 auto mon_h_gLJetPhi = Monitored::Scalar("gLJetTOBPhi", gJet.phi());
157 auto mon_h_gLJetEta = Monitored::Scalar("gLJetTOBEta", gJet.eta());
158 Monitored::Group(m_monTool, mon_h_gLJetPt, mon_h_gLJetPhi, mon_h_gLJetEta);
159
160 }
161
162 return StatusCode::SUCCESS;
163
164}
#define ATH_CHECK
Evaluate an expression and check for errors.
static const double m_phiDouble_conversion
static const double m_EtDoubleJet_conversion
static const int m_EtJet_conversion
static const int m_eta_conversion
static const int m_phi_conversion
static const double m_etaDouble_conversion
SG::ReadHandleKey< xAOD::gFexJetRoIContainer > m_gLJet_EDMKey
StatusCode addgLJet(const gLJetTOB &jet)
gFexJetRoI_v1 gFexJetRoI
Define the latest version of the gFexJetRoI class.
Definition gFexJetRoI.h:16

◆ fillMHT()

StatusCode gFexInputProvider::fillMHT ( TCS::TopoInputEvent & inputEvent) const
private

Definition at line 220 of file gFexInputProvider.cxx.

220 {
221
222 if (m_gMHT_EDMKey.empty()) {
223 ATH_MSG_DEBUG("gFex MHT input disabled, skip filling");
224 return StatusCode::SUCCESS;
225 }
226
227 SG::ReadHandle<xAOD::gFexGlobalRoIContainer> gMHT_EDM(m_gMHT_EDMKey);
228 ATH_CHECK(gMHT_EDM.isValid());
229
230 for(const xAOD::gFexGlobalRoI* gFexRoI : * gMHT_EDM) {
231
232 auto globalType = gFexRoI->globalType();
233 if ( globalType != 3 ) { continue; } // 3 = MET hard term components (MHTx, MHTy)
234
235 ATH_MSG_DEBUG( "EDM gFex MHT type: "
236 << gFexRoI->globalType()
237 << " Ex: "
238 << gFexRoI->METquantityOne() // returns the Ex component in MeV
239 << " Ey: "
240 << gFexRoI->METquantityTwo() // returns the Ey component in MeV
241 );
242
243 int ExTopo = gFexRoI->METquantityOne()*m_EtGlobal_conversion;
244 int EyTopo = gFexRoI->METquantityTwo()*m_EtGlobal_conversion;
245
246 unsigned long long ExTopoLong = static_cast<unsigned long long>(ExTopo);
247 unsigned long long EyTopoLong = static_cast<unsigned long long>(EyTopo);
248
249 unsigned long long Et2Topo = ExTopoLong*ExTopoLong + EyTopoLong*EyTopoLong;
250 unsigned int EtTopo = std::sqrt(Et2Topo);
251
252 TCS::gXETOB gxe( -ExTopo, -EyTopo, EtTopo, TCS::GMHT );
253
254 gxe.setExDouble( static_cast<double>(ExTopo*m_EtDoubleGlobal_conversion) );
255 gxe.setEyDouble( static_cast<double>(EyTopo*m_EtDoubleGlobal_conversion) );
256 gxe.setEtDouble( static_cast<double>(EtTopo*m_EtDoubleGlobal_conversion) );
257 gxe.setEt2( Et2Topo );
258
259 inputEvent.setgMHT( gxe );
260 auto mon_h_gMHTPt = Monitored::Scalar("gMHTTOBPt", gxe.EtDouble());
261 auto mon_h_gMHTPhi = Monitored::Scalar("gMHTTOBPhi", atan2(gxe.Ey(), gxe.Ex()));
262 Monitored::Group(m_monTool, mon_h_gMHTPt, mon_h_gMHTPhi);
263
264 }
265
266 return StatusCode::SUCCESS;
267
268}
SG::ReadHandleKey< xAOD::gFexGlobalRoIContainer > m_gMHT_EDMKey
StatusCode setgMHT(const gXETOB &gMHT)

◆ fillSRJet()

StatusCode gFexInputProvider::fillSRJet ( TCS::TopoInputEvent & inputEvent) const
private

Definition at line 62 of file gFexInputProvider.cxx.

62 {
63
64 if (m_gJet_EDMKey.empty()) {
65 ATH_MSG_DEBUG("gFex Jet input disabled, skip filling");
66 return StatusCode::SUCCESS;
67 }
68
69 SG::ReadHandle<xAOD::gFexJetRoIContainer> gJet_EDM(m_gJet_EDMKey);
70 ATH_CHECK(gJet_EDM.isValid());
71
72 for(const xAOD::gFexJetRoI* gFexRoI : * gJet_EDM) {
73
74 auto jetType = gFexRoI->gFexType();
75 if ( jetType != 1 and jetType != 2 ) { continue; } // 1 = gFEX gBlockLead, 2 = gFEX gBlockSub (L1Topo gJet)
76
77 ATH_MSG_DEBUG( "EDM gFex Jet type: "
78 << gFexRoI->gFexType()
79 << " Et: "
80 << gFexRoI->et() // returns the et value of the jet in units of MeV
81 << " gFexTobEt: "
82 << gFexRoI->gFexTobEt() // returns the et value of the jet in units of 200 MeV
83 << " eta: "
84 << gFexRoI->eta() // returns a floating point eta corresponding to the center of the tower (fixed values, defined in gFexJetRoI_v1.cxx)
85 << " phi: "
86 << gFexRoI->phi() // returns a floating point phi corresponding to the center of the tower
87 << " iPhiTopo: "
88 << gFexRoI->iPhiTopo() // returns an integer phi from 0 to 127
89 );
90
91 unsigned int EtTopo = gFexRoI->gFexTobEt()*m_EtJet_conversion;
92 unsigned int phiTopo = gFexRoI->iPhiTopo()*m_phi_conversion;
93 int etaTopo = static_cast<int>(gFexRoI->eta()*m_eta_conversion);
94
95 TCS::gJetTOB gJet( EtTopo, etaTopo, phiTopo );
96
97 gJet.setEtDouble( static_cast<double>(EtTopo*m_EtDoubleJet_conversion) );
98 gJet.setEtaDouble( static_cast<double>(etaTopo*m_etaDouble_conversion) );
99 gJet.setPhiDouble( static_cast<double>(phiTopo*m_phiDouble_conversion) );
100
101 inputEvent.addgJet( gJet );
102 auto mon_h_gJetPt = Monitored::Scalar("gJetTOBPt", gJet.EtDouble());
103 auto mon_h_gJetPhi = Monitored::Scalar("gJetTOBPhi", gJet.phi());
104 auto mon_h_gJetEta = Monitored::Scalar("gJetTOBEta", gJet.eta());
105 Monitored::Group(m_monTool, mon_h_gJetPt, mon_h_gJetPhi, mon_h_gJetEta);
106
107 }
108
109 return StatusCode::SUCCESS;
110
111}
SG::ReadHandleKey< xAOD::gFexJetRoIContainer > m_gJet_EDMKey
StatusCode addgJet(const gJetTOB &jet)

◆ fillTE()

StatusCode gFexInputProvider::fillTE ( TCS::TopoInputEvent & inputEvent) const
private

Definition at line 369 of file gFexInputProvider.cxx.

369 {
370
371 if (m_gTE_EDMKey.empty()) {
372 ATH_MSG_DEBUG("gFex TE input disabled, skip filling");
373 return StatusCode::SUCCESS;
374 }
375
376 SG::ReadHandle<xAOD::gFexGlobalRoIContainer> gTE_EDM(m_gTE_EDMKey);
377 ATH_CHECK(gTE_EDM.isValid());
378
379 for(const xAOD::gFexGlobalRoI* gFexRoI : * gTE_EDM) {
380
381 auto globalType = gFexRoI->globalType();
382 if ( globalType != 1 ) { continue; } // 1 = scalar values (MET, SumET)
383
384 ATH_MSG_DEBUG( "EDM gFex TE type: "
385 << gFexRoI->globalType()
386 << " sumEt: "
387 << gFexRoI->METquantityTwo() // returns sumEt in MeV
388 );
389
390 unsigned int sumEtTopo = gFexRoI->METquantityTwo()*m_EtGlobal_conversion;
391
392 TCS::gTETOB gte( sumEtTopo, TCS::GTE );
393
394 gte.setSumEtDouble( static_cast<double>(sumEtTopo*m_EtDoubleGlobal_conversion) );
395
396 inputEvent.setgTE( gte );
397 auto mon_h_gTEsumEt = Monitored::Scalar("gTEsumEt", gte.sumEtDouble());
398 Monitored::Group(m_monTool, mon_h_gTEsumEt);
399
400 }
401
402 return StatusCode::SUCCESS;
403
404}
SG::ReadHandleKey< xAOD::gFexGlobalRoIContainer > m_gTE_EDMKey
StatusCode setgTE(const gTETOB &gTE)

◆ fillTopoInputEvent()

StatusCode gFexInputProvider::fillTopoInputEvent ( TCS::TopoInputEvent & inputEvent) const
finaloverridevirtual

Definition at line 447 of file gFexInputProvider.cxx.

447 {
448 ATH_CHECK(fillSRJet(inputEvent));
449 ATH_CHECK(fillLRJet(inputEvent));
450
451 ATH_CHECK(fillXEJWOJ(inputEvent));
452 ATH_CHECK(fillMHT(inputEvent));
453 ATH_CHECK(fillXENC(inputEvent));
454 ATH_CHECK(fillXERHO(inputEvent));
455
456 ATH_CHECK(fillTE(inputEvent));
457 ATH_CHECK(fillGESPRESSO(inputEvent));
458 return StatusCode::SUCCESS;
459}
StatusCode fillLRJet(TCS::TopoInputEvent &inputEvent) const
StatusCode fillXEJWOJ(TCS::TopoInputEvent &inputEvent) const
StatusCode fillSRJet(TCS::TopoInputEvent &inputEvent) const
StatusCode fillGESPRESSO(TCS::TopoInputEvent &inputEvent) const
StatusCode fillXENC(TCS::TopoInputEvent &inputEvent) const
StatusCode fillTE(TCS::TopoInputEvent &inputEvent) const
StatusCode fillXERHO(TCS::TopoInputEvent &inputEvent) const
StatusCode fillMHT(TCS::TopoInputEvent &inputEvent) const

◆ fillXEJWOJ()

StatusCode gFexInputProvider::fillXEJWOJ ( TCS::TopoInputEvent & inputEvent) const
private

Definition at line 168 of file gFexInputProvider.cxx.

168 {
169
170 if (m_gXEJWOJ_EDMKey.empty()) {
171 ATH_MSG_DEBUG("gFex XEJWOJ input disabled, skip filling");
172 return StatusCode::SUCCESS;
173 }
174
175 SG::ReadHandle<xAOD::gFexGlobalRoIContainer> gXEJWOJ_EDM(m_gXEJWOJ_EDMKey);
176 ATH_CHECK(gXEJWOJ_EDM.isValid());
177
178 for(const xAOD::gFexGlobalRoI* gFexRoI : * gXEJWOJ_EDM) {
179
180 auto globalType = gFexRoI->globalType();
181 if ( globalType != 2 ) { continue; } // 2 = MET components (METx, METy)
182
183 ATH_MSG_DEBUG( "EDM gFex XEJWOJ type: "
184 << gFexRoI->globalType()
185 << " Ex: "
186 << gFexRoI->METquantityOne() // returns the Ex component in MeV
187 << " Ey: "
188 << gFexRoI->METquantityTwo() // returns the Ey component in MeV
189 );
190
191 int ExTopo = gFexRoI->METquantityOne()*m_EtGlobal_conversion;
192 int EyTopo = gFexRoI->METquantityTwo()*m_EtGlobal_conversion;
193
194 unsigned long long ExTopoLong = static_cast<unsigned long long>(ExTopo);
195 unsigned long long EyTopoLong = static_cast<unsigned long long>(EyTopo);
196
197 unsigned long long Et2Topo = ExTopoLong*ExTopoLong + EyTopoLong*EyTopoLong;
198 unsigned int EtTopo = std::sqrt(Et2Topo);
199
200 TCS::gXETOB gxe( -ExTopo, -EyTopo, EtTopo, TCS::GXEJWOJ );
201
202 gxe.setExDouble( static_cast<double>(ExTopo*m_EtDoubleGlobal_conversion) );
203 gxe.setEyDouble( static_cast<double>(EyTopo*m_EtDoubleGlobal_conversion) );
204 gxe.setEtDouble( static_cast<double>(EtTopo*m_EtDoubleGlobal_conversion) );
205 gxe.setEt2( Et2Topo );
206
207 inputEvent.setgXEJWOJ( gxe );
208 auto mon_h_gXEJWOJPt = Monitored::Scalar("gXEJWOJTOBPt", gxe.EtDouble());
209 auto mon_h_gXEJWOJPhi = Monitored::Scalar("gXEJWOJTOBPhi", atan2(gxe.Ey(), gxe.Ex()));
210 Monitored::Group(m_monTool, mon_h_gXEJWOJPt, mon_h_gXEJWOJPhi);
211
212 }
213
214 return StatusCode::SUCCESS;
215
216}
SG::ReadHandleKey< xAOD::gFexGlobalRoIContainer > m_gXEJWOJ_EDMKey
StatusCode setgXEJWOJ(const gXETOB &gXEJWOJ)

◆ fillXENC()

StatusCode gFexInputProvider::fillXENC ( TCS::TopoInputEvent & inputEvent) const
private

Definition at line 272 of file gFexInputProvider.cxx.

272 {
273
274 if (m_gXENC_EDMKey.empty()) {
275 ATH_MSG_DEBUG("gFex XENC input disabled, skip filling");
276 return StatusCode::SUCCESS;
277 }
278
279 SG::ReadHandle<xAOD::gFexGlobalRoIContainer> gXENC_EDM(m_gXENC_EDMKey);
280 ATH_CHECK(gXENC_EDM.isValid());
281
282 for(const xAOD::gFexGlobalRoI* gFexRoI : * gXENC_EDM) {
283
284 ATH_MSG_DEBUG( "EDM gFex XENC type: "
285 << gFexRoI->globalType()
286 << " Ex: "
287 << gFexRoI->METquantityOne() // returns the Ex component in MeV
288 << " Ey: "
289 << gFexRoI->METquantityTwo() // returns the Ey component in MeV
290 );
291
292 int ExTopo = gFexRoI->METquantityOne()*m_EtGlobal_conversion;
293 int EyTopo = gFexRoI->METquantityTwo()*m_EtGlobal_conversion;
294
295 //Cast the Ex and Ey to longs to perform multiplication that is safe wrt. overflows
296 unsigned long long ExTopoLong = static_cast<unsigned long long>(ExTopo);
297 unsigned long long EyTopoLong = static_cast<unsigned long long>(EyTopo);
298
299 unsigned long long Et2Topo = ExTopoLong*ExTopoLong + EyTopoLong*EyTopoLong;
300 unsigned int EtTopo = std::sqrt(Et2Topo);
301
302 TCS::gXETOB gxe( -ExTopo, -EyTopo, EtTopo, TCS::GXENC );
303
304 gxe.setExDouble( static_cast<double>(ExTopo*m_EtDoubleGlobal_conversion) );
305 gxe.setEyDouble( static_cast<double>(EyTopo*m_EtDoubleGlobal_conversion) );
306 gxe.setEtDouble( static_cast<double>(EtTopo*m_EtDoubleGlobal_conversion) );
307 gxe.setEt2( Et2Topo );
308
309 inputEvent.setgXENC( gxe );
310 auto mon_h_gXENCPt = Monitored::Scalar("gXENCTOBPt", gxe.EtDouble());
311 Monitored::Group(m_monTool, mon_h_gXENCPt);
312
313 }
314
315 return StatusCode::SUCCESS;
316
317}
SG::ReadHandleKey< xAOD::gFexGlobalRoIContainer > m_gXENC_EDMKey
StatusCode setgXENC(const gXETOB &gXENC)

◆ fillXERHO()

StatusCode gFexInputProvider::fillXERHO ( TCS::TopoInputEvent & inputEvent) const
private

Definition at line 321 of file gFexInputProvider.cxx.

321 {
322
323 if (m_gXERHO_EDMKey.empty()) {
324 ATH_MSG_DEBUG("gFex XENC input disabled, skip filling");
325 return StatusCode::SUCCESS;
326 }
327
328 SG::ReadHandle<xAOD::gFexGlobalRoIContainer> gXERHO_EDM(m_gXERHO_EDMKey);
329 ATH_CHECK(gXERHO_EDM.isValid());
330
331 for(const xAOD::gFexGlobalRoI* gFexRoI : * gXERHO_EDM) {
332
333 ATH_MSG_DEBUG( "EDM gFex XERHO type: "
334 << gFexRoI->globalType()
335 << " Ex: "
336 << gFexRoI->METquantityOne() // returns the Ex component in MeV
337 << " Ey: "
338 << gFexRoI->METquantityTwo() // returns the Ey component in MeV
339 );
340
341 int ExTopo = gFexRoI->METquantityOne()*m_EtGlobal_conversion;
342 int EyTopo = gFexRoI->METquantityTwo()*m_EtGlobal_conversion;
343
344 unsigned long long ExTopoLong = static_cast<unsigned long long>(ExTopo);
345 unsigned long long EyTopoLong = static_cast<unsigned long long>(EyTopo);
346
347 unsigned long long Et2Topo = ExTopoLong*ExTopoLong + EyTopoLong*EyTopoLong;
348 unsigned int EtTopo = std::sqrt(Et2Topo);
349
350 TCS::gXETOB gxe( -ExTopo, -EyTopo, EtTopo, TCS::GXERHO );
351
352 gxe.setExDouble( static_cast<double>(ExTopo*m_EtDoubleGlobal_conversion) );
353 gxe.setEyDouble( static_cast<double>(EyTopo*m_EtDoubleGlobal_conversion) );
354 gxe.setEtDouble( static_cast<double>(EtTopo*m_EtDoubleGlobal_conversion) );
355 gxe.setEt2( Et2Topo );
356
357 inputEvent.setgXERHO( gxe );
358 auto mon_h_gXERHOPt = Monitored::Scalar("gXERHOTOBPt", gxe.EtDouble());
359 Monitored::Group(m_monTool, mon_h_gXERHOPt);
360
361 }
362
363 return StatusCode::SUCCESS;
364
365}
SG::ReadHandleKey< xAOD::gFexGlobalRoIContainer > m_gXERHO_EDMKey
StatusCode setgXERHO(const gXETOB &gXERHO)

◆ initialize()

StatusCode gFexInputProvider::initialize ( )
finaloverridevirtual

Definition at line 40 of file gFexInputProvider.cxx.

40 {
41
44
49
52 if (! m_gESPRESSO_EDMKey.empty() ) {
53 renounce(m_gESPRESSO_EDMKey); //make this optional, as its availability depends on how gFEX TOBs are being produced (cannot be simulated by gFEX sim, optional form gFEX bytestream decoders
54 }
55
56 if (!m_monTool.empty()) ATH_CHECK(m_monTool.retrieve());
57
58 return StatusCode::SUCCESS;
59}

Member Data Documentation

◆ m_eta_conversion

const int gFexInputProvider::m_eta_conversion = 40
staticprivate

Definition at line 58 of file gFexInputProvider.h.

◆ m_etaDouble_conversion

const double gFexInputProvider::m_etaDouble_conversion = 0.025
staticprivate

Definition at line 63 of file gFexInputProvider.h.

◆ m_EtDoubleGlobal_conversion

const double gFexInputProvider::m_EtDoubleGlobal_conversion = 0.1
staticprivate

Definition at line 61 of file gFexInputProvider.h.

◆ m_EtDoubleJet_conversion

const double gFexInputProvider::m_EtDoubleJet_conversion = 0.1
staticprivate

Definition at line 60 of file gFexInputProvider.h.

◆ m_EtGlobal_conversion

const double gFexInputProvider::m_EtGlobal_conversion = 0.01
staticprivate

Definition at line 56 of file gFexInputProvider.h.

◆ m_EtJet_conversion

const int gFexInputProvider::m_EtJet_conversion = 2
staticprivate

Definition at line 55 of file gFexInputProvider.h.

◆ m_gESPRESSO_EDMKey

SG::ReadHandleKey<xAOD::gFexGlobalRoIContainer> LVL1::gFexInputProvider::m_gESPRESSO_EDMKey {this, "gEspressoKey", "L1_gEspresso", "gFEX gESPRESSO EDM"}
private

Definition at line 52 of file gFexInputProvider.h.

52{this, "gEspressoKey", "L1_gEspresso", "gFEX gESPRESSO EDM"}; //TODO: update to actual default key once implemented on gFEX side!

◆ m_gJet_EDMKey

SG::ReadHandleKey<xAOD::gFexJetRoIContainer> LVL1::gFexInputProvider::m_gJet_EDMKey {this, "gFexSRJetRoIKey", "L1_gFexSRJetRoI", "gFEX Jet EDM"}
private

Definition at line 43 of file gFexInputProvider.h.

43{this, "gFexSRJetRoIKey", "L1_gFexSRJetRoI", "gFEX Jet EDM"};

◆ m_gLJet_EDMKey

SG::ReadHandleKey<xAOD::gFexJetRoIContainer> LVL1::gFexInputProvider::m_gLJet_EDMKey {this, "gFexLRJetRoIKey", "L1_gFexLRJetRoI", "gFEX LJet EDM"}
private

Definition at line 44 of file gFexInputProvider.h.

44{this, "gFexLRJetRoIKey", "L1_gFexLRJetRoI", "gFEX LJet EDM"};

◆ m_gMHT_EDMKey

SG::ReadHandleKey<xAOD::gFexGlobalRoIContainer> LVL1::gFexInputProvider::m_gMHT_EDMKey {this,"gMHTComponentsJwojKey", "L1_gMHTComponentsJwoj", "gFEX MHT EDM"}
private

Definition at line 47 of file gFexInputProvider.h.

47{this,"gMHTComponentsJwojKey", "L1_gMHTComponentsJwoj", "gFEX MHT EDM"};

◆ m_gTE_EDMKey

SG::ReadHandleKey<xAOD::gFexGlobalRoIContainer> LVL1::gFexInputProvider::m_gTE_EDMKey {this, "gScalarEJwojKey", "L1_gScalarEJwoj", "gFEX TE EDM"}
private

Definition at line 51 of file gFexInputProvider.h.

51{this, "gScalarEJwojKey", "L1_gScalarEJwoj", "gFEX TE EDM"};

◆ m_gXEJWOJ_EDMKey

SG::ReadHandleKey<xAOD::gFexGlobalRoIContainer> LVL1::gFexInputProvider::m_gXEJWOJ_EDMKey {this, "gMETComponentsJwojKey", "L1_gMETComponentsJwoj", "gFEX XEJWOJ EDM"}
private

Definition at line 46 of file gFexInputProvider.h.

46{this, "gMETComponentsJwojKey", "L1_gMETComponentsJwoj", "gFEX XEJWOJ EDM"};

◆ m_gXENC_EDMKey

SG::ReadHandleKey<xAOD::gFexGlobalRoIContainer> LVL1::gFexInputProvider::m_gXENC_EDMKey {this, "gMETComponentsNoiseCutKey", "L1_gMETComponentsNoiseCut", "gFEX XENC EDM"}
private

Definition at line 48 of file gFexInputProvider.h.

48{this, "gMETComponentsNoiseCutKey", "L1_gMETComponentsNoiseCut", "gFEX XENC EDM"};

◆ m_gXERHO_EDMKey

SG::ReadHandleKey<xAOD::gFexGlobalRoIContainer> LVL1::gFexInputProvider::m_gXERHO_EDMKey {this, "gMETComponentsRmsKey", "L1_gMETComponentsRms", "gFEX RHO ROI EDM"}
private

Definition at line 49 of file gFexInputProvider.h.

49{this, "gMETComponentsRmsKey", "L1_gMETComponentsRms", "gFEX RHO ROI EDM"};

◆ m_monTool

ToolHandle<GenericMonitoringTool> LVL1::gFexInputProvider::m_monTool {this, "MonTool", "", "Monitoring tool to create online histograms"}
private

Definition at line 41 of file gFexInputProvider.h.

41{this, "MonTool", "", "Monitoring tool to create online histograms"};

◆ m_phi_conversion

const int gFexInputProvider::m_phi_conversion = 1
staticprivate

Definition at line 57 of file gFexInputProvider.h.

◆ m_phiDouble_conversion

const double gFexInputProvider::m_phiDouble_conversion = 0.05
staticprivate

Definition at line 62 of file gFexInputProvider.h.


The documentation for this class was generated from the following files: