2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
5 * @file CaloIdentifier/LArHEC_Base_ID.icc
6 * @author scott snyder <snyder@bnl.gov>
8 * @brief Inline implementations for LArHEC_Base_ID.
11 //--------------------
13 //--------------------
15 //----------------------------------------------------------------------------
17 LArHEC_Base_ID::region_id (const ExpandedIdentifier& exp_id) const
19 return this->region_id ( exp_id[m_POSNEG_INDEX],
20 exp_id[m_SAMPLING_INDEX],
21 exp_id[m_REGION_INDEX] );
24 //----------------------------------------------------------------------------
26 LArHEC_Base_ID::channel_id (const ExpandedIdentifier& exp_id) const
28 return this->channel_id (exp_id[m_POSNEG_INDEX],
29 exp_id[m_SAMPLING_INDEX],
30 exp_id[m_REGION_INDEX],
35 //----------------------------------------------------------------------------
37 LArHEC_Base_ID::region_id (int pos_neg, int sampling, int region, bool checks) const
41 region_id_checks ( pos_neg, sampling, region );
46 // Pack fields independently
47 m_lar_impl.pack (lar_field_value(), result);
48 m_hec_impl.pack (lar_hec_field_value(),result);
49 m_pn_impl.pack (pos_neg, result);
50 m_sampling_impl.pack (sampling, result);
51 m_region_impl.pack (region, result);
52 m_slar_impl.pack (m_slar, result);
58 LArHEC_Base_ID::region_id (int pos_neg, int sampling, int region) const
60 return region_id (pos_neg, sampling, region, do_checks());
63 //----------------------------------------------------------------------------
65 LArHEC_Base_ID::channel_id ( int pos_neg, int sampling, int region,
71 channel_id_checks( pos_neg, sampling, region, eta, phi );
75 // Pack fields independently
76 m_lar_impl.pack (lar_field_value(), result);
77 m_hec_impl.pack (lar_hec_field_value(),result);
78 m_pn_impl.pack (pos_neg, result);
79 m_sampling_impl.pack (sampling, result);
80 m_region_impl.pack (region, result);
81 m_eta_impl.pack (eta, result);
82 m_phi_impl.pack (phi, result);
83 m_slar_impl.pack (m_slar, result);
88 LArHEC_Base_ID::channel_id ( int pos_neg, int sampling, int region,
89 int eta, int phi ) const
91 return channel_id (pos_neg, sampling, region, eta, phi, do_checks());
94 //----------------------------------------------------------------------------
96 LArHEC_Base_ID::region_id ( const Identifier channelId ) const
99 Identifier result(channelId);
101 m_eta_impl.reset(result);
102 m_phi_impl.reset(result);
103 m_slar_impl.pack(m_slar,result);
107 //----------------------------------------------------------------------------
109 LArHEC_Base_ID::channel_id ( const Identifier regionId,
115 channel_id_checks( regionId, eta, phi );
118 Identifier result(regionId);
120 // Reset the fields and then set the values
121 m_eta_impl.reset (result);
122 m_phi_impl.reset (result);
123 m_eta_impl.pack (eta, result);
124 m_phi_impl.pack (phi, result);
125 m_slar_impl.pack (m_slar, result);
131 LArHEC_Base_ID::channel_id ( const Identifier regionId,
132 int eta, int phi ) const
134 return channel_id (regionId, eta, phi, do_checks());
137 //----------------------------------------------------------------------------
138 inline IdentifierHash LArHEC_Base_ID::channel_hash (Identifier channelId) const
140 const HashCalc& hc = m_hash_calcs[m_pn_reg_impl.unpack(channelId)];
141 //return (hc.m_hash + (eta(channelId)-hc.m_etamin)*hc.m_nphi + phi(channelId)-hc.m_phimin );
142 return (hc.m_hash + (m_eta_impl.unpack(channelId)-hc.m_etamin)*hc.m_nphi + (m_phi_impl.unpack(channelId)-hc.m_phimin) );
145 //----------------------------------------------------------------------------
146 inline IdentifierHash LArHEC_Base_ID::channel_hash_binary_search (Identifier channelId) const
148 return CaloIDHelper::channel_hash (channelId);
151 //----------------------------------------------------------------------------
152 inline LArHEC_Base_ID::id_iterator LArHEC_Base_ID::reg_begin () const
154 return regions().begin();
157 //----------------------------------------------------------------------------
158 inline LArHEC_Base_ID::id_iterator LArHEC_Base_ID::reg_end () const
160 return regions().end();
163 //----------------------------------------------------------------------------
164 inline LArHEC_Base_ID::id_range LArHEC_Base_ID::reg_range () const
166 return regions().range();
169 //----------------------------------------------------------------------------
170 inline LArHEC_Base_ID::id_iterator LArHEC_Base_ID::hec_begin () const
172 return channels().begin();
175 //----------------------------------------------------------------------------
176 inline LArHEC_Base_ID::id_iterator LArHEC_Base_ID::hec_end () const
178 return channels().end();
181 //----------------------------------------------------------------------------
182 inline LArHEC_Base_ID::id_range LArHEC_Base_ID::hec_range () const
184 return channels().range();
187 //----------------------------------------------------------------------------
188 inline const std::vector<Identifier>& LArHEC_Base_ID::channel_ids() const
190 return channels().ids();
193 //----------------------------------------------------------------------------
194 inline const std::vector<Identifier>& LArHEC_Base_ID::region_ids() const
196 return regions().ids();
199 //----------------------------------------------------------------------------
200 inline int LArHEC_Base_ID::pos_neg(const Identifier id)const
202 return (m_pn_impl.unpack(id));
205 //----------------------------------------------------------------------------
206 inline int LArHEC_Base_ID::sampling(const Identifier id)const
208 return (m_sampling_impl.unpack(id));
211 //----------------------------------------------------------------------------
212 inline int LArHEC_Base_ID::region(const Identifier id)const
214 return (m_region_impl.unpack(id));
217 //----------------------------------------------------------------------------
218 inline int LArHEC_Base_ID::eta(const Identifier id)const
220 int result = m_eta_impl.unpack(id);
224 //----------------------------------------------------------------------------
225 inline int LArHEC_Base_ID::phi(const Identifier id)const
227 int result = m_phi_impl.unpack(id);
231 //----------------------------------------------------------------------------
232 inline int LArHEC_Base_ID::phi_min(const Identifier regId) const
234 IdentifierHash regHash = region_hash(regId);
235 unsigned int index = regHash;
236 return (m_vecOfPhiMin[index]);
240 //----------------------------------------------------------------------------
241 inline bool LArHEC_Base_ID::is_supercell (Identifier id) const
243 return(m_slar_impl.unpack(id)) != 0;
246 //----------------------------------------------------------------------------
247 inline bool LArHEC_Base_ID::twoSymSides() const
249 return m_two_sym_sides;