CMS 3D CMS Logo

DD4hep_DTNumberingScheme.cc
Go to the documentation of this file.
5 #include <cassert>
6 
7 using namespace cms;
8 
10  initMe(muonConstants);
11 }
12 
13 void
15  int levelPart = get("level", muonConstants);
16  assert(levelPart != 0);
17  theRegionLevel = get("mb_region", muonConstants)/levelPart;
18  theWheelLevel = get("mb_wheel", muonConstants)/levelPart;
19  theStationLevel = get("mb_station", muonConstants)/levelPart;
20  theSuperLayerLevel = get("mb_superlayer", muonConstants)/levelPart;
21  theLayerLevel = get("mb_layer", muonConstants)/levelPart;
22  theWireLevel = get("mb_wire", muonConstants)/levelPart;
23 }
24 
25 int
27 
28  int wire_id(0);
29  int layer_id(0);
30  int superlayer_id(0);
31  int sector_id(0);
32  int station_id(0);
33  int wheel_id(0);
34 
35  //decode significant barrel levels
36  decode(num,
37  wire_id,
38  layer_id,
39  superlayer_id,
40  sector_id,
41  station_id,
42  wheel_id);
43 
44  DTWireId id(wheel_id, station_id, sector_id, superlayer_id, layer_id, wire_id);
45 
46  return id.rawId();
47 }
48 
49 void
51  int& wire_id,
52  int& layer_id,
53  int& superlayer_id,
54  int& sector_id,
55  int& station_id,
56  int& wheel_id) const {
57  for(int level = 1; level <= num.getLevels(); ++level) {
58 
59  //decode
60  if(level == theWheelLevel) {
61  const int copyno = num.getBaseNo(level);
62  wheel_id = copyno-2;
63 
64  } else if (level == theStationLevel) {
65  const int station_tag = num.getSuperNo(level);
66  const int copyno = num.getBaseNo(level);
67  station_id = station_tag;
68  sector_id = copyno + 1;
69  } else if(level == theSuperLayerLevel) {
70  const int copyno = num.getBaseNo(level);
71  superlayer_id = copyno + 1;
72  } else if (level == theLayerLevel) {
73  const int copyno = num.getBaseNo(level);
74  layer_id = copyno+1;
75  } else if(level == theWireLevel) {
76  const int copyno = num.getBaseNo(level);
77  wire_id = copyno + 1;
78  }
79  }
80 }
81 
82 const int
84  const MuonConstants& muonConstants) const {
85  int result(0);
86  auto const& it = muonConstants.find(key);
87  if(it != end(muonConstants))
88  result = it->second;
89  return result;
90 }
int getBaseNo(int level) const
std::unordered_map< std::string_view, int > MuonConstants
DTNumberingScheme(const MuonConstants &)
void initMe(const MuonConstants &)
#define end
Definition: vmac.h:39
Namespace of DDCMS conversion namespace.
const int get(const char *, const MuonConstants &) const
void decode(const MuonBaseNumber &num, int &wire_id, int &layer_id, int &superlayer_id, int &sector_id, int &station_id, int &wheel_id) const
int getLevels() const
int getSuperNo(int level) const
int getDetId(const MuonBaseNumber &) const