Hadaq subevent structure.
Every event contains zero to unspecified many subevents. As an empty event is allowed, data outside of any subevent are not allowed. A subevents consists out of a fixed size subevent header and a varying number of data words.
The subevent header
subEvtHeader
subEvtSize subEvtDecoding subEvtId subEvtTrigNr
o subEvtSize - size of the subevent: This includes the the subevent header, it is measured in bytes.
o subEvtDecoding - subevent decoding type: Tells the analysis the binary format of the subevent data, so that it can be handed to a corresponding routine for unpacking into a software usable data structure. For easier decoding of this word, the meaning of some bits is already predefined:
subEvtDecoding
msB --- --- lsB
0 data type decoding type nonzero
+ The first (most significant) byte is always zero
+ The second byte contains the word length of the subevent data. 0 = byte, 1 = 16 bit word, 2 = 32 bit word...
+ The remaining two bytes form the actual decoding type, e.g. fixed length, zero suppressed etc.
+ The last byte must not be zero, so the whole subEvtDecoding can be used to check for correct or swapped byte order. It is stated again, that the whole subEvtDecoding is one 32bit word. The above bit assignments are merely a rule how to select this 32bit numbers.
o subEvtId - subevent identifier: Tells the analysis the semantics of the subevent data, e.g. every subevent builder may get its own subEvtId. So the data structure can be analyzed by the corresponding routine after unpacking.
1-99 DAQ
100-199 RICH
200-299 MDC
300-399 SHOWER
400-499 TOF
500-599 TRIG
600-699 SLOW
700-799 TRB_RPC common TRB, but contents is RPC
800-899 TRB_HOD pion-hodoscope
900-999 TRB_FW forward wall
1000-1099 TRB_START start detector
1100-1199 TRB_TOF TOF detector
1200-1299 TRB RICH RICH detector
Additionally, all subEvtIds may have the MSB set. This indicates a sub event of the corresponding id that contains broken data (e.g. parity check failed, sub event was too long etc.).
o subEvtTrigNr - subevent Trigger Number: This is the event tag that is produced by the trigger system and is used for checking the correct assembly of several sub entities. In general, this number is not counting sequentially. The lowest significant byte represents the trigger tag generated by the CTU and has to be same for all detector subsystems in one event. The rest is filled by the EB.
The data words: The format of the data words (word length, compression algorithm, sub-sub-event format) is defined by the subEvtDecoding and apart from this it is completely free. The meaning of the data words (detector, geographical position, error information) is defined by the subEvtId and apart from this it is completely unknown to the data acquisition system.
Definition at line 262 of file defines.h.