CMS 3D CMS Logo

TrackTools.cc
Go to the documentation of this file.
2 
3 namespace emtf {
4 
5 int calc_ring(int station, int csc_ID, int strip) {
6  if (station > 1) {
7  if (csc_ID < 4) return 1;
8  else if (csc_ID < 10) return 2;
9  else return -999;
10  }
11  else if (station == 1) {
12  if (csc_ID < 4 && strip > 127) return 4;
13  else if (csc_ID < 4 && strip >= 0) return 1;
14  else if (csc_ID > 3 && csc_ID < 7) return 2;
15  else if (csc_ID > 6 && csc_ID < 10) return 3;
16  else return -999;
17  }
18  else return -999;
19 }
20 
21 int calc_chamber(int station, int sector, int subsector, int ring, int csc_ID) {
22  int chamber = -999;
23  if (station == 1) {
24  chamber = ((sector-1) * 6) + csc_ID + 2; // Chamber offset of 2: First chamber in sector 1 is chamber 3
25  if (ring == 2) chamber -= 3;
26  if (ring == 3) chamber -= 6;
27  if (subsector == 2) chamber += 3;
28  if (chamber > 36) chamber -= 36;
29  }
30  else if (ring == 1) {
31  chamber = ((sector-1) * 3) + csc_ID + 1; // Chamber offset of 1: First chamber in sector 1 is chamber 2
32  if (chamber > 18) chamber -= 18;
33  }
34  else if (ring == 2) {
35  chamber = ((sector-1) * 6) + csc_ID - 3 + 2; // Chamber offset of 2: First chamber in sector 1 is chamber 3
36  if (chamber > 36) chamber -= 36;
37  }
38  return chamber;
39 }
40 
41 // Calculates special chamber ID for track address sent to uGMT, using CSC_ID, subsector, neighbor, and station
42 int calc_uGMT_chamber(int csc_ID, int subsector, int neighbor, int station) {
43  if (station == 1) {
44  if (csc_ID == 3 && neighbor == 1 && subsector == 2) return 1;
45  else if (csc_ID == 6 && neighbor == 1 && subsector == 2) return 2;
46  else if (csc_ID == 9 && neighbor == 1 && subsector == 2) return 3;
47  else if (csc_ID == 3 && neighbor == 0 && subsector == 2) return 4;
48  else if (csc_ID == 6 && neighbor == 0 && subsector == 2) return 5;
49  else if (csc_ID == 9 && neighbor == 0 && subsector == 2) return 6;
50  else return 0;
51  }
52  else {
53  if (csc_ID == 3 && neighbor == 1) return 1;
54  else if (csc_ID == 9 && neighbor == 1) return 2;
55  else if (csc_ID == 3 && neighbor == 0) return 3;
56  else if (csc_ID == 9 && neighbor == 0) return 4;
57  else return 0;
58  }
59 }
60 
61 } // namespace emtf
int calc_chamber(int station, int sector, int subsector, int ring, int csc_ID)
Definition: TrackTools.cc:21
int calc_uGMT_chamber(int csc_ID, int subsector, int neighbor, int station)
Definition: TrackTools.cc:42
Definition: Event.h:15
int calc_ring(int station, int csc_ID, int strip)
Definition: TrackTools.cc:5