ATLAS Offline Software
Loading...
Searching...
No Matches
TgcByteStreamData.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef MUONTGC_CNVTOOLS_TGCBYTESTREAMDATA_H
6#define MUONTGC_CNVTOOLS_TGCBYTESTREAMDATA_H
7
8#include <cstring> // This file is needed to use memset.
9
11
12const uint32_t TGC_BYTESTREAM_HEADER = 0xee1234ee;
13const uint32_t TGC_BYTESTREAM_HEADERSIZE = 0x9;
14const uint32_t TGC_BYTESTREAM_HEADERVERSION = 0x03000300;
15const uint32_t TGC_BYTESTREAM_STATUSSIZE = 0x5;
16
19 unsigned rodid : 8;
20 unsigned fill1 : 8;
21 unsigned side : 8;
22 unsigned fill2 : 8;
23
24 TGC_BYTESTREAM_SOURCEID() { memset(this, 0, sizeof(*this)); }
25};
26
29 unsigned badBcID : 1;
30 unsigned badL1Id : 1;
31 unsigned timedout : 1;
32 unsigned badData : 1;
33 unsigned overflow : 1;
34 unsigned fill1 : 11;
35
36 TGC_BYTESTREAM_ERRORS() { memset(this, 0, sizeof(*this)); }
37};
38
41 unsigned mergedHitBCs : 1;
42 unsigned mergedTrackletBCs : 1;
43 unsigned sortedHits : 1;
44 unsigned sortedTracklets : 1;
45 unsigned fill1 : 10;
46 unsigned hasRoI : 1;
47 unsigned fakeSsw : 1;
48
49 unsigned fill2 : 1;
50 unsigned raw : 1;
51 unsigned hitsRO : 1;
52 unsigned trkRO : 1;
53 unsigned hitsCH : 1;
54 unsigned trkCH : 1;
55 unsigned fill3 : 2;
56 unsigned hipt : 1;
57 unsigned sl : 1;
58 unsigned fill4 : 6;
59
60 TGC_BYTESTREAM_LOCALSTATUS() { memset(this, 0, sizeof(*this)); }
61};
62
65 unsigned count : 24;
66 unsigned id : 8;
67};
68
71 unsigned channel : 8;
72 unsigned sbId : 5;
73 unsigned sbType : 3;
74 unsigned adj : 1;
75 unsigned ldbId : 4;
76 unsigned bcBitmap : 3;
77 unsigned tracklet : 6;
78 unsigned fill1 : 1;
79 unsigned ok : 1;
80
81 TGC_BYTESTREAM_READOUTHIT() { memset(this, 0, sizeof(*this)); }
82};
83
86 unsigned rphi : 5;
87 unsigned subm : 2;
88 unsigned seg : 1;
89 signed delta : 4;
90 unsigned sbId : 5;
91 unsigned ldbId : 4;
92 unsigned bcBitmap : 3;
93 unsigned trkType : 3;
94 unsigned fill1 : 1;
95 unsigned slbType : 3;
96 unsigned ok : 1;
97
98 TGC_BYTESTREAM_READOUTTRACKLET() { memset(this, 0, sizeof(*this)); }
99};
100
103 unsigned phi : 4;
104 unsigned subc : 2;
105 unsigned fill1 : 1;
106 unsigned seg : 1;
107 unsigned fill2 : 4;
108 unsigned sbId : 5;
109 unsigned ldbId : 4;
110 unsigned bcBitmap : 3;
111 unsigned trkType : 3;
112 unsigned fill3 : 1;
113 unsigned slbType : 3;
114 unsigned ok : 1;
115
116 TGC_BYTESTREAM_READOUTTRIPLETSTRIP() { memset(this, 0, sizeof(*this)); }
117};
118
121 signed delta : 5;
122 unsigned sub : 1;
123 unsigned hitId : 3;
124 unsigned hipt : 1;
125 unsigned cand : 1;
126 unsigned chip : 2;
127 unsigned sector : 3;
128 unsigned fwd : 1;
129 unsigned strip : 1;
130 unsigned bcBitmap : 3;
131 unsigned fill1 : 11;
132
133 TGC_BYTESTREAM_HIPT() { memset(this, 0, sizeof(*this)); }
134};
135
138 unsigned inner : 8;
139 unsigned fill1 : 1;
140 unsigned hipt : 1;
141 unsigned cand : 1;
142 unsigned chip : 2;
143 unsigned sector : 3;
144 unsigned fwd : 1;
145 unsigned strip : 1;
146 unsigned bcBitmap : 3;
147 unsigned fill2 : 11;
148
149 TGC_BYTESTREAM_HIPT_INNER() { memset(this, 0, sizeof(*this)); }
150};
151
154 unsigned roi : 8;
155 unsigned overlap : 1;
156 unsigned threshold : 3;
157 unsigned fill1 : 1;
158 unsigned bcId : 3;
159 unsigned sign : 1;
160 unsigned cand : 1;
161 unsigned sector : 3;
162 unsigned fwd : 1;
163 unsigned bcBitmap : 3;
164 unsigned cand2plus : 1;
165 unsigned veto : 1;
166 unsigned fill2 : 5;
167
168 TGC_BYTESTREAM_SL() { memset(this, 0, sizeof(*this)); }
169};
170
171/**********************/
173/**********************/
174
176 unsigned roi : 8;
177 unsigned pt : 4;
178 unsigned charge : 1;
179 unsigned coinflag : 3;
180 unsigned innerflag : 4;
181 unsigned fill1 : 2;
182 unsigned bcBitmap : 2;
183 unsigned sector : 4;
184 unsigned fwd : 1;
185 unsigned type : 3;
186
187 TGC_BYTESTREAM_NSL_ROI() { memset(this, 0, sizeof(*this)); }
188};
189
191 unsigned eta : 8;
192 unsigned phi : 6;
193 unsigned fill1 : 3;
194 unsigned input : 3;
195 unsigned cand : 2;
196 unsigned bcBitmap : 2;
197 unsigned sector : 4;
198 unsigned fwd : 1;
199 unsigned type : 3;
200
201 TGC_BYTESTREAM_NSW_POS() { memset(this, 0, sizeof(*this)); }
202};
203
205 unsigned angle : 5;
206 unsigned phires : 1;
207 unsigned lowres : 1;
208 unsigned fill1 : 2;
209 unsigned nswid : 4;
210 unsigned bcid : 4;
211 unsigned input : 3;
212 unsigned cand : 2;
213 unsigned bcBitmap : 2;
214 unsigned sector : 4;
215 unsigned fwd : 1;
216 unsigned type : 3;
217
218 TGC_BYTESTREAM_NSW_ANG() { memset(this, 0, sizeof(*this)); }
219};
220
222 unsigned eta : 6;
223 unsigned phi : 6;
224 unsigned fill1 : 8;
225 unsigned cand : 2;
226 unsigned bcBitmap : 2;
227 unsigned sector : 4;
228 unsigned fwd : 1;
229 unsigned type : 3;
230
231 TGC_BYTESTREAM_RPCBIS78_POS() { memset(this, 0, sizeof(*this)); }
232};
234 unsigned fill1 : 4;
235 unsigned deta : 3;
236 unsigned dphi : 3;
237 unsigned flag : 2;
238 unsigned fill2 : 1;
239 unsigned bcid : 4;
240 unsigned fill3 : 3;
241 unsigned cand : 2;
242 unsigned bcBitmap : 2;
243 unsigned sector : 4;
244 unsigned fwd : 1;
245 unsigned type : 3;
246
247 TGC_BYTESTREAM_RPCBIS78_COIN() { memset(this, 0, sizeof(*this)); }
248};
249
251 unsigned ei : 8;
252 unsigned fi : 8;
253 unsigned chamberid : 3;
254 unsigned fill1 : 3;
255 unsigned bcBitmap : 2;
256 unsigned sector : 4;
257 unsigned fwd : 1;
258 unsigned type : 3;
259
260 TGC_BYTESTREAM_NSL_EIFI() { memset(this, 0, sizeof(*this)); }
261};
262
264 signed delta : 5;
265 unsigned sub : 1;
266 unsigned hitId : 3;
267 unsigned hipt : 1;
268 unsigned cand : 1;
269 unsigned chip : 2;
270 unsigned strip : 1;
271 unsigned fill1 : 8;
272 unsigned bcBitmap : 2;
273 unsigned sector : 4;
274 unsigned fwd : 1;
275 unsigned type : 3;
276
277 TGC_BYTESTREAM_NSL_HIPT() { memset(this, 0, sizeof(*this)); }
278};
279
281 unsigned module : 12;
282 unsigned bcid : 4;
283 unsigned fill1 : 6;
284 unsigned bcBitmap : 2;
285 unsigned sector : 4;
286 unsigned fwd : 1;
287 unsigned type : 3;
288
289 TGC_BYTESTREAM_NSL_TMDB() { memset(this, 0, sizeof(*this)); }
290};
291
292/*****************************/
294/*****************************/
295
296template <typename DEST, typename SRC>
297DEST* my_pointer_cast(SRC* src) {
298 void* ptr = src;
299 return reinterpret_cast<DEST*>(ptr);
300}
301template <class T>
302inline uint32_t toBS32(T& data) {
304}
305template <class T>
306inline uint16_t toBS16(T& data) {
308}
309template <class T>
310inline void fromBS32(uint32_t data, T& s) {
311 s = *(my_pointer_cast<T>(&data));
312}
313template <class T>
314inline void fromBS16(uint16_t data, T& s) {
315 s = *(my_pointer_cast<T>(&data));
316}
317inline uint8_t low8(uint32_t data) {
318 return (uint8_t)(data & 0x000000ff);
319}
320inline uint16_t low16(uint32_t data) {
321 return (uint16_t)(data & 0x0000ffff);
322}
323inline uint16_t high16(uint32_t data) {
324 return (uint16_t)(data >> 16);
325}
326inline uint16_t bcId(uint32_t data) {
327 return data & 0xfff;
328}
329
330inline int fragmentCount(uint32_t data, int id) {
332 fromBS32(data, counter);
333 if (counter.id != (unsigned int)id) {
334 REPORT_MESSAGE_WITH_CONTEXT(MSG::ERROR, "TgcByteStreamData")
335 << "Requested count of frament " << id << ", data is for fragment "
336 << counter.id << endmsg;
337 return 0;
338 }
339 return counter.count;
340}
341
342inline uint32_t from16(uint16_t high16, uint16_t low16) {
343 return (uint32_t)((high16 << 16) | low16);
344}
345
346inline uint32_t from8(uint8_t high8, uint8_t highmid8, uint8_t lowmid8,
347 uint8_t low8) {
348 return (uint32_t)((high8 << 24) | (highmid8 << 16) | (lowmid8 << 8) | low8);
349}
350
351inline unsigned bcBitmap(uint16_t bcTag) {
352 return (bcTag == 1
353 ? 4
354 : ((bcTag == 0 || bcTag == 2) ? 2 : (bcTag == 3 ? 1 : 0)));
355}
356
357inline unsigned bcTag(unsigned bcBitMap) {
358 return (bcBitMap == 4 ? 1 : (bcBitMap == 2 ? 2 : (bcBitMap == 1 ? 3 : 0)));
359}
360
361#endif // MUONTGC_CNVTOOLS_TGCBYTESTREAMDATA_H
#define endmsg
Helpers for checking error return status codes and reporting errors.
#define REPORT_MESSAGE_WITH_CONTEXT(LVL, CONTEXT_NAME)
Report a message, with an explicitly specified context name.
char data[hepevt_bytes_allocation_ATLAS]
Definition HepEvt.cxx:11
int fragmentCount(uint32_t data, int id)
const uint32_t TGC_BYTESTREAM_STATUSSIZE
unsigned bcBitmap(uint16_t bcTag)
uint16_t low16(uint32_t data)
uint16_t toBS16(T &data)
void fromBS16(uint16_t data, T &s)
const uint32_t TGC_BYTESTREAM_HEADERVERSION
uint32_t toBS32(T &data)
uint32_t from8(uint8_t high8, uint8_t highmid8, uint8_t lowmid8, uint8_t low8)
void fromBS32(uint32_t data, T &s)
uint32_t from16(uint16_t high16, uint16_t low16)
DEST * my_pointer_cast(SRC *src)
end of structs for NewSL
uint8_t low8(uint32_t data)
uint16_t bcId(uint32_t data)
unsigned bcTag(unsigned bcBitMap)
const uint32_t TGC_BYTESTREAM_HEADER
const uint32_t TGC_BYTESTREAM_HEADERSIZE
uint16_t high16(uint32_t data)
The struct for fragment count in ByteStream.