ATLAS Offline Software
Classes | Public Member Functions | Protected Attributes | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes | List of all members
Muon::nsw::NSWTriggerSTGL1AElink Class Reference

#include <NSWTriggerSTGL1AElink.h>

Inheritance diagram for Muon::nsw::NSWTriggerSTGL1AElink:
Collaboration diagram for Muon::nsw::NSWTriggerSTGL1AElink:

Classes

struct  DataHeader
 Helper struct to hold information of the header for each data chunk. More...
 

Public Member Functions

 NSWTriggerSTGL1AElink (const std::uint32_t *bs, std::uint32_t remaining)
 
virtual ~NSWTriggerSTGL1AElink ()=default
 
std::uint32_t head_fragID () const
 
std::uint32_t head_sectID () const
 
std::uint32_t head_EC () const
 
std::uint32_t head_flags () const
 
std::uint32_t head_BCID () const
 
std::uint32_t head_orbit () const
 
std::uint32_t head_spare () const
 
std::uint32_t L1ID () const
 
std::uint32_t l1a_versionID () const
 
std::uint32_t l1a_local_req_BCID () const
 
std::uint32_t l1a_local_rel_BCID () const
 
std::uint32_t l1a_open_BCID () const
 
std::uint32_t l1a_req_BCID () const
 
std::uint32_t l1a_close_BCID () const
 
std::uint32_t l1a_timeout () const
 
std::uint32_t head_overflowCount () const
 
std::uint32_t l1a_open_BCID_offset () const
 
std::uint32_t l1a_req_BCID_offset () const
 
std::uint32_t l1a_close_BCID_offset () const
 
std::uint32_t l1a_timeout_config () const
 
std::uint32_t l1a_busy_thr () const
 
std::uint32_t l1a_engine_snapshot () const
 
std::uint32_t l1a_link_const () const
 
std::uint32_t l1a_padding () const
 
std::uint32_t head_wdw_matching_engines_usage () const
 
const std::vector< std::uint32_t > & stream_head_nbits () const
 
const std::vector< std::uint32_t > & stream_head_nwords () const
 
const std::vector< std::uint32_t > & stream_head_fifo_size () const
 
const std::vector< std::uint32_t > & stream_head_streamID () const
 
const std::vector< std::vector< std::vector< std::uint32_t > > > & stream_data () const
 
std::uint32_t trailer_CRC () const
 
const std::vector< STGTPPadPacket > & pad_packets () const
 
const std::vector< STGTPSegmentPacket > & segment_packet () const
 
const std::vector< STGTPMMPacket > & mm_packet () const
 
unsigned int nwords () const
 
unsigned int nwordsFlx () const
 
unsigned int status () const
 
bool suspect () const
 
uint32_t elinkWord () const
 
const std::shared_ptr< Muon::nsw::NSWResourceId > & elinkId () const
 

Protected Attributes

unsigned int m_wordCount {}
 
unsigned int m_wordCountFlx {}
 
unsigned int m_packet_status {}
 
bool m_packet_sus {}
 
uint32_t m_elinkWord {}
 
std::shared_ptr< Muon::nsw::NSWResourceIdm_elinkId
 

Private Member Functions

int parse_version_workaround (std::size_t &readPointer)
 parse version workaround More...
 
void decode_header (std::size_t &readPointer, int &version)
 Decode the header. More...
 
void decode_header_v3 (std::size_t &readPointer, int &version)
 
void decode_data (std::size_t &readPointer, int version)
 Decode the pad and segment data. More...
 
void decode_data_v3 (std::size_t &readPointer, int version)
 
DataHeader decode_data_header (std::size_t &readPointer, int version)
 Decode the header of each data segment. More...
 
DataHeader decode_data_header_v3 (std::size_t &readPointer, int version)
 
std::vector< std::vector< std::uint32_t > > decode_data_payload (std::size_t &readPointer, const DataHeader &header, int version) const
 Decode the payload of each data segment. More...
 
std::vector< std::vector< std::uint32_t > > decode_data_payload_v3 (std::size_t &readPointer, const DataHeader &header, int version) const
 
void analyze_data (int version)
 Analyze data chunks and create decoded objects. More...
 
void analyze_data_v3 (int version)
 
void decode_trailer (std::size_t &readPointer)
 Decode the trailer. More...
 
std::uint64_t decode (std::size_t &readPointer, std::size_t size) const
 Decode a value. More...
 
std::uint64_t decode_v3 (std::size_t &readPointer, std::size_t size) const
 

Static Private Member Functions

static std::uint64_t correct_size_for_padding (std::uint64_t initial)
 

Private Attributes

std::span< const std::uint32_t > m_data
 
std::uint32_t m_head_fragID {}
 
std::uint32_t m_head_sectID {}
 
std::uint32_t m_head_EC {}
 
std::uint32_t m_head_flags {}
 
std::uint32_t m_head_BCID {}
 
std::uint32_t m_head_orbit {}
 
std::uint32_t m_head_spare {}
 
std::uint32_t m_L1ID {}
 
std::uint32_t m_l1a_versionID {}
 
std::uint32_t m_l1a_local_req_BCID {}
 
std::uint32_t m_l1a_local_rel_BCID {}
 
std::uint32_t m_l1a_open_BCID {}
 
std::uint32_t m_l1a_req_BCID {}
 
std::uint32_t m_l1a_close_BCID {}
 
std::uint32_t m_l1a_timeout {}
 
std::uint32_t m_l1a_open_BCID_offset {}
 
std::uint32_t m_l1a_req_BCID_offset {}
 
std::uint32_t m_l1a_close_BCID_offset {}
 
std::uint32_t m_l1a_timeout_config {}
 
std::uint32_t m_l1a_busy_thr {}
 
std::uint32_t m_l1a_engine_snapshot {}
 
std::uint32_t m_l1a_link_const {}
 
std::uint32_t m_l1a_padding {}
 
std::uint32_t m_l1a_wdw_matching_engines_usage {}
 
std::vector< std::uint32_t > m_stream_head_nbits
 
std::vector< std::uint32_t > m_stream_head_nwords
 
std::vector< std::uint32_t > m_stream_head_fifo_size
 
std::vector< std::uint32_t > m_stream_head_streamID
 
std::vector< std::vector< std::vector< std::uint32_t > > > m_stream_data
 
std::uint32_t m_trailer_CRC {}
 
std::vector< STGTPPadPacketm_pad_packets
 
std::vector< STGTPSegmentPacketm_segment_packets
 
std::vector< STGTPMMPacketm_mm_packets
 
int m_packet_version
 

Static Private Attributes

static constexpr auto WORD_SIZE = sizeof(decltype(m_data)::element_type) * 8
 
static constexpr auto WORD_SIZE_DOUBLE = static_cast<double>(WORD_SIZE)
 

Detailed Description

Definition at line 14 of file NSWTriggerSTGL1AElink.h.

Constructor & Destructor Documentation

◆ NSWTriggerSTGL1AElink()

