14 #include "GaudiKernel/PhysicalConstants.h"
21 const int jFexInputProvider::m_Et_conversion = 2;
22 const double jFexInputProvider::m_sumEt_conversion = 0.01;
23 const double jFexInputProvider::m_gXE_conversion = 0.01;
24 const int jFexInputProvider::m_phi_conversion = 2;
25 const int jFexInputProvider::m_eta_conversion = 4;
27 const double jFexInputProvider::m_EtDouble_conversion = 0.1;
28 const double jFexInputProvider::m_sumEtDouble_conversion = 0.1;
29 const double jFexInputProvider::m_phiDouble_conversion = 0.05;
30 const double jFexInputProvider::m_etaDouble_conversion = 0.025;
33 jFexInputProvider::jFexInputProvider(
const std::string&
type,
const std::string&
name,
34 const IInterface*
parent) :
37 declareInterface<LVL1::IInputTOBConverter>(
this );
60 return StatusCode::SUCCESS;
67 return StatusCode::SUCCESS;
75 << +jFexRoI->jFexNumber()
81 << jFexRoI->globalEta()
83 << jFexRoI->globalPhi()
85 << +jFexRoI->tobEMIso()
87 << +jFexRoI->tobEMf1()
89 << +jFexRoI->tobEMf2()
95 unsigned int isolation = jFexRoI->tobEMIso();
96 unsigned int frac1 = jFexRoI->tobEMf2();
97 unsigned int frac2 = jFexRoI->tobEMf1();
100 if (EtTopo==0)
continue;
118 Monitored::Group(
m_monTool, mon_h_jEmPt, mon_h_jEmIsolation, mon_h_jEmFrac1, mon_h_jEmFrac2, mon_h_jEmPhi, mon_h_jEmEta);
121 return StatusCode::SUCCESS;
129 return StatusCode::SUCCESS;
137 << +jFexRoI->jFexNumber()
143 << jFexRoI->globalEta()
145 << jFexRoI->globalPhi()
156 if (EtTopo==0)
continue;
174 return StatusCode::SUCCESS;
182 return StatusCode::SUCCESS;
190 << jFexRoI->jFexNumber()
196 << jFexRoI->globalEta()
198 << jFexRoI->globalPhi()
206 if (EtTopo==0)
continue;
221 return StatusCode::SUCCESS;
229 return StatusCode::SUCCESS;
237 << +jFexRoI->jFexNumber()
243 << jFexRoI->globalEta()
245 << jFexRoI->globalPhi()
253 if (EtTopo==0)
continue;
269 return StatusCode::SUCCESS;
278 return StatusCode::SUCCESS;
284 int global_ExTopo = 0;
285 int global_EyTopo = 0;
286 int central_ExTopo = 0;
287 int central_EyTopo = 0;
294 int jFexNumber = jFexRoI->jFexNumber();
295 int fpgaNumber = jFexRoI->fpgaNumber();
297 int hemisphere = fpgaNumber == 0 ? -1 : 1;
299 ExTopo = hemisphere * ExTopo;
300 EyTopo = hemisphere * EyTopo;
302 global_ExTopo += ExTopo;
303 global_EyTopo += EyTopo;
306 if( jFexNumber!=0 && jFexNumber!=5 ) {
307 central_ExTopo += ExTopo;
308 central_EyTopo += EyTopo;
322 long long global_ExTopoLong =
static_cast<long long>(global_ExTopo);
323 long long global_EyTopoLong =
static_cast<long long>(global_EyTopo);
324 long long central_ExTopoLong =
static_cast<long long>(central_ExTopo);
325 long long central_EyTopoLong =
static_cast<long long>(central_EyTopo);
327 unsigned long long Et2Topo = global_ExTopoLong*global_ExTopoLong + global_EyTopoLong*global_EyTopoLong;
328 unsigned long long EtTopo = std::sqrt( Et2Topo );
329 unsigned long long Et2Topo_central = central_ExTopoLong*central_ExTopoLong + central_EyTopoLong*central_EyTopoLong;
330 unsigned long long EtTopo_central = std::sqrt( Et2Topo_central );
342 jxec.
setEt2( Et2Topo_central );
356 ATH_MSG_DEBUG(
"gFex XE input disabled, skip filling combined XE");
357 return StatusCode::SUCCESS;
360 if (! gXEJWOJ_EDM.
isValid() ) {
362 ATH_MSG_DEBUG(
"gFex input is not available, skip filling cXE");
363 return StatusCode::SUCCESS;
369 long long gXE_ExTopoLong{0};
370 long long gXE_EyTopoLong{0};
374 auto globalType = gFexRoI->globalType();
375 if ( globalType != 2 ) {
continue; }
378 << gFexRoI->globalType()
380 << gFexRoI->METquantityOne()
382 << gFexRoI->METquantityTwo()
388 gXE_ExTopoLong =
static_cast<unsigned long long>(ExTopo);
389 gXE_EyTopoLong =
static_cast<unsigned long long>(EyTopo);
396 unsigned jWeight = 0.55 *
pow(2,8);
397 unsigned gWeight = 0.45 *
pow(2,8);
398 long long cXE_x = (jWeight * global_ExTopoLong + gWeight * gXE_ExTopoLong) >> 8;
399 long long cXE_y = (jWeight * global_EyTopoLong + gWeight * gXE_EyTopoLong) >> 8;
401 unsigned long long cXE_mag2 = cXE_x*cXE_x + cXE_y*cXE_y;
402 unsigned long long cXE_mag = std::sqrt( cXE_mag2 );
405 inputEvent.
setcXE( cxe_tob );
409 return StatusCode::SUCCESS;
418 return StatusCode::SUCCESS;
428 bool topoTE_sat =
false;
443 int jFexNumber = jFexRoI->jFexNumber();
444 int fpgaNumber = jFexRoI->fpgaNumber();
446 int Sat_lower = jFexRoI->tobSat_lower();
447 int Sat_upper = jFexRoI->tobSat_upper();
464 topoTE += EtLowerTopo;
465 topoTE += EtUpperTopo;
466 topoTE_sat |= Sat_lower;
467 topoTE_sat |= Sat_upper;
471 topoTEsideA += EtLowerTopo;
472 topoTEsideA += EtUpperTopo;
476 topoTEsideC += EtLowerTopo;
477 topoTEsideC += EtUpperTopo;
482 topoTEC += EtLowerTopo;
483 if( jFexNumber!=0 && jFexNumber!=5 )
485 topoTEC += EtUpperTopo;
489 if( jFexNumber==0 || jFexNumber==5 )
491 topoTEFWD += EtUpperTopo;
497 topoTEFWDA += EtUpperTopo;
503 topoTEFWDC += EtUpperTopo;
538 Monitored::Group(
m_monTool, mon_h_jTE_saturation, mon_h_jTE_sumEt, mon_h_jTEC_sumEt, mon_h_jTEFWD_sumEt, mon_h_jTEFWDA_sumEt, mon_h_jTEFWDC_sumEt);
540 return StatusCode::SUCCESS;
552 return StatusCode::SUCCESS;