18void UserLogicElinkDecoder<SampleMode>::prepareAndSendCluster()
20 if (mDecodedDataHandlers.sampaChannelHandler) {
21 SampaCluster sc(mClusterTime, mSampaHeader.bunchCrossingCounter(), mSamples);
28void UserLogicElinkDecoder<ChargeSumMode>::prepareAndSendCluster()
30 if (mSamples.size() != 2) {
31 throw std::invalid_argument(fmt::format(
"expected sample size to be 2 but it is {}", mSamples.size()));
33 if (mDecodedDataHandlers.sampaChannelHandler) {
34 uint32_t q = (((
static_cast<uint32_t
>(mSamples[1]) & 0x3FF) << 10) | (
static_cast<uint32_t
>(mSamples[0]) & 0x3FF));
35 SampaCluster sc(mClusterTime, mSampaHeader.bunchCrossingCounter(), q, mClusterSize);
42bool UserLogicElinkDecoder<SampleMode>::checkDataHeader()
44 int chipAddMin = mDsId.elinkIndexInGroup() * 2;
45 int chipAddMax = chipAddMin + 1;
49 int chipAdd = mSampaHeader.chipAddress();
50 if (chipAdd < chipAddMin || chipAdd > chipAddMax) {
55 int nof10BitWords = mSampaHeader.nof10BitWords();
56 if (nof10BitWords <= 2) {
64bool UserLogicElinkDecoder<ChargeSumMode>::checkDataHeader()
66 int chipAddMin = mDsId.elinkIndexInGroup() * 2;
67 int chipAddMax = chipAddMin + 1;
71 int chipAdd = mSampaHeader.chipAddress();
72 if (chipAdd < chipAddMin || chipAdd > chipAddMax) {
77 int nof10BitWords = mSampaHeader.nof10BitWords();
78 if (nof10BitWords <= 2) {
82 if ((nof10BitWords % 4) != 0) {