24 declareInterface<IgFEXSim>(
this);
34 for (
int j=0; j<
cols; j++){
52 return StatusCode::SUCCESS;
63 ATH_CHECK(gTowersContainer.
record(std::make_unique<xAOD::gFexTowerContainer>(), std::make_unique<xAOD::gFexTowerAuxContainer>()));
64 ATH_MSG_DEBUG(
"Recorded gFexTriggerTower container with key " << gTowersContainer.
key());
66 int rows = tmp_gTowersIDs_subset.size();
67 int cols = tmp_gTowersIDs_subset[0].size();
86 memset(&tmp_gTowersIDs_subset_centralFPGA, 0,
sizeof tmp_gTowersIDs_subset_centralFPGA);
88 for (
int mycol = 0; mycol<12; mycol++){
89 tmp_gTowersIDs_subset_centralFPGA[myrow][mycol] = tmp_gTowersIDs_subset[myrow][mycol+8];
93 m_gFEXFPGA_Tool->FillgTowerEDMCentral(gTowersContainer, tmp_gTowersIDs_subset_centralFPGA, Atwr, Atwr50, Asat);
100 memset(&tmp_gTowersIDs_subset_centralFPGA_B, 0,
sizeof tmp_gTowersIDs_subset_centralFPGA_B);
102 for (
int mycol = 0; mycol<12; mycol++){
103 tmp_gTowersIDs_subset_centralFPGA_B[myrow][mycol] = tmp_gTowersIDs_subset[myrow][mycol+20];
107 m_gFEXFPGA_Tool->FillgTowerEDMCentral(gTowersContainer, tmp_gTowersIDs_subset_centralFPGA_B, Btwr, Btwr50, Bsat);
120 memset(&tmp_gTowersIDs_subset_forwardFPGA_N, 0,
sizeof tmp_gTowersIDs_subset_forwardFPGA_N);
122 for (
int mycol = 0; mycol<4; mycol++){
123 tmp_gTowersIDs_subset_forwardFPGA_N[myrow][mycol] = tmp_gTowersIDs_subset[myrow][mycol];
127 for (
int mycol = 4; mycol<8; mycol++){
128 tmp_gTowersIDs_subset_forwardFPGA_N[myrow][mycol] = tmp_gTowersIDs_subset[myrow][mycol];
137 memset(&tmp_gTowersIDs_subset_forwardFPGA_P, 0,
sizeof tmp_gTowersIDs_subset_forwardFPGA_P);
139 for (
int mycol = 0; mycol<4; mycol++){
140 tmp_gTowersIDs_subset_forwardFPGA_P[myrow][mycol] = tmp_gTowersIDs_subset[myrow][mycol+32];
144 for (
int mycol = 4; mycol<8; mycol++){
145 tmp_gTowersIDs_subset_forwardFPGA_P[myrow][mycol] = tmp_gTowersIDs_subset[myrow][mycol+32];
150 m_gFEXFPGA_Tool->FillgTowerEDMForward(gTowersContainer, tmp_gTowersIDs_subset_forwardFPGA_N, tmp_gTowersIDs_subset_forwardFPGA_P, Ctwr, Ctwr50, Csat);
162 int gLJ_seedThrA = 0;
163 int gLJ_seedThrB = 0;
164 int gLJ_seedThrC = 0;
166 gLJ_seedThrB = thr_gLJ.seedThrCounts(
'B');
167 gLJ_seedThrC = thr_gLJ.seedThrCounts(
'C');
169 int gLJ_ptMinToTopoCounts1 = 0;
170 int gLJ_ptMinToTopoCounts2 = 0;
171 gLJ_ptMinToTopoCounts1 = thr_gLJ.ptMinToTopoCounts(1);
172 gLJ_ptMinToTopoCounts2 = thr_gLJ.ptMinToTopoCounts(2);
173 float gLJ_rhoMaxA = 0;
174 float gLJ_rhoMaxB = 0;
175 float gLJ_rhoMaxC = 0;
177 gLJ_rhoMaxA = (thr_gLJ.rhoTowerMax(
'A')*1000)/50;
178 gLJ_rhoMaxB = (thr_gLJ.rhoTowerMax(
'B')*1000)/50;
179 gLJ_rhoMaxC = (thr_gLJ.rhoTowerMax(
'C')*1000)/50;
184 int gJ_ptMinToTopoCounts1 = 0;
185 int gJ_ptMinToTopoCounts2 = 0;
187 gJ_ptMinToTopoCounts2 = thr_gJ.ptMinToTopoCounts(2);
205 std::array<uint32_t, 7> ATOB1_dat = {0};
206 std::array<uint32_t, 7> ATOB2_dat = {0};
207 std::array<uint32_t, 7> BTOB1_dat = {0};
208 std::array<uint32_t, 7> BTOB2_dat = {0};
209 std::array<uint32_t, 7> CTOB1_dat = {0};
210 std::array<uint32_t, 7> CTOB2_dat = {0};
214 auto tobs_v =
m_gFEXJetAlgoTool->largeRfinder(Atwr, Btwr, Ctwr, Asat, Bsat, Csat, pucA, pucB, pucC,
215 gLJ_seedThrA, gLJ_seedThrB, gLJ_seedThrC, gJ_ptMinToTopoCounts1, gJ_ptMinToTopoCounts2,
216 jetThreshold, gLJ_ptMinToTopoCounts1, gLJ_ptMinToTopoCounts2,
217 ATOB1_dat, ATOB2_dat,
218 BTOB1_dat, BTOB2_dat,
219 CTOB1_dat, CTOB2_dat);
255 std::array<uint32_t, 4> outJwojTOB = {0};
256 std::array<uint32_t, 4> outAltMetTOB = {0};
260 int gXE_seedThrA = 0;
261 int gXE_seedThrB = 0;
262 int gXE_seedThrC = 0;
263 gXE_seedThrA = thr_gXE.
seedThr(
'A');
264 gXE_seedThrB = thr_gXE.seedThr(
'B');
265 gXE_seedThrC = thr_gXE.seedThr(
'C');
268 int aFPGA_A = thr_gXE.JWOJ_param(
'A',
'a');
269 int bFPGA_A = thr_gXE.JWOJ_param(
'A',
'b');
270 int aFPGA_B = thr_gXE.JWOJ_param(
'B',
'a');
271 int bFPGA_B = thr_gXE.JWOJ_param(
'B',
'b');
272 int aFPGA_C = thr_gXE.JWOJ_param(
'C',
'a');
273 int bFPGA_C = thr_gXE.JWOJ_param(
'C',
'b');
279 gXE_seedThrA, gXE_seedThrB, gXE_seedThrC);
297 std::vector<int> thr_A (12, 0);
298 std::vector<int> thr_B (12, 0);
316 for (
int i = 0;
i <14;
i++){
318 gFEXOutputs->
addValueJet(
"EtaJet", tobs_v[
i]->getEta());
321 gFEXOutputs->
addValueJet(
"StatusJet", tobs_v[
i]->getStatus());
322 gFEXOutputs->
addValueJet(
"TobIDJet", tobs_v[
i]->getTobID());
327 for (
int i = 0;
i <4;
i++){
329 gFEXOutputs->
addValueGlobal(
"GlobalQuantity1", global_tobs[
i]->getQuantity1());
330 gFEXOutputs->
addValueGlobal(
"GlobalQuantity2", global_tobs[
i]->getQuantity2());
331 gFEXOutputs->
addValueGlobal(
"SaturationGlobal", global_tobs[
i]->getSaturation());
332 gFEXOutputs->
addValueGlobal(
"TobIDGlobal", global_tobs[
i]->getTobID());
333 gFEXOutputs->
addValueGlobal(
"GlobalStatus1", global_tobs[
i]->getStatus1());
334 gFEXOutputs->
addValueGlobal(
"GlobalStatus2", global_tobs[
i]->getStatus2());
339 return StatusCode::SUCCESS;