DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dunedaq
sourcecode
daqdataformats
include
daqdataformats
FragmentHeader.hpp
Go to the documentation of this file.
1
10
11
#ifndef DAQDATAFORMATS_INCLUDE_DAQDATAFORMATS_FRAGMENTHEADER_HPP_
12
#define DAQDATAFORMATS_INCLUDE_DAQDATAFORMATS_FRAGMENTHEADER_HPP_
13
14
#include "
daqdataformats/SourceID.hpp
"
15
#include "
daqdataformats/Types.hpp
"
16
17
#include <bitset>
18
#include <cstddef>
19
#include <cstdlib>
20
#include <map>
21
#include <numeric>
22
#include <string>
23
#include <vector>
24
25
namespace
dunedaq::daqdataformats
{
26
30
struct
FragmentHeader
31
{
33
static
constexpr
uint32_t
s_fragment_header_marker
= 0x11112222;
// NOLINT(build/unsigned)
34
35
static
constexpr
uint32_t
s_fragment_header_version
= 6;
// NOLINT(build/unsigned)
36
static
constexpr
uint32_t
s_default_status_bits
= 0;
// NOLINT(build/unsigned)
37
38
uint32_t
fragment_header_marker
=
s_fragment_header_marker
;
// NOLINT(build/unsigned)
39
uint32_t
version
=
s_fragment_header_version
;
// NOLINT(build/unsigned)
40
42
fragment_size_t
size
{
TypeDefaults::s_invalid_fragment_size
};
// NOLINT(build/unsigned)
43
45
trigger_number_t
trigger_number
{
TypeDefaults::s_invalid_trigger_number
};
46
48
timestamp_t
trigger_timestamp
{
TypeDefaults::s_invalid_timestamp
};
49
51
timestamp_t
window_begin
{
TypeDefaults::s_invalid_timestamp
};
52
54
timestamp_t
window_end
{
TypeDefaults::s_invalid_timestamp
};
55
56
run_number_t
run_number
{
TypeDefaults::s_invalid_run_number
};
57
59
uint32_t
status_bits
{
s_default_status_bits
};
// NOLINT(build/unsigned)
60
62
fragment_type_t
fragment_type
{
TypeDefaults::s_invalid_fragment_type
};
63
65
sequence_number_t
sequence_number
{
TypeDefaults::s_invalid_sequence_number
};
66
68
uint16_t
detector_id
;
// NOLINT(build/unsigned)
69
71
SourceID
element_id
;
72
};
73
75
enum class
FragmentStatusBits
:
size_t
76
{
77
kLatencyBufferEmpty
= 0,
78
kIncomplete
= 1,
79
kInvalidRequestWindow
= 2,
80
kRequestTimeout
= 3,
81
kRequestWindowBeforeBuffer
= 4,
82
kRequestWindowAfterBuffer
= 5,
83
kEmptyFragment
= 6,
84
kUnassigned7
= 7,
85
kUnassigned8
= 8,
86
kUnassigned9
= 9,
87
kUnassigned10
= 10,
88
kUnassigned11
= 11,
89
kUnassigned12
= 12,
90
kUnassigned13
= 13,
91
kUnassigned14
= 14,
92
kUnassigned15
= 15,
93
kUnassigned16
= 16,
94
kUnassigned17
= 17,
95
kUnassigned18
= 18,
96
kUnassigned19
= 19,
97
kUnassigned20
= 20,
98
kUnassigned21
= 21,
99
kUnassigned22
= 22,
100
kUnassigned23
= 23,
101
kUnassigned24
= 24,
102
kUnassigned25
= 25,
103
kUnassigned26
= 26,
104
kUnassigned27
= 27,
105
kUnassigned28
= 28,
106
kUnassigned29
= 29,
107
kUnassigned30
= 30,
108
kUnassigned31
= 31,
109
kInvalid
= 32
110
};
111
113
enum class
FragmentType
:
fragment_type_t
114
{
115
kUnknown
= 0,
116
kProtoWIB
= 1,
117
kWIB
= 2,
118
kDAPHNE
= 3,
119
kTDE_AMC
= 4,
120
// This fragment type is for the "raw" data from the firmware
121
// trigger primitive generation. We store this in fragments for the
122
// purposes of inspecting/debugging the firmware TPG
123
kFW_TriggerPrimitive
= 5,
124
// This fragment type is for TPs saved via the trigger subsystem's
125
// TP buffer, which are in the format defined by
126
// dunedaq::trgdataformats::TriggerPrimitive. It is also
127
// used for the stream of TPs that are sent directly from the readout
128
// subsystem to the dataflow subsystem for storage on disk.
129
// TPs stored in this format may have been _originally_ produced
130
// by either software _or_ firmware.
131
kTriggerPrimitive
= 6,
132
kTriggerActivity
= 7,
133
kTriggerCandidate
= 8,
134
kHardwareSignal
= 9,
135
kPACMAN
= 10,
136
kMPD
= 11,
137
kWIBEth
= 12,
138
kDAPHNEStream
= 13,
139
kCRT
= 14,
140
kTDEEth
= 15,
141
kCRTBern
= 16,
142
kCRTGrenoble
= 17,
143
kDAPHNEEth
= 18,
144
kDAPHNEEthStream
= 19
145
};
146
152
inline
std::map<FragmentType, std::string>
153
get_fragment_type_names
()
154
{
155
return
{
156
{
FragmentType::kUnknown
,
"Unknown"
},
157
{
FragmentType::kProtoWIB
,
"ProtoWIB"
},
158
{
FragmentType::kWIB
,
"WIB"
},
159
{
FragmentType::kDAPHNE
,
"DAPHNE"
},
160
{
FragmentType::kDAPHNEStream
,
"DAPHNEStream"
},
161
{
FragmentType::kTDE_AMC
,
"TDE_AMC"
},
162
{
FragmentType::kFW_TriggerPrimitive
,
"FW_Trigger_Primitive"
},
163
{
FragmentType::kTriggerPrimitive
,
"Trigger_Primitive"
},
164
{
FragmentType::kTriggerActivity
,
"Trigger_Activity"
},
165
{
FragmentType::kTriggerCandidate
,
"Trigger_Candidate"
},
166
{
FragmentType::kHardwareSignal
,
"Hardware_Signal"
},
167
{
FragmentType::kPACMAN
,
"PACMAN"
},
168
{
FragmentType::kMPD
,
"MPD"
},
169
{
FragmentType::kWIBEth
,
"WIBEth"
},
170
{
FragmentType::kCRT
,
"CRT"
},
171
{
FragmentType::kTDEEth
,
"TDEEth"
},
172
{
FragmentType::kCRTBern
,
"CRTBern"
},
173
{
FragmentType::kCRTGrenoble
,
"CRTGrenoble"
},
174
{
FragmentType::kDAPHNEEth
,
"DAPHNEEth"
},
175
{
FragmentType::kDAPHNEEthStream
,
"DAPHNEEthStream"
},
176
};
177
}
178
179
std::string
180
fragment_type_to_string
(
const
FragmentType
&
type
);
181
182
FragmentType
183
string_to_fragment_type
(
const
std::string& name);
184
185
std::ostream&
186
operator<<
(std::ostream& o, FragmentHeader
const
& hdr);
187
188
}
// namespace dunedaq::daqdataformats
189
190
#include "
detail/FragmentHeader.hxx
"
191
192
#endif
// DAQDATAFORMATS_INCLUDE_DAQDATAFORMATS_FRAGMENTHEADER_HPP_
FragmentHeader.hxx
SourceID.hpp
type
type
Definition
TriggerActivity_serialization.hpp:48
Types.hpp
dunedaq::daqdataformats
Definition
ComponentRequest.hpp:20
dunedaq::daqdataformats::run_number_t
uint32_t run_number_t
Definition
Types.hpp:17
dunedaq::daqdataformats::FragmentType
FragmentType
All defined Fragment types.
Definition
FragmentHeader.hpp:114
dunedaq::daqdataformats::FragmentType::kHardwareSignal
@ kHardwareSignal
Definition
FragmentHeader.hpp:134
dunedaq::daqdataformats::FragmentType::kTriggerCandidate
@ kTriggerCandidate
Definition
FragmentHeader.hpp:133
dunedaq::daqdataformats::FragmentType::kCRTBern
@ kCRTBern
Definition
FragmentHeader.hpp:141
dunedaq::daqdataformats::FragmentType::kWIBEth
@ kWIBEth
Definition
FragmentHeader.hpp:137
dunedaq::daqdataformats::FragmentType::kUnknown
@ kUnknown
Definition
FragmentHeader.hpp:115
dunedaq::daqdataformats::FragmentType::kProtoWIB
@ kProtoWIB
Definition
FragmentHeader.hpp:116
dunedaq::daqdataformats::FragmentType::kTriggerPrimitive
@ kTriggerPrimitive
Trigger format TPs produced by trigger code.
Definition
FragmentHeader.hpp:131
dunedaq::daqdataformats::FragmentType::kMPD
@ kMPD
Definition
FragmentHeader.hpp:136
dunedaq::daqdataformats::FragmentType::kPACMAN
@ kPACMAN
Definition
FragmentHeader.hpp:135
dunedaq::daqdataformats::FragmentType::kDAPHNE
@ kDAPHNE
Definition
FragmentHeader.hpp:118
dunedaq::daqdataformats::FragmentType::kTDEEth
@ kTDEEth
Definition
FragmentHeader.hpp:140
dunedaq::daqdataformats::FragmentType::kTriggerActivity
@ kTriggerActivity
Definition
FragmentHeader.hpp:132
dunedaq::daqdataformats::FragmentType::kDAPHNEEthStream
@ kDAPHNEEthStream
Definition
FragmentHeader.hpp:144
dunedaq::daqdataformats::FragmentType::kTDE_AMC
@ kTDE_AMC
Definition
FragmentHeader.hpp:119
dunedaq::daqdataformats::FragmentType::kDAPHNEStream
@ kDAPHNEStream
Definition
FragmentHeader.hpp:138
dunedaq::daqdataformats::FragmentType::kCRTGrenoble
@ kCRTGrenoble
Definition
FragmentHeader.hpp:142
dunedaq::daqdataformats::FragmentType::kFW_TriggerPrimitive
@ kFW_TriggerPrimitive
FW TP frame format.
Definition
FragmentHeader.hpp:123
dunedaq::daqdataformats::FragmentType::kWIB
@ kWIB
Definition
FragmentHeader.hpp:117
dunedaq::daqdataformats::FragmentType::kCRT
@ kCRT
Definition
FragmentHeader.hpp:139
dunedaq::daqdataformats::FragmentType::kDAPHNEEth
@ kDAPHNEEth
Definition
FragmentHeader.hpp:143
dunedaq::daqdataformats::trigger_number_t
uint64_t trigger_number_t
Definition
Types.hpp:18
dunedaq::daqdataformats::string_to_fragment_type
FragmentType string_to_fragment_type(const std::string &name)
Definition
FragmentHeader.hxx:46
dunedaq::daqdataformats::sequence_number_t
uint16_t sequence_number_t
Type used to represent sequence within a trigger record.
Definition
Types.hpp:38
dunedaq::daqdataformats::fragment_type_to_string
std::string fragment_type_to_string(const FragmentType &type)
Definition
FragmentHeader.hxx:36
dunedaq::daqdataformats::timestamp_t
uint64_t timestamp_t
Type used to represent DUNE timing system timestamps.
Definition
Types.hpp:26
dunedaq::daqdataformats::fragment_type_t
uint32_t fragment_type_t
Type used to represent Fragment type ID.
Definition
Types.hpp:21
dunedaq::daqdataformats::fragment_size_t
uint64_t fragment_size_t
Definition
Types.hpp:23
dunedaq::daqdataformats::operator<<
std::ostream & operator<<(std::ostream &o, ComponentRequest const &cr)
Definition
ComponentRequest.hxx:23
dunedaq::daqdataformats::get_fragment_type_names
std::map< FragmentType, std::string > get_fragment_type_names()
This map relates FragmentType values to string names.
Definition
FragmentHeader.hpp:153
dunedaq::daqdataformats::FragmentStatusBits
FragmentStatusBits
All defined status bits, with a short documentation of their meaning if non-obvious.
Definition
FragmentHeader.hpp:76
dunedaq::daqdataformats::FragmentStatusBits::kUnassigned20
@ kUnassigned20
Definition
FragmentHeader.hpp:97
dunedaq::daqdataformats::FragmentStatusBits::kUnassigned13
@ kUnassigned13
Definition
FragmentHeader.hpp:90
dunedaq::daqdataformats::FragmentStatusBits::kUnassigned26
@ kUnassigned26
Definition
FragmentHeader.hpp:103
dunedaq::daqdataformats::FragmentStatusBits::kUnassigned14
@ kUnassigned14
Definition
FragmentHeader.hpp:91
dunedaq::daqdataformats::FragmentStatusBits::kRequestWindowBeforeBuffer
@ kRequestWindowBeforeBuffer
The request window extends before the latency buffer start.
Definition
FragmentHeader.hpp:81
dunedaq::daqdataformats::FragmentStatusBits::kUnassigned16
@ kUnassigned16
Definition
FragmentHeader.hpp:93
dunedaq::daqdataformats::FragmentStatusBits::kUnassigned27
@ kUnassigned27
Definition
FragmentHeader.hpp:104
dunedaq::daqdataformats::FragmentStatusBits::kUnassigned10
@ kUnassigned10
Definition
FragmentHeader.hpp:87
dunedaq::daqdataformats::FragmentStatusBits::kIncomplete
@ kIncomplete
Only part of the requested data is present in the fragment.
Definition
FragmentHeader.hpp:78
dunedaq::daqdataformats::FragmentStatusBits::kUnassigned9
@ kUnassigned9
Definition
FragmentHeader.hpp:86
dunedaq::daqdataformats::FragmentStatusBits::kUnassigned24
@ kUnassigned24
Definition
FragmentHeader.hpp:101
dunedaq::daqdataformats::FragmentStatusBits::kInvalidRequestWindow
@ kInvalidRequestWindow
The requested data window was too large.
Definition
FragmentHeader.hpp:79
dunedaq::daqdataformats::FragmentStatusBits::kLatencyBufferEmpty
@ kLatencyBufferEmpty
The latency buffer had zero occupancy when the data request was made.
Definition
FragmentHeader.hpp:77
dunedaq::daqdataformats::FragmentStatusBits::kUnassigned7
@ kUnassigned7
Definition
FragmentHeader.hpp:84
dunedaq::daqdataformats::FragmentStatusBits::kUnassigned28
@ kUnassigned28
Definition
FragmentHeader.hpp:105
dunedaq::daqdataformats::FragmentStatusBits::kUnassigned21
@ kUnassigned21
Definition
FragmentHeader.hpp:98
dunedaq::daqdataformats::FragmentStatusBits::kUnassigned31
@ kUnassigned31
Definition
FragmentHeader.hpp:108
dunedaq::daqdataformats::FragmentStatusBits::kRequestWindowAfterBuffer
@ kRequestWindowAfterBuffer
The request window extends after the latency buffer end.
Definition
FragmentHeader.hpp:82
dunedaq::daqdataformats::FragmentStatusBits::kInvalid
@ kInvalid
Status bit 32 and higher are not valid (status_bits is only 32 bits).
Definition
FragmentHeader.hpp:109
dunedaq::daqdataformats::FragmentStatusBits::kUnassigned18
@ kUnassigned18
Definition
FragmentHeader.hpp:95
dunedaq::daqdataformats::FragmentStatusBits::kUnassigned25
@ kUnassigned25
Definition
FragmentHeader.hpp:102
dunedaq::daqdataformats::FragmentStatusBits::kUnassigned19
@ kUnassigned19
Definition
FragmentHeader.hpp:96
dunedaq::daqdataformats::FragmentStatusBits::kEmptyFragment
@ kEmptyFragment
This Fragment contains no data.
Definition
FragmentHeader.hpp:83
dunedaq::daqdataformats::FragmentStatusBits::kRequestTimeout
@ kRequestTimeout
A timeout occurred while processing the data request.
Definition
FragmentHeader.hpp:80
dunedaq::daqdataformats::FragmentStatusBits::kUnassigned29
@ kUnassigned29
Definition
FragmentHeader.hpp:106
dunedaq::daqdataformats::FragmentStatusBits::kUnassigned23
@ kUnassigned23
Definition
FragmentHeader.hpp:100
dunedaq::daqdataformats::FragmentStatusBits::kUnassigned11
@ kUnassigned11
Definition
FragmentHeader.hpp:88
dunedaq::daqdataformats::FragmentStatusBits::kUnassigned15
@ kUnassigned15
Definition
FragmentHeader.hpp:92
dunedaq::daqdataformats::FragmentStatusBits::kUnassigned17
@ kUnassigned17
Definition
FragmentHeader.hpp:94
dunedaq::daqdataformats::FragmentStatusBits::kUnassigned22
@ kUnassigned22
Definition
FragmentHeader.hpp:99
dunedaq::daqdataformats::FragmentStatusBits::kUnassigned12
@ kUnassigned12
Definition
FragmentHeader.hpp:89
dunedaq::daqdataformats::FragmentStatusBits::kUnassigned30
@ kUnassigned30
Definition
FragmentHeader.hpp:107
dunedaq::daqdataformats::FragmentStatusBits::kUnassigned8
@ kUnassigned8
Definition
FragmentHeader.hpp:85
dunedaq::daqdataformats::FragmentHeader
The header for a DUNE Fragment.
Definition
FragmentHeader.hpp:31
dunedaq::daqdataformats::FragmentHeader::trigger_timestamp
timestamp_t trigger_timestamp
Timestamp of the TriggerDecision.
Definition
FragmentHeader.hpp:48
dunedaq::daqdataformats::FragmentHeader::fragment_type
fragment_type_t fragment_type
Type of the Fragment, indicating the format of the contained payload.
Definition
FragmentHeader.hpp:62
dunedaq::daqdataformats::FragmentHeader::element_id
SourceID element_id
Component that generated the data in this Fragment.
Definition
FragmentHeader.hpp:71
dunedaq::daqdataformats::FragmentHeader::detector_id
uint16_t detector_id
Identifier for the subdetector that produced the raw data in the Fragment payload.
Definition
FragmentHeader.hpp:68
dunedaq::daqdataformats::FragmentHeader::fragment_header_marker
uint32_t fragment_header_marker
Definition
FragmentHeader.hpp:38
dunedaq::daqdataformats::FragmentHeader::version
uint32_t version
Definition
FragmentHeader.hpp:39
dunedaq::daqdataformats::FragmentHeader::run_number
run_number_t run_number
Definition
FragmentHeader.hpp:56
dunedaq::daqdataformats::FragmentHeader::s_fragment_header_marker
static constexpr uint32_t s_fragment_header_marker
Marker bytes to identify a FragmentHeader entry in a raw data stream.
Definition
FragmentHeader.hpp:33
dunedaq::daqdataformats::FragmentHeader::s_default_status_bits
static constexpr uint32_t s_default_status_bits
Definition
FragmentHeader.hpp:36
dunedaq::daqdataformats::FragmentHeader::sequence_number
sequence_number_t sequence_number
Sequence number of this Fragment within a trigger record.
Definition
FragmentHeader.hpp:65
dunedaq::daqdataformats::FragmentHeader::s_fragment_header_version
static constexpr uint32_t s_fragment_header_version
Definition
FragmentHeader.hpp:35
dunedaq::daqdataformats::FragmentHeader::status_bits
uint32_t status_bits
Status bits set by the Upstream DAQ.
Definition
FragmentHeader.hpp:59
dunedaq::daqdataformats::FragmentHeader::trigger_number
trigger_number_t trigger_number
Trigger Number this Fragment is associated with.
Definition
FragmentHeader.hpp:45
dunedaq::daqdataformats::FragmentHeader::window_end
timestamp_t window_end
Window end of data in the Fragment.
Definition
FragmentHeader.hpp:54
dunedaq::daqdataformats::FragmentHeader::window_begin
timestamp_t window_begin
Window begin of data in the Fragment.
Definition
FragmentHeader.hpp:51
dunedaq::daqdataformats::FragmentHeader::size
fragment_size_t size
Size of the Fragment (including header and payload).
Definition
FragmentHeader.hpp:42
dunedaq::daqdataformats::SourceID
SourceID is a generalized representation of the source of a piece of data in the DAQ....
Definition
SourceID.hpp:32
dunedaq::daqdataformats::TypeDefaults::s_invalid_sequence_number
static constexpr sequence_number_t s_invalid_sequence_number
Definition
Types.hpp:56
dunedaq::daqdataformats::TypeDefaults::s_invalid_trigger_number
static constexpr trigger_number_t s_invalid_trigger_number
Definition
Types.hpp:48
dunedaq::daqdataformats::TypeDefaults::s_invalid_fragment_type
static constexpr fragment_type_t s_invalid_fragment_type
Definition
Types.hpp:49
dunedaq::daqdataformats::TypeDefaults::s_invalid_fragment_size
static constexpr fragment_size_t s_invalid_fragment_size
Invalid size for a Fragment (as FragmentHeader is counted as well).
Definition
Types.hpp:50
dunedaq::daqdataformats::TypeDefaults::s_invalid_timestamp
static constexpr timestamp_t s_invalid_timestamp
Definition
Types.hpp:52
dunedaq::daqdataformats::TypeDefaults::s_invalid_run_number
static constexpr run_number_t s_invalid_run_number
Definition
Types.hpp:47
Generated on
for DUNE-DAQ by
1.16.1