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