Muon::nsw::NSWTriggerSTGL1AElink::NSWTriggerSTGL1AElink ( const std::uint32_t *  bs,
std::uint32_t  remaining 
)

Definition at line 19 of file NSWTriggerSTGL1AElink.cxx.

20  : NSWTriggerElink(bs, remaining), m_data{bs, remaining} {
21  // TODO: once format finalized, checking a minimum size
22 
23  // 2 felix header 32b words already decoded;
24  constexpr static auto START_DATA = std::size_t{2 * 32};
25  auto readPointer = std::size_t{START_DATA};
26 
28  decode_header(readPointer, m_packet_version);
29  decode_data(readPointer, m_packet_version);
30  decode_trailer(readPointer);
31 }

◆ ~NSWTriggerSTGL1AElink()

virtual Muon::nsw::NSWTriggerSTGL1AElink::~NSWTriggerSTGL1AElink ( )
virtualdefault

Member Function Documentation

◆ analyze_data()

void Muon::nsw::NSWTriggerSTGL1AElink::analyze_data ( int  version)
private

Analyze data chunks and create decoded objects.

Definition at line 364 of file NSWTriggerSTGL1AElink.cxx.

364  {
365  if (version >= 3){
366  return analyze_data_v3(version);
367  }
368 
369  size_t word_size = WORD_SIZE_DOUBLE;
370  auto counterChunk = std::size_t{0};
371  for (const auto& dataChunk : m_stream_data) {
372  for (const auto& dataWord : dataChunk) {
373  const auto expectedSize =
374  static_cast<std::size_t>(std::ceil(m_stream_head_nbits.at(counterChunk) / word_size));
375  if (std::size(dataWord) != expectedSize) {
376  throw std::length_error(Muon::nsw::format("Stream data size {} does not match expected number of messages {}",
377  std::size(dataWord), expectedSize));
378  }
379  switch (m_stream_head_streamID.at(counterChunk)) {
381  m_pad_packets.emplace_back(dataWord,version);
382  break;
384  m_segment_packets.emplace_back(dataWord,version);
385  break;
386  default:
387  throw std::runtime_error(Muon::nsw::format("Invalid stream type {}", m_stream_head_streamID.at(counterChunk)));
388  }
389  }
390  ++counterChunk;
391  }
392 }

◆ analyze_data_v3()

void Muon::nsw::NSWTriggerSTGL1AElink::analyze_data_v3 ( int  version)
private

Definition at line 333 of file NSWTriggerSTGL1AElink.cxx.

333  {
334 
335  size_t word_size = WORD_SIZE_DOUBLE;
336  auto counterChunk = std::size_t{0};
337  for (const auto& dataChunk : m_stream_data) {
338  for (const auto& dataWord : dataChunk) {
339  const auto expectedSize =
340  static_cast<std::size_t>(std::ceil(m_stream_head_nbits.at(counterChunk) / word_size));
341  if (std::size(dataWord) != expectedSize) {
342  throw std::length_error(Muon::nsw::format("Stream data size {} does not match expected number of messages {}",
343  std::size(dataWord), expectedSize));
344  }
345  switch (m_stream_head_streamID.at(counterChunk)) {
347  m_pad_packets.emplace_back(dataWord,version);
348  break;
350  m_segment_packets.emplace_back(dataWord,version);
351  break;
353  m_mm_packets.emplace_back(dataWord,version);
354  break;
355  default:
356  throw std::runtime_error(Muon::nsw::format("Invalid stream type {}", m_stream_head_streamID.at(counterChunk)));
357  }
358  }
359  ++counterChunk;
360  }
361 
362 }

◆ correct_size_for_padding()

std::uint64_t Muon::nsw::NSWTriggerSTGL1AElink::correct_size_for_padding ( std::uint64_t  initial)
staticprivate

Definition at line 394 of file NSWTriggerSTGL1AElink.cxx.

394  {
395  static constexpr auto PADDING = 16;
396  if (initial % PADDING) {
397  return ((initial + PADDING - 1) / PADDING) * PADDING;
398  } else {
399  return initial;
400  }
401 }

◆ decode()

std::uint64_t Muon::nsw::NSWTriggerSTGL1AElink::decode ( std::size_t &  readPointer,
std::size_t  size 
) const
private

Decode a value.

Parameters
readPointerCurrent read pointer position (updated by function)
sizeSize of the value to be decoded
Returns
std::uint64_t Decoded value

Definition at line 329 of file NSWTriggerSTGL1AElink.cxx.

329  {
330  return Muon::nsw::decode_and_advance<std::uint64_t, std::uint32_t>(m_data, readPointer, size);
331 }

◆ decode_data()

void Muon::nsw::NSWTriggerSTGL1AElink::decode_data ( std::size_t &  readPointer,
int  version 
)
private

Decode the pad and segment data.

Parameters
readPointerCurrent read pointer position (updated by function)

Definition at line 149 of file NSWTriggerSTGL1AElink.cxx.

149  {
150  if (version == 3)
151  {
152  return decode_data_v3(readPointer, version);
153  }
154  auto PADDING_BITS_END = std::size_t{16};
155 
156  const auto endOfData = m_wordCountFlx * WORD_SIZE - Muon::nsw::STGTPL1A::size_trailer_CRC - PADDING_BITS_END;
157  while (readPointer < endOfData) {
158  static constexpr auto SIZE_DATA_HEADER = STGTPL1A::size_stream_head_nbits + STGTPL1A::size_stream_head_nwords +
160  if (readPointer + SIZE_DATA_HEADER > endOfData) {
161  throw std::length_error(
162  Muon::nsw::format("Read pointer ({}) would excede memory dedicated to data chunks ({}) while parsing the header (size: {})",
163  readPointer, endOfData, SIZE_DATA_HEADER));
164  }
165  const auto header_data = decode_data_header(readPointer, version);
166 
167  if (header_data.total_expected_size > m_wordCountFlx - ceil(readPointer / WORD_SIZE ) + 1) {
168  throw std::length_error(Muon::nsw::format("STG TP stream size {} larger than expected packet size {}",
169  header_data.total_expected_size,
170  m_wordCountFlx - ceil(readPointer / WORD_SIZE ) + 1));
171  }
172  if (header_data.nwords * header_data.data_size + readPointer > endOfData) {
173  throw std::length_error(Muon::nsw::format("Requested to decode {} bits but only {} bits are remaining",
174  header_data.nwords * header_data.data_size, endOfData - readPointer));
175  }
176 
177  m_stream_data.push_back(decode_data_payload(readPointer, header_data, version));
178  }
180 }

◆ decode_data_header()

Muon::nsw::NSWTriggerSTGL1AElink::DataHeader Muon::nsw::NSWTriggerSTGL1AElink::decode_data_header ( std::size_t &  readPointer,
int  version 
)
private

Decode the header of each data segment.

Contains information about type, number of words and bits per word

Parameters
readPointerCurrent read pointer position (updated by function)
Returns
DataHeader Information from header

Definition at line 252 of file NSWTriggerSTGL1AElink.cxx.

