37     declareInterface<IjFEXFPGA>(
this);
 
   52     return StatusCode::SUCCESS;
 
   59     return StatusCode::SUCCESS;
 
   92         return StatusCode::FAILURE;
 
  117     std::vector<int> pileup_ID;
 
  118     std::vector<int> pileup_HAD_jet;
 
  119     std::vector<int> pileup_EM_jet;
 
  120     std::vector<int> pileup_Total_jet;
 
  121     std::vector<int> pileup_HAD_met;
 
  122     std::vector<int> pileup_EM_met;
 
  123     std::vector<int> pileup_Total_met;
 
  126         pileup_ID.push_back(
key);
 
  127         pileup_HAD_jet.push_back(
val[0]);
 
  130         pileup_HAD_met.push_back(
val[1]);
 
  138     inputOutputCollection->
addValue_pileup(
"pileup_rho_EM", pileup_rho[0]);
 
  139     inputOutputCollection->
addValue_pileup(
"pileup_rho_HAD1", pileup_rho[1]);
 
  140     inputOutputCollection->
addValue_pileup(
"pileup_rho_HAD2", pileup_rho[2]);
 
  141     inputOutputCollection->
addValue_pileup(
"pileup_rho_HAD3", pileup_rho[3]);
 
  142     inputOutputCollection->
addValue_pileup(
"pileup_rho_FCAL", pileup_rho[4]);
 
  143     inputOutputCollection->
addValue_pileup(
"pileup_map_ID"  , std::move(pileup_ID));
 
  144     inputOutputCollection->
addValue_pileup(
"pileup_map_Et_values_HAD_jet"  , std::move(pileup_HAD_jet));
 
  145     inputOutputCollection->
addValue_pileup(
"pileup_map_Et_values_EM_jet"   , std::move(pileup_EM_jet));
 
  146     inputOutputCollection->
addValue_pileup(
"pileup_map_Et_values_Total_jet", std::move(pileup_Total_jet));
 
  147     inputOutputCollection->
addValue_pileup(
"pileup_map_Et_values_HAD_met"  , std::move(pileup_HAD_met));
 
  148     inputOutputCollection->
addValue_pileup(
"pileup_map_Et_values_EM_met"   , std::move(pileup_EM_met));
 
  149     inputOutputCollection->
addValue_pileup(
"pileup_map_Et_values_Total_met", std::move(pileup_Total_met));
 
  163         std::unique_ptr<jFEXTOB> jXE_tob = std::make_unique<jFEXTOB>(); 
 
  166         std::unique_ptr<jFEXTOB> jTE_tob = std::make_unique<jFEXTOB>(); 
 
  170         int hemisphere = 
