ATLAS Offline Software
LArElectrodeID.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 #include "GaudiKernel/MsgStream.h"
7 #include "IdDict/IdDictDefs.h"
10 #include <algorithm>
11 #include <cassert>
12 #include <cmath>
13 #include <cstdio>
14 #include <iostream>
15 #include <set>
16 #include <string>
17 
18 
20  AtlasDetectorID("LArElectrodeID", "LArElec"),
21  m_larElectrodeRegion_index(999),
22  m_larelectrode_index(999),
23  m_atlas_index(999),
24  m_configuration_index(999),
25  m_detector_index(999),
26  m_zside_index(999),
27  m_module_index(999),
28  m_hvphi_index(999),
29  m_hveta_index(999),
30  m_hvgap_index(999),
31  m_electrode_index(999),
32  m_dict(nullptr),
33  m_electrodeHashMax(0)
34 {
35 
36 }
37 
39 
40 
42 {
44  return (IdContext(id, 0, m_electrode_index));
45 }
46 
47 
48 //==========================================================================
50 //==========================================================================
51 {
52 
53  MsgStream log(m_msgSvc, "LArElectrodeID" );
54  std::string strg = " => initialize_from_dictionary()";
55  if(m_msgSvc) {
56  log << MSG::INFO << strg << endmsg;
57  }
58  else {
59  std::cout << strg << std::endl;
60  }
61 
62  // Check whether this helper should be reinitialized
63  // -------------------------------------------------
64  if (!reinitialize(dict_mgr)) {
65  if(m_msgSvc)log << MSG::DEBUG
66  << "Request to reinitialize not satisfied - tags have not changed"
67  << endmsg;
68  return (0);
69  }
70  else {
71  log << MSG::DEBUG << "(Re)initialize" << endmsg;
72  }
73  log << MSG::DEBUG << " => Initialization of dict_mgr done ! " << m_dict << endmsg;
74 
75  // init base object
76  // ----------------
78  return (1);
79  }
80  else{
81  log << MSG::DEBUG << " => initialize_from_dictionary(dict_mgr) ="
83  << endmsg;
84  }
85  m_dict = dict_mgr.find_dictionary ("LArElectrode");
86  log << MSG::DEBUG << " => defined m_dict from find_dictionary(LArElectrode) = "
87  << m_dict << endmsg;
88  if(!m_dict) {
89  strg = " initialize_from_dictionary - cannot access LArElectrode dictionary ";
90  if(m_msgSvc) {
91  log << MSG::ERROR << strg << endmsg;
92  }
93  else {
94  std::cout << "LArElectrodeID::" << strg << std::endl;
95  }
96  return 1;
97  }
98 
99  // Register version of the dictionary used
100  // ---------------------------------------
101  if (register_dict_tag(dict_mgr, "LArElectrode")) return(1);
102  log << MSG::DEBUG << "Register_dict_tag of LArElectrode is OK" << endmsg;
103 
104  // initialize dictionary version
105  // -----------------------------
106  AtlasDetectorID::setDictVersion(dict_mgr, "LArElectrode");
107  log << MSG::DEBUG << "setDictVersion of LArElectrode is OK" << endmsg;
108 
109 
110  // Initialize the field indices
111  // =========================================================================
112  if(initLevelsFromDict()) return (1);
113 
114  /* Find value for the field Calorimeter */
115  const IdDictDictionary* atlasDict = dict_mgr.find_dictionary ("ATLAS");
116  int larField = -1;
117  if (atlasDict->get_label_value("subdet", "LArElectrode", larField)) {
118  std::stringstream strm;
119  strm << atlasDict->name();
120  strg= " Could not get value for label 'LArElectrode' of field 'subdet' in dictionary "+strm.str();
121  if(m_msgSvc){
122  log << MSG::ERROR << strg << endmsg;
123  }
124  else{
125  std::cout << "LArElectrodeID:" << strg << std::endl;
126  }
127  return (1);
128  }
129  log << MSG::DEBUG << "[init_from_dictionary] > larField value = "<< larField << endmsg;
130 
131 
132  /* Find values for the field Detector */
133  int configurationValue = 1;
134  if (m_dict->get_label_value("configuration", "Atlas", configurationValue)) {
135  std::stringstream strm;
136  strm << m_dict->name();
137  strg = "WARNING : Could not get value for label 'configuration' in dictionary "+strm.str();
138  if(m_msgSvc) {
139  log << MSG::INFO << strg << endmsg;
140  }
141  else{
142  std::cout << strg << std::endl;
143  }
144  return (0);
145  }
146  log << MSG::DEBUG << "[init_from_dictionary] > configurationValue = "
147  << configurationValue << endmsg;
148 
149  // Set up Expanded identifier for electrode range prefix
150  // =========================================================
151  ExpandedIdentifier reg_id;
152  reg_id.add(larField);
153  reg_id.add(configurationValue);
154  Range prefix;
155 
156  /*Full range for all lines */
158  m_full_electrode_range = m_dict->build_multirange(reg_id, prefix, "electrode");
159  log << MSG::DEBUG << "[initialize_from_dictionary] > Electrode range -> "
160  << (std::string)m_full_electrode_range << endmsg;
161 
162  // Setup the hash tables
163  // =========================================================
164  if(init_hashes()) return (1);
165 
166  return 0;
167 }
168 
169 
170 //=====================================================================================
172  ExpandedIdentifier& exp_id,
173  const IdContext* context) const
174 //=====================================================================================
175 {
176  MsgStream log(m_msgSvc, "LArElectrodeID" );
177  // We assume that the context is >= electrode
178  exp_id.clear();
179  exp_id << lar_field_value()
180  << s_larconfig_value
181  << detector(id)
182  << zside(id)
183  << module(id)
184  << hv_phi(id)
185  << hv_eta(id)
186  << gap(id);
187  if(context && context->end_index() >= m_electrode_index) {
188  exp_id << electrode(id);
189  }
190  return (0);
191 }
192 
193 
194 
195 //=============================================================================
197 //=============================================================================
198 {
199  MsgStream log(m_msgSvc, "LArElectrodeID" );
200  log << MSG::DEBUG << "[initLevelsFromDict] Entering routine... " << endmsg;
201 
202  if(!m_dict) {
203  log << MSG::INFO << "LArElectrodeID::initLevelsFromDict - dictionary NOT initialized "
204  << endmsg ;
205  return (1);
206  }
207 
208  log << MSG::DEBUG << "[initLevelsFromDict] m_dict OK ... " << endmsg;
209 
210  // Find out which identifier field corresponds to each level.
211  // ========================================================================
212  m_atlas_index = 999;
213  m_configuration_index = 999;
214  m_detector_index = 999;
215  m_zside_index = 999;
216  m_module_index = 999;
217  m_hvphi_index = 999;
218  m_hveta_index = 999;
219  m_hvgap_index = 999;
220  m_electrode_index = 999;
221  log << MSG::DEBUG << "[initLevelsFromDict] data member initialization OK ... " << endmsg;
222 
223  // Search with region name
224  IdDictRegion* reg = m_dict->find_region("EM-BARREL-ALL");
225  if (reg) {
227  else {
228  log << MSG::INFO << "WARNING : [initLevelsFromDict] - unable to find 'EM-BARREL-ALL' region"
229  << endmsg;
230  return (0);
231  }
232  log << MSG::DEBUG << "[initLevelsFromDict] region 'EM-BARREL-ALL' found OK ... " << endmsg;
233 
234  // Find LArElectrode field
235  // ========================================================================
236  IdDictField* field = m_dict->find_field("subdet") ;
237  if (field) {
238  m_atlas_index = field->index();}
239  else {
240  log << MSG::INFO
241  << "LArElectrodeID::initLevelsFromDict - unable to find 'subdet' field " << endmsg ;
242  return (1);
243  }
244  log << MSG::DEBUG
245  << "[initLevelsFromDict] field 'LArElectrode' found OK " << endmsg;
246 
247  // Find Configuration field
248  // ========================================================================
249  field = m_dict->find_field("configuration") ;
250  if (field) {
251  m_configuration_index = field->index();}
252  else {
253  log << MSG::INFO
254  << "LArHVLineID::initLevelsFromDict - unable to find 'configuration' field " << endmsg ;
255  return (1);
256  }
257  log << MSG::DEBUG
258  << "[initLevelsFromDict] field config=Atlas found OK " << endmsg;
259 
260  // Find Detector field
261  // ========================================================================
262  field = m_dict->find_field("detector") ;
263  if (field) {
264  m_detector_index = field->index();}
265  else {
266  log << MSG::INFO
267  << "LArElectrodeID::initLevelsFromDict - unable to find 'detector' field " << endmsg ;
268  return (1);
269  }
270  log << MSG::DEBUG
271  << "[initLevelsFromDict] field 'detector' found OK " << endmsg;
272 
273 
274  // Look for Field 'zside'
275  // ========================================================================
276  field = m_dict->find_field("zside") ;
277  if (field) {
278  m_zside_index = field->index();}
279  else {
280  log << MSG::INFO << "LArElectrodeID::initLevelsFromDict - unable to find 'zside' field "
281  << endmsg ;
282  return (1);
283  }
284  log << MSG::DEBUG << "[initLevelsFromDict] field 'zside' found OK " << endmsg;
285 
286 
287  // Look for Fields 'module'
288  // ========================================================================
289  field = m_dict->find_field("module") ;
290  if (field) {
291  m_module_index = field->index();
292  }
293  else {
294  log << MSG::INFO << "LArElectrodeID::initLevelsFromDict - unable to find 'module' field "
295  << endmsg ;
296  return (1);
297  }
298  log << MSG::DEBUG << "[initLevelsFromDict] field 'module' found OK " << endmsg;
299 
300  // Look for Fields 'hvphi'
301  // ========================================================================
302  field = m_dict->find_field("hvphi") ;
303  if (field) {
304  m_hvphi_index = field->index();
305  }
306  else {
307  log << MSG::INFO << "initLevelsFromDict - unable to find 'hvphi' field "<< endmsg ;
308  return (1);
309  }
310  log << MSG::DEBUG << "[initLevelsFromDict] field 'hvphi' found OK " << endmsg;
311 
312  // Look for Fields 'hveta'
313  // ========================================================================
314  field = m_dict->find_field("hveta") ;
315  if (field) {
316  m_hveta_index = field->index();
317  }
318  else {
319  log << MSG::INFO << "[initLevelsFromDict] - unable to find 'hveta' field "
320  << endmsg ;
321  return (1);
322  }
323  log << MSG::DEBUG << "[initLevelsFromDict] field 'hveta' found OK " << endmsg;
324 
325  // Look for Fields 'hvgap'
326  // ========================================================================
327  field = m_dict->find_field("hvgap") ;
328  if (field) {
329  m_hvgap_index = field->index();
330  }
331  else {
332  log << MSG::INFO << "[initLevelsFromDict] - unable to find 'hvgap' field "
333  << endmsg ;
334  return (1);
335  }
336  log << MSG::DEBUG << "[initLevelsFromDict] field 'hvgap' found OK " << endmsg;
337 
338 
339  // Look for Fields 'electrode'
340  // ========================================================================
341  field = m_dict->find_field("electrode") ;
342  if (field) {
343  m_electrode_index = field->index();
344  }
345  else {
346  log << MSG::INFO << "[initLevelsFromDict] - unable to find 'electrode' field "
347  << endmsg ;
348  return (1);
349  }
350  log << MSG::DEBUG << "[initLevelsFromDict] field 'electrode' found OK " << endmsg;
351 
352 
353  // Set the field implementation
354  // ========================================================================
355 
357  log << MSG::DEBUG << "[initLevelsFromDict] Found levels: " << endmsg ;
358  log << MSG::DEBUG << "[initLevelsFromDict] > Atlas : " << m_atlas_index << endmsg ;
359  log << MSG::DEBUG << "[initLevelsFromDict] > Configurat: " << m_configuration_index << endmsg ;
360  log << MSG::DEBUG << "[initLevelsFromDict] > detector : " << m_detector_index << endmsg ;
361  log << MSG::DEBUG << "[initLevelsFromDict] > zside : " << m_zside_index << endmsg ;
362  log << MSG::DEBUG << "[initLevelsFromDict] > hvphi : " << m_hvphi_index << endmsg ;
363  log << MSG::DEBUG << "[initLevelsFromDict] > hveta : " << m_hveta_index << endmsg ;
364  log << MSG::DEBUG << "[initLevelsFromDict] > hvgap : " << m_hvgap_index << endmsg ;
365  log << MSG::DEBUG << "[initLevelsFromDict] > electrode : " << m_electrode_index << endmsg ;
375 
376  log << MSG::DEBUG << "[initLevelsFromDict] Decode index and bit fields for each level: " << endmsg;
377  log << MSG::DEBUG << "[initLevelsFromDict] > Atlas " << m_atlas_impl.show_to_string() << endmsg;
378  log << MSG::DEBUG << "[initLevelsFromDict] > larConfig " << m_configuration_impl.show_to_string() << endmsg;
379  log << MSG::DEBUG << "[initLevelsFromDict] > detector " << m_detector_impl.show_to_string() << endmsg;
380  log << MSG::DEBUG << "[initLevelsFromDict] > z-side " << m_zside_impl.show_to_string() << endmsg;
381  log << MSG::DEBUG << "[initLevelsFromDict] > module " << m_module_impl.show_to_string() << endmsg;
382  log << MSG::DEBUG << "[initLevelsFromDict] > hvphi " << m_hvphi_impl.show_to_string() << endmsg;
383  log << MSG::DEBUG << "[initLevelsFromDict] > hveta " << m_hveta_impl.show_to_string() << endmsg;
384  log << MSG::DEBUG << "[initLevelsFromDict] > hvgap " << m_hvgap_impl.show_to_string() << endmsg;
385  log << MSG::DEBUG << "[initLevelsFromDict] > hv line " << m_electrode_impl.show_to_string() << endmsg;
386 
387 
388  return(0) ;
389 }
390 
391 
392 
393 
394 //=====================================================
396 //=====================================================
397 {
398  MsgStream log(m_msgSvc, "LArElectrodeID" );
399  std::stringstream strm1;
400  std::stringstream strm2;
401  std::stringstream strm3;
402  std::string strg1;
403  std::string strg2;
404  std::string strg3;
405 
406  // tower hash
407  // -----------
410  unsigned int nids = 0;
411  std::set<HWIdentifier> ids;
412  for (unsigned int i = 0; i < m_full_larelectrode_range.size(); ++i) {
415  for (const auto & exp_id :rit) {
416  HWIdentifier elec_id = ElectrodeId(
417  exp_id[m_detector_index] ,
418  exp_id[m_zside_index] ,
419  exp_id[m_module_index] ,
420  exp_id[m_hvphi_index] ,
421  exp_id[m_hveta_index] ,
422  exp_id[m_hvgap_index] ,
423  exp_id[m_electrode_index]
424  );
425  if(!(ids.insert(elec_id)).second){
426  strm1 << nids;
427  strg1 = "[init_hashes] > duplicated id for channel nb = "+strm1.str();
428  strm3 << show_to_string(elec_id);
429  strg3 = " expanded Id= "+strm3.str();
430  if(m_msgSvc){
431  log << MSG::ERROR << strg1 << endmsg;
432  log << MSG::ERROR << strg3 << endmsg;
433  }
434  }
435  nids++;
436  }
437  }
438  if(ids.size() != m_electrodeHashMax) {
439  strm1 << ids.size();
440  strm2 << m_electrodeHashMax;
441  strg1 = "[init_hashes] >";
442  strg2 = " set size NOT EQUAL to hash max. size "+strm1.str();
443  strg3 = " hash max "+strm2.str();
444  if(m_msgSvc)
445  {
446  log << MSG::ERROR << strg1 << endmsg;
447  log << MSG::ERROR << strg2 << endmsg;
448  log << MSG::ERROR << strg3 << endmsg;
449  }
450  else
451  {
452  std::cout << "LArOnlineID::" << strg1 << std::endl;
453  std::cout << "Error" << strg2 << std::endl;
454  std::cout << strg3 << std::endl;
455  }
456  return (1);
457  }
458 
459  nids=0;
460  std::set<HWIdentifier>::const_iterator first = ids.begin();
461  std::set<HWIdentifier>::const_iterator last = ids.end();
462  for (;first != last && nids < m_electrode_vec.size(); ++first) {
463  m_electrode_vec[nids] = (*first) ;
464  nids++;
465  }
466  log << MSG::DEBUG << "[init_hashes()] > Electrode_size= " << m_electrode_vec.size() << endmsg;
467  return (0);
468 }
469 
470 
471 
IdDictDictionary::find_region
IdDictRegion * find_region(const std::string &region_name) const
Definition: IdDictDictionary.cxx:92
ConstRangeIterator
Definition: RangeIterator.h:46
LArElectrodeID::~LArElectrodeID
~LArElectrodeID()
Default destructor.
IdDictDictionary::build_multirange
MultiRange build_multirange() const
Get MultiRange for full dictionary.
Definition: IdDictDictionary.cxx:291
AtlasDetectorID::initialize_from_dictionary
virtual int initialize_from_dictionary(const IdDictMgr &dict_mgr) override
Initialization from the identifier dictionary.
Definition: AtlasDetectorID.cxx:250
LArElectrodeID::m_hveta_impl
IdDictFieldImplementation m_hveta_impl
Definition: LArElectrodeID.h:286
LArElectrodeID::m_hvphi_impl
IdDictFieldImplementation m_hvphi_impl
Definition: LArElectrodeID.h:285
IdDictFieldImplementation::show_to_string
std::string show_to_string(void) const
Definition: IdDictFieldImplementation.cxx:38
IdDictDictionary::region
const IdDictRegion & region(size_t i) const
Region at index i.
Definition: IdDictDictionary.h:341
TRTCalib_cfilter.detector
detector
Definition: TRTCalib_cfilter.py:241
LArElectrodeID::ElectrodeId
HWIdentifier ElectrodeId(int det, int side, int mod, int phi, int eta, int gap, int elec) const
Create an Electrode identifier from fields.
Definition: LArElectrodeID.h:306
ExpandedIdentifier::add
void add(element_type value)
Append a value into a new field.
LArElectrodeID::m_hveta_index
size_type m_hveta_index
Definition: LArElectrodeID.h:269
LArElectrodeID::initLevelsFromDict
int initLevelsFromDict()
Definition: LArElectrodeID.cxx:196
LArElectrodeID::m_atlas_impl
IdDictFieldImplementation m_atlas_impl
Field Implementation.
Definition: LArElectrodeID.h:280
ExpandedIdentifier
Definition: DetectorDescription/Identifier/Identifier/ExpandedIdentifier.h:102
AtlasDetectorID::m_msgSvc
IMessageSvc * m_msgSvc
pointer to the message service
Definition: AtlasDetectorID.h:369
ReadOfcFromCool.field
field
Definition: ReadOfcFromCool.py:48
IdDictDictionary::name
const std::string & name() const
Dictionary name.
Definition: IdDictDictionary.h:323
LArElectrodeID::m_configuration_impl
IdDictFieldImplementation m_configuration_impl
Definition: LArElectrodeID.h:281
HWIdentifier
Definition: HWIdentifier.h:13
CaloSwCorrections.gap
def gap(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:212
LArElectrodeID::m_electrodeHashMax
size_type m_electrodeHashMax
Definition: LArElectrodeID.h:276
IdDictDictionary::find_field
IdDictField * find_field(const std::string &name) const
Definition: IdDictDictionary.cxx:36
IdDictRegion
Definition: IdDictRegion.h:20
LArElectrodeID::m_hvgap_impl
IdDictFieldImplementation m_hvgap_impl
Definition: LArElectrodeID.h:287
LArElectrodeID::m_zside_index
size_type m_zside_index
Definition: LArElectrodeID.h:266
IdDictDefs.h
LArElectrodeID::m_full_electrode_range
MultiRange m_full_electrode_range
Definition: LArElectrodeID.h:275
LArElectrodeID::m_larElectrodeRegion_index
size_type m_larElectrodeRegion_index
Definition: LArElectrodeID.h:261
LArElectrodeID::electrodeContext
IdContext electrodeContext() const
Define feedthrough Context.
Definition: LArElectrodeID.cxx:41
python.PyAthena.module
module
Definition: PyAthena.py:131
IdDictRegion::implementation
const IdDictFieldImplementation & implementation(size_t i) const
Definition: IdDictRegion.cxx:17
IdDictMgr
Definition: IdDictMgr.h:14
IdDictMgr::find_dictionary
IdDictDictionary * find_dictionary(const std::string &name) const
Access dictionary by name.
Definition: IdDictMgr.cxx:115
lumiFormat.i
int i
Definition: lumiFormat.py:85
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:194
checkCorrelInHIST.prefix
dictionary prefix
Definition: checkCorrelInHIST.py:391
LArElectrodeID::m_atlas_index
size_type m_atlas_index
Definition: LArElectrodeID.h:263
AtlasDetectorID::register_dict_tag
int register_dict_tag(const IdDictMgr &dict_mgr, const std::string &dict_name)
Register the file and tag names for a particular IdDict dictionary.
Definition: AtlasDetectorID.cxx:196
LArElectrodeID::m_hvphi_index
size_type m_hvphi_index
Definition: LArElectrodeID.h:268
IdDictDictionary::get_label_value
int get_label_value(const std::string &field, const std::string &label, int &value) const
Definition: IdDictDictionary.cxx:64
LArElectrodeID::m_configuration_index
size_type m_configuration_index
Definition: LArElectrodeID.h:264
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:239
LArElectrodeID::m_detector_impl
IdDictFieldImplementation m_detector_impl
Definition: LArElectrodeID.h:282
python.subdetectors.mmg.ids
ids
Definition: mmg.py:8
IdentifierHash.h
LArElectrodeID::initialize_from_dictionary
virtual int initialize_from_dictionary(const IdDictMgr &dict_mgr)
Initialization from the identifier dictionary.
Definition: LArElectrodeID.cxx:49
LArElectrodeID::m_dict
const IdDictDictionary * m_dict
Definition: LArElectrodeID.h:273
LArElectrodeID::m_detector_index
size_type m_detector_index
Definition: LArElectrodeID.h:265
RangeIterator.h
LArElectrodeID::init_hashes
int init_hashes()
Definition: LArElectrodeID.cxx:395
LArElectrodeID::get_expanded_id
int get_expanded_id(const HWIdentifier &id, ExpandedIdentifier &exp_id, const IdContext *context) const
Definition: LArElectrodeID.cxx:171
AtlasDetectorID::setDictVersion
virtual void setDictVersion(const IdDictMgr &dict_mgr, const std::string &name) override
Definition: AtlasDetectorID.cxx:494
Range
A Range describes the possible ranges for the field values of an ExpandedIdentifier.
Definition: DetectorDescription/Identifier/Identifier/Range.h:29
IdDictDictionary
Definition: IdDictDictionary.h:30
LArElectrodeID::LArElectrodeID
LArElectrodeID()
Default constructor.
Definition: LArElectrodeID.cxx:19
LArElectrodeID::m_electrode_vec
std::vector< HWIdentifier > m_electrode_vec
Definition: LArElectrodeID.h:277
AtlasDetectorID::reinitialize
bool reinitialize(const IdDictMgr &dict_mgr)
Test whether an idhelper should be reinitialized based on the change of tags.
Definition: AtlasDetectorID.cxx:216
AtlasDetectorID::show_to_string
std::string show_to_string(Identifier id, const IdContext *context=0, char sep='.') const
or provide the printout in string form
Definition: AtlasDetectorID.cxx:360
python.Constants.INFO
int INFO
Definition: Control/AthenaCommon/python/Constants.py:15
LArElectrodeID::m_electrode_impl
IdDictFieldImplementation m_electrode_impl
Definition: LArElectrodeID.h:288
MultiRange::size
size_type size() const
Definition: MultiRange.cxx:70
DeMoScan.first
bool first
Definition: DeMoScan.py:534
DEBUG
#define DEBUG
Definition: page_access.h:11
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
LArElectrodeID::m_electrode_index
size_type m_electrode_index
Definition: LArElectrodeID.h:271
IdDictRegion::index
size_t index() const
Definition: IdDictRegion.h:119
LArElectrodeID.h
IdDictField
Definition: IdDictField.h:15
MultiRange::cardinality
size_type cardinality() const
Computes a possible cardinality from all ranges.
Definition: MultiRange.cxx:82
LArElectrodeID::m_zside_impl
IdDictFieldImplementation m_zside_impl
Definition: LArElectrodeID.h:283
LArElectrodeID::m_module_impl
IdDictFieldImplementation m_module_impl
Definition: LArElectrodeID.h:284
IdContext
This class saves the "context" of an expanded identifier (ExpandedIdentifier) for compact or hash ver...
Definition: IdContext.h:26
LArElectrodeID::m_full_larelectrode_range
MultiRange m_full_larelectrode_range
Definition: LArElectrodeID.h:274
LArElectrodeID::m_module_index
size_type m_module_index
Definition: LArElectrodeID.h:267
AtlasDetectorID
This class provides an interface to generate or decode an identifier for the upper levels of the dete...
Definition: AtlasDetectorID.h:52
LArElectrodeID::m_hvgap_index
size_type m_hvgap_index
Definition: LArElectrodeID.h:270