64 void configure(
int tracklethcheader,
int halfchamberwords,
int halfchambermajor, std::bitset<16> options);
71 mTimeBinsFixed =
true;
77 mMaxErrsPrinted = nerr < 0 ? std::numeric_limits<int>::max() : nerr;
78 mMaxWarnPrinted = nwar < 0 ? std::numeric_limits<int>::max() : nwar;
98 int getWordsRejected()
const {
return mWordsRejected + mDigitWordsRejected + mTrackletWordsRejected; }
125 int parseTrackletLinkData(
int linkSize32,
int& hcid,
int& trackletWordsRejected,
int& trackletWordsReadOK,
int& numberOfTrackletsFound);
155 int mTrackletHCHeaderState{0};
156 int mHalfChamberWords{0};
157 int mHalfChamberMajor{0};
158 std::bitset<16> mOptions;
160 std::array<uint32_t, constants::HBFBUFFERMAX> mHBFPayload;
163 int mMaxErrsPrinted = 20;
164 int mMaxWarnPrinted = 20;
167 const char* mDataBufferPtr =
nullptr;
168 long mDataBufferSize;
169 const char* mCurrRdhPtr =
nullptr;
170 uint32_t mTotalHBFPayLoad = 0;
171 uint32_t mHBFoffset32 = 0;
173 HalfCRUHeader mCurrentHalfCRUHeader;
174 HalfCRUHeader mPreviousHalfCRUHeader;
175 bool mPreviousHalfCRUHeaderSet;
176 DigitHCHeader mDigitHCHeader;
178 bool mTimeBinsFixed{
false};
179 bool mHaveSeenDigitHCHeader3{
false};
180 uint32_t mPreviousDigitHCHeadersvnver;
181 uint32_t mPreviousDigitHCHeadersvnrver;
184 uint16_t mCRUEndpoint;
188 std::set<int> mHalfChamberHeaderOK;
189 std::set<std::pair<int, int>> mHalfChamberMismatches;
192 std::array<uint16_t, 15> mCurrentHalfCRULinkLengths;
193 std::array<uint8_t, 15> mCurrentHalfCRULinkErrorFlags;
195 const LinkToHCIDMapping* mLinkMap =
nullptr;
198 uint32_t mTrackletsFound{0};
199 uint32_t mDigitsFound{0};
200 uint32_t mDigitWordsRead = 0;
201 uint32_t mDigitWordsRejected = 0;
202 uint32_t mTrackletWordsRejected = 0;
203 uint32_t mTrackletWordsRead = 0;
204 uint32_t mWordsRejected = 0;
206 EventRecordContainer mEventRecords;