This document describes the format of the FragmentHeader
struct, version 4. It should not be updated, but rather kept as a historic record of the data format for this version.
FragmentHeader Description
Version 4 of the FragmentHeader
consists of 18 32-bit words:
- Marker (0x11112222)
- Version (0x00000004)
- Size in bytes, including header and Fragment payload (upper 32 bits)
- Size in bytes, including header and Fragment payload (lower 32 bits)
- Trigger number (upper 32 bits)
- Trigger number (lower 32 bits)
- Trigger timestamp (upper 32 bits)
- Trigger timestamp (lower 32 bits)
- Data window begin (upper 32 bits)
- Data window begin (lower 32 bits)
- Data window end (upper 32 bits)
- Data window end (lower 32 bits)
- Run Number
- Error bits
- Fragment Type
- Sequence Number (upper 16 bits) / Padding (lower 16 bits)
- SourceID version 2 Version (upper 16 bits) / Subsystem (lower 16 bits)
- SourceID version 2 Element ID
C++ code for FragmentHeader
using run_number_t = uint32_t;
using trigger_number_t = uint64_t;
using fragment_type_t = uint32_t;
using fragment_size_t = uint64_t;
using timestamp_t = uint64_t;
using sequence_number_t = uint16_t;
struct FragmentHeader
{
static constexpr uint32_t s_fragment_header_marker = 0x11112222;
static constexpr uint32_t s_fragment_header_version = 4;
static constexpr uint32_t s_default_error_bits = 0;
uint32_t fragment_header_marker = s_fragment_header_marker;
uint32_t
version = s_fragment_header_version;
fragment_size_t size{ TypeDefaults::s_invalid_fragment_size };
trigger_number_t trigger_number{ TypeDefaults::s_invalid_trigger_number };
timestamp_t trigger_timestamp{ TypeDefaults::s_invalid_timestamp };
timestamp_t window_begin{ TypeDefaults::s_invalid_timestamp };
timestamp_t window_end{ TypeDefaults::s_invalid_timestamp };
run_number_t run_number{ TypeDefaults::s_invalid_run_number };
uint32_t error_bits{ s_default_error_bits };
uint16_t unused {0xFFFF};
};
struct dunedaq::ctbmodules::content::word::timestamp_t timestamp_t
daqdataformats::SourceID SourceID
Copy daqdataformats::SourceID.
Fragment Notes
A Fragment
is a flat array consisting of a FragmentHeader
and payload data (e.g. data from electronics readout). The format of this data should be able to be inferred from the fragment_type
field of the FragmentHeader
.