ATLAS Offline Software
gSuperCellTowerMapper.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 //***************************************************************************
5 // gSuperCellTowerMapper - supercells and Tile tower assignment to gTowers
6 // -------------------
7 // begin : 01 04 2021
8 // email : cecilia.tosciri@cern.ch
9 //***************************************************************************
10 
13 #include "GaudiKernel/MsgStream.h"
15 
16 
17 // This class is designed to receive a list of supercells and a list of gTowers and to match them together appropriately.
18 
19 
20 namespace LVL1 {
21 
22 gSuperCellTowerMapper::gSuperCellTowerMapper(const std::string& type,const std::string& name,const IInterface* parent):
24 {
25  declareInterface<IgSuperCellTowerMapper>(this);
26 
27 }
28 
30 {
31 }
32 
34 {
35 
38 
39  return StatusCode::SUCCESS;
40 }
41 
42 StatusCode gSuperCellTowerMapper::AssignTriggerTowerMapper(std::unique_ptr<gTowerContainer> & my_gTowerContainerRaw) const {
43 
44  static constexpr float delta_phi = M_PI/32;
45  static constexpr float delta_eta = 0.1;
46 
48  if(!triggerTowerCollection.isValid()){
49  ATH_MSG_FATAL("Could not retrieve triggerTowerCollection " << m_triggerTowerCollectionSGKey.key() );
50  return StatusCode::FAILURE;
51  }
52 
53 
54  for(auto eachTower : *triggerTowerCollection) {
55 
56  if(std::abs(eachTower->eta())<1.5 && eachTower->sampling()==1) {
57  int tile_iphi = int(eachTower->phi()/delta_phi);
58  int tower_iphi = tile_iphi/2;
59  int tile_ieta = int(std::abs(eachTower->eta())/delta_eta);
60  int tower_ieta = tile_ieta/2;
61  int nphi = 32;
62  int etaSign{-1};
63  int towerID_Modifier{100000};
64 
65 
66  if (eachTower->eta() > 0) {
67  etaSign = 1;
68  towerID_Modifier = 200000;
69  }
70 
71  if(tower_ieta * etaSign == -7) {
72  towerID_Modifier = 300000;
73  }
74 
75  else if (tower_ieta * etaSign == 7) {
76  towerID_Modifier = 400000;
77  }
78  int towerid = FindTowerIDForSuperCell(tower_ieta, tower_iphi, nphi) + towerID_Modifier;
79 
80  LVL1::gTower * targetTower;
81  if((targetTower = my_gTowerContainerRaw->findTower(towerid)))
82  {
83  // Set the ET to the gTower, with layer 1 to specify this comes from the HAD
84  targetTower->addET(static_cast<int>(eachTower->jepET()) * 1000., 1);
85  } else
86  {
87  ATH_MSG_WARNING("\n==== gSuperCellTowerMapper ============ Tower id is officially unknown - it will be ignored. (Needs investigation). Please report this!");
88  }
89  }
90  }
91  return StatusCode::SUCCESS;
92 }
93 
95  return;
96 }
97 
98 // works for real supercells from MC
99 StatusCode gSuperCellTowerMapper::AssignSuperCellsToTowers(std::unique_ptr<gTowerContainer> & my_gTowerContainerRaw) const
100 {
101  bool doPrint = true;
102 
104  if(!scellsCollection.isValid()){
105  ATH_MSG_FATAL("Could not retrieve scellsCollection " << m_scellsCollectionSGKey.key() );
106  return StatusCode::FAILURE;
107  }
108 
109 
110  const CaloCell_Base_ID* idHelper = nullptr;
111  ATH_CHECK( detStore()->retrieve (idHelper, "CaloCell_SuperCell_ID") );
112 
113  for (const CaloCell* cell : * scellsCollection){
114 
115  const CaloSampling::CaloSample sample = (cell)->caloDDE()->getSampling();
116  const Identifier ID = (cell)->ID(); // super cell unique ID
117  int region = idHelper->region(ID);
118  int pos_neg = idHelper->pos_neg(ID);
119  int eta_index = idHelper->eta(ID);
120  const int phi_index = idHelper->phi(ID);
121  float et = (cell)->energy()/std::cosh((cell)->eta());
122  int prov = (cell)->provenance();
123 
124 
125  // std::cout<< ID << " " << (cell)->eta() << " " << (cell)->phi() << " " << sample << " " << region << std::endl;
126  // The following is to check if any SuperCells from data are permanently masked, and if so the masking is applied
127  int SCprov = prov&0xFFF;
128  bool isMasked = (SCprov&0x80)==0x80;//prov looks like 0000 0000 1000 0000 if the cell is masked
129  if (isMasked and m_apply_masking) et = 0;
130 
131  // I removed the LOCAL TO GLOBAL ETA INDEX PATCH for gFEX
132  // Since in any case the SC assignment won't be regular, the eta and phi bins are combined directly in the FindAndConnectTower
133  FindAndConnectTower(my_gTowerContainerRaw,sample,region,pos_neg,eta_index,phi_index,ID,et,prov,doPrint);
134 
135 
136  }
137 
138  for (auto gTower : *my_gTowerContainerRaw)
139  {
140  gTower->setET();
141 
142  }
143 
144 
145  return StatusCode::SUCCESS;
146 
147 }
148 
149 
150 void gSuperCellTowerMapper::ConnectSuperCellToTower(std::unique_ptr<gTowerContainer> & my_gTowerContainerRaw, int iGTower, Identifier ID, float et) const {
151 
152  LVL1::gTower * tmpTower = my_gTowerContainerRaw->findTower(iGTower);
153 
154  if(tmpTower){
155  tmpTower->setSCID(ID);
156  tmpTower->addET(et, 0); // layer is always 0 (EM) for SuperCells
157 
158  }
159 
160 }
161 
162 int gSuperCellTowerMapper::FindAndConnectTower(std::unique_ptr<gTowerContainer> & my_gTowerContainerRaw,CaloSampling::CaloSample sample,const int region, const int pos_neg, const int eta_index, const int phi_index, Identifier ID, float et, int prov,bool doPrint) const
163 {
164 
165  bool validcell = true;
166 
167  // We tell the gTower which supercell unique ID is in each tower
168  int nphi = -1; // to be filled with number of phi bins
169  int towereta = -99; // to be filled with tower eta value to help find it
170  int towerphi = -99; // to be filled with tower phi value to help find it
171  int iGTower = -99; // The tower ID which the supercell will be assigned to
172  int towerID_Modifier = -999999999; // adjustable tower ID modifier to fit tower Id scheme
173 
174 
175  //----------------------------------------------------------
176 
177  // Begin assigning supercells to Towers
178 
179  //----------------------------------------------------------
180 
181  switch (sample) {
182  // E.M. Barrel (EMB)
184  // The following divides integers by 2 and truncates away the decimals (rounds DOWN to an integer)
185  towereta = eta_index / 2; // Layer 0 has super cells which are 0.1 x 0.1 - gTower is 0.2 x 0.2
186  towerphi = phi_index / 2; // phi is 32 for gTowers
187 
188  nphi = 32;
189 
190  if(eta_index == 14){ // special treatment for the tower where EMB and EMEC overlap (for gFEX: Eta Range 1.4-1.6)
191  if(pos_neg < 0){ towerID_Modifier = 300000; }
192  else if(pos_neg > 0){ towerID_Modifier = 400000; }
193  }
194  else{ // standard treatment for non-transition towers
195  if(pos_neg < 0){ towerID_Modifier = 100000; }
196  else if(pos_neg > 0){ towerID_Modifier = 200000; }
197  }
198 
199  break;
200  }
201  case CaloSampling::EMB1:
202  case CaloSampling::EMB2: {
203 
204  nphi = 32;
205 
206  if (region == 0) {
207  towereta = eta_index / 8;
208  towerphi = phi_index / 2;
209  if(pos_neg < 0){ towerID_Modifier = 100000; }
210  else if(pos_neg > 0){ towerID_Modifier = 200000; }
211  }
212  else if (region == 1){
213  towereta = 7;
214  towerphi = phi_index/2;
215  if(pos_neg < 0){ towerID_Modifier = 300000; }
216  else if(pos_neg > 0){ towerID_Modifier = 400000; }
217  }
218  else {
219  ATH_MSG_DEBUG("[CaloSampling::EMB1 or CaloSampling::EMB2] -> invalid 'region' value: " << region << " (Under investigation) ");
220  }
221 
222  switch(sample){
223  case CaloSampling::EMB1: {
224  break;
225  }
226  case CaloSampling::EMB2: {
227  break;
228  }
229  default: {
230  ATH_MSG_DEBUG("CaloSampling::EMBX -> invalid sample for assigning iCell value! " << sample << " (Under investigation) ");
231  break;
232  }
233  }
234 
235  break;
236  }
237  case CaloSampling::EMB3: {
238 
239  nphi = 32;
240  towereta = eta_index/2; // Analogous to PreSamplerB
241  towerphi = phi_index/2;
242 
243 
244  if(pos_neg < 0){ towerID_Modifier = 100000; }
245  else if(pos_neg > 0){ towerID_Modifier = 200000; }
246 
247  break;
248  }
249  // E.M. End-cap (EMEC)
251 
252  nphi = 32;
253  // towereta = 7 + std::ceil(eta_index / 2.); //This is a special case, as there are only 3 cells in eta 1.56 (gFEX bin 7), 1.66 (gFEX bin 8), 1.76 (gFEX bin 8)
254  if (eta_index < 1) {towereta = 7;}
255  else {towereta = 8;}
256  towerphi = phi_index / 2; // phi is 32 for gTowers
257 
258 
259  if (towereta == 7){
260  if(pos_neg < 0){ towerID_Modifier = 300000; }
261  else if(pos_neg > 0){ towerID_Modifier = 400000; }
262  }
263  else if (towereta != 7){
264  if(pos_neg < 0){ towerID_Modifier = 500000; }
265  else if(pos_neg > 0){ towerID_Modifier = 600000; }
266  }
267 
268  break;
269  }
270  case CaloSampling::EME1: {
271 
272  nphi = 32;
273 
274  switch (region) {
275  case 0: {
276 
277  towereta = 7;
278  towerphi = phi_index/2;
279 
280  break;
281  }
282  case 2: {
283 
284  if (eta_index < 4) {towereta = 7;}
285  else {towereta = 8;}
286  towerphi = phi_index/2;
287 
288  break;
289  }
290  case 3: {
291 
292  if (eta_index < 11) {towereta = 8;}
293  else {towereta = 9;}
294  towerphi = phi_index/2;
295  break;
296 
297  }
298  case 4: {
299 
300  if (eta_index < 8) {towereta = 10;}
301  else {towereta = 11;}
302  towerphi = phi_index/2;
303 
304  break;
305  }
306  case 5: {
307 
308  towereta = 11 ;
309  towerphi = phi_index/2;
310 
311  break;
312  }
313  default: {
314  ATH_MSG_DEBUG("CaloSampling::EME1 -> invalid 'region' value: " << region << " (Under investigation) ");
315  break;
316  }
317  break;
318  }
319 
320  if (towereta == 7){
321  if(pos_neg < 0){ towerID_Modifier = 300000; }
322  else if(pos_neg > 0){ towerID_Modifier = 400000; }
323  }
324  else if (towereta != 7){
325  if(pos_neg < 0){ towerID_Modifier = 500000; }
326  else if(pos_neg > 0){ towerID_Modifier = 600000; }
327  }
328 
329  break;
330  }
331  case CaloSampling::EME2: {
332 
333  nphi = 32;
334 
335  switch (region) {
336  case 0: {
337 
338  if(abs(pos_neg) == 2){
339  towereta = 7;
340  towerphi = phi_index/2;
341  }
342  else if(abs(pos_neg) == 3){
343  if (eta_index == 0){
344  towereta = 12;
345  towerphi = phi_index;
346  }
347  else if (eta_index == 1){
348  towereta = 13;
349  towerphi = phi_index;
350  }
351  else if (eta_index == 2){
352  towereta = 14;
353  towerphi = phi_index;
354  }
355  }
356  break;
357  }
358  case 1: {
359  if(abs(pos_neg) == 2){
360  towerphi = phi_index/2;
361  if (eta_index < 7) {towereta = 7;}
362  else if (eta_index < 15) {towereta = 8;}
363  else if (eta_index < 23) {towereta = 9;}
364  else if (eta_index < 31) {towereta = 10;}
365  else if (eta_index < 43) {towereta = 11;}
366  }
367  else if(abs(pos_neg) == 3){
368  towerphi = phi_index;
369  towereta = 15;
370  }
371  break;
372  }
373 
374  default: {
375  ATH_MSG_DEBUG("CaloSampling::EME2 -> invalid 'region' value: " << region << " (Under investigation) ");
376  break;
377  }
378  break;
379  }
380 
381  if (towereta == 7){
382  if(pos_neg < 0){ towerID_Modifier = 300000; }
383  else if(pos_neg > 0){ towerID_Modifier = 400000; }
384  }
385  else if (towereta == 12 || towereta == 13 || towereta == 14 || towereta == 15){
386  if(pos_neg < 0){ towerID_Modifier = 700000; }
387  else if(pos_neg > 0){ towerID_Modifier = 800000; }
388  }
389  else {
390  if(pos_neg < 0){ towerID_Modifier = 500000; }
391  else if(pos_neg > 0){ towerID_Modifier = 600000; }
392  }
393 
394  break;
395  }
396  case CaloSampling::EME3: {
397 
398  nphi = 32;
399  switch (region) {
400  case 0: {
401  if(abs(pos_neg) == 2){
402  towerphi = phi_index/2;
403  if (eta_index == 0){
404  towereta = 7;
405  }
406  else if(eta_index < 3){
407  towereta = 8;
408  }
409  else if(eta_index < 5){
410  towereta = 9;
411  }
412  else if(eta_index < 7){
413  towereta = 10;
414  }
415  else if(eta_index < 10){
416  towereta = 11;
417  }
418 
419  }
420  else if(abs(pos_neg) == 3){
421  if (eta_index == 0){
422  towereta = 12;
423  towerphi = phi_index;
424  }
425  else if (eta_index == 1){
426  towereta = 13;
427  towerphi = phi_index;
428  }
429  else if (eta_index == 2){
430  towereta = 14;
431  towerphi = phi_index;
432  }
433  }
434  break;
435  }
436  case 1: { // we only have the case: abs(pos_neg) = 3
437  towerphi = phi_index;
438  towereta = 15;
439  break;
440  }
441  default: {
442  ATH_MSG_DEBUG("CaloSampling::EME3 -> invalid 'region' value: " << region << " (Under investigation) ");
443  break;
444  }
445  break;
446  }
447 
448  if (towereta == 7){
449  if(pos_neg < 0){ towerID_Modifier = 300000; }
450  else if(pos_neg > 0){ towerID_Modifier = 400000; }
451  }
452  else if (towereta == 12 || towereta == 13 || towereta == 14 || towereta == 15){
453  if(pos_neg < 0){ towerID_Modifier = 700000; }
454  else if(pos_neg > 0){ towerID_Modifier = 800000; }
455  }
456  else {
457  if(pos_neg < 0){ towerID_Modifier = 500000; }
458  else if(pos_neg > 0){ towerID_Modifier = 600000; }
459  }
460  break;
461  }
462  // Hadronic End-cap (HEC)
463  case CaloSampling::HEC0:{
464  nphi = 32;
465  switch(region){
466  case 0: {
467  if(abs(pos_neg) == 2){
468  towerphi = phi_index/2;
469  if (eta_index == 0){
470  towereta = 7;
471  }
472  else if(eta_index < 3){
473  towereta = 8;
474  }
475  else if(eta_index < 5){
476  towereta = 9;
477  }
478  else if(eta_index < 7){
479  towereta = 10;
480  }
481  else if(eta_index < 10){
482  towereta = 11;
483  }
484  }
485  break;
486 
487  }
488 
489  case 1: {
490  if(abs(pos_neg) == 2){
491  if (eta_index == 0){
492  towereta = 12;
493  towerphi = phi_index;
494  }
495  else if(eta_index == 1){
496  towereta = 13;
497  towerphi = phi_index;
498  }
499  else if(eta_index == 2){
500  towereta = 14;
501  towerphi = phi_index;
502  }
503  else if(eta_index == 3){
504  towereta = 15;
505  towerphi = phi_index;
506  }
507  }
508  break;
509 
510  }
511 
512  default: {
513  ATH_MSG_DEBUG("CaloSampling::HEC0 -> invalid 'region' value: " << region << " (Under investigation) ");
514  break;
515  }
516 
517  }
518 
519  // Tower connection
520  if (towereta == 7){
521  nphi = 32;
522  if(pos_neg < 0){ towerID_Modifier = 300000; }
523  else if(pos_neg > 0){ towerID_Modifier = 400000; }
524  }
525  else if (towereta == 12 || towereta == 13 || towereta == 14 || towereta == 15){
526  if(pos_neg < 0){ towerID_Modifier = 700000; }
527  else if(pos_neg > 0){ towerID_Modifier = 800000; }
528  }
529  else {
530  nphi = 32;
531  if(pos_neg < 0){ towerID_Modifier = 500000; }
532  else if(pos_neg > 0){ towerID_Modifier = 600000; }
533  }
534 
535  break;
536  }
539  case CaloSampling::TileBar2: {
540  REPORT_MESSAGE_WITH_CONTEXT (MSG::DEBUG, "gSuperCellTowerMapper") << "Supercell is from Tile Barrel - it will be ignored.";
541  validcell = false;
542  ATH_MSG_DEBUG("\n==== gSuperCellTowerMapper ============ Supercell is from Tile Barrel - it will be ignored.");
543  break;
544  }
547  case CaloSampling::TileGap3: {
548  ATH_MSG_DEBUG("\n==== gSuperCellTowerMapper ============ Supercell is from Tile Gap (ITC and scintillator) - it will be ignored.");
549  validcell = false;
550  break;
551  }
554  case CaloSampling::TileExt2: {
555  ATH_MSG_DEBUG("\n==== gSuperCellTowerMapper ============ Supercell is from Tile Extended Barrel - it will be ignored.");
556  validcell = false;
557  break;
558  }
559  case CaloSampling::FCAL0:{
560  nphi = 16;
561  towerphi = phi_index;
562  if(eta_index < 5){
563  towereta = 16;
564  }
565  else if(eta_index < 8){
566  towereta = 17;
567  }
568  else if(eta_index < 10){
569  towereta = 18;
570  }
571  else if(eta_index < 12){
572  towereta = 19;
573  }
574 
575  if(pos_neg < 0){ towerID_Modifier = 900000; }
576  else if(pos_neg > 0){ towerID_Modifier = 1000000; }
577 
578  break;
579  }
580  case CaloSampling::FCAL1:{
581  nphi = 16;
582  towerphi = phi_index;
583  if (eta_index < 4){
584  towereta = 16;
585  }
586  else if(eta_index < 6){
587  towereta = 17;
588  }
589  else if(eta_index < 7){
590  towereta = 18;
591  }
592  else if(eta_index < 8){
593  towereta = 19;
594  }
595 
596  if(pos_neg < 0){ towerID_Modifier = 900000; }
597  else if(pos_neg > 0){ towerID_Modifier = 1000000; }
598 
599  break;
600  }
601  case CaloSampling::FCAL2:{
602  nphi = 16;
603  towerphi = phi_index;
604  if (eta_index < 1){
605  towereta = 16;
606  }
607  else if(eta_index < 3){
608  towereta = 17;
609  }
610  else if(eta_index < 4){
611  towereta = 18;
612  }
613 
614  if(pos_neg < 0){ towerID_Modifier = 900000; }
615  else if(pos_neg > 0){ towerID_Modifier = 1000000; }
616  break;
617  }
618 
619 
620  case CaloSampling::MINIFCAL0:
621  case CaloSampling::MINIFCAL1:
622  case CaloSampling::MINIFCAL2:
623  case CaloSampling::MINIFCAL3: {
624  ATH_MSG_DEBUG("\n==== gSuperCellTowerMapper ============ Supercells is from MiniFCAL - it will be ignored.");
625  validcell = false;
626  break;
627  }
628  case CaloSampling::Unknown: {
629  ATH_MSG_WARNING("\n==== gSuperCellTowerMapper ============ Supercell sampling is officially unknown - it will be ignored. (Needs investigation). Please report this!");
630  validcell = false;
631  break;
632  }
633  default: {
634  ATH_MSG_DEBUG("\n==== gSuperCellTowerMapper ============ Supercell has invalid CaloSampling value: " << sample << " (Needs investigation). Please report this!");
635  validcell = false;
636  break;
637  }
638  }
639 
640  if(validcell){
641  iGTower = FindTowerIDForSuperCell(towereta, towerphi, nphi) + towerID_Modifier;
642  if(doPrint){
643  PrintCellSpec(sample, region, eta_index, phi_index, pos_neg, towereta, towerphi, nphi, towerID_Modifier, iGTower, prov, ID);
644  }
645  ConnectSuperCellToTower(my_gTowerContainerRaw, iGTower, ID, et);
646  }
647 
648  // END ITERATING OVER SUPER CELLS+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++++
649 
650  return 1;
651 
652 }
653 
654 int gSuperCellTowerMapper::FindTowerIDForSuperCell(int towereta, int towerphi, int nphi) const
655 {
656 
657  return (towerphi + (nphi * towereta));
658 
659 }
660 
662  const int eta_index, const int phi_index, const int pos_neg,
663  int towereta, int towerphi, int nphi, int towerID_Modifier,
664  int iGTower, int prov, Identifier ID) const
665 {
666 
667  std::string sampleName = "";
668 
669  switch (sample) {
670  case CaloSampling::PreSamplerB: { sampleName = "PreSamplerB"; break; }
671  case CaloSampling::EMB1: { sampleName = "EMB1"; break; }
672  case CaloSampling::EMB2: { sampleName = "EMB2"; break; }
673  case CaloSampling::EMB3: { sampleName = "EMB3"; break; }
674  case CaloSampling::PreSamplerE: { sampleName = "PreSamplerE"; break; }
675  case CaloSampling::EME1: { sampleName = "EME1"; break; }
676  case CaloSampling::EME2: { sampleName = "EME2"; break; }
677  case CaloSampling::EME3: { sampleName = "EME3"; break; }
678  case CaloSampling::HEC0: { sampleName = "HEC0"; break; }
679  case CaloSampling::HEC1: { sampleName = "HEC1"; break; }
680  case CaloSampling::HEC2: { sampleName = "HEC2"; break; }
681  case CaloSampling::HEC3: { sampleName = "HEC3"; break; }
682  case CaloSampling::TileBar0: { sampleName = "TileBar0"; break; }
683  case CaloSampling::TileBar1: { sampleName = "TileBar1"; break; }
684  case CaloSampling::TileBar2: { sampleName = "TileBar2"; break; }
685  case CaloSampling::TileGap1: { sampleName = "TileGap1"; break; }
686  case CaloSampling::TileGap2: { sampleName = "TileGap2"; break; }
687  case CaloSampling::TileGap3: { sampleName = "TileGap3"; break; }
688  case CaloSampling::TileExt0: { sampleName = "TileExt0"; break; }
689  case CaloSampling::TileExt1: { sampleName = "TileExt1"; break; }
690  case CaloSampling::TileExt2: { sampleName = "TileExt2"; break; }
691  case CaloSampling::FCAL0: { sampleName = "FCAL0"; break; }
692  case CaloSampling::FCAL1: { sampleName = "FCAL1"; break; }
693  case CaloSampling::FCAL2: { sampleName = "FCAL2"; break; }
694 
695  default: {
696  ATH_MSG_DEBUG("\n==== gSuperCellTowerMapper ============ Supercell has invalid CaloSampling value: " << sample << " (Needs investigation). Please report this!");
697  break;
698  }
699  }
700 
701  ATH_MSG_DEBUG("ASSIGNED CELL::: CASE: " << sampleName
702  << "\tSample: " << sample
703  << "\tRegion: " << region
704  << "\tEta_Index: " << eta_index
705  << "\tPhi_Index: " << phi_index
706  << "\tPosNeg: " << pos_neg
707  << "\tgTower Eta: " << towereta
708  << "\tgTower Phi: " << towerphi
709  << "\tgTower nphi: " << nphi
710  << "\tgTower modifier: " << towerID_Modifier
711  << "\tiGTower: " << iGTower
712  << "\tProvenance: " << prov
713  << "\tID: " << ID
714  << " ");
715 
716 
717  return;
718 }
719 
720 
721 } // end of LVL1 namespace
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
GetLCDefs::Unknown
@ Unknown
Definition: GetLCDefs.h:21
et
Extra patterns decribing particle interation process.
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
CaloCell_ID_FCS::TileExt2
@ TileExt2
Definition: FastCaloSim_CaloCell_ID.h:39
CaloCell_Base_ID::region
int region(const Identifier id) const
LAr field values (NOT_VALID == invalid request)
constants.EMB1
int EMB1
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:53
ReadCellNoiseFromCool.cell
cell
Definition: ReadCellNoiseFromCool.py:53
LVL1::gSuperCellTowerMapper::m_apply_masking
Gaudi::Property< bool > m_apply_masking
Definition: gSuperCellTowerMapper.h:44
ID
std::vector< Identifier > ID
Definition: CalibHitIDCheck.h:24
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
CaloCell_ID_FCS::TileExt0
@ TileExt0
Definition: FastCaloSim_CaloCell_ID.h:37
CaloCell_ID_FCS::TileBar1
@ TileBar1
Definition: FastCaloSim_CaloCell_ID.h:32
LVL1::gSuperCellTowerMapper::AssignSuperCellsToTowers
virtual StatusCode AssignSuperCellsToTowers(std::unique_ptr< gTowerContainer > &my_gTowerContainerRaw) const override
Definition: gSuperCellTowerMapper.cxx:99
CaloCell_Base_ID::pos_neg
int pos_neg(const Identifier id) const
LAr field values (NOT_VALID == invalid request)
LVL1::gTower::setSCID
void setSCID(Identifier ID)
Set supercell position ID.
Definition: gTower.cxx:97
LVL1::gSuperCellTowerMapper::initialize
virtual StatusCode initialize() override
standard Athena-Algorithm method
Definition: gSuperCellTowerMapper.cxx:33
LVL1::gTower
The gTower class is an interface object for gFEX trigger algorithms The purposes are twofold:
Definition: gTower.h:38
LVL1::gSuperCellTowerMapper::FindTowerIDForSuperCell
virtual int FindTowerIDForSuperCell(int towereta, int towerphi, int nphi) const override
Definition: gSuperCellTowerMapper.cxx:654
M_PI
#define M_PI
Definition: ActiveFraction.h:11
CaloCell_ID_FCS::FCAL1
@ FCAL1
Definition: FastCaloSim_CaloCell_ID.h:41
LVL1::gSuperCellTowerMapper::~gSuperCellTowerMapper
virtual ~gSuperCellTowerMapper()
Definition: gSuperCellTowerMapper.cxx:29
CaloCell_ID_FCS::HEC2
@ HEC2
Definition: FastCaloSim_CaloCell_ID.h:29
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
LVL1::gSuperCellTowerMapper::PrintCellSpec
virtual void PrintCellSpec(const CaloSampling::CaloSample sample, const int region, const int eta_index, const int phi_index, const int pos_neg, int towereta, int towerphi, int nphi, int towerID_Modifier, int iGTower, int prov, Identifier ID) const override
Definition: gSuperCellTowerMapper.cxx:661
LVL1
eFexTowerBuilder creates xAOD::eFexTowerContainer from supercells (LATOME) and triggerTowers (TREX) i...
Definition: ICMMCPHitsCnvTool.h:18
LVL1::gSuperCellTowerMapper::AssignTriggerTowerMapper
virtual StatusCode AssignTriggerTowerMapper(std::unique_ptr< gTowerContainer > &my_gTowerContainerRaw) const override
Definition: gSuperCellTowerMapper.cxx:42
gSuperCellTowerMapper.h
CaloCell_ID_FCS::TileGap3
@ TileGap3
Definition: FastCaloSim_CaloCell_ID.h:36
AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
gTowerBuilder.h
CaloCell_ID_FCS::HEC1
@ HEC1
Definition: FastCaloSim_CaloCell_ID.h:28
ParticleGun_FastCalo_ChargeFlip_Config.energy
energy
Definition: ParticleGun_FastCalo_ChargeFlip_Config.py:78
constants.EMB2
int EMB2
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:54
FullCPAlgorithmsTest_eljob.sample
sample
Definition: FullCPAlgorithmsTest_eljob.py:113
CaloSampling::CaloSample
CaloSample
Definition: Calorimeter/CaloGeoHelpers/CaloGeoHelpers/CaloSampling.h:22
LVL1::gSuperCellTowerMapper::m_triggerTowerCollectionSGKey
SG::ReadHandleKey< xAOD::TriggerTowerContainer > m_triggerTowerCollectionSGKey
Definition: gSuperCellTowerMapper.h:42
CaloCell_ID_FCS::TileBar0
@ TileBar0
Definition: FastCaloSim_CaloCell_ID.h:31
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
CaloCell_ID_FCS::TileGap2
@ TileGap2
Definition: FastCaloSim_CaloCell_ID.h:35
test_pyathena.parent
parent
Definition: test_pyathena.py:15
CaloCell_Base_ID::eta
int eta(const Identifier id) const
LAr field values (NOT_VALID == invalid request)
constants.EME1
int EME1
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:55
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
createCablingJSON.eta_index
int eta_index
Definition: createCablingJSON.py:14
LVL1::gSuperCellTowerMapper::gSuperCellTowerMapper
gSuperCellTowerMapper(const std::string &type, const std::string &name, const IInterface *parent)
Definition: gSuperCellTowerMapper.cxx:22
CaloCell_ID_FCS::TileGap1
@ TileGap1
Definition: FastCaloSim_CaloCell_ID.h:34
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
TrigConf::name
Definition: HLTChainList.h:35
LVL1::gTower::addET
void addET(float et, int layer)
Add ET in MeV, layer refers to EM or HAD (Tile)
Definition: gTower.cxx:60
REPORT_MESSAGE_WITH_CONTEXT
#define REPORT_MESSAGE_WITH_CONTEXT(LVL, CONTEXT_NAME)
Report a message, with an explicitly specified context name.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:345
CaloCell_ID_FCS::TileExt1
@ TileExt1
Definition: FastCaloSim_CaloCell_ID.h:38
LVL1::gSuperCellTowerMapper::reset
virtual void reset() override
Definition: gSuperCellTowerMapper.cxx:94
CaloCell_ID_FCS::EME3
@ EME3
Definition: FastCaloSim_CaloCell_ID.h:26
errorcheck.h
Helpers for checking error return status codes and reporting errors.
CaloCell_Base_ID::phi
int phi(const Identifier id) const
LAr field values (NOT_VALID == invalid request)
LVL1::gSuperCellTowerMapper::m_scellsCollectionSGKey
SG::ReadHandleKey< CaloCellContainer > m_scellsCollectionSGKey
Definition: gSuperCellTowerMapper.h:41
CaloCell_ID_FCS::HEC0
@ HEC0
Definition: FastCaloSim_CaloCell_ID.h:27
LVL1::gSuperCellTowerMapper::FindAndConnectTower
virtual int FindAndConnectTower(std::unique_ptr< gTowerContainer > &my_gTowerContainerRaw, CaloSampling::CaloSample sample, const int region, const int pos_neg, const int eta_index, const int phi_index, Identifier ID, float et, int prov, bool doPrint) const override
Definition: gSuperCellTowerMapper.cxx:162
CaloCell
Data object for each calorimeter readout cell.
Definition: CaloCell.h:57
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
CaloCell_ID_FCS::PreSamplerE
@ PreSamplerE
Definition: FastCaloSim_CaloCell_ID.h:23
CaloCell_ID_FCS::PreSamplerB
@ PreSamplerB
Definition: FastCaloSim_CaloCell_ID.h:19
eFEXNTuple.delta_phi
def delta_phi(phi1, phi2)
Definition: eFEXNTuple.py:15
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
DEBUG
#define DEBUG
Definition: page_access.h:11
CaloCell_ID_FCS::FCAL2
@ FCAL2
Definition: FastCaloSim_CaloCell_ID.h:42
LVL1::gTower::setET
void setET()
Definition: gTower.cxx:70
LVL1::gSuperCellTowerMapper::ConnectSuperCellToTower
virtual void ConnectSuperCellToTower(std::unique_ptr< gTowerContainer > &my_gTowerContainerRaw, int iGTower, Identifier ID, float et) const override
Definition: gSuperCellTowerMapper.cxx:150
AthAlgTool
Definition: AthAlgTool.h:26
CaloCell_ID_FCS::HEC3
@ HEC3
Definition: FastCaloSim_CaloCell_ID.h:30
CaloCell_Base_ID
Helper base class for offline cell identifiers.
Definition: CaloCell_Base_ID.h:41
CaloCell_ID_FCS::FCAL0
@ FCAL0
Definition: FastCaloSim_CaloCell_ID.h:40
CaloCell_ID_FCS::EMB3
@ EMB3
Definition: FastCaloSim_CaloCell_ID.h:22
CaloCell_ID_FCS::TileBar2
@ TileBar2
Definition: FastCaloSim_CaloCell_ID.h:33
constants.EME2
int EME2
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:56
Identifier
Definition: IdentifierFieldParser.cxx:14