Skip to content
Snippets Groups Projects
Commit ad0346b7 authored by Felix Weiglhofer's avatar Felix Weiglhofer Committed by Volker Friese
Browse files

UnpackSts: Add protection against invalid timestamps.

parent 602e4e23
No related branches found
No related tags found
1 merge request!1226UnpackSts: Add protection against invalid timestamps.
Pipeline #23069 passed
......@@ -123,11 +123,19 @@ namespace cbm::algo
messageTime -= elinkPar.fTimeOffset;
// --- Apply walk correction if applicable
if (message.GetHitAdc() <= elinkPar.fWalk.size()) { messageTime += elinkPar.fWalk[message.GetHitAdc() - 1]; }
if (message.GetHitAdc() <= elinkPar.fWalk.size()) {
double walk = elinkPar.fWalk[message.GetHitAdc() - 1];
messageTime += walk;
}
// --- Charge
double charge = elinkPar.fAdcOffset + (message.GetHitAdc() - 1) * elinkPar.fAdcGain;
if (messageTime > CbmStsDigi::kMaxTimestamp) {
monitor.fNumErrTimestampOverflow++;
return;
}
// --- Create output digi
digiVec.emplace_back(elinkPar.fAddress, channel, messageTime, charge);
}
......
......@@ -39,11 +39,19 @@
**/
class CbmStsDigi {
public: // constants
static constexpr int kNumAdcBits = 5;
static constexpr uint32_t kAdcMask = (1u << kNumAdcBits) - 1u;
static constexpr int kNumLowerAddrBits = 16;
static constexpr int kNumTimestampBits = 31;
static constexpr uint32_t kTimestampMask = (1u << kNumTimestampBits) - 1u;
static constexpr uint32_t kMaxTimestamp = kTimestampMask;
static constexpr uint32_t kTimeAddressBitMask = ~kTimestampMask;
public:
/** Default constructor **/
CbmStsDigi() = default;
/** Standard constructor
** @param address Unique element address
** @param channel Channel number
......@@ -159,15 +167,6 @@ public:
private:
friend class boost::serialization::access;
static constexpr int kNumAdcBits = 5;
static constexpr uint32_t kAdcMask = (1u << kNumAdcBits) - 1u;
static constexpr int kNumLowerAddrBits = 16;
static constexpr int kNumTimestampBits = 31;
static constexpr uint32_t kTimestampMask = (1u << kNumTimestampBits) - 1u;
static constexpr uint32_t kMaxTimestamp = kTimestampMask;
static constexpr uint32_t kTimeAddressBitMask = ~kTimestampMask;
// CUDA requires types in shared memory to have trivial constructors / destructors
#if XPU_IS_HIP_CUDA
#define CPU_ONLY(x)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment