CMS 3D CMS Logo

RPCLBLink.cc
Go to the documentation of this file.
2 
3 #include <ostream>
4 #include <sstream>
5 
6 RPCLBLink::RPCLBLink() : id_(0x0) {}
7 
8 RPCLBLink::RPCLBLink(std::uint32_t const& id) : id_(id) {}
9 
11  int region, int yoke, int sector, int side, int wheelordisk, int fibre, int radial, int linkboard, int connector)
12  : id_(0x0) {
13  setRegion(region);
14  setYoke(yoke);
15  setSector(sector);
16  setSide(side);
17  setWheelOrDisk(wheelordisk);
18  setFibre(fibre);
19  setRadial(radial);
20  setLinkBoard(linkboard);
21  setConnector(connector);
22 }
23 
24 std::uint32_t RPCLBLink::getMask() const {
25  std::uint32_t mask(0x0);
26  if (id_ & mask_region_)
27  mask |= mask_region_;
28  if (id_ & mask_yoke_)
29  mask |= mask_yoke_;
30  if (id_ & mask_sector_)
31  mask |= mask_sector_;
32  if (id_ & mask_side_)
33  mask |= mask_side_;
34  if (id_ & mask_wheelordisk_)
35  mask |= mask_wheelordisk_;
36  if (id_ & mask_fibre_)
37  mask |= mask_fibre_;
38  if (id_ & mask_radial_)
39  mask |= mask_radial_;
40  if (id_ & mask_linkboard_)
41  mask |= mask_linkboard_;
42  if (id_ & mask_connector_)
43  mask |= mask_connector_;
44  return mask;
45 }
46 
48  // LB_Rregion.yoke_Ssector_region.side.wheel_or_disk.fibre.radial_CHlinkboard:connector
49  // LB_RB -2 _S10 _ B N 2 A _CH2 :
50  // LB_RE -1 _S10 _ E N 2 3 _CH0 :
51  // LB_RB-2_S10_BN2A_CH2 , RB1in/W-2/S10:bwd ; LB_RE-1_S10_EN23_CH0 , RE-2/R3/C30
52 
53  int region(getRegion()), yoke(getYoke()), linkboard(getLinkBoard()), connector(getConnector());
54 
55  std::ostringstream oss;
56  oss << "LB_R";
57  switch (region) {
58  case 0:
59  oss << 'B';
60  break;
61  case 1:
62  oss << 'E';
63  break;
64  default:
65  oss << '*';
66  break;
67  }
68  (yoke > 0 ? oss << '+' << yoke : oss << yoke);
69 
71 
72  oss << '_';
73  switch (region) {
74  case 0:
75  oss << 'B';
76  break;
77  case 1:
78  oss << 'E';
79  break;
80  default:
81  oss << '*';
82  break;
83  }
84  switch (getSide()) {
85  case 0:
86  oss << 'N';
87  break;
88  case 1:
89  oss << 'M';
90  break;
91  case 2:
92  oss << 'P';
93  break;
94  default:
95  oss << '*';
96  break;
97  }
99  switch (getFibre()) {
100  case 0:
101  oss << '1';
102  break;
103  case 1:
104  oss << '2';
105  break;
106  case 2:
107  oss << '3';
108  break;
109  case 3:
110  oss << 'A';
111  break;
112  case 4:
113  oss << 'B';
114  break;
115  case 5:
116  oss << 'C';
117  break;
118  case 6:
119  oss << 'D';
120  break;
121  case 7:
122  oss << 'E';
123  break;
124  default:
125  oss << '*';
126  break;
127  }
128  switch (getRadial()) { // for completeness, CMS IN 2002/065
129  case 0:
130  oss << "ab";
131  break;
132  case 1:
133  oss << "cd";
134  break;
135  default:
136  oss << "";
137  break;
138  }
139 
140  if (linkboard != wildcard_)
141  oss << "_CH" << linkboard;
142 
143  if (connector != wildcard_)
144  oss << ":" << connector;
145 
146  return oss.str();
147 }
148 
149 std::ostream& operator<<(std::ostream& ostream, RPCLBLink const& link) { return (ostream << link.getName()); }