11#include <tracking/dataobjects/ROIrawID.h>
14#include <boost/endian/arithmetic.hpp>
36 enum { OFFSET_MAGIC = 0, OFFSET_LENGTH = 1, OFFSET_HEADER = 2, OFFSET_TRIGNR = 3, OFFSET_RUNNR = 4, OFFSET_ROIS = 5};
37 enum { HEADER_SIZE_WO_LENGTH = 3, HEADER_SIZE_WITH_LENGTH = 5, HEADER_SIZE_WITH_LENGTH_AND_CRC = 6};
66 void setHeader(
bool Accepted,
bool SendAll,
bool SendROIs);
81 void init(
int length);
88 return (
m_length - HEADER_SIZE_WITH_LENGTH_AND_CRC) / 2;
99 return (data[HEADER_SIZE_WITH_LENGTH + 2 * j] & 0x3F0) >> 4;
108 if (j < 0 || j >=
getNrROIs())
return -1;
110 return ((data[HEADER_SIZE_WITH_LENGTH + 2 * j] & 0xF) << 6) |
111 ((data[HEADER_SIZE_WITH_LENGTH + 2 * j + 1] & 0xFC000000) >> 26);
120 if (j < 0 || j >=
getNrROIs())
return -1;
122 return (data[HEADER_SIZE_WITH_LENGTH + 2 * j + 1] & 0x3FF00) >> 8;
131 if (j < 0 || j >=
getNrROIs())
return -1;
133 return (data[HEADER_SIZE_WITH_LENGTH + 2 * j + 1] & 0x03FC0000) >> 18;
142 if (j < 0 || j >=
getNrROIs())
return -1;
144 return data[HEADER_SIZE_WITH_LENGTH + 2 * j + 1] & 0xFF;
153 if (j < 0 || j >=
getNrROIs())
return -1;
155 return (data[HEADER_SIZE_WITH_LENGTH + 2 * j] & 0x400) >> 10;
ROIpayload TODO: Better explanation, Is there a reason to inherit from TObject and not Relationsobjec...
int m_packetLengthByte
packet length in byte
void addROIraw(unsigned long int roiraw)
add a ROIrawID
int getMinVid(int j) const
Return MinVid (Row 1) of ROI j.
int m_length
packet length
int getDHHID(int j) const
Return DHH ID of ROI j.
int * getRootdata()
get pointer to the data packet
void setHeader(bool Accepted, bool SendAll, bool SendROIs)
set header
uint32_t * m_data32
transient value
void setRunSubrunExpNumber(int run, int subrun, int exp)
set run/ subrun/exp number
int getNrROIs() const
Get the nr of ROIs.
int getMaxVid(int j) const
Return MaxVid (Row 2) of ROI j.
virtual ~ROIpayload()
destructor.
int getMinUid(int j) const
Return MinUid (Col 1) of ROI j.
int * m_rootdata
pointer to data packet of m_length words
int getType(int j) const
Return Type (Datcon or HLT) of ROI j.
ROIpayload(int rois=0)
Default constructor.
int getLength()
get packet length
void setTriggerNumber(unsigned long int triggerNumber)
set trigger number
void init(int length)
initializer
void setPayloadLength()
set payload length
int m_index
transient index
int getPacketLengthByte()
get packet length in bytes
int getMaxUid(int j) const
Return MaxUid (Col 2) of ROI j.
boost::endian::big_uint32_t ubig32_t
Shorthand for 32-bit integer stored in big-endian format.
ROIrawID::baseType * m_data64
transient value
uint64_t baseType
base type
Abstract base class for different kinds of events.