ATLAS Offline Software
Loading...
Searching...
No Matches
MapperSTG.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3*/
4#ifndef _MUON_NSW_STG_MAPPER_H_
5#define _MUON_NSW_STG_MAPPER_H_
6
7#include <cstdint>
8#include <map>
9#include <vector>
10
12
13namespace Muon
14{
15 namespace nsw
16 {
18 {
19 public:
21 virtual ~MapperSTG () {};
22
23 uint16_t nchannels (uint8_t channel_type, uint8_t sector_type, uint8_t feb_radius, uint8_t layer) const;
24 uint16_t channel_number (uint8_t channel_type, uint8_t sector_type, uint8_t feb_radius, uint8_t layer, uint16_t vmm, uint16_t vmm_chan) const;
25 bool vmm_info (uint8_t channel_type, uint8_t sector_type, uint8_t mod_radius, uint8_t layer, uint16_t channel_number, uint16_t& vmm, uint16_t& vmm_chan) const;
26 bool elink_info (uint8_t channel_type, uint8_t sector_type, uint8_t mod_radius, uint8_t layer, uint16_t channel_number, uint &elink) const;
27 uint16_t geoVmmToRocVmm(uint16_t geoVMM) const; // go from geometrical (as used offline) vmm number to roc capture vmm number, also works in opposite direction
28
29 static uint16_t private_id (uint8_t channel_type, uint8_t sector_type, uint8_t feb_radius, uint8_t layer);
30
31 // Mappings to different numbering conventions
32 uint16_t AB_to_Athena_channel_number (uint8_t channel_type, uint8_t sector_type, uint8_t feb_radius, uint8_t layer, uint16_t channel_number) const;
33 uint16_t Athena_to_AB_channel_number (uint8_t channel_type, uint8_t sector_type, uint8_t feb_radius, uint8_t layer, uint16_t channel_number) const;
34 uint16_t NSWID_to_Athena_channel_number (uint8_t channel_type, uint8_t sector_type, uint8_t feb_radius, uint8_t layer, uint16_t channel_number, bool sideA) const;
35 uint16_t Athena_to_NSWID_channel_number (uint8_t channel_type, uint8_t sector_type, uint8_t feb_radius, uint8_t layer, uint16_t channel_number, bool sideA) const;
36 };
37
38 static const std::map <uint16_t, std::vector<std::vector<uint8_t>>> s_stgc_channel_map =
39 {
40 // channel range: {vmm0, vmm0_channel, vmm1, vmm1_channel}
41 // as a function of channel_type, sector_type [1=large 0=small], feb_radius [0->2], layer [0->7]
42
43 // This mapping reflects the spreadsheet Adapter-Board-level numbering in sTGC_AB_Mapping_WithPadTDSChannels.xlsx,
44 // where vmm ids are the nominal ones (as on the FEB).
45
46 //**** PADS
47 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 0, 0, 0), { {2, 39, 1, 36} }}, // QS1C
48 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 0, 0, 1), { {1, 24, 2, 27} }},
49 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 0, 0, 2), { {1, 24, 2, 31} }},
50 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 0, 0, 3), { {2, 39, 1, 32} }},
51 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 0, 0, 4), { {2, 39, 1, 36} }}, // QS1P
52 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 0, 0, 5), { {1, 24, 2, 27} }},
53 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 0, 0, 6), { {1, 24, 2, 10} }},
54 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 0, 0, 7), { {2, 39, 1, 53} }},
55 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 0, 1, 0), { {2, 23, 1, 40} }}, // QS2C
56 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 0, 1, 1), { {1, 40, 2, 23} }},
57 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 0, 1, 2), { {1, 42, 2, 22} }},
58 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 0, 1, 3), { {2, 21, 1, 41} }},
59 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 0, 1, 4), { {2, 14, 1, 49} }}, // QS2P
60 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 0, 1, 5), { {1, 49, 2, 14} }},
61 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 0, 1, 6), { {1, 42, 2, 22} }},
62 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 0, 1, 7), { {2, 21, 1, 41} }},
63 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 0, 2, 0), { {2, 40, 2, 2} }}, // QS3C
64 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 0, 2, 1), { {1, 1, 1, 39} }},
65 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 0, 2, 2), { {1, 0, 1, 41} }},
66 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 0, 2, 3), { {2, 41, 2, 0} }},
67 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 0, 2, 4), { {2, 32, 2, 9} }}, // QS3P
68 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 0, 2, 5), { {2, 9, 2, 32} }},
69 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 0, 2, 6), { {2, 2, 2, 40} }},
70 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 0, 2, 7), { {2, 39, 2, 1} }},
71 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 1, 0, 0), { {2, 39, 1, 2} }}, // QL1P
72 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 1, 0, 1), { {1, 8, 2, 45} }},
73 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 1, 0, 2), { {1, 8, 2, 55} }},
74 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 1, 0, 3), { {2, 39, 1, 0}, {2, 40, 2, 47} }},
75 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 1, 0, 4), { {2, 39, 1, 8} }}, // QL1C
76 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 1, 0, 5), { {1, 8, 2, 39} }},
77 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 1, 0, 6), { {1, 13, 2, 44} }},
78 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 1, 0, 7), { {2, 34, 1, 3} }},
79 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 1, 1, 0), { {2, 29, 1, 38} }}, // QL2P
80 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 1, 1, 1), { {1, 34, 2, 25} }},
81 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 1, 1, 2), { {1, 24, 2, 34} }},
82 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 1, 1, 3), { {2, 39, 1, 29} }},
83 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 1, 1, 4), { {2, 29, 1, 38} }}, // QL2C
84 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 1, 1, 5), { {1, 34, 2, 25} }},
85 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 1, 1, 6), { {1, 34, 2, 25} }},
86 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 1, 1, 7), { {2, 29, 1, 38} }},
87 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 1, 2, 0), { {2, 21, 1, 26} }}, // QL3P
88 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 1, 2, 1), { {1, 44, 2, 39} }},
89 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 1, 2, 2), { {1, 34, 2, 39} }},
90 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 1, 2, 3), { {2, 31, 1, 26} }},
91 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 1, 2, 4), { {2, 13, 1, 26} }}, // QL3C
92 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 1, 2, 5), { {1, 52, 2, 39} }},
93 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 1, 2, 6), { {1, 48, 2, 39} }},
94 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 1, 2, 7), { {2, 17, 1, 26} }},
95
96 //**** STRIPS
97 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 0, 0, 0), { {7, 21, 6, 48}, {6, 15, 5, 48}, {5, 15, 0, 0} }},
98 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 0, 0, 1), { {0, 42, 1, 15}, {1, 48, 2, 15}, {2, 48, 7, 63} }},
99 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 0, 0, 2), { {0, 42, 1, 15}, {1, 48, 2, 15}, {2, 48, 7, 63} }},
100 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 0, 0, 3), { {7, 21, 6, 48}, {6, 15, 5, 48}, {5, 15, 0, 0} }},
101 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 0, 0, 4), { {7, 21, 6, 48}, {6, 15, 5, 48}, {5, 15, 0, 0} }},
102 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 0, 0, 5), { {0, 42, 1, 15}, {1, 48, 2, 15}, {2, 48, 7, 63} }},
103 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 0, 0, 6), { {0, 42, 1, 15}, {1, 48, 2, 15}, {2, 48, 7, 63} }},
104 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 0, 0, 7), { {7, 21, 6, 48}, {6, 15, 5, 48}, {5, 15, 0, 0} }},
105 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 0, 1, 0), { {7, 63, 2, 19} }},
106 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 0, 1, 1), { {2, 19, 7, 63} }},
107 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 0, 1, 2), { {2, 19, 7, 63} }},
108 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 0, 1, 3), { {7, 63, 2, 19} }},
109 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 0, 1, 4), { {7, 63, 2, 19} }},
110 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 0, 1, 5), { {2, 19, 7, 63} }},
111 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 0, 1, 6), { {2, 19, 7, 63} }},
112 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 0, 1, 7), { {7, 63, 2, 19} }},
113 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 0, 2, 0), { {7, 63, 3, 13} }},
114 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 0, 2, 1), { {3, 13, 7, 63} }},
115 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 0, 2, 2), { {3, 13, 7, 63} }},
116 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 0, 2, 3), { {7, 63, 3, 13} }},
117 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 0, 2, 4), { {7, 63, 3, 13} }},
118 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 0, 2, 5), { {3, 13, 7, 63} }},
119 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 0, 2, 6), { {3, 13, 7, 63} }},
120 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 0, 2, 7), { {7, 63, 3, 13} }},
121 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 1, 0, 0), { {7, 23, 6, 48}, {6, 15, 5, 48}, {5, 15, 0, 0} }},
122 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 1, 0, 1), { {0, 40, 1, 15}, {1, 48, 2, 15}, {2, 48, 7, 63} }},
123 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 1, 0, 2), { {0, 40, 1, 15}, {1, 48, 2, 15}, {2, 48, 7, 63} }},
124 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 1, 0, 3), { {7, 23, 6, 48}, {6, 15, 5, 48}, {5, 15, 0, 0} }},
125 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 1, 0, 4), { {7, 23, 6, 48}, {6, 15, 5, 48}, {5, 15, 0, 0} }},
126 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 1, 0, 5), { {0, 40, 1, 15}, {1, 48, 2, 15}, {2, 48, 7, 63} }},
127 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 1, 0, 6), { {0, 40, 1, 15}, {1, 48, 2, 15}, {2, 48, 7, 63} }},
128 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 1, 0, 7), { {7, 23, 6, 48}, {6, 15, 5, 48}, {5, 15, 0, 0} }},
129 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 1, 1, 0), { {7, 63, 2, 18} }},
130 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 1, 1, 1), { {2, 18, 7, 63} }},
131 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 1, 1, 2), { {2, 18, 7, 63} }},
132 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 1, 1, 3), { {7, 63, 2, 18} }},
133 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 1, 1, 4), { {7, 63, 2, 18} }},
134 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 1, 1, 5), { {2, 18, 7, 63} }},
135 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 1, 1, 6), { {2, 18, 7, 63} }},
136 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 1, 1, 7), { {7, 63, 2, 18} }},
137 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 1, 2, 0), { {7, 63, 2, 31} }},
138 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 1, 2, 1), { {2, 31, 7, 63} }},
139 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 1, 2, 2), { {2, 31, 7, 63} }},
140 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 1, 2, 3), { {7, 63, 2, 31} }},
141 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 1, 2, 4), { {7, 63, 2, 31} }},
142 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 1, 2, 5), { {2, 31, 7, 63} }},
143 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 1, 2, 6), { {2, 31, 7, 63} }},
144 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_STRIP, 1, 2, 7), { {7, 63, 2, 31} }},
145
146 //**** WIRES
147 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 0, 0, 0), { {0, 57, 0, 39} }}, // QS1C
148 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 0, 0, 1), { {0, 57, 0, 39} }},
149 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 0, 0, 2), { {0, 57, 0, 38} }},
150 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 0, 0, 3), { {0, 57, 0, 39} }},
151 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 0, 0, 4), { {0, 57, 0, 39} }}, // QS1P
152 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 0, 0, 5), { {0, 57, 0, 38} }},
153 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 0, 0, 6), { {0, 57, 0, 39} }},
154 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 0, 0, 7), { {0, 57, 0, 39} }},
155 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 0, 1, 0), { {0, 57, 0, 29} }}, // QS2C
156 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 0, 1, 1), { {0, 57, 0, 29} }},
157 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 0, 1, 2), { {0, 57, 0, 28} }},
158 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 0, 1, 3), { {0, 57, 0, 29} }},
159 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 0, 1, 4), { {0, 57, 0, 29} }}, // QS2P
160 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 0, 1, 5), { {0, 57, 0, 28} }},
161 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 0, 1, 6), { {0, 57, 0, 29} }},
162 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 0, 1, 7), { {0, 57, 0, 29} }},
163 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 0, 2, 0), { {0, 57, 0, 20} }}, // QS3C
164 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 0, 2, 1), { {0, 57, 0, 20} }},
165 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 0, 2, 2), { {0, 57, 0, 20} }},
166 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 0, 2, 3), { {0, 57, 0, 21} }},
167 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 0, 2, 4), { {0, 57, 0, 21} }}, // QS3P
168 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 0, 2, 5), { {0, 57, 0, 20} }},
169 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 0, 2, 6), { {0, 57, 0, 20} }},
170 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 0, 2, 7), { {0, 57, 0, 20} }},
171 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 1, 0, 0), { {0, 57, 0, 26} }}, // QL1P
172 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 1, 0, 1), { {0, 57, 0, 26} }},
173 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 1, 0, 2), { {0, 57, 0, 26} }},
174 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 1, 0, 3), { {0, 57, 0, 26} }},
175 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 1, 0, 4), { {0, 57, 0, 26} }}, // QL1C
176 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 1, 0, 5), { {0, 57, 0, 26} }},
177 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 1, 0, 6), { {0, 57, 0, 26} }},
178 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 1, 0, 7), { {0, 57, 0, 26} }},
179 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 1, 1, 0), { {0, 57, 0, 10} }}, // QL2P
180 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 1, 1, 1), { {0, 57, 0, 9} }},
181 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 1, 1, 2), { {0, 57, 0, 9} }},
182 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 1, 1, 3), { {0, 57, 0, 10} }},
183 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 1, 1, 4), { {0, 57, 0, 10} }}, // QL2C
184 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 1, 1, 5), { {0, 57, 0, 9} }},
185 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 1, 1, 6), { {0, 57, 0, 9} }},
186 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 1, 1, 7), { {0, 57, 0, 10} }},
187 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 1, 2, 0), { {0, 57, 0, 1} }}, // QL3P
188 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 1, 2, 1), { {0, 57, 0, 0} }},
189 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 1, 2, 2), { {0, 57, 0, 0} }},
190 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 1, 2, 3), { {0, 57, 0, 1} }},
191 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 1, 2, 4), { {0, 57, 0, 1} }}, // QL3C
192 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 1, 2, 5), { {0, 57, 0, 0} }},
193 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 1, 2, 6), { {0, 57, 0, 0} }},
194 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_WIRE, 1, 2, 7), { {0, 57, 0, 1} }}
195 };
196
197 static const std::map <uint16_t, std::pair<uint16_t, uint16_t>> s_stgc_pad_grid =
198 {
199 // Number of pad eta-rows and phi-columns
200 // as a function of channel_type, sector_type [1=large 0=small], feb_radius [0->2], layer [0->7].
201
202 // This is used to convert the AB channel number to the pad index that ATHENA understands
203
204 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 0, 0, 0), {17, 4}}, // QS1C, Layer 0 {nEtaRows, nPhiColumns}
208 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 0, 0, 4), {17, 4}}, // QS1P
212
213 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 0, 1, 0), {16, 3}}, // QS2C
217 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 0, 1, 4), {15, 2}}, // QS2P
221
222 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 0, 2, 0), {13, 3}}, // QS3C
226 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 0, 2, 4), {12, 2}}, // QS3P
230
231 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 1, 0, 0), {17, 6}}, // QL1P
235 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 1, 0, 4), {16, 6}}, // QL1C
239
240 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 1, 1, 0), {14, 4}}, // QL2P
244 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 1, 1, 4), {14, 4}}, // QL2C
248
249 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 1, 2, 0), {15, 4}}, // QL3P
253 {MapperSTG::private_id(OFFLINE_CHANNEL_TYPE_PAD, 1, 2, 4), {13, 4}}, // QL3C
257 };
258 }
259}
260
261
262//=====================================================================
263inline uint16_t Muon::nsw::MapperSTG::private_id (uint8_t channel_type, uint8_t sector_type, uint8_t feb_radius, uint8_t layer)
264{
265 // an internal unique ID for every VMM channel
266 return (channel_type & 0xf) << 12 | (sector_type & 0xf) << 8 | (feb_radius & 0xf) << 4 | (layer & 0xf);
267}
268
269#endif // _MUON_NSW_STGC_MAPPER_H_
270
271
unsigned int uint
uint16_t nchannels(uint8_t channel_type, uint8_t sector_type, uint8_t feb_radius, uint8_t layer) const
Definition MapperSTG.cxx:35
static uint16_t private_id(uint8_t channel_type, uint8_t sector_type, uint8_t feb_radius, uint8_t layer)
Definition MapperSTG.h:263
uint16_t Athena_to_AB_channel_number(uint8_t channel_type, uint8_t sector_type, uint8_t feb_radius, uint8_t layer, uint16_t channel_number) const
uint16_t channel_number(uint8_t channel_type, uint8_t sector_type, uint8_t feb_radius, uint8_t layer, uint16_t vmm, uint16_t vmm_chan) const
Definition MapperSTG.cxx:9
virtual ~MapperSTG()
Definition MapperSTG.h:21
bool vmm_info(uint8_t channel_type, uint8_t sector_type, uint8_t mod_radius, uint8_t layer, uint16_t channel_number, uint16_t &vmm, uint16_t &vmm_chan) const
Definition MapperSTG.cxx:53
bool elink_info(uint8_t channel_type, uint8_t sector_type, uint8_t mod_radius, uint8_t layer, uint16_t channel_number, uint &elink) const
Definition MapperSTG.cxx:83
uint16_t geoVmmToRocVmm(uint16_t geoVMM) const
uint16_t Athena_to_NSWID_channel_number(uint8_t channel_type, uint8_t sector_type, uint8_t feb_radius, uint8_t layer, uint16_t channel_number, bool sideA) const
uint16_t NSWID_to_Athena_channel_number(uint8_t channel_type, uint8_t sector_type, uint8_t feb_radius, uint8_t layer, uint16_t channel_number, bool sideA) const
uint16_t AB_to_Athena_channel_number(uint8_t channel_type, uint8_t sector_type, uint8_t feb_radius, uint8_t layer, uint16_t channel_number) const
static const std::map< uint16_t, std::pair< uint16_t, uint16_t > > s_stgc_pad_grid
Definition MapperSTG.h:197
static const std::map< uint16_t, std::vector< std::vector< uint8_t > > > s_stgc_channel_map
Definition MapperSTG.h:38
@ OFFLINE_CHANNEL_TYPE_STRIP
@ OFFLINE_CHANNEL_TYPE_PAD
@ OFFLINE_CHANNEL_TYPE_WIRE
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.