Belle II Software development
RawTLUFormat Class Reference

The Raw TLU class Class for data from DAQ PC for TLU(Trigger Logic Unit) It is supposed to be used only in the DESY beam test. More...

#include <RawTLUFormat.h>

Inheritance diagram for RawTLUFormat:
RawDataBlockFormat

Public Types

enum  {
  POS_NWORDS = 0 ,
  POS_HDR_NWORDS = 1 ,
  POS_NUMEVE_NUMNODES = 2 ,
  POS_RUN_NO = 3 ,
  POS_EVE_NO = 4 ,
  POS_NA_1 = 5 ,
  POS_NODE_ID = 6 ,
  POS_NA_2 = 7 ,
  POS_TLU_EVENTTAG = 8 ,
  POS_NA_3 = 9 ,
  POS_TLU_TIME_1 = 10 ,
  POS_TLU_TIME_2 = 11 ,
  POS_RSVD_1 = 12 ,
  POS_MAGIC_1 = 13
}
 
enum  { SIZE_TLU_PACKET = 14 }
 
enum  { TLU_MAGIC_TRAILER = 0x7FFF0000 }
 
enum  {
  POS_NWORDS = 0 ,
  POS_NODE_ID = 6
}
 
enum  {
  POS_FTSW_ID_OLD = 5 ,
  TEMP_POS_NWORDS_HEADER = 1 ,
  OLD_FTSW_NWORDS_HEADER = 6
}
 

Public Member Functions

 RawTLUFormat ()
 Default constructor.
 
virtual ~RawTLUFormat ()
 Destructor.
 
int GetNwordsHeader (int n)
 Get the size of the header.
 
unsigned int GetNodeID (int n)
 Get Node ID.
 
unsigned int GetEveNo (int n)
 Get Event #.
 
unsigned int GetMagicTrailer (int n)
 Get Magic Trailer #.
 
int GetRunNo (int n)
 Get Run #.
 
unsigned int GetTLUEventTag (int n)
 Get TLU event tag.
 
void CheckData (int n, unsigned int prev_evenum, unsigned int *cur_evenum)
 check data contents
 
virtual void SetBuffer (int *bufin, int nwords, int delete_flag, int num_events, int num_nodes)
 set buffer ( delete_flag : m_buffer is freeed( = 0 )/ not freeed( = 1 ) in Destructer )
 
virtual int TotalBufNwords ()
 Get total length of m_buffer.
 
virtual int GetBufferPos (int n)
 get position of data block in word
 
virtual int * GetBuffer (int n)
 get nth buffer pointer
 
virtual int * GetWholeBuffer ()
 get pointer to buffer(m_buffer)
 
virtual int GetNumEntries ()
 get # of data blocks = (# of nodes)*(# of events)
 
virtual int GetNumNodes ()
 get # of data sources(e.g. # of COPPER boards) in m_buffer
 
virtual int GetNumEvents ()
 get # of events in m_buffer
 
virtual int GetPreAllocFlag ()
 get malloc_flag
 
virtual int GetBlockNwords (int n)
 get size of a data block
 
virtual int CheckFTSWID (int n)
 get FTSW ID to check whether this data block is FTSW data or not
 
virtual int CheckTLUID (int n)
 get FTSW ID to check whether this data block is FTSW data or not
 
virtual void CopyBlock (int n, int *buf_to)
 Copy one datablock to buffer.
 
virtual void PrintData (int *buf, int nwords)
 print data
 

Protected Attributes

int m_nwords
 number of words of buffer
 
int m_num_nodes
 number of nodes in this object
 
int m_num_events
 number of events in this object
 
int * m_buffer
 Buffer.
 
int m_use_prealloc_buf
 not recorded
 

Detailed Description

The Raw TLU class Class for data from DAQ PC for TLU(Trigger Logic Unit) It is supposed to be used only in the DESY beam test.

Definition at line 25 of file RawTLUFormat.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
inherited

Definition at line 75 of file RawDataBlockFormat.h.

75 {
76 POS_NWORDS = 0,
77 POS_NODE_ID = 6
78 };

◆ anonymous enum

anonymous enum
inherited

Definition at line 80 of file RawDataBlockFormat.h.

80 {
81 // Tentatively needed to distinguish new and old FTSW format, which will be changed in Nov. 2013
82 POS_FTSW_ID_OLD = 5,
83 TEMP_POS_NWORDS_HEADER = 1,
84 OLD_FTSW_NWORDS_HEADER = 6
85 };

◆ anonymous enum

anonymous enum

Definition at line 58 of file RawTLUFormat.h.