m_id == 0 ? 1 : -1;
 
  187             for(
int mphi = 0; mphi <= max_phi_it; mphi++) {
 
  188                 for(
int meta = 0; meta <= max_eta_it; meta++) {
 
  215         std::tuple<int,bool> jTElow;
 
  216         std::tuple<int,bool> jTEhigh;
 
  234     ATH_MSG_DEBUG(
"================ Central Algorithms ================");
 
  249                 int TT_seed_ID[3][3]= {{0}};
 
  250                 int TT_First_ETring[36]= {0};
 
  251                 int First_ETring_it = 0; 
 
  253                 int Jet_SearchWindow[7][7] = {{0}};
 
  254                 int Jet_SearchWindowDisplaced[7][7] = {{0}};
 
  255                 int largeRCluster_IDs[15][15]= {{0}};
 
  258                 for(
int i = -7; 
i< 8; 
i++ ) {
 
  259                     for(
int j = -7; j< 8; j++) {
 
  261                         if(std::abs(
i)<4 && std::abs(j)<4) {
 
  308                     std::unique_ptr<jFEXTOB> jJ_tob = std::make_unique<jFEXTOB>(); 
 
  310                     if ( SRJet_tobword != 0 ){
 
  321                         std::unique_ptr <jFEXTOB> jLJ_tob = std::make_unique<jFEXTOB>();
 
  334                 if ( is_tau_LocalMax ) { 
 
  342                     std::unique_ptr<jFEXTOB> jTau_tob = std::make_unique<jFEXTOB>();
 
  345                     if ( jTau_tobword != 0 ){
 
  378             std::unique_ptr<jFEXTOB> jJ_tob = std::make_unique<jFEXTOB>(); 
 
  381             if ( SRFCAL_Jet_tobword != 0 ){
 
  389                 std::unique_ptr<jFEXTOB> jLJ_tob = std::make_unique<jFEXTOB>(); 
 
  391                 if ( LRFCAL_Jet_tobword != 0 ) 
m_LRJet_tobwords.push_back(std::move(jLJ_tob));                   
 
  409     std::vector<int> Ciso;
 
  410     std::vector<int> Chad1;
 
  411     std::vector<int> Chad2;
 
  425       Ciso.push_back(wp_loose.iso_fw());
 
  426       Ciso.push_back(wp_medium.iso_fw());
 
  427       Ciso.push_back(wp_tight.iso_fw());
 
  428       Chad1.push_back(wp_loose.frac_fw());
 
  429       Chad1.push_back(wp_medium.frac_fw());
 
  430       Chad1.push_back(wp_tight.frac_fw());
 
  431       Chad2.push_back(wp_loose.frac2_fw());
 
  432       Chad2.push_back(wp_medium.frac2_fw());
 
  433       Chad2.push_back(wp_tight.frac2_fw());
 
  434       int Cval[9] = {Ciso[0], Ciso[1], Ciso[2], Chad1[0], Chad1[1], Chad1[2], Chad2[0], Chad2[1], Chad2[2]};
 
  436       elCluster.
setup(Cval,jFEXETResolution);
 
  443       std::vector<uint32_t> FwdEltob_aux{FwdEl_tobword,TTID};
 
  444       if ( FwdEl_tobword != 0  && etEM>minEtThreshold) 
m_FwdEl_tobwords.push_back(FwdEltob_aux);
 
  463                 for(
int j=4; j<17; j++) { 
 
  468         ATH_MSG_DEBUG(
"============================ jFEXtauAlgo ============================");
 
  471         for(
int mphi = 8; mphi < 24; mphi++) {
 
  472             for(
int meta = 8; meta < max_meta; meta++) {
 
  474                 bool is_tau_LocalMax = 
m_jFEXtauAlgoTool->isSeedLocalMaxima_fwd(jTowersIDs[mphi][meta]);
 
  477                 if ( is_tau_LocalMax ) { 
 
  481                     std::unique_ptr<jFEXTOB> jTau_tob = std::make_unique<jFEXTOB>();
 
  483                     if ( jTau_tobword != 0 ){
 
  490     return StatusCode::SUCCESS;
 
  496   const int cols = 
sizeof tmp_jTowersIDs_subset[0] / 
sizeof tmp_jTowersIDs_subset[0][0];
 
  500   ATH_MSG_DEBUG(
"\n==== jFEXFPGA ========= FPGA (" << 
m_id << 
") [on jFEX " << 
m_jfexid << 
"] IS RESPONSIBLE FOR jTOWERS :");
 
  502   for (
int thisRow=
rows-1; thisRow>=0; thisRow--){
 
  503     for (
int thisCol=0; thisCol<
cols; thisCol++){
 
  514     const int cols = 
sizeof tmp_jTowersIDs_subset[0] / 
sizeof tmp_jTowersIDs_subset[0][0];
 
  519     ATH_MSG_DEBUG(
"\n==== jFEXFPGA ========= FPGA (" << 
m_id << 
") [on jFEX " << 
m_jfexid << 
"] IS RESPONSIBLE FOR jTOWERS :");
 
  521     for (
int thisRow=
rows-1; thisRow>=0; thisRow--) {
 
  522         for (
int thisCol=0; thisCol<
cols; thisCol++) {
 
  523             if(thisCol != 
cols-1) {
 
  536     std::vector<std::unique_ptr<jFEXTOB>> tobsSort;
 
  540         tobsSort.push_back(std::move(j));
 
  542     std::sort (tobsSort.begin(), tobsSort.end(), std::bind(
TOBetSort<std::unique_ptr<jFEXTOB>>, std::placeholders::_1, std::placeholders::_2, 
FEXAlgoSpaceDefs::jJ_etBit, 0x7ff));
 
  549     std::vector<std::unique_ptr<jFEXTOB>> tobsSort;
 
  553         tobsSort.push_back(std::move(j));
 
  555     std::sort (tobsSort.begin(), tobsSort.end(), std::bind(
TOBetSort<std::unique_ptr<jFEXTOB>>, std::placeholders::_1, std::placeholders::_2, 
FEXAlgoSpaceDefs::jLJ_etBit, 0x1fff));
 
  565     ATH_MSG_DEBUG(
"number of Forward Elec tobs: " << tobsSort.size() << 
" in FPGA: " << 
m_id<< 
" before truncation");
 
  567     std::sort (tobsSort.begin(), tobsSort.end(), 
etFwdElSort);
 
  575     std::vector<std::unique_ptr<jFEXTOB>> tobsSort;
 
  579         tobsSort.push_back(std::move(j));
 
  588     std::vector<std::unique_ptr<jFEXTOB>> tobsSort;
 
  592         tobsSort.push_back(std::move(j));
 
  602     std::vector<std::unique_ptr<jFEXTOB>> tobsSort;
 
  606         tobsSort.push_back(std::move(j));
 
  620     ATH_MSG_DEBUG(
"In jFEXFPGA::getTTowerET_EM, TTower ID not found in map: " << TTID );
 
  632     ATH_MSG_DEBUG(
"In jFEXFPGA::getTTowerET_HAD, TTower ID not found in map: " << TTID );
 
  652         ATH_MSG_DEBUG(
"In jFEXFPGA::getTTowerET_forMET (EM energy), TTower ID not found in map: " << TTID );
 
  662         ATH_MSG_DEBUG(
"In jFEXFPGA::getTTowerET_forMET (HAD energy), TTower ID not found in map: " << TTID );
 
  667     return tmp_EM + tmp_HAD;