ATLAS Offline Software
Loading...
Searching...
No Matches
CaloDmDescrManager.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
5/* ****************************************************************************
6 Filename : CaloDmDescrManager.h
7 Author : guennadi.pospelov@cern.ch
8 Created : March, 2007
9 DESCRIPTION : dead material identifiers description package
10 Usage:
11 const CaloDmDescrManager *mgr = CaloDmDescrManager::instance();
12 CaloDmDescrElement *element = mgr->get_element(dm_identifier);
13 Enjoy with element->eta(), element->phi().
14**************************************************************************** */
15
16#ifndef CALODMDETDESCR_CALODMDESCRMANAGER_H
17#define CALODMDETDESCR_CALODMDESCRMANAGER_H
18
21
23
24
25class Identifier;
26class IdentifierHash;
27class CaloDM_ID;
28
29
30/* ****************************************************************************
31Description element for dead material calibration hit
32**************************************************************************** */
34 public:
36 m_eta(0.0),
37 m_deta(0.0),
38 m_phi(0.0),
39 m_dphi(0.0),
40 m_r(0.0),
41 m_z(0.0) {}
42 CaloDmDescrElement(float xeta, float xdeta, float xphi, float xdphi, float xr, float xz) :
43 m_eta( xeta ),
44 m_deta( xdeta ),
45 m_phi( xphi ),
46 m_dphi( xdphi ),
47 m_r( xr ),
48 m_z( xz ) {}
49
51
52 void print() const {
53 std::cout << " eta: " << m_eta << " phi: " << m_phi << " deta: " << m_deta << " dphi: " << m_dphi
54 << " r: " << m_r << " z: " << m_z << std::endl;
55 }
56
57 inline float eta() const { return m_eta; }
58 inline float deta() const { return m_deta; }
59 inline float phi() const { return m_phi; }
60 inline float dphi() const { return m_dphi; }
61 inline float r() const { return m_r; }
62 inline float z() const { return m_z; }
63
64 private:
65 float m_eta;
66 float m_deta;
67 float m_phi;
68 float m_dphi;
69 float m_r;
70 float m_z;
71};
72
73
74
75/* ****************************************************************************
76Dead Material region definition.
77**************************************************************************** */
79{
80 public:
82 m_region_id(0), // first Identifier in this region (etaBin=0, phiBin=0)
83 m_region_hash(0), // hash number of this region
84 m_key(0),
85 m_side(0),
86 m_neta_max(0),
87 m_nphi_max(0),
88 m_eta_min(0.0),
89 m_eta_max(0.0),
90 m_deta(0.0),
91 m_dphi(0.0),
92 m_distance(0.0),
93 m_isBarrel(false) {}
96 int m_key;
97 int m_side;
102 float m_deta;
103 float m_dphi;
106 std::vector<short > m_CaloSampleNeighbours;
107 std::vector<float > m_CaloSampleEtaMin;
108 std::vector<float > m_CaloSampleEtaMax;
109
110 // Can use default copy ctor, assignment op, dtor.
111
112 inline const IdentifierHash region_hash () const { return m_region_hash; }
113 inline const Identifier region_id () const { return m_region_id; }
114 inline float etaMin() const { return m_eta_min; }
115 inline float etaMax() const { return m_eta_max; }
116 inline float deta() const { return m_deta; }
117 inline float dphi() const { return m_dphi; }
118 inline int netaMax() const { return m_neta_max; }
119 inline int nphiMax() const { return m_nphi_max; }
120};
121
122
123
124/* ****************************************************************************
125Dead Material description manager to deal with dead material calibration hits.
126> Contains vector of 57 Dead Material regions.
127 m_caloDM_ID->lar_region_hash_max() + m_caloDM_ID->tile_region_hash_max() = 57
128> Contains vector of ~80000 description element for DM calibration hits
129 m_caloDM_ID->lar_zone_hash_max() + m_caloDM_ID->tile_zone_hash_max() ~ 80000
130**************************************************************************** */
132 public:
135
136 static const CaloDmDescrManager* instance();
137
138 int initialize();
139
140 CaloDmDescrElement* get_element(const Identifier& cellId) const;
141 CaloDmRegion* get_dm_region(const Identifier& cellId) const;
142 IdentifierHash get_dm_hash(const CaloDmRegion *myRegion, float &eta, float &phi) const;
143 int get_dm_key(const Identifier& cellId) const;
144 int get_dm_area(const Identifier& cellId) const;
145 void show_element(const Identifier& cellId) const;
146
147 static CaloCell_ID::CaloSample get_calo_sample(const std::string &SamplingName);
148 static CaloCell_ID::CaloSample get_calo_sample(const std::string &SamplingName, float &etaMin, float &etaMax);
149
150 /* iterators over set of DM regions (LAr + Tiles) */
151 std::vector<CaloDmRegion *>::const_iterator reg_begin (void) const;
152 std::vector<CaloDmRegion *>::const_iterator reg_end (void) const;
153
154 private:
158
159 CaloDmDescrElement* build_element(const Identifier& cellId, const CaloDmRegion *myRegion);
160 StatusCode load_regions(const std::string& DmRegionFileName);
162
163 std::vector<CaloDmRegion *> m_DmRegionVector;
164 std::vector<CaloDmDescrElement *> m_DmElementVector;
165};
166
167
168//----------------------------------------------------------------------------
169inline std::vector<CaloDmRegion *>::const_iterator CaloDmDescrManager::reg_begin (void) const
170{
171 return(m_DmRegionVector.begin());
172}
173
174inline std::vector<CaloDmRegion *>::const_iterator CaloDmDescrManager::reg_end (void) const
175{
176 return(m_DmRegionVector.end());
177}
178
179
180#endif //CALOCALIBHITREC_CALODMDESCRMANAGER_H
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
This class provides an interface to generate or decode an identifier for the upper levels of the dete...
CaloSampling::CaloSample CaloSample
Definition CaloCell_ID.h:53
Helper class for Calo Dead Material offline identifiers.
Definition CaloDM_ID.h:102
CaloDmDescrElement(float xeta, float xdeta, float xphi, float xdphi, float xr, float xz)
static CaloCell_ID::CaloSample get_calo_sample(const std::string &SamplingName)
const AtlasDetectorID * m_id_helper
ServiceHandle< StoreGateSvc > m_detStore
CaloDmDescrElement * build_element(const Identifier &cellId, const CaloDmRegion *myRegion)
StatusCode load_regions(const std::string &DmRegionFileName)
CaloDmRegion * get_dm_region(const Identifier &cellId) const
static const CaloDmDescrManager * instance()
IdentifierHash get_dm_hash(const CaloDmRegion *myRegion, float &eta, float &phi) const
void show_element(const Identifier &cellId) const
int get_dm_area(const Identifier &cellId) const
std::vector< CaloDmRegion * >::const_iterator reg_end(void) const
std::vector< CaloDmRegion * >::const_iterator reg_begin(void) const
const CaloDM_ID * m_caloDM_ID
int get_dm_key(const Identifier &cellId) const
std::vector< CaloDmRegion * > m_DmRegionVector
std::vector< CaloDmDescrElement * > m_DmElementVector
CaloDmDescrElement * get_element(const Identifier &cellId) const
float deta() const
float dphi() const
IdentifierHash m_region_hash
int netaMax() const
int nphiMax() const
float etaMax() const
std::vector< short > m_CaloSampleNeighbours
const IdentifierHash region_hash() const
Identifier m_region_id
float etaMin() const
std::vector< float > m_CaloSampleEtaMin
std::vector< float > m_CaloSampleEtaMax
const Identifier region_id() const
This is a "hash" representation of an Identifier.