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