ATLAS Offline Software
jSuperCellTowerMapper.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
9 
10 
11 // This is a class which is designed to receive in a list of supercells and a list of jTowers and match them together appropriately.
12 
13 
14 /* VERY IMPORTANT NOTE. ARE YOU CONFUSED ABOUT SAMPLING IDs? WANT TO KNOW WHERE ON EARTH THEY COME FROM? FINDING OBSCURE VALUES THAT ARE APPARENTLY MEANINGLESS?
15 
16 LOOK HERE!: athena/Calorimeter/CaloGeoHelpers/CaloGeoHelpers/CaloSampling.def
17 
18 */
19 
20 
21 namespace LVL1 {
22 
23 jSuperCellTowerMapper::jSuperCellTowerMapper(const std::string& type,const std::string& name,const IInterface* parent):
25 {
26  declareInterface<IjSuperCellTowerMapper>(this);
27 
28 }
29 
31 {
32 
33 }
34 
36 {
37 
40 
41  return StatusCode::SUCCESS;
42 
43 }
44 
45 StatusCode jSuperCellTowerMapper::AssignTriggerTowerMapper(std::unique_ptr<jTowerContainer> & my_jTowerContainerRaw) const {
46 
47  static constexpr float pi_over_32 = M_PI/32;
48 
50  if(!triggerTowerCollection.isValid()) {
51  ATH_MSG_ERROR("Could not retrieve collection " << m_triggerTowerCollectionSGKey.key() );
52  return StatusCode::FAILURE;
53  }
54  for(auto eachTower : *triggerTowerCollection) {
55  if(std::fabs(eachTower->eta())<1.5 && eachTower->sampling()==1) {
56  int i_phi = int(eachTower->phi()/pi_over_32);
57  int etaSign{-1};
58  int towerID_Modifier{100000};
59  if (eachTower->eta() > 0) {
60  etaSign = 1;
61  towerID_Modifier = 200000;
62  }
63  int i_eta = int(eachTower->eta() * 10) * etaSign;
64  if(i_eta * etaSign == -14) {
65  towerID_Modifier = 300000;
66  } else if (i_eta * etaSign == 14) {
67  towerID_Modifier = 400000;
68  }
69 
70  int towerid = FindTowerIDForSuperCell(i_eta, i_phi) + towerID_Modifier;
71  LVL1::jTower * targetTower;
72  if((targetTower = my_jTowerContainerRaw->findTower(towerid))) {
73  if (targetTower->getET_float(1, 0) > 0) {
74  ATH_MSG_WARNING("\n==== jSuperCellTowerMapper ============ Hadronic layer energy filled more than once - it will be ignored. (Needs investigation). Please report this!");
75  }
76 
77  targetTower->set_TileCal_Et(1, int(eachTower->cpET()) * 500.); // cf 500.0
78  } else {
79  ATH_MSG_WARNING("\n==== jSuperCellTowerMapper ============ Tower ID is officially unknown - it will be ignored. (Needs investigation). Please report this!");
80  }
81  }
82  }
83  return StatusCode::SUCCESS;
84 }
85 
87  return;
88 }
89 
90  // works for real supercells from MC
91  StatusCode jSuperCellTowerMapper::AssignSuperCellsToTowers(std::unique_ptr<jTowerContainer> & my_jTowerContainerRaw) const
92 {
93 
94  bool doPrint = false;
95 
97  if(!scellsCollection.isValid()) {
98  ATH_MSG_ERROR("Could not retrieve collection " << m_scellsCollectionSGKey.key() );
99  return StatusCode::FAILURE;
100  }
101 
102  //const CaloCell_Base_ID* idHelper = caloIdManager->getCaloCell_SuperCell_ID(); // getting the id helper class
103  const CaloCell_Base_ID* idHelper = nullptr;
104  ATH_CHECK( detStore()->retrieve (idHelper, "CaloCell_SuperCell_ID") );
105 
106  for (const CaloCell* cell : * scellsCollection) {
107 
108  const CaloSampling::CaloSample sample = (cell)->caloDDE()->getSampling(); // corresponds 'module' for FCAL/MiniFCAL
109  const Identifier ID = (cell)->ID(); // super cell unique ID
110  int region = idHelper->region(ID); // no region for FCAL, is 'depth' for MiniFCAL
111  int layer = -1;
112  int pos_neg = idHelper->pos_neg(ID); // corresponds to 'barrel_ec' for LArEM
113  int eta_index = idHelper->eta(ID);
114  const int phi_index = idHelper->phi(ID);
115  float et = (cell)->energy()/cosh((cell)->eta());
116  int prov = (cell)->provenance();
117 
118 
119  float eta_min = 0.0;//idHelper->eta_min(ID);
120  float eta_max = idHelper->eta_max(ID);
121  float eta0 = idHelper->eta0(ID);
122  float phi_min = 0.0;//idHelper->phi_min(ID);
123  float phi_max = idHelper->phi_max(ID);
124  float phi0 = idHelper->phi0(ID);
125 
126  /*
127  CaloSampling:
128  PreSamplerB 0 (LAr Barrel)
129  EMB1 1
130  EMB2 2
131  EMB3 3
132 
133  PreSamplerE 4 (LAr EM Endcap)
134  EME1 5
135  EME2 6
136  EME3 7
137 
138  HEC0 8 (Hadronic Endcap)
139  HEC1 9
140  HEC2 10
141  HEC3 11
142 
143  TileBar0 12 (Tile Barrel)
144  TileBar1 13
145  TileBar2 14
146 
147  TileGap1 15 (ITC and Scintillator)
148  TileGap2 16
149  TileGap3 17
150 
151  TileExt0 18 (Tile Extended Barrel)
152  TileExt1 19
153  TileExt2 20
154 
155  FCAL0 21 (Forward EM Endcap)
156  FCAL1 22
157  FCAL2 23
158 
159  MINIFCAL0 24
160  MINIFCAL1 25
161  MINIFCAL2 26
162  MINIFCAL3 27
163 
164  Unknown 28
165  */
166 
167  //We need NOT to explicitly avoid +/- 3 pos_neg supercells! These go beyond |eta| == 2.5 - we WANT these for the jFEX!
168  //PrintCellSpec(sample, layer, region, eta_index, phi_index, pos_neg, -999/*iJTower*/, -999/*iCell*/, prov, ID, false, eta_min, eta_max, eta0, phi_min, phi_max, phi0);
169  //if(std::abs(pos_neg) == 3){ /*continue;*/ } //PrintCellSpec(sample, layer, region, eta_index, phi_index, pos_neg, -999/*iJTower*/, -999/*iCell*/, prov, ID, false, eta_min, eta_max, eta0, phi_min, phi_max, phi0); continue; }
170 
171  // LOCAL TO GLOBAL ETA INDEX PATCH - USE A 'TOWER OFFSET' TO MARK THE START OF THE ETA_INDEX COUNTING (e.g. the rounded eta value of the innermost supercell)
172  switch(sample) {
174  break;
175  }
176  case CaloSampling::EMB1: {
177  if(region == 1) {
178  eta_index += 56;
179  }
180  break;
181  }
182  case CaloSampling::EMB2: {
183  if(region == 1) {
184  eta_index += 56;
185  }
186  break;
187  }
188  case CaloSampling::EMB3: {
189  break;
190  }
192  eta_index += 15;
193  break;
194  }
195  case CaloSampling::EME1: {
196  if(region == 0) {
197  eta_index += 14;
198  }
199  else if (region == 1) { /* doesn't exist */ }
200  else if (region == 2) {
201  eta_index += 60;
202  }
203  else if (region == 3) {
204  eta_index += 108; //6 supercell region
205  }
206  else if (region == 4) {
207  eta_index += 80;
208  }
209  else if (region == 5) {
210  eta_index += 24;
211  }
212  break;
213  }
214  case CaloSampling::EME2: {
215  if(region == 0) {
216  if(eta0 < 2.5) {
217  eta_index += 14;
218  }
219  else {
220  eta_index += 25;
221  }
222  }
223  else if (region == 1) {
224  if(eta0 < 2.5) {
225  eta_index += 57;
226  }
227  else {
228  eta_index += 28;
229  }
230  }
231  break;
232  }
233  case CaloSampling::EME3: {
234  if(region == 0) {
235  if(/*eta0 < 2.5*/ phi_max == 63) {
236  //if(eta0 < 2.5) {
237  eta_index += 15; // We should use eta0 here but the MC information is bugged for EME3 positive-side supercells
238  }
239  else {
240  eta_index += 25;
241  }
242  }
243  else if (region == 1) {
244  if(/*eta0 < 2.5*/ phi_max == 63) {
245  //if(eta0 < 2.5) {
246  eta_index += 15; // We should use eta0 here but the MC information is bugged for EME3 positive-side supercells
247  }
248  else {
249  eta_index += 28;
250  }
251  }
252  break;
253  }
254  case CaloSampling::HEC0:
255  case CaloSampling::HEC1:
256  case CaloSampling::HEC2:
257  case CaloSampling::HEC3: {
258  if(region == 0){
259  eta_index += 15;
260  }
261  else if (region == 1){ // to push these supercells to 2.5 and above
262  eta_index += 25;
263  }
264  break;
265  }
266  default: {
267  /*ATH_MSG_DEBUG("Not doing anything since sample = " << sample);*/ break;
268  }
269  }
270 
271 
272  FindAndConnectTower(my_jTowerContainerRaw,sample,region,layer,pos_neg,eta_index,phi_index,ID,et,prov,doPrint, eta_min, eta_max, eta0, phi_min, phi_max, phi0);
273 
274  }
275 
276  //multi linear digitisation encoding after filling all TT with the corresponding SC
277  for(auto tmpTower : *my_jTowerContainerRaw){
278  tmpTower->Do_LAr_encoding();
279  }
280 
281  return StatusCode::SUCCESS;
282 
283 }
284 
285 
286 void jSuperCellTowerMapper::ConnectSuperCellToTower(std::unique_ptr<jTowerContainer> & my_jTowerContainerRaw,int iJTower, Identifier ID, int iCell, float et, int layer) const {
287 
288  LVL1::jTower * tmpTower = my_jTowerContainerRaw->findTower(iJTower);
289  if(tmpTower){
290  tmpTower->set_LAr_Et(ID,iCell,et,layer);
291  }
292 
293 }
294 
295 int jSuperCellTowerMapper::FindAndConnectTower(std::unique_ptr<jTowerContainer> & my_jTowerContainerRaw,CaloSampling::CaloSample sample,const int region, int layer, const int pos_neg, const int eta_index, const int phi_index, Identifier ID, float et, int prov,bool doPrint, float eta_min, float eta_max, float eta0, float phi_min, float phi_max, float phi0) const
296 {
297 
298  // bool for the special case of 1.8 < eta < 2.0 only in the front layer
299  bool doenergysplit = false;
300 
301  // bool as a flag to enable or disable the connection of supercells to towers according to their location and identities
302  bool validcell = true;
303 
304  // We tell the jTower which supercell unique ID is in each of it's available 'slots'
305  int towereta = -99; // to be filled with tower eta value to help find it
306  int towerphi = -99; // to be filled with tower phi value to help find it
307  int iJTower = -99; // The tower ID which the supercell will be assigned to
308  int iCell = -1; // The position within the Tower that the supercell will be assigned to
309  int towerID_Modifier = -999999999; // adjustable tower ID modifier to fit tower Id scheme
310 
311  /*
312  ** iCell Numbering Scheme **
313 
314  Let's use the following scheme (from low to high eta regardless of detector side):
315  Layer 0: Cell 0 (Anything EM related)
316  Layer 1: Cell 1 (HEC or TILE, if we have them!)
317  */
318 
319 
320  /*
321  ** Structure of the EMB in Supercells **
322 
323  0 < 1.4 in steps of 0.1 == 14 towers
324  1.4 < 1.52 in steps of 0.12 ==> THIS TOWER IS MOVED TO TRANS TOWER REGION
325  14 towers total (all by presampler)
326  64 towers in phi in total
327 
328  896 towers in EMB per side
329  1792 towers in EMB total
330  */
331 
332  /*
333  ** Structure of the TRANS in Supercells **
334 
335  1.4 < 1.5, 1 special tower made from EMB and EME supercells together
336  1 tower in eta
337  64 towers in phi
338 
339  64 towers in TRANS total
340  */
341 
342  /*
343  ** Structure of the EMEC in Supercells **
344 
345  1.375 < 1.5, funny behaviour, treated as 1 special tower ==> 1 tower === TRANSITION TOWER NOW!
346  1.5 < 1.8 standard towers by presampler ==> 3 towers
347  1.8 < 2.0 standard towers by back ==> 2 towers
348  2.0 < 2.4 standard towers by back ==> 4 towers
349  2.4 < 2.5 standard tower by back ==> 1 tower
350  2.5 < 3.1, funny behaviour, treated as 3 wide towers ==> 3 towers. Also wide in phi!
351  3.1 < 3.2 standard tower by back ==> 1 tower. Also wide in phi!
352  10 towers in eta in total (by different means) (IGNORING ABOVE |ETA| > 2.5)
353  64 towers initially in phi (IGNORING ABOVE |ETA| > 2.5)
354 
355  640 towers in EME per side
356  1280 towers in EME total
357  */
358 
359 
360  /*
361  ** Structure of the HEC in Supercells **
362 
363  1.5 - 2.5, [Region 0] standard towers by presampler ==> layer on top of existing towers
364 
365  */
366 
367  /*
368  ** Notes on overall structure **
369  Total number of expected towers can be as high as: 896+640 = 1536 per side + 64 transition region towers (TRANS) each side = 3200 total <=== This is the correct value!
370  */
371 
372  /*
373  ** Notes on Tower ID Number Scheme **
374 
375  Left Barrel IETower = 100000 + X;
376  Right Barrel IETower = 200000 + X;
377  Left TRANS IETower = 300000 + X;
378  Right TRANS IETower = 400000 + X;
379  Left Endcap IETower = 500000 + X;
380  Right Endcap IETower = 600000 + X;
381  Left FCAL IETower = 700000 + X;
382  Right FCAL IETower = 800000 + X;
383  Left Hadronic Endcap IETower = 11100000 + X --> These are just Layer 5 of Endcap Towers. They will never be generated as standalone jTowers.
384  Right Hadronic Endcap IETower = 22200000 + X --> These are just Layer 5 of Endcap Towers. They will never be generated as standalone jTowers.
385 
386  */
387 
388 
389  //----------------------------------------------------------
390 
391  // Begin assigning supercells to Towers
392 
393  //----------------------------------------------------------
394 
395  switch (sample) {
396  // E.M. Barrel (EMB)
397  case CaloSampling::PreSamplerB: { // DONE
398  // Presampler of the EMBarrel. Supercells are 0.1 x 0.1 unless stated otherwise
399  // Region 0 has 14 supercells in 0 < eta < 1.4 and 64 supercells in phi.
400  // Region 0 has 1 supercell (0.12 x 0.1) in 1.4 < eta < 1.52 and 64 supercells in phi. // Documentation describes this as Region 1 but the code does not. We go with Region 0.
401 
402  layer = 0; // By definition for jFEX
403 
404  towereta = eta_index; // Layer 0 has super cells which are 0.1 x 0.1 - i.e. the full width of a tower - sothe eta_index matches up to the Tower Eta
405  towerphi = phi_index; // phi is standard also
406 
407  if(eta_index == 14) { // special treatment for TRANSITION tower
408  if(pos_neg < 0) {
409  towerID_Modifier = 300000;
410  }
411  else if(pos_neg > 0) {
412  towerID_Modifier = 400000;
413  }
414  iCell = 0; // By definition for jFEX
415  }
416  else { // standard treatment for non-transition towers
417  if(pos_neg < 0) {
418  towerID_Modifier = 100000;
419  }
420  else if(pos_neg > 0) {
421  towerID_Modifier = 200000;
422  }
423  iCell = 0; // By definition for jFEX
424  }
425 
426  break;
427  }
428  case CaloSampling::EMB1:
429  case CaloSampling::EMB2: {
430  // Layer 1 of the EMBarrel. Supercells are 0.025 x 0.1 unless stated otherwise
431  // Region 0 has 56 supercells in 0 < eta < 1.4 and 64 supercells in phi.
432  // Region 1 has 3 supercells in 1.4 < eta < 1.475 and 64 supercells in phi.
433 
434  // Layer 2 of the EMBarrel. Supercells are 0.025 x 0.1 unless stated otherwise
435  // Region 0 has 56 supercells in 0 < eta < 1.4 and 64 supercells in phi.
436  // Region 1 has 1 supercells (0.075 x 0.1) in 1.4 < eta < 1.475 and 64 supercells in phi.
437 
438  if (region == 0) {
439  towereta = eta_index / 4; // this divides integers by 4 and truncates away the decimals (rounds DOWN to an integer)
440  towerphi = phi_index;
441  if(pos_neg < 0) {
442  towerID_Modifier = 100000;
443  }
444  else if(pos_neg > 0) {
445  towerID_Modifier = 200000;
446  }
447  }
448  else if (region == 1) {
449  towereta = 14; // hardcoded but is correct
450  towerphi = phi_index;
451  if(pos_neg < 0) {
452  towerID_Modifier = 300000;
453  }
454  else if(pos_neg > 0) {
455  towerID_Modifier = 400000;
456  }
457  }
458  else {
459  ATH_MSG_DEBUG("[CaloSampling::EMB1 or CaloSampling::EMB2] -> invalid 'region' value: " << region << " (Under investigation) ");
460  }
461 
462  switch(sample) {
463  case CaloSampling::EMB1: {
464  iCell = 0; // By definition for jFEX
465  layer = 0; // By definition for jFEX
466  break;
467  }
468  case CaloSampling::EMB2: {
469  //if (region == 0) { iCell = (eta_index % 4) + 5; }
470  //else if (region == 1){ iCell = 5; }
471  iCell = 0; // By definition for jFEX
472  layer = 0; // By definition for jFEX
473  break;
474  }
475  default: {
476  ATH_MSG_DEBUG("CaloSampling::EMBX -> invalid sample for assigning iCell value! " << sample << " (Under investigation) ");
477  break;
478  }
479  }
480 
481  break;
482  }
483  case CaloSampling::EMB3: {
484  // Layer 3 of the EMBarrel. Supercells are 0.1 x 0.1 unless stated otherwise
485  // Region 0 has 14 supercells in 0 < eta < 1.4 and 64 supercells in phi.
486  // Region 1 does not exist
487 
488  layer = 0; // By definition for jFEX
489  towereta = eta_index; // Analogous to PreSamplerB
490  towerphi = phi_index;
491 
492  iCell = 0; // By definition for jFEX
493 
494  if(pos_neg < 0) {
495  towerID_Modifier = 100000;
496  }
497  else if(pos_neg > 0) {
498  towerID_Modifier = 200000;
499  }
500 
501  break;
502  }
503  // E.M. End-cap (EMEC)
505  // Region 1 has 3 supercells in 1.5 < eta < 1.8, and 64 supercells in phi.
506  // Supercells are 0.1 x 0.1.
507 
508  layer = 0; // By definition for jFEX
509 
510  towereta = eta_index;
511  towerphi = phi_index;
512 
513  iCell = 0; // By definition for jFEX
514 
515  if(pos_neg < 0) {
516  towerID_Modifier = 500000;
517  }
518  else if(pos_neg > 0) {
519  towerID_Modifier = 600000;
520  }
521 
522  break;
523  }
524  case CaloSampling::EME1: {
525  // Layer 1 of the EM End-Cap. Supercells very frequently change in size.
526  // Region 0 has 1 supercell in 1.375 < eta < 1.5, and 64 supercells in phi. Supercells are 0.125 x 0.1.
527  // Region 1 has 12 supercells in 1.5 < eta < 1.8, and 64 supercells in phi. Supercells are 0.025 x 0.1.
528  // Region 2 has 6 (now 12??) supercells in 1.8 < eta < 2.0, and 64 supercells in phi. Supercells are 0.0333 (0.016667 ???) x 0.1.
529  // Region 3 has 16 supercells in 2.0 < eta < 2.4, and 64 supercells in phi. Supercells are 0.025 x 0.1.
530  // Region 4 has 1 supercell in 2.4 < eta < 2.5, and 64 supercells in phi. Supercells are 0.1 x 0.1.
531  // Region 5 has 3 supercells in 2.5 < eta < 3.1, and 32 supercells in phi. Supercells are 0.2 x 0.2.
532  // Region 6 has 1 supercell in 3.1 < eta < 3.2, and 32 supercells in phi. Supercells are 0.1 x 0.2
533 
534  // 1.375 < 1.5, funny behaviour, treated as 1 special tower ==> 1 tower
535  // 1.5 < 1.8 standard towers by presampler ==> 3 towers
536  // 1.8 < 2.0 standard towers by back ==> 2 towers
537  // 2.0 < 2.4 standard towers by back ==> 4 towers
538  // 2.4 < 2.5 standard tower by back ==> 1 tower
539  // 2.5 < 3.1, funny behaviour, treated as 3 wide towers ==> 3 towers
540  // 3.1 < 3.2, funny behaviour, treated as 1 tower ==> 1 tower
541  // 15 towers in total (by different means)
542 
543  layer = 0; // By definition for jFEX
544 
545  switch (region) {
546  case 0: { // special treatment for transition region
547 
548  towereta = eta_index;
549  towerphi = phi_index;
550 
551  iCell = 0; // By definition for jFEX
552  break;
553  }
554  case 2: {
555 
556  towereta = (eta_index / 4);
557  towerphi = phi_index;
558 
559  //iCell = (eta_index % 4) + 1;
560  iCell = 0; // By definition for jFEX
561  break;
562  }
563  case 3: {
564 
565  // calc ID
566  towereta = (eta_index / 6);
567  towerphi = phi_index;
568 
569  //iCell = (eta_index % 6) + 1;
570  iCell = 0; // By definition for jFEX
571 
572  /*
573  if(iCell == 1){ iCell = 1; doenergysplit = false; }
574  else if( iCell == 2 ){ iCell = 1; doenergysplit = true; }
575  else if( iCell == 3 ){ iCell = 2; doenergysplit = false; }
576  else if( iCell == 4 ){ iCell = 3; doenergysplit = false; }
577  else if( iCell == 5 ){ iCell = 3; doenergysplit = true; }
578  else if( iCell == 6 ){ iCell = 4; doenergysplit = false; }
579  */
580 
581  break;
582 
583  // OUTDATED CODE LEFT HERE AS A FRIENDLY REMINDER OF SPECIAL STRUCTURE INCASE A FUTURE ISSUE ARISES======================
584  // Begin Dima---
585  // This is the special region, with 6 supercells per tower
586  // Idea here is to divide 2 out of 6 by 2 and add half ET to each of 2 "normal" SC
587  //iJTower = (eta_index / 6) + 18;
588 
589  // These are the cells we will split
590  //if (eta_index % 3 == 1) {
591  //iCell = (eta_index % 6 < 3 ? 0 : 2);
592  //iCell2 = iCell + 1;
593  //} else {
594  // These ones just need assigning to the correct location
595  // So that 0, 2, 3, 5 => 0, 1, 2, 3
596  //iCell = (eta_index % 6) / 1.45;
597  //}
598  // end DIMA---
599  // ======================================================================================================================
600  }
601  case 4: {
602 
603  towereta = (eta_index / 4);
604  towerphi = phi_index;
605 
606  //iCell = (eta_index % 4) + 1;
607  iCell = 0; // By definition for jFEX
608  break;
609  }
610  case 5: {
611 
612  towereta = eta_index ;
613  towerphi = phi_index;
614 
615  //iCell = 1;
616  iCell = 0; // By definition for jFEX
617  break;
618  }
619  default: {
620  ATH_MSG_DEBUG("CaloSampling::EME1 -> invalid 'region' value: " << region << " (Under investigation) ");
621  break;
622  }
623  break;
624  }
625 
626  if(region != 0) {
627  if(pos_neg < 0) {
628  towerID_Modifier = 500000;
629  }
630  else if(pos_neg > 0) {
631  towerID_Modifier = 600000;
632  }
633  }
634  else if(region == 0) {
635  // TRANSITION REGION TREATMENT!
636  if(pos_neg < 0) {
637  towerID_Modifier = 300000;
638  }
639  else if(pos_neg > 0) {
640  towerID_Modifier = 400000;
641  }
642  }
643 
644  break;
645  }
646  case CaloSampling::EME2: {
647 
648  // Layer 2 of the EM End-Cap. Supercells very frequently change in size.
649  // Region 0 has 1 supercell in 1.375 < eta < 1.425, and 64 supercells in phi. Supercells are 0.05 x 0.1.
650  // These are in the MC as Region 0 posneg +-2
651  // Region 1 has 43 supercells in 1.425 < eta < 2.5, and 64 supercells in phi. Supercells are 0.025 x 0.1.
652  // These are all bunched together in the MC as Region 1 posneg +-2
653 
654  // Region 0 also has 3 supercells in 2.5 < eta < 3.1, and 32 supercells in phi. Supercells are 0.2 x 0.2.
655  // These are all bunched together in the MC as Region 1 posneg +-3
656  // Region 1 also has 1 supercell in 3.1 < eta < 3.2, and 32 supercells in phi. Supercells are 0.1 x 0.2.
657  // These are in the MC as Region 1 posneg +-3
658 
659  // Focusing 20/01/2021 to finding these jFEX cells in the specified ranges - will update this note if they are found and understood.
660  // 20/01/2021: These supercells have been found. Check log file eme2_phi0.log
661  // 20/01/2021: Side note - does this mean we have the structure of EME2 completely wrong in eSuperCellTowerMapper? Need to check... eFEX IMPORTANT
662 
663  // from code way up above we have:
664  /*
665  case CaloSampling::EME2: {
666  if(region == 0){ eta_index += 14; }
667  else if (region == 1){ eta_index += 57; }
668  break;
669  }
670  */
671 
672  layer = 0; // By definition for jFEX
673 
674  switch (region) {
675  case 0: { // special treatment for TRANSITON region
676 
677  //layer = 3; // change layer label for ET threshold treatment since we are treating this as a layer3 cell - it's an extreme special case cell as part of the transition region
678  layer = 0; // By definition for jFEX
679 
680  switch (std::abs(pos_neg)) {
681  case 2: {
682  towereta = eta_index;
683  towerphi = phi_index;
684  break;
685  }
686  case 3: {
687  towereta = eta_index;
688  towerphi = phi_index;
689  break;
690  }
691  default: {
692  ATH_MSG_DEBUG("CaloSampling::EME2 -> invalid 'pos_neg' value: " << pos_neg << " (Under investigation) ");
693  break;
694  }
695  }
696 
697  iCell = 0; // By definition for jFEX since the jTower only has one big EM section
698 
699  break;
700  }
701  case 1: {
702 
703  switch (std::abs(pos_neg)) {
704  case 2: {
705  towereta = (eta_index / 4);
706  towerphi = phi_index;
707  break;
708  }
709  case 3: {
710  towereta = eta_index;
711  towerphi = phi_index;
712  break;
713  }
714  default: {
715  ATH_MSG_DEBUG("CaloSampling::EME2 -> invalid 'pos_neg' value: " << pos_neg << " (Under investigation) ");
716  break;
717  }
718  }
719 
720 
721  iCell = 0; // By definition for jFEX since the jTower only has one big EM section
722 
723  break;
724  }
725  default: {
726  ATH_MSG_DEBUG("CaloSampling::EME2 -> invalid 'region' value: " << region << " (Under investigation) ");
727  break;
728  }
729  break;
730  }
731 
732 /* if(region == 0) {
733  // TRANSITION REGION TREATMENT!
734  if(eta0 < 1.5) {
735  //if(eta0 < 2.5) {
736  if(pos_neg < 0) {
737  towerID_Modifier = 300000;
738  }
739  else if(pos_neg > 0) {
740  towerID_Modifier = 400000;
741  }
742  }
743  else {
744  if(pos_neg < 0) {
745  towerID_Modifier = 500000;
746  }
747  else if(pos_neg > 0) {
748  towerID_Modifier = 600000;
749  }
750  }
751  }
752  else {
753  //if( (eta_index / 4) < 15 ){
754  //if(eta0 < 2.5) {
755  if(eta0 < 1.5) {
756  if(pos_neg < 0) {
757  towerID_Modifier = 300000;
758  }
759  else if(pos_neg > 0) {
760  towerID_Modifier = 400000;
761  }
762  }
763  else {
764  if(pos_neg < 0) {
765  towerID_Modifier = 500000;
766  }
767  else if(pos_neg > 0) {
768  towerID_Modifier = 600000;
769  }
770  }
771  }*/
772 
773 
774  // testing *********************************
775  if(region == 0) {
776  if(eta0 < 2.5) {
777  if(pos_neg < 0) {
778  towerID_Modifier = 300000;
779  }
780  else if(pos_neg > 0) {
781  towerID_Modifier = 400000;
782  }
783  }
784  else {
785  if(pos_neg < 0) {
786  towerID_Modifier = 500000;
787  }
788  else if(pos_neg > 0) {
789  towerID_Modifier = 600000;
790  }
791  }
792  }
793  else {
794  if(eta0 <= 1.5) {
795  if(towereta < 15) {
796  if(pos_neg < 0 && pos_neg > -3) {
797  towerID_Modifier = 300000;
798  }
799  else if(pos_neg > 0 && pos_neg < 3) {
800  towerID_Modifier = 400000;
801  }
802  }
803  else {
804  if(pos_neg < 0 && pos_neg >= -3) {
805  towerID_Modifier = 500000;
806  }
807  else if(pos_neg > 0 && pos_neg <= 3) {
808  towerID_Modifier = 600000;
809  }
810  }
811  }
812  else {
813  if(pos_neg < 0) {
814  towerID_Modifier = 500000;
815  }
816  else if(pos_neg > 0) {
817  towerID_Modifier = 600000;
818  }
819  }
820  }
821  // end of testing *********************************
822 
823  break;
824  }
825  case CaloSampling::EME3: {
826 
827  // Layer 3 of the EM End-Cap. Supercells are 0.1 x 0.1 unless stated otherwise.
828  // Region 0 does not exist. - FALSE!
829  // Region 1 has 3 supercells in 1.5 < eta < 1.8, and 64 supercells in phi. Supercells are 0.1 x 0.1.
830  // Region 2 has 2 supercells in 1.8 < eta < 2.0, and 64 supercells in phi. Supercells are 0.1 x 0.1.
831  // Region 3 has 4 supercells in 2.0 < eta < 2.4, and 64 supercells in phi. Supercells are 0.1 x 0.1.
832  // Region 4 has 1 supercells in 2.4 < eta < 2.5, and 64 supercells in phi. Supercells are 0.1 x 0.1.
834  // No other Regions exist
835  // Actually there should be supercells here in also covering 2.5 < eta < 3.1 and 3.1 < eta < 3.2, in the same vein as EME2 - let's find them! // JFEX IMPORTANT
836  // Focusing 20/01/2021 to finding these jFEX cells in the specified ranges - will update this note if they are found and understood
837  // 21/01/2021: These supercells have been found. Check log file eme2_phi0.log
838  // 21/01/2021: Side note - does this mean we have the structure of EME2 completely wrong in eSuperCellTowerMapper? Need to check... eFEX IMPORTANT
839 
840  // The supercells for the 2.5<eta<3.1 are bunched together in the MC as Region 0 posneg +-3
841  // The supercells from the 3.1<eta<3.2 are in the MC as Region 1 posneg +-3
842 
843 
844  // from code way up above we have:
845  //case CaloSampling::EME3: { eta_index += 15; break; }
846 
847  layer = 0; // By definition for jFEX
848 
849  switch (region) {
850  case 0: {
851 
852  towereta = eta_index;
853  towerphi = phi_index;
854 
855  iCell = 0; // By definition for jFEX
856 
857  break;
858  }
859  case 1: {
860  towereta = eta_index;
861  towerphi = phi_index;
862  iCell = 0; // By definition for jFEX
863  break;
864  }
865  default: {
866  ATH_MSG_DEBUG("CaloSampling::EME3 -> invalid 'region' value: " << region << " (Under investigation) ");
867  break;
868  }
869  break;
870  }
871 
872  if(pos_neg < 0) {
873  towerID_Modifier = 500000;
874  }
875  else if(pos_neg > 0) {
876  towerID_Modifier = 600000;
877  }
878 
879  break;
880  }
881  // Hadronic End-cap (HEC)
882  case CaloSampling::HEC0:
883  case CaloSampling::HEC1:
884  case CaloSampling::HEC2:
885  case CaloSampling::HEC3: {
886 
887  // All Layers of the Hadronic End-Cap.
888  // Region 0 has 10 supercells in 1.5 < eta < 2.5, and 32 supercells in phi. Supercells are 0.1 x 0.1. [posneg +-2]
889  // Region 1 has 4 supercells in 2.5 < eta < 3.3, and 16 supercells in phi. Supercells are 0.2 x 0.2. [posneg +-2] // JFEX IMPORTANT
890 
891  // VERIFIED THAT I CAN SEE THESE MC IN THE MC ON 21/02/2021
892  towereta = eta_index;
893  towerphi = phi_index;
894 
895  layer = 1; // By definition for jFEX
896  iCell = 1; //for all cases HEC0, HEC1, HEC2, HEC3
897  switch(region) {
898  case 0: {
899 
900  towereta = eta_index;
901  towerphi = phi_index;
902 
903  layer = 1; // By definition for jFEX
904  iCell = 1; //for all cases HEC0, HEC1, HEC2, HEC3
905 
906  break;
907 
908  }
909  case 1: {
910 
911  towereta = eta_index;
912  towerphi = phi_index;
913 
914  layer = 1; // By definition for jFEX
915  iCell = 1; //for all cases HEC0, HEC1, HEC2, HEC3
916 
917  break;
918 
919  }
920  default: {
921  break;
922  }
923  }
924  // Tower connection
925  if(pos_neg < 0) {
926  towerID_Modifier = 500000;
927  }
928  else if(pos_neg > 0) {
929  towerID_Modifier = 600000;
930  }
931 
932  break;
933  }
936  case CaloSampling::TileBar2: {
937  //REPORT_MESSAGE_WITH_CONTEXT (MSG::DEBUG, "jSuperCellTowerMapper") << "Supercell is from Tile Barrel - it will be ignored.";
938  validcell = false;
939  //PrintCellSpec(sample, layer, region, eta_index, phi_index, pos_neg, iJTower, iCell, prov, ID, doenergysplit, eta_min, eta_max, eta0, phi_min, phi_max, phi0);
940  ATH_MSG_DEBUG("\n==== jSuperCellTowerMapper ============ Supercell is from Tile Barrel - it will be ignored.");
941  break;
942  }
945  case CaloSampling::TileGap3: {
946  ATH_MSG_DEBUG("\n==== jSuperCellTowerMapper ============ Supercell is from Tile Gap (ITC and scintillator) - it will be ignored.");
947  //PrintCellSpec(sample, layer, region, eta_index, phi_index, pos_neg, iJTower, iCell, prov, ID, doenergysplit, eta_min, eta_max, eta0, phi_min, phi_max, phi0);
948  validcell = false;
949  break;
950  }
953  case CaloSampling::TileExt2: {
954  ATH_MSG_DEBUG("\n==== jSuperCellTowerMapper ============ Supercell is from Tile Extended Barrel - it will be ignored.");
955  //PrintCellSpec(sample, layer, region, eta_index, phi_index, pos_neg, iJTower, iCell, prov, ID, doenergysplit, eta_min, eta_max, eta0, phi_min, phi_max, phi0);
956  validcell = false;
957  break;
958  }
959  case CaloSampling::FCAL0:
960  case CaloSampling::FCAL1:
961  case CaloSampling::FCAL2: {
962  // FCAL 0 Region [NOT SPECIFIED IN MC] has 12 supercells in 3.2 < eta < 4.88, and 16 supercells in phi. Supercells are 0.14 x 0.4. posneg +-2
963  // FCAL 1 Region [NOT SPECIFIED IN MC] has 8 supercells in 3.2 < eta < 4.48, and 16 supercells in phi. Supercells are 0.16 x 0.4. posneg +-2
964  // FCAL 2 Region [NOT SPECIFIED IN MC] has 4 supercells in 3.2 < eta < 4.48, and 16 supercells in phi. Supercells are 0.32 x 0.4. posneg +-2
965 
966  switch (sample) {
967  case CaloSampling::FCAL0: {
968  if(pos_neg < 0) {
969  towerID_Modifier = 700000;
970  }
971  else if(pos_neg > 0) {
972  towerID_Modifier = 800000;
973  }
974  iCell = 0;
975  layer = 0;
976  break;
977  }
978  case CaloSampling::FCAL1: {
979  if(pos_neg < 0) {
980  towerID_Modifier = 900000;
981  }
982  else if(pos_neg > 0) {
983  towerID_Modifier = 1000000;
984  }
985  iCell = 1;
986  layer = 1;
987  break;
988  }
989  case CaloSampling::FCAL2: {
990  if(pos_neg < 0) {
991  towerID_Modifier = 1100000;
992  }
993  else if(pos_neg > 0) {
994  towerID_Modifier = 1200000;
995  }
996  iCell = 1;
997  layer = 1;
998  break;
999  }
1000  default: {
1001  break;
1002  }
1003  }
1004 
1005  towereta = eta_index;
1006  towerphi = phi_index;
1007 
1008  break;
1009 
1010  }
1011  case CaloSampling::MINIFCAL0:
1012  case CaloSampling::MINIFCAL1:
1013  case CaloSampling::MINIFCAL2:
1014  case CaloSampling::MINIFCAL3: {
1015  ATH_MSG_DEBUG("\n==== jSuperCellTowerMapper ============ Supercells is from MiniFCAL - it will be ignored.");
1016  validcell = false;
1017  break;
1018  }
1019  case CaloSampling::Unknown: {
1020  ATH_MSG_WARNING("\n==== jSuperCellTowerMapper ============ Supercell sampling is officially unknown - it will be ignored. (Needs investigation). Please report this!");
1021  validcell = false;
1022  break;
1023  }
1024  default: {
1025  ATH_MSG_DEBUG("\n==== jSuperCellTowerMapper ============ Supercell has invalid CaloSampling value: " << sample << " (Needs investigation). Please report this!");
1026  validcell = false;
1027  break;
1028  }
1029  }
1030 
1031 
1032  if(validcell) {
1033  iJTower = FindTowerIDForSuperCell(towereta, towerphi) + towerID_Modifier;
1034 
1035  //Applying the SCell masking!
1036  if( (prov >> 7 & 1) and m_apply_masking ){
1037  //if masked then Et = 0
1038  et = 0.0;
1039  }
1040  if(doPrint) {
1041  PrintCellSpec(sample, layer, region, eta_index, phi_index, pos_neg, iJTower, iCell, prov, ID, doenergysplit, eta_min, eta_max, eta0, phi_min, phi_max, phi0);
1042  }
1043  ConnectSuperCellToTower( my_jTowerContainerRaw, iJTower, ID, iCell, et, layer);
1044 
1045 
1046  }
1047  else {
1048  PrintCellSpec(sample, layer, region, eta_index, phi_index, pos_neg, iJTower, iCell, prov, ID, doenergysplit, eta_min, eta_max, eta0, phi_min, phi_max, phi0,false);
1049  }
1050 
1051  // END ITERATING OVER SUPER CELLS+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++++
1052 
1053  return 1;
1054 }
1055 
1056 
1057 
1058 int jSuperCellTowerMapper::FindTowerIDForSuperCell(int towereta, int towerphi) const
1059 {
1060  return (towerphi + (64 * towereta));
1061 }
1062 
1063  void jSuperCellTowerMapper::PrintCellSpec(const CaloSampling::CaloSample sample, int layer, const int region, const int eta_index, const int phi_index, const int pos_neg, int iJTower, int iCell, int prov, Identifier ID ,bool doenergysplit, float eta_min, float eta_max, float eta0, float phi_min, float phi_max, float phi0,bool cellValid) const
1064 {
1065 
1066  std::string sampleName = "";
1067 
1068  switch (sample) {
1069  case CaloSampling::PreSamplerB: { sampleName = "PreSamplerB"; break; }
1070  case CaloSampling::EMB1: { sampleName = "EMB1"; break; }
1071  case CaloSampling::EMB2: { sampleName = "EMB2"; break; }
1072  case CaloSampling::EMB3: { sampleName = "EMB3"; break; }
1073  case CaloSampling::PreSamplerE: { sampleName = "PreSamplerE"; break; }
1074  case CaloSampling::EME1: { sampleName = "EME1"; break; }
1075  case CaloSampling::EME2: { sampleName = "EME2"; break; }
1076  case CaloSampling::EME3: { sampleName = "EME3"; break; }
1077  case CaloSampling::HEC0: { sampleName = "HEC0"; break; }
1078  case CaloSampling::HEC1: { sampleName = "HEC1"; break; }
1079  case CaloSampling::HEC2: { sampleName = "HEC2"; break; }
1080  case CaloSampling::HEC3: { sampleName = "HEC3"; break; }
1081  case CaloSampling::FCAL0: { sampleName = "FCAL0"; break; }
1082  case CaloSampling::FCAL1: { sampleName = "FCAL1"; break; }
1083  case CaloSampling::FCAL2: { sampleName = "FCAL2"; break; }
1084  default: {
1085  ATH_MSG_DEBUG("\n==== jSuperCellTowerMapper ============ Supercell has invalid CaloSampling value: " << sample << " (Needs investigation). Please report this!");
1086  break;
1087  }
1088  }
1089 
1090  if(cellValid){
1091  ATH_MSG_DEBUG("ASSIGNED CELL::: CASE: " << sampleName
1092  << "\tSample: " << sample
1093  << "\tLayer: " << layer
1094  << "\tRegion: " << region
1095  << "\tEta0: " << eta0
1096  << "\tEta_min: " << eta_min
1097  << "\tEta_max: " << eta_max
1098  << "\tEta_Index: " << eta_index
1099  << "\tPhi0: " << phi0
1100  << "\tPhi_min: " << phi_min
1101  << "\tPhi_max: " << phi_max
1102  << "\tPhi_Index: " << phi_index
1103  << "\tPosNeg: " << pos_neg
1104  << "\tiJTower: " << iJTower
1105  << "\tiCell: " << iCell
1106  << "\tDoEnergySplit: " << doenergysplit
1107  << "\tProvenance: " << prov
1108  << "\tID: " << ID
1109  << " ");
1110  }
1111  else{
1112  ATH_MSG_DEBUG("INVALID CELL IDENTIFIED::: CASE: " << sampleName
1113  << "\tSample: " << sample
1114  << "\tLayer: " << layer
1115  << "\tRegion: " << region
1116  << "\tEta0: " << eta0
1117  << "\tEta_min: " << eta_min
1118  << "\tEta_max: " << eta_max
1119  << "\tEta_Index: " << eta_index
1120  << "\tPhi0: " << phi0
1121  << "\tPhi_min: " << phi_min
1122  << "\tPhi_max: " << phi_max
1123  << "\tPhi_Index: " << phi_index
1124  << "\tPosNeg: " << pos_neg
1125  << "\tiJTower: " << iJTower
1126  << "\tiCell: " << iCell
1127  << "\tDoEnergySplit: " << doenergysplit
1128  << "\tProvenance: " << prov
1129  << "\tID: " << ID
1130  << " ");
1131  }
1132 
1133  return;
1134 }
1135 
1136 
1138  std::string sampleName ="";
1139  switch (sample) {
1140  case CaloSampling::PreSamplerB: { sampleName = "PreSamplerB"; break; }
1141  case CaloSampling::EMB1: { sampleName = "EMB1"; break; }
1142  case CaloSampling::EMB2: { sampleName = "EMB2"; break; }
1143  case CaloSampling::EMB3: { sampleName = "EMB3"; break; }
1144  case CaloSampling::PreSamplerE: { sampleName = "PreSamplerE"; break; }
1145  case CaloSampling::EME1: { sampleName = "EME1"; break; }
1146  case CaloSampling::EME2: { sampleName = "EME2"; break; }
1147  case CaloSampling::EME3: { sampleName = "EME3"; break; }
1148  case CaloSampling::HEC0: { sampleName = "HEC0"; break; }
1149  case CaloSampling::HEC1: { sampleName = "HEC1"; break; }
1150  case CaloSampling::HEC2: { sampleName = "HEC2"; break; }
1151  case CaloSampling::HEC3: { sampleName = "HEC3"; break; }
1152  case CaloSampling::FCAL0: { sampleName = "FCAL0"; break; }
1153  case CaloSampling::FCAL1: { sampleName = "FCAL1"; break; }
1154  case CaloSampling::FCAL2: { sampleName = "FCAL2"; break; }
1155  default: {
1156  ATH_MSG_DEBUG("\n==== jSuperCellTowerMapper ============ Supercell has invalid CaloSampling value: " << sample << " (Needs investigation). Please report this!");
1157  sampleName = "----";
1158  break;
1159  }
1160  }
1161  return sampleName;
1162 }
1163 
1164 
1165 } // end of LVL1 namespace
1166 
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.
CaloCell_ID_FCS::TileExt2
@ TileExt2
Definition: FastCaloSim_CaloCell_ID.h:39
LVL1::jSuperCellTowerMapper::AssignSuperCellsToTowers
virtual StatusCode AssignSuperCellsToTowers(std::unique_ptr< jTowerContainer > &my_jTowerContainerRaw) const override
Definition: jSuperCellTowerMapper.cxx:91
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
ID
std::vector< Identifier > ID
Definition: CalibHitIDCheck.h:24
LVL1::jSuperCellTowerMapper::m_scellsCollectionSGKey
SG::ReadHandleKey< CaloCellContainer > m_scellsCollectionSGKey
Definition: jSuperCellTowerMapper.h:45
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
InDetAccessor::phi0
@ phi0
Definition: InDetAccessor.h:33
CaloCell_Base_ID::pos_neg
int pos_neg(const Identifier id) const
LAr field values (NOT_VALID == invalid request)
M_PI
#define M_PI
Definition: ActiveFraction.h:11
CaloCell_ID_FCS::FCAL1
@ FCAL1
Definition: FastCaloSim_CaloCell_ID.h:41
CaloCell_Base_ID::eta_max
int eta_max(const Identifier regId) const
max value of eta index (-999 == failure)
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::jTower::set_LAr_Et
void set_LAr_Et(Identifier ID, int cell, float et, int layer)
Set LAr supercell position ID.
Definition: jTower.cxx:125
LVL1
eFexTowerBuilder creates xAOD::eFexTowerContainer from supercells (LATOME) and triggerTowers (TREX) i...
Definition: ICMMCPHitsCnvTool.h:18
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
CaloCell_Base_ID::phi_max
int phi_max(const Identifier regId) const
max value of phi index (-999 == failure)
LVL1::jSuperCellTowerMapper::jSuperCellTowerMapper
jSuperCellTowerMapper(const std::string &type, const std::string &name, const IInterface *parent)
Definition: jSuperCellTowerMapper.cxx:23
LVL1::jSuperCellTowerMapper::m_triggerTowerCollectionSGKey
SG::ReadHandleKey< xAOD::TriggerTowerContainer > m_triggerTowerCollectionSGKey
Definition: jSuperCellTowerMapper.h:46
CaloCell_ID_FCS::HEC1
@ HEC1
Definition: FastCaloSim_CaloCell_ID.h:28
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
CaloCell_Base_ID::eta0
float eta0(const Identifier regId) const
minimum LAr eta for this region
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
LVL1::jSuperCellTowerMapper::FindAndConnectTower
virtual int FindAndConnectTower(std::unique_ptr< jTowerContainer > &my_jTowerContainerRaw, CaloSampling::CaloSample sample, const int region, int layer, const int pos_neg, const int eta_index, const int phi_index, Identifier ID, float et, int prov, bool doPrint, float eta_min, float eta_max, float eta0, float phi_min, float phi_max, float phi0) const override
Definition: jSuperCellTowerMapper.cxx:295
CaloSampling::CaloSample
CaloSample
Definition: Calorimeter/CaloGeoHelpers/CaloGeoHelpers/CaloSampling.h:22
CaloCell_ID_FCS::TileBar0
@ TileBar0
Definition: FastCaloSim_CaloCell_ID.h:31
LVL1::jSuperCellTowerMapper::initialize
virtual StatusCode initialize() override
standard Athena-Algorithm method
Definition: jSuperCellTowerMapper.cxx:35
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
LVL1::jTower::getET_float
float getET_float(unsigned int layer, int cell=0) const
Get ET of a specified cell in MeV FLOAT VERSION.
Definition: jTower.cxx:190
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
test_pyathena.parent
parent
Definition: test_pyathena.py:15
CaloCell_SuperCell_ID.h
Helper class for offline supercell identifiers.
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::jSuperCellTowerMapper::FindTowerIDForSuperCell
virtual int FindTowerIDForSuperCell(int towereta, int towerphi) const override
Definition: jSuperCellTowerMapper.cxx:1058
LVL1::jTower::set_TileCal_Et
void set_TileCal_Et(int layer, int et)
Definition: jTower.cxx:108
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::jSuperCellTowerMapper::PrintCellSpec
virtual void PrintCellSpec(const CaloSampling::CaloSample sample, int layer, const int region, const int eta_index, const int phi_index, const int pos_neg, int iETower, int iCell, int prov, Identifier ID, bool doenergysplit, float eta_min, float eta_max, float eta0, float phi_min, float phi_max, float phi0, bool cellValid=true) const override
Definition: jSuperCellTowerMapper.cxx:1063
LVL1::jSuperCellTowerMapper::reset
virtual void reset() override
Definition: jSuperCellTowerMapper.cxx:86
CaloCell_ID_FCS::TileExt1
@ TileExt1
Definition: FastCaloSim_CaloCell_ID.h:38
CaloCell_ID_FCS::EME3
@ EME3
Definition: FastCaloSim_CaloCell_ID.h:26
jSuperCellTowerMapper.h
LVL1::jSuperCellTowerMapper::m_apply_masking
Gaudi::Property< bool > m_apply_masking
Definition: jSuperCellTowerMapper.h:48
CaloCell_Base_ID::phi
int phi(const Identifier id) const
LAr field values (NOT_VALID == invalid request)
LVL1::jSuperCellTowerMapper::AssignTriggerTowerMapper
virtual StatusCode AssignTriggerTowerMapper(std::unique_ptr< jTowerContainer > &my_jTowerContainerRaw) const override
Definition: jSuperCellTowerMapper.cxx:45
LVL1::jSuperCellTowerMapper::DetectorName
std::string DetectorName(const CaloSampling::CaloSample sample) const
Definition: jSuperCellTowerMapper.cxx:1137
CaloCell_ID_FCS::HEC0
@ HEC0
Definition: FastCaloSim_CaloCell_ID.h:27
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
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
LVL1::jSuperCellTowerMapper::~jSuperCellTowerMapper
virtual ~jSuperCellTowerMapper()
Definition: jSuperCellTowerMapper.cxx:30
LVL1::jTower
The jTower class is an interface object for jFEX trigger algorithms The purposes are twofold:
Definition: jTower.h:40
CaloIdManager.h
CaloCell_ID_FCS::FCAL2
@ FCAL2
Definition: FastCaloSim_CaloCell_ID.h:42
LVL1::jSuperCellTowerMapper::ConnectSuperCellToTower
virtual void ConnectSuperCellToTower(std::unique_ptr< jTowerContainer > &my_jTowerContainerRaw, int iETower, Identifier ID, int iCell, float et, int layer) const override
Definition: jSuperCellTowerMapper.cxx:286
CaloCell_Base_ID::phi0
float phi0(const Identifier regId) const
minimum LAr phi for this region
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