253  {
254  if (version >= 3){
255  return decode_data_header_v3(readPointer, version);
256  }
257  const auto current_stream_head_nbits = decode(readPointer, STGTPL1A::size_stream_head_nbits);
258  const auto current_stream_head_nwords = decode(readPointer, STGTPL1A::size_stream_head_nwords);
259  const auto current_stream_head_fifo_size = decode(readPointer, STGTPL1A::size_stream_head_fifo_size);
260  const auto current_stream_head_streamID = decode(readPointer, STGTPL1A::size_stream_head_streamID);
261 
262  // zero padding to multiples of 16bits - TP logic - this is the real number
263  // of bits to read
264  const auto corrected_current_stream_head_nbits = correct_size_for_padding(current_stream_head_nbits);
265 
266  m_stream_head_nbits.push_back(corrected_current_stream_head_nbits);
267  m_stream_head_nwords.push_back(current_stream_head_nwords);
268  m_stream_head_fifo_size.push_back(current_stream_head_fifo_size);
269  m_stream_head_streamID.push_back(current_stream_head_streamID);
270 
271  size_t word_size = WORD_SIZE_DOUBLE;
272  const auto data_size = static_cast<std::size_t>(std::ceil(corrected_current_stream_head_nbits / word_size));
273  const auto total_expected_size = data_size * current_stream_head_nwords;
274 
275  ERS_DEBUG(2, Muon::nsw::format("stream_head_nbits: {}", corrected_current_stream_head_nbits));
276  ERS_DEBUG(2, Muon::nsw::format("stream_head_nwords: {}", current_stream_head_nwords));
277  ERS_DEBUG(2, Muon::nsw::format("stream_head_fifo_size: {}", current_stream_head_fifo_size));
278  ERS_DEBUG(2, Muon::nsw::format("stream_head_streamID: {}", current_stream_head_streamID));
279  ERS_DEBUG(2, Muon::nsw::format("total_expected_size: {}", data_size * current_stream_head_nwords));
280  ERS_DEBUG(2, Muon::nsw::format("m_wordCountFlx: {}, ceil(readPointer/{}): {}", m_wordCountFlx, word_size,
281  ceil(readPointer / word_size)));
282 
283  return {corrected_current_stream_head_nbits, current_stream_head_nwords, current_stream_head_fifo_size,
284  current_stream_head_streamID, total_expected_size, data_size};
285 }

◆ decode_data_header_v3()

Muon::nsw::NSWTriggerSTGL1AElink::DataHeader Muon::nsw::NSWTriggerSTGL1AElink::decode_data_header_v3 ( std::size_t &  readPointer,
int  version 
)
private

Definition at line 182 of file NSWTriggerSTGL1AElink.cxx.

183  {
184 
185 
186  if (version != 3){
187  throw std::invalid_argument("decode_data_header_v3 version should be exactly 3");
188  }
189 
190  size_t felix_word_size = WORD_SIZE_DOUBLE;
191  auto PADDING_BITS_END = std::size_t{16};
192  const auto stream_head_nbits = decode(readPointer, STGTPL1A::size_stream_head_nbits);
194  const auto current_stream_head_fifo_size = decode(readPointer, STGTPL1A::size_stream_head_fifo_size);
195  const auto current_stream_head_streamID = decode(readPointer, STGTPL1A::size_stream_head_streamID);
196  const auto total_expected_size = stream_head_nbits * stream_head_nwords;
197  auto endOfData = m_wordCountFlx * felix_word_size - Muon::nsw::STGTPL1A::size_trailer_CRC - PADDING_BITS_END;
198  size_t current_stream_head_nbits = 0;
199  size_t current_stream_head_nwords = 0;
200 
201  switch (current_stream_head_streamID)
202  {
204  current_stream_head_nbits = STGTPPad::size_v3;
205  break;
207  current_stream_head_nbits = STGTPSegments::size_v3;
208  break;
210  current_stream_head_nbits = STGTPMMData::size_v3;
211  break;
212  default:
213  break;
214  }
215 
216  if (current_stream_head_nbits == 0 )
217  {
218  throw std::runtime_error( "Corrupted message - sTGC stream has an unrecognized stream header");
219  }
220 
221  if (readPointer + total_expected_size > endOfData)
222  {
223  throw std::runtime_error("Corrupted message - sTGC expected size goes beyond the end of data");
224  }
225 
226  current_stream_head_nwords = (stream_head_nwords == 0) ? 0 : total_expected_size / current_stream_head_nbits;
227  size_t data_size = std::ceil(total_expected_size / felix_word_size);
228 
229  // in version 3 nbits correspond to either 16 or 32 bits. There is a stable packet size that we use and
230  // we extract it from the code. The 16 or 32 bits is a consequence of an optimization in the firmware that
231  // results in big gains wrt routing and resources
232  m_stream_head_nbits.push_back(current_stream_head_nbits);
233  m_stream_head_nwords.push_back(current_stream_head_nwords);
234  m_stream_head_fifo_size.push_back(current_stream_head_fifo_size);
235  m_stream_head_streamID.push_back(current_stream_head_streamID);
236 
237 
238 
239  ERS_DEBUG(2, Muon::nsw::format("stream_head_nbits: {}", current_stream_head_nbits));
240  ERS_DEBUG(2, Muon::nsw::format("stream_head_nwords: {}", current_stream_head_nwords));
241  ERS_DEBUG(2, Muon::nsw::format("stream_head_fifo_size: {}", current_stream_head_fifo_size));
242  ERS_DEBUG(2, Muon::nsw::format("stream_head_streamID: {}", current_stream_head_streamID));
243  ERS_DEBUG(2, Muon::nsw::format("total_expected_size: {}", total_expected_size));
244  ERS_DEBUG(2, Muon::nsw::format("m_wordCountFlx: {}, ceil(readPointer/{}): {}", m_wordCountFlx,felix_word_size,
245  ceil(readPointer / felix_word_size)));
246 
247 
248  return {current_stream_head_nbits, current_stream_head_nwords, current_stream_head_fifo_size,
249  current_stream_head_streamID, total_expected_size, data_size};
250 }

◆ decode_data_payload()

std::vector< std::vector< std::uint32_t > > Muon::nsw::NSWTriggerSTGL1AElink::decode_data_payload ( std::size_t &  readPointer,
const DataHeader header,
int  version 
) const
private

Decode the payload of each data segment.

Contains actual data from pad or segments

Parameters
readPointerCurrent read pointer position (updated by function)
headerInformation from data header
Returns
DataHeader Information from header

Definition at line 306 of file NSWTriggerSTGL1AElink.cxx.

307  {
308  std::vector<std::vector<std::uint32_t>> current_stream_data{};
309 
310  if (version >= 3)
311  return decode_data_payload_v3( readPointer, header, version);
312  size_t word_size = WORD_SIZE;
313  for (std::size_t i = 0; i < header.nwords; ++i) {
314  std::vector<std::uint32_t> data{};
315  for (std::size_t j = 0; j < header.data_size; ++j) {
316  data.push_back(decode(readPointer, word_size));
317  }
318  current_stream_data.push_back(data);
319  }
320  return current_stream_data;
321 
322 }

