DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
FragmentHeader.hxx
Go to the documentation of this file.
1
3
4static_assert(std::is_trivially_copyable<FragmentHeader>::value,
5 "FragmentHeader isn't trivially copyable and can't be safely std::memcpy'd");
6
7static_assert(std::is_standard_layout<FragmentHeader>::value,
8 "FragmentHeader isn't standard layout; reinterpret_cast and offsetof can't safely be used with it");
9
11 "This is intentionally designed to tell the developer to update the static_assert checks (including this "
12 "one) when the version is bumped");
13
14static_assert(sizeof(FragmentHeader) == 72, "FragmentHeader struct size different than expected!");
15static_assert(offsetof(FragmentHeader, fragment_header_marker) == 0,
16 "FragmentHeader fragment_header_marker field not at expected offset!");
17static_assert(offsetof(FragmentHeader, version) == 4, "FragmentHeader version field not at expected offset!");
18static_assert(offsetof(FragmentHeader, size) == 8, "FragmentHeader size field not at expected offset!");
19static_assert(offsetof(FragmentHeader, trigger_number) == 16,
20 "FragmentHeader trigger_number field not at expected offset!");
21static_assert(offsetof(FragmentHeader, trigger_timestamp) == 24,
22 "FragmentHeader trigger_timestamp field not at expected offset!");
23static_assert(offsetof(FragmentHeader, window_begin) == 32,
24 "FragmentHeader window_begin field not at expected offset!");
25static_assert(offsetof(FragmentHeader, window_end) == 40, "FragmentHeader window_end field not at expected offset!");
26static_assert(offsetof(FragmentHeader, run_number) == 48, "FragmentHeader run_number field not at expected offset!");
27static_assert(offsetof(FragmentHeader, status_bits) == 52, "FragmentHeader status_bits field not at expected offset!");
28static_assert(offsetof(FragmentHeader, fragment_type) == 56,
29 "FragmentHeader fragment_type field not at expected offset!");
30static_assert(offsetof(FragmentHeader, sequence_number) == 60,
31 "FragmentHeader sequence_number field not at expected offset!");
32static_assert(offsetof(FragmentHeader, detector_id) == 62, "FragmentHeader detector_id field not at expected offset!");
33static_assert(offsetof(FragmentHeader, element_id) == 64, "FragmentHeader element_id field not at expected offset!");
34
35inline std::string
37{
38 try {
39 return get_fragment_type_names().at(type);
40 } catch (std::exception& e) {
41 }
42 return "Unknown";
43}
44
45inline FragmentType
46string_to_fragment_type(const std::string& name)
47{
48 for (auto& it : get_fragment_type_names()) {
49 if (it.second == name)
50 return it.first;
51 }
53}
54
55inline std::ostream&
56operator<<(std::ostream& o, FragmentHeader const& hdr)
57{
58 return o << "check_word: " << std::hex << hdr.fragment_header_marker << std::dec << ", " << "version: " << hdr.version
59 << ", " << "size: " << hdr.size << ", " << "trigger_number: " << hdr.trigger_number << ", "
60 << "run_number: " << hdr.run_number << ", " << "trigger_timestamp: " << hdr.trigger_timestamp << ", "
61 << "window_begin: " << hdr.window_begin << ", " << "window_end: " << hdr.window_end << ", "
62 << "status_bits: " << hdr.status_bits << ", " << "fragment_type: " << hdr.fragment_type << ", "
63 << "sequence_number: " << hdr.sequence_number << ", " << "detector_id: " << hdr.detector_id << ", "
64 << "element_id: " << hdr.element_id;
65}
66
67} // namespace dunedaq::daqdataformats
FragmentType
All defined Fragment types.
FragmentType string_to_fragment_type(const std::string &name)
std::string fragment_type_to_string(const FragmentType &type)
std::ostream & operator<<(std::ostream &o, ComponentRequest const &cr)
std::map< FragmentType, std::string > get_fragment_type_names()
This map relates FragmentType values to string names.
FELIX Initialization std::string initerror FELIX queue timed std::string queuename Unexpected chunk size
The header for a DUNE Fragment.
timestamp_t trigger_timestamp
Timestamp of the TriggerDecision.
fragment_type_t fragment_type
Type of the Fragment, indicating the format of the contained payload.
SourceID element_id
Component that generated the data in this Fragment.
uint16_t detector_id
Identifier for the subdetector that produced the raw data in the Fragment payload.
sequence_number_t sequence_number
Sequence number of this Fragment within a trigger record.
static constexpr uint32_t s_fragment_header_version
uint32_t status_bits
Status bits set by the Upstream DAQ.
trigger_number_t trigger_number
Trigger Number this Fragment is associated with.
timestamp_t window_end
Window end of data in the Fragment.
timestamp_t window_begin
Window begin of data in the Fragment.
fragment_size_t size
Size of the Fragment (including header and payload).