1#ifndef PACKING_MULTISAMPLEECONDEVENTPACKET_H
2#define PACKING_MULTISAMPLEECONDEVENTPACKET_H
4#include "Packing/DAQSampleHeader.h"
5#include "Packing/ECONDEventPacket.h"
80 void from(std::span<const uint32_t> frame);
84 std::size_t
resync(std::span<const uint32_t> frame, std::size_t start,
85 std::size_t i_sample)
const;
Single ECON-D event packet.
Unpack an event that has potentially more than one sample collected from a single ECOND.
const ECONDEventPacket & soi() const
get the sample of interest
int n_links_
number of links connected to the ECOND
int trailer_n_samples_
number of samples written in the trailer (-1 if no trailer)
std::size_t resync(std::span< const uint32_t > frame, std::size_t start, std::size_t i_sample) const
find the next capture header for sample i_sample or the trailer
std::size_t i_soi_
index of the sample of interest (SOI)
bool isCorrupt() const
any of the frame-level corruption flags are set
enableLogging("MultiSampleECONDEventPacket")
handle to logging source
MultiSampleECONDEventPacket(int n_links)
constructor defining how many links are connected to this ECOND
int econd_id_
ID for this econ from the first capture header (-1 if none)
void from(std::span< const uint32_t > frame)
unpack the given frame into this structure
std::vector< ECONDEventPacket > samples_
samples from ECOND stored in order of transmission
Corruption
index of frame-level corruption flags
@ NO_TRAILER
the frame ended without the ending trailer
@ RESYNC
a capture header was missing, words were skipped to find the next
@ NO_SOI
no sample flagged as the sample of interest
@ TRUNCATED_FRAME
capture header length goes past the end of the frame
@ LOST_SYNC
no further capture header or trailer found, rest of frame dropped
@ N_CORRUPTION
number of corruption flags
@ SAMPLE_INDEX_MISMATCH
sample index in capture header does not match its position
@ TRAILER_COUNT_MISMATCH
number of samples in the trailer does not match the number found
@ EXTRA_WORDS
non-zero words after the ending trailer
@ ECON_ID_MISMATCH
ECON ID changed within the frame.
std::vector< DAQSampleHeader > headers_
capture headers stored in order of transmission
std::size_t n_skipped_words_
number of words skipped while searching for capture headers
std::array< bool, N_CORRUPTION > corruption_
corruption flags indexed by Corruption