ATLAS Offline Software
SCT_ID.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3  */
4 
5 #ifndef INDETIDENTIFIER_SCT_ID_H
6 #define INDETIDENTIFIER_SCT_ID_H
7 
21 #include "Identifier/Identifier.h"
23 #include "Identifier/MultiRange.h"
24 #include "Identifier/IdHelper.h"
26 #include "AthenaKernel/CLASS_DEF.h"
27 
28 #include <string>
29 #include <cassert>
30 #include <algorithm>
31 #include <array>
32 #include <functional>
33 
34 
35 class IdDictDictionary;
36 
37 
67 class SCT_ID final: public AtlasDetectorID
68 {
69 public:
71 
73  typedef std::vector<Identifier>::const_iterator const_id_iterator;
76 
78 
79  SCT_ID(void);
80  virtual ~SCT_ID(void) = default;
82 
86  }
88 
91  int layer_disk,
92  int phi_module,
93  int eta_module) const;
94 
96  int layer_disk,
97  int phi_module,
98  int eta_module,
99  bool checks) const;
100 
102  Identifier module_id(const Identifier& wafer_id) const;
103 
106  int layer_disk,
107  int phi_module,
108  int eta_module,
109  int side) const;
110 
112  int layer_disk,
113  int phi_module,
114  int eta_module,
115  int side,
116  bool checks) const;
117 
119  Identifier wafer_id(const Identifier& strip_id) const;
120 
122  Identifier wafer_id(const ExpandedIdentifier & expId) const;
123 
126 
129  int layer_disk,
130  int phi_module,
131  int eta_module,
132  int side,
133  int strip) const;
135  int layer_disk,
136  int phi_module,
137  int eta_module,
138  int side,
139  int strip,
140  bool check) const;
141 
143  int layer_disk,
144  int phi_module,
145  int eta_module,
146  int side,
147  int row,
148  int strip) const;
150  int layer_disk,
151  int phi_module,
152  int eta_module,
153  int side,
154  int row,
155  int strip,
156  bool checks) const;
157 
158 
159 
161  int strip) const;
162 
164  int row, int strip) const;
165 
166 
168 
169 
171 
172  size_type wafer_hash_max(void) const;
173  size_type strip_hash_max(void) const;
175 
177 
178  const_id_iterator wafer_begin(void) const;
180  const_id_iterator wafer_end(void) const;
186 
187 
189 
192 
194  bool is_barrel(const Identifier& id) const;
195 
197  int barrel_ec(const Identifier& id) const;
198  int layer_disk(const Identifier& id) const;
199  int phi_module(const Identifier& id) const;
200  int eta_module(const Identifier& id) const;
201  int side(const Identifier& id) const;
202  int row(const Identifier& id) const;
203  int strip(const Identifier& id) const;
204 
206  int layer_disk_max(const Identifier& id) const;
207  int phi_module_max(const Identifier& id) const;
208  int eta_module_max(const Identifier& id) const;
209  int eta_module_min(const Identifier& id) const;
210  int strip_max(const Identifier& id) const;
212 
214 
215  int get_prev_in_phi(const IdentifierHash& id, IdentifierHash& prev) const;
218  int get_next_in_phi(const IdentifierHash& id, IdentifierHash& next) const;
220  int get_prev_in_eta(const IdentifierHash& id, IdentifierHash& prev) const;
222  int get_next_in_eta(const IdentifierHash& id, IdentifierHash& next) const;
224  int get_other_side(const IdentifierHash& id, IdentifierHash& other) const;
225 
237 
238  // To check for when phi wrap around may be needed, use
239  bool is_phi_module_max(const Identifier& id) const;
241  bool is_eta_module_min(const Identifier& id) const;
243  bool is_eta_module_max(const Identifier& id) const;
244 
245  //all neighbours: opposite and then eta direction first
246  std::array<IdentifierHash, 5>
247  neighbours_by_eta(const IdentifierHash & idh) const;
248 
249  //all neighbours: opposite and then phi direction first
250  std::array<IdentifierHash, 5>
251  neighbours_by_phi(const IdentifierHash & idh) const;
252 
256  const std::array<std::function< IdentifierHash(const IdentifierHash &)>, 5 >&
257  neighbour_calls_by_eta() const;
259 
261 
262  IdContext wafer_context(void) const;
263  IdContext strip_context(void) const;
265 
267 
268  virtual int get_id(const IdentifierHash& hash_id,
270  Identifier& id,
271  const IdContext* context = 0) const override final;
272 
274  virtual int get_hash(const Identifier& id,
275  IdentifierHash& hash_id,
276  const IdContext* context = 0) const override final;
278 
280  int base_bit(void) const;
281 
285 
288  Identifier::diff_type offset) const;
289 
291 
295 
298  ExpandedIdentifier& exp_id,
299  const IdContext* context = 0) const;
300 
302  virtual int initialize_from_dictionary(const IdDictMgr& dict_mgr) override final;
303 
305 private:
306  typedef std::vector<Identifier> id_vec;
307  typedef id_vec::const_iterator id_vec_it;
309  typedef hash_vec::const_iterator hash_vec_it;
312 
313  //this is a bit clumsy, but it reproduces the original messaging behaviour with/without Gaudi
314  //it *SHOULD NOT* be used for messaging in event loop code, as it is expensive!
315  void
316  localMessage(const std::string & msgTxt, const std::string &func, const MSG::Level & lvl) const;
317 
318  void wafer_id_checks(int barrel_ec,
319  int layer_disk,
320  int phi_module,
321  int eta_module,
322  int side) const;
323 
324  void strip_id_checks(int barrel_ec,
325  int layer_disk,
326  int phi_module,
327  int eta_module,
328  int side,
329  int strip) const;
330 
331  void strip_id_checks(int barrel_ec,
332  int layer_disk,
333  int phi_module,
334  int eta_module,
335  int side,
336  int row,
337  int strip) const;
338 
339  int getMaxField(const Identifier & id, const ExpandedIdIndices &fieldIndx) const;
340 
341  void strip_id_checks(const ExpandedIdentifier & expId) const;
342 
343 
344  int initLevelsFromDict(void);
345 
346  int init_hashes(void);
347 
348  int init_neighbors(void);
349 
351  nextInSequence(const IdentifierHash& id, const hash_vec& vectorOfHashes) const;
352 
353  // Temporary method for adapting an identifier for the MultiRange
354  // check - MR is missing the InnerDetector level
355  Identifier idForCheck(const Identifier& id) const;
356 
358 
359  std::array<size_t, NUM_INDICES> m_indices{0,1,2,3,4,5,6,7,999};
371  bool m_hasRows;
372 
382 };
383 
384 
385 //using the macros below we can assign an identifier (and a version)
386 //This is required and checked at compile time when you try to record/retrieve
387 CLASS_DEF(SCT_ID, 2517, 1)
388 
389 //----------------------------------------------------------------------------
390 inline Identifier
391 SCT_ID::module_id(int barrel_ec,
392  int layer_disk,
393  int phi_module,
394  int eta_module,
395  bool checks) const {
396  // Build identifier
398 
399  // Pack fields independently
400  m_indet_impl.pack(indet_field_value(), result);
401  m_sct_impl.pack(sct_field_value(), result);
402  m_bec_impl.pack(barrel_ec, result);
403  m_lay_disk_impl.pack(layer_disk, result);
404  m_phi_mod_impl.pack(phi_module, result);
405  m_eta_mod_impl.pack(eta_module, result);
406 
407  // Do checks
408  if (checks) {
409  wafer_id_checks(barrel_ec, layer_disk, phi_module, eta_module, 0);
410  }
411 
412  return result;
413 }
414 
415 inline Identifier
416 SCT_ID::module_id(int barrel_ec,
417  int layer_disk,
418  int phi_module,
419  int eta_module) const {
421 }
422 
423 //----------------------------------------------------------------------------
424 inline Identifier
425 SCT_ID::module_id(const Identifier& wafer_id) const {
427 
428  // Reset the side and strip fields
432  return(result);
433 }
434 
435 //----------------------------------------------------------------------------
436 inline Identifier
437 SCT_ID::wafer_id(int barrel_ec,
438  int layer_disk,
439  int phi_module,
440  int eta_module,
441  int side,
442  bool checks) const {
443  // Build identifier
445 
446  // Pack fields independently
454 
455  // Do checks
456  if (checks) {
458  }
459 
460  return result;
461 }
462 
463 inline Identifier
464 SCT_ID::wafer_id(int barrel_ec,
465  int layer_disk,
466  int phi_module,
467  int eta_module,
468  int side) const {
470  do_checks());
471 }
472 
473 //----------------------------------------------------------------------------
474 inline Identifier
475 SCT_ID::wafer_id(const Identifier& strip_id) const {
477 
478  // reset the strip field
481  return(result);
482 }
483 
484 //----------------------------------------------------------------------------
485 inline Identifier
486 SCT_ID::wafer_id(const IdentifierHash& wafer_hash) const {
487  return(m_wafer_vec[wafer_hash]);
488 }
489 
490 //----------------------------------------------------------------------------
491 inline IdentifierHash
492 SCT_ID::wafer_hash(const Identifier& wafer_id) const {
493  id_vec_it it = std::lower_bound(m_wafer_vec.begin(),
494  m_wafer_vec.end(),
495  wafer_id);
496 
497  // Require that wafer_id matches the one in vector
498  if (it != m_wafer_vec.end() && wafer_id == (*it)) {
499  return(it - m_wafer_vec.begin());
500  }
502  return(result); // return hash in invalid state
503 }
504 
505 //----------------------------------------------------------------------------
506 inline Identifier
507 SCT_ID::strip_id(int barrel_ec,
508  int layer_disk,
509  int phi_module,
510  int eta_module,
511  int side,
512  int strip,
513  bool checks) const {
514  // Build identifier
516 
517  // Pack fields independently
526 
527  // Do checks
528  if (checks) {
530  }
531  return result;
532 }
533 
534 inline Identifier
535 SCT_ID::strip_id(int barrel_ec,
536  int layer_disk,
537  int phi_module,
538  int eta_module,
539  int side,
540  int strip) const {
542  do_checks());
543 }
544 
545 //----------------------------------------------------------------------------
546 
547 inline Identifier
548 SCT_ID::strip_id(int barrel_ec,
549  int layer_disk,
550  int phi_module,
551  int eta_module,
552  int side,
553  int row,
554  int strip,
555  bool checks) const {
556  // Build identifier
558 
559 
560  // Pack fields independently
568  if (m_hasRows) {
570  }
572 
573 
574  // Do checks
575  if (checks) {
578  }
579 
580  return result;
581 }
582 
583 inline Identifier
584 SCT_ID::strip_id(int barrel_ec,
585  int layer_disk,
586  int phi_module,
587  int eta_module,
588  int side,
589  int row,
590  int strip) const {
592  side, row, strip, do_checks());
593 }
594 
595 //----------------------------------------------------------------------------
596 inline Identifier
598  // Build identifier
600 
601  // Pack fields independently
609  if (m_hasRows) {
611  }
613 
614  // Do checks
615  if (m_do_checks) {
616  strip_id_checks(id);
617  }
618  return result;
619 }
620 
621 //----------------------------------------------------------------------------
622 inline Identifier
623 SCT_ID::strip_id(const Identifier& wafer_id, int strip) const {
624  // Build identifier
626 
627  // Reset strip and then add in value
630 
631  if (m_do_checks) {
636  side(result),
637  strip);
638  }
639  return result;
640 }
641 
642 //----------------------------------------------------------------------------
643 inline Identifier
644 SCT_ID::strip_id(const Identifier& wafer_id, int row, int strip) const {
645  // Build identifier
647 
648  // Reset strip and then add in value
649  if (m_hasRows) {
652  }
655 
656  if (m_do_checks) {
657  if (m_hasRows) {
662  side(result),
663  row,
664  strip);
665  } else {
670  side(result),
671  strip);
672  }
673  }
674  return result;
675 }
676 
677 //----------------------------------------------------------------------------
680  Identifier::diff_type tval = static_cast<Identifier::diff_type>(target.get_compact() >> base_bit());
681  Identifier::diff_type bval = static_cast<Identifier::diff_type>(base.get_compact() >> base_bit());
682  return(tval - bval);
683 }
684 
685 //----------------------------------------------------------------------------
686 inline Identifier
689  Identifier::value_type bval = base.get_compact() >> base_bit();
690  return Identifier((bval + offset) << base_bit());
691 }
692 
693 //----------------------------------------------------------------------------
694 inline int
695 SCT_ID::base_bit(void) const {
696  int base = static_cast<int>(m_strip_impl.shift()); // lowest field base
697 
698  return (base > 32) ? 32 : base;
699  // max base is 32 so we can still read old strip id's and differences
700  // from non-SLHC releases.
701 }
702 
703 //----------------------------------------------------------------------------
704 inline IdContext
707 
708  return(IdContext(id, 0, m_indices[SIDE]));
709 }
710 
711 //----------------------------------------------------------------------------
712 inline IdContext
715 
716  return(IdContext(id, 0, m_indices[STRIP]));
717 }
718 
719 //----------------------------------------------------------------------------
720 inline bool
721 SCT_ID::is_barrel(const Identifier& id) const {
722  // match bec field
723  return(m_barrel_field.match(m_bec_impl.unpack(id)));
724 }
725 
726 //----------------------------------------------------------------------------
727 inline int
728 SCT_ID::barrel_ec(const Identifier& id) const {
729  return(m_bec_impl.unpack(id));
730 }
731 
732 //----------------------------------------------------------------------------
733 inline int
734 SCT_ID::layer_disk(const Identifier& id) const {
735  return(m_lay_disk_impl.unpack(id));
736 }
737 
738 //----------------------------------------------------------------------------
739 inline int
740 SCT_ID::phi_module(const Identifier& id) const {
741  return(m_phi_mod_impl.unpack(id));
742 }
743 
744 //----------------------------------------------------------------------------
745 inline int
746 SCT_ID::eta_module(const Identifier& id) const {
747  return(m_eta_mod_impl.unpack(id));
748 }
749 
750 //----------------------------------------------------------------------------
751 inline int
752 SCT_ID::side(const Identifier& id) const {
753  return(m_side_impl.unpack(id));
754 }
755 
756 //----------------------------------------------------------------------------
757 inline int
758 SCT_ID::row(const Identifier& id) const {
759  return(m_row_impl.unpack(id));
760 }
761 
762 //----------------------------------------------------------------------------
763 inline int
764 SCT_ID::strip(const Identifier& id) const {
765  return(m_strip_impl.unpack(id));
766 }
767 
768 inline IdentifierHash
769 SCT_ID::nextInSequence(const IdentifierHash& id, const hash_vec& vectorOfHashes) const {
770  unsigned short index = id;
771  if (index < vectorOfHashes.size()) {
772  return vectorOfHashes[index];
773  }
774  return IdentifierHash{};
775 }
776 
777 #endif // INDETIDENTIFIER_SCT_ID_H
SCT_ID::m_full_wafer_range
MultiRange m_full_wafer_range
Definition: SCT_ID.h:361
base
std::string base
Definition: hcg.cxx:78
query_example.row
row
Definition: query_example.py:24
AtlasDetectorID::indet_field_value
int indet_field_value() const
Provide efficient access to individual field values, for subclass idhelpers.
Definition: AtlasDetectorID.h:611
SCT_ID::strip_context
IdContext strip_context(void) const
Definition: SCT_ID.h:713
SCT_ID::get_next_in_phi
int get_next_in_phi(const IdentifierHash &id, IdentifierHash &next) const
Next wafer hash in phi (return == 0 for neighbor found)
Definition: SCT_ID.cxx:413
SCT_ID::SCT_ID
SCT_ID(void)
Definition: SCT_ID.cxx:40
SCT_ID::base_bit
int base_bit(void) const
Return the lowest bit position used in the channel id.
Definition: SCT_ID.h:695
get_generator_info.result
result
Definition: get_generator_info.py:21
SCT_ID::m_eta_mod_impl
IdDictFieldImplementation m_eta_mod_impl
Definition: SCT_ID.h:378
SCT_ID::m_prev_phi_wafer_vec
hash_vec m_prev_phi_wafer_vec
Definition: SCT_ID.h:367
SCT_ID::hash_vec_it
hash_vec::const_iterator hash_vec_it
Definition: SCT_ID.h:309
SCT_ID::strip_begin
const_expanded_id_iterator strip_begin(void) const
For strip ids, only expanded id iterators are available.
Definition: SCT_ID.cxx:662
SCT_ID::SIDE
@ SIDE
Definition: SCT_ID.h:310
SCT_ID::get_prev_in_phi
int get_prev_in_phi(const IdentifierHash &id, IdentifierHash &prev) const
Previous wafer hash in phi (return == 0 for neighbor found)
Definition: SCT_ID.cxx:403
index
Definition: index.py:1
SCT_ID::init_hashes
int init_hashes(void)
Definition: SCT_ID.cxx:318
SCT_ID::strip_end
const_expanded_id_iterator strip_end(void) const
Definition: SCT_ID.cxx:666
SCT_ID::LAYER_DISK
@ LAYER_DISK
Definition: SCT_ID.h:310
SCT_ID::m_side_impl
IdDictFieldImplementation m_side_impl
Definition: SCT_ID.h:379
SCT_ID::m_wafer_hash_max
size_type m_wafer_hash_max
Definition: SCT_ID.h:363
skel.it
it
Definition: skel.GENtoEVGEN.py:396
SCT_ID::idForCheck
Identifier idForCheck(const Identifier &id) const
SCT_ID::m_sct_region_index
size_type m_sct_region_index
Definition: SCT_ID.h:357
SCT_ID::wafer_begin
const_id_iterator wafer_begin(void) const
Iterators over full set of ids. Wafer iterator is sorted.
Definition: SCT_ID.cxx:654
AtlasDetectorID::HelperType::SCT
@ SCT
SCT_ID::ETA
@ ETA
Definition: SCT_ID.h:310
SCT_ID::eta_module_max
int eta_module_max(const Identifier &id) const
Definition: SCT_ID.cxx:191
SCT_ID::STRIP
@ STRIP
Definition: SCT_ID.h:310
ExpandedIdentifier
Definition: DetectorDescription/Identifier/Identifier/ExpandedIdentifier.h:102
IdDictFieldImplementation::pack
void pack(int value, Identifier &id) const
Definition: IdDictFieldImplementation.h:173
SCT_ID::INDET
@ INDET
Definition: SCT_ID.h:310
SCT_ID::m_prev_eta_wafer_vec
hash_vec m_prev_eta_wafer_vec
Definition: SCT_ID.h:369
SCT_ID::const_id_iterator
std::vector< Identifier >::const_iterator const_id_iterator
Definition: SCT_ID.h:73
IdHelper.h
AtlasDetectorID::m_do_checks
bool m_do_checks
Flag for subclasses to know whether or not to perform checks.
Definition: AtlasDetectorID.h:362
SCT_ID::barrel_ec
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
Definition: SCT_ID.h:728
SCT_ID::phi_module
int phi_module(const Identifier &id) const
Definition: SCT_ID.h:740
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:560
SCT_ID::initialize_from_dictionary
virtual int initialize_from_dictionary(const IdDictMgr &dict_mgr) override final
Initialization from the identifier dictionary.
Definition: SCT_ID.cxx:224
SCT_ID::strip_hash_max
size_type strip_hash_max(void) const
Definition: SCT_ID.cxx:650
SCT_ID::phi_module_max
int phi_module_max(const Identifier &id) const
Definition: SCT_ID.cxx:213
Identifier::diff_type
long long diff_type
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:28
SCT_ID::m_sct_impl
IdDictFieldImplementation m_sct_impl
Definition: SCT_ID.h:374
IdDictFieldImplementation::unpack
int unpack(Identifier id) const
Identifier manipulation methods.
Definition: IdDictFieldImplementation.h:147
SCT_ID::get_expanded_id
void get_expanded_id(const Identifier &id, ExpandedIdentifier &exp_id, const IdContext *context=0) const
Create expanded id from compact id (return == 0 for OK)
Definition: SCT_ID.cxx:696
SCT_ID::id_vec_it
id_vec::const_iterator id_vec_it
Definition: SCT_ID.h:307
SCT_ID::module_id
Identifier module_id(int barrel_ec, int layer_disk, int phi_module, int eta_module) const
For a single crystal.
Definition: SCT_ID.h:416
SCT_ID::m_indet_impl
IdDictFieldImplementation m_indet_impl
Definition: SCT_ID.h:373
AtlasDetectorID::HelperType
HelperType
enum class for eventual final derived types of this class
Definition: AtlasDetectorID.h:60
SCT_ID::m_wafer_vec
id_vec m_wafer_vec
Definition: SCT_ID.h:366
SCT_ID::m_neighboursByEta
std::array< std::function< IdentifierHash(const IdentifierHash &)>, 5 > m_neighboursByEta
Definition: SCT_ID.h:311
SCT_ID::get_id
virtual int get_id(const IdentifierHash &hash_id, Identifier &id, const IdContext *context=0) const override final
Create compact id from hash id (return == 0 for OK)
Definition: SCT_ID.cxx:672
IdDictFieldImplementation::reset
void reset(Identifier &id) const
Definition: IdDictFieldImplementation.h:183
TRT::Hit::side
@ side
Definition: HitInfo.h:83
SCT_ID::m_hasRows
bool m_hasRows
Definition: SCT_ID.h:371
SCT_ID::neighbour_calls_by_eta
const std::array< std::function< IdentifierHash(const IdentifierHash &)>, 5 > & neighbour_calls_by_eta() const
return functions to give neighbours in order: opposite, eta minus, eta plus, phi minus,...
Definition: SCT_ID.cxx:397
AtlasDetectorID::size_type
Identifier::size_type size_type
Definition: AtlasDetectorID.h:384
SCT_ID::m_next_eta_wafer_vec
hash_vec m_next_eta_wafer_vec
Definition: SCT_ID.h:370
SCT_ID::m_full_strip_range
MultiRange m_full_strip_range
Definition: SCT_ID.h:362
IdentifierField::match
bool match(element_type value) const
The basic match operation.
Definition: IdentifierField.cxx:71
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
SCT_ID::m_strip_impl
IdDictFieldImplementation m_strip_impl
Definition: SCT_ID.h:381
SCT_ID::calc_offset
Identifier::diff_type calc_offset(const Identifier &base, const Identifier &target) const
Calculate a channel offset between the two identifiers.
Definition: SCT_ID.h:679
SCT_ID::m_barrel_field
Range::field m_barrel_field
Definition: SCT_ID.h:365
IdDictFieldImplementation::shift
size_type shift() const
Definition: IdDictFieldImplementation.h:226
SCT_ID::m_next_phi_wafer_vec
hash_vec m_next_phi_wafer_vec
Definition: SCT_ID.h:368
TrigConf::MSGTC::Level
Level
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:21
SCT_ID::~SCT_ID
virtual ~SCT_ID(void)=default
SCT_ID::initLevelsFromDict
int initLevelsFromDict(void)
Definition: SCT_ID.cxx:569
fillPileUpNoiseLumi.next
next
Definition: fillPileUpNoiseLumi.py:52
SCT_ID::m_row_impl
IdDictFieldImplementation m_row_impl
Definition: SCT_ID.h:380
SCT_ID::m_phi_mod_impl
IdDictFieldImplementation m_phi_mod_impl
Definition: SCT_ID.h:377
MultiRange::const_identifier_factory
Definition: MultiRange.h:52
SCT_ID::SCT
@ SCT
Definition: SCT_ID.h:310
vector
Definition: MultiHisto.h:13
SCT_ID::row
int row(const Identifier &id) const
Definition: SCT_ID.h:758
SCT_ID::get_hash
virtual int get_hash(const Identifier &id, IdentifierHash &hash_id, const IdContext *context=0) const override final
Create hash id from compact id (return == 0 for OK)
Definition: SCT_ID.cxx:717
SCT_ID::size_type
Identifier::size_type size_type
Definition: SCT_ID.h:72
SCT_ID::m_lay_disk_impl
IdDictFieldImplementation m_lay_disk_impl
Definition: SCT_ID.h:376
SCT_ID::m_bec_impl
IdDictFieldImplementation m_bec_impl
Definition: SCT_ID.h:375
SCT_ID::PHI
@ PHI
Definition: SCT_ID.h:310
SCT_ID::wafer_context
IdContext wafer_context(void) const
Definition: SCT_ID.h:705
SCT_ID::wafer_hash
IdentifierHash wafer_hash(const Identifier &wafer_id) const
wafer hash from id - optimized
Definition: SCT_ID.h:492
SCT_ID::get_other_side
int get_other_side(const IdentifierHash &id, IdentifierHash &other) const
Wafer hash on other side.
Definition: SCT_ID.cxx:443
SCT_ID::nextInSequence
IdentifierHash nextInSequence(const IdentifierHash &id, const hash_vec &vectorOfHashes) const
Definition: SCT_ID.h:769
SCT_ID::neighbours_by_phi
std::array< IdentifierHash, 5 > neighbours_by_phi(const IdentifierHash &idh) const
Definition: SCT_ID.cxx:773
AtlasDetectorID::sct_field_value
int sct_field_value() const
Definition: AtlasDetectorID.h:629
SCT_ID::ExpandedIdIndices
ExpandedIdIndices
Definition: SCT_ID.h:310
lumiFormat.array
array
Definition: lumiFormat.py:91
SCT_ID::eta_module_min
int eta_module_min(const Identifier &id) const
Definition: SCT_ID.cxx:166
SCT_ID::m_dict
const IdDictDictionary * m_dict
Definition: SCT_ID.h:360
MultiRange
A MultiRange combines several Ranges.
Definition: MultiRange.h:17
SCT_ID::neighbours_by_eta
std::array< IdentifierHash, 5 > neighbours_by_eta(const IdentifierHash &idh) const
Definition: SCT_ID.cxx:762
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:227
private
#define private
Definition: DetDescrConditionsDict_dict_fixes.cxx:13
SCT_ID::wafer_hash_max
size_type wafer_hash_max(void) const
Definition: SCT_ID.cxx:645
IdentifierHash.h
SCT_ID::localMessage
void localMessage(const std::string &msgTxt, const std::string &func, const MSG::Level &lvl) const
Definition: SCT_ID.cxx:746
SCT_ID::helper
AtlasDetectorID::HelperType helper() const override final
This is an SCT_ID helper.
Definition: SCT_ID.h:84
SCT_ID::layer_disk
int layer_disk(const Identifier &id) const
Definition: SCT_ID.h:734
SCT_ID::BARREL_EC
@ BARREL_EC
Definition: SCT_ID.h:310
SCT_ID::wafer_id_checks
void wafer_id_checks(int barrel_ec, int layer_disk, int phi_module, int eta_module, int side) const
Definition: SCT_ID.cxx:52
SCT_ID::id_vec
std::vector< Identifier > id_vec
Definition: SCT_ID.h:306
LArNewCalib_Delay_OFC_Cali.check
check
Definition: LArNewCalib_Delay_OFC_Cali.py:267
SCT_ID::layer_disk_max
int layer_disk_max(const Identifier &id) const
Max/Min values for each field (-999 == failure)
Definition: SCT_ID.cxx:161
MultiRange.h
SCT_ID::is_eta_module_min
bool is_eta_module_min(const Identifier &id) const
For the barrel.
Definition: SCT_ID.cxx:201
SCT_ID::get_prev_in_eta
int get_prev_in_eta(const IdentifierHash &id, IdentifierHash &prev) const
Previous wafer hash in eta (return == 0 for neighbor found)
Definition: SCT_ID.cxx:423
IdDictDictionary
Definition: IdDictDictionary.h:30
SCT_ID::get_next_in_eta
int get_next_in_eta(const IdentifierHash &id, IdentifierHash &next) const
Next wafer hash in eta (return == 0 for neighbor found)
Definition: SCT_ID.cxx:433
IdDictFieldImplementation.h
SCT_ID::is_eta_module_max
bool is_eta_module_max(const Identifier &id) const
For the barrel.
Definition: SCT_ID.cxx:207
DeMoScan.index
string index
Definition: DeMoScan.py:364
InDetDD::other
@ other
Definition: InDetDD_Defs.h:16
SCT_ID
Definition: SCT_ID.h:68
SCT_ID::getMaxField
int getMaxField(const Identifier &id, const ExpandedIdIndices &fieldIndx) const
Definition: SCT_ID.cxx:136
SCT_ID::strip
int strip(const Identifier &id) const
Definition: SCT_ID.h:764
SCT_ID::NUM_INDICES
@ NUM_INDICES
Definition: SCT_ID.h:310
copySelective.target
string target
Definition: copySelective.py:37
CLASS_DEF
#define CLASS_DEF(NAME, CID, VERSION)
associate a clid and a version to a type eg
Definition: Control/AthenaKernel/AthenaKernel/CLASS_DEF.h:64
SCT_ID::eta_module
int eta_module(const Identifier &id) const
Definition: SCT_ID.h:746
SCT_ID::strip_max
int strip_max(const Identifier &id) const
Definition: SCT_ID.cxx:196
IdentifierField
This is the individual specification for the range of one ExpandedIdentifier IdentifierField.
Definition: IdentifierField.h:21
convertTimingResiduals.offset
offset
Definition: convertTimingResiduals.py:71
SCT_ID::m_strip_hash_max
size_type m_strip_hash_max
Definition: SCT_ID.h:364
SCT_ID::m_indices
std::array< size_t, NUM_INDICES > m_indices
Definition: SCT_ID.h:359
Identifier::value_type
unsigned long long value_type
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:27
SCT_ID::side
int side(const Identifier &id) const
Definition: SCT_ID.h:752
SCT_ID::ROW
@ ROW
Definition: SCT_ID.h:310
SCT_ID::wafer_end
const_id_iterator wafer_end(void) const
Definition: SCT_ID.cxx:658
SCT_ID::is_phi_module_max
bool is_phi_module_max(const Identifier &id) const
Definition: SCT_ID.cxx:218
SCT_ID::init_neighbors
int init_neighbors(void)
Definition: SCT_ID.cxx:466
SCT_ID::const_expanded_id_iterator
MultiRange::const_identifier_factory const_expanded_id_iterator
Definition: SCT_ID.h:74
SIDE
SIDE
Definition: CellClusterLinkTool.h:52
Identifier::size_type
unsigned long long size_type
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:29
SCT_ID::wafer_id
Identifier wafer_id(int barrel_ec, int layer_disk, int phi_module, int eta_module, int side) const
For a single side of module.
Definition: SCT_ID.h:464
IdDictFieldImplementation
IdDictFieldImplementation is used to capture the specification of a single field of an Identifier.
Definition: IdDictFieldImplementation.h:58
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::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:728
IdContext
This class saves the "context" of an expanded identifier (ExpandedIdentifier) for compact or hash ver...
Definition: IdContext.h:26
CLASS_DEF.h
macros to associate a CLID to a type
SCT_ID::strip_id_checks
void strip_id_checks(int barrel_ec, int layer_disk, int phi_module, int eta_module, int side, int strip) const
Definition: SCT_ID.cxx:72
AtlasDetectorID
This class provides an interface to generate or decode an identifier for the upper levels of the dete...
Definition: AtlasDetectorID.h:57
SCT_ID::hash_vec
std::vector< IdentifierHash > hash_vec
Definition: SCT_ID.h:308
SCT_ID::is_barrel
bool is_barrel(const Identifier &id) const
Test for barrel - WARNING: id MUST be sct id, otherwise answer is not accurate. Use SiliconID for gen...
Definition: SCT_ID.h:721
SCT_ID::strip_id
Identifier strip_id(int barrel_ec, int layer_disk, int phi_module, int eta_module, int side, int strip) const
For an individual strip.
Definition: SCT_ID.h:535
SCT_ID::strip_id_offset
Identifier strip_id_offset(const Identifier &base, Identifier::diff_type offset) const
Create an identifier with a given base and channel offset.
Definition: SCT_ID.h:687
Identifier
Definition: IdentifierFieldParser.cxx:14