◆ decode_data_payload_v3()

std::vector< std::vector< std::uint32_t > > Muon::nsw::NSWTriggerSTGL1AElink::decode_data_payload_v3 ( std::size_t &  readPointer,
const DataHeader header,
int  version 
) const
private

Definition at line 287 of file NSWTriggerSTGL1AElink.cxx.

288  {
289  std::vector<std::vector<std::uint32_t>> current_stream_data{};
290 
291  if (version < 3){
292  throw std::invalid_argument("decode_data_header_v3 version should be at least 3");
293  }
294 
295  size_t word_size = WORD_SIZE;
296  size_t felix_n_words = (header.nwords == 0 ) ? 0 : std::ceil(header.data_size / header.nwords); // the number of felix words per stream word
297  for (std::size_t i = 0; i < header.nwords; ++i) {
298  std::vector<std::uint32_t> data{};
299  for (std::size_t j = 0; j < felix_n_words; ++j) {
300  data.push_back(decode(readPointer, word_size));
301  }
302  current_stream_data.push_back(data);
303  }
304  return current_stream_data;
305 }

◆ decode_data_v3()

void Muon::nsw::NSWTriggerSTGL1AElink::decode_data_v3 ( std::size_t &  readPointer,
int  version 
)
private

Definition at line 119 of file NSWTriggerSTGL1AElink.cxx.

119  {
120 
121  auto PADDING_BITS_END = std::size_t{16};
122 
123 
124  const auto endOfData = m_wordCountFlx * WORD_SIZE - Muon::nsw::STGTPL1A::size_trailer_CRC - PADDING_BITS_END;
125 
126  while (readPointer < endOfData) {
127  static constexpr auto SIZE_DATA_HEADER = STGTPL1A::size_stream_head_nbits + STGTPL1A::size_stream_head_nwords +
129  if (readPointer + SIZE_DATA_HEADER > endOfData) {
130  throw std::length_error(
131  Muon::nsw::format("Read pointer ({}) would excede memory dedicated to data chunks ({}) while parsing the header (size: {})",
132  readPointer, endOfData, SIZE_DATA_HEADER));
133  }
134  const auto header_data = decode_data_header_v3(readPointer, version);
135  if (header_data.total_expected_size > m_wordCountFlx * WORD_SIZE - readPointer + 1) {
136  throw std::length_error(Muon::nsw::format("STG TP stream size {} larger than expected packet size {}",
137  header_data.total_expected_size,
138  m_wordCountFlx * WORD_SIZE - readPointer + 1));
139  }
140  if (header_data.nwords * header_data.data_size + readPointer > endOfData) {
141  throw std::length_error(Muon::nsw::format("Requested to decode {} bits but only {} bits are remaining",
142  header_data.nwords * header_data.data_size, endOfData - readPointer));
143  }
144  m_stream_data.push_back(decode_data_payload_v3(readPointer, header_data, version));
145  }
147 }

◆ decode_header()

void Muon::nsw::NSWTriggerSTGL1AElink::decode_header ( std::size_t &  readPointer,
int &  version 
)
private

Decode the header.

Parameters
readPointerCurrent read pointer position (updated by function)

Definition at line 33 of file NSWTriggerSTGL1AElink.cxx.

