5#ifndef CRI_GET4_MESS_V0_01_DEF_H
6#define CRI_GET4_MESS_V0_01_DEF_H
167 return (
data >> shift) & (((
static_cast<uint64_t
>(1)) << len) - 1);
170 inline uint32_t
getField(uint32_t shift, uint32_t len)
const
172 return (
data >> shift) & (((
static_cast<uint64_t
>(1)) << len) - 1);
175 inline void setField(uint32_t shift, uint32_t len, uint32_t value)
177 uint64_t mask = (((
static_cast<uint64_t
>(1)) << len) - 1);
178 data = (
data & ~(mask << shift)) | ((static_cast<uint64_t>(value) & mask) << shift);
183 uint64_t mask = (((
static_cast<uint64_t
>(1)) << len) - 1);
184 data = (
data & ~(mask << shift)) | ((value & mask) << shift);
187 inline uint8_t
getBit(uint32_t shift)
const {
return (
data >> shift) & 1; }
189 inline void setBit(uint32_t shift, uint8_t value)
191 data = value ? (
data | ((
static_cast<uint64_t
>(1)) << shift)) : (
data & ~((
static_cast<uint64_t
>(1)) << shift));
195 inline uint32_t
getFieldBE(uint32_t shift, uint32_t len)
const
197 return (
dataBE() >> shift) & (((
static_cast<uint32_t
>(1)) << len) - 1);
199 inline uint8_t
getBitBE(uint32_t shift)
const {
return (
dataBE() >> shift) & 1; }
202 return ((
data & 0x00000000000000FF) << 56) + ((
data & 0x000000000000FF00) << 40)
203 + ((
data & 0x0000000000FF0000) << 24) + ((
data & 0x00000000FF000000) << 8)
204 + ((
data >> 8) & 0x00000000FF000000) + ((
data >> 24) & 0x0000000000FF0000)
205 + ((
data >> 40) & 0x000000000000FF00) + ((
data >> 56) & 0x00000000000000FF);
287 std::ostream& os = std::cout)
const;
294 inline static uint64_t
FullTimeStamp(uint64_t epoch, uint32_t ts) {
return (epoch << 19) | (ts & 0x7ffff); }
297 static uint64_t
CalcDistance(uint64_t start, uint64_t stop);
void PrintMessage(unsigned outType=msg_print_Cout, unsigned kind=msg_print_Human) const
FullMessage(const Message &src, uint64_t uEpIn=0)
FullMessage(const FullMessage &src)
bool operator<(const FullMessage &other) const
strict weak ordering operator, including epoch for both messages
uint64_t getExtendedEpoch() const
FullMessage & operator=(const FullMessage &src)
uint64_t fulExtendedEpoch
double GetFullTimeNs() const
void assign(const FullMessage &src)
uint32_t getGdpbHitFullTs() const
bool getGdpbHit32DllLck() const
uint32_t getGdpbSysUnkwData() const
Message(const Message &src)
void setGdpbSysSubType(uint16_t v)
void setGdpbEpEpochNb(uint32_t v)
uint16_t getGdpbSysErrChanId() const
uint16_t getGdpbHit32Tot() const
bool operator==(const critof001::Message &other) const
equality operator, assumes same epoch for both messages
bool isEpochMsg() const
Returns true is message type is MSG_EPOCH (epoch2 marker)
bool isEndOfMs() const
Returns true is message type is an EndOfMs marker.
bool operator!=(const critof001::Message &other) const
inequality operator, assumes same epoch for both messages
uint8_t getBitBE(uint32_t shift) const
void setDebugTimer(uint32_t v)
void setGdpbSysPattIndex(uint16_t v)
uint16_t getGdpbSysErrInfo() const
bool isGet4SlCtrMsg() const
Returns true is message type is MSG_SLOWC (GET4 Slow Control)
uint32_t getGdpbSlcEdge() const
void printDataLog(unsigned kind=msg_print_Prefix|msg_print_Data, uint32_t epoch=0) const
Print message in human readable format to the Fairroot logger.
uint16_t getGet4Idx() const
bool getGdpbEpEpochLoss() const
uint8_t getMessageType() const
Returns the message type. Valid for all message types. 2 bit.
static uint64_t CalcDistance(uint64_t start, uint64_t stop)
Returns the time difference between two expanded time stamps.
uint32_t getGdpbSlcMess() const
uint32_t getGdpbSysPattPattern() const
bool isHitMsg() const
Returns true is message type is MSG_HIT (Get4 hit data)
void printData(unsigned outType=msg_print_Cout, unsigned kind=msg_print_Human, uint32_t epoch=0, std::ostream &os=std::cout) const
Print message in binary or human readable format to a stream.
void setFieldLong(uint32_t shift, uint32_t len, uint64_t value)
void setGet4Id(uint32_t v)
uint16_t getGdpbSysErrUnused() const
uint32_t getField(uint32_t shift, uint32_t len) const
uint16_t getGdpbHitChanId() const
uint64_t getFieldLong(uint32_t shift, uint32_t len) const
uint32_t getFieldBE(uint32_t shift, uint32_t len) const
uint16_t getGdpbSysPattType() const
void setField(uint32_t shift, uint32_t len, uint32_t value)
void setBit(uint32_t shift, uint8_t value)
void setMessageType(uint8_t v)
Sets the message type field in the current message.
uint32_t getGdpbSlcType() const
bool getGdpbSysErrEdge() const
bool operator<(const critof001::Message &other) const
strict weak ordering operator, assumes same epoch for both messages
Message & operator=(const Message &src)
bool getGdpbEpSync() const
void setGdpbSysPattPattern(uint32_t v)
void setGdpbSysPattType(uint16_t v)
bool getGdpbEpDataLoss() const
void printDataCout(unsigned kind=msg_print_Prefix|msg_print_Data, uint32_t epoch=0) const
Print message in human readable format to cout.
bool isSystem() const
Returns true is message type is #MSG_ERROR (error message)
bool getGdpbSysLinkId() const
uint32_t getGdpbEpEpochNb() const
uint32_t getGdpbSlcChan() const
uint64_t getMsgFullTime(uint64_t epoch) const
Returns expanded and adjusted time of message (in ns)
uint8_t getBit(uint32_t shift) const
void assign(const Message &src)
uint32_t getGdpbSlcData() const
uint16_t getDebugTimer() const
uint16_t getGdpbSysSubType() const
static double CalcDistanceD(double start, double stop)
Returns the time difference between two expanded time stamps.
uint32_t getGdpbSysFwErrResync() const
double getMsgFullTimeD(uint64_t epoch) const
Returns expanded and adjusted time of message in double (in ns)
void setData(uint64_t value)
uint16_t getGdpbSysPattIndex() const
static uint64_t FullTimeStamp(uint64_t epoch, uint32_t ts)
Expanded timestamp for 160 MHz * 19 bit (12 + 7) epochs.
bool getGdpbEpMissmatch() const
bool getGdpbSysErrRoType() const
uint16_t getGdpbSysErrData() const
const uint32_t kuEpochInBins
const uint32_t kuTotCounterSize
@ GET4_V2X_ERR_UNPAIR_FALL
@ GET4_V2X_ERR_CHAN_STATE
@ GET4_V2X_ERR_ADD_RIS_EDG
@ GET4_V2X_ERR_SEQUENCE_ER
@ GET4_V2X_ERR_TOK_RING_ST
@ GET4_V2X_ERR_TOT_OVERWRT
@ GET4_V2X_ERR_FIFO_WRITE
@ GET4_V2X_ERR_EP_CNT_SYNC
@ GET4_V2X_ERR_EPOCH_OVERF
@ GET4_V2X_ERR_EVT_DISCARD
@ GET4_V2X_ERR_READOUT_ERR
const uint64_t kulEpochCycleInNs
const uint64_t kuEndOfMsMask
const uint32_t kuCoarseTime
const uint32_t kuCoarseCounterSize
const uint32_t kuFeePulserChannelDiam
const uint32_t kuFineTime
const uint64_t kulEpochCycleFieldSz
const double kdClockCycleSize
const double kdEpochCycleInS
const uint64_t kulEpochCycleEp
const uint64_t kulEpochCycleBins
const uint64_t kuEndOfMsMarker
const uint32_t kuEpochCounterSz
Works as epoch integer in ns!
const double kdTotBinSize
const uint32_t kuFineCounterSize
const uint32_t kuChipIdMergedEpoch
const double kdClockCycleSizeNs
const uint32_t kuCoarseOverflowTest
const uint32_t kuFeePulserChannel