2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
5 * @file CaloIdentifier/LArEM_Base_ID.icc
6 * @author scott snyder <snyder@bnl.gov>
8 * @brief Inline implementations for LArEM_Base_ID.
12 //--------------------
14 //--------------------
16 //----------------------------------------------------------------------------
18 LArEM_Base_ID::region_id ( const ExpandedIdentifier& exp_id) const
20 return this->region_id ( exp_id[m_BEC_INDEX],
21 exp_id[m_SAMPLING_INDEX],
22 exp_id[m_REGION_INDEX] );
25 //----------------------------------------------------------------------------
27 LArEM_Base_ID::channel_id ( const ExpandedIdentifier& exp_id) const
29 return this->channel_id (exp_id[m_BEC_INDEX],
30 exp_id[m_SAMPLING_INDEX],
31 exp_id[m_REGION_INDEX],
36 //----------------------------------------------------------------------------
38 LArEM_Base_ID::region_id (int barrel_ec, int sampling, int region, bool checks) const
43 region_id_checks ( barrel_ec, sampling, region );
48 // Pack fields independently
49 m_lar_impl.pack (lar_field_value(), result);
50 m_em_impl.pack (lar_em_field_value(), result);
51 m_bec_impl.pack (barrel_ec, result);
52 m_sampling_impl.pack (sampling, result);
53 m_region_impl.pack (region, result);
54 m_slar_impl.pack (m_slar, result);
60 LArEM_Base_ID::region_id (int barrel_ec, int sampling, int region) const
62 return region_id (barrel_ec, sampling, region, do_checks());
66 //----------------------------------------------------------------------------
68 LArEM_Base_ID::channel_id ( int barrel_ec, int sampling, int region,
69 int eta, int phi, bool checks ) const
73 channel_id_checks( barrel_ec, sampling, region, eta, phi );
77 // Pack fields independently
78 m_lar_impl.pack (lar_field_value(), result);
79 m_em_impl.pack (lar_em_field_value(), result);
80 m_bec_impl.pack (barrel_ec, result);
81 m_sampling_impl.pack (sampling, result);
82 m_region_impl.pack (region, result);
83 m_eta_impl.pack (eta, result);
84 m_phi_impl.pack (phi, result);
85 m_slar_impl.pack (m_slar, result);
91 LArEM_Base_ID::channel_id ( int barrel_ec, int sampling, int region,
92 int eta, int phi ) const
94 return channel_id (barrel_ec, sampling, region, eta, phi, do_checks());
98 //----------------------------------------------------------------------------
100 LArEM_Base_ID::region_id ( const Identifier channelId ) const
102 Identifier result(channelId);
104 m_eta_impl.reset(result);
105 m_phi_impl.reset(result);
106 m_slar_impl.pack(m_slar,result);
110 //----------------------------------------------------------------------------
112 LArEM_Base_ID::channel_id ( const Identifier regionId,
113 int eta, int phi, bool checks ) const
117 channel_id_checks( regionId, eta, phi );
120 Identifier result(regionId);
122 // Reset the fields and then set the values
123 m_eta_impl.reset (result);
124 m_phi_impl.reset (result);
125 m_eta_impl.pack (eta, result);
126 m_phi_impl.pack (phi, result);
127 m_slar_impl.pack (m_slar, result);
133 LArEM_Base_ID::channel_id ( const Identifier regionId,
134 int eta, int phi ) const
136 return channel_id (regionId, eta, phi, do_checks());
139 //----------------------------------------------------------------------------
140 inline IdentifierHash LArEM_Base_ID::channel_hash (Identifier channelId) const
142 const HashCalc& hc = m_hash_calcs[m_bec_reg_impl.unpack(channelId)];
143 //return (hc.m_hash + (eta(channelId)-hc.m_etamin)*hc.m_nphi + (phi(channelId)-hc.m_phimin) );
144 return (hc.m_hash + (m_eta_impl.unpack(channelId)-hc.m_etamin)*hc.m_nphi + (m_phi_impl.unpack(channelId)-hc.m_phimin) );
147 //----------------------------------------------------------------------------
148 inline IdentifierHash LArEM_Base_ID::channel_hash_binary_search (Identifier channelId) const
150 return CaloIDHelper::channel_hash (channelId);
153 //----------------------------------------------------------------------------
154 inline LArEM_Base_ID::id_iterator LArEM_Base_ID::reg_begin () const
156 return regions().begin();
159 //----------------------------------------------------------------------------
160 inline LArEM_Base_ID::id_iterator LArEM_Base_ID::reg_end () const
162 return regions().end();
165 //----------------------------------------------------------------------------
166 inline LArEM_Base_ID::id_range LArEM_Base_ID::reg_range () const
168 return regions().range();
171 //----------------------------------------------------------------------------
172 inline LArEM_Base_ID::id_iterator LArEM_Base_ID::em_begin () const
174 return channels().begin();
177 //----------------------------------------------------------------------------
178 inline LArEM_Base_ID::id_iterator LArEM_Base_ID::em_end () const
180 return channels().end();
183 //----------------------------------------------------------------------------
184 inline LArEM_Base_ID::id_range LArEM_Base_ID::em_range () const
186 return channels().range();
189 //----------------------------------------------------------------------------
190 inline const std::vector<Identifier>& LArEM_Base_ID::channel_ids() const
192 return channels().ids();
195 //----------------------------------------------------------------------------
196 inline bool LArEM_Base_ID::is_em_barrel(const Identifier id) const
198 return (is_lar_em(id) && (abs(barrel_ec(id)))==1);
201 //----------------------------------------------------------------------------
202 inline bool LArEM_Base_ID::is_em_endcap(const Identifier id) const
204 return (is_lar_em(id) && (abs(barrel_ec(id)))>1);
207 //----------------------------------------------------------------------------
208 inline bool LArEM_Base_ID::is_em_endcap_outer(const Identifier id) const
210 return (is_lar_em(id) && (abs(barrel_ec(id)))==2);
213 //----------------------------------------------------------------------------
214 inline bool LArEM_Base_ID::is_em_endcap_inner(const Identifier id) const
216 return (is_lar_em(id) && (abs(barrel_ec(id)))==3);
219 //----------------------------------------------------------------------------
220 inline int LArEM_Base_ID::barrel_ec(const Identifier id)const
222 return (m_bec_impl.unpack(id));
225 //----------------------------------------------------------------------------
226 inline int LArEM_Base_ID::sampling(const Identifier id)const
228 return (m_sampling_impl.unpack(id));
231 //----------------------------------------------------------------------------
232 inline int LArEM_Base_ID::region(const Identifier id)const
234 return (m_region_impl.unpack(id));
237 //----------------------------------------------------------------------------
238 inline int LArEM_Base_ID::eta(const Identifier id)const
240 int result = m_eta_impl.unpack(id);
244 //----------------------------------------------------------------------------
245 inline int LArEM_Base_ID::phi(const Identifier id)const
247 int result = m_phi_impl.unpack(id);
251 //----------------------------------------------------------------------------
252 inline int LArEM_Base_ID::phi_min(const Identifier regId) const
254 IdentifierHash regHash = region_hash(regId);
255 unsigned int index = regHash;
256 return (m_vecOfPhiMin[index]);
260 //----------------------------------------------------------------------------
261 inline bool LArEM_Base_ID::twoSymSides() const
263 return m_two_sym_sides;