ATLAS Offline Software
LArFCAL_Base_ID.icc
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // $Id$
6 /**
7  * @file CaloIdentifier/LArFCAL_Base_ID.icc
8  * @author naoko kanaya <nkanaya@cern.ch>
9  * @date May, 2013
10  * @brief Inline implementations for LArFCAL_Base_ID.
11  */
12 
13 
14 //--------------------
15 // Inline definitions
16 //--------------------
17 
18 //----------------------------------------------------------------------------
19 inline Identifier
20 LArFCAL_Base_ID::module_id (const ExpandedIdentifier& exp_id) const
21 {
22  return this->module_id ( exp_id[m_POSNEG_INDEX],
23  exp_id[m_MODULE_INDEX] );
24 }
25 
26 //----------------------------------------------------------------------------
27 inline Identifier
28 LArFCAL_Base_ID::channel_id (const ExpandedIdentifier& exp_id) const
29 {
30  return this->channel_id (exp_id[m_POSNEG_INDEX],
31  exp_id[m_MODULE_INDEX],
32  exp_id[m_ETA_INDEX],
33  exp_id[m_PHI_INDEX]);
34 }
35 
36 //----------------------------------------------------------------------------
37 inline Identifier
38 LArFCAL_Base_ID::module_id (int pos_neg, int module, bool checks) const
39 {
40  // Do checks
41  if(checks) {
42  module_id_checks ( pos_neg, module );
43  }
44 
45  Identifier result(0);
46 
47  // Pack fields independently
48  m_lar_impl.pack (lar_field_value(), result);
49  m_fcal_impl.pack (lar_fcal_field_value(), result);
50  m_pn_impl.pack (pos_neg, result);
51  m_module_impl.pack (module, result);
52  m_slar_impl.pack (m_slar, result);
53 
54  return result;
55 }
56 
57 inline Identifier
58 LArFCAL_Base_ID::module_id (int pos_neg, int module) const
59 {
60  return module_id (pos_neg, module, do_checks());
61 }
62 
63 //----------------------------------------------------------------------------
64 inline Identifier
65 LArFCAL_Base_ID::channel_id ( int pos_neg, int module,
66  int eta, int phi, bool checks ) const
67 {
68  // Do checks
69  if(checks) {
70  channel_id_checks( pos_neg, module, eta, phi );
71  }
72 
73  Identifier result(0);
74  // Pack fields independently
75  m_lar_impl.pack (lar_field_value(), result);
76  m_fcal_impl.pack (lar_fcal_field_value(), result);
77  m_pn_impl.pack (pos_neg, result);
78  m_module_impl.pack (module, result);
79  m_eta_impl.pack (eta, result);
80  m_phi_impl.pack (phi, result);
81  m_slar_impl.pack (m_slar, result);
82 
83  return result;
84 }
85 
86 inline Identifier
87 LArFCAL_Base_ID::channel_id ( int pos_neg, int module,
88  int eta, int phi ) const
89 {
90  return channel_id (pos_neg, module, eta, phi, do_checks());
91 }
92 
93 
94 //----------------------------------------------------------------------------
95 inline Identifier
96 LArFCAL_Base_ID::module_id ( const Identifier channelId ) const
97 {
98 
99  Identifier result(channelId);
100  // reset eta/phi
101  m_eta_impl.reset(result);
102  m_phi_impl.reset(result);
103  m_slar_impl.pack(m_slar,result);
104  return (result);
105 }
106 
107 //----------------------------------------------------------------------------
108 inline Identifier
109 LArFCAL_Base_ID::channel_id ( const Identifier module_id,
110  int eta, int phi, bool checks ) const
111 {
112  // Do checks
113  if(checks) {
114  channel_id_checks( module_id, eta, phi );
115  }
116 
117  Identifier result(module_id);
118 
119  // Reset the fields and then set the values
120  m_eta_impl.reset (result);
121  m_phi_impl.reset (result);
122  m_eta_impl.pack (eta, result);
123  m_phi_impl.pack (phi, result);
124  m_slar_impl.pack (m_slar, result);
125 
126  return result;
127 }
128 
129 inline Identifier
130 LArFCAL_Base_ID::channel_id ( const Identifier module_id,
131  int eta, int phi ) const
132 {
133  return channel_id (module_id, eta, phi, do_checks());
134 }
135 
136 //----------------------------------------------------------------------------
137 inline Identifier LArFCAL_Base_ID::module_id (IdentifierHash module_hash_id) const
138 {
139  return region_id (module_hash_id);
140 }
141 
142 //----------------------------------------------------------------------------
143 inline IdentifierHash LArFCAL_Base_ID::module_hash (Identifier module_id) const
144 {
145  return region_hash (module_id);
146 }
147 
148 //----------------------------------------------------------------------------
149 inline IdentifierHash LArFCAL_Base_ID::channel_hash_binary_search (Identifier channelId) const
150 {
151  return channel_hash (channelId);
152 }
153 
154 //----------------------------------------------------------------------------
155 inline LArFCAL_Base_ID::size_type LArFCAL_Base_ID::module_hash_max (void) const
156 {
157  return region_hash_max();
158 }
159 
160 //----------------------------------------------------------------------------
161 inline LArFCAL_Base_ID::id_iterator LArFCAL_Base_ID::mod_begin (void) const
162 {
163  return regions().begin();
164 }
165 
166 //----------------------------------------------------------------------------
167 inline LArFCAL_Base_ID::id_iterator LArFCAL_Base_ID::mod_end (void) const
168 {
169  return regions().end();
170 }
171 
172 //----------------------------------------------------------------------------
173 inline LArFCAL_Base_ID::id_range LArFCAL_Base_ID::mod_range (void) const
174 {
175  return regions().range();
176 }
177 
178 //----------------------------------------------------------------------------
179 inline LArFCAL_Base_ID::id_iterator LArFCAL_Base_ID::fcal_begin (void) const
180 {
181  return channels().begin();
182 }
183 
184 //----------------------------------------------------------------------------
185 inline LArFCAL_Base_ID::id_iterator LArFCAL_Base_ID::fcal_end (void) const
186 {
187  return channels().end();
188 }
189 
190 //----------------------------------------------------------------------------
191 inline LArFCAL_Base_ID::id_range LArFCAL_Base_ID::fcal_range (void) const
192 {
193  return channels().range();
194 }
195 
196 //----------------------------------------------------------------------------
197 inline const std::vector<Identifier>& LArFCAL_Base_ID::channel_ids() const
198 {
199  return channels().ids();
200 }
201 
202 //----------------------------------------------------------------------------
203 inline int LArFCAL_Base_ID::pos_neg (const Identifier id)const
204 {
205  return (m_pn_impl.unpack(id));
206 }
207 
208 //----------------------------------------------------------------------------
209 inline int LArFCAL_Base_ID::module (const Identifier id)const
210 {
211  return (m_module_impl.unpack(id));
212 }
213 
214 //----------------------------------------------------------------------------
215 inline int LArFCAL_Base_ID::eta (const Identifier id)const
216 {
217  int result = m_eta_impl.unpack(id);
218  return(result);
219 }
220 
221 //----------------------------------------------------------------------------
222 inline int LArFCAL_Base_ID::phi(const Identifier id)const
223 {
224  int result = m_phi_impl.unpack(id);
225  return(result);
226 }
227 
228 //----------------------------------------------------------------------------
229 inline int LArFCAL_Base_ID::phi_min(const Identifier modId) const
230 {
231  IdentifierHash modHash = module_hash(modId);
232  unsigned int index = modHash;
233  return (m_vecOfPhiMin[index]);
234 }