action.skip

FragmentHeader v3

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

FragmentHeader Description

A FragmentHeader version 3 consists of 20 32-bit words:

  1. Marker (0x11112222)

  2. Version (0x00000003)

  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. Error bits

  15. Fragment Type

  16. Sequence Number (16b) / Padding

  17. GeoID version 1 Component Type (upper 16 bits), Region ID (lower 16 bits)

  18. GeoID version 1 Element ID

  19. GeoID version 1 Version

  20. GeoID version 1 Pad Word

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 = 3;
  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 }; 
  fragment_type_t fragment_type{ TypeDefaults::s_invalid_fragment_type };
  sequence_number_t sequence_number {TypeDefaults::s_invalid_sequence_number };
  uint16_t unused {0xFFFF};
  GeoID link_id;
};

Fragment Notes

A Fragment is a flat array consisting of a FragmentHeader and data from Readout. The format of this data should be able to be inferred from the fragment_type field._


Last git commit to the markdown source of this page:

Author: Eric Flumerfelt

Date: Wed Apr 6 13:49:38 2022 -0500

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