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