CMS 3D CMS Logo

DTNumberingScheme.cc
Go to the documentation of this file.
1 
16 
17 //#define EDM_ML_DEBUG
18 
19 DTNumberingScheme::DTNumberingScheme(const MuonGeometryConstants& muonConstants) { initMe(muonConstants); }
20 
22  int theLevelPart = muonConstants.getValue("level");
23  theRegionLevel = muonConstants.getValue("mb_region") / theLevelPart;
24  theWheelLevel = muonConstants.getValue("mb_wheel") / theLevelPart;
25  theStationLevel = muonConstants.getValue("mb_station") / theLevelPart;
26  theSuperLayerLevel = muonConstants.getValue("mb_superlayer") / theLevelPart;
27  theLayerLevel = muonConstants.getValue("mb_layer") / theLevelPart;
28  theWireLevel = muonConstants.getValue("mb_wire") / theLevelPart;
29 #ifdef EDM_ML_DEBUG
30  edm::LogVerbatim("DTNumberingScheme") << "Initialize DTNumberingScheme"
31  << "\ntheRegionLevel " << theRegionLevel << "\ntheWheelLevel " << theWheelLevel
32  << "\ntheStationLevel " << theStationLevel << "\ntheSuperLayerLevel "
33  << theSuperLayerLevel << "\ntheLayerLevel " << theLayerLevel
34  << "\ntheWireLevel " << theWireLevel;
35 #endif
36 }
37 
39 #ifdef EDM_ML_DEBUG
40  edm::LogVerbatim("DTNumberingScheme") << "DTNumbering " << num.getLevels();
41  for (int level = 1; level <= num.getLevels(); level++) {
42  edm::LogVerbatim("DTNumberingScheme") << level << " " << num.getSuperNo(level) << " " << num.getBaseNo(level);
43  }
44 #endif
45  if (num.getLevels() < theStationLevel) { // it was if (num.getLevels() != theWireLevel) {
46  edm::LogWarning("DTNumberingScheme") << "DTNumberingScheme::BNToUN: BaseNumber has " << num.getLevels()
47  << " levels, need " << theStationLevel; //it was theWireLevel;
48  return 0;
49  }
50 
51  // // Meaningful ranges are enforced by DTWireId, (which
52  // // however allows for 0 in wire, layer, superlayer!!!)
53  //
54  // if ((wire_id < 1) || (wire_id > 100)) {
55  // std::cout << "DTNumberingScheme: ";
56  // std::cout << "wire id out of range: ";
57  // std::cout << wire_id <<std::endl;
58  // }
59 
60  // if ((layer_id < 1) || (layer_id > 4)) {
61  // std::cout << "DTNumberingScheme: ";
62  // std::cout << "layer id out of range: ";
63  // std::cout << layer_id <<std::endl;
64  // }
65 
66  // if ((superlayer_id < 1) || (superlayer_id > 3)) {
67  // std::cout << "DTNumberingScheme: ";
68  // std::cout << "super-layer id out of range: ";
69  // std::cout << superlayer_id <<std::endl;
70  // }
71 
72  return getDetId(num);
73 }
74 
76  int wire_id = 0;
77  int layer_id = 0;
78  int superlayer_id = 0;
79  int sector_id = 0;
80  int station_id = 0;
81  int wheel_id = 0;
82 
83  //decode significant barrel levels
84  decode(num, wire_id, layer_id, superlayer_id, sector_id, station_id, wheel_id);
85 
86  // These ranges are enforced by DTWireId
87  // if ((sector_id < 1) || (sector_id > 14)) {
88  // std::cout << "DTNumberingScheme: ";
89  // std::cout << "sector id out of range: ";
90  // std::cout << sector_id <<std::endl;
91  // }
92 
93  // if ((station_id < 1) || (station_id > 4)) {
94  // std::cout << "DTNumberingScheme: ";
95  // std::cout << "station id out of range: ";
96  // std::cout << station_id <<std::endl;
97  // }
98 
99  // if ((wheel_id < -2) || (wheel_id > 2)) {
100  // std::cout << "DTNumberingScheme: ";
101  // std::cout << "wheel id out of range: ";
102  // std::cout << wheel_id <<std::endl;
103  // }
104 
105  DTWireId id(wheel_id, station_id, sector_id, superlayer_id, layer_id, wire_id);
106 
107 #ifdef EDM_ML_DEBUG
108  edm::LogVerbatim("DTNumberingScheme") << "DTNumberingScheme: " << id;
109 #endif
110 
111  return id.rawId();
112 }
113 
115  int& wire_id,
116  int& layer_id,
117  int& superlayer_id,
118  int& sector_id,
119  int& station_id,
120  int& wheel_id) const {
121  for (int level = 1; level <= num.getLevels(); level++) {
122  //decode
123  if (level == theWheelLevel) {
124  const int copyno = num.getBaseNo(level);
125  wheel_id = copyno - 2;
126 
127  } else if (level == theStationLevel) {
128  const int station_tag = num.getSuperNo(level);
129  const int copyno = num.getBaseNo(level);
130  station_id = station_tag;
131  sector_id = copyno + 1;
132 
133  } else if (level == theSuperLayerLevel) {
134  const int copyno = num.getBaseNo(level);
135  superlayer_id = copyno + 1;
136 
137  } else if (level == theLayerLevel) {
138  const int copyno = num.getBaseNo(level);
139  layer_id = copyno + 1;
140 
141  } else if (level == theWireLevel) {
142  const int copyno = num.getBaseNo(level);
143  wire_id = copyno + 1;
144  }
145  }
146 }
personalPlayback.level
level
Definition: personalPlayback.py:22
MuonGeometryConstants
Definition: MuonGeometryConstants.h:20
DTNumberingScheme::theLayerLevel
int theLayerLevel
Definition: DTNumberingScheme.h:44
MessageLogger.h
DTNumberingScheme::initMe
void initMe(const MuonGeometryConstants &muonConstants)
Definition: DTNumberingScheme.cc:21
MuonGeometryConstants.h
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
DTNumberingScheme::theWireLevel
int theWireLevel
Definition: DTNumberingScheme.h:45
DTNumberingScheme::theStationLevel
int theStationLevel
Definition: DTNumberingScheme.h:42
DTNumberingScheme::getDetId
int getDetId(const MuonBaseNumber &num) const
Definition: DTNumberingScheme.cc:75
DTWireId
Definition: DTWireId.h:12
DTNumberingScheme::theRegionLevel
int theRegionLevel
Definition: DTNumberingScheme.h:40
DTNumberingScheme::baseNumberToUnitNumber
int baseNumberToUnitNumber(const MuonBaseNumber &num) const override
Definition: DTNumberingScheme.cc:38
MuonBaseNumber.h
MuonGeometryConstants::getValue
int getValue(const std::string &name) const
Definition: MuonGeometryConstants.cc:8
DTNumberingScheme.h
EgammaValidation_cff.num
num
Definition: EgammaValidation_cff.py:34
MuonBaseNumber
Definition: MuonBaseNumber.h:21
DTWireId.h
edm::LogVerbatim
Log< level::Info, true > LogVerbatim
Definition: MessageLogger.h:128
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:31
DTNumberingScheme::theSuperLayerLevel
int theSuperLayerLevel
Definition: DTNumberingScheme.h:43
DTNumberingScheme::decode
void decode(const MuonBaseNumber &num, int &wire_id, int &layer_id, int &superlayer_id, int &sector_id, int &station_id, int &wheel_id) const
Definition: DTNumberingScheme.cc:114
DTNumberingScheme::DTNumberingScheme
DTNumberingScheme(const MuonGeometryConstants &muonConstants)
Definition: DTNumberingScheme.cc:19
DTNumberingScheme::theWheelLevel
int theWheelLevel
Definition: DTNumberingScheme.h:41