124{
125
126
128 if (!scellsHandle.isValid())
129 {
131 return StatusCode::FAILURE;
132 }
135 {
136 for (const CaloCell *scell : *scellsHandle)
138 scells.push_back(scell);
139 }
140 else
141 scells.assign(scellsHandle->begin(), scellsHandle->end());
142
146 {
148 if (!tileCellHandle.isValid())
149 {
151 return StatusCode::FAILURE;
152 }
153 tileCellCont.assign(tileCellHandle->begin(), tileCellHandle->end());
154 }
155 else
156 {
158 if (!triggerTowerHandle.isValid())
159 {
161 return StatusCode::FAILURE;
162 }
163 TTs = triggerTowerHandle.cptr();
164 }
165 auto clustersForTau = std::make_unique<xAOD::EmTauRoIContainer>();
166 auto auxClustersForTau = std::make_unique<xAOD::EmTauRoIAuxContainer>();
167 clustersForTau->setStore(auxClustersForTau.get());
168
169
170 std::vector<const CaloCell *> allSuperCells(scells.begin(), scells.end());
171
172
173 TH2F supercellMapEM0(
"SupercellMapEM0",
"Supercell map of EM0", 98, -4.9, 4.9, 64, 0, 2 *
M_PI);
174 TH2F supercellMapEM1(
"SupercellMapEM1",
"Supercell map of EM1", 392, -4.9, 4.9, 64, 0, 2 *
M_PI);
175 TH2F supercellMapEM2(
"SupercellMapEM2",
"Supercell map of EM2", 392, -4.9, 4.9, 64, 0, 2 *
M_PI);
176 TH2F supercellMapEM1_coarse(
"SupercellMapEM1_coarse",
"Supercell map of EM1 coarse", 196, -4.9, 4.9, 64, 0, 2 *
M_PI);
177 TH2F supercellMapEM2_coarse(
"SupercellMapEM2_coarse",
"Supercell map of EM2 coarse", 196, -4.9, 4.9, 64, 0, 2 *
M_PI);
178 TH2F supercellMapEM3(
"SupercellMapEM3",
"Supercell map of EM3", 98, -4.9, 4.9, 64, 0, 2 *
M_PI);
179 TH2F supercellMapHAD(
"SupercellMapHAD",
"Supercell map of HAD", 98, -4.9, 4.9, 64, 0, 2 *
M_PI);
180 TH2F supercellMapTWR(
"SupercellMapTWR",
"Supercell map of TWR", 98, -4.9, 4.9, 64, 0, 2 *
M_PI);
181
182 int currentSampling = 0;
183 float currentEta = 0;
184 float currentPhi = 0;
185 float currentCellEt = 0;
186
187
188 for (auto scell : allSuperCells)
189 {
190 currentSampling = scell->caloDDE()->getSampling();
191 currentEta = scell->eta();
192 currentPhi = TVector2::Phi_0_2pi(scell->phi());
194
195
196 if (currentSampling == 0 || currentSampling == 4)
197 {
198 supercellMapEM0.Fill(currentEta, currentPhi, currentCellEt);
199 }
200 else if (currentSampling == 1 || currentSampling == 5)
201 {
202 supercellMapEM1.Fill(currentEta, currentPhi, currentCellEt);
203 supercellMapEM1_coarse.Fill(currentEta, currentPhi, currentCellEt);
204 }
205 else if (currentSampling == 2 || currentSampling == 6)
206 {
207 supercellMapEM2.Fill(currentEta, currentPhi, currentCellEt);
208 supercellMapEM2_coarse.Fill(currentEta, currentPhi, currentCellEt);
209 }
210 else if (currentSampling == 3 || currentSampling == 7)
211 {
212 supercellMapEM3.Fill(currentEta, currentPhi, currentCellEt);
213 }
214 else
215 {
216 supercellMapHAD.Fill(currentEta, currentPhi, currentCellEt);
217 }
218
219
220 supercellMapTWR.Fill(currentEta, currentPhi, currentCellEt);
221 }
222
223
225 {
226
227
228 if (
tt->sampling() != 1 || std::abs(
tt->eta()) > 1.5)
229 {
230 continue;
231 }
232
233
234 float cpET =
tt->cpET() * 500.;
235 if (cpET < 0.)
236 {
237 cpET = 0;
238 }
239
240
241 supercellMapHAD.Fill(
tt->eta(), TVector2::Phi_0_2pi(
tt->phi()), cpET);
242 supercellMapTWR.Fill(
tt->eta(), TVector2::Phi_0_2pi(
tt->phi()), cpET);
243 }
244
245
246 std::vector<TLorentzVector> localMaxima;
247 localMaxima.reserve(200);
248
249
250 for (
int i = 0;
i < supercellMapTWR.GetNbinsX();
i++)
251 {
252 for (int j = 0; j < supercellMapTWR.GetNbinsY(); j++)
253 {
254
255 double towerET = supercellMapTWR.GetBinContent(i + 1, j + 1);
256 if (towerET < 1000.)
257 continue;
258
259
260
261
262 std::vector<double> binsAbove;
263 binsAbove.reserve(4);
264 std::vector<double> binsBelow;
265 binsBelow.reserve(4);
266
267
268 int aboveInPhi = j + 1;
269 if (j == supercellMapTWR.GetNbinsY() - 1)
270 aboveInPhi = 0;
271 int belowInPhi = j - 1;
272 if (j == 0)
273 belowInPhi = supercellMapTWR.GetNbinsY() - 1;
274
275
276
277 binsAbove.push_back(supercellMapTWR.GetBinContent(i, aboveInPhi + 1));
278 binsAbove.push_back(supercellMapTWR.GetBinContent(i + 1, aboveInPhi + 1));
279 binsAbove.push_back(supercellMapTWR.GetBinContent(i + 2, aboveInPhi + 1));
280 binsAbove.push_back(supercellMapTWR.GetBinContent(i + 2, j + 1));
281
282
283 binsBelow.push_back(supercellMapTWR.GetBinContent(i, belowInPhi + 1));
284 binsBelow.push_back(supercellMapTWR.GetBinContent(i + 1, belowInPhi + 1));
285 binsBelow.push_back(supercellMapTWR.GetBinContent(i + 2, belowInPhi + 1));
286 binsBelow.push_back(supercellMapTWR.GetBinContent(i, j + 1));
287
288 bool isMax = true;
289
290
291 for (
unsigned int k = 0;
k < binsAbove.size();
k++)
292 {
293 if (towerET < binsAbove[k])
294 isMax = false;
295 }
296 for (
unsigned int k = 0;
k < binsBelow.size();
k++)
297 {
298 if (towerET <= binsBelow[k])
299 isMax = false;
300 }
301
302 if (isMax)
303 {
304 TLorentzVector myMaximum;
305 myMaximum.SetPtEtaPhiM(towerET, supercellMapTWR.GetXaxis()->GetBinCenter(i + 1), supercellMapTWR.GetYaxis()->GetBinCenter(j + 1), 0);
306 localMaxima.push_back(myMaximum);
307 }
308 }
309 }
310
312 {
313 for (
int i = 1;
i < supercellMapEM1_coarse.GetNbinsX() + 1;
i++)
314 {
315 for (int j = 1; j < supercellMapEM1_coarse.GetNbinsY() + 1; j++)
316 {
317 ATH_MSG_DEBUG(
"supercellMapEM1_coarse.GetBinContent(" << i <<
"," << j <<
") " << supercellMapEM1_coarse.GetBinContent(i, j));
318 ATH_MSG_DEBUG(
"supercellMapEM2_coarse.GetBinContent(" << i <<
"," << j <<
") " << supercellMapEM2_coarse.GetBinContent(i, j));
319 ATH_MSG_DEBUG(
"supercellMapEM2_coarse.GetXaxis()->GetBinCenter(" << i <<
") " << supercellMapEM2_coarse.GetXaxis()->GetBinCenter(i));
320 ATH_MSG_DEBUG(
"supercellMapEM2_coarse.GetYaxis()->GetBinCenter(" << j <<
") " << supercellMapEM2_coarse.GetYaxis()->GetBinCenter(j));
321 }
322 }
323 }
324
325
326 for (auto myMaximum : localMaxima)
327 {
328
329 if (std::abs(myMaximum.Eta()) > 2.5)
330 {
331 continue;
332 }
333
334
335 int i = supercellMapTWR.GetXaxis()->FindFixBin(myMaximum.Eta());
336
337 int j = supercellMapTWR.GetYaxis()->FindFixBin(TVector2::Phi_0_2pi(myMaximum.Phi()));
338
339 int i_fine_start = ((
i - 1) * 4) + 1;
340 int i_offset = 0;
341 double i_max = 0;
342 for (unsigned int i_off_cand = 0; i_off_cand < 4; i_off_cand++)
343 {
344 int i_et = supercellMapEM2.GetBinContent(i_fine_start + i_off_cand, j);
345 if (i_et > i_max)
346 {
347 i_max = i_et;
348 i_offset = i_off_cand;
349 }
350 }
351 int i_fine = i_fine_start + i_offset;
352
353
354 int aboveInPhi = j + 1;
355 if (j == supercellMapTWR.GetNbinsY())
356 {
357 aboveInPhi = 1;
358 }
359 int belowInPhi = j - 1;
360 if (j == 1)
361 {
362 belowInPhi = supercellMapTWR.GetNbinsY();
363 }
364
365
366
367 std::vector<double> allET;
368 allET.reserve(4);
369
370 double ET;
371
372 ET = supercellMapTWR.GetBinContent(i, j);
373 ET += supercellMapTWR.GetBinContent(i + 1, j);
374 ET += supercellMapTWR.GetBinContent(i, aboveInPhi);
375 ET += supercellMapTWR.GetBinContent(i + 1, aboveInPhi);
376 allET.push_back(ET);
377
378
379 ET = supercellMapTWR.GetBinContent(i, j);
380 ET += supercellMapTWR.GetBinContent(i - 1, j);
381 ET += supercellMapTWR.GetBinContent(i, aboveInPhi);
382 ET += supercellMapTWR.GetBinContent(i - 1, aboveInPhi);
383 allET.push_back(ET);
384
385
386 ET = supercellMapTWR.GetBinContent(i, j);
387 ET += supercellMapTWR.GetBinContent(i - 1, j);
388 ET += supercellMapTWR.GetBinContent(i, belowInPhi);
389 ET += supercellMapTWR.GetBinContent(i - 1, belowInPhi);
390 allET.push_back(ET);
391
392
393 ET = supercellMapTWR.GetBinContent(i, j);
394 ET += supercellMapTWR.GetBinContent(i + 1, j);
395 ET += supercellMapTWR.GetBinContent(i, belowInPhi);
396 ET += supercellMapTWR.GetBinContent(i + 1, belowInPhi);
397 allET.push_back(ET);
398
399
400 double eFEXOldCluster = 0;
401 for (
unsigned int k = 0;
k < allET.size();
k++)
402 {
403 if (allET.at(k) > eFEXOldCluster)
404 eFEXOldCluster = allET.at(k);
405 }
406
407
408
409 bool sumAboveInPhi = true;
410
411
412 double abovePhiCellET = supercellMapEM2.GetBinContent(i_fine, aboveInPhi);
413
414
415 double belowPhiCellET = supercellMapEM2.GetBinContent(i_fine, belowInPhi);
416
417
418 if (belowPhiCellET > abovePhiCellET)
419 sumAboveInPhi = false;
420
421
422 int offPhiCoordinate = sumAboveInPhi ? aboveInPhi : belowInPhi;
423
424
425 double em0OregonET = 0;
426 em0OregonET += supercellMapEM0.GetBinContent(i, j);
427 em0OregonET += supercellMapEM0.GetBinContent(i - 1, j);
428 em0OregonET += supercellMapEM0.GetBinContent(i + 1, j);
429 em0OregonET += supercellMapEM0.GetBinContent(i, offPhiCoordinate);
430 em0OregonET += supercellMapEM0.GetBinContent(i - 1, offPhiCoordinate);
431 em0OregonET += supercellMapEM0.GetBinContent(i + 1, offPhiCoordinate);
432
433
434 double em1OregonET = 0;
435 em1OregonET += supercellMapEM1.GetBinContent(i_fine, j);
436 em1OregonET += supercellMapEM1.GetBinContent(i_fine - 1, j);
437 em1OregonET += supercellMapEM1.GetBinContent(i_fine - 2, j);
438 em1OregonET += supercellMapEM1.GetBinContent(i_fine + 1, j);
439 em1OregonET += supercellMapEM1.GetBinContent(i_fine + 2, j);
440 em1OregonET += supercellMapEM1.GetBinContent(i_fine, offPhiCoordinate);
441 em1OregonET += supercellMapEM1.GetBinContent(i_fine - 1, offPhiCoordinate);
442 em1OregonET += supercellMapEM1.GetBinContent(i_fine - 2, offPhiCoordinate);
443 em1OregonET += supercellMapEM1.GetBinContent(i_fine + 1, offPhiCoordinate);
444 em1OregonET += supercellMapEM1.GetBinContent(i_fine + 2, offPhiCoordinate);
445
446
447 double em2OregonET = 0;
448 em2OregonET += supercellMapEM2.GetBinContent(i_fine, j);
449 em2OregonET += supercellMapEM2.GetBinContent(i_fine - 1, j);
450 em2OregonET += supercellMapEM2.GetBinContent(i_fine - 2, j);
451 em2OregonET += supercellMapEM2.GetBinContent(i_fine + 1, j);
452 em2OregonET += supercellMapEM2.GetBinContent(i_fine + 2, j);
453 em2OregonET += supercellMapEM2.GetBinContent(i_fine, offPhiCoordinate);
454 em2OregonET += supercellMapEM2.GetBinContent(i_fine - 1, offPhiCoordinate);
455 em2OregonET += supercellMapEM2.GetBinContent(i_fine - 2, offPhiCoordinate);
456 em2OregonET += supercellMapEM2.GetBinContent(i_fine + 1, offPhiCoordinate);
457 em2OregonET += supercellMapEM2.GetBinContent(i_fine + 2, offPhiCoordinate);
458
459
460 double em3OregonET = 0;
461 em3OregonET += supercellMapEM3.GetBinContent(i, j);
462 em3OregonET += supercellMapEM3.GetBinContent(i - 1, j);
463 em3OregonET += supercellMapEM3.GetBinContent(i + 1, j);
464 em3OregonET += supercellMapEM3.GetBinContent(i, offPhiCoordinate);
465 em3OregonET += supercellMapEM3.GetBinContent(i - 1, offPhiCoordinate);
466 em3OregonET += supercellMapEM3.GetBinContent(i + 1, offPhiCoordinate);
467
468
469 double hadOregonET = 0;
470 hadOregonET += supercellMapHAD.GetBinContent(i, j);
471 hadOregonET += supercellMapHAD.GetBinContent(i - 1, j);
472 hadOregonET += supercellMapHAD.GetBinContent(i + 1, j);
473 hadOregonET += supercellMapHAD.GetBinContent(i, offPhiCoordinate);
474 hadOregonET += supercellMapHAD.GetBinContent(i - 1, offPhiCoordinate);
475 hadOregonET += supercellMapHAD.GetBinContent(i + 1, offPhiCoordinate);
476
477
478 double eFEX_OregonET = em0OregonET + em1OregonET + em2OregonET + em3OregonET + hadOregonET;
479
480
481
482 double oreIsoInnerET = 0;
483 oreIsoInnerET += supercellMapEM2.GetBinContent(i_fine, j);
484 oreIsoInnerET += supercellMapEM2.GetBinContent(i_fine - 1, j);
485 oreIsoInnerET += supercellMapEM2.GetBinContent(i_fine + 1, j);
486 oreIsoInnerET += supercellMapEM2.GetBinContent(i_fine, offPhiCoordinate);
487 oreIsoInnerET += supercellMapEM2.GetBinContent(i_fine - 1, offPhiCoordinate);
488 oreIsoInnerET += supercellMapEM2.GetBinContent(i_fine + 1, offPhiCoordinate);
489
490
491 double oreIsoOuterET = oreIsoInnerET;
492 oreIsoOuterET += supercellMapEM2.GetBinContent(i_fine - 2, j);
493 oreIsoOuterET += supercellMapEM2.GetBinContent(i_fine - 3, j);
494 oreIsoOuterET += supercellMapEM2.GetBinContent(i_fine - 4, j);
495 oreIsoOuterET += supercellMapEM2.GetBinContent(i_fine + 2, j);
496 oreIsoOuterET += supercellMapEM2.GetBinContent(i_fine + 3, j);
497 oreIsoOuterET += supercellMapEM2.GetBinContent(i_fine + 4, j);
498 oreIsoOuterET += supercellMapEM2.GetBinContent(i_fine - 2, offPhiCoordinate);
499 oreIsoOuterET += supercellMapEM2.GetBinContent(i_fine - 3, offPhiCoordinate);
500 oreIsoOuterET += supercellMapEM2.GetBinContent(i_fine - 4, offPhiCoordinate);
501 oreIsoOuterET += supercellMapEM2.GetBinContent(i_fine + 2, offPhiCoordinate);
502 oreIsoOuterET += supercellMapEM2.GetBinContent(i_fine + 3, offPhiCoordinate);
503 oreIsoOuterET += supercellMapEM2.GetBinContent(i_fine + 4, offPhiCoordinate);
504
505
506 double eFEX_OregonIso = oreIsoOuterET ? oreIsoInnerET / oreIsoOuterET : oreIsoInnerET;
507
508
509
510
511
512 bool eFEX_OregonIso_12pass = true;
513 if (10000. < eFEX_OregonET && 15000. > eFEX_OregonET && eFEX_OregonIso < 0.69)
514 {
515 eFEX_OregonIso_12pass = false;
516 }
517
518
519 bool eFEX_OregonIso_20pass = true;
520 if (20000. < eFEX_OregonET && 25000. > eFEX_OregonET && eFEX_OregonIso < 0.61)
521 {
522 eFEX_OregonIso_20pass = false;
523 }
524
525
526
527
528
529
530
531
532
533
534
535
536
537 std::vector<double> E_EM0;
538 E_EM0.reserve(9);
539 E_EM0.push_back(supercellMapEM0.GetBinContent(i, j));
540 E_EM0.push_back(supercellMapEM0.GetBinContent(i - 1, j));
541 E_EM0.push_back(supercellMapEM0.GetBinContent(i - 1, aboveInPhi));
542 E_EM0.push_back(supercellMapEM0.GetBinContent(i, aboveInPhi));
543 E_EM0.push_back(supercellMapEM0.GetBinContent(i + 1, aboveInPhi));
544 E_EM0.push_back(supercellMapEM0.GetBinContent(i + 1, j));
545 E_EM0.push_back(supercellMapEM0.GetBinContent(i + 1, belowInPhi));
546 E_EM0.push_back(supercellMapEM0.GetBinContent(i, belowInPhi));
547 E_EM0.push_back(supercellMapEM0.GetBinContent(i - 1, belowInPhi));
548 std::vector<double> E_EM3;
549 E_EM3.reserve(9);
550 E_EM3.push_back(supercellMapEM3.GetBinContent(i, j));
551 E_EM3.push_back(supercellMapEM3.GetBinContent(i - 1, j));
552 E_EM3.push_back(supercellMapEM3.GetBinContent(i - 1, aboveInPhi));
553 E_EM3.push_back(supercellMapEM3.GetBinContent(i, aboveInPhi));
554 E_EM3.push_back(supercellMapEM3.GetBinContent(i + 1, aboveInPhi));
555 E_EM3.push_back(supercellMapEM3.GetBinContent(i + 1, j));
556 E_EM3.push_back(supercellMapEM3.GetBinContent(i + 1, belowInPhi));
557 E_EM3.push_back(supercellMapEM3.GetBinContent(i, belowInPhi));
558 E_EM3.push_back(supercellMapEM3.GetBinContent(i - 1, belowInPhi));
559 std::vector<double> E_HAD;
560 E_HAD.reserve(9);
561 E_HAD.push_back(supercellMapHAD.GetBinContent(i, j));
562 E_HAD.push_back(supercellMapHAD.GetBinContent(i - 1, j));
563 E_HAD.push_back(supercellMapHAD.GetBinContent(i - 1, aboveInPhi));
564 E_HAD.push_back(supercellMapHAD.GetBinContent(i, aboveInPhi));
565 E_HAD.push_back(supercellMapHAD.GetBinContent(i + 1, aboveInPhi));
566 E_HAD.push_back(supercellMapHAD.GetBinContent(i + 1, j));
567 E_HAD.push_back(supercellMapHAD.GetBinContent(i + 1, belowInPhi));
568 E_HAD.push_back(supercellMapHAD.GetBinContent(i, belowInPhi));
569 E_HAD.push_back(supercellMapHAD.GetBinContent(i - 1, belowInPhi));
570 std::vector<double> E_EM12_central;
571 E_EM12_central.reserve(5);
572 std::vector<double> E_EM12_above;
573 E_EM12_above.reserve(6);
574 std::vector<double> E_EM12_below;
575 E_EM12_below.reserve(6);
576 float seedEta = supercellMapTWR.GetXaxis()->GetBinCenter(i);
577 int EM2seedBin = supercellMapEM2_coarse.GetXaxis()->FindBin(seedEta - 0.025);
578
579
580 E_EM12_central.push_back(supercellMapEM2_coarse.GetBinContent(EM2seedBin - 2, j) + supercellMapEM2_coarse.GetBinContent(EM2seedBin - 1, j) + supercellMapEM1_coarse.GetBinContent(EM2seedBin - 2, j) + supercellMapEM1_coarse.GetBinContent(EM2seedBin - 1, j));
581 E_EM12_central.push_back(supercellMapEM2_coarse.GetBinContent(EM2seedBin - 1, j) + supercellMapEM2_coarse.GetBinContent(EM2seedBin - 0, j) + supercellMapEM1_coarse.GetBinContent(EM2seedBin - 1, j) + supercellMapEM1_coarse.GetBinContent(EM2seedBin - 0, j));
582 E_EM12_central.push_back(supercellMapEM2_coarse.GetBinContent(EM2seedBin - 0, j) + supercellMapEM2_coarse.GetBinContent(EM2seedBin + 1, j) + supercellMapEM1_coarse.GetBinContent(EM2seedBin - 0, j) + supercellMapEM1_coarse.GetBinContent(EM2seedBin + 1, j));
583 E_EM12_central.push_back(supercellMapEM2_coarse.GetBinContent(EM2seedBin + 1, j) + supercellMapEM2_coarse.GetBinContent(EM2seedBin + 2, j) + supercellMapEM1_coarse.GetBinContent(EM2seedBin + 1, j) + supercellMapEM1_coarse.GetBinContent(EM2seedBin + 2, j));
584 E_EM12_central.push_back(supercellMapEM2_coarse.GetBinContent(EM2seedBin + 2, j) + supercellMapEM2_coarse.GetBinContent(EM2seedBin + 3, j) + supercellMapEM1_coarse.GetBinContent(EM2seedBin + 2, j) + supercellMapEM1_coarse.GetBinContent(EM2seedBin + 3, j));
585
586 for (
int k = -2;
k <= 3;
k++)
587 {
588 E_EM12_above.push_back(supercellMapEM2_coarse.GetBinContent(EM2seedBin + k, aboveInPhi) + supercellMapEM1_coarse.GetBinContent(EM2seedBin + k, aboveInPhi));
589 E_EM12_below.push_back(supercellMapEM2_coarse.GetBinContent(EM2seedBin + k, belowInPhi) + supercellMapEM1_coarse.GetBinContent(EM2seedBin + k, belowInPhi));
590 }
591
592 sort(E_EM0.begin(), E_EM0.end());
593 sort(E_EM3.begin(), E_EM3.end());
594 sort(E_HAD.begin(), E_HAD.end());
595 sort(E_EM12_central.begin(), E_EM12_central.end());
596 sort(E_EM12_above.begin(), E_EM12_above.end());
597 sort(E_EM12_below.begin(), E_EM12_below.end());
598
599 double eFEX_BC = 0;
600
601
602 eFEX_BC = E_EM0.at(E_EM0.size() - 1) + E_EM0.at(E_EM0.size() - 2) + E_EM0.at(E_EM0.size() - 3);
603
604 eFEX_BC += E_EM3.at(E_EM3.size() - 1) + E_EM3.at(E_EM3.size() - 2);
605
606 eFEX_BC += E_HAD.at(E_HAD.size() - 1) + E_HAD.at(E_HAD.size() - 2) + E_HAD.at(E_HAD.size() - 3);
607 eFEX_BC += E_EM12_central.at(E_EM12_central.size() - 1);
608 eFEX_BC += E_EM12_above.at(E_EM12_above.size() - 1);
609 eFEX_BC += E_EM12_below.at(E_EM12_below.size() - 1);
610
611
612 float nomeFEX_BCiso = 0;
613 nomeFEX_BCiso += E_EM12_central.at(E_EM12_central.size() - 1);
614 nomeFEX_BCiso += E_EM12_above.at(E_EM12_above.size() - 1);
615 nomeFEX_BCiso += E_EM12_below.at(E_EM12_below.size() - 1);
616 nomeFEX_BCiso += E_EM0.at(E_EM0.size() - 1);
617 nomeFEX_BCiso += E_EM0.at(E_EM0.size() - 2);
618 nomeFEX_BCiso += E_EM0.at(E_EM0.size() - 3);
619 nomeFEX_BCiso += E_EM3.at(E_EM3.size() - 1);
620 nomeFEX_BCiso += E_EM3.at(E_EM3.size() - 2);
621
622 float denBCiso = 0;
623 denBCiso += supercellMapTWR.GetBinContent(i, j);
624 denBCiso += supercellMapTWR.GetBinContent(i - 1, j);
625 denBCiso += supercellMapTWR.GetBinContent(i + 1, j);
626 denBCiso += supercellMapTWR.GetBinContent(i, j + 1);
627 denBCiso += supercellMapTWR.GetBinContent(i - 1, j + 1);
628 denBCiso += supercellMapTWR.GetBinContent(i + 1, j + 1);
629 denBCiso += supercellMapTWR.GetBinContent(i, j - 1);
630 denBCiso += supercellMapTWR.GetBinContent(i - 1, j - 1);
631 denBCiso += supercellMapTWR.GetBinContent(i + 1, j - 1);
632
633 float eFEX_BCiso = denBCiso ? nomeFEX_BCiso / denBCiso : nomeFEX_BCiso;
634
635
636 bool eFEX_BCiso_12pass = true;
637 if (10000. < eFEX_BC && 15000. > eFEX_BC && eFEX_BCiso < 0.38)
638 {
639 eFEX_BCiso_12pass = false;
640 }
641
642
643 bool eFEX_BCiso_20pass = true;
644 if (20000. < eFEX_BC && 25000. > eFEX_BC && eFEX_BCiso < 0.18)
645 {
646 eFEX_BCiso_20pass = false;
647 }
648
649
650
651 int em2i = supercellMapEM2.GetXaxis()->FindFixBin(myMaximum.Eta() + 0.05);
652
653 int em2j = supercellMapEM2.GetYaxis()->FindFixBin(TVector2::Phi_0_2pi(myMaximum.Phi()));
654
655 float maximumET = supercellMapEM2.GetBinContent(em2i, em2j);
656 int maximumCell = em2i;
657
658
659 for (
int k = -2;
k < 2;
k++)
660 {
661 float ETvalue = supercellMapEM2.GetBinContent(em2i + k, em2j);
662 if (ETvalue > maximumET)
663 {
664 maximumET = ETvalue;
665 maximumCell = em2i +
k;
666 }
667 }
668
669
670
671 float nextET = supercellMapEM2.GetBinContent(maximumCell + 1, em2j);
672 nextET = ((supercellMapEM2.GetBinContent(maximumCell - 1, em2j) > nextET) ? supercellMapEM2.GetBinContent(maximumCell - 1, em2j) : nextET);
673 nextET = ((supercellMapEM2.GetBinContent(maximumCell, em2j + 1) > nextET) ? supercellMapEM2.GetBinContent(maximumCell, em2j + 1) : nextET);
674 nextET = ((supercellMapEM2.GetBinContent(maximumCell, em2j - 1) > nextET) ? supercellMapEM2.GetBinContent(maximumCell, em2j - 1) : nextET);
675
676 float numerator = maximumET + nextET;
677
678
680 float phicenter = supercellMapEM2.GetYaxis()->GetBinCenter(em2j);
683 denominator += supercellMapEM2.GetBinContent(em2i +
eta, supercellMapEM2.GetYaxis()->FindFixBin(TVector2::Phi_0_2pi(phicenter + (
phi * 0.1))));
684
685
686
688 clustersForTau->push_back(clForTau);
689 clForTau->
setEta(myMaximum.Eta());
690 clForTau->
setPhi(myMaximum.Phi());
691
692 decR3ClusterET(*clForTau) = eFEXOldCluster;
693 decR3OreClusterET(*clForTau) = eFEX_OregonET;
694 decR3BCClusterET(*clForTau) = eFEX_BC;
695 decR3BCClusterIso(*clForTau) = denBCiso > 0 ? eFEX_BCiso : 0;
696 decR3OreClusterIso(*clForTau) = oreIsoOuterET > 0 ? eFEX_OregonIso : 0;
697
698 decR3OreIsoPass12(*clForTau) = eFEX_OregonIso_12pass;
699 decR3OreIsoPass20(*clForTau) = eFEX_OregonIso_20pass;
700 decR3BCIsoPass12(*clForTau) = eFEX_BCiso_12pass;
701 decR3BCIsoPass20(*clForTau) = eFEX_BCiso_20pass;
703 }
704
706 ATH_CHECK(writeHandle.record(std::move(clustersForTau), std::move(auxClustersForTau)));
707 return StatusCode::SUCCESS;
708}
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
#define ATH_CHECK
Evaluate an expression and check for errors.
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.
bool msgLvl(const MSG::Level lvl) const
float CaloCellET(const CaloCell *const &inputCell, float digitScale, float digitThreshold) const
member functions
void setEta(float v)
Set the pseudorapidity of the em/tau candidate.
void setPhi(float v)
Set the azimuthal angle of the em/tau candidate.
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
TH2F(name, title, nxbins, bins_par2, bins_par3, bins_par4, bins_par5=None, bins_par6=None, path='', **kwargs)
TriggerTowerContainer_v2 TriggerTowerContainer
Define the latest version of the TriggerTower container.
TriggerTower_v2 TriggerTower
Define the latest version of the TriggerTower class.