22 declareInterface<IjFEXmetAlgo>(
this);
30 ATH_CHECK(m_jTowerContainerKey.initialize());
31 return StatusCode::SUCCESS;
38 if(!m_jTowerContainer.isValid()) {
39 ATH_MSG_ERROR(
"Could not retrieve jTowerContainer " << m_jTowerContainerKey.key());
40 return StatusCode::FAILURE;
42 return StatusCode::SUCCESS;
49 return StatusCode::SUCCESS;
55 ATH_MSG_DEBUG(
"---------------- jFEXmetAlgo::setup ----------------");
57 m_hemisphere = hemisphere;
62 for(
int ieta=8;ieta<16;ieta++){
63 m_FPGA[iphi].push_back(
FPGA[iphi][ieta]);
64 m_saturation = m_saturation || getTTowerSat(
FPGA[iphi][ieta]);
72 ATH_MSG_DEBUG(
"---------------- jFEXmetAlgo::setup ----------------");
74 m_hemisphere = hemisphere;
79 for(
int ieta=8;ieta<17;ieta++){
80 m_FPGA[iphi].push_back(
FPGA[iphi][ieta]);
81 m_saturation = m_saturation || getTTowerSat(
FPGA[iphi][ieta]);
84 m_FPGA_phi02.resize(16);
85 for(
int iphi=0;iphi<16;iphi++){
86 for(
int ieta=17;ieta<21;ieta++){
87 m_FPGA_phi02[iphi].push_back(
FPGA[iphi][ieta]);
88 m_saturation = m_saturation || getTTowerSat(
FPGA[iphi][ieta]);
91 m_FPGA_fcal.resize(8);
92 for(
int iphi=0;iphi<8;iphi++){
94 m_FPGA_fcal[iphi].push_back(
FPGA[iphi][ieta]);
95 m_saturation = m_saturation || getTTowerSat(
FPGA[iphi][ieta]);
104 ATH_MSG_DEBUG(
"---------------- jFEXmetAlgo::buildBarrelmet ----------------");
111 m_met_angle.resize(32,0);
113 for(
uint iphi=0;iphi<m_FPGA.size();iphi++){
114 for(
uint ieta=0;ieta<m_FPGA[iphi].size();ieta++){
115 m_met[iphi]+=getTTowerET(m_FPGA[iphi][ieta]);
117 const LVL1::jTower * tmpTower = m_jTowerContainer->findTower(m_FPGA[iphi][0]);
120 buildMetXComponent();
121 buildMetYComponent();
127 ATH_MSG_DEBUG(
"---------------- jFEXmetAlgo::buildFWDmet ----------------");
134 m_met.resize(m_FPGA.size(),0);
136 m_met_angle.resize(m_FPGA.size(),0);
138 for(
uint iphi=0;iphi<m_FPGA.size();iphi++){
139 for(
uint ieta=0;ieta<m_FPGA[iphi].size();ieta++){
140 m_met[iphi]+=getTTowerET(m_FPGA[iphi][ieta]);
142 const LVL1::jTower * tmpTower = m_jTowerContainer->findTower(m_FPGA[iphi][0]);
145 buildMetXComponent();
146 buildMetYComponent();
150 m_met.resize(m_FPGA_phi02.size(),0);
152 m_met_angle.resize(m_FPGA_phi02.size(),0);
154 for(
uint iphi=0;iphi<m_FPGA_phi02.size();iphi++){
155 for(
uint ieta=0;ieta<m_FPGA_phi02[iphi].size();ieta++){
156 m_met[iphi]+=getTTowerET(m_FPGA_phi02[iphi][ieta]);
158 const LVL1::jTower * tmpTower = m_jTowerContainer->findTower(m_FPGA_phi02[iphi][0]);
161 buildMetXComponent();
162 buildMetYComponent();
166 m_met.resize(m_FPGA_fcal.size(),0);
168 m_met_angle.resize(m_FPGA_fcal.size(),0);
170 for(
uint iphi=0;iphi<m_FPGA_fcal.size();iphi++){
171 for(
uint ieta=0;ieta<m_FPGA_fcal[iphi].size();ieta++){
172 m_met[iphi]+=getTTowerET(m_FPGA_fcal[iphi][ieta]);
174 const LVL1::jTower * tmpTower = m_jTowerContainer->findTower(m_FPGA_fcal[iphi][0]);
175 m_met_angle[iphi]=(
static_cast<int>(tmpTower->
iPhi()/4))*(
M_PI/8) +
M_PI/16;
177 buildMetXComponent();
178 buildMetYComponent();
186 m_met_Xcoord.clear();
187 m_met_Xcoord.resize(m_met.size(),0);
190 for(
uint iphi=0;iphi<m_met.size();iphi++){
192 m_met_Xcoord[iphi]= m_met[iphi]*
cos;
196 for(
auto met_val : m_met_Xcoord){
197 m_Totalmet_Xcoord += met_val;
204 return m_Totalmet_Xcoord >> m_firmware_bit_offset;
211 m_met_Ycoord.clear();
212 m_met_Ycoord.resize(m_met.size(),0);
214 for(
uint iphi=0;iphi<m_met.size();iphi++){
216 m_met_Ycoord[iphi]= m_met[iphi]*
sin;
220 for(
auto met_val : m_met_Ycoord){
221 m_Totalmet_Ycoord += met_val;
228 return m_Totalmet_Ycoord >> m_firmware_bit_offset;
237 if(m_map_Etvalues.find(TTID) != m_map_Etvalues.end()) {
238 return m_map_Etvalues[TTID][1];
256 const LVL1::jTower * tmpTower = m_jTowerContainer->findTower(TTID);
262 m_map_Etvalues=et_map;