ATLAS Offline Software
EMECDetectorManager.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef LARREADOUTGEOMETRY_EMECDETECTORMANAGER_H
6 #define LARREADOUTGEOMETRY_EMECDETECTORMANAGER_H
8 #include "GeoModelKernel/GeoVDetectorManager.h"
9 #include "LArHV/EMECHVManager.h"
11 #include "CxxUtils/CachedPointer.h"
12 class EMECDetDescr;
13 class EMECDetectorRegion;
14 
30 class EMECDetectorManager : public GeoVDetectorManager
31 {
32 
33  public:
34  typedef std::vector<const EMECDetectorRegion *>::const_iterator DetectorRegionConstIterator;
35  typedef EMECDetectorRegion const * EMECDetRegionArray[6][4][2][2]; // x 2 endcaps
36 
37  private:
38  class EMECMagicNumbers;
39 
40  public:
41 
45  EMECDetectorManager(const EMECHVManager* hvManagerInner=nullptr
46  , const EMECHVManager* hvManagerOuter=nullptr
47  , const EMECPresamplerHVManager* presamplerHVManager=nullptr);
48 
52  virtual ~EMECDetectorManager() override;
53 
58 
63 
67  const EMECDetectorRegion * getDetectorRegion (unsigned int endcap, unsigned int sampling, unsigned int region, bool inner) const;
68 
72  unsigned int getNumDetectorRegions () const;
73 
77  virtual PVConstLink getTreeTop (unsigned int i) const override;
78 
82  virtual unsigned int getNumTreeTops () const override;
83 
92  double getFocalToRef () const;
93 
101  double getRefToActive () const;
102 
107  double getActiveLength () const;
108 
114  double getRefToPresampler () const;
115 
119  double getPresamplerFullLength () const;
120 
124  unsigned int getNumZIW () const;
125 
133  double getZIW (unsigned int i) const;
134 
138  unsigned int getNumZSEP12 () const;
139 
148  double getZSEP12 (unsigned int i) const;
149 
153  unsigned int getNumZSEP23 () const;
154 
163  double getZSEP23 (unsigned int i) const;
164 
168  void addDetectorRegion (const EMECDetectorRegion *region);
169 
173  void addTreeTop (PVLink treeTop);
174 
179 
184 
185  private:
186 
189 
194  std::vector<PVLink> m_treeTop;
195 
201  std::vector<const EMECDetectorRegion *> m_DetRegionsIterative;
202 
209 
215  std::vector<double> m_ziw;
216 
217 
218 
225  std::vector<double> m_zsep12;
226 
233  std::vector<double> m_zsep23;
234 
239 
244 
246 };
247 
254 
255  public:
259  double focalToRef;
260 
264  double refToActive;
265 
269  double activeLength;
270 
275 
280 };
281 
282 
283 
284 
286 {
287 
288  return m_MagicNumbers->focalToRef;
289 
290 }
291 
293 {
294 
295  return m_MagicNumbers->refToActive;
296 
297 }
298 
300 {
301 
303 
304 }
305 
307 {
308 
310 
311 }
312 
314 {
315 
317 
318 }
319 
320 inline unsigned int EMECDetectorManager::getNumZIW () const
321 {
322 
323  return m_ziw.size();
324 
325 }
326 
327 inline double EMECDetectorManager::getZIW (unsigned int i) const
328 {
329 
330  return m_ziw[i];
331 
332 }
333 
334 inline unsigned int EMECDetectorManager::getNumZSEP12 () const
335 {
336 
337  return m_zsep12.size();
338 
339 }
340 
341 inline double EMECDetectorManager::getZSEP12 (unsigned int i) const
342 {
343 
344  return m_zsep12[i];
345 
346 }
347 
348 inline unsigned int EMECDetectorManager::getNumZSEP23 () const
349 {
350 
351  return m_zsep23.size();
352 
353 }
354 
355 inline double EMECDetectorManager::getZSEP23 (unsigned int i) const
356 {
357 
358  return m_zsep23[i];
359 
360 }
361 
362 
363 CLASS_DEF(EMECDetectorManager, 74566646, 1)
364 
365 
366 
367 #endif
EMECPresamplerHVManager
This class provides direct access to information on the HV electrodes within the EMEC....
Definition: EMECPresamplerHVManager.h:36
EMECDetectorManager::getNumDetectorRegions
unsigned int getNumDetectorRegions() const
Gets the number of detectors in the set of detector regions.
Definition: EMECDetectorManager.cxx:113
EMECDetectorManager::getZSEP23
double getZSEP23(unsigned int i) const
This method provides access to the Array ZSEP23, which in turn comes from the database (EmecSamplingS...
Definition: EMECDetectorManager.h:355
EMECDetectorManager::addDetectorRegion
void addDetectorRegion(const EMECDetectorRegion *region)
Add a new HEC Detector Region.
Definition: EMECDetectorManager.cxx:128
EMECDetectorManager::EMECMagicNumbers::focalToRef
double focalToRef
Distance from focal length to reference plane
Definition: EMECDetectorManager.h:259
EMECDetectorManager::m_zsep23
std::vector< double > m_zsep23
A vector of doubles used to hold an array of sampling separations for the EMEC outer wheel between sa...
Definition: EMECDetectorManager.h:233
EMECDetectorManager::getNumZSEP23
unsigned int getNumZSEP23() const
Gets the length of the ZSEP23Array.
Definition: EMECDetectorManager.h:348
EMECDetectorManager
A manager class providing access to readout geometry information for the electromagnetic endcap calor...
Definition: EMECDetectorManager.h:31
EMECDetectorManager::m_presamplerHVManager
CxxUtils::CachedPointer< const EMECPresamplerHVManager > m_presamplerHVManager
Definition: EMECDetectorManager.h:245
EMECDetectorManager::getNumZSEP12
unsigned int getNumZSEP12() const
Gets the length of the ZSEP12 Array.
Definition: EMECDetectorManager.h:334
EMECDetectorManager::m_zsep12
std::vector< double > m_zsep12
A vector of doubles used to hold an array of sampling separations for the EMEC outer wheel between sa...
Definition: EMECDetectorManager.h:225
EMECDetectorManager::m_DetRegionsIterative
std::vector< const EMECDetectorRegion * > m_DetRegionsIterative
A vector of Region pointers which exists in order to provide iterative access to any EMECDetectorRegi...
Definition: EMECDetectorManager.h:201
EMECHVManager.h
EMECDetectorManager::getNumZIW
unsigned int getNumZIW() const
Gets the length of the ZIW Array.
Definition: EMECDetectorManager.h:320
EMECDetectorRegion
Definition: EMECDetectorRegion.h:30
EMECPresamplerHVManager.h
EMECDetectorManager::getTreeTop
virtual PVConstLink getTreeTop(unsigned int i) const override
Gets the ith tree top.
Definition: EMECDetectorManager.cxx:118
EMECDetDescr
Descriptor for regions of the electromagnetic endcap calorimeter.
Definition: EMECDetDescr.h:27
EMECDetectorManager::m_DetRegionsRandom
EMECDetRegionArray m_DetRegionsRandom
A vector of Region pointers which exists in order to provide iterative access to any EMECDetectorRegi...
Definition: EMECDetectorManager.h:208
CachedPointer.h
Cached pointer with atomic update.
EMECDetectorManager::getRefToPresampler
double getRefToPresampler() const
This provides the distance in CLHEP::mm from the Active Endcap Presampler volume (center) to the refe...
Definition: EMECDetectorManager.h:306
EMECDetectorManager::getZIW
double getZIW(unsigned int i) const
This method provides access to the Array ZIW, which in turn comes from the database.
Definition: EMECDetectorManager.h:327
EMECDetectorManager::beginDetectorRegion
EMECDetectorManager::DetectorRegionConstIterator beginDetectorRegion() const
Iterate over detector regions.
Definition: EMECDetectorManager.cxx:98
lumiFormat.i
int i
Definition: lumiFormat.py:92
EMECDetectorManager::addTreeTop
void addTreeTop(PVLink treeTop)
Add a Tree Top.
Definition: EMECDetectorManager.cxx:134
EMECDetectorManager::getHVManager
const EMECHVManager & getHVManager(EMECHVManager::IOType io) const
Get the HV Managers.
Definition: EMECDetectorManager.cxx:139
EMECDetectorManager::EMECMagicNumbers::activeLength
double activeLength
Total active length.
Definition: EMECDetectorManager.h:269
EMECDetectorManager::EMECMagicNumbers::refToActive
double refToActive
Distance from reference plane to active volume.
Definition: EMECDetectorManager.h:264
EMECDetectorManager::operator=
EMECDetectorManager & operator=(const EMECDetectorManager &right)
EMECDetectorManager::EMECMagicNumbers
This is a collection of numbers used to specify the construction of the electromagnetic endcap calori...
Definition: EMECDetectorManager.h:253
EMECDetectorManager::getRefToActive
double getRefToActive() const
This provides the distance in CLHEP::mm from the Active EMEC volume to the reference plane.
Definition: EMECDetectorManager.h:292
EMECDetectorManager::m_HVManager
CxxUtils::CachedPointer< const EMECHVManager > m_HVManager[2]
The HV Managers for the emec;.
Definition: EMECDetectorManager.h:243
EMECDetectorManager::EMECDetectorManager
EMECDetectorManager(const EMECDetectorManager &right)
EMECDetectorManager::EMECMagicNumbers::refToPresampler
double refToPresampler
Distance from reference plane to presampler.
Definition: EMECDetectorManager.h:274
EMECDetectorManager::getDetectorRegion
const EMECDetectorRegion * getDetectorRegion(unsigned int endcap, unsigned int sampling, unsigned int region, bool inner) const
Random Access to detector regions.
Definition: EMECDetectorManager.cxx:108
EMECDetectorManager::getActiveLength
double getActiveLength() const
Gives the overall active length of the EMEC outer and inner wheel volumes.
Definition: EMECDetectorManager.h:299
EMECDetectorManager::getNumTreeTops
virtual unsigned int getNumTreeTops() const override
Gets the total number of tree tops.
Definition: EMECDetectorManager.cxx:123
EMECDetectorManager::m_treeTop
std::vector< PVLink > m_treeTop
This is the set of tree tops managed by this detector node.
Definition: EMECDetectorManager.h:194
EMECDetectorManager::getPresamplerHVManager
const EMECPresamplerHVManager & getPresamplerHVManager() const
Get the HV Manager (presampler)
Definition: EMECDetectorManager.cxx:153
EMECDetectorManager::m_MagicNumbers
EMECMagicNumbers * m_MagicNumbers
Clockwork for the EMECDetectorManager.
Definition: EMECDetectorManager.h:238
CxxUtils::CachedPointer< const EMECHVManager >
EMECDetectorManager::getZSEP12
double getZSEP12(unsigned int i) const
This method provides access to the Array ZSEP12, which in turn comes from the database (EmecSamplingS...
Definition: EMECDetectorManager.h:341
CLASS_DEF
#define CLASS_DEF(NAME, CID, VERSION)
associate a clid and a version to a type eg
Definition: Control/AthenaKernel/AthenaKernel/CLASS_DEF.h:64
EMECHVModule::IOType
IOType
Definition: EMECHVModule.h:22
EMECDetectorManager::getPresamplerFullLength
double getPresamplerFullLength() const
Gives the overall active length of the presampler volume.
Definition: EMECDetectorManager.h:313
EMECDetectorManager::EMECDetRegionArray
EMECDetectorRegion const * EMECDetRegionArray[6][4][2][2]
Definition: EMECDetectorManager.h:35
EMECDetectorManager::getFocalToRef
double getFocalToRef() const
This provides the distance in CLHEP::mm from the Focal Plane to the reference plane.
Definition: EMECDetectorManager.h:285
EMECDetectorManager::m_ziw
std::vector< double > m_ziw
A vector of doubles used to hold an array of sampling separations for the EMEC inner wheel.
Definition: EMECDetectorManager.h:215
EMECDetectorManager::EMECMagicNumbers::presamplerLength
double presamplerLength
Overall length of the presampler.
Definition: EMECDetectorManager.h:279
EMECHVManager
This class provides direct access to information on the HV electrodes within the EMEC....
Definition: EMECHVManager.h:36
CLASS_DEF.h
macros to associate a CLID to a type
EMECDetectorManager::~EMECDetectorManager
virtual ~EMECDetectorManager() override
Destructor.
Definition: EMECDetectorManager.cxx:90
EMECDetectorManager::DetectorRegionConstIterator
std::vector< const EMECDetectorRegion * >::const_iterator DetectorRegionConstIterator
Definition: EMECDetectorManager.h:34
EMECDetectorManager::EMECDetectorManager
EMECDetectorManager(const EMECHVManager *hvManagerInner=nullptr, const EMECHVManager *hvManagerOuter=nullptr, const EMECPresamplerHVManager *presamplerHVManager=nullptr)
Constructor.
Definition: EMECDetectorManager.cxx:24
EMECDetectorManager::endDetectorRegion
EMECDetectorManager::DetectorRegionConstIterator endDetectorRegion() const
Iterate over detector regions.
Definition: EMECDetectorManager.cxx:103