58 {
59 POS_NWORDS = 0,
60 POS_HDR_NWORDS = 1,
61 POS_NUMEVE_NUMNODES = 2,
62 POS_RUN_NO = 3,
63 POS_EVE_NO = 4,
64 POS_NA_1 = 5,
65 POS_NODE_ID = 6,
66 POS_NA_2 = 7,
67 POS_TLU_EVENTTAG = 8,
68 POS_NA_3 = 9,
69 POS_TLU_TIME_1 = 10,
70 POS_TLU_TIME_2 = 11,
71 POS_RSVD_1 = 12,
72 POS_MAGIC_1 = 13
73 };

◆ anonymous enum

anonymous enum

Definition at line 75 of file RawTLUFormat.h.

75 {
76 SIZE_TLU_PACKET = 14
77 };

◆ anonymous enum

anonymous enum

Definition at line 79 of file RawTLUFormat.h.

79 {
80 TLU_MAGIC_TRAILER = 0x7FFF0000
81 };

Constructor & Destructor Documentation

◆ RawTLUFormat()

Default constructor.

Definition at line 13 of file RawTLUFormat.cc.

14{
15}

◆ ~RawTLUFormat()

~RawTLUFormat ( )
virtual

Destructor.

Definition at line 17 of file RawTLUFormat.cc.

18{
19}

Member Function Documentation

◆ CheckData()

void CheckData ( int  n,
unsigned int  prev_evenum,
unsigned int *  cur_evenum 
)

check data contents

Definition at line 60 of file RawTLUFormat.cc.

62{
63 int err_flag = 0;
64 char err_buf[500];
65 *cur_evenum = GetEveNo(n);
66
67#ifndef NO_DATA_CHECK
68 if (prev_evenum != 0xFFFFFFFF && *cur_evenum != 0) {
69 if ((unsigned int)(prev_evenum + 1) != *cur_evenum) {
70 sprintf(err_buf, "Event # jump : i %d prev 0x%x cur 0x%x : Exiting...\n %s %s %d\n",
71 n, prev_evenum, *cur_evenum, __FILE__, __PRETTY_FUNCTION__, __LINE__);
72 err_flag = 1;
73 }
74 }
75#endif
76
77 if (GetEveNo(n) != GetTLUEventTag(n)) {
78 sprintf(err_buf, "invalid TLU event tag : blodk %d header eve # %u TLU tag %u. Exiting...\n %s %s %d\n",
79 n, GetEveNo(n), GetTLUEventTag(n), __FILE__, __PRETTY_FUNCTION__, __LINE__);
80 err_flag = 1;
81 }
82
83
84 if (GetBlockNwords(n) != SIZE_TLU_PACKET) {
85 sprintf(err_buf, "invalid TLU packet length : block %d nwords %d must be %d : Exiting...\n %s %s %d\n",
86 n, GetBlockNwords(n), SIZE_TLU_PACKET, __FILE__, __PRETTY_FUNCTION__, __LINE__);
87 err_flag = 1;
88 }
89
90 if (GetMagicTrailer(n) != TLU_MAGIC_TRAILER) {
91 sprintf(err_buf, "invalid magic word : block %d magic word 0x%x must be 0x%x : Exiting...\n %s %s %d\n",
92 n, GetMagicTrailer(n), TLU_MAGIC_TRAILER, __FILE__, __PRETTY_FUNCTION__, __LINE__);
93 err_flag = 1;
94 }
95
96 if (err_flag == 1) {
97 printf("[DEBUG] ========== dump a data block : block # %d==========\n", n);
98 printf("[DEBUG] ");
99 for (int k = 0 ; k < GetBlockNwords(n); k++) {
100 printf("0x%.8x ", (GetBuffer(n))[k]);
101 if (k % 10 == 9) printf("\n[DEBUG] ");
102 }
103 fflush(stderr);
104 B2FATAL(err_buf);
105 }
106
107 return;
108}
virtual int GetBlockNwords(int n)
get size of a data block
virtual int * GetBuffer(int n)
get nth buffer pointer
unsigned int GetEveNo(int n)
Get Event #.
Definition: RawTLUFormat.cc:37
unsigned int GetMagicTrailer(int n)
Get Magic Trailer #.
Definition: RawTLUFormat.cc:49
unsigned int GetTLUEventTag(int n)
Get TLU event tag.
Definition: RawTLUFormat.cc:54

◆ CheckFTSWID()

int CheckFTSWID ( int  n)
virtualinherited

get FTSW ID to check whether this data block is FTSW data or not

Definition at line 73 of file RawDataBlockFormat.cc.

74{
75 int pos = POS_NODE_ID;
76 if (m_buffer[ GetBufferPos(n) + TEMP_POS_NWORDS_HEADER ] == OLD_FTSW_NWORDS_HEADER) {
77 pos = POS_FTSW_ID_OLD;
78 }
79
80 if ((m_buffer[ GetBufferPos(n) + pos ] & 0xffffff00) == 0x54544400) { // "TTD" + format version ( 0x20=DESY, 0x31=2018/7/11)
81 return 1;
82 } else {
83 return 0;
84 }
85}
virtual int GetBufferPos(int n)
get position of data block in word

