ATLAS Offline Software
LArOnline_SuperCellID.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 #include "GaudiKernel/MsgStream.h"
7 #include "IdDict/IdDictDefs.h"
10 #include <cmath>
11 #include <iostream>
12 #include <set>
13 #include <sstream>
14 #include <string>
15 
16 /* See comments in Base class */
17 
20 {
21  m_this_is_slar=true;
22 }
23 
24 
26 = default;
27 
28 /* =================================================================== */
30 /* =================================================================== */
31 {
32  MsgStream log(m_msgSvc, "LArOnline_SuperCellID" );
33  std::string strg = "initialize_from_dictionary";
34  if(m_msgSvc) {
35  log << MSG::INFO << strg << endmsg;
36  }
37  else {
38  std::cout << strg << std::endl;
39  }
40 
41  // Check whether this helper should be reinitialized
42  if (!reinitialize(dict_mgr)) {
43  if(m_msgSvc) log << MSG::DEBUG << "Request to reinitialize not satisfied - tags have not changed" << endmsg;
44  return (0);
45  }
46  else {
47  if(m_msgSvc) log << MSG::DEBUG << "(Re)initialize" << endmsg;
48  }
49 
50  // init base object
51  if(AtlasDetectorID::initialize_from_dictionary(dict_mgr)) return (1);
52  m_dict = dict_mgr.find_dictionary ("LArCalorimeter");
53  if(!m_dict) {
54 
55  strg = " initialize_from_dictionary - cannot access LArCalorimeter dictionary ";
56  if(m_msgSvc) {
57  log << MSG::ERROR << strg << endmsg;
58  }
59  else {
60  std::cout << "LArOnline_SuperCellID::" << strg << std::endl;
61  }
62  return 1;
63  }
64 
65  // Register version of the dictionary used
66  if (register_dict_tag(dict_mgr, "LArCalorimeter")) return(1);
67 
68  // initialize dictionary version
69  AtlasDetectorID::setDictVersion(dict_mgr, "LArCalorimeter");
70 
71  /* Initialize the field indices */
72  std::string group_name("LArOnline_SuperCell");
74 
75  if(m_msgSvc) {
76  log << MSG::INFO << "Finished initLevelsFromDict" << endmsg;
77  } else {
78  std::cout << "Finished initLevelsFromDict" << std::endl;
79  }
80 
81 
82  /* Find value for the field LAr Calorimeter */
83  const IdDictDictionary* atlasDict = dict_mgr.find_dictionary ("ATLAS");
84  int larField = -1;
85  if (atlasDict->get_label_value("subdet", "LArCalorimeter", larField)) {
86  std::stringstream strm;
87  strm << atlasDict->m_name;
88  strg= " Could not get value for label 'LArCalorimeter' of field 'subdet' in dictionary "+strm.str();
89  if(m_msgSvc) {
90  log << MSG::ERROR << strg << endmsg;
91  }
92  else {
93  std::cout << "LArOnline_SuperCellID:" << strg << std::endl;
94  }
95  return (1);
96  }
97 
98  /* Find value for the field LArOnline */
99  int larOnlineField = -4;
100  if (m_dict->get_label_value("part", "LArOnline", larOnlineField)) {
101  std::stringstream strm;
102  strm << m_dict->m_name;
103  strg = "Could not get value for label 'LArOnline' of field 'part' in dictionary "+strm.str();
104  if(m_msgSvc) {
105  log << MSG::ERROR << strg << endmsg;
106  }
107  else {
108  std::cout << strg << std::endl;
109  }
110  return (1);
111  }
112 
113  /* Find value for the field calibLArOnline */
114  int larOnlineCalibField = -5;
115  if (m_dict->get_label_value("part", "LArOnlineCalib", larOnlineCalibField)) {
116  std::stringstream strm;
117  strm << m_dict->m_name;
118  strg = "Could not get value for label 'LArOnlineCalib' of field 'part' in dictionary "+strm.str();
119  if(m_msgSvc) {
120  log << MSG::ERROR << strg << endmsg;
121  }
122  else {
123  std::cout << strg << std::endl;
124  }
125  return (1);
126  }
127 
128  /* Set up id for Region and range prefix */
130  region_id.add(larField);
131  region_id.add(larOnlineField);
132  Range prefix;
133 
134  /*Full range for all channels*/
138 
139  std::string strg0= " initialize_from_dictionary :";
140  std::string strg1= " feedthrough range -> " + (std::string)m_full_feedthrough_range;
141  std::string strg2= " feedthrough slot range -> " + (std::string)m_full_feb_range;
142  std::string strg3= " channel range -> " + (std::string)m_full_laronline_range;
143  if(m_msgSvc) {
144  log << MSG::DEBUG << strg0 << endmsg;
145  log << MSG::DEBUG << strg1 << endmsg;
146  log << MSG::DEBUG << strg2 << endmsg;
147  log << MSG::DEBUG << strg3 << endmsg;
148  }
149  else {
150  std::cout << strg0 << std::endl;
151  std::cout << strg1 << std::endl;
152  std::cout << strg2 << std::endl;
153  std::cout << strg3 << std::endl;
154  }
155 
156  /* Setup the hash tables */
157  std::stringstream strm;
158  strm << dictionaryVersion();
159  strg="[initialize_from_dictionary] version= " + strm.str();
160  if(m_msgSvc) {
161  log << MSG::DEBUG << strg << endmsg;
162  }
163  else {
164  std::cout << "LArOnline_SuperCellID: " << strg << std::endl;
165  }
166  if( dictionaryVersion() == "fullAtlas" ) {
167  if(LArOnlineID_Base::init_hashes()) return (1);
168  }
169 
170  // Setup for hash calculation for channels (febs is further below)
171 
172  // Febs have a uniform number of channels
173  // The lookup table only needs to contain the
174  // hash offset for each feb
175 
176  // The implementation requires:
177 
178  // 1) a lookup table for each feb containing hash offset
179  // 2) a decoder to access the "index" corresponding to the
180  // bec/side/ft/slot fields. These fields use x bits, so the
181  // vector has a length of 2**x.
182 
183  /* Create decoder for fields bec to slot */
185  m_bec_impl.bits() +
186  m_side_impl.bits() +
188  m_slot_impl.bits();
190  m_bec_slot_impl.set_bits(bits, bits_offset);
191  int size = (1 << bits);
192 
193  // Set up vector as lookup table for hash calculation.
194  m_chan_hash_calcs.resize(size);
195 
196  std::stringstream strm1;
197  std::stringstream strm2;
198  for (unsigned int i = 0; i < m_febHashMax; ++i) {
199 
200  HWIdentifier febId = feb_Id(i) ;
201 
202  HashCalc hc;
203 
204  HWIdentifier min = channel_Id ( febId, 0);
205 
207  hc.m_hash = min_hash;
209 
210  if (m_bec_slot_impl.unpack(min) >= size) {
211  strm << size;
212  strm1 << show_to_string(min);
213  strm2 << m_bec_slot_impl.unpack(min);
214  strg = "Min > "+strm.str();
215  strg1= " "+strm1.str();
216  strg2= " "+strm2.str();
217  if(m_msgSvc) {
218  log << MSG::DEBUG << strg << endmsg;
219  log << MSG::DEBUG << strg1 << endmsg;
220  log << MSG::DEBUG << strg2 << endmsg;
221  }
222  else {
223  std::cout << strg << std::endl;
224  std::cout << strg1 << std::endl;
225  std::cout << strg2 << std::endl;
226  }
227  }
228  }
229 
230  // Check channel hash calculation
231  for (unsigned int i = 0; i < m_channelHashMax; ++i) {
232  HWIdentifier id = channel_Id(i);
233  if (channel_Hash(id) != i) {
234  strm << show_to_string(id);
235  strm1 << channel_Hash(id);
236  strm2 << i;
237  strg = " ***** Error channel ranges, id, hash, i = "+strm.str();
238  strg1= " , "+strm1.str();
239  strg2= " , "+strm2.str();
240  if(m_msgSvc) {
241  log << MSG::ERROR << strg << endmsg;
242  log << MSG::ERROR << strg1 << endmsg;
243  log << MSG::ERROR << strg2 << endmsg;
244  }
245  else {
246  std::cout << strg << std::endl;
247  std::cout << strg1 << std::endl;
248  std::cout << strg2 << std::endl;
249  }
250  }
251  }
252 
253 
254 
255  // Setup for hash calculation for febs
256 
257  // We calculate the feb hash by saving the hash of each
258  // feedthrough in a HashCalc object and then adding on the slot
259  // number for a particular feb
260 
261  // The implementation requires:
262 
263  // 1) a lookup table for each ft containing hash offset
264  // 2) a decoder to access the "index" corresponding to the
265  // bec/side/ft fields. These fields use x bits, so the
266  // vector has a length of 2**x.
267 
268  /* Create decoder for fields bec to ft */
269  bits = m_bec_impl.bits() +
270  m_side_impl.bits() +
272  bits_offset = m_bec_impl.bits_offset();
273  m_bec_ft_impl.set_bits(bits, bits_offset);
274  size = (1 << bits);
275 
276  // Set up vector as lookup table for hash calculation.
277  m_feb_hash_calcs.resize(size);
278 
279  // Get context for conversion to expanded ids
280  IdContext ftContext = feedthroughContext();
281  ExpandedIdentifier ftExpId;
282 
283  for (unsigned int i = 0; i < m_feedthroughHashMax; ++i) {
284 
286 
287  HashCalcFeb hc;
288 
289  // Set the hash id for each feedthrough, and then check if one
290  // needs to also save the slot values
292  hc.m_hash = min_hash;
293 
294  // For each feedthrough we save the possible slot values for
295  // the hash calculation.
296  if (get_expanded_id(min, ftExpId, &ftContext)) {
297  if(m_msgSvc) {
298  log << MSG::WARNING << " ***** Warning cannot get ft expanded id for " << show_to_string(min) << endmsg;
299  } else {
300  std::cout << " ***** Warning cannot get ft expanded id for " << show_to_string(min) << std::endl;
301  }
302  }
303 
304  // Now and save values if we either have an
305  // enumerated set of slots, or more than one FT
306  for (unsigned int i = 0; i < m_full_feb_range.size(); ++i) {
307  if (m_full_feb_range[i].match(ftExpId)) {
308  const Range::field& slotField = m_full_feb_range[i][m_slot_index];
309  if (slotField.get_mode() == Range::field::both_bounded ||
310  slotField.get_mode() == Range::field::enumerated) {
311  // save values
312  unsigned int nvalues = slotField.get_indices();
313  hc.m_slot_values.reserve(hc.m_slot_values.size() + nvalues);
314  for (unsigned int j = 0; j < nvalues; ++j) {
315  hc.m_slot_values.push_back(slotField.get_value_at(j));
316  }
317  }
318  }
319  }
320 
321  // Set hash calculator
323 
324 
325  if (m_bec_ft_impl.unpack(min) >= size) {
326  std::stringstream strm, strm1, strm2, strm3;
327  strm << size;
328  strm1 << show_to_string(min);
329  strm2 << m_bec_ft_impl.unpack(min);
330  strm3 << min_hash;
331  strg = "Min > " + strm.str() + " " + strm1.str() + " " + strm2.str() + " " + strm3.str();
332  if(m_msgSvc) {
333  log << MSG::DEBUG << strg << endmsg;
334  }
335  else {
336  std::cout << strg << std::endl;
337  }
338  }
339  }
340 
341  // Check feb hash calculation
342  for (unsigned int i = 0; i < m_febHashMax; ++i) {
343  HWIdentifier id = feb_Id(i);
344  if (feb_Hash(id) != i) {
345  std::stringstream strm, strm1, strm2;
346  strm << show_to_string(id);
347  strm1 << feb_Hash(id);
348  strm2 << i;
349  strg = " ***** Error feb ranges, id, hash, i = " +
350  strm.str() + " , " + strm1.str() + " , "+strm2.str();
351  if(m_msgSvc) {
352  log << MSG::ERROR << strg << endmsg;
353  }
354  else {
355  std::cout << strg << std::endl;
356  }
357  }
358  }
359 
360  return 0;
361 }
362 
364 /*========================================================*/
365 {
366  int ft = feedthrough(id);
367  return ( barrel_ec(id)==1
368  &&
369  ( ft==3 || ft==10 || ft==16 || ft==22 )
370  );
371 }
372 
373 
374 //pos_neg : 0 = negative eta side (C side)
375 // 1 = positive eta side (A side)
376 
378  /*======================================================*/
379  //
380  int bec= barrel_ec(id);
381  int ft = feedthrough(id);
382  int sl = slot(id);
383  int ch = channel(id);
384  bool sideCondition= (pos_neg(id)==1 && ch>95) || (pos_neg(id)==0 && ch<64);
385 
386  return (bec==1 && sl==2 && sideCondition && (ft==2 || ft==9 ||
387  ft==15 || ft==21));
388 }
389 
391  /*======================================================*/
392  //
393  int bec= barrel_ec(id);
394  int ft = feedthrough(id);
395  int sl = slot(id);
396  int ch = channel(id);
397  bool sideCondition=(pos_neg(id)==1 && ch<=95) || (pos_neg(id)==0 && ch>=64);
398 
399  return (bec == 1 &&
400  ((sl == 1 &&
401  (ft == 0 || ft == 1 || ft == 2 || ft == 4 || ft == 5 || ft == 7 || ft == 8 || ft == 9 || ft == 11 || ft == 12 || ft == 13 || ft == 14 || ft == 15 ||
402  ft == 17 || ft == 18 || ft == 19 || ft == 20 || ft == 21 || ft == 23 || ft == 24)) ||
403  (sl==2 && sideCondition && (ft==2 ||ft==9 || ft==15 || ft==21))));
404 }
405 
407  int bec= barrel_ec(id);
408  int ft = feedthrough(id);
409  return (bec == 1 && !( ft==3 || ft==10 || ft==16 || ft==22 || ft==6));
410 }
IdDictDictionary::build_multirange
MultiRange build_multirange() const
Get MultiRange for full dictionary.
Definition: IdDictMgr.cxx:1048
LArOnline_SuperCellID::isEMECOW
bool isEMECOW(const HWIdentifier id) const override final
Definition: LArOnline_SuperCellID.cxx:390
LArOnline_SuperCellID::LArOnline_SuperCellID
LArOnline_SuperCellID(void)
Default constructor.
Definition: LArOnline_SuperCellID.cxx:18
sendEI_SPB.ch
ch
Definition: sendEI_SPB.py:35
LArOnlineID_Base::channel_Hash
IdentifierHash channel_Hash(HWIdentifier channelId) const
Create channel_hash from channel_Id.
Definition: LArOnlineID_Base.cxx:1636
PlotCalibFromCool.ft
ft
Definition: PlotCalibFromCool.py:329
AtlasDetectorID::initialize_from_dictionary
virtual int initialize_from_dictionary(const IdDictMgr &dict_mgr) override
Initialization from the identifier dictionary.
Definition: AtlasDetectorID.cxx:320
LArOnline_SuperCellID::~LArOnline_SuperCellID
~LArOnline_SuperCellID(void)
Default destructor.
LArOnlineID_Base::HashCalcFeb::m_hash
IdentifierHash m_hash
Definition: LArOnlineID_Base.h:534
ParticleGun_SamplingFraction.bec
int bec
Definition: ParticleGun_SamplingFraction.py:89
LArOnlineID_Base::HashCalcFeb::m_slot_values
std::vector< int > m_slot_values
Definition: LArOnlineID_Base.h:535
LArOnline_SuperCellID::isEMECIW
bool isEMECIW(const HWIdentifier id) const override final
Definition: LArOnline_SuperCellID.cxx:377
LArOnlineID_Base::m_feedthrough_impl
IdDictFieldImplementation m_feedthrough_impl
Definition: LArOnlineID_Base.h:514
Range::field::both_bounded
@ both_bounded
Definition: DetectorDescription/Identifier/Identifier/Range.h:48
LArOnlID_Exception.h
LArOnlineID_Base::slot
int slot(const HWIdentifier id) const
Return the slot number of a hardware cell identifier: slot = [1,15] Slot-ID in top part of the crat...
Definition: LArOnlineID_Base.cxx:1961
Range::field::get_value_at
element_type get_value_at(size_type index) const
Definition: DetectorDescription/Identifier/Identifier/Range.h:583
ExpandedIdentifier
Definition: DetectorDescription/Identifier/Identifier/ExpandedIdentifier.h:108
LArOnlineID_Base::m_slot_impl
IdDictFieldImplementation m_slot_impl
Definition: LArOnlineID_Base.h:515
LArOnlineID_Base::HashCalc
Define the Hash identifier for channels and febs.
Definition: LArOnlineID_Base.h:525
AtlasDetectorID::m_msgSvc
IMessageSvc * m_msgSvc
pointer to the message service
Definition: AtlasDetectorID.h:368
LArOnlineID_Base::feedthroughContext
IdContext feedthroughContext(void) const
Define context for feedthroughs.
Definition: LArOnlineID_Base.cxx:255
LArOnlineID_Base::m_dict
const IdDictDictionary * m_dict
Definition: LArOnlineID_Base.h:488
LArOnlineID_Base::m_side_impl
IdDictFieldImplementation m_side_impl
Definition: LArOnlineID_Base.h:513
HWIdentifier
Definition: HWIdentifier.h:13
LArOnlineID_Base::barrel_ec
int barrel_ec(const HWIdentifier id) const
Return the position barrel or endcap of a hardware cell identifier: barrel_ec = [0,...
Definition: LArOnlineID_Base.cxx:1942
IdDictFieldImplementation::unpack
int unpack(Identifier id) const
Identifier manipulation methods.
Definition: IdDictFieldImplementation.h:148
CalibDbCompareRT.region_id
region_id
Definition: CalibDbCompareRT.py:68
LArOnlineID_Base::m_feedthroughHashMax
size_type m_feedthroughHashMax
Definition: LArOnlineID_Base.h:493
AtlasDetectorID::dictionaryVersion
virtual std::string dictionaryVersion(void) const override
Definition: AtlasDetectorID.cxx:347
LArOnlineID_Base::m_bec_slot_impl
IdDictFieldImplementation m_bec_slot_impl
Definition: LArOnlineID_Base.h:518
IdDictDefs.h
LArOnlineID_Base::m_feb_hash_calcs
std::vector< HashCalcFeb > m_feb_hash_calcs
Definition: LArOnlineID_Base.h:537
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
IdDictMgr
Definition: IdDictDefs.h:32
LArOnlineID_Base::m_full_feedthrough_range
MultiRange m_full_feedthrough_range
Definition: LArOnlineID_Base.h:490
LArOnline_SuperCellID::isHECchannel
bool isHECchannel(const HWIdentifier id) const override final
Definition: LArOnline_SuperCellID.cxx:363
LArOnlineID_Base::channel
int channel(const HWIdentifier id) const
Return the channel number of a hardware cell identifier channel = [0,127] in all FEB.
Definition: LArOnlineID_Base.cxx:1967
IdDictMgr::find_dictionary
IdDictDictionary * find_dictionary(const std::string &name) const
Access dictionary by name.
Definition: IdDictMgr.cxx:161
LArOnlineID_Base::m_febHashMax
size_type m_febHashMax
Definition: LArOnlineID_Base.h:494
lumiFormat.i
int i
Definition: lumiFormat.py:92
IdDictFieldImplementation::set_bits
void set_bits(size_type bits, size_type bits_offset)
Definition: IdDictFieldImplementation.h:279
LArOnline_SuperCellID::isEMECchannel
bool isEMECchannel(const HWIdentifier id) const override final
Definition: LArOnline_SuperCellID.cxx:406
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
LArOnlineID_Base::get_expanded_id
int get_expanded_id(const HWIdentifier &id, ExpandedIdentifier &exp_id, const IdContext *context) const
create expanded HWIdentifier from HWIdentifier (return == 0 for OK)
Definition: LArOnlineID_Base.cxx:788
IdDictFieldImplementation::bits_offset
size_type bits_offset() const
Definition: IdDictFieldImplementation.h:209
LArOnlineID_Base::channel_Id
HWIdentifier channel_Id(int barrel_ec, int pos_neg, int feedthrough, int slot, int channel) const
create channel identifier from fields
Definition: LArOnlineID_Base.cxx:1569
checkCorrelInHIST.prefix
dictionary prefix
Definition: checkCorrelInHIST.py:391
LArOnlineID_Base::pos_neg
int pos_neg(const HWIdentifier id) const
Return the side of a hardware cell identifier pos_neg = [0,1] positive-side or negative-side Barrel...
Definition: LArOnlineID_Base.cxx:1954
mc.group_name
group_name
Definition: mc.PhPy8EG_A14NNPDF23_NNLOPS_example.py:33
LArOnlineID_Base::initLevelsFromDict
int initLevelsFromDict(const std::string &group_name)
Definition: LArOnlineID_Base.cxx:841
LArOnlineID_Base::m_channelHashMax
size_type m_channelHashMax
Definition: LArOnlineID_Base.h:495
LArOnlineID_Base::init_hashes
int init_hashes(void)
Definition: LArOnlineID_Base.cxx:1124
LArOnlineID_Base::feb_Id
HWIdentifier feb_Id(int barrel_ec, int pos_neg, int feedthrough, int slot) const
Create feb_Id from fields.
Definition: LArOnlineID_Base.cxx:1483
min
#define min(a, b)
Definition: cfImp.cxx:40
LArOnlineID_Base::channel_Hash_binary_search
IdentifierHash channel_Hash_binary_search(HWIdentifier channelId) const
Definition: LArOnlineID_Base.h:560
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
IdDictDictionary::get_label_value
int get_label_value(const std::string &field, const std::string &label, int &value) const
Definition: IdDictMgr.cxx:338
LArOnline_SuperCellID::initialize_from_dictionary
int initialize_from_dictionary(const IdDictMgr &dict_mgr) override final
initialization from the identifier dictionary
Definition: LArOnline_SuperCellID.cxx:29
LArOnlineID_Base
Helper for the Liquid Argon Calorimeter cell identifiers.
Definition: LArOnlineID_Base.h:105
LArOnlineID_Base::feb_Hash_binary_search
IdentifierHash feb_Hash_binary_search(HWIdentifier channelId) const
Definition: LArOnlineID_Base.h:549
IdentifierHash.h
LArOnlineID_Base::HashCalc::m_hash
IdentifierHash m_hash
Definition: LArOnlineID_Base.h:528
Range::field::get_indices
size_type get_indices() const
Definition: DetectorDescription/Identifier/Identifier/Range.h:545
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:27
LArOnlineID_Base::m_chan_hash_calcs
std::vector< HashCalc > m_chan_hash_calcs
Definition: LArOnlineID_Base.h:538
IdDictDictionary
Definition: IdDictDefs.h:97
LArOnlineID_Base::m_bec_impl
IdDictFieldImplementation m_bec_impl
Definition: LArOnlineID_Base.h:512
LArOnlineID_Base::feedthrough
int feedthrough(const HWIdentifier id) const
Return the feedthrough of a hardware cell identifier : feedthrough = [0,31] Barrel - A/C side or H/...
Definition: LArOnlineID_Base.cxx:1948
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
LArOnlineID_Base::m_full_feb_range
MultiRange m_full_feb_range
Definition: LArOnlineID_Base.h:491
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
LArOnlineID_Base::m_full_laronline_range
MultiRange m_full_laronline_range
Definition: LArOnlineID_Base.h:489
MultiRange::size
size_type size() const
Definition: DetectorDescription/Identifier/src/Range.cxx:2488
DEBUG
#define DEBUG
Definition: page_access.h:11
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
LArOnline_SuperCellID.h
Range::field::get_mode
mode get_mode() const
Query the values.
Definition: DetectorDescription/Identifier/Identifier/Range.h:517
LArOnlineID_Base::m_slot_index
size_type m_slot_index
Definition: LArOnlineID_Base.h:484
Range::field
This is the individual specification for the range of one ExpandedIdentifier field.
Definition: DetectorDescription/Identifier/Identifier/Range.h:37
IdentifierHash
Definition: IdentifierHash.h:38
LArOnlineID_Base::HashCalcFeb
Definition: LArOnlineID_Base.h:531
IdContext
class IdContext
Definition: IdContext.h:34
LArOnlineID_Base::m_bec_ft_impl
IdDictFieldImplementation m_bec_ft_impl
Definition: LArOnlineID_Base.h:517
LArOnlineID_Base::feb_Hash
IdentifierHash feb_Hash(HWIdentifier febId) const
Create feb hash identifiers from feb identifiers.
Definition: LArOnlineID_Base.cxx:1516
match
bool match(std::string s1, std::string s2)
match the individual directories of two strings
Definition: hcg.cxx:356
LArOnlineID_Base::feedthrough_Id
HWIdentifier feedthrough_Id(int barrel_ec, int pos_neg, int feedthrough) const
Create a feedthrough identifier from fields.
Definition: LArOnlineID_Base.cxx:1404
LArOnlineID_Base::m_this_is_slar
bool m_this_is_slar
Definition: LArOnlineID_Base.h:443
IdDictFieldImplementation::size_type
Identifier::size_type size_type
Definition: IdDictFieldImplementation.h:62
Range::field::enumerated
@ enumerated
Definition: DetectorDescription/Identifier/Identifier/Range.h:49
IdDictFieldImplementation::bits
size_type bits() const
Definition: IdDictFieldImplementation.h:203