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 );
338 jxe.setEt2( Et2Topo );
342 jxec.setEt2( Et2Topo_central );
349 auto mon_h_jXEC_Phi =
Monitored::Scalar(
"jXECTOBPhi", atan2(jxec.Ey(),jxec.Ex()));
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;