CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes | Friends
DTNumberingScheme Class Reference

#include <DTNumberingScheme.h>

Inheritance diagram for DTNumberingScheme:
MuonNumberingScheme

Public Member Functions

int baseNumberToUnitNumber (const MuonBaseNumber &num) const override
 
 DTNumberingScheme (const MuonGeometryConstants &muonConstants)
 
int getDetId (const MuonBaseNumber &num) const
 
 ~DTNumberingScheme () override
 
- Public Member Functions inherited from MuonNumberingScheme
 MuonNumberingScheme ()
 
virtual ~MuonNumberingScheme ()
 

Private Member Functions

void decode (const MuonBaseNumber &num, int &wire_id, int &layer_id, int &superlayer_id, int &sector_id, int &station_id, int &wheel_id) const
 
void initMe (const MuonGeometryConstants &muonConstants)
 

Private Attributes

int theLayerLevel
 
int theRegionLevel
 
int theStationLevel
 
int theSuperLayerLevel
 
int theWheelLevel
 
int theWireLevel
 

Friends

class DTGeometryBuilderFromDDD
 
class DTGeometryParserFromDDD
 

Detailed Description

implementation of MuonNumberingScheme for muon barrel, converts the MuonBaseNumber to a unit id

Original

Author
Arno Straessner, CERN arno..nosp@m.stra.nosp@m.essne.nosp@m.r@ce.nosp@m.rn.ch Modified by Sunanda B. in different PRs (the last one is #30971)

Definition at line 20 of file DTNumberingScheme.h.

Constructor & Destructor Documentation

◆ DTNumberingScheme()

DTNumberingScheme::DTNumberingScheme ( const MuonGeometryConstants muonConstants)

Definition at line 19 of file DTNumberingScheme.cc.

References initMe().

19 { initMe(muonConstants); }
void initMe(const MuonGeometryConstants &muonConstants)

◆ ~DTNumberingScheme()

DTNumberingScheme::~DTNumberingScheme ( )
inlineoverride

Definition at line 23 of file DTNumberingScheme.h.

23 {}

Member Function Documentation

◆ baseNumberToUnitNumber()

int DTNumberingScheme::baseNumberToUnitNumber ( const MuonBaseNumber num) const
overridevirtual

Reimplemented from MuonNumberingScheme.

Definition at line 37 of file DTNumberingScheme.cc.

References getDetId(), personalPlayback::level, EgammaValidation_cff::num, and theStationLevel.

Referenced by DTGeometryBuilderFromDD4hep::buildChamber(), cms::DTGeometryBuilder::buildChamber(), DTGeometryBuilderFromDD4hep::buildLayer(), cms::DTGeometryBuilder::buildLayer(), DTGeometryBuilderFromDD4hep::buildSuperLayer(), cms::DTGeometryBuilder::buildSuperLayer(), DTGeometryParsFromDD::insertChamber(), DTGeometryParsFromDD::insertLayer(), and DTGeometryParsFromDD::insertSuperLayer().

37  {
38 #ifdef EDM_ML_DEBUG
39  edm::LogVerbatim("MuonGeom") << "DTNumbering " << num.getLevels();
40  for (int level = 1; level <= num.getLevels(); level++) {
41  edm::LogVerbatim("MuonGeom") << level << " " << num.getSuperNo(level) << " " << num.getBaseNo(level);
42  }
43 #endif
44  if (num.getLevels() < theStationLevel) { // it was if (num.getLevels() != theWireLevel) {
45  edm::LogWarning("MuonGeom") << "DTNumberingScheme::BNToUN: BaseNumber has " << num.getLevels() << " levels, need "
46  << theStationLevel; //it was theWireLevel;
47  return 0;
48  }
49 
50  // // Meaningful ranges are enforced by DTWireId, (which
51  // // however allows for 0 in wire, layer, superlayer!!!)
52  //
53  // if ((wire_id < 1) || (wire_id > 100)) {
54  // edm::LogVerbatim("MuonNumbering") << "DTNumberingScheme: wire id out of range: " << wire_id;
55  // }
56 
57  // if ((layer_id < 1) || (layer_id > 4)) {
58  // edm::LogVerbatim("MuonNumbering") << "DTNumberingScheme: layer id out of range: " << layer_id;
59  // }
60 
61  // if ((superlayer_id < 1) || (superlayer_id > 3)) {
62  // edm::LogVerbatim("MuonNumbering") << "DTNumberingScheme: super-layer id out of range: " << superlayer_id;
63  // }
64 
65  return getDetId(num);
66 }
Log< level::Info, true > LogVerbatim
int getDetId(const MuonBaseNumber &num) const
Log< level::Warning, false > LogWarning

◆ decode()

void DTNumberingScheme::decode ( const MuonBaseNumber num,
int &  wire_id,
int &  layer_id,
int &  superlayer_id,
int &  sector_id,
int &  station_id,
int &  wheel_id 
) const
private

Definition at line 101 of file DTNumberingScheme.cc.

References personalPlayback::level, EgammaValidation_cff::num, theLayerLevel, theStationLevel, theSuperLayerLevel, theWheelLevel, and theWireLevel.

Referenced by getDetId().

107  {
108  for (int level = 1; level <= num.getLevels(); level++) {
109  //decode
110  if (level == theWheelLevel) {
111  const int copyno = num.getBaseNo(level);
112  wheel_id = copyno - 2;
113 
114  } else if (level == theStationLevel) {
115  const int station_tag = num.getSuperNo(level);
116  const int copyno = num.getBaseNo(level);
117  station_id = station_tag;
118  sector_id = copyno + 1;
119 
120  } else if (level == theSuperLayerLevel) {
121  const int copyno = num.getBaseNo(level);
122  superlayer_id = copyno + 1;
123 
124  } else if (level == theLayerLevel) {
125  const int copyno = num.getBaseNo(level);
126  layer_id = copyno + 1;
127 
128  } else if (level == theWireLevel) {
129  const int copyno = num.getBaseNo(level);
130  wire_id = copyno + 1;
131  }
132  }
133 }

◆ getDetId()

int DTNumberingScheme::getDetId ( const MuonBaseNumber num) const

Definition at line 68 of file DTNumberingScheme.cc.

References decode(), l1ctLayer2EG_cff::id, and EgammaValidation_cff::num.

Referenced by baseNumberToUnitNumber(), DTGeometryBuilderFromDDD::buildChamber(), DTGeometryParserFromDDD::buildLayer(), DTGeometryBuilderFromDDD::buildLayer(), DTGeometryBuilderFromDDD::buildSuperLayer(), DTGeometryParsFromDD::insertChamber(), DTGeometryParsFromDD::insertLayer(), and DTGeometryParsFromDD::insertSuperLayer().

68  {
69  int wire_id = 0;
70  int layer_id = 0;
71  int superlayer_id = 0;
72  int sector_id = 0;
73  int station_id = 0;
74  int wheel_id = 0;
75 
76  //decode significant barrel levels
77  decode(num, wire_id, layer_id, superlayer_id, sector_id, station_id, wheel_id);
78 
79  // These ranges are enforced by DTWireId
80  // if ((sector_id < 1) || (sector_id > 14)) {
81  // edm::LogVerbatim("MuonNumbering") << "DTNumberingScheme: sector id out of range: " << sector_id;
82  // }
83 
84  // if ((station_id < 1) || (station_id > 4)) {
85  // edm::LogVerbatim("MuonNumbering") << "DTNumberingScheme: station id out of range: " << station_id;
86  // }
87 
88  // if ((wheel_id < -2) || (wheel_id > 2)) {
89  // edm::LogVerbatim("MuonNumbering") << "DTNumberingScheme: wheel id out of range: " << wheel_id;
90  // }
91 
92  DTWireId id(wheel_id, station_id, sector_id, superlayer_id, layer_id, wire_id);
93 
94 #ifdef EDM_ML_DEBUG
95  edm::LogVerbatim("MuonGeom") << "DTNumberingScheme: " << id;
96 #endif
97 
98  return id.rawId();
99 }
Log< level::Info, true > LogVerbatim
void decode(const MuonBaseNumber &num, int &wire_id, int &layer_id, int &superlayer_id, int &sector_id, int &station_id, int &wheel_id) const

◆ initMe()

void DTNumberingScheme::initMe ( const MuonGeometryConstants muonConstants)
private

Definition at line 21 of file DTNumberingScheme.cc.

References MuonGeometryConstants::getValue(), theLayerLevel, theRegionLevel, theStationLevel, theSuperLayerLevel, theWheelLevel, and theWireLevel.

Referenced by DTNumberingScheme().

21  {
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("MuonGeom") << "Initialize DTNumberingScheme\ntheRegionLevel " << theRegionLevel
31  << "\ntheWheelLevel " << theWheelLevel << "\ntheStationLevel " << theStationLevel
32  << "\ntheSuperLayerLevel " << theSuperLayerLevel << "\ntheLayerLevel " << theLayerLevel
33  << "\ntheWireLevel " << theWireLevel;
34 #endif
35 }
int getValue(const std::string &name) const
Log< level::Info, true > LogVerbatim

Friends And Related Function Documentation

◆ DTGeometryBuilderFromDDD

friend class DTGeometryBuilderFromDDD
friend

Same as BaseNumberToUnitNumber but w/o check: used by MuBarDetBuilder class to build the geometry from DDD

Definition at line 49 of file DTNumberingScheme.h.

◆ DTGeometryParserFromDDD

friend class DTGeometryParserFromDDD
friend

Definition at line 50 of file DTNumberingScheme.h.

Member Data Documentation

◆ theLayerLevel

int DTNumberingScheme::theLayerLevel
private

Definition at line 44 of file DTNumberingScheme.h.

Referenced by decode(), and initMe().

◆ theRegionLevel

int DTNumberingScheme::theRegionLevel
private

Definition at line 40 of file DTNumberingScheme.h.

Referenced by initMe().

◆ theStationLevel

int DTNumberingScheme::theStationLevel
private

Definition at line 42 of file DTNumberingScheme.h.

Referenced by baseNumberToUnitNumber(), decode(), and initMe().

◆ theSuperLayerLevel

int DTNumberingScheme::theSuperLayerLevel
private

Definition at line 43 of file DTNumberingScheme.h.

Referenced by decode(), and initMe().

◆ theWheelLevel

int DTNumberingScheme::theWheelLevel
private

Definition at line 41 of file DTNumberingScheme.h.

Referenced by decode(), and initMe().

◆ theWireLevel

int DTNumberingScheme::theWireLevel
private

Definition at line 45 of file DTNumberingScheme.h.

Referenced by decode(), and initMe().