1 #ifndef _Belle2_BinData_h
2 #define _Belle2_BinData_h
4 #include <daq/slc/system/TCPSocket.h>
13 unsigned int reserved;
19 unsigned int nword_in_header;
20 unsigned int nevent_nboard;
22 unsigned int event_number;
29 static const unsigned int TRAILER_MAGIC;
30 static const unsigned int MAX_EVENT_WORDS = 2 * 1024 * 1024;
37 int getExpNumber()
const {
return (m_header->exp_run >> 22) & 0x3FF; };
38 int getRunNumber()
const {
return (m_header->exp_run & 0x3FFFFF) >> 8; };
39 int getSubNumber()
const {
return (m_header->exp_run & 0x3FFFFF) & 0xFF; };
40 int getEventNumber()
const {
return m_header->event_number; };
41 int setEventNumber(
int number) {
return m_header->event_number = number; };
42 int setExpNumber(
int exp_no)
44 m_header->exp_run = ((exp_no & 0x3FF) << 22) | (m_header->exp_run & 0x3FFFFF);
45 return getExpNumber();
47 int setRunNumber(
int run_no,
int sub_no)
49 m_header->exp_run = (m_header->exp_run & 0xFFC00000) |
50 (run_no & 0x3FFFFF) << 8 | (sub_no & 0xFF);
51 return getRunNumber();
53 int getNEvent()
const {
return (m_header->nevent_nboard >> 16); };
54 int getNBoard()
const {
return (m_header->nevent_nboard & 0xFFFF); };
55 int setNEvent(
int nev)
57 m_header->nevent_nboard = ((nev & 0xFFFF) << 16) | (m_header->nevent_nboard & 0xFFFF);
62 m_header->nevent_nboard = (m_header->nevent_nboard & 0xFFFF0000) | (nb & 0xFFFF);
65 void setWordSize(
int nword) { m_header->nword = nword; };
66 int getWordSize()
const {
return m_header->nword; };
67 int getByteSize()
const {
return m_header->nword * 4; };
68 int getHeaderWordSize()
const {
return m_header->nword_in_header; };
69 int getHeaderByteSize()
const {
return m_header->nword_in_header * 4; };
70 int getBodyByteSize()
const
74 void setBodyWordSize(
int nword)
77 m_trailer = (
BinTrailer*)(m_body + getBodyWordSize());
78 m_trailer->magic = TRAILER_MAGIC;
80 int getBodyWordSize()
const {
return (getBodyByteSize() / 4); };
81 unsigned int getTrailerMagic()
83 m_trailer = (
BinTrailer*)(m_body + getBodyWordSize());
84 return m_trailer->magic;
86 int getNodeId()
const {
return m_header->node_id; };
87 void setNodeId(
int id) { m_header->node_id = id; };
90 unsigned int recvEvent(
TCPSocket& socket);
91 unsigned int sendEvent(
TCPSocket& socket)
const;
92 int* getBuffer() {
return m_buf; }
93 const int* getBuffer()
const {
return m_buf; }
94 void setBuffer(
void* buf);
95 void print() noexcept;
98 BinHeader* getHeader() {
return m_header; };
99 const BinHeader* getHeader()
const {
return m_header; };
100 BinTrailer* getTrailer() {
return m_trailer; }
101 const BinTrailer* getTrailer()
const {
return m_trailer; }
102 unsigned int* getBody() {
return m_body; };
103 const unsigned int* getBody()
const {
return m_body; };
108 unsigned int* m_body;