ATLAS Offline Software
Loading...
Searching...
No Matches
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"
12class EMECDetDescr;
14
29
30class 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
106
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 (const 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
252
254
255 public:
260
265
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
302 return m_MagicNumbers->activeLength;
303
304}
305
307{
308
309 return m_MagicNumbers->refToPresampler;
310
311}
312
314{
315
316 return m_MagicNumbers->presamplerLength;
317
318}
319
320inline unsigned int EMECDetectorManager::getNumZIW () const
321{
322
323 return m_ziw.size();
324
325}
326
327inline double EMECDetectorManager::getZIW (unsigned int i) const
328{
329
330 return m_ziw[i];
331
332}
333
334inline unsigned int EMECDetectorManager::getNumZSEP12 () const
335{
336
337 return m_zsep12.size();
338
339}
340
341inline double EMECDetectorManager::getZSEP12 (unsigned int i) const
342{
343
344 return m_zsep12[i];
345
346}
347
348inline unsigned int EMECDetectorManager::getNumZSEP23 () const
349{
350
351 return m_zsep23.size();
352
353}
354
355inline double EMECDetectorManager::getZSEP23 (unsigned int i) const
356{
357
358 return m_zsep23[i];
359
360}
361
362
363CLASS_DEF(EMECDetectorManager, 74566646, 1)
364
365
366
367#endif
Cached pointer with atomic update.
macros to associate a CLID to a type
#define CLASS_DEF(NAME, CID, VERSION)
associate a clid and a version to a type eg
Descriptor for regions of the electromagnetic endcap calorimeter.
This is a collection of numbers used to specify the construction of the electromagnetic endcap calori...
double refToPresampler
Distance from reference plane to presampler.
double refToActive
Distance from reference plane to active volume.
double focalToRef
Distance from focal length to reference plane.
double presamplerLength
Overall length of the presampler.
A manager class providing access to readout geometry information for the electromagnetic endcap calor...
EMECDetectorManager & operator=(const EMECDetectorManager &right)
CxxUtils::CachedPointer< const EMECPresamplerHVManager > m_presamplerHVManager
const EMECDetectorRegion * getDetectorRegion(unsigned int endcap, unsigned int sampling, unsigned int region, bool inner) const
Random Access to detector regions.
const EMECPresamplerHVManager & getPresamplerHVManager() const
Get the HV Manager (presampler)
double getFocalToRef() const
This provides the distance in CLHEP::mm from the Focal Plane to the reference plane.
EMECDetRegionArray m_DetRegionsRandom
A vector of Region pointers which exists in order to provide iterative access to any EMECDetectorRegi...
virtual PVConstLink getTreeTop(unsigned int i) const override
Gets the ith tree top.
unsigned int getNumZSEP12() const
Gets the length of the ZSEP12 Array.
double getZSEP12(unsigned int i) const
This method provides access to the Array ZSEP12, which in turn comes from the database (EmecSamplingS...
virtual unsigned int getNumTreeTops() const override
Gets the total number of tree tops.
EMECDetectorRegion const * EMECDetRegionArray[6][4][2][2]
EMECDetectorManager(const EMECDetectorManager &right)
CxxUtils::CachedPointer< const EMECHVManager > m_HVManager[2]
The HV Managers for the emec;.
void addTreeTop(const PVLink &treeTop)
Add a Tree Top.
double getRefToActive() const
This provides the distance in CLHEP::mm from the Active EMEC volume to the reference plane.
EMECDetectorManager::DetectorRegionConstIterator endDetectorRegion() const
Iterate over detector regions.
double getZIW(unsigned int i) const
This method provides access to the Array ZIW, which in turn comes from the database.
double getPresamplerFullLength() const
Gives the overall active length of the presampler volume.
EMECMagicNumbers * m_MagicNumbers
Clockwork for the EMECDetectorManager.
void addDetectorRegion(const EMECDetectorRegion *region)
Add a new HEC Detector Region.
std::vector< double > m_zsep23
A vector of doubles used to hold an array of sampling separations for the EMEC outer wheel between sa...
std::vector< double > m_zsep12
A vector of doubles used to hold an array of sampling separations for the EMEC outer wheel between sa...
unsigned int getNumDetectorRegions() const
Gets the number of detectors in the set of detector regions.
EMECDetectorManager(const EMECHVManager *hvManagerInner=nullptr, const EMECHVManager *hvManagerOuter=nullptr, const EMECPresamplerHVManager *presamplerHVManager=nullptr)
Constructor.
virtual ~EMECDetectorManager() override
Destructor.
std::vector< double > m_ziw
A vector of doubles used to hold an array of sampling separations for the EMEC inner wheel.
const EMECHVManager & getHVManager(EMECHVManager::IOType io) const
Get the HV Managers.
std::vector< PVLink > m_treeTop
This is the set of tree tops managed by this detector node.
std::vector< const EMECDetectorRegion * > m_DetRegionsIterative
A vector of Region pointers which exists in order to provide iterative access to any EMECDetectorRegi...
EMECDetectorManager::DetectorRegionConstIterator beginDetectorRegion() const
Iterate over detector regions.
unsigned int getNumZSEP23() const
Gets the length of the ZSEP23Array.
unsigned int getNumZIW() const
Gets the length of the ZIW Array.
double getRefToPresampler() const
This provides the distance in CLHEP::mm from the Active Endcap Presampler volume (center) to the refe...
std::vector< constEMECDetectorRegion * >::const_iterator DetectorRegionConstIterator
double getZSEP23(unsigned int i) const
This method provides access to the Array ZSEP23, which in turn comes from the database (EmecSamplingS...
double getActiveLength() const
Gives the overall active length of the EMEC outer and inner wheel volumes.
This class provides direct access to information on the HV electrodes within the EMEC.
EMECHVModule::IOType IOType
This class provides direct access to information on the HV electrodes within the EMEC.
Cached pointer with atomic update.