9 #include "daq/dataobjects/SndHdrTemp.h"
16 SndHdrTemp::SndHdrTemp()
22 SndHdrTemp::SndHdrTemp(
int* buffer)
25 memcpy(m_buffer, buffer, SENDHDR_NWORDS *
sizeof(
int));
28 SndHdrTemp::~SndHdrTemp()
32 int* SndHdrTemp::GetBuffer()
37 void SndHdrTemp::SetBuffer(
int* bufin)
39 memcpy(m_buffer, bufin, SENDHDR_NWORDS *
sizeof(
int));
42 void SndHdrTemp::Initialize()
44 memset(m_buffer, 0,
sizeof(
int)* SENDHDR_NWORDS);
45 m_buffer[ POS_HDR_NWORDS ] = SENDHDR_NWORDS;
51 void SndHdrTemp::SetNwords(
int total_data_nwords)
53 m_buffer[ POS_NWORDS ] = total_data_nwords;
56 void SndHdrTemp::SetExpRunWord(
unsigned int exp_run)
58 m_buffer[ POS_EXP_RUN_NUM ] = exp_run;
61 void SndHdrTemp::SetNumEventsinPacket(
int num_events)
63 m_buffer[ POS_NUM_EVE_NUM_NODES ] =
64 (m_buffer[ POS_NUM_EVE_NUM_NODES ] & 0x0000FFFF) |
65 ((num_events << 16) & 0xFFFF0000);
68 void SndHdrTemp::SetNumNodesinPacket(
int num_nodes)
70 m_buffer[ POS_NUM_EVE_NUM_NODES ] =
71 (m_buffer[ POS_NUM_EVE_NUM_NODES ] & 0xFFFF0000) |
72 (num_nodes & 0x0000FFFF);
76 void SndHdrTemp::SetEventNumber(
int eve_num)
78 m_buffer[ POS_EVE_NUM ] = eve_num;
82 void SndHdrTemp::SetNodeID(
int node_id)
84 m_buffer[ POS_NODE_ID ] = node_id;
88 void SndHdrTemp::SetRunNum(
int run_num)
91 unsigned int inv_mask = ~((
unsigned int)(tmp_header.RUNNO_MASK));
92 m_buffer[ POS_EXP_RUN_NUM ] =
93 ((
unsigned int)m_buffer[ POS_EXP_RUN_NUM ] & inv_mask) |
94 (((
unsigned int)run_num << tmp_header.RUNNO_SHIFT) & tmp_header.RUNNO_MASK);
99 void SndHdrTemp::SetSubRunNum(
int subrun_num)
102 unsigned int inv_mask = ~((
unsigned int)(tmp_header.SUBRUNNO_MASK));
103 m_buffer[ POS_EXP_RUN_NUM ] =
104 ((
unsigned int)m_buffer[ POS_EXP_RUN_NUM ] & inv_mask) | ((
unsigned int)subrun_num & tmp_header.SUBRUNNO_MASK);
108 void SndHdrTemp::SetExpNum(
int exp_num)
111 unsigned int inv_mask = ~((
unsigned int)(tmp_header.EXP_MASK));
112 m_buffer[ POS_EXP_RUN_NUM ] =
113 ((
unsigned int)m_buffer[ POS_EXP_RUN_NUM ] & inv_mask) |
114 (((
unsigned int)exp_num << tmp_header.EXP_SHIFT) & tmp_header.EXP_MASK);
123 int SndHdrTemp::GetTotalNwords() {
return m_buffer[ POS_NWORDS ];}
124 int SndHdrTemp::GetHdrNwords() {
return SENDHDR_NWORDS; }
125 int SndHdrTemp::GetNumEventsinPacket()
128 ((m_buffer[ POS_NUM_EVE_NUM_NODES ] & 0xFFFF0000) >> 16) & 0x0000FFFF;
131 int SndHdrTemp::GetNumNodesinPacket() {
return m_buffer[ POS_NUM_EVE_NUM_NODES ] & 0x0000FFFF; }
133 int SndHdrTemp::GetEventNumber() {
return m_buffer[ POS_EVE_NUM ]; }
135 int SndHdrTemp::GetNodeID() {
return m_buffer[ POS_NODE_ID ]; }
137 int SndHdrTemp::GetRunNum()
139 return (((
unsigned int)(m_buffer[ POS_EXP_RUN_NUM ]) & tmp_header.RUNNO_MASK) >> tmp_header.RUNNO_SHIFT);
142 int SndHdrTemp::GetSubRunNum()
144 return ((
unsigned int)(m_buffer[ POS_EXP_RUN_NUM ]) & tmp_header.SUBRUNNO_MASK);
147 int SndHdrTemp::GetRunNumSubRunNum()
150 return ((
unsigned int)(m_buffer[ POS_EXP_RUN_NUM ]) &
151 (tmp_header.RUNNO_MASK | tmp_header.SUBRUNNO_MASK));
155 int SndHdrTemp::GetExpNum()
158 return (((
unsigned int)(m_buffer[ POS_EXP_RUN_NUM ]) & tmp_header.EXP_MASK) >> tmp_header.EXP_SHIFT);
Abstract base class for different kinds of events.