◆ CheckTLUID()

int CheckTLUID ( int  n)
virtualinherited

get FTSW ID to check whether this data block is FTSW data or not

Definition at line 88 of file RawDataBlockFormat.cc.

89{
90 int pos = POS_NODE_ID;
91 if (m_buffer[ GetBufferPos(n) + TEMP_POS_NWORDS_HEADER ] == OLD_FTSW_NWORDS_HEADER) {
92 pos = POS_FTSW_ID_OLD;
93 }
94 if (m_buffer[ GetBufferPos(n) + pos ] == 0x544c5520) { // "TLU "
95 return 1;
96 } else {
97 return 0;
98 }
99}

◆ CopyBlock()

void CopyBlock ( int  n,
int *  buf_to 
)
virtualinherited

Copy one datablock to buffer.

Definition at line 173 of file RawDataBlockFormat.cc.

174{
175 memcpy(buf_to, GetBuffer(n), GetBlockNwords(n) * sizeof(int));
176 return;
177}

◆ GetBlockNwords()

int GetBlockNwords ( int  n)
virtualinherited

get size of a data block

Definition at line 107 of file RawDataBlockFormat.cc.

108{
109 int size;
110 if (n == (m_num_events * m_num_nodes) - 1) {
111 size = m_nwords - GetBufferPos(n);
112 } else {
113 size = GetBufferPos(n + 1) - GetBufferPos(n);
114 }
115 return size;
116}
int m_num_events
number of events in this object
int m_num_nodes
number of nodes in this object
int m_nwords
number of words of buffer

◆ GetBuffer()

int * GetBuffer ( int  n)
virtualinherited

get nth buffer pointer

Definition at line 124 of file RawDataBlockFormat.cc.

125{
126 int pos_nwords = GetBufferPos(n);
127 return &(m_buffer[ pos_nwords ]);
128}

◆ GetBufferPos()

int GetBufferPos ( int  n)
virtualinherited

get position of data block in word

Definition at line 30 of file RawDataBlockFormat.cc.

31{
32 if (m_buffer == NULL || m_nwords <= 0) {
33 char err_buf[500];
34 sprintf(err_buf, "[FATAL] RawPacket buffer(%p) is not available or length(%d) is not set.\n %s %s %d\n",
35 m_buffer, m_nwords, __FILE__, __PRETTY_FUNCTION__, __LINE__);
36 printf("%s", err_buf); fflush(stdout);
37 B2FATAL(err_buf);
38 }
39
40 if (n >= (m_num_events * m_num_nodes)) {
41 char err_buf[500];
42 sprintf(err_buf, "[FATAL] Invalid COPPER block No. (%d : max %d ) is specified. Exiting... \n %s %s %d\n",
43 n, (m_num_events * m_num_nodes), __FILE__, __PRETTY_FUNCTION__, __LINE__);
44 printf("%s", err_buf); fflush(stdout);
45 B2FATAL(err_buf);
46 }
47
48 int pos_nwords = 0;
49 for (int i = 1; i <= n ; i++) {
50 if (m_buffer[ pos_nwords ] <= 0) {
51 char err_buf[500];
52 sprintf(err_buf,
53 "[FATAL] ERROR_EVENT : length of this data block is strange ( %d words ). Maybe data is corrupted or RawHeader info has not been filled yet. Exiting...",
54 m_buffer[ pos_nwords ]);
55 printf("%s", err_buf);
56 B2FATAL(err_buf);
57 } else {
58 pos_nwords += m_buffer[ pos_nwords ];
59 }
60 if (pos_nwords >= m_nwords) {
61 char err_buf[500];
62 sprintf(err_buf, "[FATAL] ERROR_EVENT : value of pos_nwords(%d) is larger than m_nwords(%d). Exiting...\n %s %s %d\n",
63 pos_nwords, m_nwords, __FILE__, __PRETTY_FUNCTION__, __LINE__);
64 printf("%s", err_buf); fflush(stdout);
65 B2FATAL(err_buf); // to reduce multiple error messages
66 }
67 }
68 return pos_nwords;
69
70}

◆ GetEveNo()

unsigned int GetEveNo ( int  n)

Get Event #.

Definition at line 37 of file RawTLUFormat.cc.

38{
39 return m_buffer[ GetBufferPos(n) + POS_EVE_NO ];
40}

◆ GetMagicTrailer()

unsigned int GetMagicTrailer ( int  n)

Get Magic Trailer #.

Definition at line 49 of file RawTLUFormat.cc.

50{
51 return m_buffer[ GetBufferPos(n) + POS_MAGIC_1 ];
52}

◆ GetNodeID()

unsigned int GetNodeID ( int  n)

Get Node ID.

