ATLAS Offline Software
Loading...
Searching...
No Matches
NSWPadTriggerL1a.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef NSWPADTRIGGERL1A_H_
6#define NSWPADTRIGGERL1A_H_
7
8
9#include "eformat/eformat.h"
12#include <cstdint>
13#include <vector>
14#include <array>
15#include <numeric> //for std::accumulate
16#include <algorithm> //for std::find
17
18
19namespace Muon
20{
21 namespace nsw
22 {
23 namespace Constants
24 {
25 // general
26 constexpr bool DEBUG = false;
27 constexpr uint32_t N_BYTES_IN_WORD32 = 4;
28 constexpr uint32_t N_BITS_IN_WORD32 = 32;
29 constexpr uint32_t N_BITS_IN_BYTE = 8;
30 constexpr uint32_t N_BITS_IN_WORD16 = 16;
31 constexpr uint32_t MASK_BYTE = 0xff;
32 constexpr uint32_t NULL_SIZE = 0;
33
34 // NSW trigger general
35 constexpr uint32_t NPFEBS = 24;
36 constexpr uint32_t NPADS = 104;
37 constexpr uint32_t NLAYERS = 8;
38 constexpr uint32_t NLAYERS_PER_QUAD = 4;
39 constexpr uint32_t N_BITS_IN_PHIID = 6;
40 constexpr uint32_t N_BITS_IN_BANDID = 8;
41 constexpr uint32_t N_SEGMENTS_IN_BC = 4;
42 constexpr uint32_t BITMASK_PHIID = (1 << N_BITS_IN_PHIID) - 1;
43 constexpr uint32_t BITMASK_BANDID = (1 << N_BITS_IN_BANDID) - 1;
44 constexpr uint32_t N_CHAN_PER_VMM = 64;
45
46 // NSW header and orbit ID - all units are bits
47 constexpr uint32_t SIZE_SWROD = 64;
48 constexpr uint32_t SIZE_FLAGS = 7;
49 constexpr uint32_t SIZE_EC = 1;
50 constexpr uint32_t SIZE_SECID = 4;
51 constexpr uint32_t SIZE_FRAGID = 4;
52 constexpr uint32_t SIZE_SPARE = 2;
53 constexpr uint32_t SIZE_ORBIT = 2;
54 constexpr uint32_t SIZE_BCID = 12;
55 constexpr uint32_t SIZE_L1ID_31_16 = 16;
56 constexpr uint32_t SIZE_L1ID_15_00 = 16;
57 constexpr uint32_t SIZE_ORBITID = 12;
58 constexpr uint32_t SIZE_ORBIT1 = 4;
59 constexpr size_t HEADER_N = 12;
60 constexpr std::array<uint32_t, HEADER_N> HEADER_SIZES = {
63 SIZE_EC,
73 };
74 // NB: std::accumulate is constexpr since C++20
75 constexpr uint32_t ZERO{0};
76 const uint32_t FIRSTBIT_SWROD = std::accumulate(HEADER_SIZES.cbegin(), HEADER_SIZES.cbegin() + 0, ZERO);
77 const uint32_t FIRSTBIT_FLAGS = std::accumulate(HEADER_SIZES.cbegin(), HEADER_SIZES.cbegin() + 1, ZERO);
78 const uint32_t FIRSTBIT_EC = std::accumulate(HEADER_SIZES.cbegin(), HEADER_SIZES.cbegin() + 2, ZERO);
79 const uint32_t FIRSTBIT_SECID = std::accumulate(HEADER_SIZES.cbegin(), HEADER_SIZES.cbegin() + 3, ZERO);
80 const uint32_t FIRSTBIT_FRAGID = std::accumulate(HEADER_SIZES.cbegin(), HEADER_SIZES.cbegin() + 4, ZERO);
81 const uint32_t FIRSTBIT_SPARE = std::accumulate(HEADER_SIZES.cbegin(), HEADER_SIZES.cbegin() + 5, ZERO);
82 const uint32_t FIRSTBIT_ORBIT = std::accumulate(HEADER_SIZES.cbegin(), HEADER_SIZES.cbegin() + 6, ZERO);
83 const uint32_t FIRSTBIT_BCID = std::accumulate(HEADER_SIZES.cbegin(), HEADER_SIZES.cbegin() + 7, ZERO);
84 const uint32_t FIRSTBIT_L1ID_31_16 = std::accumulate(HEADER_SIZES.cbegin(), HEADER_SIZES.cbegin() + 8, ZERO);
85 const uint32_t FIRSTBIT_L1ID_15_00 = std::accumulate(HEADER_SIZES.cbegin(), HEADER_SIZES.cbegin() + 9, ZERO);
86 const uint32_t FIRSTBIT_ORBITID = std::accumulate(HEADER_SIZES.cbegin(), HEADER_SIZES.cbegin() + 10, ZERO);
87 const uint32_t FIRSTBIT_ORBIT1 = std::accumulate(HEADER_SIZES.cbegin(), HEADER_SIZES.cbegin() + 11, ZERO);
88 const uint32_t SIZE_HEADER = std::accumulate(HEADER_SIZES.cbegin(), HEADER_SIZES.cend(), ZERO);
90
91 // decompression (units: bits)
93 constexpr uint32_t SIZE_MULT = 12;
94 constexpr uint32_t SIZE_MULT0 = 4;
95 constexpr uint32_t SIZE_PHIID_23_16 = 8;
96 constexpr uint32_t SIZE_PHIID0 = 8;
97 constexpr uint32_t SIZE_PHIID_15_00 = 16;
98 constexpr uint32_t SIZE_BANDID_31_16 = 16;
99 constexpr uint32_t SIZE_BANDID_15_00 = 16;
100 constexpr uint32_t SIZE_L0SIZE = 8;
101 constexpr uint32_t SIZE_L1SIZE = 8;
102 constexpr uint32_t SIZE_L2_31_16 = 16;
103 constexpr uint32_t SIZE_L2_15_00 = 16;
104 constexpr uint32_t SIZE_L2 = SIZE_L2_31_16 + SIZE_L2_15_00;
105 constexpr uint32_t SIZE_STATUS = 16;
106 constexpr size_t DECOMP_N = 11;
107 constexpr std::array<uint32_t, DECOMP_N> DECOMP_SIZES = {
108 SIZE_MULT,
119 };
120 const uint32_t FIRSTBIT_MULT = std::accumulate(DECOMP_SIZES.cbegin(), DECOMP_SIZES.cbegin() + 0, ZERO);
121 const uint32_t FIRSTBIT_MULT0 = std::accumulate(DECOMP_SIZES.cbegin(), DECOMP_SIZES.cbegin() + 1, ZERO);
122 const uint32_t FIRSTBIT_PHIID_23_16 = std::accumulate(DECOMP_SIZES.cbegin(), DECOMP_SIZES.cbegin() + 2, ZERO);
123 const uint32_t FIRSTBIT_PHIID0 = std::accumulate(DECOMP_SIZES.cbegin(), DECOMP_SIZES.cbegin() + 3, ZERO);
124 const uint32_t FIRSTBIT_PHIID_15_00 = std::accumulate(DECOMP_SIZES.cbegin(), DECOMP_SIZES.cbegin() + 4, ZERO);
125 const uint32_t FIRSTBIT_BANDID_31_16 = std::accumulate(DECOMP_SIZES.cbegin(), DECOMP_SIZES.cbegin() + 5, ZERO);
126 const uint32_t FIRSTBIT_BANDID_15_00 = std::accumulate(DECOMP_SIZES.cbegin(), DECOMP_SIZES.cbegin() + 6, ZERO);
127 const uint32_t FIRSTBIT_L0SIZE = std::accumulate(DECOMP_SIZES.cbegin(), DECOMP_SIZES.cbegin() + 7, ZERO);
128 const uint32_t FIRSTBIT_L1SIZE = std::accumulate(DECOMP_SIZES.cbegin(), DECOMP_SIZES.cbegin() + 8, ZERO);
129 const uint32_t FIRSTBIT_L2_31_16 = std::accumulate(DECOMP_SIZES.cbegin(), DECOMP_SIZES.cbegin() + 9, ZERO);
130 const uint32_t FIRSTBIT_L2_15_00 = std::accumulate(DECOMP_SIZES.cbegin(), DECOMP_SIZES.cbegin() + 10, ZERO);
131 const uint32_t FIRSTBIT_L1 = std::accumulate(DECOMP_SIZES.cbegin(), DECOMP_SIZES.cend(), ZERO);
132
133 // starting with L1, the data has variable length, and therefore cannot be constant'd D:
134 constexpr uint32_t SIZE_TRAILER = 0 * N_BITS_IN_BYTE;
135 constexpr uint32_t CELL_SIZE = 8;
136 constexpr uint32_t PAD_TO_WORD32 = 2; // bytes
137
138 using ArrayOfPfebChannels = std::array<std::array<uint8_t, NPADS>, NPFEBS>;
139 using ArrayOfPfebs = std::array<size_t, NPFEBS>;
140 }
141
143 {
144
145 public:
146
147 NSWPadTriggerL1a(const uint32_t* bs, const uint32_t remaining);
148 virtual ~NSWPadTriggerL1a() = default;
149
150 /*
151 Public interface
152 */
153 uint32_t getNumberOfHits() const { return m_hit_n; };
154 uint32_t getNumberOfPfebs() const { return m_pfeb_n; };
155 uint32_t getNumberOfTriggers() const { return m_trigger_n; };
156 uint32_t getNumberOfBcids() const { return m_bcid_n; };
157 const std::vector<uint32_t>& getHitRelBcids() const { return m_hit_relbcid; };
158 const std::vector<uint32_t>& getHitPfebs() const { return m_hit_pfeb; };
159 const std::vector<uint32_t>& getHitTdsChannels() const { return m_hit_tdschannel; };
160 const std::vector<uint32_t>& getHitVmmChannels() const { return m_hit_vmmchannel; };
161 const std::vector<uint32_t>& getHitVmms() const { return m_hit_vmm; };
162 const std::vector<uint32_t>& getHitPadChannels() const { return m_hit_padchannel; };
163 const std::vector<uint32_t>& getPfebAddresses() const { return m_pfeb_addr; };
164 const std::vector<uint32_t>& getPfebNChannels() const { return m_pfeb_nchan; };
165 const std::vector<uint32_t>& getPfebDisconnecteds() const { return m_pfeb_disconnected; };
166 const std::vector<uint32_t>& getTriggerBandIds() const { return m_trigger_bandid; };
167 const std::vector<uint32_t>& getTriggerPhiIds() const { return m_trigger_phiid; };
168 const std::vector<uint32_t>& getTriggerRelBcids() const { return m_trigger_relbcid; };
169 const std::vector<uint32_t>& getBcidRels() const { return m_bcid_rel; };
170 const std::vector<uint32_t>& getBcidStatuses() const { return m_bcid_status; };
171 const std::vector<uint32_t>& getBcidMultZeros() const { return m_bcid_multzero; };
172 const std::vector<uint32_t>& getBcidMultiplicities() const { return m_bcid_multiplicity; };
173
174 /*
175 Public interface: NSW header
176 */
177 uint32_t getFlags() const { return m_decoded.flags; };
178 uint32_t getEc() const { return m_decoded.ec; };
179 uint32_t getFragid() const { return m_decoded.fragid; };
180 uint32_t getSecid() const { return m_decoded.secid; };
181 uint32_t getSpare() const { return m_decoded.spare; };
182 uint32_t getOrbit() const { return m_decoded.orbit; };
183 uint32_t getBcid() const { return m_decoded.bcid; };
184 uint32_t getL1id() const { return m_decoded.l1id; };
185
186 /*
187 Public interface: NSW trailer
188 */
189 uint16_t getCRC() const { return m_decoded.crc; };
190
191 /*
192 Public interface: payload
193 */
194 uint32_t getOrbitid() const { return m_decoded.orbitid; };
195 uint32_t getOrbit1() const { return m_decoded.orbit1; };
196 uint32_t getStatus() const { return m_decoded.status; };
197
198 /*
199 Decode large sector from sector [0x0-0xf]
200 NB: sector=0 = A01 = Large
201 */
202 static bool isLarge(const uint32_t sec) {
203 return sec % 2 == 0;
204 }
205
206 /*
207 Decode small sector from sector [0x0-0xf]
208 */
209 static bool isSmall(const uint32_t sec) {
210 return not isLarge(sec);
211 }
212
213 /*
214 Decode A-side from sourceid
215 */
216 static bool isA(const uint32_t sourceid) {
217 return static_cast<eformat::SubDetector>((sourceid >> 16) & 0xff)
218 == eformat::MUON_STGC_ENDCAP_A_SIDE;
219 }
220
221 /*
222 Decode C-side from sourceid
223 */
224 static bool isC(const uint32_t sourceid) {
225 return not isA(sourceid);
226 }
227
228 /*
229 Decode radius [0-2] from pfeb index [0-23]
230 */
231 static uint32_t radius(const uint32_t pfeb) {
232 return pfeb / Constants::NLAYERS;
233 }
234
235 /*
236 Decode layer [0-7] from pfeb index [0-23]
237 */
238 static uint32_t layer(const uint32_t pfeb) {
239 return pfeb % Constants::NLAYERS;
240 }
241
242 /*
243 Decode sector [0x0-0xf] from sourceid [0xXXXXXXX0-0xXXXXXXXf]
244 */
245 static uint32_t sector(const uint32_t sourceid) {
246 return sourceid & 0xf;
247 }
248
249 /*
250 Decode quad [0-1] from pfeb [0-23]
251 */
252 static uint32_t quad(const uint32_t pfeb) {
253 return layer(pfeb) / Constants::NLAYERS_PER_QUAD;
254 }
255
256 /*
257 Decode quad layer [0-3] from pfeb [0-23]
258 */
259 static uint32_t quadlayer(const uint32_t pfeb) {
260 return layer(pfeb) % Constants::NLAYERS_PER_QUAD;
261 }
262
263 /*
264 Decode offline gasgap [1-4] from pfeb [0-23]
265 */
266 static uint32_t offlineGasgap(const uint32_t pfeb) {
267 return quadlayer(layer(pfeb)) + 1;
268 }
269
270 /*
271 Decode offline multilayer [1-2] from pfeb [0-23]
272 */
273 static uint32_t offlineMultilayer(const uint32_t pfeb) {
274 return quad(layer(pfeb)) + 1;
275 }
276
277 /*
278 Decode offline channel number from electronics numbering
279 */
280 static uint32_t offlineChannelNumber(const uint32_t sec,
281 const uint32_t pfeb,
282 const uint32_t vmm,
283 const uint32_t vmmchan) {
284 static const Muon::nsw::MapperSTG mapper;
285 return mapper.channel_number(Muon::nsw::OFFLINE_CHANNEL_TYPE_PAD, isLarge(sec), radius(pfeb), layer(pfeb), vmm, vmmchan);
286 }
287
288 /*
289 Decode offline station eta [1-3] from pfeb index [0-23]
290 */
291 static uint32_t offlineStationAbsEta(const uint32_t pfeb) {
292 return radius(pfeb) + 1;
293 }
294
295 /*
296 Decode offline station phi [1-8] from sourceid [0xXXXXXXX0-0xXXXXXXXf]
297 */
298 static uint32_t offlineStationPhi(const uint32_t sourceid) {
299 return sector(sourceid) / 2 + 1;
300 }
301
302 /*
303 Decode offline station name/type [STL, STS] from sector [0x0-0xf]
304 */
305 static std::string offlineStationName(const uint32_t sec) {
306 return isLarge(sec) ? "STL" : "STS";
307 }
308
309 /*
310 Convert from pad trigger channel to TDS channel
311 */
312 static uint8_t getPadTriggerToTds(const size_t pfeb,
313 const size_t chan,
314 const std::string& size) {
315 const auto& chans = (size == "S") ?
318 return chans.at(pfeb).at(chan);
319 }
320
321 /*
322 Convert from TDS channel to pad trigger channel
323 */
324 static uint8_t getTdsToPadTrigger(const size_t pfeb,
325 const uint8_t tdschan,
326 const std::string& size) {
327 const auto& chans = (size == "S") ?
328 m_mapPadTriggerToTdsS.at(pfeb) :
329 m_mapPadTriggerToTdsL.at(pfeb);
330 return std::distance(chans.begin(), std::find(chans.begin(), chans.end(), tdschan));
331 }
332
333 /*
334 CRC utils: returns the recalculated CRC for the given data and if it matches the CRC in the data
335 */
336 bool isCRCValid() {
337 return getCRC() == computeCRC();
338 }
339
340 /*
341 Public interface: retrieve the computed CRC from the data
342 */
343 uint16_t computeCRC() const { return m_computedCRC; }
344
345 private:
346
347 // Struct for 1 BC of decompressed data
348 struct OneBCOfData {
349 uint32_t relbcid{0};
350 uint32_t multiplicity{0};
351 uint32_t mult0{0};
352 uint32_t phiid0{0};
353 uint32_t l1size{0};
354 uint32_t l0size{0};
355 uint32_t l2{0};
356 std::vector<uint32_t> nchans{};
357 std::vector<uint32_t> l1{};
358 std::vector<uint32_t> l0{};
359 std::vector<uint8_t> bytemap{};
360 std::vector< std::vector<uint8_t> > bitmaps{};
361 std::vector< std::vector<uint8_t> > hits{};
362 std::vector< std::vector<uint8_t> > tdschannels{};
363 std::vector<bool> disconnecteds{};
364 std::vector<uint32_t> phiids{};
365 std::vector<uint32_t> bandids{};
366 uint32_t status{0};
367 uint32_t bitIndex{0};
368 uint32_t byteIndex{0};
369 bool last{true};
370 };
371
372 // Struct of decoded bytestream data
373 struct DecodedData {
374 uint32_t fragid{0};
375 uint32_t secid{0};
376 uint32_t ec{0};
377 uint32_t flags{0};
378 uint32_t bcid{0};
379 uint32_t orbit{0};
380 uint32_t spare{0};
381 uint32_t l1id{0};
382 uint32_t orbitid{0};
383 uint32_t orbit1{0};
384 uint32_t status{0};
385 std::vector<OneBCOfData> data{};
386 uint16_t crc{0};
387 };
388
389 // computed CRC
390 uint16_t m_computedCRC{0};
391
392 /*
393 Struct for holding the decoded data
394 */
396
397 /*
398 Checks the size of the packet for validity.
399 */
400 uint32_t checkSize(const std::vector<uint32_t>& words) const;
401
402 /*
403 Checks the payload for any non-null words
404 */
405 bool isNullPayload(const std::vector<uint32_t>& words) const;
406
407 /*
408 Gets the index of the last data byte
409 */
410 uint32_t lastValidByteIndex(const std::vector<uint32_t>& words) const;
411
412 /*
413 Rounds an odd number up to the next even number, or returns an even number
414 */
415 uint32_t roundUpIfOdd(const uint32_t nbytes) const;
416
417 /*
418 Returns the byte at index byteIndex in list of words.
419 This treats the data as a list of bytes, rather than list of words,
420 i.e. it accounts for endian-ness and swapping.
421 */
422 uint8_t getByte(const std::vector<uint32_t>& words, size_t byteIndex) const;
423
424 /*
425 Returns a list of bits, where each bit is represented as a byte.
426 */
427 std::vector<uint8_t> getBits(const std::vector<uint32_t>& words,
428 size_t firstBit, size_t lastBit) const;
429
430 /*
431 Returns a list of bits, which is converted to a 32-bit word
432 */
433 uint32_t getBitsAsWord32(const std::vector<uint32_t>& words,
434 size_t firstBit, size_t lastBit) const;
435
436 /*
437 Returns contents of the NSW header
438 */
439 uint32_t getFlags(const std::vector<uint32_t>& words) const;
440 uint32_t getEc(const std::vector<uint32_t>& words) const;
441 uint32_t getFragid(const std::vector<uint32_t>& words) const;
442 uint32_t getSecid(const std::vector<uint32_t>& words) const;
443 uint32_t getSpare(const std::vector<uint32_t>& words) const;
444 uint32_t getOrbit(const std::vector<uint32_t>& words) const;
445 uint32_t getBcid(const std::vector<uint32_t>& words) const;
446 uint32_t getL1id(const std::vector<uint32_t>& words) const;
447
448 /*
449 Computes the CRC for the given data
450 */
451 uint16_t computeCRC(const uint32_t* bs, const uint32_t remaining);
452
453 /*
454 Returns the orbit ID
455 */
456 uint32_t getOrbitid(const std::vector<uint32_t>& words) const;
457 uint32_t getOrbit1(const std::vector<uint32_t>& words) const;
458
459 /*
460 Returns contents of the compressed/decompressed data
461 */
462 OneBCOfData getOneBcOfCompressedData(const std::vector<uint32_t>& words,
463 const uint32_t bitIndex,
464 const uint32_t relbcid,
465 const Constants::ArrayOfPfebChannels& mapPadTriggerToTds,
466 const Constants::ArrayOfPfebs& numberOfChannels) const;
467
468 uint32_t getMultiplicity(const std::vector<uint32_t>& words, const uint32_t bitIndex) const;
469
470 uint32_t getMult0(const std::vector<uint32_t>& words, const uint32_t bitIndex) const;
471
472 uint32_t getPhiid0(const std::vector<uint32_t>& words, const uint32_t bitIndex) const;
473
474 std::vector<uint32_t> getPhiids(const std::vector<uint32_t>& words, const uint32_t bitIndex) const;
475
476 std::vector<uint32_t> getBandids(const std::vector<uint32_t>& words, const uint32_t bitIndex) const;
477
478 uint32_t getL1size(const std::vector<uint32_t>& words, const uint32_t bitIndex) const;
479
480 uint32_t getL0size(const std::vector<uint32_t>& words, const uint32_t bitIndex) const;
481
482 uint32_t getL2(const std::vector<uint32_t>& words, const uint32_t bitIndex) const;
483
484 std::vector<uint32_t> getL1(const std::vector<uint32_t>& words,
485 const uint32_t bitIndex,
486 const uint32_t l1size) const;
487
488 std::vector<uint32_t> getL0(const std::vector<uint32_t>& words,
489 const uint32_t bitIndex,
490 const uint32_t l1size,
491 const uint32_t l0size) const;
492
493 uint32_t getStatus(const std::vector<uint32_t>& words, const uint32_t bitIndex) const;
494
495 std::vector<uint8_t> getBytemap(const uint32_t L2,
496 const std::vector<uint32_t>& L1,
497 const std::vector<uint32_t>& L0) const;
498
499 std::vector<uint8_t> getBitmap(const std::vector<uint8_t>& bytemap) const;
500
501 std::vector< std::vector<uint8_t> >
502 getBitmaps(const std::vector<uint8_t>& bytemap,
503 const Constants::ArrayOfPfebs& numberOfChannels) const;
504
505 std::vector< std::vector<uint8_t> >
506 getHits(const std::vector< std::vector<uint8_t> >& bitmap) const;
507
508 bool getDisconnected(const std::vector<uint8_t>& bitmap) const;
509
510 std::vector<bool> getDisconnecteds(const std::vector< std::vector<uint8_t> >& bitmap) const;
511
512 std::vector< std::vector<uint8_t> >
513 getTdsChannels(const std::vector< std::vector<uint8_t> >& hits,
514 const Constants::ArrayOfPfebChannels& mapPadTriggerToTds) const;
515
516 /*
517 Members which summarize the data
518 */
519 uint32_t m_hit_n{0};
520 uint32_t m_pfeb_n{0};
521 uint32_t m_trigger_n{0};
522 uint32_t m_bcid_n{0};
523 std::vector<uint32_t> m_hit_relbcid{};
524 std::vector<uint32_t> m_hit_pfeb{};
525 std::vector<uint32_t> m_hit_tdschannel{};
526 std::vector<uint32_t> m_hit_vmmchannel{};
527 std::vector<uint32_t> m_hit_vmm{};
528 std::vector<uint32_t> m_hit_padchannel{};
529 std::vector<uint32_t> m_pfeb_addr{};
530 std::vector<uint32_t> m_pfeb_nchan{};
531 std::vector<uint32_t> m_pfeb_disconnected{};
532 std::vector<uint32_t> m_trigger_bandid{};
533 std::vector<uint32_t> m_trigger_phiid{};
534 std::vector<uint32_t> m_trigger_relbcid{};
535 std::vector<uint32_t> m_bcid_rel{};
536 std::vector<uint32_t> m_bcid_status{};
537 std::vector<uint32_t> m_bcid_multzero{};
538 std::vector<uint32_t> m_bcid_multiplicity{};
539
540 /*
541 Configurable parameters
542 */
543 bool m_hasOrbit{true};
544
545 /*
546 Number of active channels per PFEB
547 */
549 102, 96, 96, 104, 96, 96, 91, 96,
550 56, 56, 75, 75, 56, 56, 56, 56,
551 60, 60, 70, 70, 52, 52, 56, 56,
552 }};
554 68, 68, 72, 72, 68, 68, 51, 51,
555 48, 48, 45, 45, 30, 30, 45, 45,
556 38, 39, 42, 40, 24, 24, 38, 39,
557 }};
558
559 /*
560 Mapping from pad trigger channel to TDS channel
561 */
563 { 0x67, 0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x60, 0x5f, 0x5e, 0x5d, 0x5c, 0x5b,
564 0x5a, 0x59, 0x58, 0x57, 0x56, 0x55, 0x54, 0x53, 0x52, 0x51, 0x50, 0x4f, 0x4e,
565 0x4d, 0x4c, 0x4b, 0x4a, 0x49, 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41,
566 0x40, 0x3f, 0x3e, 0x3d, 0x3c, 0x3b, 0x3a, 0x39, 0x38, 0x37, 0x36, 0x35, 0x34,
567 0x33, 0x32, 0x31, 0x30, 0x2f, 0x2e, 0x2d, 0x2c, 0x2b, 0x2a, 0x29, 0x28, 0x27,
568 0x26, 0x25, 0x24, 0x23, 0x22, 0x21, 0x20, 0x1f, 0x1e, 0x1d, 0x1c, 0x1b, 0x1a,
569 0x19, 0x18, 0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0x11, 0x10, 0x0f, 0x0e, 0x0d,
570 0x0c, 0x0b, 0x0a, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0xff, 0xff, },
571 { 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14,
572 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21,
573 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e,
574 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b,
575 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
576 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55,
577 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62,
578 0x63, 0x64, 0x65, 0x66, 0x67, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
579 { 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14,
580 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21,
581 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e,
582 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b,
583 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
584 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55,
585 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62,
586 0x63, 0x64, 0x65, 0x66, 0x67, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
587 { 0x67, 0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x60, 0x5f, 0x5e, 0x5d, 0x5c, 0x5b,
588 0x5a, 0x59, 0x58, 0x57, 0x56, 0x55, 0x54, 0x53, 0x52, 0x51, 0x50, 0x4f, 0x4e,
589 0x4d, 0x4c, 0x4b, 0x4a, 0x49, 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41,
590 0x40, 0x3f, 0x3e, 0x3d, 0x3c, 0x3b, 0x3a, 0x39, 0x38, 0x37, 0x36, 0x35, 0x34,
591 0x33, 0x32, 0x31, 0x30, 0x2f, 0x2e, 0x2d, 0x2c, 0x2b, 0x2a, 0x29, 0x28, 0x27,
592 0x26, 0x25, 0x24, 0x23, 0x22, 0x21, 0x20, 0x1f, 0x1e, 0x1d, 0x1c, 0x1b, 0x1a,
593 0x19, 0x18, 0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0x11, 0x10, 0x0f, 0x0e, 0x0d,
594 0x0c, 0x0b, 0x0a, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, },
595 { 0x67, 0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x60, 0x5f, 0x5e, 0x5d, 0x5c, 0x5b,
596 0x5a, 0x59, 0x58, 0x57, 0x56, 0x55, 0x54, 0x53, 0x52, 0x51, 0x50, 0x4f, 0x4e,
597 0x4d, 0x4c, 0x4b, 0x4a, 0x49, 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41,
598 0x40, 0x3f, 0x3e, 0x3d, 0x3c, 0x3b, 0x3a, 0x39, 0x38, 0x37, 0x36, 0x35, 0x34,
599 0x33, 0x32, 0x31, 0x30, 0x2f, 0x2e, 0x2d, 0x2c, 0x2b, 0x2a, 0x29, 0x28, 0x27,
600 0x26, 0x25, 0x24, 0x23, 0x22, 0x21, 0x20, 0x1f, 0x1e, 0x1d, 0x1c, 0x1b, 0x1a,
601 0x19, 0x18, 0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0x11, 0x10, 0x0f, 0x0e, 0x0d,
602 0x0c, 0x0b, 0x0a, 0x09, 0x08, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
603 { 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14,
604 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21,
605 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e,
606 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b,
607 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
608 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55,
609 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62,
610 0x63, 0x64, 0x65, 0x66, 0x67, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
611 { 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19,
612 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26,
613 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33,
614 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40,
615 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d,
616 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
617 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
618 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
619 { 0x62, 0x61, 0x60, 0x5f, 0x5e, 0x5d, 0x5c, 0x5b, 0x5a, 0x59, 0x58, 0x57, 0x56,
620 0x55, 0x54, 0x53, 0x52, 0x51, 0x50, 0x4f, 0x4e, 0x4d, 0x4c, 0x4b, 0x4a, 0x49,
621 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41, 0x40, 0x3f, 0x3e, 0x3d, 0x3c,
622 0x3b, 0x3a, 0x39, 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x2f,
623 0x2e, 0x2d, 0x2c, 0x2b, 0x2a, 0x29, 0x28, 0x27, 0x26, 0x25, 0x24, 0x23, 0x22,
624 0x21, 0x20, 0x1f, 0x1e, 0x1d, 0x1c, 0x1b, 0x1a, 0x19, 0x18, 0x17, 0x16, 0x15,
625 0x14, 0x13, 0x12, 0x11, 0x10, 0x0f, 0x0e, 0x0d, 0x0c, 0x0b, 0x0a, 0x09, 0x08,
626 0x07, 0x06, 0x05, 0x04, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
627 { 0x5d, 0x5c, 0x5b, 0x5a, 0x59, 0x58, 0x57, 0x56, 0x55, 0x54, 0x53, 0x52, 0x51,
628 0x50, 0x4f, 0x4e, 0x4d, 0x4c, 0x4b, 0x4a, 0x49, 0x48, 0x47, 0x46, 0x45, 0x44,
629 0x43, 0x42, 0x41, 0x40, 0x3f, 0x3e, 0x3d, 0x3c, 0x3b, 0x3a, 0x39, 0x38, 0x37,
630 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x2f, 0x2e, 0x2d, 0x2c, 0x2b, 0x2a,
631 0x29, 0x28, 0x27, 0x26, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
632 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
633 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
634 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
635 { 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e,
636 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b,
637 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
638 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55,
639 0x56, 0x57, 0x58, 0x59, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
640 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
641 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
642 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
643 { 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24,
644 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31,
645 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e,
646 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b,
647 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
648 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0xff, 0xff, 0xff,
649 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
650 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
651 { 0x67, 0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x60, 0x5f, 0x5e, 0x5d, 0x5c, 0x5b,
652 0x5a, 0x59, 0x58, 0x57, 0x56, 0x55, 0x54, 0x53, 0x52, 0x51, 0x50, 0x4f, 0x4e,
653 0x4d, 0x4c, 0x4b, 0x4a, 0x49, 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41,
654 0x40, 0x3f, 0x3e, 0x3d, 0x3c, 0x3b, 0x3a, 0x39, 0x38, 0x37, 0x36, 0x35, 0x34,
655 0x33, 0x32, 0x31, 0x30, 0x2f, 0x2e, 0x2d, 0x2c, 0x2b, 0x2a, 0x29, 0x28, 0x27,
656 0x26, 0x25, 0x24, 0x23, 0x22, 0x21, 0x20, 0x1f, 0x1e, 0x1d, 0xff, 0xff, 0xff,
657 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
658 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
659 { 0x5d, 0x5c, 0x5b, 0x5a, 0x59, 0x58, 0x57, 0x56, 0x55, 0x54, 0x53, 0x52, 0x51,
660 0x50, 0x4f, 0x4e, 0x4d, 0x4c, 0x4b, 0x4a, 0x49, 0x48, 0x47, 0x46, 0x45, 0x44,
661 0x43, 0x42, 0x41, 0x40, 0x3f, 0x3e, 0x3d, 0x3c, 0x3b, 0x3a, 0x39, 0x38, 0x37,
662 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x2f, 0x2e, 0x2d, 0x2c, 0x2b, 0x2a,
663 0x29, 0x28, 0x27, 0x26, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
664 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
665 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
666 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
667 { 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e,
668 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b,
669 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
670 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55,
671 0x56, 0x57, 0x58, 0x59, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
672 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
673 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
674 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
675 { 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e,
676 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b,
677 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
678 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55,
679 0x56, 0x57, 0x58, 0x59, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
680 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
681 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
682 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
683 { 0x5d, 0x5c, 0x5b, 0x5a, 0x59, 0x58, 0x57, 0x56, 0x55, 0x54, 0x53, 0x52, 0x51,
684 0x50, 0x4f, 0x4e, 0x4d, 0x4c, 0x4b, 0x4a, 0x49, 0x48, 0x47, 0x46, 0x45, 0x44,
685 0x43, 0x42, 0x41, 0x40, 0x3f, 0x3e, 0x3d, 0x3c, 0x3b, 0x3a, 0x39, 0x38, 0x37,
686 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x2f, 0x2e, 0x2d, 0x2c, 0x2b, 0x2a,
687 0x29, 0x28, 0x27, 0x26, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
688 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
689 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
690 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
691 { 0x55, 0x54, 0x53, 0x52, 0x51, 0x50, 0x4f, 0x4e, 0x4d, 0x4c, 0x4b, 0x4a, 0x49,
692 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41, 0x40, 0x3f, 0x3e, 0x3d, 0x3c,
693 0x3b, 0x3a, 0x39, 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x2f,
694 0x2e, 0x2d, 0x2c, 0x2b, 0x2a, 0x29, 0x28, 0x27, 0x26, 0x25, 0x24, 0x23, 0x22,
695 0x21, 0x20, 0x1f, 0x1e, 0x1d, 0x1c, 0x1b, 0x1a, 0xff, 0xff, 0xff, 0xff, 0xff,
696 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
697 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
698 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
699 { 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
700 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45,
701 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52,
702 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
703 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0xff, 0xff, 0xff, 0xff, 0xff,
704 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
705 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
706 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
707 { 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e,
708 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b,
709 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
710 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55,
711 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62,
712 0x63, 0x64, 0x65, 0x66, 0x67, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
713 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
714 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
715 { 0x5f, 0x5e, 0x5d, 0x5c, 0x5b, 0x5a, 0x59, 0x58, 0x57, 0x56, 0x55, 0x54, 0x53,
716 0x52, 0x51, 0x50, 0x4f, 0x4e, 0x4d, 0x4c, 0x4b, 0x4a, 0x49, 0x48, 0x47, 0x46,
717 0x45, 0x44, 0x43, 0x42, 0x41, 0x40, 0x3f, 0x3e, 0x3d, 0x3c, 0x3b, 0x3a, 0x39,
718 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x2f, 0x2e, 0x2d, 0x2c,
719 0x2b, 0x2a, 0x29, 0x28, 0x27, 0x26, 0x25, 0x24, 0x23, 0x22, 0x21, 0x20, 0x1f,
720 0x1e, 0x1d, 0x1c, 0x1b, 0x1a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
721 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
722 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
723 { 0x4d, 0x4c, 0x4b, 0x4a, 0x49, 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41,
724 0x40, 0x3f, 0x3e, 0x3d, 0x3c, 0x3b, 0x3a, 0x39, 0x38, 0x37, 0x36, 0x35, 0x34,
725 0x33, 0x32, 0x31, 0x30, 0x2f, 0x2e, 0x2d, 0x2c, 0x2b, 0x2a, 0x29, 0x28, 0x27,
726 0x26, 0x25, 0x24, 0x23, 0x22, 0x21, 0x20, 0x1f, 0x1e, 0x1d, 0x1c, 0x1b, 0x1a,
727 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
728 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
729 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
730 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
731 { 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40,
732 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d,
733 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
734 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
735 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
736 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
737 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
738 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
739 { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c,
740 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49,
741 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56,
742 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63,
743 0x64, 0x65, 0x66, 0x67, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
744 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
745 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
746 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
747 { 0x51, 0x50, 0x4f, 0x4e, 0x4d, 0x4c, 0x4b, 0x4a, 0x49, 0x48, 0x47, 0x46, 0x45,
748 0x44, 0x43, 0x42, 0x41, 0x40, 0x3f, 0x3e, 0x3d, 0x3c, 0x3b, 0x3a, 0x39, 0x38,
749 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x2f, 0x2e, 0x2d, 0x2c, 0x2b,
750 0x2a, 0x29, 0x28, 0x27, 0x26, 0x25, 0x24, 0x23, 0x22, 0x21, 0x20, 0x1f, 0x1e,
751 0x1d, 0x1c, 0x1b, 0x1a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
752 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
753 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
754 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
755 }};
757 { 0x67, 0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x60, 0x5f, 0x5e, 0x5d, 0x5c, 0x5b,
758 0x5a, 0x59, 0x58, 0x57, 0x56, 0x55, 0x54, 0x53, 0x52, 0x51, 0x50, 0x4f, 0x4e,
759 0x4d, 0x4c, 0x4b, 0x4a, 0x49, 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41,
760 0x40, 0x3f, 0x3e, 0x3d, 0x3c, 0x3b, 0x3a, 0x39, 0x38, 0x37, 0x36, 0x35, 0x34,
761 0x33, 0x32, 0x31, 0x30, 0x2f, 0x2e, 0x2d, 0x2c, 0x2b, 0x2a, 0x29, 0x28, 0x27,
762 0x26, 0x25, 0x24, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
763 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
764 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
765 { 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24,
766 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31,
767 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e,
768 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b,
769 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
770 0x59, 0x5a, 0x5b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
771 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
772 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
773 { 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24,
774 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31,
775 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e,
776 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b,
777 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
778 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
779 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
780 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
781 { 0x67, 0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x60, 0x5f, 0x5e, 0x5d, 0x5c, 0x5b,
782 0x5a, 0x59, 0x58, 0x57, 0x56, 0x55, 0x54, 0x53, 0x52, 0x51, 0x50, 0x4f, 0x4e,
783 0x4d, 0x4c, 0x4b, 0x4a, 0x49, 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41,
784 0x40, 0x3f, 0x3e, 0x3d, 0x3c, 0x3b, 0x3a, 0x39, 0x38, 0x37, 0x36, 0x35, 0x34,
785 0x33, 0x32, 0x31, 0x30, 0x2f, 0x2e, 0x2d, 0x2c, 0x2b, 0x2a, 0x29, 0x28, 0x27,
786 0x26, 0x25, 0x24, 0x23, 0x22, 0x21, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
787 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
788 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
789 { 0x67, 0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x60, 0x5f, 0x5e, 0x5d, 0x5c, 0x5b,
790 0x5a, 0x59, 0x58, 0x57, 0x56, 0x55, 0x54, 0x53, 0x52, 0x51, 0x50, 0x4f, 0x4e,
791 0x4d, 0x4c, 0x4b, 0x4a, 0x49, 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41,
792 0x40, 0x3f, 0x3e, 0x3d, 0x3c, 0x3b, 0x3a, 0x39, 0x38, 0x37, 0x36, 0x35, 0x34,
793 0x33, 0x32, 0x31, 0x30, 0x2f, 0x2e, 0x2d, 0x2c, 0x2b, 0x2a, 0x29, 0x28, 0x27,
794 0x26, 0x25, 0x24, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
795 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
796 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
797 { 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24,
798 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31,
799 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e,
800 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b,
801 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
802 0x59, 0x5a, 0x5b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
803 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
804 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
805 { 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24,
806 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31,
807 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e,
808 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0xff,
809 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
810 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
811 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
812 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
813 { 0x67, 0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x60, 0x5f, 0x5e, 0x5d, 0x5c, 0x5b,
814 0x5a, 0x59, 0x58, 0x57, 0x56, 0x55, 0x54, 0x53, 0x52, 0x51, 0x50, 0x4f, 0x4e,
815 0x4d, 0x4c, 0x4b, 0x4a, 0x49, 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41,
816 0x40, 0x3f, 0x3e, 0x3d, 0x3c, 0x3b, 0x3a, 0x39, 0x38, 0x37, 0x36, 0x35, 0xff,
817 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
818 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
819 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
820 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
821 { 0x57, 0x56, 0x55, 0x54, 0x53, 0x52, 0x51, 0x50, 0x4f, 0x4e, 0x4d, 0x4c, 0x4b,
822 0x4a, 0x49, 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41, 0x40, 0x3f, 0x3e,
823 0x3d, 0x3c, 0x3b, 0x3a, 0x39, 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31,
824 0x30, 0x2f, 0x2e, 0x2d, 0x2c, 0x2b, 0x2a, 0x29, 0x28, 0xff, 0xff, 0xff, 0xff,
825 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
826 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
827 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
828 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
829 { 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34,
830 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41,
831 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e,
832 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0xff, 0xff, 0xff, 0xff,
833 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
834 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
835 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
836 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
837 { 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36,
838 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43,
839 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50,
840 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
841 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
842 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
843 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
844 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
845 { 0x55, 0x54, 0x53, 0x52, 0x51, 0x50, 0x4f, 0x4e, 0x4d, 0x4c, 0x4b, 0x4a, 0x49,
846 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41, 0x40, 0x3f, 0x3e, 0x3d, 0x3c,
847 0x3b, 0x3a, 0x39, 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x2f,
848 0x2e, 0x2d, 0x2c, 0x2b, 0x2a, 0x29, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
849 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
850 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
851 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
852 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
853 { 0x4e, 0x4d, 0x4c, 0x4b, 0x4a, 0x49, 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42,
854 0x41, 0x40, 0x3f, 0x3e, 0x3d, 0x3c, 0x3b, 0x3a, 0x39, 0x38, 0x37, 0x36, 0x35,
855 0x34, 0x33, 0x32, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
856 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
857 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
858 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
859 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
860 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
861 { 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d,
862 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
863 0x4b, 0x4c, 0x4d, 0x4e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
864 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
865 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
866 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
867 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
868 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
869 { 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36,
870 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43,
871 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50,
872 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
873 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
874 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
875 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
876 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
877 { 0x55, 0x54, 0x53, 0x52, 0x51, 0x50, 0x4f, 0x4e, 0x4d, 0x4c, 0x4b, 0x4a, 0x49,
878 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41, 0x40, 0x3f, 0x3e, 0x3d, 0x3c,
879 0x3b, 0x3a, 0x39, 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x2f,
880 0x2e, 0x2d, 0x2c, 0x2b, 0x2a, 0x29, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
881 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
882 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
883 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
884 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
885 { 0xff, 0x67, 0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x60, 0x5f, 0x5e, 0x5d, 0x5c,
886 0x5b, 0x5a, 0x59, 0x58, 0x57, 0x56, 0x55, 0x54, 0x53, 0x52, 0x51, 0x50, 0x4f,
887 0x4e, 0x4d, 0x4c, 0x4b, 0x4a, 0x49, 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42,
888 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
889 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
890 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
891 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
892 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
893 { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d,
894 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a,
895 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
896 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
897 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
898 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
899 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
900 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
901 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c,
902 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19,
903 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26,
904 0x27, 0x28, 0x29, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
905 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
906 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
907 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
908 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
909 { 0xff, 0xff, 0x67, 0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x60, 0x5f, 0x5e, 0x5d,
910 0x5c, 0x5b, 0x5a, 0x59, 0x58, 0x57, 0x56, 0x55, 0x54, 0x53, 0x52, 0x51, 0x50,
911 0x4f, 0x4e, 0x4d, 0x4c, 0x4b, 0x4a, 0x49, 0x48, 0x47, 0x46, 0x45, 0x44, 0x43,
912 0x42, 0x41, 0x40, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
913 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
914 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
915 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
916 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
917 { 0x60, 0x5f, 0x5e, 0x5d, 0x5c, 0x5b, 0x5a, 0x59, 0x58, 0x57, 0x56, 0x55, 0x54,
918 0x53, 0x52, 0x51, 0x50, 0x4f, 0x4e, 0x4d, 0x4c, 0x4b, 0x4a, 0x49, 0xff, 0xff,
919 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
920 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
921 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
922 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
923 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
924 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
925 { 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55,
926 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0xff, 0xff,
927 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
928 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
929 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
930 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
931 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
932 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
933 { 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e,
934 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b,
935 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0xff,
936 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
937 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
938 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
939 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
940 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
941 { 0x67, 0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x60, 0x5f, 0x5e, 0x5d, 0x5c, 0x5b,
942 0x5a, 0x59, 0x58, 0x57, 0x56, 0x55, 0x54, 0x53, 0x52, 0x51, 0x50, 0x4f, 0x4e,
943 0x4d, 0x4c, 0x4b, 0x4a, 0x49, 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41,
944 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
945 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
946 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
947 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
948 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },
949 }};
950
951 };
952
953 }
954}
955
956#endif
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
static uint32_t offlineStationAbsEta(const uint32_t pfeb)
std::vector< uint32_t > getPhiids(const std::vector< uint32_t > &words, const uint32_t bitIndex) const
uint32_t getSecid(const std::vector< uint32_t > &words) const
static uint8_t getPadTriggerToTds(const size_t pfeb, const size_t chan, const std::string &size)
static uint32_t offlineGasgap(const uint32_t pfeb)
std::vector< std::vector< uint8_t > > getTdsChannels(const std::vector< std::vector< uint8_t > > &hits, const Constants::ArrayOfPfebChannels &mapPadTriggerToTds) const
static constexpr Constants::ArrayOfPfebs m_numberOfChannelsS
std::vector< uint8_t > getBytemap(const uint32_t L2, const std::vector< uint32_t > &L1, const std::vector< uint32_t > &L0) const
NSWPadTriggerL1a(const uint32_t *bs, const uint32_t remaining)
static uint8_t getTdsToPadTrigger(const size_t pfeb, const uint8_t tdschan, const std::string &size)
static uint32_t quadlayer(const uint32_t pfeb)
uint32_t getL1id(const std::vector< uint32_t > &words) const
virtual ~NSWPadTriggerL1a()=default
const std::vector< uint32_t > & getPfebDisconnecteds() const
uint32_t checkSize(const std::vector< uint32_t > &words) const
uint32_t getMult0(const std::vector< uint32_t > &words, const uint32_t bitIndex) const
static uint32_t radius(const uint32_t pfeb)
std::vector< uint32_t > m_pfeb_disconnected
uint32_t getOrbit1(const std::vector< uint32_t > &words) const
uint32_t roundUpIfOdd(const uint32_t nbytes) const
bool getDisconnected(const std::vector< uint8_t > &bitmap) const
static uint32_t quad(const uint32_t pfeb)
std::vector< uint32_t > m_trigger_bandid
std::vector< uint32_t > getL0(const std::vector< uint32_t > &words, const uint32_t bitIndex, const uint32_t l1size, const uint32_t l0size) const
const std::vector< uint32_t > & getBcidMultZeros() const
const std::vector< uint32_t > & getTriggerRelBcids() const
const std::vector< uint32_t > & getHitPfebs() const
static bool isLarge(const uint32_t sec)
const std::vector< uint32_t > & getTriggerBandIds() const
const std::vector< uint32_t > & getBcidStatuses() const
uint32_t getBcid(const std::vector< uint32_t > &words) const
const std::vector< uint32_t > & getBcidRels() const
static uint32_t layer(const uint32_t pfeb)
bool isNullPayload(const std::vector< uint32_t > &words) const
static constexpr Constants::ArrayOfPfebChannels m_mapPadTriggerToTdsS
std::vector< uint32_t > getBandids(const std::vector< uint32_t > &words, const uint32_t bitIndex) const
uint32_t getSpare(const std::vector< uint32_t > &words) const
static uint32_t offlineChannelNumber(const uint32_t sec, const uint32_t pfeb, const uint32_t vmm, const uint32_t vmmchan)
uint32_t getPhiid0(const std::vector< uint32_t > &words, const uint32_t bitIndex) const
uint32_t getFragid(const std::vector< uint32_t > &words) const
std::vector< uint32_t > m_bcid_multiplicity
uint16_t computeCRC(const uint32_t *bs, const uint32_t remaining)
static uint32_t offlineStationPhi(const uint32_t sourceid)
std::vector< uint32_t > m_hit_vmmchannel
const std::vector< uint32_t > & getHitVmmChannels() const
std::vector< std::vector< uint8_t > > getBitmaps(const std::vector< uint8_t > &bytemap, const Constants::ArrayOfPfebs &numberOfChannels) const
std::vector< bool > getDisconnecteds(const std::vector< std::vector< uint8_t > > &bitmap) const
std::vector< uint32_t > m_pfeb_nchan
uint32_t getStatus(const std::vector< uint32_t > &words, const uint32_t bitIndex) const
std::vector< uint32_t > m_hit_tdschannel
const std::vector< uint32_t > & getTriggerPhiIds() const
static std::string offlineStationName(const uint32_t sec)
const std::vector< uint32_t > & getHitTdsChannels() const
const std::vector< uint32_t > & getHitVmms() const
std::vector< uint32_t > m_hit_vmm
uint32_t getBitsAsWord32(const std::vector< uint32_t > &words, size_t firstBit, size_t lastBit) const
std::vector< uint32_t > m_hit_padchannel
const std::vector< uint32_t > & getPfebAddresses() const
static uint32_t sector(const uint32_t sourceid)
uint32_t getOrbitid(const std::vector< uint32_t > &words) const
uint32_t getEc(const std::vector< uint32_t > &words) const
const std::vector< uint32_t > & getBcidMultiplicities() const
std::vector< std::vector< uint8_t > > getHits(const std::vector< std::vector< uint8_t > > &bitmap) const
std::vector< uint32_t > m_hit_relbcid
std::vector< uint32_t > m_hit_pfeb
uint32_t getL1size(const std::vector< uint32_t > &words, const uint32_t bitIndex) const
static bool isA(const uint32_t sourceid)
std::vector< uint32_t > m_bcid_rel
std::vector< uint8_t > getBits(const std::vector< uint32_t > &words, size_t firstBit, size_t lastBit) const
uint32_t lastValidByteIndex(const std::vector< uint32_t > &words) const
static bool isSmall(const uint32_t sec)
OneBCOfData getOneBcOfCompressedData(const std::vector< uint32_t > &words, const uint32_t bitIndex, const uint32_t relbcid, const Constants::ArrayOfPfebChannels &mapPadTriggerToTds, const Constants::ArrayOfPfebs &numberOfChannels) const
uint32_t getNumberOfTriggers() const
const std::vector< uint32_t > & getHitPadChannels() const
std::vector< uint32_t > getL1(const std::vector< uint32_t > &words, const uint32_t bitIndex, const uint32_t l1size) const
static constexpr Constants::ArrayOfPfebChannels m_mapPadTriggerToTdsL
uint32_t getOrbit(const std::vector< uint32_t > &words) const
static bool isC(const uint32_t sourceid)
uint32_t getFlags(const std::vector< uint32_t > &words) const
const std::vector< uint32_t > & getHitRelBcids() const
uint32_t getMultiplicity(const std::vector< uint32_t > &words, const uint32_t bitIndex) const
std::vector< uint32_t > m_pfeb_addr
uint32_t getL2(const std::vector< uint32_t > &words, const uint32_t bitIndex) const
static constexpr Constants::ArrayOfPfebs m_numberOfChannelsL
std::vector< uint32_t > m_bcid_multzero
std::vector< uint32_t > m_trigger_relbcid
const std::vector< uint32_t > & getPfebNChannels() const
std::vector< uint32_t > m_trigger_phiid
static uint32_t offlineMultilayer(const uint32_t pfeb)
std::vector< uint8_t > getBitmap(const std::vector< uint8_t > &bytemap) const
uint8_t getByte(const std::vector< uint32_t > &words, size_t byteIndex) const
std::vector< uint32_t > m_bcid_status
uint32_t getL0size(const std::vector< uint32_t > &words, const uint32_t bitIndex) const
constexpr uint32_t PAD_TO_WORD32
constexpr uint32_t N_BITS_IN_WORD32
const uint32_t FIRSTBIT_COMPRESSION
constexpr uint32_t N_BITS_IN_WORD16
constexpr uint32_t N_BYTES_IN_WORD32
const uint32_t FIRSTBIT_L2_15_00
const uint32_t FIRSTBIT_FLAGS
const uint32_t FIRSTBIT_L1
constexpr uint32_t SIZE_L1ID_31_16
constexpr uint32_t SIZE_BANDID_31_16
const uint32_t FIRSTBIT_BCID
constexpr uint32_t NPFEBS
const uint32_t FIRSTBIT_EC
constexpr uint32_t SIZE_PHIID0
std::array< size_t, NPFEBS > ArrayOfPfebs
constexpr uint32_t SIZE_MULT
const uint32_t FIRSTBIT_BANDID_31_16
constexpr uint32_t SIZE_ORBIT1
constexpr uint32_t SIZE_L2
constexpr uint32_t NULL_SIZE
const uint32_t FIRSTBIT_SWROD
constexpr uint32_t SIZE_FLAGS
constexpr std::array< uint32_t, DECOMP_N > DECOMP_SIZES
constexpr uint32_t N_BITS_IN_PHIID
constexpr std::array< uint32_t, HEADER_N > HEADER_SIZES
constexpr uint32_t BITMASK_BANDID
constexpr uint32_t BITMASK_PHIID
const uint32_t FIRSTBIT_SECID
constexpr uint32_t SIZE_EC
constexpr uint32_t SIZE_BCID
constexpr uint32_t SIZE_L2_15_00
constexpr uint32_t SIZE_TRAILER
constexpr uint32_t NLAYERS
const uint32_t FIRSTBIT_ORBITID
constexpr uint32_t CELL_SIZE
constexpr uint32_t MASK_BYTE
constexpr uint32_t SIZE_SPARE
const uint32_t FIRSTBIT_PHIID_23_16
std::array< std::array< uint8_t, NPADS >, NPFEBS > ArrayOfPfebChannels
const uint32_t FIRSTBIT_FRAGID
const uint32_t FIRSTBIT_L2_31_16
constexpr uint32_t NPADS
const uint32_t FIRSTBIT_L0SIZE
const uint32_t FIRSTBIT_ORBIT
constexpr uint32_t SIZE_FRAGID
constexpr uint32_t SIZE_PHIID_23_16
const uint32_t SIZE_HEADER_BYTES
const uint32_t FIRSTBIT_ORBIT1
const uint32_t FIRSTBIT_SPARE
const uint32_t FIRSTBIT_MULT
const uint32_t FIRSTBIT_PHIID0
const uint32_t FIRSTBIT_PHIID_15_00
constexpr size_t DECOMP_N
constexpr uint32_t SIZE_STATUS
constexpr uint32_t SIZE_L2_31_16
constexpr uint32_t SIZE_SECID
const uint32_t FIRSTBIT_L1ID_31_16
constexpr uint32_t ZERO
constexpr uint32_t SIZE_ORBIT
constexpr uint32_t SIZE_BANDID_15_00
const uint32_t SIZE_HEADER
const uint32_t FIRSTBIT_BANDID_15_00
constexpr uint32_t SIZE_SWROD
constexpr uint32_t SIZE_ORBITID
constexpr uint32_t N_BITS_IN_BANDID
constexpr uint32_t N_BITS_IN_BYTE
const uint32_t FIRSTBIT_L1SIZE
constexpr uint32_t SIZE_PHIID_15_00
constexpr uint32_t N_SEGMENTS_IN_BC
const uint32_t FIRSTBIT_MULT0
constexpr uint32_t SIZE_MULT0
constexpr size_t HEADER_N
constexpr uint32_t N_CHAN_PER_VMM
constexpr uint32_t SIZE_L1SIZE
constexpr uint32_t SIZE_L1ID_15_00
const uint32_t FIRSTBIT_L1ID_15_00
constexpr uint32_t NLAYERS_PER_QUAD
constexpr uint32_t SIZE_L0SIZE
@ OFFLINE_CHANNEL_TYPE_PAD
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
std::vector< std::vector< uint8_t > > bitmaps
std::vector< std::vector< uint8_t > > hits
std::vector< std::vector< uint8_t > > tdschannels