CMS 3D CMS Logo

ME0NumberingScheme.cc
Go to the documentation of this file.
7 
8 //#define EDM_ML_DEBUG
9 
10 ME0NumberingScheme::ME0NumberingScheme(const MuonGeometryConstants& muonConstants) { initMe(muonConstants); }
11 
13  int theLevelPart = muonConstants.getValue("level");
14  theRegionLevel = muonConstants.getValue("m0_region") / theLevelPart;
15  theLayerLevel = muonConstants.getValue("m0_layer") / theLevelPart;
16  theSectorLevel = muonConstants.getValue("m0_sector") / theLevelPart;
17  theRollLevel = muonConstants.getValue("m0_roll") / theLevelPart;
18  theNEtaPart = muonConstants.getValue("m0_nroll");
19 
20  // Debug using EDM_ML_DEBUG
21 #ifdef EDM_ML_DEBUG
22  edm::LogVerbatim("MuonGeom") << "Initialize ME0NumberingScheme"
23  << "\ntheRegionLevel " << theRegionLevel << "\ntheLayerLevel " << theLayerLevel
24  << "\ntheSectorLevel " << theSectorLevel << "\ntheRollLevel " << theRollLevel
25  << "\ntheNEtaPart " << theNEtaPart;
26 #endif
27  // -----------------------
28 }
29 
31  // Debug using EDM_ML_DEBUG
32 #ifdef EDM_ML_DEBUG
33  edm::LogVerbatim("MuonGeom") << "ME0NumberingScheme::baseNumberToUnitNumber BEGIN ";
34  edm::LogVerbatim("MuonGeom") << "ME0Numbering " << num.getLevels();
35  for (int level = 1; level <= num.getLevels(); level++) {
36  edm::LogVerbatim("MuonGeom") << "level " << level << " " << num.getSuperNo(level) << " " << num.getBaseNo(level);
37  }
38 #endif
39  // -----------------------
40 
41 #ifdef EDM_ML_DEBUG
42  if (num.getLevels() != theRollLevel)
43  edm::LogVerbatim("MuonGeom") << "MuonME0NS::BNToUN BaseNumber has " << num.getLevels()
44  << " levels which is less than " << theRollLevel;
45 #endif
46 
49 
50  //decode significant ME0 levels
51 
52  if (num.getBaseNo(theRegionLevel) == 0)
53  region = 1;
54  else
55  region = -1;
56  if (num.getLevels() >= theLayerLevel)
57  layer = num.getBaseNo(theLayerLevel) + 1;
58  if (num.getLevels() >= theSectorLevel)
59  chamber = num.getBaseNo(theSectorLevel) + 1;
60  if (num.getLevels() >= theRollLevel)
61  roll = num.getBaseNo(theRollLevel) + 1;
62 
63  // collect all info
64 
65  // Debug using EDM_ML_DEBUG
66 #ifdef EDM_ML_DEBUG
67  edm::LogVerbatim("MuonGeom") << "ME0NumberingScheme: Region " << region << " Layer " << layer << " Chamber "
68  << chamber << " Roll " << roll;
69 #endif
70  // -----------------------
71 
72  // Build the actual numbering
73  ME0DetId id(region, layer, chamber, roll);
74 
75  // Debug using EDM_ML_DEBUG
76 #ifdef EDM_ML_DEBUG
77  edm::LogVerbatim("MuonGeom") << " DetId " << id;
78 #endif
79  // ---------------------
80 
81  return id.rawId();
82 }
int getValue(const std::string &name) const
Log< level::Info, true > LogVerbatim
static constexpr int minRegionId
Definition: ME0DetId.h:63
ME0NumberingScheme(const MuonGeometryConstants &muonConstants)
int baseNumberToUnitNumber(const MuonBaseNumber &) const override
constexpr std::array< uint8_t, layerIndexSize > layer
static constexpr int minRollId
Definition: ME0DetId.h:72
static constexpr int minChamberId
Definition: ME0DetId.h:66
static constexpr int minLayerId
Definition: ME0DetId.h:69
void initMe(const MuonGeometryConstants &muonConstants)