Definition at line 32 of file RawTLUFormat.cc.

33{
34 return (unsigned int)(m_buffer[ GetBufferPos(n) + POS_NODE_ID ]);
35}

◆ GetNumEntries()

virtual int GetNumEntries ( )
inlinevirtualinherited

get # of data blocks = (# of nodes)*(# of events)

Definition at line 49 of file RawDataBlockFormat.h.

49{ return m_num_events * m_num_nodes; }

◆ GetNumEvents()

virtual int GetNumEvents ( )
inlinevirtualinherited

get # of events in m_buffer

Definition at line 55 of file RawDataBlockFormat.h.

55{ return m_num_events; }

◆ GetNumNodes()

virtual int GetNumNodes ( )
inlinevirtualinherited

get # of data sources(e.g. # of COPPER boards) in m_buffer

Definition at line 52 of file RawDataBlockFormat.h.

52{ return m_num_nodes; }

◆ GetNwordsHeader()

int GetNwordsHeader ( int  n)

Get the size of the header.

Definition at line 26 of file RawTLUFormat.cc.

27{
28 return m_buffer[ GetBufferPos(n) + POS_HDR_NWORDS ];
29}

◆ GetPreAllocFlag()

virtual int GetPreAllocFlag ( )
inlinevirtualinherited

get malloc_flag

Definition at line 58 of file RawDataBlockFormat.h.

58{ return m_use_prealloc_buf; }

◆ GetRunNo()

int GetRunNo ( int  n)

Get Run #.

Definition at line 43 of file RawTLUFormat.cc.

44{
45 return m_buffer[ GetBufferPos(n) + POS_RUN_NO ];
46}

◆ GetTLUEventTag()

unsigned int GetTLUEventTag ( int  n)

Get TLU event tag.

Definition at line 54 of file RawTLUFormat.cc.

55{
56 return m_buffer[ GetBufferPos(n) + POS_TLU_EVENTTAG ];
57}

◆ GetWholeBuffer()

int * GetWholeBuffer ( )
virtualinherited

get pointer to buffer(m_buffer)

Definition at line 119 of file RawDataBlockFormat.cc.

120{
121 return m_buffer;
122}

◆ PrintData()

void PrintData ( int *  buf,
int  nwords 
)
virtualinherited

print data

Definition at line 161 of file RawDataBlockFormat.cc.

162{
163 printf("[DEBUG] ");
164 for (int i = 0; i < nwords; i++) {
165 printf("%.8x ", buf[ i ]);
166 if (i % 10 == 9) printf("\n[DEBUG] ");
167 }
168 printf("\n[DEBUG] ");
169 printf("\n");
170 return;
171}

◆ SetBuffer()

void SetBuffer ( int *  bufin,
int  nwords,
int  delete_flag,
int  num_events,
int  num_nodes 
)
virtualinherited

set buffer ( delete_flag : m_buffer is freeed( = 0 )/ not freeed( = 1 ) in Destructer )

Definition at line 131 of file RawDataBlockFormat.cc.

132{
133
134 if (bufin == NULL) {
135 char err_buf[500];
136 sprintf(err_buf, "[DEBUG] bufin is NULL. Exting...\n");
137 printf("%s", err_buf); fflush(stdout);
138 B2FATAL(err_buf);
139 }
140
141 if (!m_use_prealloc_buf && m_buffer != NULL) delete[] m_buffer;
142
143 if (delete_flag == 0) {
144 m_use_prealloc_buf = true;
145 } else {
146 m_use_prealloc_buf = false;
147 }
148
149 m_nwords = nwords;
150 m_buffer = bufin;
151
152 m_num_nodes = num_nodes;
153 m_num_events = num_events;
154
155 return;
156
157}

◆ TotalBufNwords()

int TotalBufNwords ( )
virtualinherited

Get total length of m_buffer.

Definition at line 101 of file RawDataBlockFormat.cc.

102{
103 return m_nwords;
104}

Member Data Documentation

◆ m_buffer

int* m_buffer
protectedinherited

Buffer.

Definition at line 98 of file RawDataBlockFormat.h.

◆ m_num_events

int m_num_events
protectedinherited

number of events in this object

Definition at line 95 of file RawDataBlockFormat.h.

◆ m_num_nodes

int m_num_nodes
protectedinherited

number of nodes in this object

Definition at line 92 of file RawDataBlockFormat.h.

◆ m_nwords

int m_nwords
protectedinherited

number of words of buffer

Definition at line 89 of file RawDataBlockFormat.h.

◆ m_use_prealloc_buf

int m_use_prealloc_buf
protectedinherited

not recorded

flag for deleting m_buffer in destructer( 0:delete, 1: not delete) When using pre-allocated buffer, the buffer should be reused and not deleted in the destructer

Definition at line 102 of file RawDataBlockFormat.h.


The documentation for this class was generated from the following files: