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.
15//----------------------------------------------------------------------------
17LArHEC_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//----------------------------------------------------------------------------
26LArHEC_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//----------------------------------------------------------------------------
37LArHEC_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);
58LArHEC_Base_ID::region_id (int pos_neg, int sampling, int region) const
60 return region_id (pos_neg, sampling, region, do_checks());
63//----------------------------------------------------------------------------
65LArHEC_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);
88LArHEC_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//----------------------------------------------------------------------------
96LArHEC_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//----------------------------------------------------------------------------
109LArHEC_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);
131LArHEC_Base_ID::channel_id ( const Identifier regionId,
132 int eta, int phi ) const
134 return channel_id (regionId, eta, phi, do_checks());
137//----------------------------------------------------------------------------
138inline 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//----------------------------------------------------------------------------
146inline IdentifierHash LArHEC_Base_ID::channel_hash_binary_search (Identifier channelId) const
148 return CaloIDHelper::channel_hash (channelId);
151//----------------------------------------------------------------------------
152inline LArHEC_Base_ID::id_iterator LArHEC_Base_ID::reg_begin () const
154 return regions().begin();
157//----------------------------------------------------------------------------
158inline LArHEC_Base_ID::id_iterator LArHEC_Base_ID::reg_end () const
160 return regions().end();
163//----------------------------------------------------------------------------
164inline LArHEC_Base_ID::id_range LArHEC_Base_ID::reg_range () const
166 return regions().range();
169//----------------------------------------------------------------------------
170inline LArHEC_Base_ID::id_iterator LArHEC_Base_ID::hec_begin () const
172 return channels().begin();
175//----------------------------------------------------------------------------
176inline LArHEC_Base_ID::id_iterator LArHEC_Base_ID::hec_end () const
178 return channels().end();
181//----------------------------------------------------------------------------
182inline LArHEC_Base_ID::id_range LArHEC_Base_ID::hec_range () const
184 return channels().range();
187//----------------------------------------------------------------------------
188inline const std::vector<Identifier>& LArHEC_Base_ID::channel_ids() const
190 return channels().ids();
193//----------------------------------------------------------------------------
194inline const std::vector<Identifier>& LArHEC_Base_ID::region_ids() const
196 return regions().ids();
199//----------------------------------------------------------------------------
200inline int LArHEC_Base_ID::pos_neg(const Identifier id)const
202 return (m_pn_impl.unpack(id));
205//----------------------------------------------------------------------------
206inline int LArHEC_Base_ID::sampling(const Identifier id)const
208 return (m_sampling_impl.unpack(id));
211//----------------------------------------------------------------------------
212inline int LArHEC_Base_ID::region(const Identifier id)const
214 return (m_region_impl.unpack(id));
217//----------------------------------------------------------------------------
218inline int LArHEC_Base_ID::eta(const Identifier id)const
220 int result = m_eta_impl.unpack(id);
224//----------------------------------------------------------------------------
225inline int LArHEC_Base_ID::phi(const Identifier id)const
227 int result = m_phi_impl.unpack(id);
231//----------------------------------------------------------------------------
232inline 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//----------------------------------------------------------------------------
241inline bool LArHEC_Base_ID::is_supercell (Identifier id) const
243 return(m_slar_impl.unpack(id)) != 0;
246//----------------------------------------------------------------------------
247inline bool LArHEC_Base_ID::twoSymSides() const
249 return m_two_sym_sides;