action.skip

FragmentHeader v6

This document describes the format of the FragmentHeader struct, version 6. It should not be updated, but rather kept as a historic record of the data format for this version.

FragmentHeader Description

Version 6 of the FragmentHeader consists of 18 32-bit words:

  1. Marker (0x11112222)

  2. Version (0x00000006)

  3. Size in bytes, including header and Fragment payload (upper 32 bits)

  4. Size in bytes, including header and Fragment payload (lower 32 bits)

  5. Trigger number (upper 32 bits)

  6. Trigger number (lower 32 bits)

  7. Trigger timestamp (upper 32 bits)

  8. Trigger timestamp (lower 32 bits)

  9. Data window begin (upper 32 bits)

  10. Data window begin (lower 32 bits)

  11. Data window end (upper 32 bits)

  12. Data window end (lower 32 bits)

  13. Run Number

  14. Status bits

  15. Fragment Type

  16. Sequence Number (upper 16 bits) / Detector ID (lower 16 bits)

  17. SourceID version 2 Version (upper 16 bits) / Subsystem (lower 16 bits)

  18. 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 = 6;
  static constexpr uint32_t s_default_status_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 status_bits{ s_default_status_bits }; 
  fragment_type_t fragment_type{ TypeDefaults::s_invalid_fragment_type };
  sequence_number_t sequence_number {TypeDefaults::s_invalid_sequence_number };
  uint16_t detector_id;
  SourceID element_id;
};

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.

Changelog

v6. The only change from version 5 to version 6 of the FragmentHeader is that the error_bits field has been renamed to status_bits to better reflect its intended use. v5. The only change from version 4 to version 5 of the FragmentHeader is that the lower 16 bits of word 15, which were previously unused padding, are now used to store a detector_id field.


Last git commit to the markdown source of this page:

Author: Eric Flumerfelt

Date: Thu Jan 22 08:45:15 2026 -0600

If you see a problem with the documentation on this page, please file an Issue at https://github.com/DUNE-DAQ/daqdataformats/issues