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) override
 
 DTNumberingScheme (const DDCompactView &cpv)
 
 DTNumberingScheme (const MuonDDDConstants &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 MuonDDDConstants &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

Author
Arno Straessner, CERN arno..nosp@m.stra.nosp@m.essne.nosp@m.r@ce.nosp@m.rn.ch

Definition at line 20 of file DTNumberingScheme.h.

Constructor & Destructor Documentation

DTNumberingScheme::DTNumberingScheme ( const DDCompactView cpv)

Definition at line 13 of file DTNumberingScheme.cc.

References initMe().

13  {
14  MuonDDDConstants muonConstants(cpv);
15  initMe(muonConstants);
16 }
void initMe(const MuonDDDConstants &muonConstants)
DTNumberingScheme::DTNumberingScheme ( const MuonDDDConstants muonConstants)

Definition at line 9 of file DTNumberingScheme.cc.

References initMe().

9  {
10  initMe(muonConstants);
11 }
void initMe(const MuonDDDConstants &muonConstants)
DTNumberingScheme::~DTNumberingScheme ( )
inlineoverride

Definition at line 25 of file DTNumberingScheme.h.

References baseNumberToUnitNumber(), decode(), getDetId(), initMe(), and pileupDistInMC::num.

25 {}

Member Function Documentation

int DTNumberingScheme::baseNumberToUnitNumber ( const MuonBaseNumber num)
overridevirtual

Reimplemented from MuonNumberingScheme.

Definition at line 38 of file DTNumberingScheme.cc.

References gather_cfg::cout, MuonBaseNumber::getBaseNo(), getDetId(), MuonBaseNumber::getLevels(), MuonBaseNumber::getSuperNo(), hcalDigis_cfi::level, and theWireLevel.

Referenced by ~DTNumberingScheme().

38  {
39 
40 #ifdef LOCAL_DEBUG
41  std::cout << "DTNumbering "<<num.getLevels()<<std::endl;
42  for (int level=1;level<=num.getLevels();level++) {
43  std::cout << level << " " << num.getSuperNo(level)
44  << " " << num.getBaseNo(level) << std::endl;
45  }
46 #endif
47  if (num.getLevels()!=theWireLevel) {
48  std::cout << "DTNS::BNToUN "
49  << "BaseNumber has " << num.getLevels() << " levels,"
50  << "need "<<theWireLevel<<std::endl;
51  return 0;
52  }
53 
54 
55 // // Meaningful ranges are enforced by DTWireId, (which
56 // // however allows for 0 in wire, layer, superlayer!!!)
57 //
58 // if ((wire_id < 1) || (wire_id > 100)) {
59 // std::cout << "DTNumberingScheme: ";
60 // std::cout << "wire id out of range: ";
61 // std::cout << wire_id <<std::endl;
62 // }
63 
64 // if ((layer_id < 1) || (layer_id > 4)) {
65 // std::cout << "DTNumberingScheme: ";
66 // std::cout << "layer id out of range: ";
67 // std::cout << layer_id <<std::endl;
68 // }
69 
70 // if ((superlayer_id < 1) || (superlayer_id > 3)) {
71 // std::cout << "DTNumberingScheme: ";
72 // std::cout << "super-layer id out of range: ";
73 // std::cout << superlayer_id <<std::endl;
74 // }
75 
76 
77  return getDetId(num);
78 }
int getBaseNo(int level) const
int getLevels() const
int getSuperNo(int level) const
int getDetId(const MuonBaseNumber &num) const
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 126 of file DTNumberingScheme.cc.

References MuonBaseNumber::getBaseNo(), MuonBaseNumber::getLevels(), MuonBaseNumber::getSuperNo(), hcalDigis_cfi::level, theLayerLevel, theStationLevel, theSuperLayerLevel, theWheelLevel, and theWireLevel.

Referenced by getDetId(), and ~DTNumberingScheme().

132  {
133  for (int level=1;level<=num.getLevels();level++) {
134 
135  //decode
136  if (level==theWheelLevel) {
137  const int copyno=num.getBaseNo(level);
138  wheel_id=copyno-2;
139 
140  } else if (level==theStationLevel) {
141  const int station_tag = num.getSuperNo(level);
142  const int copyno = num.getBaseNo(level);
143  station_id=station_tag;
144  sector_id=copyno+1;
145 
146  } else if (level==theSuperLayerLevel) {
147  const int copyno = num.getBaseNo(level);
148  superlayer_id = copyno + 1;
149 
150  } else if (level==theLayerLevel) {
151  const int copyno = num.getBaseNo(level);
152  layer_id=copyno+1;
153 
154  } else if (level==theWireLevel) {
155  const int copyno = num.getBaseNo(level);
156  wire_id = copyno+1;
157  }
158  }
159 }
int getBaseNo(int level) const
int getLevels() const
int getSuperNo(int level) const
int DTNumberingScheme::getDetId ( const MuonBaseNumber num) const

Definition at line 80 of file DTNumberingScheme.cc.

References gather_cfg::cout, decode(), and hcalTTPDigis_cfi::id.

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

80  {
81 
82  int wire_id=0;
83  int layer_id=0;
84  int superlayer_id=0;
85  int sector_id=0;
86  int station_id=0;
87  int wheel_id=0;
88 
89  //decode significant barrel levels
90  decode(num,
91  wire_id,
92  layer_id,
93  superlayer_id,
94  sector_id,
95  station_id,
96  wheel_id);
97 
98 // These ranges are enforced by DTWireId
99 // if ((sector_id < 1) || (sector_id > 14)) {
100 // std::cout << "DTNumberingScheme: ";
101 // std::cout << "sector id out of range: ";
102 // std::cout << sector_id <<std::endl;
103 // }
104 
105 // if ((station_id < 1) || (station_id > 4)) {
106 // std::cout << "DTNumberingScheme: ";
107 // std::cout << "station id out of range: ";
108 // std::cout << station_id <<std::endl;
109 // }
110 
111 // if ((wheel_id < -2) || (wheel_id > 2)) {
112 // std::cout << "DTNumberingScheme: ";
113 // std::cout << "wheel id out of range: ";
114 // std::cout << wheel_id <<std::endl;
115 // }
116 
117  DTWireId id(wheel_id,station_id,sector_id,superlayer_id,layer_id,wire_id);
118 
119 #ifdef LOCAL_DEBUG
120  std::cout << "DTNumberingScheme: " << id << std::endl;
121 #endif
122 
123  return id.rawId();
124 }
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 DTNumberingScheme::initMe ( const MuonDDDConstants muonConstants)
private

Definition at line 18 of file DTNumberingScheme.cc.

References gather_cfg::cout, MuonDDDConstants::getValue(), theLayerLevel, theRegionLevel, theStationLevel, theSuperLayerLevel, theWheelLevel, and theWireLevel.

Referenced by DTNumberingScheme(), and ~DTNumberingScheme().

18  {
19  int theLevelPart=muonConstants.getValue("level");
20  theRegionLevel=muonConstants.getValue("mb_region")/theLevelPart;
21  theWheelLevel=muonConstants.getValue("mb_wheel")/theLevelPart;
22  theStationLevel=muonConstants.getValue("mb_station")/theLevelPart;
23  theSuperLayerLevel=muonConstants.getValue("mb_superlayer")/theLevelPart;
24  theLayerLevel=muonConstants.getValue("mb_layer")/theLevelPart;
25  theWireLevel=muonConstants.getValue("mb_wire")/theLevelPart;
26 #ifdef LOCAL_DEBUG
27  std::cout << "Initialize DTNumberingScheme" << std::endl;
28  std::cout << "theRegionLevel " << theRegionLevel <<std::endl;
29  std::cout << "theWheelLevel " << theWheelLevel <<std::endl;
30  std::cout << "theStationLevel " << theStationLevel <<std::endl;
31  std::cout << "theSuperLayerLevel " << theSuperLayerLevel <<std::endl;
32  std::cout << "theLayerLevel " << theLayerLevel <<std::endl;
33  std::cout << "theWireLevel " << theWireLevel <<std::endl;
34 #endif
35 
36 }
int getValue(const std::string &name) const

Friends And Related Function Documentation

friend class DTGeometryBuilderFromDDD
friend

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

Definition at line 53 of file DTNumberingScheme.h.

friend class DTGeometryParserFromDDD
friend

Definition at line 54 of file DTNumberingScheme.h.

Member Data Documentation

int DTNumberingScheme::theLayerLevel
private

Definition at line 48 of file DTNumberingScheme.h.

Referenced by decode(), and initMe().

int DTNumberingScheme::theRegionLevel
private

Definition at line 44 of file DTNumberingScheme.h.

Referenced by initMe().

int DTNumberingScheme::theStationLevel
private

Definition at line 46 of file DTNumberingScheme.h.

Referenced by decode(), and initMe().

int DTNumberingScheme::theSuperLayerLevel
private

Definition at line 47 of file DTNumberingScheme.h.

Referenced by decode(), and initMe().

int DTNumberingScheme::theWheelLevel
private

Definition at line 45 of file DTNumberingScheme.h.

Referenced by decode(), and initMe().

int DTNumberingScheme::theWireLevel
private

Definition at line 49 of file DTNumberingScheme.h.

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