![Logo](../../ATLAS-Logo-Square-Blue-RGB.png) |
ATLAS Offline Software
|
#include <NSWTriggerSTGL1AElink.h>
|
struct | DataHeader |
| Helper struct to hold information of the header for each data chunk. More...
|
|
Definition at line 22 of file NSWTriggerSTGL1AElink.h.
◆ NSWTriggerSTGL1AElink()
Muon::nsw::NSWTriggerSTGL1AElink::NSWTriggerSTGL1AElink |
( |
const std::uint32_t * |
bs, |
|
|
std::uint32_t |
remaining |
|
) |
| |
Definition at line 19 of file NSWTriggerSTGL1AElink.cxx.
24 constexpr
static auto START_DATA = std::size_t{2 * 32};
25 auto readPointer = std::size_t{START_DATA};
◆ ~NSWTriggerSTGL1AElink()
virtual Muon::nsw::NSWTriggerSTGL1AElink::~NSWTriggerSTGL1AElink |
( |
| ) |
|
|
virtualdefault |
◆ analyze_data()
void Muon::nsw::NSWTriggerSTGL1AElink::analyze_data |
( |
| ) |
|
|
private |
Analyze data chunks and create decoded objects.
Definition at line 186 of file NSWTriggerSTGL1AElink.cxx.
187 auto counterChunk = std::size_t{0};
189 for (
const auto& dataWord : dataChunk) {
190 const auto expectedSize =
192 if (
std::size(dataWord) != expectedSize) {
193 throw std::length_error(
Muon::nsw::format(
"Stream data size {} does not match expected number of messages {}",
◆ correct_size_for_padding()
std::uint64_t Muon::nsw::NSWTriggerSTGL1AElink::correct_size_for_padding |
( |
std::uint64_t |
initial | ) |
|
|
staticprivate |
Definition at line 211 of file NSWTriggerSTGL1AElink.cxx.
212 static constexpr
auto PADDING = 16;
213 if (initial % PADDING) {
214 return ((initial + PADDING - 1) / PADDING) * PADDING;
◆ decode()
std::uint64_t Muon::nsw::NSWTriggerSTGL1AElink::decode |
( |
std::size_t & |
readPointer, |
|
|
std::size_t |
size |
|
) |
| const |
|
private |
Decode a value.
- Parameters
-
readPointer | Current read pointer position (updated by function) |
size | Size of the value to be decoded |
- Returns
- std::uint64_t Decoded value
Definition at line 182 of file NSWTriggerSTGL1AElink.cxx.
183 return Muon::nsw::decode_and_advance<std::uint64_t, std::uint32_t>(
m_data, readPointer,
size);
◆ decode_data()
void Muon::nsw::NSWTriggerSTGL1AElink::decode_data |
( |
std::size_t & |
readPointer | ) |
|
|
private |
Decode the pad and segment data.
- Parameters
-
readPointer | Current read pointer position (updated by function) |
Definition at line 104 of file NSWTriggerSTGL1AElink.cxx.
105 static constexpr
auto PADDING_BITS_END = std::size_t{16};
107 while (readPointer < endOfData) {
110 if (readPointer + SIZE_DATA_HEADER > endOfData) {
111 throw std::length_error(
112 Muon::nsw::format(
"Read pointer ({}) would excede memory dedicated to data chunks ({}) while parsing the header (size: {})",
113 readPointer, endOfData, SIZE_DATA_HEADER));
118 throw std::length_error(
Muon::nsw::format(
"STG TP stream size {} larger than expected packet size {}",
119 header_data.total_expected_size,
122 if (header_data.nwords * header_data.data_size + readPointer > endOfData) {
123 throw std::length_error(
Muon::nsw::format(
"Requested to decode {} bits but only {} bits are remaining",
124 header_data.nwords * header_data.data_size, endOfData - readPointer));
◆ decode_data_header()
Decode the header of each data segment.
Contains information about type, number of words and bits per word
- Parameters
-
readPointer | Current read pointer position (updated by function) |
- Returns
- DataHeader Information from header
Definition at line 132 of file NSWTriggerSTGL1AElink.cxx.
148 const auto data_size =
static_cast<std::size_t
>(std::ceil(corrected_current_stream_head_nbits /
WORD_SIZE_DOUBLE));
149 const auto total_expected_size = data_size * current_stream_head_nwords;
151 ERS_DEBUG(2,
Muon::nsw::format(
"stream_head_nbits: {}", corrected_current_stream_head_nbits));
152 ERS_DEBUG(2,
Muon::nsw::format(
"stream_head_nwords: {}", current_stream_head_nwords));
153 ERS_DEBUG(2,
Muon::nsw::format(
"stream_head_fifo_size: {}", current_stream_head_fifo_size));
154 ERS_DEBUG(2,
Muon::nsw::format(
"stream_head_streamID: {}", current_stream_head_streamID));
155 ERS_DEBUG(2,
Muon::nsw::format(
"total_expected_size: {}", data_size * current_stream_head_nwords));
159 return {corrected_current_stream_head_nbits, current_stream_head_nwords, current_stream_head_fifo_size,
160 current_stream_head_streamID, total_expected_size, data_size};
◆ decode_data_payload()
std::vector< std::vector< std::uint32_t > > Muon::nsw::NSWTriggerSTGL1AElink::decode_data_payload |
( |
std::size_t & |
readPointer, |
|
|
const DataHeader & |
header |
|
) |
| const |
|
private |
Decode the payload of each data segment.
Contains actual data from pad or segments
- Parameters
-
readPointer | Current read pointer position (updated by function) |
header | Information from data header |
- Returns
- DataHeader Information from header
Definition at line 163 of file NSWTriggerSTGL1AElink.cxx.
165 std::vector<std::vector<std::uint32_t>> current_stream_data{};
167 for (std::size_t
i = 0;
i <
header.nwords; ++
i) {
168 std::vector<std::uint32_t>
data{};
169 for (std::size_t j = 0; j <
header.data_size; ++j) {
172 current_stream_data.push_back(
data);
174 return current_stream_data;
◆ decode_header()
void Muon::nsw::NSWTriggerSTGL1AElink::decode_header |
( |
std::size_t & |
readPointer, |
|
|
int |
version = 0 |
|
) |
| |
|
private |
Decode the header.
- Parameters
-
readPointer | Current read pointer position (updated by function) |
Definition at line 32 of file NSWTriggerSTGL1AElink.cxx.
◆ decode_trailer()
void Muon::nsw::NSWTriggerSTGL1AElink::decode_trailer |
( |
std::size_t & |
readPointer | ) |
|
|
private |
Decode the trailer.
- Parameters
-
readPointer | Current read pointer position (updated by function) |
Definition at line 177 of file NSWTriggerSTGL1AElink.cxx.
◆ elinkId()
◆ elinkWord()
uint32_t Muon::nsw::NSWTriggerElink::elinkWord |
( |
| ) |
const |
|
inlineinherited |
◆ head_BCID()
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::head_BCID |
( |
| ) |
const |
|
inline |
◆ head_EC()
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::head_EC |
( |
| ) |
const |
|
inline |
◆ head_flags()
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::head_flags |
( |
| ) |
const |
|
inline |
◆ head_fragID()
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::head_fragID |
( |
| ) |
const |
|
inline |
◆ head_orbit()
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::head_orbit |
( |
| ) |
const |
|
inline |
◆ head_overflowCount()
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::head_overflowCount |
( |
| ) |
const |
|
inline |
◆ head_sectID()
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::head_sectID |
( |
| ) |
const |
|
inline |
◆ head_spare()
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::head_spare |
( |
| ) |
const |
|
inline |
◆ head_wdw_matching_engines_usage()
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::head_wdw_matching_engines_usage |
( |
| ) |
const |
|
inline |
◆ l1a_busy_thr()
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::l1a_busy_thr |
( |
| ) |
const |
|
inline |
◆ l1a_close_BCID()
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::l1a_close_BCID |
( |
| ) |
const |
|
inline |
◆ l1a_close_BCID_offset()
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::l1a_close_BCID_offset |
( |
| ) |
const |
|
inline |
◆ l1a_engine_snapshot()
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::l1a_engine_snapshot |
( |
| ) |
const |
|
inline |
◆ l1a_link_const()
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::l1a_link_const |
( |
| ) |
const |
|
inline |
◆ l1a_local_rel_BCID()
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::l1a_local_rel_BCID |
( |
| ) |
const |
|
inline |
◆ l1a_local_req_BCID()
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::l1a_local_req_BCID |
( |
| ) |
const |
|
inline |
◆ l1a_open_BCID()
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::l1a_open_BCID |
( |
| ) |
const |
|
inline |
◆ l1a_open_BCID_offset()
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::l1a_open_BCID_offset |
( |
| ) |
const |
|
inline |
◆ l1a_padding()
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::l1a_padding |
( |
| ) |
const |
|
inline |
◆ l1a_req_BCID()
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::l1a_req_BCID |
( |
| ) |
const |
|
inline |
◆ l1a_req_BCID_offset()
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::l1a_req_BCID_offset |
( |
| ) |
const |
|
inline |
◆ l1a_timeout()
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::l1a_timeout |
( |
| ) |
const |
|
inline |
◆ l1a_timeout_config()
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::l1a_timeout_config |
( |
| ) |
const |
|
inline |
◆ l1a_versionID()
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::l1a_versionID |
( |
| ) |
const |
|
inline |
◆ L1ID()
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::L1ID |
( |
| ) |
const |
|
inline |
◆ nwords()
unsigned int Muon::nsw::NSWTriggerElink::nwords |
( |
| ) |
const |
|
inlineinherited |
◆ nwordsFlx()
unsigned int Muon::nsw::NSWTriggerElink::nwordsFlx |
( |
| ) |
const |
|
inlineinherited |
◆ pad_packets()
◆ parse_version_workaround()
int Muon::nsw::NSWTriggerSTGL1AElink::parse_version_workaround |
( |
std::size_t & |
readPointer | ) |
|
|
private |
parse version workaround
- Parameters
-
- Returns
- version
Definition at line 91 of file NSWTriggerSTGL1AElink.cxx.
96 if (anchor == anchor_value)
◆ segment_packet()
◆ status()
unsigned int Muon::nsw::NSWTriggerElink::status |
( |
| ) |
const |
|
inlineinherited |
◆ stream_data()
const std::vector<std::vector<std::vector<std::uint32_t> > > Muon::nsw::NSWTriggerSTGL1AElink::stream_data |
( |
| ) |
const |
|
inline |
◆ stream_head_fifo_size()
const std::vector<std::uint32_t>& Muon::nsw::NSWTriggerSTGL1AElink::stream_head_fifo_size |
( |
| ) |
const |
|
inline |
◆ stream_head_nbits()
const std::vector<std::uint32_t>& Muon::nsw::NSWTriggerSTGL1AElink::stream_head_nbits |
( |
| ) |
const |
|
inline |
◆ stream_head_nwords()
const std::vector<std::uint32_t>& Muon::nsw::NSWTriggerSTGL1AElink::stream_head_nwords |
( |
| ) |
const |
|
inline |
◆ stream_head_streamID()
const std::vector<std::uint32_t>& Muon::nsw::NSWTriggerSTGL1AElink::stream_head_streamID |
( |
| ) |
const |
|
inline |
◆ suspect()
bool Muon::nsw::NSWTriggerElink::suspect |
( |
| ) |
const |
|
inlineinherited |
◆ trailer_CRC()
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::trailer_CRC |
( |
| ) |
const |
|
inline |
◆ m_data
std::span<const std::uint32_t> Muon::nsw::NSWTriggerSTGL1AElink::m_data |
|
private |
◆ m_elinkId
◆ m_elinkWord
uint32_t Muon::nsw::NSWTriggerElink::m_elinkWord {} |
|
protectedinherited |
◆ m_head_BCID
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_head_BCID {} |
|
private |
◆ m_head_EC
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_head_EC {} |
|
private |
◆ m_head_flags
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_head_flags {} |
|
private |
◆ m_head_fragID
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_head_fragID {} |
|
private |
◆ m_head_orbit
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_head_orbit {} |
|
private |
◆ m_head_sectID
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_head_sectID {} |
|
private |
◆ m_head_spare
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_head_spare {} |
|
private |
◆ m_l1a_busy_thr
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_l1a_busy_thr {} |
|
private |
◆ m_l1a_close_BCID
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_l1a_close_BCID {} |
|
private |
◆ m_l1a_close_BCID_offset
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_l1a_close_BCID_offset {} |
|
private |
◆ m_l1a_engine_snapshot
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_l1a_engine_snapshot {} |
|
private |
◆ m_l1a_link_const
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_l1a_link_const {} |
|
private |
◆ m_l1a_local_rel_BCID
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_l1a_local_rel_BCID {} |
|
private |
◆ m_l1a_local_req_BCID
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_l1a_local_req_BCID {} |
|
private |
◆ m_l1a_open_BCID
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_l1a_open_BCID {} |
|
private |
◆ m_l1a_open_BCID_offset
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_l1a_open_BCID_offset {} |
|
private |
◆ m_l1a_padding
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_l1a_padding {} |
|
private |
◆ m_l1a_req_BCID
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_l1a_req_BCID {} |
|
private |
◆ m_l1a_req_BCID_offset
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_l1a_req_BCID_offset {} |
|
private |
◆ m_l1a_timeout
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_l1a_timeout {} |
|
private |
◆ m_l1a_timeout_config
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_l1a_timeout_config {} |
|
private |
◆ m_l1a_versionID
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_l1a_versionID {} |
|
private |
◆ m_l1a_wdw_matching_engines_usage
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_l1a_wdw_matching_engines_usage {} |
|
private |
◆ m_L1ID
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_L1ID {} |
|
private |
◆ m_packet_status
unsigned int Muon::nsw::NSWTriggerElink::m_packet_status {} |
|
protectedinherited |
◆ m_packet_sus
bool Muon::nsw::NSWTriggerElink::m_packet_sus {} |
|
protectedinherited |
◆ m_pad_packets
std::vector<STGTPPadPacket> Muon::nsw::NSWTriggerSTGL1AElink::m_pad_packets |
|
private |
◆ m_segment_packets
◆ m_stream_data
std::vector<std::vector<std::vector<std::uint32_t> > > Muon::nsw::NSWTriggerSTGL1AElink::m_stream_data |
|
private |
◆ m_stream_head_fifo_size
std::vector<std::uint32_t> Muon::nsw::NSWTriggerSTGL1AElink::m_stream_head_fifo_size |
|
private |
◆ m_stream_head_nbits
std::vector<std::uint32_t> Muon::nsw::NSWTriggerSTGL1AElink::m_stream_head_nbits |
|
private |
◆ m_stream_head_nwords
std::vector<std::uint32_t> Muon::nsw::NSWTriggerSTGL1AElink::m_stream_head_nwords |
|
private |
◆ m_stream_head_streamID
std::vector<std::uint32_t> Muon::nsw::NSWTriggerSTGL1AElink::m_stream_head_streamID |
|
private |
◆ m_trailer_CRC
std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_trailer_CRC {} |
|
private |
◆ m_wordCount
unsigned int Muon::nsw::NSWTriggerElink::m_wordCount {} |
|
protectedinherited |
◆ m_wordCountFlx
unsigned int Muon::nsw::NSWTriggerElink::m_wordCountFlx {} |
|
protectedinherited |
◆ WORD_SIZE
constexpr auto Muon::nsw::NSWTriggerSTGL1AElink::WORD_SIZE = sizeof(decltype(m_data)::element_type) * 8 |
|
staticconstexprprivate |
◆ WORD_SIZE_DOUBLE
constexpr auto Muon::nsw::NSWTriggerSTGL1AElink::WORD_SIZE_DOUBLE = static_cast<double>(WORD_SIZE) |
|
staticconstexprprivate |
The documentation for this class was generated from the following files:
constexpr int size_l1a_wdw_matching_engines_usage
std::uint32_t m_l1a_close_BCID_offset
char data[hepevt_bytes_allocation_ATLAS]
std::shared_ptr< Muon::nsw::NSWResourceId > m_elinkId
std::uint32_t m_l1a_open_BCID
std::vector< std::vector< std::uint32_t > > decode_data_payload(std::size_t &readPointer, const DataHeader &header) const
Decode the payload of each data segment.
constexpr int size_head_EC
std::uint32_t m_head_fragID
void analyze_data()
Analyze data chunks and create decoded objects.
constexpr uint32_t version1_anchor_value
constexpr int size_stream_head_nbits
constexpr int size_head_BCID
unsigned int m_packet_status
std::vector< STGTPPadPacket > m_pad_packets
std::uint32_t m_l1a_req_BCID_offset
constexpr int size_l1a_busy_thr
std::uint32_t m_l1a_close_BCID
static std::uint64_t correct_size_for_padding(std::uint64_t initial)
static constexpr auto WORD_SIZE
constexpr int size_l1a_timeout_config
std::uint32_t m_l1a_padding
constexpr int size_l1a_local_req_BCID
constexpr int size_l1a_padding
constexpr int size_stream_head_streamID
constexpr int size_l1a_close_BCID_offset
int parse_version_workaround(std::size_t &readPointer)
parse version workaround
constexpr int size_head_flags
std::uint32_t m_l1a_versionID
constexpr int size_l1a_versionID
constexpr int size_l1a_req_BCID_offset
std::uint32_t m_l1a_open_BCID_offset
constexpr int size_l1a_req_BCID
std::uint32_t m_l1a_link_const
constexpr int size_trailer_CRC
std::uint32_t m_head_BCID
constexpr int merge_stream_header
std::uint32_t m_head_flags
std::uint32_t m_l1a_timeout_config
constexpr int size_head_spare
constexpr int size_stream_head_fifo_size
std::vector< std::uint32_t > m_stream_head_streamID
NSWTriggerElink(const uint32_t *bs, uint32_t remaining)
std::uint32_t m_l1a_local_rel_BCID
constexpr int size_l1a_link_const
void decode_header(std::size_t &readPointer, int version=0)
Decode the header.
@ initial
this is just the initial step we do, nothing really happens here
std::uint32_t m_l1a_engine_snapshot
std::span< const std::uint32_t > m_data
unsigned int m_wordCountFlx
std::uint32_t m_l1a_req_BCID
constexpr int size_stream_head_nwords
std::uint32_t m_head_sectID
std::vector< STGTPSegmentPacket > m_segment_packets
constexpr int loc_version1_anchor
std::string format(const std::string &str, const T &arg)
void decode_trailer(std::size_t &readPointer)
Decode the trailer.
constexpr int size_l1a_timeout
constexpr int size_l1a_open_BCID_offset
std::uint64_t decode(std::size_t &readPointer, std::size_t size) const
Decode a value.
std::vector< std::uint32_t > m_stream_head_nbits
constexpr int size_head_fragID
std::uint32_t m_l1a_local_req_BCID
constexpr int size_l1a_open_BCID
constexpr int size_head_sectID
std::uint32_t m_l1a_wdw_matching_engines_usage
std::uint32_t m_l1a_timeout
std::uint32_t m_head_spare
static constexpr auto WORD_SIZE_DOUBLE
constexpr std::size_t pad_stream_header
constexpr int size_l1a_engine_snapshot
void decode_data(std::size_t &readPointer)
Decode the pad and segment data.
std::uint32_t m_l1a_busy_thr
DataHeader decode_data_header(std::size_t &readPointer)
Decode the header of each data segment.
std::uint32_t m_head_orbit
std::vector< std::vector< std::vector< std::uint32_t > > > m_stream_data
std::uint32_t m_trailer_CRC
std::vector< std::uint32_t > m_stream_head_fifo_size
constexpr int size_head_orbit
constexpr int size_l1a_local_rel_BCID
constexpr int size_l1a_close_BCID
std::vector< std::uint32_t > m_stream_head_nwords