28 #include "StETofMessageFormat.h"
53 uint64_t uOtherTs = 0;
59 if( MSG_HIT == uThisType && MSG_HIT == uOtherType )
61 uThisTs = this->getGdpbHitFullTs();
62 uOtherTs = other.getGdpbHitFullTs();
63 return uThisTs < uOtherTs;
67 if( MSG_HIT == uThisType )
69 uThisTs = ( this->getGdpbHitFullTs() );
74 if( MSG_HIT == uOtherType )
76 uOtherTs = ( this->getGdpbHitFullTs() );
80 return uThisTs < uOtherTs;
86 return this->
data == other.data;
92 return this->
data != other.data;
98 return std::round( getMsgFullTimeD( epoch ) );
104 switch( getMessageType() )
108 if( getGdpbHitIs24b() )
109 return ( static_cast<double_t>(FullTimeStamp(epoch, (getGdpbHitCoarse() << 7)))
110 + ( static_cast<double_t>(getGdpbHitFineTs() - 8. ) * gdpbv100::kdFtSize /gdpbv100::kdFtBinsNb) )
111 * (gdpbv100::kdClockCycleSizeNs / gdpbv100::kdFtSize);
112 else return ( gdpbv100::kdEpochInNs * static_cast<double_t>( epoch )
113 +
static_cast<double_t
>( getGdpbHitFullTs() ) * gdpbv100::kdClockCycleSizeNs / gdpbv100::kdFtBinsNb );
116 return gdpbv100::kdEpochInNs *
static_cast<double_t
>( getGdpbEpEpochNb() );
123 return gdpbv100::kdEpochInNs *
static_cast<double_t
>( epoch );
138 stop += 0x3FFFFFFFFFFFLLU;
140 printf(
"Epochs overflow error in CalcDistance\n");
155 stop += 0x3FFFFFFFFFFFLLU;
157 printf(
"Epochs overflow error in CalcDistanceD\n");
175 printData(msg_print_Cout, kind, epoch);
189 printData(msg_print_FairLog, kind, epoch);
222 if (kind & msg_print_Hex) {
223 const uint8_t* arr =
reinterpret_cast<const uint8_t*
> ( &
data );
224 snprintf(buf,
sizeof(buf),
"BE= %02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X LE= %02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X ",
225 arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7],
226 arr[7], arr[6], arr[5], arr[4], arr[3], arr[2], arr[1], arr[0] );
228 if( msg_print_Cout == outType)
230 else if( msg_print_File == outType )
233 snprintf(buf,
sizeof(buf),
" ");
236 if (kind & msg_print_Human) {
237 double timeInSec = getMsgFullTimeD(epoch)/1.e9;
240 switch (getMessageType()) {
242 snprintf(buf,
sizeof(buf),
243 "Msg:%u ", getMessageType());
245 if( msg_print_Cout == outType)
247 else if( msg_print_File == outType )
250 snprintf(buf,
sizeof(buf),
251 "EPOCH @%17.11f Get4:%2d Epoche2:%10u 0x%08x Sync:%x Dataloss:%x Epochloss:%x Epochmissmatch:%x",
252 timeInSec, getGdpbGenChipId(), getGdpbEpEpochNb(), getGdpbEpEpochNb(),
253 getGdpbEpSync(), getGdpbEpDataLoss(), getGdpbEpEpochLoss(), getGdpbEpMissmatch());
255 if( msg_print_Cout == outType)
256 std::cout << buf << std::endl;
257 else if( msg_print_File == outType )
258 os << buf << std::endl;
261 snprintf(buf,
sizeof(buf),
262 "Msg:%u ", getMessageType());
264 if( msg_print_Cout == outType)
266 else if( msg_print_File == outType )
269 if( getGdpbHitIs24b() )
271 snprintf(buf,
sizeof(buf),
272 "Get4 24b @%17.11f Get4:%2d Chn:%3d Edge:%1d Ts:%7d",
273 timeInSec, getGdpbGenChipId(), getGdpbHitChanId(), getGdpbHit24Edge(), getGdpbHitFullTs() );
277 snprintf(buf,
sizeof(buf),
278 "Get4 24b @%17.11f Get4:%2d Chn:%3d Dll:%1d Ts:%7d",
279 timeInSec, getGdpbGenChipId(), getGdpbHitChanId(), getGdpbHit32DllLck(), getGdpbHitFullTs() );
282 if( msg_print_Cout == outType)
283 std::cout << buf << std::endl;
284 else if( msg_print_File == outType )
285 os << buf << std::endl;
288 kind = kind & ~msg_print_Human;
289 if (kind==0) kind = msg_print_Prefix | msg_print_Data;
293 if (kind & msg_print_Human)
return;
296 if (kind & msg_print_Prefix) {
297 snprintf(buf,
sizeof(buf),
"Msg:%2u ", getMessageType() );
299 if( msg_print_Cout == outType)
301 else if( msg_print_File == outType )
305 if (kind & msg_print_Data) {
307 switch (getMessageType()) {
310 if( getGdpbHitIs24b() )
312 snprintf(buf,
sizeof(buf),
"Get4 24 bits, Get4:0x%04x Chn:%1x Edge:%1x Ts:0x%03x",
313 getGdpbGenChipId(), getGdpbHitChanId(), getGdpbHit24Edge(), getGdpbHitFullTs() );
317 snprintf(buf,
sizeof(buf),
318 "Get4 32 bits, Get4:0x%04x Channel %1d Ts:0x%03x Ft:0x%02x Tot:0x%02x Dll %1d",
319 getGdpbGenChipId(), getGdpbHitChanId(), getGdpbHitCoarse(),
320 getGdpbHitFineTs(), getGdpbHit32Tot(), getGdpbHit32DllLck() );
326 snprintf(buf,
sizeof(buf),
"Get4:0x%04x Link: %1u Epoch:0x%08x Sync:%x Dataloss:%x Epochloss:%x Epochmissmatch:%x",
327 getGdpbGenChipId(), getGdpbEpLinkId(), getGdpbEpEpochNb(), getGdpbEpSync(),
328 getGdpbEpDataLoss(), getGdpbEpEpochLoss(), getGdpbEpMissmatch());
334 snprintf(buf,
sizeof(buf),
335 "Get4 Slow control, Get4:0x%04x => Chan:%01d Edge:%01d Type:%01x Data:0x%06x",
336 getGdpbGenChipId(), 0x0, 0x0, 0x0, getGdpbSlcData() );
344 switch( getGdpbSysSubType() )
348 snprintf(sysbuf,
sizeof(sysbuf),
349 "Get4:0x%04x Ch:0x%01x Edge:%01x Unused:%06x ErrCode:0x%02x - GET4 V1 Error Event",
350 getGdpbGenChipId(), getGdpbSysErrChanId(), getGdpbSysErrEdge(), getGdpbSysErrUnused(), getGdpbSysErrData());
354 snprintf(sysbuf,
sizeof(sysbuf),
"Unknown GET4 message, data: 0x%08x", getGdpbSysUnkwData());
356 case SYS_GET4_SYNC_MISS:
357 snprintf(sysbuf,
sizeof(sysbuf),
"GET4 SYNC synchronization error");
360 snprintf(sysbuf,
sizeof(sysbuf),
"Pattern message => Type %d, Index %2d, Pattern 0x%08X",
361 getGdpbSysPattType(), getGdpbSysPattIndex(), getGdpbSysPattPattern() );
364 snprintf(sysbuf,
sizeof(sysbuf),
"unknown system message type %u", getGdpbSysSubType());
366 snprintf(buf,
sizeof(buf),
"%s", sysbuf);
376 switch( getStarTrigMsgIndex() )
380 snprintf(buf,
sizeof(buf),
381 "STAR token A, gDPB TS MSB bits: 0x%010llx000000",
382 (
unsigned long long) getGdpbTsMsbStarA() );
387 snprintf(buf,
sizeof(buf),
388 "STAR token B, gDPB TS LSB bits: 0x0000000000%06llx, STAR TS MSB bits: 0x%04llx000000000000",
389 (
unsigned long long) getGdpbTsLsbStarB(), (
unsigned long long) getStarTsMsbStarB() );
394 snprintf(buf,
sizeof(buf),
395 "STAR token C, , STAR TS Mid bits: 0x0000%010llx00",
396 (
unsigned long long) getStarTsMidStarC() );
401 snprintf(buf,
sizeof(buf),
402 "STAR token D, , STAR TS LSB bits: 0x00000000000000%02llx"
403 ", Token: %03x, DAQ: %1x; TRG:%1x",
404 (
unsigned long long) getStarTsLsbStarD(), getStarTokenStarD(), getStarDaqCmdStarD(), getStarTrigCmdStarD() );
412 snprintf(buf,
sizeof(buf),
"Error - unexpected MessageType: %1x, full data %08X::%08X",
413 getMessageType(), getField(32, 32), getField(0, 32) );
417 if( msg_print_Cout == outType)
418 std::cout << buf << std::endl;
419 else if( msg_print_File == outType )
420 os << buf << std::endl;
426 if( other.fulExtendedEpoch == this->fulExtendedEpoch )
429 else return this->fulExtendedEpoch < other.fulExtendedEpoch;
433 void gdpbv100::FullMessage::PrintMessage(
unsigned outType,
unsigned kind)
const
435 std::cout <<
"Full epoch = " << std::setw(9) << fulExtendedEpoch <<
" ";
436 printDataCout( outType, kind );
457 uint64_t uThisTs = 0;
458 uint64_t uOtherTs = 0;
460 uint32_t uThisType = this->getMessageType();
464 if( (MSG_GET4_32B == uThisType || MSG_GET4 == uThisType )&&
465 (MSG_GET4_32B == uOtherType || MSG_GET4 == uOtherType ) )
467 uThisTs = this->getGdpbHitFullTs();
468 uOtherTs = other.getGdpbHitFullTs();
469 return uThisTs < uOtherTs;
473 if( MSG_GET4_32B == uThisType || MSG_GET4 == uThisType )
475 uThisTs = ( this->getGdpbHitFullTs() ) / 20 + 512;
477 else if( MSG_GET4_SLC == uThisType || MSG_GET4_SYS == uThisType )
481 else uThisTs = this->getMsgFullTime( 0 );
484 if( MSG_GET4_32B == uOtherType || MSG_GET4 == uOtherType )
486 uOtherTs = ( this->getGdpbHitFullTs() ) / 20 + 512;
488 else if( MSG_GET4_SLC == uOtherType || MSG_GET4_SYS == uOtherType )
494 return uThisTs < uOtherTs;
506 return std::round( getMsgFullTimeD( epoch ) );
514 switch( getMessageType() )
517 return get4v2x::kdEpochInNs *
static_cast<double_t
>( getEpoch2Number() );
519 return ( static_cast<double_t>(FullTimeStamp2(epoch, (getGdpbHitCoarse() << 7))) + (
static_cast<double_t
>(getGdpbHitFineTs() - 8. ) * 128. /112.) )
522 if( SYSMSG_GET4_EVENT == getGdpbSysSubType() )
523 return get4v2x::kdEpochInNs * static_cast<double_t>( epoch );
525 return ( get4v2x::kdEpochInNs * static_cast<double_t>( epoch ) +
static_cast<double_t
>( getGdpbHitFullTs() ) * get4v2x::kdClockCycleSizeNs / 112. );
528 return FullTimeStamp2(epoch, 0) * (6.25 / 128.);
543 stop += 0x3FFFFFFFFFFFLLU;
545 printf(
"Epochs overflow error in CalcDistance\n");
560 stop += 0x3FFFFFFFFFFFLLU;
562 printf(
"Epochs overflow error in CalcDistanceD\n");
582 printData(msg_print_Cout, kind, epoch);
596 printData(msg_print_FairLog, kind, epoch);
655 if (kind & msg_print_Hex) {
656 const uint8_t* arr =
reinterpret_cast<const uint8_t*
> ( &
data );
657 snprintf(buf,
sizeof(buf),
"BE= %02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X LE= %02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X ",
658 arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7],
659 arr[7], arr[6], arr[5], arr[4], arr[3], arr[2], arr[1], arr[0] );
661 if( msg_print_Cout == outType)
663 else if( msg_print_File == outType )
666 snprintf(buf,
sizeof(buf),
" ");
669 if (kind & msg_print_Human) {
670 double timeInSec = getMsgFullTimeD(epoch)/1.e9;
673 switch (getMessageType()) {
675 snprintf(buf,
sizeof(buf),
676 "Msg:%u Roc:%04x ", getMessageType(), getRocNumber());
678 if( msg_print_Cout == outType)
680 else if( msg_print_File == outType )
683 snprintf(buf,
sizeof(buf),
684 "EPO2 @%17.11f Get4:%2d Epoche2:%10u 0x%08x StampTime:%2d Sync:%x Dataloss:%x Epochloss:%x Epochmissmatch:%x",
685 timeInSec, getEpoch2ChipNumber(), getEpoch2Number(), getEpoch2Number(),
686 getEpoch2StampTime(), getEpoch2Sync(), getEpoch2DataLost(), getEpoch2EpochLost(), getEpoch2EpochMissmatch());
688 if( msg_print_Cout == outType)
689 std::cout << buf << std::endl;
690 else if( msg_print_File == outType )
691 os << buf << std::endl;
694 snprintf(buf,
sizeof(buf),
695 "Msg:%u Roc:%04x ", getMessageType(), getRocNumber());
697 if( msg_print_Cout == outType)
699 else if( msg_print_File == outType )
702 snprintf(buf,
sizeof(buf),
703 "Get4 @%17.11f Get4:%2d Chn:%3d Edge:%1d Ts:%7d CRC8:%3d",
704 timeInSec, getGet4Number(), getGet4ChNum(), getGet4Edge(), getGet4Ts(), getGet4CRC() );
706 if( msg_print_Cout == outType)
707 std::cout << buf << std::endl;
708 else if( msg_print_File == outType )
709 os << buf << std::endl;
712 kind = kind & ~msg_print_Human;
713 if (kind==0) kind = msg_print_Prefix | msg_print_Data;
717 if (kind & msg_print_Human)
return;
720 if (kind & msg_print_Prefix) {
721 snprintf(buf,
sizeof(buf),
"Msg:%2u Roc:%04x ", getMessageType(), getRocNumber());
723 if( msg_print_Cout == outType)
725 else if( msg_print_File == outType )
729 if (kind & msg_print_Data) {
730 const uint8_t* arr =
reinterpret_cast<const uint8_t*
> ( &
data );
731 switch (getMessageType()) {
733 snprintf(buf,
sizeof(buf),
"NOP (raw %02X:%02X:%02X:%02X:%02X:%02X)",
734 arr[0], arr[1], arr[2], arr[3], arr[4], arr[5]);
737 snprintf(buf,
sizeof(buf),
"Get4:0x%02x Link: %1u Epoche2:0x%08x StampTime:0x%x Sync:%x Dataloss:%x Epochloss:%x Epochmissmatch:%x",
738 getGdpbGenChipId(), getGdpbEpLinkId(), getGdpbEpEpochNb(), getGdpbEpStampTs(), getGdpbEpSync(),
739 getGdpbEpDataLoss(), getGdpbEpEpochLoss(), getGdpbEpMissmatch());
742 snprintf(buf,
sizeof(buf),
"Get4:0x%02x Chn:%1x Edge:%1x Ts:0x%05x CRC8:0x%02x",
743 getGdpbGenChipId(), getGdpbHitChanId(), getGdpbHit24Edge(), getGdpbHitFullTs(), getGdpbHitCrc() );
748 switch (getSysMesType()) {
749 case SYSMSG_DAQ_START:
750 snprintf(sysbuf,
sizeof(sysbuf),
"DAQ started");
752 case SYSMSG_DAQ_FINISH:
753 snprintf(sysbuf,
sizeof(sysbuf),
"DAQ finished");
755 case SYSMSG_SYNC_PARITY:
756 snprintf(sysbuf,
sizeof(sysbuf),
"SYNC parity error ");
758 case SYSMSG_DAQ_RESUME:
759 snprintf(sysbuf,
sizeof(sysbuf),
"DAQ resume after high/low water");
761 case SYSMSG_FIFO_RESET:
762 snprintf(sysbuf,
sizeof(sysbuf),
"FIFO reset");
765 const char* subtyp =
"";
766 if (getSysMesData()==SYSMSG_USER_CALIBR_ON) subtyp =
"Calibration ON";
else
767 if (getSysMesData()==SYSMSG_USER_CALIBR_OFF) subtyp =
"Calibration OFF";
else
768 if (getSysMesData()==SYSMSG_USER_RECONFIGURE) subtyp =
"Reconfigure";
769 snprintf(sysbuf,
sizeof(sysbuf),
"User message 0x%08x %s", getSysMesData(), subtyp);
772 case SYSMSG_PACKETLOST:
773 snprintf(sysbuf,
sizeof(sysbuf),
"Packet lost");
775 case SYSMSG_GET4_EVENT:
779 case SYSMSG_CLOSYSYNC_ERROR:
780 snprintf(sysbuf,
sizeof(sysbuf),
"Closy synchronization error");
782 case SYSMSG_TS156_SYNC:
783 snprintf(sysbuf,
sizeof(sysbuf),
"156.25MHz timestamp reset");
785 case SYSMSG_GET4V1_32BIT_0:
786 case SYSMSG_GET4V1_32BIT_1:
787 case SYSMSG_GET4V1_32BIT_2:
788 case SYSMSG_GET4V1_32BIT_3:
789 case SYSMSG_GET4V1_32BIT_4:
790 case SYSMSG_GET4V1_32BIT_5:
791 case SYSMSG_GET4V1_32BIT_6:
792 case SYSMSG_GET4V1_32BIT_7:
793 case SYSMSG_GET4V1_32BIT_8:
794 case SYSMSG_GET4V1_32BIT_9:
795 case SYSMSG_GET4V1_32BIT_10:
796 case SYSMSG_GET4V1_32BIT_11:
797 case SYSMSG_GET4V1_32BIT_12:
798 case SYSMSG_GET4V1_32BIT_13:
799 case SYSMSG_GET4V1_32BIT_14:
800 case SYSMSG_GET4V1_32BIT_15:
805 snprintf(sysbuf,
sizeof(sysbuf),
"unknown system message type ");
808 snprintf(buf,
sizeof(buf),
"SysType:%2x Data:%8x : %s", getSysMesType(), getSysMesData(), sysbuf);
815 snprintf(buf,
sizeof(buf),
816 "Get4 Slow control, chip %02d => Chan:%01d Edge:%01d Type:%01x Data:0x%06x CRC:0x%02x",
817 getGdpbGenChipId(), 0x0, 0x0, 0x0, getGdpbSlcData(), getGdpbSlcCrc() );
823 snprintf(buf,
sizeof(buf),
824 "Get4 32 bits, Chip:0x%02x Dll %1d Channel %1d Ts:0x%03x Ft:0x%02x Tot:0x%02x",
825 getGdpbGenChipId(), getGdpbHit32DllLck(), getGdpbHitChanId(),
826 getGdpbHitCoarse(), getGdpbHitFineTs(), getGdpbHit32Tot() );
835 switch( getGdpbSysSubType() )
837 case SYSMSG_GET4_EVENT:
839 snprintf(sysbuf,
sizeof(sysbuf),
840 "Get4:0x%02x Ch:0x%01x Edge:%01x Unused:%06x ErrCode:0x%02x - GET4 V1 Error Event",
841 getGdpbGenChipId(), getGdpbSysErrChanId(), getGdpbSysErrEdge(), getGdpbSysErrUnused(), getGdpbSysErrData());
844 case SYSMSG_CLOSYSYNC_ERROR:
845 snprintf(sysbuf,
sizeof(sysbuf),
"Closy synchronization error");
847 case SYSMSG_TS156_SYNC:
848 snprintf(sysbuf,
sizeof(sysbuf),
"156.25MHz timestamp reset");
850 case SYSMSG_GDPB_UNKWN:
851 snprintf(sysbuf,
sizeof(sysbuf),
"Unknown GET4 message, data: 0x%08x", getGdpbSysUnkwData());
854 snprintf(sysbuf,
sizeof(sysbuf),
"unknown system message type %u", getGdpbSysSubType());
856 snprintf(buf,
sizeof(buf),
"%s", sysbuf);
863 switch( getStarTrigMsgIndex() )
867 snprintf(buf,
sizeof(buf),
868 "STAR token A, gDPB TS MSB bits: 0x%010llx000000",
869 (
unsigned long long) getGdpbTsMsbStarA() );
874 snprintf(buf,
sizeof(buf),
875 "STAR token B, gDPB TS LSB bits: 0x0000000000%06llx, STAR TS MSB bits: 0x%04llx000000000000",
876 (
unsigned long long) getGdpbTsLsbStarB(), (
unsigned long long) getStarTsMsbStarB() );
881 snprintf(buf,
sizeof(buf),
882 "STAR token C, , STAR TS Mid bits: 0x0000%010llx00",
883 (
unsigned long long) getStarTsMidStarC() );
888 snprintf(buf,
sizeof(buf),
889 "STAR token D, , STAR TS LSB bits: 0x00000000000000%02llx"
890 ", Token: %03x, DAQ: %1x; TRG:%1x",
891 (
unsigned long long) getStarTsLsbStarD(), getStarTokenStarD(), getStarDaqCmdStarD(), getStarTrigCmdStarD() );
899 snprintf(buf,
sizeof(buf),
"Error - unexpected MessageType: %1x, full data %08X::%08X",
900 getMessageType(), getField(32, 32), getField(0, 32) );
905 if( msg_print_Cout == outType)
906 std::cout << buf << std::endl;
907 else if( msg_print_File == outType )
908 os << buf << std::endl;
912 uint32_t gdpb::Message::RawSize(
int fmt)
915 case formatNormal:
return 8;
917 std::cerr <<
"gdpb::Message::RawSize => "
918 <<
" Deprecated format, nothing done!!"
925 bool gdpb::Message::assign(
void* src,
int fmt)
929 memcpy(&
data, src, 8);
932 std::cerr <<
"gdpb::Message::assign => "
933 <<
" Deprecated format, nothing done!!"
941 bool gdpb::Message::copyto(
void* tgt,
int fmt)
945 memcpy(tgt, &
data, 8);
948 std::cerr <<
"gdpb::Message::assign => "
949 <<
" Deprecated format, nothing done!!"
962 if( other.fulExtendedEpoch == this->fulExtendedEpoch )
965 else return this->fulExtendedEpoch < other.fulExtendedEpoch;
969 void gdpb::FullMessage::PrintMessage(
unsigned outType,
unsigned kind)
const
971 std::cout <<
"Full epoch = " << std::setw(9) << fulExtendedEpoch <<
" ";
972 printDataCout( outType, kind );
void printDataCout(unsigned kind=msg_print_Prefix|msg_print_Data, uint32_t epoch=0) const
Print message in human readable format to cout.
bool operator<(const FullMessage &other) const
strict weak ordering operator, including epoch for both messages
uint64_t getMsgFullTime(uint64_t epoch) const
bool operator<(const FullMessage &other) const
strict weak ordering operator, including epoch for both messages
static double CalcDistanceD(double start, double stop)
Returns the time difference between two expanded time stamps.
bool operator==(const gdpbv100::Message &other) const
equality operator, assumes same epoch for both messages
static double CalcDistanceD(double start, double stop)
Returns the time difference between two expanded time stamps.
uint64_t getMsgFullTime(uint64_t epoch) const
Returns expanded and adjusted time of message (in ns)
void printDataCout(unsigned kind=msg_print_Prefix|msg_print_Data, uint32_t epoch=0) const
Print message in human readable format to cout.
uint8_t getMessageType() const
Returns the message type. Valid for all message types. 4 bit.
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.
bool operator<(const gdpb::Message &other) const
strict weak ordering operator, assumes same epoch for both messages
uint8_t getMessageType() const
Returns the message type. Valid for all message types. 4 bit.
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.
double getMsgFullTimeD(uint64_t epoch) const
Returns expanded and adjusted time of message in double (in ns)
double getMsgFullTimeD(uint64_t epoch) const
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 printDataLog(unsigned kind=msg_print_Prefix|msg_print_Data, uint32_t epoch=0) const
Print message in human readable format to the Fairroot logger.
static uint64_t CalcDistance(uint64_t start, uint64_t stop)
Returns the time difference between two expanded time stamps.
static uint64_t CalcDistance(uint64_t start, uint64_t stop)
Returns the time difference between two expanded time stamps.
bool operator<(const gdpbv100::Message &other) const
strict weak ordering operator, assumes same epoch for both messages
bool operator!=(const gdpbv100::Message &other) const
inequality operator, assumes same epoch for both messages