ATLAS Offline Software
AtlasDetectorID.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 /***************************************************************************
6  Detector Description
7  -----------------------------------------
8 ***************************************************************************/
9 
11 #include "IdDict/IdDictDefs.h"
12 #include "AtlasDetectorIDHelper.h"
13 #include <stdio.h>
14 #include <assert.h>
15 #include <format>
16 
18  const std::string& group)
19  : AthMessaging(name),
20  m_group (group)
21 {
22 }
24  if(m_helper) delete m_helper;
25 }
26 
27 const std::string& AtlasDetectorID::group() const
28 {
29  return m_group;
30 }
31 
33  return Identifier{};
34 }
36  return Identifier{};
37 }
39  return Identifier{};
40 }
42  return Identifier{};
43 }
45  return Identifier{};
46 }
48  return Identifier{};
49 }
51  Identifier result{0};
52  // Pack field
54  return result;
55 }
56 
58  Identifier result{0};
59  // Pack field
61  return result;
62 }
63 
65  Identifier result{0};
66  // Pack field
68  return result;
69 }
70 
72  Identifier result{0};
73  // Pack field
75  return result;
76 }
77 
79  Identifier result{0};
80  // Pack field
82  return result;
83 }
84 
86  Identifier result{0};
87  // Pack field
90  return result;
91 }
92 
94  Identifier result{0};
95  // Pack field
98  return result;
99 }
100 
102  Identifier result{0};
103  // Pack field
106  return result;
107 }
108 
110  Identifier result{0};
111  // Pack field
114  return result;
115 }
116 
118  Identifier result{0};
119  // Pack field
122  return result;
123 }
124 
126  Identifier result{0};
127  // Pack field
130  return result;
131 }
132 
134  Identifier result{0};
135  // Pack field
138  return result;
139 }
140 
142  Identifier result{0};
143  // Pack field
146  return result;
147 }
148 
150  Identifier result{0};
151  // Pack field
154  return result;
155 }
156 
158  Identifier result{0};
159  // Pack field
162  return result;
163 }
164 
166  Identifier result{0};
167  // Pack field
170  return result;
171 }
174  ExpandedIdentifier id{};
175  return IdContext{id, 0, m_DET_INDEX};
176 }
177 
180  ExpandedIdentifier id{};
181  return IdContext{id, 0, m_SUBDET_INDEX};
182 }
183 
184 int AtlasDetectorID::get_id(const IdentifierHash & /*hash_id*/,
185  Identifier & /*id*/,
186  const IdContext * /*context*/) const {
187  return 0;
188 }
189 
191  IdentifierHash & /*hash_id*/,
192  const IdContext * /*context*/) const {
193  return 0;
194 }
195 
197  const std::string &dict_name) {
198  // Register version of dictionary dict_name
199 
200  // Access dictionary by name
201  IdDictDictionary *dict = dict_mgr.find_dictionary(dict_name);
202  if (!dict) {
203  ATH_MSG_ERROR(__func__<<":"<<__LINE__<<" No dictionary found");
204  return 1;
205 
206  }
207  // Add in dict name, file name and version
208  m_dict_names.push_back(dict_name);
209  m_file_names.push_back(dict->file_name());
210  m_dict_tags.push_back(dict->dict_tag());
211  return 0;
212 }
213 
217  // If no tag has been registered, then reinitialize
218  if (m_dict_tags.size() == 0){
219  return true;
220  }
221  // If no dict names have been registered, then reinitialize
222  if (m_dict_names.size() == 0){
223  return true;
224  }
225  // Loop over dict names and check version tags
226  if (m_dict_names.size() != m_dict_tags.size()) {
227  ATH_MSG_ERROR("reinitialize: dict names and tags vectors not the same length ");
228  ATH_MSG_ERROR("names: " << m_dict_names.size() << " tags: " << m_dict_tags.size());
229  }
230  for (unsigned int i = 0; i < m_dict_names.size(); ++i) {
231  // Access dictionary by name
232  IdDictDictionary *dict = dict_mgr.find_dictionary(m_dict_names[i]);
233  if (!dict) {
234  ATH_MSG_ERROR("reinitialize: could not find dict - " << m_dict_names[i]);
235  return false;
236  }
237  if (m_dict_tags[i] != dict->dict_tag()) {
238  // Remove all memory of versions
239  m_dict_names.clear();
240  m_dict_tags.clear();
241  m_file_names.clear();
242  return true;
243  }
244  }
245 
246  // Tags match - don't reinitialize
247  return false;
248 }
249 
251 
252  // Register version of ATLAS dictionary
253  if (register_dict_tag(dict_mgr, "ATLAS")){
254  ATH_MSG_ERROR(__func__<<":"<<__LINE__<<" - Failed to register dict tag");
255  return 1;
256  }
257  // Initialize helper, needed for init of AtlasDetectorID
258  if (!m_helper) {
259  m_helper = std::make_unique<AtlasDetectorIDHelper>().release();
260  }
261 
262  if (m_helper->initialize_from_dictionary(dict_mgr)){
263  ATH_MSG_ERROR(__func__<<":"<<__LINE__<<" - Initialization from dictionary failed.");
264  return 1;
265  }
266  // Initialize level indices and id values from dicts
267  if (initLevelsFromDict(dict_mgr)) {
268  ATH_MSG_ERROR(__func__<<":"<<__LINE__<<" - Level initialization from dictionary failed.");
269  return 1;
270  }
272  ATH_MSG_DEBUG("initialize_from_dictionary - OK");
273  return 0;
274 }
275 
277  return m_dict_version;
278 }
280  return id.fields() > 0 && id[0] == m_INDET_ID;
281 }
283  return id.fields() > 0 && id[0] == m_LAR_ID;
284 }
286  return id.fields() > 0 && id[0] == m_TILE_ID;
287 }
289  return id.fields() > 0 && id[0] == m_MUON_ID;
290 }
292  return id.fields() > 0 && id[0] == m_CALO_ID;
293 }
295  return is_indet(id) && id.fields() > 1 && id[1] == m_PIXEL_ID;
296 }
297 
299  return is_indet(id) && id.fields() > 1 && id[1] == m_SCT_ID;
300 }
302  return is_indet(id) && id.fields() > 1;
303 }
305  return is_indet(id) && id.fields() > 1 && id[1] == m_HGTD_ID;
306 }
308  return is_indet(id) && id.fields() > 1 && id[1] == m_LUMI_ID;
309 }
311  return is_lumi(id) && id.fields() > 2 && id[2] == m_LUMI_PLR_ID;
312 }
313 
315  return is_lar(id) && id.fields() > 1 && std::abs(id[1]) == m_LAR_EM_ID;
316 }
318  return is_lar(id) && id.fields() > 1 && std::abs(id[1]) == m_LAR_HEC_ID;
319 }
320 
322  return is_lar(id) && id.fields() > 1 && std::abs(id[1]) == m_LAR_FCAL_ID;
323 }
324 
326  return is_lar_fcal(id) && id.fields() > 3 &&std::abs(id[3]) == 0;
327 }
328 
330  return id.fields() > 4 && id[0] == m_MUON_ID && id[4] == m_MDT_ID;
331 }
332 
334  return id.fields() > 4 && id[0] == m_MUON_ID && id[4] == m_CSC_ID;
335 }
336 
338  return id.fields() > 4 && id[0] == m_MUON_ID && id[4] == m_RPC_ID;
339 }
340 
342  return id.fields() > 4 && id[0] == m_MUON_ID && id[4] == m_TGC_ID;
343 }
344 
346  return id.fields() > 4 && id[0] == m_MUON_ID && id[4] == m_STGC_ID;
347 }
348 
350  return id.fields() > 4 && id[0] == m_MUON_ID && id[4] == m_MM_ID;
351 }
352 
353 // Short print out of any identifier:
354 void AtlasDetectorID::show(const Identifier id, const IdContext *context, char sep) const {
355  ATH_MSG_INFO(show_to_string(id, context, sep));
356 }
357 
358 // or provide the printout in string form
359 std::string
360 AtlasDetectorID::show_to_string(const Identifier id, const IdContext *context, char sep) const {
361  // Do a generic printout of identifier
362 
363  std::string result("Unable to decode id");
364  unsigned int max_index = (context) ? context->end_index() : 999;
365 
367  return result;
368 
369  // Find the dictionary to use:
370  IdDictDictionary *dict{nullptr};
371  ExpandedIdentifier expId{};
372  ExpandedIdentifier prefix{}; // default is null prefix
373  Identifier compact = id;
374 
375  if (is_indet(id)) {
376  dict = m_indet_dict;
377  } else if (is_lar(id)) {
378  dict = m_lar_dict;
379  } else if (is_tile(id)) {
380  dict = m_tile_dict;
381  } else if (is_muon(id)) {
382  dict = m_muon_dict;
383  } else if (is_lvl1_trig_towers(id) || is_lvl1_online(id) ||
384  is_lar_dm(id) || is_tile_dm(id)) {
385  dict = m_calo_dict;
386  } else if (is_forward(id)) {
387  dict = m_fwd_dict;
388  }
389 
390  if (!dict) {
391  ATH_MSG_WARNING(__func__<<" No detector type associated to id "<<id);
392  return result;
393  }
394  if (dict->unpack(compact, prefix, max_index, expId)) {
395  return result;
396  }
397 
398  bool first = true;
399  result = "";
400  if ('.' == sep)
401  result = "[";
402  for (unsigned int i = 0; i < expId.fields(); ++i) {
403  if (first)
404  first = false;
405  else
406  result += sep;
407  result += std::format("{}", expId[i]);
408  }
409  if ('.' == sep)
410  result += "]";
411  return result;
412 }
413 
414 void AtlasDetectorID::print(Identifier id, const IdContext *context) const {
415  ATH_MSG_INFO(print_to_string(id, context));
416 }
417 
419  const IdContext *context) const {
420  // Print out for any Atlas identifier
421  std::string result;
423 
424  // Do a generic printout of identifier from dictionary
425  unsigned int max_index = (context) ? context->end_index() : 999;
426 
427  // Find the dictionary to use:
428  IdDictDictionary *dict{nullptr};
429  ExpandedIdentifier expId;
430  ExpandedIdentifier prefix; // default is null prefix
431  Identifier compact = id;
432 
433  if (is_indet(id)) {
434  dict = m_indet_dict;
435  } else if (is_lar(id)) {
436  dict = m_lar_dict;
437  } else if (is_tile(id)) {
438  dict = m_tile_dict;
439  } else if (is_muon(id)) {
440  dict = m_muon_dict;
441  } else if (is_lvl1_trig_towers(id) || is_lvl1_online(id) ||
442  is_lar_dm(id) || is_tile_dm(id)) {
443  dict = m_calo_dict;
444  } else if (is_forward(id)) {
445  dict = m_fwd_dict;
446  }
447 
448  if (!dict) {
449  ATH_MSG_WARNING(__func__<<":"<<__LINE__<<" No dictionary could be associated to "<<id);
450  return result;
451  }
452  if (dict->unpack(compact, prefix, max_index," ", result)) {
453  return result;
454  }
455  }
456  return result;
457 }
458 const std::vector<std::string> & AtlasDetectorID::dict_names() const {
459  return m_dict_names;
460 }
461 const std::vector<std::string>& AtlasDetectorID::file_names() const {
462  return m_file_names;
463 }
464 const std::vector<std::string> & AtlasDetectorID::dict_tags() const {
465  return m_dict_tags;
466 }
468  return m_do_checks;
469 }
470 void AtlasDetectorID::set_do_checks(bool do_checks) {
472 }
473 
475  return m_do_neighbours;
476 }
477 
478 void AtlasDetectorID::set_do_neighbours(bool do_neighbours) {
480 }
481 
483  m_msgSvc = msgSvc;
484 }
485 
487  m_quiet = quiet;
488 }
489 
490 void AtlasDetectorID::setDictVersion(const IdDictMgr &dict_mgr, const std::string &name) {
491  const IdDictDictionary *dict = dict_mgr.find_dictionary(name);
492  m_dict_version = dict->m_version;
493 }
494 
495 std::string AtlasDetectorID::to_range(const ExpandedIdentifier &id) const {
496 
497  // Build a string from the contents of an identifier
498  int fields = id.fields();
499  std::string result("");
500  for (int i = 0; i < fields; ++i) {
501  if (i > 0) {
502  result += '/'; // add '/' only if NOT last one
503  }
504  result += std::format("{}", id[i]);
505  }
506  return result;
507 }
508 
510 
511  // Set do_checks flag
512  if (dict_mgr.do_checks())
513  m_do_checks = true;
514  // Set do_neighbours flag
515  if (!dict_mgr.do_neighbours())
516  m_do_neighbours = false;
517 
518 
519  IdDictField *field{nullptr};
520 
521  // Find out from the dictionary the detector and subdetector
522  // levels and id values
523  m_DET_INDEX = 999;
524  m_SUBDET_INDEX = 999;
525  m_MUON_SUBDET_INDEX = 999;
526  m_INDET_ID = -1;
527  m_LAR_ID = -1;
528  m_TILE_ID = -1;
529  m_MUON_ID = -1;
530  m_PIXEL_ID = -1;
531  m_SCT_ID = -1;
532  m_TRT_ID = -1;
533  m_HGTD_ID = -1;
534  m_FWD_ID = -1;
535  m_ALFA_ID = -1;
536  m_BCM_ID = -1;
537  m_LUCID_ID = -1;
538  m_ZDC_ID = -1;
539  m_LAR_EM_ID = -1;
540  m_LAR_HEC_ID = -1;
541  m_LAR_FCAL_ID = -1;
543  m_MDT_ID = -1;
544  m_CSC_ID = -1;
545  m_RPC_ID = -1;
546  m_TGC_ID = -1;
547  m_STGC_ID = -1;
548  m_MM_ID = -1;
549 
550  // Save generic dict for top levels
551  IdDictDictionary *top_dict {nullptr};
552 
553  auto assignSystemId = [this, &field](const std::string& systemName,
554  int& idToAssign,
555  bool mandatory = true) ->bool {
556  IdDictLabel *label = field->find_label(systemName);
557  if (label && label->m_valued){
558  idToAssign = label->m_value;
559  ATH_MSG_VERBOSE("Assign system "<<systemName<<" to "<<idToAssign<<".");
560  return true;
561  } else if (label) {
562  ATH_MSG_ERROR("initLevelsFromDict - label "<<systemName<<" does NOT have a value ");
563  return false;
564  }
565  if (mandatory) {
566  ATH_MSG_ERROR("initLevelsFromDict - unable to find '"<<systemName<<"' label");
567  return false;
568  }
569  ATH_MSG_DEBUG("initLevelsFromDict - unable to find '"<<systemName<<"' label");
570  return true;
571  };
572  // Get det ids
573 
574  // Initialize ids for InDet subdet
575  m_indet_dict = dict_mgr.find_dictionary("InnerDetector");
576  if (!m_indet_dict) {
577  ATH_MSG_WARNING("initLevelsFromDict - cannot access InnerDetector dictionary");
578  } else {
579  // Found InDet dict
580  top_dict = m_indet_dict; // save as top_dict
581  // Check if this is High Luminosity LHC layout
582  // should just use std::string::contains once that is available... (C++23)
583  std::string versionString = m_indet_dict->m_version;
584  m_isHighLuminosityLHC = (versionString.find("ITk") != std::string::npos || versionString.find("P2-RUN4") != std::string::npos);
585 
586  // Get InDet subdets
587  field = m_indet_dict->find_field("part");
588  if (!field) {
589  ATH_MSG_ERROR("initLevelsFromDict - unable to find 'part' field for InnerDetector dictionary");
590  return 1;
591  }
592 
593  if (!assignSystemId("Pixel", m_PIXEL_ID)) {
594  return 1;
595  }
596  if (!assignSystemId("SCT", m_SCT_ID)) {
597  return 1;
598  }
599  if (!assignSystemId("TRT", m_TRT_ID, !m_isHighLuminosityLHC)) {
600  return 1;
601  }
602  if (m_isHighLuminosityLHC) {
603  if (!assignSystemId("LuminosityDetectors", m_LUMI_ID, versionString.find("PLR") != std::string::npos ||
604  versionString.find("P2-RUN4") != std::string::npos)) {
605  return 1;
606  }
607  if (!assignSystemId("HGTD", m_HGTD_ID)){
608  return 1;
609  }
610  }
611  }
612  // Initialize ids for Forward dets
613  m_fwd_dict = dict_mgr.find_dictionary("ForwardDetectors");
614  if (!m_fwd_dict) {
615  ATH_MSG_WARNING("initLevelsFromDict - cannot access ForwardDetectors dictionary");
616  } else {
617 
618  // Found ForwardDetectors dict
619 
620  if (!top_dict){
621  top_dict = m_fwd_dict; // save as top_dict
622  }
623  // Get Forward subdets
624 
625  field = m_fwd_dict->find_field("part");
626  if (!field) {
627  ATH_MSG_ERROR("initLevelsFromDict - unable to find 'part' field for ForwardDetectors dictionary");
628  return 1;
629  }
630  if (!assignSystemId("ALFA", m_ALFA_ID)) {
631  return 1;
632  }
633  if (!assignSystemId("BCM", m_BCM_ID)) {
634  return 1;
635  }
636  if (!assignSystemId("LUCID", m_LUCID_ID)) {
637  return 1;
638  }
639  if (!assignSystemId("ZDC", m_ZDC_ID)) {
640  return 1;
641  }
642  }
643 
644  // Initialize ids for LAr detectors
645  m_lar_dict = dict_mgr.find_dictionary("LArCalorimeter");
646  if (!m_lar_dict) {
647  ATH_MSG_WARNING("initLevelsFromDict - cannot access LArCalorimeter dictionary");
648  } else {
649  // Found LAr dict
650 
651  if (!top_dict) {
652  top_dict = m_lar_dict; // save as top_dict
653  }
654  field = m_lar_dict->find_field("part");
655  if (!field) {
656  ATH_MSG_ERROR("initLevelsFromDict - unable to find 'part' field for LArCalorimeter dictionary");
657  return 1;
658  }
659  if (!assignSystemId("LArEM", m_LAR_EM_ID)) {
660  return 1;
661  }
662  if (!assignSystemId("LArHEC", m_LAR_HEC_ID)) {
663  return 1;
664  }
665  if (!assignSystemId("LArFCAL", m_LAR_FCAL_ID)) {
666  return 1;
667  }
668  field = m_lar_dict->find_field("module");
669  if (field) {
670  m_LAR_FCAL_MODULE_INDEX = field->m_index;
671  } else {
672  ATH_MSG_DEBUG("initLevelsFromDict - unable to find 'module' field for miniFCAL");
673  }
674  }
675 
676  // Initialize ids for Tile calo
677  m_tile_dict = dict_mgr.find_dictionary("TileCalorimeter");
678  if (!m_tile_dict) {
679  ATH_MSG_WARNING("initLevelsFromDict - cannot access TileCalorimeter dictionary");
680  } else {
681  // File Tile
682  if (!top_dict)
683  top_dict = m_tile_dict; // save as top_dict
684  }
685 
686  // Initialize ids for Muon detectors
687  m_muon_dict = dict_mgr.find_dictionary("MuonSpectrometer");
688  if (!m_muon_dict) {
689  ATH_MSG_WARNING("initLevelsFromDict - cannot access MuonSpectrometer dictionary");
690  } else {
691  // Found muon dict
692  if (!top_dict){
693  top_dict = m_muon_dict; // save as top_dict
694  }
695  /*
696  During initialisation from the dictionary we parse the
697  information which muon stationName belongs to which muon
698  subsystem. This information is not entirely encoded in the
699  identifiers however it is frequently tested during
700  reconstruction. In order to speed up these checks this info
701  is now stored locally into m_muon_tech_bits.
702  P.Fleischmann 04.04.2013
703  */
704  if (m_muon_tech_bits.empty()) {
705  // we only need to load this once
706  field = m_muon_dict->find_field("stationName");
707  if (!field) {
708  ATH_MSG_ERROR("initLevelsFromDict - unable to find 'stationName' field for MuonSpectrometer dictionary");
709  return 1;
710  }
711 
712  size_type nStationNames = field->get_label_number();
713  std::string stationNameString{};
714  const std::vector<IdDictLabel *>& stationNameLabels = field->m_labels;
715 
716  // first check for the maximum value assigned to any stationName
717  int stationNameIndex{};
718  int maxStationNameIndex{-1};
719  for (size_type i = 0; i < nStationNames; ++i) {
720  // in case no individual values are given,
721  // the order inside the dictionary is used
722  stationNameIndex = stationNameLabels[i]->m_valued ? stationNameLabels[i]->m_value : i;
723 
724  maxStationNameIndex = std::max(maxStationNameIndex, stationNameIndex);
725  }
726 
727  // the vector may contain gaps (value=0) in case of jumps
728  // in the values
729  m_muon_tech_bits.resize(maxStationNameIndex + 1);
730  const std::vector<IdDictRegion *>& muonRegions = m_muon_dict->m_all_regions;
731 
732  // loop over all stationNames and search for associations
733  // to technology
734  for (size_type i = 0; i < nStationNames; ++i) {
735  stationNameString = stationNameLabels[i]->m_name;
736  // in case no individual values are given,
737  // the order inside the dictionary is used
738  stationNameIndex = stationNameLabels[i]->m_valued ? stationNameLabels[i]->m_value : i;
739  // next loop over all regions to look for
740  // stationName <-> technology associations
741  bool found{false}, stationNameFound{false}, technologyFound{false};
742  std::string techLabel{};
743  for (size_type j = 0; j < muonRegions.size(); ++j) {
744  IdDictRegion *region = muonRegions[j];
745  const std::vector<IdDictRegionEntry *>& entries = region->m_entries;
746  // loop over all entries of a region to look for
747  // stationName and technology information
748  stationNameFound = technologyFound = false;
749  for (size_type k = 0; k < entries.size(); ++k) {
750  IdDictRange *range = dynamic_cast<IdDictRange *>(entries[k]);
751  if (!range) {
752  continue;
753  }
754 
755  if (range->m_field_name == "stationName") {
756 
757  if (range->m_label == stationNameString) {
758  // we found a region containing the current stationName
759  stationNameFound = true;
760  continue;
761  } else {
762  // we found a region containing a different stationName,
763  // let's skip
764  break;
765  }
766  } else if (range->m_field_name == "technology") {
767  technologyFound = true;
768  techLabel = range->m_label;
769  }
770 
771  if (!stationNameFound || !technologyFound) {
772  continue;
773  }
774 
775  // we found a stationName <-> technology association
776  if (techLabel == "MDT") {
777  m_muon_tech_bits[stationNameIndex] = AtlasDetDescr::fAtlasMDT;
778  } else if (techLabel == "RPC") {
779  m_muon_tech_bits[stationNameIndex] = AtlasDetDescr::fAtlasRPC;
780  } else if (techLabel == "CSC") {
781  m_muon_tech_bits[stationNameIndex] = AtlasDetDescr::fAtlasCSC;
782  } else if (techLabel == "TGC"){
783  m_muon_tech_bits[stationNameIndex] = AtlasDetDescr::fAtlasTGC;
784  } else if (techLabel == "MM") {
785  m_muon_tech_bits[stationNameIndex] = AtlasDetDescr::fAtlasMM;
786  } else if (techLabel == "STGC") {
787  m_muon_tech_bits[stationNameIndex] = AtlasDetDescr::fAtlasSTGC;
788  } else {
789  m_muon_tech_bits[stationNameIndex] = AtlasDetDescr::fUndefined;
790  }
791  found = true;
792  break;
793  } // end of loop overregion entries
794 
795  if (found) {
796  // no need to continue to look for this stationName,
797  // since each stationName must be uniquely associated
798  // to a technology, except for MDT/PRC
799  break;
800  }
801 
802  } // end of loop over regions
803 
804  } // end of loop over stationNames
805  }
806  // end of filling stationName <-> technology associations
807 
808  field = m_muon_dict->find_field("technology");
809  if (field) {
810  m_MUON_SUBDET_INDEX = field->m_index;
811  }
812  else {
813  ATH_MSG_ERROR("initLevelsFromDict - unable to find 'technology' field for MuonSpectrometer dictionary");
814  return 1;
815  }
816 
817  if (!assignSystemId("MDT", m_MDT_ID)) {
818  return 1;
819  }
820  if (!assignSystemId("RPC", m_RPC_ID)) {
821  return 1;
822  }
823  if (!assignSystemId("TGC", m_TGC_ID)) {
824  return 1;
825  }
826  if (!assignSystemId("STGC", m_STGC_ID, false)) {
827  return 1;
828  }
829  if (!assignSystemId("MM", m_MM_ID, false)) {
830  return 1;
831  }
832  if (!assignSystemId("CSC", m_CSC_ID, false)) {
833  return 1;
834  }
835  }
836 
837  // Initialize id for Calo and fields for lvl1 and dead material
838  m_calo_dict = dict_mgr.find_dictionary("Calorimeter");
839  if (!m_calo_dict) {
840  ATH_MSG_WARNING("initLevelsFromDict - Warning cannot access Calorimeter dictionary");
841  } else {
842  // Found calo dict
843  if (!top_dict) {
844  top_dict = m_calo_dict; // save as top_dict
845  }
846  // Set lvl1 field for is_lvl1_trig_towers
847  int value{0};
849  // negative half
850  if (m_calo_dict->get_label_value("DetZside", "negative_lvl1_side", value)) {
851  ATH_MSG_ERROR("initLevelsFromDict - Could not get value for label 'negative_lvl1_side' of field 'DetZside' in dictionary " << m_calo_dict->m_name);
852  return 1;
853  }
855  // positive half
856  if (m_calo_dict->get_label_value("DetZside", "positive_lvl1_side", value)) {
857  ATH_MSG_ERROR("initLevelsFromDict - Could not get value for label 'positive_lvl1_side' of field 'DetZside' in dictionary " << m_calo_dict->m_name);
858  return 1;
859  }
861  // Set lar dead material field for is_lar_dm
863  // negative half
864  if (m_calo_dict->get_label_value("DetZside", "negative_DMLar_side", value)) {
865  ATH_MSG_ERROR("initLevelsFromDict - Could not get value for label 'negative_DMLar_side' of field 'DetZside' in dictionary " << m_calo_dict->m_name);
866  return 1;
867  }
869  // positive half
870  if (m_calo_dict->get_label_value("DetZside", "positive_DMLar_side", value)) {
871  ATH_MSG_ERROR("initLevelsFromDict - Could not get value for label 'positive_DMLar_side' of field 'DetZside' in dictionary " << m_calo_dict->m_name);
872  return 1;
873  }
875 
876  // Set tile dead material field for is_tile_dm
878  // negative half
879  if (m_calo_dict->get_label_value("DetZside", "negative_DMTile_side", value)) {
880  ATH_MSG_ERROR("initLevelsFromDict - Could not get value for label 'negative_DMTile_side' of field 'DetZside' in dictionary " << m_calo_dict->m_name);
881  return 1;
882  }
884  // positive half
885  if (m_calo_dict->get_label_value("DetZside", "positive_DMTile_side", value)) {
886  ATH_MSG_ERROR("initLevelsFromDict - Could not get value for label 'positive_DMTile_side' of field 'DetZside' in dictionary " << m_calo_dict->m_name);
887  return 1;
888  }
890 
891  // Set lvl1 field for is_lvl1_online
893  if (m_calo_dict->get_label_value("DetZside", "no_side", value)) {
894  ATH_MSG_DEBUG("initLevelsFromDict - Could not get value for label 'no_side' of field 'DetZside' in dictionary " << m_calo_dict->m_name);
895  } else {
897  }
898  }
899 
900  // set det/subdet indices
901  if (top_dict){
902 
903  field = top_dict->find_field("subdet");
904  if (field) {
905  m_DET_INDEX = field->m_index;
906  } else {
907  ATH_MSG_ERROR("initLevelsFromDict - - unable to find 'subdet' field from dict "
908  << top_dict->m_name);
909  return 1;
910  }
911 
912  if (!assignSystemId("InnerDetector", m_INDET_ID)) {
913  return 1;
914  }
915  if (!assignSystemId("ForwardDetectors", m_FWD_ID)) {
916  return 1;
917  }
918  if (!assignSystemId("LArCalorimeter", m_LAR_ID)) {
919  return 1;
920  }
921  if (!assignSystemId("TileCalorimeter", m_TILE_ID)) {
922  return 1;
923  }
924 
925  if (!assignSystemId("MuonSpectrometer", m_MUON_ID)) {
926  return 1;
927  }
928  if (!assignSystemId("Calorimeter", m_CALO_ID)) {
929  return 1;
930  }
931  // Get name of next level
932  std::string name{};
933  if (top_dict->m_name == "InnerDetector") {
934  name = "part";
935  } else if (top_dict->m_name == "Calorimeter") {
936  name = "DetZside";
937  } else if (top_dict->m_name == "LArCalorimeter") {
938  name = "part";
939  } else if (top_dict->m_name == "MuonSpectrometer") {
940  name = "stationName";
941  } else if (top_dict->m_name == "TileCalorimeter") {
942  name = "section";
943  } else if (top_dict->m_name == "ForwardDetectors") {
944  name = "part";
945  }
946  // While we're here, save the index to the sub-detector level
947  // ("part" for InDet)
948  field = top_dict->find_field(name);
949  if (field) {
950  m_SUBDET_INDEX = field->m_index;
951  }
952  else {
953  ATH_MSG_ERROR("initLevelsFromDict - unable to find field " << name << " from dict "<< top_dict->m_name);
954  return 1;
955  }
956  } else {
957  ATH_MSG_ERROR("initLevelsFromDict - no top dictionary defined");
958  return 1;
959  }
960 
961  // Set the field implementations
962 
963  const IdDictRegion *region = nullptr;
964  size_type region_index = m_helper->pixel_region_index();
965  if (m_indet_dict && AtlasDetectorIDHelper::UNDEFINED != region_index) {
966 
967  region = m_indet_dict->m_regions[region_index];
968 
969  // Detector
971 
972  // Add on extra values to assure that one has a value per
973  // bit. This is needed to avoid an overflow decoding error
974  // when a pixel channel id is decoded
975  if (not m_det_impl.ored_field().isEnumerated()) {
976  ATH_MSG_ERROR("initLevelsFromDict - ERROR det implementation is not enumerated: "
978  return 1;
979  }
980 
981  size_type bits = m_det_impl.bits();
982  size_type nvalues = static_cast<size_type>(1) << bits;
984  size_type max = det.get_maximum();
985  for (size_type i = det.get_values().size(); i < nvalues; ++i) {
986  ++max;
987  det.add_value(max);
988  }
989  // Replace ored field with modified one
991  ATH_MSG_VERBOSE("set extra bits "<< m_det_impl.show_to_string());
992 
993  // InDet part
995  }
996 
997  // Calo side: LVL1, LAr & Tile DeadMat
998  region_index = m_helper->lvl1_region_index();
999  if (m_calo_dict && AtlasDetectorIDHelper::UNDEFINED != region_index) {
1000  region = m_calo_dict->m_regions[region_index];
1002  }
1003 
1004  // LAr part
1005  region_index = m_helper->lar_em_region_index();
1006  if (m_lar_dict && AtlasDetectorIDHelper::UNDEFINED != region_index) {
1007  region = m_lar_dict->m_regions[region_index];
1009  }
1010 
1011  // LAr part
1012  region_index = m_helper->lar_fcal_region_index();
1013  if (m_lar_dict && AtlasDetectorIDHelper::UNDEFINED != region_index &&
1014  m_LAR_FCAL_MODULE_INDEX != 999) {
1015  region = m_lar_dict->m_regions[region_index];
1017  }
1018 
1019  // Muon station name
1020  region_index = m_helper->mdt_region_index();
1021  if (m_muon_dict && AtlasDetectorIDHelper::UNDEFINED != region_index) {
1022  region = m_muon_dict->m_regions[region_index];
1024  // Muon MDT
1026  // Muon RPC
1027  region_index = m_helper->rpc_region_index();
1028  if (AtlasDetectorIDHelper::UNDEFINED != region_index) {
1029  region = m_muon_dict->m_regions[region_index];
1031  }
1032  }
1033  return 0;
1034 }
AtlasDetectorID::is_pixel
bool is_pixel(Identifier id) const
Definition: AtlasDetectorID.h:767
IdDictDictionary::dict_tag
const std::string & dict_tag(void) const
Access to the dictionary tag.
Definition: IdDictDictionary.h:262
AtlasDetectorID::m_muon_dict
IdDictDictionary * m_muon_dict
Definition: AtlasDetectorID.h:446
AtlasDetectorID::indet_field_value
int indet_field_value() const
Provide efficient access to individual field values, for subclass idhelpers.
Definition: AtlasDetectorID.h:618
AtlasDetectorID::is_forward
bool is_forward(Identifier id) const
Definition: AtlasDetectorID.h:942
AtlasDetectorID::is_rpc
bool is_rpc(Identifier id) const
Definition: AtlasDetectorID.h:882
AtlasDetectorID::m_muon_tech_bits
std::vector< unsigned int > m_muon_tech_bits
Definition: AtlasDetectorID.h:461
AtlasDetectorID::m_LUMI_ID
int m_LUMI_ID
Definition: AtlasDetectorID.h:418
AtlasDetectorID::initialize_from_dictionary
virtual int initialize_from_dictionary(const IdDictMgr &dict_mgr) override
Initialization from the identifier dictionary.
Definition: AtlasDetectorID.cxx:250
AtlasDetectorIDHelper::lar_fcal_region_index
size_type lar_fcal_region_index() const
Definition: AtlasDetectorIDHelper.h:47
AtlasDetectorID::lumi
Identifier lumi(void) const
Definition: AtlasDetectorID.cxx:117
AtlasDetectorID::tile_dm
Identifier tile_dm(void) const
Definition: AtlasDetectorID.cxx:149
get_generator_info.result
result
Definition: get_generator_info.py:21
AtlasDetectorID::m_indet_part_impl
IdDictFieldImplementation m_indet_part_impl
Definition: AtlasDetectorID.h:451
AtlasDetectorID::m_helper
AtlasDetectorIDHelper * m_helper
Definition: AtlasDetectorID.h:449
vtune_athena.format
format
Definition: vtune_athena.py:14
AtlasDetectorID::setMessageSvc
virtual void setMessageSvc(IMessageSvc *msgSvc) override
Definition: AtlasDetectorID.cxx:482
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
AtlasDetectorID::is_csc
bool is_csc(Identifier id) const
Definition: AtlasDetectorID.h:898
AtlasDetectorID::is_lar_fcal
bool is_lar_fcal(Identifier id) const
Definition: AtlasDetectorID.h:846
AtlasDetectorID::mm
Identifier mm(void) const
Definition: AtlasDetectorID.cxx:47
IdDictFieldImplementation::show_to_string
std::string show_to_string(void) const
Definition: IdDictFieldImplementation.cxx:38
AtlasDetectorID::is_lar
bool is_lar(Identifier id) const
Definition: AtlasDetectorID.h:696
AtlasDetDescr::fUndefined
@ fUndefined
Definition: AtlasDetTechnology.h:30
AtlasDetectorID::muon_field_value
int muon_field_value() const
Definition: AtlasDetectorID.h:627
TRTCalib_Extractor.det
det
Definition: TRTCalib_Extractor.py:36
AtlasDetectorID::is_sct
bool is_sct(Identifier id) const
Definition: AtlasDetectorID.h:777
AtlasDetectorID::m_TRT_ID
int m_TRT_ID
Definition: AtlasDetectorID.h:416
quiet
bool quiet
Definition: TrigGlobEffCorrValidation.cxx:190
AtlasDetectorID::lar_fcal
Identifier lar_fcal(void) const
Definition: AtlasDetectorID.cxx:165
AtlasDetectorID::get_id
virtual int get_id(const IdentifierHash &hash_id, Identifier &id, const IdContext *context=0) const override
Create compact id from hash id (return == 0 for OK)
Definition: AtlasDetectorID.cxx:184
AtlasDetectorIDHelper::lvl1_region_index
size_type lvl1_region_index() const
Definition: AtlasDetectorIDHelper.h:50
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
AtlasDetectorID::m_HGTD_ID
int m_HGTD_ID
Definition: AtlasDetectorID.h:417
IdContext::end_index
size_type end_index() const
Definition: IdContext.h:46
AtlasDetectorID::calo_field_value
int calo_field_value() const
Definition: AtlasDetectorID.h:630
AtlasDetectorID::stgc
Identifier stgc(void) const
Definition: AtlasDetectorID.cxx:44
AtlasDetectorID::lar_dm
Identifier lar_dm(void) const
Definition: AtlasDetectorID.cxx:141
AtlasDetectorID::is_mm
bool is_mm(Identifier id) const
Definition: AtlasDetectorID.h:920
AtlasDetectorID::mdt
Identifier mdt(void) const
Definition: AtlasDetectorID.cxx:32
AtlasDetectorID::set_do_checks
virtual void set_do_checks(bool do_checks) override
Definition: AtlasDetectorID.cxx:470
IdentifierField::clear
void clear()
Set methods.
Definition: IdentifierField.cxx:224
ExpandedIdentifier
Definition: DetectorDescription/Identifier/Identifier/ExpandedIdentifier.h:102
IdDictFieldImplementation::pack
void pack(int value, Identifier &id) const
Definition: IdDictFieldImplementation.h:173
AtlasDetectorID::m_tile_dict
IdDictDictionary * m_tile_dict
Definition: AtlasDetectorID.h:445
AtlasDetectorIDHelper::pixel_region_index
size_type pixel_region_index() const
Definition: AtlasDetectorIDHelper.h:32
athena.value
value
Definition: athena.py:124
AtlasDetectorID::m_msgSvc
IMessageSvc * m_msgSvc
pointer to the message service
Definition: AtlasDetectorID.h:375
AtlasDetectorID::m_dict_version
std::string m_dict_version
Definition: AtlasDetectorID.h:404
AtlasDetectorID::lar_em
Identifier lar_em(void) const
Definition: AtlasDetectorID.cxx:125
AtlasDetectorID::m_do_checks
bool m_do_checks
Flag for subclasses to know whether or not to perform checks.
Definition: AtlasDetectorID.h:369
AtlasDetectorID::is_trt
bool is_trt(Identifier id) const
Definition: AtlasDetectorID.h:789
ReadOfcFromCool.field
field
Definition: ReadOfcFromCool.py:48
AtlasDetectorID::m_MUON_SUBDET_INDEX
size_type m_MUON_SUBDET_INDEX
Definition: AtlasDetectorID.h:408
AtlasDetectorID::tgc
Identifier tgc(void) const
Definition: AtlasDetectorID.cxx:41
AtlasDetectorID::m_LAR_FCAL_MODULE_INDEX
int m_LAR_FCAL_MODULE_INDEX
Definition: AtlasDetectorID.h:423
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
AtlasDetectorID::indet
Identifier indet(void) const
Detector systems:
Definition: AtlasDetectorID.cxx:50
AtlasDetectorID::m_ZDC_ID
int m_ZDC_ID
Definition: AtlasDetectorID.h:434
AtlasDetectorID::m_STGC_ID
int m_STGC_ID
Definition: AtlasDetectorID.h:428
AtlasDetectorID::lar_field_value
int lar_field_value() const
Definition: AtlasDetectorID.h:621
AtlasDetectorID::do_neighbours
virtual bool do_neighbours(void) const override
Neighbour initialization is performed by default One can switch or query this mode for any idHelper w...
Definition: AtlasDetectorID.cxx:474
AtlasDetectorID::detsystem_context
IdContext detsystem_context(void) const
IdContext (indicates id length) for detector systems.
Definition: AtlasDetectorID.cxx:173
AtlasDetectorIDHelper::UNDEFINED
@ UNDEFINED
Definition: AtlasDetectorIDHelper.h:20
IdDictDictionary::find_field
IdDictField * find_field(const std::string &name) const
Definition: IdDictDictionary.cxx:36
AtlasDetectorID::lar_hec
Identifier lar_hec(void) const
Definition: AtlasDetectorID.cxx:157
AtlasDetectorIDHelper::mdt_region_index
size_type mdt_region_index() const
Definition: AtlasDetectorIDHelper.h:59
AtlasDetectorID::is_lvl1_trig_towers
bool is_lvl1_trig_towers(Identifier id) const
Definition: AtlasDetectorID.h:720
AtlasDetectorID::get_hash
virtual int get_hash(const Identifier &id, IdentifierHash &hash_id, const IdContext *context=0) const override
Create hash id from compact id (return == 0 for OK)
Definition: AtlasDetectorID.cxx:190
IdDictRegion
Definition: IdDictRegion.h:20
IdDictDictionary::m_version
std::string m_version
Definition: IdDictDictionary.h:217
AtlasDetectorID::dictionaryVersion
virtual std::string dictionaryVersion(void) const override
Definition: AtlasDetectorID.cxx:276
AtlasDetectorID::m_LAR_ID
int m_LAR_ID
Definition: AtlasDetectorID.h:410
AtlasDetectorID::m_do_neighbours
bool m_do_neighbours
Flag for subclasses to know whether or not to perform neighbour initialization.
Definition: AtlasDetectorID.h:372
IdDictDefs.h
AtlasDetectorID::set_quiet
void set_quiet(bool quiet)
Set flag for suppressing informational output.
Definition: AtlasDetectorID.cxx:486
AtlasDetectorID::m_INDET_ID
int m_INDET_ID
Definition: AtlasDetectorID.h:409
AtlasDetectorID::size_type
Identifier::size_type size_type
Definition: AtlasDetectorID.h:391
AtlasDetectorID::m_LUMI_PLR_ID
int m_LUMI_PLR_ID
Definition: AtlasDetectorID.h:419
AtlasDetectorID.h
This class provides an interface to generate or decode an identifier for the upper levels of the dete...
IdDictMgr
Definition: IdDictMgr.h:14
AtlasDetectorID::m_tile_dm_field
Range::field m_tile_dm_field
Definition: AtlasDetectorID.h:441
AtlasDetectorID::hgtd
Identifier hgtd(void) const
Definition: AtlasDetectorID.cxx:109
AtlasDetectorID::lar
Identifier lar(void) const
Definition: AtlasDetectorID.cxx:57
IdDictMgr::find_dictionary
IdDictDictionary * find_dictionary(const std::string &name) const
Access dictionary by name.
Definition: IdDictMgr.cxx:115
AtlasDetectorID::dict_tags
const std::vector< std::string > & dict_tags(void) const
Version tags for subdet dictionaries.
Definition: AtlasDetectorID.cxx:464
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
AtlasDetectorID::m_TILE_ID
int m_TILE_ID
Definition: AtlasDetectorID.h:411
AtlasDetectorID::set_do_neighbours
virtual void set_do_neighbours(bool do_neighbours) override
Definition: AtlasDetectorID.cxx:478
IdDictFieldImplementation::set_ored_field
void set_ored_field(const Range::field &ored_field)
Definition: IdDictFieldImplementation.h:259
StdJOSetup.msgSvc
msgSvc
Provide convenience handles for various services.
Definition: StdJOSetup.py:36
AtlasDetectorID::m_group
std::string m_group
Group name.
Definition: AtlasDetectorID.h:365
AtlasDetectorID::m_calo_dict
IdDictDictionary * m_calo_dict
Definition: AtlasDetectorID.h:447
lumiFormat.i
int i
Definition: lumiFormat.py:85
AtlasDetectorID::file_names
const std::vector< std::string > & file_names(void) const
File names for subdet dictionaries.
Definition: AtlasDetectorID.cxx:461
AtlasDetectorID::is_plr
bool is_plr(Identifier id) const
AtlasDetectorID::m_is_initialized_from_dict
bool m_is_initialized_from_dict
Definition: AtlasDetectorID.h:405
AtlasDetectorID::m_lar_part_impl
IdDictFieldImplementation m_lar_part_impl
Definition: AtlasDetectorID.h:453
AtlasDetectorID::csc
Identifier csc(void) const
Definition: AtlasDetectorID.cxx:35
AtlasDetectorID::is_tgc
bool is_tgc(Identifier id) const
Definition: AtlasDetectorID.h:909
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
AtlasDetectorID::m_muon_mdt_impl
IdDictFieldImplementation m_muon_mdt_impl
Definition: AtlasDetectorID.h:456
AtlasDetectorID::m_lar_fcal_module_impl
IdDictFieldImplementation m_lar_fcal_module_impl
Definition: AtlasDetectorID.h:454
add-xsec-uncert-quadrature-N.label
label
Definition: add-xsec-uncert-quadrature-N.py:104
AtlasDetectorID::is_tile_dm
bool is_tile_dm(Identifier id) const
Definition: AtlasDetectorID.h:755
AtlasDetectorID::m_LAR_EM_ID
int m_LAR_EM_ID
Definition: AtlasDetectorID.h:420
IdDictDictionary::m_regions
std::vector< IdDictRegion * > m_regions
Definition: IdDictDictionary.h:235
AtlasDetectorID::m_isHighLuminosityLHC
bool m_isHighLuminosityLHC
Definition: AtlasDetectorID.h:436
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:194
checkCorrelInHIST.prefix
dictionary prefix
Definition: checkCorrelInHIST.py:391
AthMessaging
Class to provide easy MsgStream access and capabilities.
Definition: AthMessaging.h:55
AtlasDetectorID::calo
Identifier calo(void) const
Definition: AtlasDetectorID.cxx:78
AtlasDetectorID::m_fwd_dict
IdDictDictionary * m_fwd_dict
Definition: AtlasDetectorID.h:448
IdDictLabel
Definition: IdDictLabel.h:10
AtlasDetectorID::is_tile
bool is_tile(Identifier id) const
Definition: AtlasDetectorID.h:702
AtlasDetectorID::is_lar_hec
bool is_lar_hec(Identifier id) const
Definition: AtlasDetectorID.h:836
AtlasDetectorID::group
const std::string & group() const
Group name for this helper.
Definition: AtlasDetectorID.cxx:27
AtlasDetectorID::tile
Identifier tile(void) const
Definition: AtlasDetectorID.cxx:64
AtlasDetectorID::m_TGC_ID
int m_TGC_ID
Definition: AtlasDetectorID.h:427
AtlasDetectorIDHelper::initialize_from_dictionary
int initialize_from_dictionary(const IdDictMgr &dict_mgr)
Initialization from the identifier dictionary.
Definition: AtlasDetectorIDHelper.cxx:15
AtlasDetectorID::m_CSC_ID
int m_CSC_ID
Definition: AtlasDetectorID.h:425
IdDictFieldImplementation::ored_field
const Range::field & ored_field() const
Definition: IdDictFieldImplementation.h:196
AtlasDetectorID::m_lvl1_onl_field
Range::field m_lvl1_onl_field
Definition: AtlasDetectorID.h:439
IdDictMgr::do_neighbours
bool do_neighbours() const
Check whether or not to init neighbours.
Definition: IdDictMgr.cxx:78
AtlasDetectorID::m_quiet
bool m_quiet
If true, suppress DEBUG/INFO messages.
Definition: AtlasDetectorID.h:378
AtlasDetectorID::m_LAR_HEC_ID
int m_LAR_HEC_ID
Definition: AtlasDetectorID.h:421
IdentifierField::isEnumerated
bool isEnumerated() const
Definition: IdentifierField.h:185
AtlasDetectorID::m_muon_rpc_impl
IdDictFieldImplementation m_muon_rpc_impl
Definition: AtlasDetectorID.h:457
AtlasDetDescr::fAtlasMM
@ fAtlasMM
Definition: AtlasDetTechnology.h:54
IdDictRegion::m_entries
std::vector< IdDictRegionEntry * > m_entries
Definition: IdDictRegion.h:41
AtlasDetectorID::m_SCT_ID
int m_SCT_ID
Definition: AtlasDetectorID.h:415
AtlasDetDescr::fAtlasSTGC
@ fAtlasSTGC
Definition: AtlasDetTechnology.h:53
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
AtlasDetectorID::m_LAR_FCAL_ID
int m_LAR_FCAL_ID
Definition: AtlasDetectorID.h:422
AtlasDetectorID::is_calo
bool is_calo(Identifier id) const
Definition: AtlasDetectorID.h:714
AtlasDetectorID::m_MM_ID
int m_MM_ID
Definition: AtlasDetectorID.h:429
IdDictDictionary::file_name
const std::string & file_name(void) const
Access to file name.
Definition: IdDictDictionary.h:255
AtlasDetectorID::m_DET_INDEX
size_type m_DET_INDEX
Definition: AtlasDetectorID.h:406
AtlasDetectorID::tile_field_value
int tile_field_value() const
Definition: AtlasDetectorID.h:624
IdDictDictionary::get_label_value
int get_label_value(const std::string &field, const std::string &label, int &value) const
Definition: IdDictDictionary.cxx:64
AtlasDetectorIDHelper.h
grepfile.sep
sep
Definition: grepfile.py:38
AtlasDetectorID::print_to_string
std::string print_to_string(Identifier id, const IdContext *context=0) const
or provide the printout in string form
Definition: AtlasDetectorID.cxx:418
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:239
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
AtlasDetectorID::is_lar_minifcal
bool is_lar_minifcal(Identifier id) const
Definition: AtlasDetectorID.h:856
AtlasDetectorID::m_indet_dict
IdDictDictionary * m_indet_dict
Definition: AtlasDetectorID.h:443
AtlasDetectorID::AtlasDetectorID
AtlasDetectorID(const std::string &name="AtlasDetectorID", const std::string &group="")
Definition: AtlasDetectorID.cxx:17
AtlasDetectorID::show
void show(Identifier id, const IdContext *context=0, char sep='.') const
Short print out of any identifier (optionally provide separation character - default is '.
Definition: AtlasDetectorID.cxx:354
AtlasDetectorID::m_calo_side_impl
IdDictFieldImplementation m_calo_side_impl
Definition: AtlasDetectorID.h:452
AtlasDetectorID::is_indet
bool is_indet(Identifier id) const
Definition: AtlasDetectorID.h:690
AtlasDetectorID::dict_names
const std::vector< std::string > & dict_names(void) const
Dictionary names.
Definition: AtlasDetectorID.cxx:458
AtlasDetectorID::m_dict_names
std::vector< std::string > m_dict_names
List of dictionary names used by this helper.
Definition: AtlasDetectorID.h:382
AtlasDetectorID::m_lar_dm_field
Range::field m_lar_dm_field
Definition: AtlasDetectorID.h:440
checkTriggerxAOD.found
found
Definition: checkTriggerxAOD.py:328
AtlasDetectorIDHelper::lar_em_region_index
size_type lar_em_region_index() const
Definition: AtlasDetectorIDHelper.h:41
AtlasDetectorID::setDictVersion
virtual void setDictVersion(const IdDictMgr &dict_mgr, const std::string &name) override
Definition: AtlasDetectorID.cxx:490
AtlasDetectorID::m_muon_station_name_impl
IdDictFieldImplementation m_muon_station_name_impl
Definition: AtlasDetectorID.h:455
AtlasDetectorID::m_MDT_ID
int m_MDT_ID
Definition: AtlasDetectorID.h:424
IdDictDictionary
Definition: IdDictDictionary.h:30
AtlasDetectorID::m_RPC_ID
int m_RPC_ID
Definition: AtlasDetectorID.h:426
AtlasDetectorID::print
void print(Identifier id, const IdContext *context=0) const
Expanded print out of any identifier.
Definition: AtlasDetectorID.cxx:414
IdDictRange
Definition: IdDictRange.h:18
AtlasDetectorID::lar_lvl1
Identifier lar_lvl1(void) const
Definition: AtlasDetectorID.cxx:133
AtlasDetectorID::trt
Identifier trt(void) const
Definition: AtlasDetectorID.cxx:101
AtlasDetDescr::fAtlasRPC
@ fAtlasRPC
Definition: AtlasDetTechnology.h:51
AtlasDetectorID::pixel
Identifier pixel(void) const
Definition: AtlasDetectorID.cxx:85
AtlasDetectorID::~AtlasDetectorID
virtual ~AtlasDetectorID()
Definition: AtlasDetectorID.cxx:23
AtlasDetectorID::is_lumi
bool is_lumi(Identifier id) const
Definition: AtlasDetectorID.h:813
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::is_lar_dm
bool is_lar_dm(Identifier id) const
LAr/Tile dead material:
Definition: AtlasDetectorID.h:743
CaloLCW_tf.group
group
Definition: CaloLCW_tf.py:28
AtlasDetectorID::is_muon
bool is_muon(Identifier id) const
Definition: AtlasDetectorID.h:708
IdDictDictionary::m_name
std::string m_name
Definition: IdDictDictionary.h:216
AtlasDetectorID::m_det_impl
IdDictFieldImplementation m_det_impl
Definition: AtlasDetectorID.h:450
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
AtlasDetectorIDHelper::rpc_region_index
size_type rpc_region_index() const
Definition: AtlasDetectorIDHelper.h:65
AtlasDetectorID::m_file_names
std::vector< std::string > m_file_names
List of dictionary file names used by this helper.
Definition: AtlasDetectorID.h:385
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
AtlasDetDescr::fAtlasCSC
@ fAtlasCSC
Definition: AtlasDetTechnology.h:50
DeMoScan.first
bool first
Definition: DeMoScan.py:534
AtlasDetectorID::muon
Identifier muon(void) const
Definition: AtlasDetectorID.cxx:71
AtlasDetDescr::fAtlasMDT
@ fAtlasMDT
Definition: AtlasDetTechnology.h:49
IdentifierField
This is the individual specification for the range of one ExpandedIdentifier IdentifierField.
Definition: IdentifierField.h:83
AtlasDetectorID::m_CALO_ID
int m_CALO_ID
Definition: AtlasDetectorID.h:413
AtlasDetectorID::m_ALFA_ID
int m_ALFA_ID
Definition: AtlasDetectorID.h:431
entries
double entries
Definition: listroot.cxx:49
AtlasDetectorID::m_MUON_ID
int m_MUON_ID
Definition: AtlasDetectorID.h:412
IdDictMgr::do_checks
bool do_checks() const
Check whether or not to do checks for ids.
Definition: IdDictMgr.cxx:65
AtlasDetectorID::m_lar_dict
IdDictDictionary * m_lar_dict
Definition: AtlasDetectorID.h:444
AtlasDetectorID::m_PIXEL_ID
int m_PIXEL_ID
Definition: AtlasDetectorID.h:414
AtlasDetectorID::is_lvl1_online
bool is_lvl1_online(Identifier id) const
Definition: AtlasDetectorID.h:731
AtlasDetectorID::is_stgc
bool is_stgc(Identifier id) const
Definition: AtlasDetectorID.h:931
AtlasDetDescr::fAtlasTGC
@ fAtlasTGC
Definition: AtlasDetTechnology.h:52
CaloCondBlobAlgs_fillNoiseFromASCII.fields
fields
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:105
IdDictField
Definition: IdDictField.h:15
AtlasDetectorID::sct
Identifier sct(void) const
Definition: AtlasDetectorID.cxx:93
IdentifierHash
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
Definition: IdentifierHash.h:25
AtlasDetectorID::m_BCM_ID
int m_BCM_ID
Definition: AtlasDetectorID.h:432
AtlasDetectorID::initLevelsFromDict
int initLevelsFromDict(const IdDictMgr &dict_mgr)
Definition: AtlasDetectorID.cxx:509
AtlasDetectorID::subdet_context
IdContext subdet_context(void) const
IdContext (indicates id length) for sub-detector.
Definition: AtlasDetectorID.cxx:179
AtlasDetectorID::do_checks
virtual bool do_checks(void) const override
Checks are performed by default in debug compilation and NOT in optimized compilation.
Definition: AtlasDetectorID.cxx:467
IdContext
This class saves the "context" of an expanded identifier (ExpandedIdentifier) for compact or hash ver...
Definition: IdContext.h:26
AtlasDetectorID::m_dict_tags
std::vector< std::string > m_dict_tags
List of dictionary versions used by this helper.
Definition: AtlasDetectorID.h:388
AtlasDetectorID::m_SUBDET_INDEX
size_type m_SUBDET_INDEX
Definition: AtlasDetectorID.h:407
IdDictRegion::m_implementation
std::vector< IdDictFieldImplementation > m_implementation
Definition: IdDictRegion.h:42
AtlasDetectorID::is_lar_em
bool is_lar_em(Identifier id) const
Definition: AtlasDetectorID.h:825
IdentifierField::add_value
void add_value(element_type value)
Definition: IdentifierField.cxx:250
AtlasDetectorID::m_FWD_ID
int m_FWD_ID
Definition: AtlasDetectorID.h:430
AtlasDetectorID::is_hgtd
bool is_hgtd(Identifier id) const
Definition: AtlasDetectorID.h:801
AtlasDetectorID::is_mdt
bool is_mdt(Identifier id) const
Definition: AtlasDetectorID.h:866
AtlasDetectorID::m_lvl1_field
Range::field m_lvl1_field
Definition: AtlasDetectorID.h:438
fitman.k
k
Definition: fitman.py:528
AtlasDetectorID::rpc
Identifier rpc(void) const
Definition: AtlasDetectorID.cxx:38
AtlasDetectorID::to_range
std::string to_range(const ExpandedIdentifier &id) const
Definition: AtlasDetectorID.cxx:495
IdDictDictionary::m_all_regions
std::vector< IdDictRegion * > m_all_regions
Definition: IdDictDictionary.h:236
AtlasDetectorID::m_LUCID_ID
int m_LUCID_ID
Definition: AtlasDetectorID.h:433
IdDictFieldImplementation::bits
size_type bits() const
Definition: IdDictFieldImplementation.h:202
Identifier
Definition: IdentifierFieldParser.cxx:14