ATLAS Offline Software
CryostatCalibrationCalculator.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // LArG4::BarrelCryostat::CalibrationCalculator
6 // Prepared 06-Jul-2004 Bill Seligman
7 
8 // This class calculates the values needed for calibration hits in the
9 // simulation.
10 //
11 //
12 // G. Pospelov (8-Fev-2006) ==>
13 // In 11.0.X geometry of barrel cryostat was changed:
14 // "Many of the individual cylinders and cones which were separate logical
15 // volumes have become one single piece." (c) J. Boudreau.
16 // Names of volumes were changed also. So original code was changed to adopt
17 // calculator to the new geometry. It's temporary solution, somedays db
18 // oriented version will be written.
19 //
20 // This calculator is intended to apply to the following volumes
21 // LArMgr::LAr::Barrel::Cryostat::Cylinder::*
22 // LArMgr::LAr::Barrel::Cryostat::InnerWall
23 // LArMgr::LAr::Barrel::Cryostat::Sector::*
24 
25 
26 #define DEBUG_VOLUMES
27 #undef DEBUG_HITS
28 #undef DEBUG_MAPS
29 
32 
34 
35 #include "G4Step.hh"
36 #include "G4StepPoint.hh"
37 #include "G4VPhysicalVolume.hh"
38 #include "G4ThreeVector.hh"
39 #include "globals.hh"
40 
41 #include <map>
42 #include <algorithm>
43 #include <cmath>
44 
45 namespace LArG4 {
46 
47  namespace BarrelCryostat {
48 
50  // Tables
52 
53  // There are two ways to implement a routine like this:
54 
55  // 1) Lots and lots of "if" statements.
56 
57  // 2) Try to encapsulate the decision-making process in tables.
58 
59  // I chose the latter approach. The advantage of (2) is that it
60  // formalizes a lot of rules into a relatively small set of
61  // tables; the disadvantage is that the code can be complicated.
62  // (The class CryostatCalibrationLArCalculator demonstrates the
63  // type (1) approach.)
64 
65  // One day, the following information may in some sort of
66  // database. For now, it's hard-coded into this routine.
67 
68  // The information needed to determine the dead-material
69  // identifier is stored as a "map of a map". The structure looks
70  // something like this:
71 
72  // Volume name -- the named defined in the barrel-cryostat
73  // detector-construction routine (make sure these names match the
74  // values in LArBarrelCryostatVisualConsultant)
75 
76  // Copy number -- assigned in the barrel-cryostat
77  // detector-construction routine
78 
79  // Identifier information record -- the values needed to
80  // construct the identifier for the volume.
81 
82  // Region information record -- many large dead volumes
83  // span more than one region. This record gives the
84  // region-specific values.
85 
86 
87  typedef struct {
88  G4int regionNumber;
89  G4double etaMin;
90  G4double etaMax;
91  G4double deltaEta;
92  G4double deltaPhi;
93  } RegionInfo_t;
94 
95  typedef struct {
96  G4int detector;
97  G4int subdet;
98  G4int type;
99  G4int sampling;
103 
104  typedef struct {
109 
110  typedef struct {
111  G4String volumeName;
114  } VolumeInfo_t;
115 
116  // Please forgive the dull names, but it saves quite a lot on
117  // typing. Note how the structured hierarchy continues: there can
118  // be many regions associated with one sampling (equivalent to a
119  // range of copy numbers); there can be many ranges of copy
120  // numbers associated with the same volume name.
121 
122  // Region definitions
123 
124  // ========== Sampling 1 =============
125  static const RegionInfo_t region010[] =
126  // inner warm wall and solenoid
127  // region etamin etamax deta dphi
128  { { 0, 0.0, 1.5, 0.1, M_PI/32. },
129  { 4, 1.5, 1.6, 0.1, M_PI/32. },
130  { 5, 1.5, 1.8, 0.1, M_PI/32. },
131  { 6, 1.3, 3.2, 0.1, M_PI/32. } };
132 
133 #if 0
134  static const RegionInfo_t region011[] =
135  // inner cold wall
136  // region etamin etamax deta dphi
137  { { 1, 0.0, 1.5, 0.1, M_PI/32. },
138  { 4, 1.5, 1.6, 0.1, M_PI/32. },
139  { 5, 1.5, 1.8, 0.1, M_PI/32. } };
140 #endif
141 
142  static const RegionInfo_t region012[] =
143  // inner warm wall, cones, cables and services in front of EMEC
144  // region etamin etamax deta dphi
145  { { 4, 1.5, 1.6, 0.1, M_PI/32. },
146  { 5, 1.5, 1.8, 0.1, M_PI/32. },
147  { 6, 1.3, 3.2, 0.1, M_PI/32. } };
148 
149  // ========== Sampling 2 =============
150  static const RegionInfo_t region020[] =
151  // outer warm and cold walls in front of Tile-barrel
152  // region etamin etamax deta dphi
153  { { 0, 0.0, 1.0, 0.1, M_PI/32. },
154  { 2, 1.0, 1.5, 0.1, M_PI/32. } };
155 
156  static const RegionInfo_t region021[] =
157  // outer warm and cold walls behind of Tile-barrel but
158  // in front of Tile-extended-barrel, cables and services
159  // region etamin etamax deta dphi
160  { { 1, 0.0, 1.0, 0.1, M_PI/32. },
161  { 2, 1.0, 1.5, 0.1, M_PI/32. } };
162 
163  // Region->Volume, based on a range of copy numbers. Note that
164  // some "ranges" of copy numbers contain only one volume.
165 
166  static const CopyNumberInfo_t info1[] =
167  {
168  // ------------- region inner warm wall and solenoid ------------
169  // copy number range (low, high)
170  // { 1, 1,
171  // // Det Sub Typ Sam
172  // { 10, 4, 1, 1,
173  // sizeof(region010)/sizeof(RegionInfo_t),
174  // region010 }
175  // },
176  // copy number range (low, high)
177  { 56, 60,
178  // Det Sub Typ Sam
179  { 10, 4, 1, 1,
180  sizeof(region010)/sizeof(RegionInfo_t),
181  region010 }
182  },
183  // ------------------ region inner cold wall, Cyl -----------------
184  // copy number range (low, high)
185  // { 4, 5,
186  // // Det Sub Typ Sam
187  // { 10, 4, 1, 1,
188  // sizeof(region011)/sizeof(RegionInfo_t),
189  // region011 }
190  // },
191  // copy number range (low, high)
192  // { 55, 55,
193  // // Det Sub Typ Sam
194  // { 10, 4, 1, 1,
195  // sizeof(region011)/sizeof(RegionInfo_t),
196  // region011 }
197  // },
198  // copy number range (low, high)
199  // { 61, 61,
200  // // Det Sub Typ Sam
201  // { 10, 4, 1, 1,
202  // sizeof(region011)/sizeof(RegionInfo_t),
203  // region011 }
204  // // 84 bolts inside this cylinder have the same name
205  // // and the same copy#=61 => Edeposits in bolts are collected
206  //
207  // },
208  // --- region: inner warm walls, cables and services in front of EMEC
209  // copy number range (low, high)
210  // { 17, 19,
211  // // Det Sub Typ Sam
212  // { 10, 4, 1, 1,
213  // sizeof(region012)/sizeof(RegionInfo_t),
214  // region012 }
215  // },
216  // { 50, 52,
217  // // Det Sub Typ Sam
218  // { 10, 4, 1, 1,
219  // sizeof(region012)/sizeof(RegionInfo_t),
220  // region012 }
221  // },
222 
223  // ---------------- outer warm and cold walls, cables and services
224  // copy number range (low, high)
225  // { 3, 3,
226  // // Det Sub Typ Sam
227  // { 10, 4, 1, 2,
228  // sizeof(region021)/sizeof(RegionInfo_t),
229  // region021 }
230  // },
231  { 6, 6,
232  // Det Sub Typ Sam
233  { 10, 4, 1, 2,
234  sizeof(region020)/sizeof(RegionInfo_t),
235  region020 }
236  },
237  { 7, 10,
238  // Det Sub Typ Sam
239  { 10, 4, 1, 2,
240  sizeof(region021)/sizeof(RegionInfo_t),
241  region021 }
242  },
243  { 11, 11,
244  // Det Sub Typ Sam
245  { 10, 4, 1, 2,
246  sizeof(region020)/sizeof(RegionInfo_t),
247  region020 }
248  },
249  { 12, 12,
250  // Det Sub Typ Sam
251  { 10, 4, 1, 2,
252  sizeof(region021)/sizeof(RegionInfo_t),
253  region021 }
254  },
255  { 14, 16,
256  // Det Sub Typ Sam
257  { 10, 4, 1, 2,
258  sizeof(region021)/sizeof(RegionInfo_t),
259  region021 }
260  },
261  // { 48, 48,
262  // // Det Sub Typ Sam
263  // { 10, 4, 1, 2,
264  // sizeof(region021)/sizeof(RegionInfo_t),
265  // region021 }
266  // },
267  // --------------- Half::Cylinder (Old name, info4 was moved to here)
268  // --- placed inside LAr of each Half Barrel ------
269  // copy number range (low, high)
270  { 20, 20, // outer of acco in the center
271  // Det Sub Typ Sam
272  { 10, 4, 1, 2,
273  sizeof(region020)/sizeof(RegionInfo_t),
274  region020 }
275  },
276  { 24, 44, // 24 - 44 outer support-rings
277  // Det Sub Typ Sam
278  { 10, 4, 1, 2,
279  sizeof(region020)/sizeof(RegionInfo_t),
280  region020 }
281  },
282  };
283 
284  static const CopyNumberInfo_t info2[] =
285  {
286  //----region: inner wall ---------------------
287  { 1, 1,
288  // Det Sub Typ Sam
289  { 10, 4, 1, 1,
290  sizeof(region010)/sizeof(RegionInfo_t),
291  region010 }
292  },
293  };
294 
295  static const CopyNumberInfo_t info3[] =
296  {
297  // ---------------Sectors -----------------
298  // copy number range (low, high)
299  { 12, 12, // legs
300  // Det Sub Typ Sam
301  { 10, 4, 1, 2,
302  sizeof(region021)/sizeof(RegionInfo_t),
303  region021 }
304  },
305  { 7, 7, // ears
306  // Det Sub Typ Sam
307  { 10, 4, 1, 2,
308  sizeof(region021)/sizeof(RegionInfo_t),
309  region021 }
310  },
311  { 1, 1, // Ti blocks 11 - 34 (copy number arbitrary)
312  // Det Sub Typ Sam
313  { 10, 4, 1, 1,
314  sizeof(region012)/sizeof(RegionInfo_t),
315  region012 }
316  },
317  };
318 
319  // static const CopyNumberInfo_t info4[] =
320  // {
321  // // --------------- Half::Cylinder -----------------
322  // // --- placed inside LAr of each Half Barrel ------
323  // // copy number range (low, high)
324  // { 20, 20, // outer of acco in the center
325  // // Det Sub Typ Sam
326  // { 10, 4, 1, 2,
327  // sizeof(region020)/sizeof(RegionInfo_t),
328  // region020 }
329  // },
330  // { 24, 44, // 24 - 44 outer support-rings
331  // // Det Sub Typ Sam
332  // { 10, 4, 1, 2,
333  // sizeof(region020)/sizeof(RegionInfo_t),
334  // region020 }
335  // },
336  // };
337 
338  // Copy number range->Volume, based on name
339 
340  static const VolumeInfo_t volume1 =
341  { "LAr::Barrel::Cryostat::Cylinder",
342  sizeof(info1) / sizeof(CopyNumberInfo_t),
343  info1
344  };
345 
346  // static const VolumeInfo_t volume2 =
347  // { "LAr::Barrel::Cryostat::Cone",
348  // sizeof(info2) / sizeof(CopyNumberInfo_t),
349  // info2
350  // };
351  static const VolumeInfo_t volume2 =
352  { "LAr::Barrel::Cryostat::InnerWall",
353  sizeof(info2) / sizeof(CopyNumberInfo_t),
354  info2
355  };
356 
357  static const VolumeInfo_t volume3 =
358  { "LAr::Barrel::Cryostat::Sector",
359  sizeof(info3) / sizeof(CopyNumberInfo_t),
360  info3
361  };
362 
363  // static const VolumeInfo_t volume4 =
364  // { "LAr::Barrel::Cryostat::Half::Cylinder",
365  // sizeof(info4) / sizeof(CopyNumberInfo_t),
366  // info4
367  // };
368 
369  static const VolumeInfo_t volumes[] = { volume1, volume2, volume3};
370  static const G4int numberOfVolumes = sizeof(volumes) / sizeof(VolumeInfo_t);
371 
372  typedef std::map < G4int, const IdentifierInfo_t* > identifierMap_t;
373  typedef std::map < G4String, identifierMap_t > volumeMap_t;
374 
375 
380  {
381  static const volumeMap_t instance = []()
382  {
384  // For each volume managed by this calculator...
385  for (G4int v = 0; v != numberOfVolumes; v++)
386  {
387  const VolumeInfo_t& volume = volumes[v];
388 
389 #if defined (DEBUG_HITS) || defined (DEBUG_MAPS)
390  G4cout << "LArG4::BarrelCryostat::CalibrationCalculator::CalibrationCalculator - "
391  << " volume '"
392  << volume.volumeName
393  << "' has number of entries=" << volume.numberOfCopies
394  << G4endl;
395 #endif
396 
397  identifierMap_t identifierMap;
398  const CopyNumberInfo_t* copyInfo = volume.copyInfo;
399 
400  // For each range copy numbers that can be found in a volume with this name...
401  for (G4int c = 0; c != volume.numberOfCopies; c++, copyInfo++)
402  {
403  // For each copy in the range of copy numbers
404  for (G4int copy = copyInfo->copyNumberLow;
405  copy <= copyInfo->copyNumberHigh;
406  copy++)
407  {
408 #if defined (DEBUG_HITS) || defined (DEBUG_MAPS)
409  G4cout << "LArG4::BarrelCryostat::CalibrationCalculator::CalibrationCalculator - "
410  << " adding copy=" << copy
411  << " to identifierMap"
412  << G4endl;
413 #endif
414  // Add to the map that's based on copy number.
415  identifierMap[copy] = &(copyInfo->identifierInfo);
416  }
417  }
418 
419  // Add to the map that's based on volume name; it
420  // contains maps based on copy number.
421  volumeMap[volume.volumeName] = identifierMap;
422 
423 #if defined (DEBUG_HITS) || defined (DEBUG_MAPS)
424  G4cout << "LArG4::BarrelCryostat::CalibrationCalculator::CalibrationCalculator - "
425  << " volume '"
426  << volume.volumeName
427  << "' added to map."
428  << G4endl;
429 #endif
430 
431  }
432  return volumeMap;
433  }(); // end of lambda
434 
435  return instance;
436  }
437 
438 
440  // Methods
442 
443  CalibrationCalculator::CalibrationCalculator(const std::string& name, ISvcLocator *pSvcLocator)
444  : LArCalibCalculatorSvcImp(name, pSvcLocator)
445  , m_backupCalculator("BarrelCryostatCalibrationLArCalculator",name)
446  {
447  declareProperty("BackupCalculator",m_backupCalculator);
448  }
449 
451  // Get the "backup" calculator.
452  ATH_CHECK(m_backupCalculator.retrieve());
453 
454 #if defined (DEBUG_HITS) || defined (DEBUG_MAPS)
455  G4cout << "LArG4::BarrelCryostat::CalibrationCalculator::CalibrationCalculator - "
456  << " numberOfVolumes=" << numberOfVolumes
457  << ", sizeof(volumes)=" << sizeof(volumes)
458  << ", sizeof(VolumeInfo_t)=" << sizeof(VolumeInfo_t)
459  << G4endl;
460 #endif
461 
462  // Intialize the maps.
463  volumeMap();
464 
465 
466 
467 #if defined (DEBUG_HITS) || defined (DEBUG_MAPS)
468  G4cout << "LArG4::BarrelCryostat::CalibrationCalculator::CalibrationCalculator - "
469  << G4endl
470  << " initialization complete; map size="
471  << volumeMap().size()
472  << G4endl;
473 #endif
474 
475  return StatusCode::SUCCESS;
476  }
477 
478 
480  {
481  // Cleanup pointers.
482  //delete m_backupCalculator;
483  //m_backupCalculator = 0;
484  }
485 
487  std::vector<G4double> & energies,
488  const eCalculatorProcessing process) const
489  {
490  // Use the calculators to determine the energies and the
491  // identifier associated with this G4Step. Note that the
492  // default is to process both the energy and the ID.
493 
494  if ( process == kEnergyAndID || process == kOnlyEnergy )
495  {
496  m_energyCalculator.Energies( step, energies );
497  }
498  else
499  for (unsigned int i=0; i != 4; i++) energies.push_back( 0. );
500 
501 
502  identifier.clear();
503  if ( process == kEnergyAndID || process == kOnlyID )
504  {
505  // Calculate the identifier.
506 
507  // First, find the physical volume copy number, and the
508  // logical volume name.
509 
510  G4VPhysicalVolume* physical = step->GetPreStepPoint()->GetPhysicalVolume();
511  G4int copyNumber = physical->GetCopyNo();
512  G4String volumeName = physical->GetLogicalVolume()->GetName();
513 
514 #ifdef DEBUG_HITS
515  G4cout << "LArG4::BarrelCryostat::CalibrationCalculator::Process - "
516  << G4endl
517  << " searching for volume '"
518  << volumeName
519  << "' copyNumber="
520  << copyNumber
521  << G4endl;
522 #endif
523 
524  if(volumeName.find("LArMgr::") == 0) volumeName.erase(0,8);
525  if(volumeName.find("LAr::Barrel::Cryostat::Sector")==0) { // ears, legs, Ti blocks
526  volumeName = "LAr::Barrel::Cryostat::Sector";
527  if(copyNumber != 7 && copyNumber !=12) copyNumber=1; // assignment arbitrary copyNumber to Ti block
528  }else if(volumeName.find("LAr::Barrel::Cryostat::Cylinder")==0){
529  volumeName = "LAr::Barrel::Cryostat::Cylinder";
530  }else if(volumeName.find("LAr::Barrel::Cryostat::InnerWall")==0){
531  volumeName = "LAr::Barrel::Cryostat::InnerWall";
532  copyNumber = 1; // assignment arbitrary copyNumber
533  }
534 
535  // Search the maps for this volume/copy number combination.
536  const auto v = volumeMap().find( volumeName );
537  if ( v != volumeMap().end() )
538  {
539 
540  // Recall that maps are made from pair <key,value>, and
541  // you access a pair with the "first" and "second"
542  // members. In this case, "second" is a map. We don't
543  // need to copy the entire map; it's enough to get its
544  // reference.
545 
546  const identifierMap_t& identifierMap = (*v).second;
547  const auto i = identifierMap.find( copyNumber );
548 
549  if ( i != identifierMap.end() )
550  {
551  const IdentifierInfo_t* info = (*i).second;
552 
553  // Find our (x,y,z) location from the G4Step.
554 
555  G4StepPoint* pre_step_point = step->GetPreStepPoint();
556  G4StepPoint* post_step_point = step->GetPostStepPoint();
557  G4ThreeVector startPoint = pre_step_point->GetPosition();
558  G4ThreeVector endPoint = post_step_point->GetPosition();
559  G4ThreeVector p = (startPoint + endPoint) * 0.5;
560 
561  // Determine the geometric eta and phi. Note that we do not
562  // adjust for any endcap shifts; the values are assigned to
563  // the volumes based on their design positions.
564 
565  G4double eta = fabs( p.pseudoRapidity() );
566  G4double phi = p.phi();
567  // For this calculation, we need 0<phi<2*PI. (The
568  // official ATLAS standard of -PI<phi<PI is
569  // meaningless here.)
570  if ( phi < 0 ) phi += 2*M_PI;
571 
572  // The region can depend on eta. Search through the
573  // list of regions within this IdentifierInfo record
574  // to find which one has etaMin<eta<etaMax.
575 
576  G4int regions = info->numberOfRegions;
577  const RegionInfo_t* region = info->regionInfoArray;
578 
579 #ifdef DEBUG_HITS
580  G4cout << "LArG4::BarrelCryostat::CalibrationCalculator::Process - "
581  << G4endl
582  << " found volume, number of regions="
583  << regions
584  << " eta=" << eta << " phi=" << phi
585  << G4endl;
586 #endif
587 
588  G4int r;
589  for ( r = 0; r < regions; r++, region++ )
590  {
591  if ( eta > region->etaMin &&
592  eta < region->etaMax )
593  break;
594  }
595 
596  // If the following statement is not true, we're in
597  // trouble. It means that the eta of our energy
598  // deposit is outside the assumed eta limits of the
599  // volume.
600 
601  if ( r < regions )
602  {
603  // Convert eta and phi to their integer equivalents for the
604  // identifier.
605 
606  G4int etaInteger = G4int( (eta - region->etaMin) / region->deltaEta );
607  G4int phiInteger = G4int( phi / region->deltaPhi );
608  // phiInteger should be less than 64
609  if (phiInteger > 63) phiInteger = 0;
610 
611 #ifdef DEBUG_HITS
612  G4cout << "LArG4::BarrelCryostat::CalibrationCalculator::Process - "
613  << G4endl
614  << " found region="
615  << region->regionNumber
616  << " eta bin=" << etaInteger << " phi bin=" << phiInteger
617  << G4endl;
618 #endif
619 
620  // The sign of subdet will depend on whether z is positive
621  // or negative.
622  G4int subDetSign = 1;
623  if ( p.z() < 0 ) subDetSign = -1;
624 
625  // A quick check against a bad value of etaMin.
626  if ( etaInteger >= 0 )
627  {
628  // Build the full identifier.
629  identifier << info->detector
630  << info->subdet * subDetSign
631  << info->type
632  << info->sampling
633  << region->regionNumber
634  << etaInteger
635  << phiInteger;
636 
637  } // etaInteger valid
638  } // eta valid
639  } // copy number valid
640  } // volume name valid
641 
642  // If a volume is not found on one of the above tables, try
643  // the "backup identifier" calculator.
644 
645  if ( identifier == LArG4Identifier() )
646  {
647 #if defined (DEBUG_HITS) || defined (DEBUG_VOLUMES)
648  std::cout << "LArG4::BarrelCryostat::CalibrationCalculator::Process"
649  << std::endl
650  << " volume '"
651  << volumeName
652  << "' copy# "
653  << copyNumber
654  << " not found on tables, using backup calculator"
655  << std::endl;
656 #endif
657  m_backupCalculator->Process(step, identifier, energies, process);
658  }
659  } // calculate identifier
660 
661 #ifdef DEBUG_HITS
662  //G4double energy = accumulate(energies.begin(),energies.end(),0.);
663  std::cout << "LArG4::BarrelCryostat::CalibrationCalculator::Process"
664  << " vName " << step->GetPreStepPoint()->GetPhysicalVolume()->GetName()
665  << " ID=" << std::string(identifier)
666  // << " energy=" << energy
667  << " energies=(" << energies[0]
668  << "," << energies[1]
669  << "," << energies[2]
670  << "," << energies[3] << ")"
671  << std::endl;
672 #endif
673 
674  // Check for bad result.
675  if ( identifier == LArG4Identifier() )
676  return false;
677 
678  return true;
679  }
680 
681  } // namespace BarrelCryostat
682 
683 } // namespace LArG4
grepfile.info
info
Definition: grepfile.py:38
beamspotman.r
def r
Definition: beamspotman.py:676
CaloG4::SimulationEnergies::Energies
void Energies(const G4Step *, std::vector< G4double > &) const
The simple method to call from a calibration calculator: Examine the G4Step and return the energies r...
LArG4Identifier
Definition: LArG4Identifier.h:121
LArCalibCalculatorSvcImp
Definition: LArCalibCalculatorSvcImp.h:12
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
LArG4::BarrelCryostat::volumeMap
const volumeMap_t & volumeMap()
volumeMap singleton
Definition: CryostatCalibrationCalculator.cxx:379
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
LArG4::BarrelCryostat::RegionInfo_t::regionNumber
G4int regionNumber
Definition: CryostatCalibrationCalculator.cxx:88
LArG4::BarrelCryostat::CalibrationCalculator::m_energyCalculator
CaloG4::SimulationEnergies m_energyCalculator
Definition: LArG4Barrel/src/CryostatCalibrationCalculator.h:70
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
CryostatCalibrationCalculator.h
LArG4::BarrelCryostat::VolumeInfo_t::copyInfo
const CopyNumberInfo_t * copyInfo
Definition: CryostatCalibrationCalculator.cxx:113
LArG4::BarrelCryostat::CopyNumberInfo_t::copyNumberHigh
G4int copyNumberHigh
Definition: CryostatCalibrationCalculator.cxx:106
LArG4::BarrelCryostat::RegionInfo_t::etaMin
G4double etaMin
Definition: CryostatCalibrationCalculator.cxx:89
LArG4::kOnlyEnergy
@ kOnlyEnergy
Definition: LArG4EnumDefs.h:10
M_PI
#define M_PI
Definition: ActiveFraction.h:11
xAOD::etaMax
etaMax
Definition: HIEventShape_v2.cxx:46
CryostatCalibrationLArCalculator.h
LArG4::BarrelCryostat::volumeMap_t
std::map< G4String, identifierMap_t > volumeMap_t
Definition: CryostatCalibrationCalculator.cxx:373
xAOD::identifier
identifier
Definition: UncalibratedMeasurement_v1.cxx:15
LArG4::BarrelCryostat::VolumeInfo_t
Definition: CryostatCalibrationCalculator.cxx:110
LArG4::BarrelCryostat::IdentifierInfo_t::type
G4int type
Definition: CryostatCalibrationCalculator.cxx:98
LArG4
Definition: LArWheelCalculatorEnums.h:8
SUSY_SimplifiedModel_PostInclude.process
string process
Definition: SUSY_SimplifiedModel_PostInclude.py:42
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
LArG4::BarrelCryostat::IdentifierInfo_t::numberOfRegions
G4int numberOfRegions
Definition: CryostatCalibrationCalculator.cxx:100
instance
std::map< std::string, double > instance
Definition: Run_To_Get_Tags.h:8
LArG4::BarrelCryostat::IdentifierInfo_t::sampling
G4int sampling
Definition: CryostatCalibrationCalculator.cxx:99
lumiFormat.i
int i
Definition: lumiFormat.py:92
LArG4::BarrelCryostat::CalibrationCalculator::CalibrationCalculator
CalibrationCalculator(const std::string &name, ISvcLocator *pSvcLocator)
Definition: CryostatCalibrationCalculator.cxx:443
LArG4::BarrelCryostat::identifierMap_t
std::map< G4int, const IdentifierInfo_t * > identifierMap_t
Definition: CryostatCalibrationCalculator.cxx:372
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
LArG4::BarrelCryostat::RegionInfo_t::deltaPhi
G4double deltaPhi
Definition: CryostatCalibrationCalculator.cxx:92
LArG4::BarrelCryostat::IdentifierInfo_t::regionInfoArray
const RegionInfo_t * regionInfoArray
Definition: CryostatCalibrationCalculator.cxx:101
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
LArG4::kOnlyID
@ kOnlyID
Definition: LArG4EnumDefs.h:10
LArG4::BarrelCryostat::VolumeInfo_t::numberOfCopies
G4int numberOfCopies
Definition: CryostatCalibrationCalculator.cxx:112
LArG4Identifier.h
LArG4::BarrelCryostat::CopyNumberInfo_t
Definition: CryostatCalibrationCalculator.cxx:104
LArG4::BarrelCryostat::CopyNumberInfo_t::copyNumberLow
G4int copyNumberLow
Definition: CryostatCalibrationCalculator.cxx:105
LArG4::BarrelCryostat::IdentifierInfo_t::subdet
G4int subdet
Definition: CryostatCalibrationCalculator.cxx:97
LArG4::BarrelCryostat::RegionInfo_t
Definition: CryostatCalibrationCalculator.cxx:87
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
LArG4::BarrelCryostat::CalibrationCalculator::Process
virtual G4bool Process(const G4Step *step, LArG4Identifier &identifier, std::vector< G4double > &energies, const eCalculatorProcessing process=kEnergyAndID) const override final
Definition: CryostatCalibrationCalculator.cxx:486
LArG4::BarrelCryostat::CalibrationCalculator::~CalibrationCalculator
virtual ~CalibrationCalculator()
Definition: CryostatCalibrationCalculator.cxx:479
LArG4::BarrelCryostat::IdentifierInfo_t
Definition: CryostatCalibrationCalculator.cxx:95
python.PyAthena.v
v
Definition: PyAthena.py:157
LArCellBinning.step
step
Definition: LArCellBinning.py:158
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
LArG4::BarrelCryostat::CopyNumberInfo_t::identifierInfo
IdentifierInfo_t identifierInfo
Definition: CryostatCalibrationCalculator.cxx:107
LArG4::kEnergyAndID
@ kEnergyAndID
Definition: LArG4EnumDefs.h:10
LArG4::BarrelCryostat::IdentifierInfo_t::detector
G4int detector
Definition: CryostatCalibrationCalculator.cxx:96
LArG4::BarrelCryostat::CalibrationCalculator::initialize
StatusCode initialize() override final
Definition: CryostatCalibrationCalculator.cxx:450
calibdata.copy
bool copy
Definition: calibdata.py:27
LArG4::BarrelCryostat::CalibrationCalculator::m_backupCalculator
ServiceHandle< ILArCalibCalculatorSvc > m_backupCalculator
Definition: LArG4Barrel/src/CryostatCalibrationCalculator.h:74
LArG4::BarrelCryostat::RegionInfo_t::deltaEta
G4double deltaEta
Definition: CryostatCalibrationCalculator.cxx:91
python.compressB64.c
def c
Definition: compressB64.py:93
LArG4::eCalculatorProcessing
eCalculatorProcessing
Definition: LArG4EnumDefs.h:10
LArG4::BarrelCryostat::RegionInfo_t::etaMax
G4double etaMax
Definition: CryostatCalibrationCalculator.cxx:90
LArG4::BarrelCryostat::VolumeInfo_t::volumeName
G4String volumeName
Definition: CryostatCalibrationCalculator.cxx:111