CMS 3D CMS Logo

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