33  {
34 
35  // This part is constant for all versions
36  m_head_fragID = Muon::nsw::decode_and_advance<uint64_t>(m_data, readPointer, Muon::nsw::STGTPL1A::size_head_fragID);
37  m_head_sectID = Muon::nsw::decode_and_advance<uint64_t>(m_data, readPointer, Muon::nsw::STGTPL1A::size_head_sectID);
38  m_head_EC = Muon::nsw::decode_and_advance<uint64_t>(m_data, readPointer, Muon::nsw::STGTPL1A::size_head_EC);
39  m_head_flags = Muon::nsw::decode_and_advance<uint64_t>(m_data, readPointer, Muon::nsw::STGTPL1A::size_head_flags);
40  m_head_BCID = Muon::nsw::decode_and_advance<uint64_t>(m_data, readPointer, Muon::nsw::STGTPL1A::size_head_BCID);
41  m_head_orbit = Muon::nsw::decode_and_advance<uint64_t>(m_data, readPointer, Muon::nsw::STGTPL1A::size_head_orbit);
42  m_head_spare = Muon::nsw::decode_and_advance<uint64_t>(m_data, readPointer, Muon::nsw::STGTPL1A::size_head_spare);
43  m_L1ID = Muon::nsw::decode_and_advance<uint64_t>(m_data, readPointer, Muon::nsw::STGTPL1A::size_L1ID);
44 
45  ERS_DEBUG(2, Muon::nsw::format("\n TP header: \n"
46  " fradID: {}\n"
47  " sectID: {}\n"
48  " EC: {}\n"
49  " flags: {}\n"
50  " BCID: {}\n"
51  " orbit: {}\n"
52  " spare: {}\n"
53  " L1ID: {}",
55 
56  if (version == 1)
57  {
58  m_l1a_open_BCID = Muon::nsw::decode_and_advance<uint64_t>(m_data, readPointer, Muon::nsw::STGTPL1A::size_l1a_open_BCID);
59  m_l1a_req_BCID = Muon::nsw::decode_and_advance<uint64_t>(m_data, readPointer, Muon::nsw::STGTPL1A::size_l1a_req_BCID);
60  m_l1a_close_BCID = Muon::nsw::decode_and_advance<uint64_t>(m_data, readPointer, Muon::nsw::STGTPL1A::size_l1a_close_BCID);
61  m_l1a_timeout = Muon::nsw::decode_and_advance<uint64_t>(m_data, readPointer, Muon::nsw::STGTPL1A::size_l1a_timeout); // overflow count
63  Muon::nsw::decode_and_advance<uint64_t>(m_data, readPointer, Muon::nsw::STGTPL1A::size_l1a_wdw_matching_engines_usage);
64  m_l1a_open_BCID_offset = Muon::nsw::decode_and_advance<uint64_t>(m_data, readPointer, Muon::nsw::STGTPL1A::size_l1a_open_BCID_offset);
65  m_l1a_req_BCID_offset = Muon::nsw::decode_and_advance<uint64_t>(m_data, readPointer, Muon::nsw::STGTPL1A::size_l1a_req_BCID_offset);
66  m_l1a_close_BCID_offset = Muon::nsw::decode_and_advance<uint64_t>(m_data, readPointer, Muon::nsw::STGTPL1A::size_l1a_close_BCID_offset);
67  m_l1a_timeout_config = Muon::nsw::decode_and_advance<uint64_t>(m_data, readPointer, Muon::nsw::STGTPL1A::size_l1a_timeout_config);
68 
69  m_l1a_link_const = Muon::nsw::decode_and_advance<uint64_t>(m_data, readPointer, Muon::nsw::STGTPL1A::size_l1a_link_const);
70  }
71  else
72  {
73  m_l1a_versionID = Muon::nsw::decode_and_advance<uint64_t>(m_data, readPointer, Muon::nsw::STGTPL1A::size_l1a_versionID);
74  if (m_l1a_versionID == 1)
75  {
76  version = 2;
77  }
78  else if (m_l1a_versionID == 3)
79  {
81  }
82  else
83  {
84  Muon::nsw::NSWTriggerException e ( Muon::nsw::format( "Stgc packet version not existent (corrupted message) expected 3, got ({})", m_l1a_versionID));
85  throw e;
86 
87  }
88  m_l1a_local_req_BCID = Muon::nsw::decode_and_advance<uint64_t>(m_data, readPointer, Muon::nsw::STGTPL1A::size_l1a_local_req_BCID);
89  m_l1a_local_rel_BCID = Muon::nsw::decode_and_advance<uint64_t>(m_data, readPointer, Muon::nsw::STGTPL1A::size_l1a_local_rel_BCID);
90  m_l1a_open_BCID = Muon::nsw::decode_and_advance<uint64_t>(m_data, readPointer, Muon::nsw::STGTPL1A::size_l1a_open_BCID);
91  m_l1a_req_BCID = Muon::nsw::decode_and_advance<uint64_t>(m_data, readPointer, Muon::nsw::STGTPL1A::size_l1a_req_BCID);
92  m_l1a_close_BCID = Muon::nsw::decode_and_advance<uint64_t>(m_data, readPointer, Muon::nsw::STGTPL1A::size_l1a_close_BCID);
93  m_l1a_timeout = Muon::nsw::decode_and_advance<uint64_t>(m_data, readPointer, Muon::nsw::STGTPL1A::size_l1a_timeout);
94  m_l1a_open_BCID_offset = Muon::nsw::decode_and_advance<uint64_t>(m_data, readPointer, Muon::nsw::STGTPL1A::size_l1a_open_BCID_offset);
95  m_l1a_req_BCID_offset = Muon::nsw::decode_and_advance<uint64_t>(m_data, readPointer, Muon::nsw::STGTPL1A::size_l1a_req_BCID_offset);
96  m_l1a_close_BCID_offset = Muon::nsw::decode_and_advance<uint64_t>(m_data, readPointer, Muon::nsw::STGTPL1A::size_l1a_close_BCID_offset);
97  m_l1a_timeout_config = Muon::nsw::decode_and_advance<uint64_t>(m_data, readPointer, Muon::nsw::STGTPL1A::size_l1a_timeout_config);
98  m_l1a_busy_thr = Muon::nsw::decode_and_advance<uint64_t>(m_data, readPointer, Muon::nsw::STGTPL1A::size_l1a_busy_thr);
99  m_l1a_engine_snapshot = Muon::nsw::decode_and_advance<uint64_t>(m_data, readPointer, Muon::nsw::STGTPL1A::size_l1a_engine_snapshot);
100  m_l1a_link_const = Muon::nsw::decode_and_advance<uint64_t>(m_data, readPointer, Muon::nsw::STGTPL1A::size_l1a_link_const);
101  m_l1a_padding = Muon::nsw::decode_and_advance<uint64_t>(m_data, readPointer, Muon::nsw::STGTPL1A::size_l1a_padding);
102  }
103 
104 }

◆ decode_header_v3()

void Muon::nsw::NSWTriggerSTGL1AElink::decode_header_v3 ( std::size_t &  readPointer,
int &  version 
)
private

◆ decode_trailer()

void Muon::nsw::NSWTriggerSTGL1AElink::decode_trailer ( std::size_t &  readPointer)
private

Decode the trailer.

Parameters
readPointerCurrent read pointer position (updated by function)

Definition at line 324 of file NSWTriggerSTGL1AElink.cxx.

324  {
325  // TODO: warning: how the swROD is behaving if the last work is a uint16 only? Just 0-padding?
327 }

◆ decode_v3()

std::uint64_t Muon::nsw::NSWTriggerSTGL1AElink::decode_v3 ( std::size_t &  readPointer,
std::size_t  size 
) const
private

◆ elinkId()

const std::shared_ptr<Muon::nsw::NSWResourceId>& Muon::nsw::NSWTriggerElink::elinkId ( ) const
inlineinherited

Definition at line 63 of file NSWTriggerElink.h.

63 {return m_elinkId;};

◆ elinkWord()

uint32_t Muon::nsw::NSWTriggerElink::elinkWord ( ) const
inlineinherited

Definition at line 62 of file NSWTriggerElink.h.

62 {return m_elinkWord;};

◆ head_BCID()

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::head_BCID ( ) const
inline

Definition at line 23 of file NSWTriggerSTGL1AElink.h.

23 { return m_head_BCID; };

◆ head_EC()

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::head_EC ( ) const
inline

Definition at line 21 of file NSWTriggerSTGL1AElink.h.

21 { return m_head_EC; };

◆ head_flags()

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::head_flags ( ) const
inline

Definition at line 22 of file NSWTriggerSTGL1AElink.h.

22 { return m_head_flags; };

◆ head_fragID()

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::head_fragID ( ) const
inline

Definition at line 19 of file NSWTriggerSTGL1AElink.h.

19 { return m_head_fragID; };

◆ head_orbit()

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::head_orbit ( ) const
inline

Definition at line 24 of file NSWTriggerSTGL1AElink.h.

24 { return m_head_orbit; };

◆ head_overflowCount()

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::head_overflowCount ( ) const
inline

Definition at line 35 of file NSWTriggerSTGL1AElink.h.

35 {return m_l1a_timeout;}; // compatibility version 1

◆ head_sectID()

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::head_sectID ( ) const
inline

Definition at line 20 of file NSWTriggerSTGL1AElink.h.

20 { return m_head_sectID; };

◆ head_spare()

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::head_spare ( ) const
inline

Definition at line 25 of file NSWTriggerSTGL1AElink.h.

25 { return m_head_spare; };

◆ head_wdw_matching_engines_usage()

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::head_wdw_matching_engines_usage ( ) const
inline

Definition at line 45 of file NSWTriggerSTGL1AElink.h.

◆ l1a_busy_thr()

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::l1a_busy_thr ( ) const
inline

Definition at line 40 of file NSWTriggerSTGL1AElink.h.

40 {return m_l1a_busy_thr;};

◆ l1a_close_BCID()

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::l1a_close_BCID ( ) const
inline

Definition at line 33 of file NSWTriggerSTGL1AElink.h.

33 {return m_l1a_close_BCID;};

◆ l1a_close_BCID_offset()

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::l1a_close_BCID_offset ( ) const
inline

Definition at line 38 of file NSWTriggerSTGL1AElink.h.

38 {return m_l1a_close_BCID_offset;};

◆ l1a_engine_snapshot()

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::l1a_engine_snapshot ( ) const
inline

Definition at line 41 of file NSWTriggerSTGL1AElink.h.

41 {return m_l1a_engine_snapshot;};

◆ l1a_link_const()

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::l1a_link_const ( ) const
inline

Definition at line 42 of file NSWTriggerSTGL1AElink.h.

42 {return m_l1a_link_const;};

◆ l1a_local_rel_BCID()

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::l1a_local_rel_BCID ( ) const
inline

Definition at line 30 of file NSWTriggerSTGL1AElink.h.

30 {return m_l1a_local_rel_BCID;};

◆ l1a_local_req_BCID()

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::l1a_local_req_BCID ( ) const
inline

Definition at line 29 of file NSWTriggerSTGL1AElink.h.

29 {return m_l1a_local_req_BCID;};

◆ l1a_open_BCID()

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::l1a_open_BCID ( ) const
inline

Definition at line 31 of file NSWTriggerSTGL1AElink.h.

31 {return m_l1a_open_BCID;};

◆ l1a_open_BCID_offset()

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::l1a_open_BCID_offset ( ) const
inline

Definition at line 36 of file NSWTriggerSTGL1AElink.h.

36 {return m_l1a_open_BCID_offset;};

◆ l1a_padding()

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::l1a_padding ( ) const
inline

Definition at line 43 of file NSWTriggerSTGL1AElink.h.

43 {return m_l1a_padding;};

◆ l1a_req_BCID()

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::l1a_req_BCID ( ) const
inline

Definition at line 32 of file NSWTriggerSTGL1AElink.h.

32 {return m_l1a_req_BCID;};

◆ l1a_req_BCID_offset()

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::l1a_req_BCID_offset ( ) const
inline

Definition at line 37 of file NSWTriggerSTGL1AElink.h.

37 {return m_l1a_req_BCID_offset;};

◆ l1a_timeout()

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::l1a_timeout ( ) const
inline

Definition at line 34 of file NSWTriggerSTGL1AElink.h.

34 {return m_l1a_timeout;};

◆ l1a_timeout_config()

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::l1a_timeout_config ( ) const
inline

Definition at line 39 of file NSWTriggerSTGL1AElink.h.

39 {return m_l1a_timeout_config;};

◆ l1a_versionID()

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::l1a_versionID ( ) const
inline

Definition at line 28 of file NSWTriggerSTGL1AElink.h.

28 {return m_l1a_versionID;};

◆ L1ID()

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::L1ID ( ) const
inline

Definition at line 26 of file NSWTriggerSTGL1AElink.h.

26 { return m_L1ID; };

◆ mm_packet()

const std::vector<STGTPMMPacket>& Muon::nsw::NSWTriggerSTGL1AElink::mm_packet ( ) const
inline

Definition at line 56 of file NSWTriggerSTGL1AElink.h.

56 { return m_mm_packets; };

◆ nwords()

unsigned int Muon::nsw::NSWTriggerElink::nwords ( ) const
inlineinherited

Definition at line 55 of file NSWTriggerElink.h.

55 {return m_wordCount;}; //self counted or expected in case it will be possible

◆ nwordsFlx()

unsigned int Muon::nsw::NSWTriggerElink::nwordsFlx ( ) const
inlineinherited

Definition at line 56 of file NSWTriggerElink.h.

56 {return m_wordCountFlx;}; //reading from packet felix header

◆ pad_packets()

const std::vector<STGTPPadPacket>& Muon::nsw::NSWTriggerSTGL1AElink::pad_packets ( ) const
inline

Definition at line 54 of file NSWTriggerSTGL1AElink.h.

54 { return m_pad_packets; };

◆ parse_version_workaround()

int Muon::nsw::NSWTriggerSTGL1AElink::parse_version_workaround ( std::size_t &  readPointer)
private

parse version workaround

Parameters
std::size_t&readPointer
Returns
version

Definition at line 106 of file NSWTriggerSTGL1AElink.cxx.

107 {
108  auto anchor_value = Muon::nsw::STGTPL1A::version1_anchor_value;
109  auto anchor = Muon::nsw::decode_at_loc<uint64_t>(m_data, readPointer, Muon::nsw::STGTPL1A::loc_version1_anchor, Muon::nsw::STGTPL1A::size_l1a_link_const);
110 
111  if (anchor == anchor_value)
112  {
113  return 1;
114  }
115 
116  return -1;
117 }

◆ segment_packet()

const std::vector<STGTPSegmentPacket>& Muon::nsw::NSWTriggerSTGL1AElink::segment_packet ( ) const
inline

Definition at line 55 of file NSWTriggerSTGL1AElink.h.

55 { return m_segment_packets; };

◆ status()

unsigned int Muon::nsw::NSWTriggerElink::status ( ) const
inlineinherited

Definition at line 57 of file NSWTriggerElink.h.

57 {return m_packet_status;}; //felix status

◆ stream_data()

const std::vector<std::vector<std::vector<std::uint32_t> > >& Muon::nsw::NSWTriggerSTGL1AElink::stream_data ( ) const
inline

Definition at line 51 of file NSWTriggerSTGL1AElink.h.

51 { return m_stream_data; };

◆ stream_head_fifo_size()

const std::vector<std::uint32_t>& Muon::nsw::NSWTriggerSTGL1AElink::stream_head_fifo_size ( ) const
inline

Definition at line 49 of file NSWTriggerSTGL1AElink.h.

49 { return m_stream_head_fifo_size; };

◆ stream_head_nbits()

const std::vector<std::uint32_t>& Muon::nsw::NSWTriggerSTGL1AElink::stream_head_nbits ( ) const
inline

Definition at line 47 of file NSWTriggerSTGL1AElink.h.

47 { return m_stream_head_nbits; };

◆ stream_head_nwords()

const std::vector<std::uint32_t>& Muon::nsw::NSWTriggerSTGL1AElink::stream_head_nwords ( ) const
inline

Definition at line 48 of file NSWTriggerSTGL1AElink.h.

48 { return m_stream_head_nwords; };

◆ stream_head_streamID()

const std::vector<std::uint32_t>& Muon::nsw::NSWTriggerSTGL1AElink::stream_head_streamID ( ) const
inline

Definition at line 50 of file NSWTriggerSTGL1AElink.h.

50 { return m_stream_head_streamID; };

◆ suspect()

bool Muon::nsw::NSWTriggerElink::suspect ( ) const
inlineinherited

Definition at line 58 of file NSWTriggerElink.h.

58 {return m_packet_sus;}; //elink decoded but with triggering suspects

◆ trailer_CRC()

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::trailer_CRC ( ) const
inline

Definition at line 52 of file NSWTriggerSTGL1AElink.h.

52 { return m_trailer_CRC; };

Member Data Documentation

◆ m_data

std::span<const std::uint32_t> Muon::nsw::NSWTriggerSTGL1AElink::m_data
private

Definition at line 144 of file NSWTriggerSTGL1AElink.h.

◆ m_elinkId

std::shared_ptr<Muon::nsw::NSWResourceId> Muon::nsw::NSWTriggerElink::m_elinkId
protectedinherited

Definition at line 73 of file NSWTriggerElink.h.

◆ m_elinkWord

uint32_t Muon::nsw::NSWTriggerElink::m_elinkWord {}
protectedinherited

Definition at line 72 of file NSWTriggerElink.h.

◆ m_head_BCID

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_head_BCID {}
private

Definition at line 152 of file NSWTriggerSTGL1AElink.h.

◆ m_head_EC

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_head_EC {}
private

Definition at line 150 of file NSWTriggerSTGL1AElink.h.

◆ m_head_flags

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_head_flags {}
private

Definition at line 151 of file NSWTriggerSTGL1AElink.h.

◆ m_head_fragID

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_head_fragID {}
private

Definition at line 148 of file NSWTriggerSTGL1AElink.h.

◆ m_head_orbit

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_head_orbit {}
private

Definition at line 153 of file NSWTriggerSTGL1AElink.h.

◆ m_head_sectID

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_head_sectID {}
private

Definition at line 149 of file NSWTriggerSTGL1AElink.h.

◆ m_head_spare

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_head_spare {}
private

Definition at line 154 of file NSWTriggerSTGL1AElink.h.

◆ m_l1a_busy_thr

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_l1a_busy_thr {}
private

Definition at line 170 of file NSWTriggerSTGL1AElink.h.

◆ m_l1a_close_BCID

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_l1a_close_BCID {}
private

Definition at line 164 of file NSWTriggerSTGL1AElink.h.

◆ m_l1a_close_BCID_offset

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_l1a_close_BCID_offset {}
private

Definition at line 168 of file NSWTriggerSTGL1AElink.h.

◆ m_l1a_engine_snapshot

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_l1a_engine_snapshot {}
private

Definition at line 171 of file NSWTriggerSTGL1AElink.h.

◆ m_l1a_link_const

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_l1a_link_const {}
private

Definition at line 172 of file NSWTriggerSTGL1AElink.h.

◆ m_l1a_local_rel_BCID

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_l1a_local_rel_BCID {}
private

Definition at line 161 of file NSWTriggerSTGL1AElink.h.

◆ m_l1a_local_req_BCID

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_l1a_local_req_BCID {}
private

Definition at line 160 of file NSWTriggerSTGL1AElink.h.

◆ m_l1a_open_BCID

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_l1a_open_BCID {}
private

Definition at line 162 of file NSWTriggerSTGL1AElink.h.

◆ m_l1a_open_BCID_offset

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_l1a_open_BCID_offset {}
private

Definition at line 166 of file NSWTriggerSTGL1AElink.h.

◆ m_l1a_padding

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_l1a_padding {}
private

Definition at line 173 of file NSWTriggerSTGL1AElink.h.

◆ m_l1a_req_BCID

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_l1a_req_BCID {}
private

Definition at line 163 of file NSWTriggerSTGL1AElink.h.

◆ m_l1a_req_BCID_offset

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_l1a_req_BCID_offset {}
private

Definition at line 167 of file NSWTriggerSTGL1AElink.h.

◆ m_l1a_timeout

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_l1a_timeout {}
private

Definition at line 165 of file NSWTriggerSTGL1AElink.h.

◆ m_l1a_timeout_config

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_l1a_timeout_config {}
private

Definition at line 169 of file NSWTriggerSTGL1AElink.h.

◆ m_l1a_versionID

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_l1a_versionID {}
private

Definition at line 159 of file NSWTriggerSTGL1AElink.h.

◆ m_l1a_wdw_matching_engines_usage

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_l1a_wdw_matching_engines_usage {}
private

Definition at line 175 of file NSWTriggerSTGL1AElink.h.

◆ m_L1ID

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_L1ID {}
private

Definition at line 156 of file NSWTriggerSTGL1AElink.h.

◆ m_mm_packets

std::vector<STGTPMMPacket> Muon::nsw::NSWTriggerSTGL1AElink::m_mm_packets
private

Definition at line 189 of file NSWTriggerSTGL1AElink.h.

◆ m_packet_status

unsigned int Muon::nsw::NSWTriggerElink::m_packet_status {}
protectedinherited

Definition at line 68 of file NSWTriggerElink.h.

◆ m_packet_sus

bool Muon::nsw::NSWTriggerElink::m_packet_sus {}
protectedinherited

Definition at line 69 of file NSWTriggerElink.h.

◆ m_packet_version

int Muon::nsw::NSWTriggerSTGL1AElink::m_packet_version
private

Definition at line 191 of file NSWTriggerSTGL1AElink.h.

◆ m_pad_packets

std::vector<STGTPPadPacket> Muon::nsw::NSWTriggerSTGL1AElink::m_pad_packets
private

Definition at line 187 of file NSWTriggerSTGL1AElink.h.

◆ m_segment_packets

std::vector<STGTPSegmentPacket> Muon::nsw::NSWTriggerSTGL1AElink::m_segment_packets
private

Definition at line 188 of file NSWTriggerSTGL1AElink.h.

◆ m_stream_data

std::vector<std::vector<std::vector<std::uint32_t> > > Muon::nsw::NSWTriggerSTGL1AElink::m_stream_data
private

Definition at line 181 of file NSWTriggerSTGL1AElink.h.

◆ m_stream_head_fifo_size

std::vector<std::uint32_t> Muon::nsw::NSWTriggerSTGL1AElink::m_stream_head_fifo_size
private

Definition at line 179 of file NSWTriggerSTGL1AElink.h.

◆ m_stream_head_nbits

std::vector<std::uint32_t> Muon::nsw::NSWTriggerSTGL1AElink::m_stream_head_nbits
private

Definition at line 177 of file NSWTriggerSTGL1AElink.h.

◆ m_stream_head_nwords

std::vector<std::uint32_t> Muon::nsw::NSWTriggerSTGL1AElink::m_stream_head_nwords
private

Definition at line 178 of file NSWTriggerSTGL1AElink.h.

◆ m_stream_head_streamID

std::vector<std::uint32_t> Muon::nsw::NSWTriggerSTGL1AElink::m_stream_head_streamID
private

Definition at line 180 of file NSWTriggerSTGL1AElink.h.

◆ m_trailer_CRC

std::uint32_t Muon::nsw::NSWTriggerSTGL1AElink::m_trailer_CRC {}
private

Definition at line 185 of file NSWTriggerSTGL1AElink.h.

◆ m_wordCount

unsigned int Muon::nsw::NSWTriggerElink::m_wordCount {}
protectedinherited

Definition at line 66 of file NSWTriggerElink.h.

◆ m_wordCountFlx

unsigned int Muon::nsw::NSWTriggerElink::m_wordCountFlx {}
protectedinherited

Definition at line 67 of file NSWTriggerElink.h.

◆ WORD_SIZE

constexpr auto Muon::nsw::NSWTriggerSTGL1AElink::WORD_SIZE = sizeof(decltype(m_data)::element_type) * 8
staticconstexprprivate

Definition at line 145 of file NSWTriggerSTGL1AElink.h.

◆ WORD_SIZE_DOUBLE

constexpr auto Muon::nsw::NSWTriggerSTGL1AElink::WORD_SIZE_DOUBLE = static_cast<double>(WORD_SIZE)
staticconstexprprivate

Definition at line 146 of file NSWTriggerSTGL1AElink.h.


The documentation for this class was generated from the following files:
Muon::nsw::STGTPL1A::size_l1a_wdw_matching_engines_usage
constexpr int size_l1a_wdw_matching_engines_usage
Definition: NSWSTGTPDecodeBitmaps.h:44
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
Muon::nsw::STGTPL1A::size_head_EC
constexpr int size_head_EC
Definition: NSWSTGTPDecodeBitmaps.h:20
header
Definition: hcg.cxx:526
Muon::nsw::STGTPL1A::version1_anchor_value
constexpr uint32_t version1_anchor_value
Definition: NSWSTGTPDecodeBitmaps.h:46
Muon::nsw::STGTPL1A::size_stream_head_nbits
constexpr int size_stream_head_nbits
Definition: NSWSTGTPDecodeBitmaps.h:50
Muon::nsw::STGTPSegments::size_v3
constexpr std::size_t size_v3
Definition: NSWSTGTPDecodeBitmaps.h:122
Muon::nsw::STGTPL1A::size_head_BCID
constexpr int size_head_BCID
Definition: NSWSTGTPDecodeBitmaps.h:22
Muon::nsw::STGTPMMData::mm_stream_header
constexpr int mm_stream_header
Definition: NSWSTGTPDecodeBitmaps.h:80
Muon::nsw::STGTPL1A::size_l1a_busy_thr
constexpr int size_l1a_busy_thr
Definition: NSWSTGTPDecodeBitmaps.h:38
Muon::nsw::STGTPL1A::size_l1a_timeout_config
constexpr int size_l1a_timeout_config
Definition: NSWSTGTPDecodeBitmaps.h:37
Muon::nsw::STGTPL1A::size_l1a_local_req_BCID
constexpr int size_l1a_local_req_BCID
Definition: NSWSTGTPDecodeBitmaps.h:28
Muon::nsw::STGTPL1A::size_l1a_padding
constexpr int size_l1a_padding
Definition: NSWSTGTPDecodeBitmaps.h:41
Muon::nsw::STGTPL1A::size_stream_head_streamID
constexpr int size_stream_head_streamID
Definition: NSWSTGTPDecodeBitmaps.h:53
Muon::nsw::STGTPL1A::size_l1a_close_BCID_offset
constexpr int size_l1a_close_BCID_offset
Definition: NSWSTGTPDecodeBitmaps.h:36
Muon::nsw::STGTPL1A::size_head_flags
constexpr int size_head_flags
Definition: NSWSTGTPDecodeBitmaps.h:21
Muon::nsw::STGTPL1A::size_l1a_versionID
constexpr int size_l1a_versionID
Definition: NSWSTGTPDecodeBitmaps.h:27
Muon::nsw::STGTPL1A::size_l1a_req_BCID_offset
constexpr int size_l1a_req_BCID_offset
Definition: NSWSTGTPDecodeBitmaps.h:35
Muon::nsw::STGTPL1A::size_l1a_req_BCID
constexpr int size_l1a_req_BCID
Definition: NSWSTGTPDecodeBitmaps.h:31
Muon::nsw::STGTPL1A::size_trailer_CRC
constexpr int size_trailer_CRC
Definition: NSWSTGTPDecodeBitmaps.h:54
Muon::nsw::STGTPSegments::merge_stream_header
constexpr int merge_stream_header
Definition: NSWSTGTPDecodeBitmaps.h:103
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
Muon::nsw::STGTPL1A::size_head_spare
constexpr int size_head_spare
Definition: NSWSTGTPDecodeBitmaps.h:24
Muon::nsw::STGTPL1A::size_stream_head_fifo_size
constexpr int size_stream_head_fifo_size
Definition: NSWSTGTPDecodeBitmaps.h:52
lumiFormat.i
int i
Definition: lumiFormat.py:85
Muon::nsw::STGTPL1A::size_l1a_link_const
constexpr int size_l1a_link_const
Definition: NSWSTGTPDecodeBitmaps.h:40
EL::Detail::ManagerStep::initial
@ initial
this is just the initial step we do, nothing really happens here
Muon::nsw::STGTPL1A::size_stream_head_nwords
constexpr int size_stream_head_nwords
Definition: NSWSTGTPDecodeBitmaps.h:51
Muon::nsw::STGTPL1A::loc_version1_anchor
constexpr int loc_version1_anchor
Definition: NSWSTGTPDecodeBitmaps.h:45
Muon::nsw::format
std::string format(const std::string &str, const T &arg)
Definition: NSWDecodeHelper.h:43
Muon::nsw::STGTPMMData::size_v3
constexpr std::size_t size_v3
Definition: NSWSTGTPDecodeBitmaps.h:95
Muon::nsw::STGTPL1A::size_l1a_timeout
constexpr int size_l1a_timeout
Definition: NSWSTGTPDecodeBitmaps.h:33
Muon::nsw::STGTPL1A::size_l1a_open_BCID_offset
constexpr int size_l1a_open_BCID_offset
Definition: NSWSTGTPDecodeBitmaps.h:34
Muon::nsw::STGTPL1A::size_head_fragID
constexpr int size_head_fragID
Definition: NSWSTGTPDecodeBitmaps.h:18
Muon::nsw::STGTPL1A::size_l1a_open_BCID
constexpr int size_l1a_open_BCID
Definition: NSWSTGTPDecodeBitmaps.h:30
Muon::nsw::STGTPL1A::size_head_sectID
constexpr int size_head_sectID
Definition: NSWSTGTPDecodeBitmaps.h:19
get_generator_info.version
version
Definition: get_generator_info.py:33
Muon::nsw::STGTPPad::pad_stream_header
constexpr std::size_t pad_stream_header
Definition: NSWSTGTPDecodeBitmaps.h:61
Muon::nsw::STGTPL1A::size_l1a_engine_snapshot
constexpr int size_l1a_engine_snapshot
Definition: NSWSTGTPDecodeBitmaps.h:39
Muon::nsw::STGTPPad::size_v3
constexpr std::size_t size_v3
Definition: NSWSTGTPDecodeBitmaps.h:74
Muon::nsw::STGTPL1A::size_L1ID
constexpr int size_L1ID
Definition: NSWSTGTPDecodeBitmaps.h:25
Muon::nsw::NSWTriggerException
Definition: NSWTriggerElink.h:20
Muon::nsw::STGTPL1A::size_head_orbit
constexpr int size_head_orbit
Definition: NSWSTGTPDecodeBitmaps.h:23
Muon::nsw::STGTPL1A::size_l1a_local_rel_BCID
constexpr int size_l1a_local_rel_BCID
Definition: NSWSTGTPDecodeBitmaps.h:29
Muon::nsw::STGTPL1A::size_l1a_close_BCID
constexpr int size_l1a_close_BCID
Definition: NSWSTGTPDecodeBitmaps.h:32