File indexing completed on 2025-08-06 08:18:09
0001 #include "MvtxDefs.h"
0002
0003 namespace
0004 {
0005
0006
0007
0008
0009
0010
0011
0012
0013 static constexpr unsigned int kBitShiftStaveIdOffset = 9;
0014 static constexpr unsigned int kBitShiftStaveIdWidth = 7;
0015 static constexpr unsigned int kBitShiftChipIdOffset = 5;
0016 static constexpr unsigned int kBitShiftChipIdWidth = 4;
0017 static constexpr unsigned int kBitShiftStrobeIdOffset = 0;
0018 static constexpr unsigned int kBitShiftStrobeIdWidth = 5;
0019 static constexpr int strobeOffset = 16;
0020
0021
0022 static const unsigned int kBitShiftCol __attribute__((unused)) = 16;
0023 static const unsigned int kBitShiftRow __attribute__((unused)) = 0;
0024 }
0025
0026 uint8_t
0027 MvtxDefs::getStaveId(TrkrDefs::hitsetkey key)
0028 {
0029 TrkrDefs::hitsetkey tmp = (key >> kBitShiftStaveIdOffset);
0030
0031 uint8_t tmp1 = tmp;
0032 tmp1 = (tmp1 << (8 - kBitShiftStaveIdWidth));
0033 tmp1 = (tmp1 >> (8 - kBitShiftStaveIdWidth));
0034 return tmp1;
0035 }
0036
0037 uint8_t
0038 MvtxDefs::getStaveId(TrkrDefs::cluskey key)
0039 {
0040 const TrkrDefs::hitsetkey tmp = TrkrDefs::getHitSetKeyFromClusKey(key);
0041 return getStaveId(tmp);
0042 }
0043
0044 uint8_t
0045 MvtxDefs::getChipId(TrkrDefs::hitsetkey key)
0046 {
0047 TrkrDefs::hitsetkey tmp = (key >> kBitShiftChipIdOffset);
0048 uint8_t tmp1 = tmp;
0049 tmp1 = (tmp1 << (8 - kBitShiftChipIdWidth));
0050 tmp1 = (tmp1 >> (8 - kBitShiftChipIdWidth));
0051 return tmp1;
0052 }
0053
0054 uint8_t
0055 MvtxDefs::getChipId(TrkrDefs::cluskey key)
0056 {
0057 const TrkrDefs::hitsetkey tmp = TrkrDefs::getHitSetKeyFromClusKey(key);
0058 return getChipId(tmp);
0059 }
0060
0061 int MvtxDefs::getStrobeId(TrkrDefs::hitsetkey key)
0062 {
0063 TrkrDefs::hitsetkey tmp = (key >> kBitShiftStrobeIdOffset);
0064 uint8_t tmp1 = tmp;
0065 tmp1 = (tmp1 << (8 - kBitShiftStrobeIdWidth));
0066 tmp1 = (tmp1 >> (8 - kBitShiftStrobeIdWidth));
0067
0068 int tmp2 = (int) tmp1 - strobeOffset;
0069
0070 return tmp2;
0071 }
0072
0073 int MvtxDefs::getStrobeId(TrkrDefs::cluskey key)
0074 {
0075 const TrkrDefs::hitsetkey tmp = TrkrDefs::getHitSetKeyFromClusKey(key);
0076 return getStrobeId(tmp);
0077 }
0078
0079 uint16_t
0080 MvtxDefs::getCol(TrkrDefs::hitkey key)
0081 {
0082 TrkrDefs::hitkey tmp = (key >> kBitShiftCol);
0083 return tmp;
0084 }
0085
0086 uint16_t
0087 MvtxDefs::getRow(TrkrDefs::hitkey key)
0088 {
0089 TrkrDefs::hitkey tmp = (key >> kBitShiftRow);
0090 return tmp;
0091 }
0092
0093 TrkrDefs::hitkey
0094 MvtxDefs::genHitKey(const uint16_t col, const uint16_t row)
0095 {
0096 TrkrDefs::hitkey key = (col << kBitShiftCol);
0097 TrkrDefs::hitkey tmp = (row << kBitShiftRow);
0098 key |= tmp;
0099 return key;
0100 }
0101
0102 TrkrDefs::hitsetkey
0103 MvtxDefs::genHitSetKey(const uint8_t lyr, const uint8_t stave, const uint8_t chip, const int strobe_in)
0104 {
0105 TrkrDefs::hitsetkey key = TrkrDefs::genHitSetKey(TrkrDefs::TrkrId::mvtxId, lyr);
0106
0107
0108 int strobe = strobe_in + strobeOffset;
0109 if (strobe < 0)
0110 {
0111 strobe = 0;
0112 }
0113 if (strobe > 31)
0114 {
0115 strobe = 31;
0116 }
0117 unsigned int ustrobe = (unsigned int) strobe;
0118
0119 TrkrDefs::hitsetkey tmp = stave;
0120 key |= (tmp << kBitShiftStaveIdOffset);
0121 tmp = chip;
0122 key |= (tmp << kBitShiftChipIdOffset);
0123 tmp = ustrobe;
0124 key |= (tmp << kBitShiftStrobeIdOffset);
0125 return key;
0126 }
0127
0128 TrkrDefs::cluskey
0129 MvtxDefs::genClusKey(const uint8_t lyr, const uint8_t stave, const uint8_t chip, const int strobe, const uint32_t clusid)
0130 {
0131 TrkrDefs::hitsetkey key = genHitSetKey(lyr, stave, chip, strobe);
0132 return TrkrDefs::genClusKey(key, clusid);
0133 }
0134
0135 TrkrDefs::hitsetkey
0136 MvtxDefs::resetStrobe(const TrkrDefs::hitsetkey hitsetkey)
0137 {
0138
0139 TrkrDefs::hitsetkey tmp = hitsetkey;
0140
0141 tmp = (tmp >> kBitShiftStrobeIdWidth);
0142 tmp = (tmp << kBitShiftStrobeIdWidth);
0143 unsigned int zero_strobe = strobeOffset;
0144 tmp |= (zero_strobe << kBitShiftStrobeIdOffset);
0145
0146 return tmp;
0147 }
0148
0149 TrkrDefs::cluskey
0150 MvtxDefs::resetStrobe(const TrkrDefs::cluskey key)
0151 {
0152 TrkrDefs::hitsetkey tmp = TrkrDefs::getHitSetKeyFromClusKey(key);
0153 return TrkrDefs::genClusKey(resetStrobe(tmp), key);
0154 }