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
 
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=0)
 Decode the header. More...
 
void decode_data (std::size_t &readPointer)
 Decode the pad and segment data. More...
 
DataHeader decode_data_header (std::size_t &readPointer)
 Decode the header of each data segment. More...
 
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. More...
 
void analyze_data ()
 Analyze data chunks and create decoded objects. More...
 
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...
 

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
 

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 22 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.

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  int version = parse_version_workaround(readPointer);
27  decode_header(readPointer, version);
28  decode_data(readPointer);
29  decode_trailer(readPointer);
30 }

◆ ~NSWTriggerSTGL1AElink()

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

Member Function Documentation

◆ analyze_data()

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

Analyze data chunks and create decoded objects.

Definition at line 186 of file NSWTriggerSTGL1AElink.cxx.

186  {
187  auto counterChunk = std::size_t{0};
188  for (const auto& dataChunk : m_stream_data) {
189  for (const auto& dataWord : dataChunk) {
190  const auto expectedSize =
191  static_cast<std::size_t>(std::ceil(m_stream_head_nbits.at(counterChunk) / WORD_SIZE_DOUBLE));
192  if (std::size(dataWord) != expectedSize) {
193  throw std::length_error(Muon::nsw::format("Stream data size {} does not match expected number of messages {}",
194  std::size(dataWord), expectedSize));
195  }
196  switch (m_stream_head_streamID.at(counterChunk)) {
198  m_pad_packets.emplace_back(dataWord);
199  break;
201  m_segment_packets.emplace_back(dataWord);
202  break;
203  default:
204  throw std::runtime_error(Muon::nsw::format("Invalid stream type {}", m_stream_head_streamID.at(counterChunk)));
205  }
206  }
207  ++counterChunk;
208  }
209 }

◆ 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.

211  {
212  static constexpr auto PADDING = 16;
213  if (initial % PADDING) {
214  return ((initial + PADDING - 1) / PADDING) * PADDING;
215  } else {
216  return initial;
217  }
218 }

◆ 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 182 of file NSWTriggerSTGL1AElink.cxx.

182  {
183  return Muon::nsw::decode_and_advance<std::uint64_t, std::uint32_t>(m_data, readPointer, size);
184 }

◆ decode_data()

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

Decode the pad and segment data.

Parameters
readPointerCurrent read pointer position (updated by function)

Definition at line 104 of file NSWTriggerSTGL1AElink.cxx.

104  {
105  static constexpr auto PADDING_BITS_END = std::size_t{16};
106  const auto endOfData = m_wordCountFlx * WORD_SIZE - Muon::nsw::STGTPL1A::size_trailer_CRC - PADDING_BITS_END;
107  while (readPointer < endOfData) {
108  static constexpr auto SIZE_DATA_HEADER = STGTPL1A::size_stream_head_nbits + STGTPL1A::size_stream_head_nwords +
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));
114  }
115  const auto header_data = decode_data_header(readPointer);
116 
117  if (header_data.total_expected_size > m_wordCountFlx - ceil(readPointer / WORD_SIZE) + 1) {
118  throw std::length_error(Muon::nsw::format("STG TP stream size {} larger than expected packet size {}",
119  header_data.total_expected_size,
120  m_wordCountFlx - ceil(readPointer / WORD_SIZE) + 1));
121  }
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));
125  }
126 
127  m_stream_data.push_back(decode_data_payload(readPointer, header_data));
128  }
129  analyze_data();
130 }

◆ decode_data_header()

Muon::nsw::NSWTriggerSTGL1AElink::DataHeader Muon::nsw::NSWTriggerSTGL1AElink::decode_data_header ( std::size_t &  readPointer)
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 132 of file NSWTriggerSTGL1AElink.cxx.

133  {
134  const auto current_stream_head_nbits = decode(readPointer, STGTPL1A::size_stream_head_nbits);
135  const auto current_stream_head_nwords = decode(readPointer, STGTPL1A::size_stream_head_nwords);
136  const auto current_stream_head_fifo_size = decode(readPointer, STGTPL1A::size_stream_head_fifo_size);
137  const auto current_stream_head_streamID = decode(readPointer, STGTPL1A::size_stream_head_streamID);
138 
139  // zero padding to multiples of 16bits - TP logic - this is the real number
140  // of bits to read
141  const auto corrected_current_stream_head_nbits = correct_size_for_padding(current_stream_head_nbits);
142 
143  m_stream_head_nbits.push_back(corrected_current_stream_head_nbits);
144  m_stream_head_nwords.push_back(current_stream_head_nwords);
145  m_stream_head_fifo_size.push_back(current_stream_head_fifo_size);
146  m_stream_head_streamID.push_back(current_stream_head_streamID);
147 
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;
150 
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));
156  ERS_DEBUG(2, Muon::nsw::format("m_wordCountFlx: {}, ceil(readPointer/{}): {}", m_wordCountFlx, WORD_SIZE_DOUBLE,
157  ceil(readPointer / WORD_SIZE_DOUBLE)));
158 
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};
161 }

◆ 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
readPointerCurrent read pointer position (updated by function)
headerInformation from data header
Returns
DataHeader Information from header

Definition at line 163 of file NSWTriggerSTGL1AElink.cxx.

164  {
165  std::vector<std::vector<std::uint32_t>> current_stream_data{};
166 
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) {
170  data.push_back(decode(readPointer, WORD_SIZE));
171  }
172  current_stream_data.push_back(data);
173  }
174  return current_stream_data;
175 }

◆ decode_header()

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

Decode the header.

Parameters
readPointerCurrent read pointer position (updated by function)

Definition at line 32 of file NSWTriggerSTGL1AElink.cxx.

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

◆ 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 177 of file NSWTriggerSTGL1AElink.cxx.

177  {
178  // TODO: warning: how the swROD is behaving if the last work is a uint16 only? Just 0-padding?
180 }

◆ 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 31 of file NSWTriggerSTGL1AElink.h.

31 { return m_head_BCID; };

◆ head_EC()

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

Definition at line 29 of file NSWTriggerSTGL1AElink.h.

29 { return m_head_EC; };

◆ head_flags()

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

Definition at line 30 of file NSWTriggerSTGL1AElink.h.

30 { return m_head_flags; };

◆ head_fragID()

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

Definition at line 27 of file NSWTriggerSTGL1AElink.h.

27 { return m_head_fragID; };

◆ head_orbit()

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

Definition at line 32 of file NSWTriggerSTGL1AElink.h.

32 { return m_head_orbit; };

◆ head_overflowCount()

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

Definition at line 43 of file NSWTriggerSTGL1AElink.h.

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

◆ head_sectID()

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

Definition at line 28 of file NSWTriggerSTGL1AElink.h.

28 { return m_head_sectID; };

◆ head_spare()

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

Definition at line 33 of file NSWTriggerSTGL1AElink.h.

33 { 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 53 of file NSWTriggerSTGL1AElink.h.

◆ l1a_busy_thr()

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

Definition at line 48 of file NSWTriggerSTGL1AElink.h.

48 {return m_l1a_busy_thr;};

◆ l1a_close_BCID()

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

Definition at line 41 of file NSWTriggerSTGL1AElink.h.

41 {return m_l1a_close_BCID;};

◆ l1a_close_BCID_offset()

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

Definition at line 46 of file NSWTriggerSTGL1AElink.h.

46 {return m_l1a_close_BCID_offset;};

◆ l1a_engine_snapshot()

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

Definition at line 49 of file NSWTriggerSTGL1AElink.h.

49 {return m_l1a_engine_snapshot;};

◆ l1a_link_const()

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

Definition at line 50 of file NSWTriggerSTGL1AElink.h.

50 {return m_l1a_link_const;};

◆ l1a_local_rel_BCID()

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

Definition at line 38 of file NSWTriggerSTGL1AElink.h.

38 {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 37 of file NSWTriggerSTGL1AElink.h.

37 {return m_l1a_local_req_BCID;};

◆ l1a_open_BCID()

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

Definition at line 39 of file NSWTriggerSTGL1AElink.h.

39 {return m_l1a_open_BCID;};

◆ l1a_open_BCID_offset()

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

Definition at line 44 of file NSWTriggerSTGL1AElink.h.

44 {return m_l1a_open_BCID_offset;};

◆ l1a_padding()

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

Definition at line 51 of file NSWTriggerSTGL1AElink.h.

51 {return m_l1a_padding;};

◆ l1a_req_BCID()

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

Definition at line 40 of file NSWTriggerSTGL1AElink.h.

40 {return m_l1a_req_BCID;};

◆ l1a_req_BCID_offset()

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

Definition at line 45 of file NSWTriggerSTGL1AElink.h.

45 {return m_l1a_req_BCID_offset;};

◆ l1a_timeout()

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

Definition at line 42 of file NSWTriggerSTGL1AElink.h.

42 {return m_l1a_timeout;};

◆ l1a_timeout_config()

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

Definition at line 47 of file NSWTriggerSTGL1AElink.h.

47 {return m_l1a_timeout_config;};

◆ l1a_versionID()

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

Definition at line 36 of file NSWTriggerSTGL1AElink.h.

36 {return m_l1a_versionID;};

◆ L1ID()

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

Definition at line 34 of file NSWTriggerSTGL1AElink.h.

34 { return m_L1ID; };

◆ 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 62 of file NSWTriggerSTGL1AElink.h.

62 { 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 91 of file NSWTriggerSTGL1AElink.cxx.

92 {
94  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);
95 
96  if (anchor == anchor_value)
97  {
98  return 1;
99  }
100 
101  return 2;
102 }

◆ segment_packet()

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

Definition at line 63 of file NSWTriggerSTGL1AElink.h.

63 { 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 59 of file NSWTriggerSTGL1AElink.h.

59 { 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 57 of file NSWTriggerSTGL1AElink.h.

57 { 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 55 of file NSWTriggerSTGL1AElink.h.

55 { 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 56 of file NSWTriggerSTGL1AElink.h.

56 { 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 58 of file NSWTriggerSTGL1AElink.h.

58 { 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 60 of file NSWTriggerSTGL1AElink.h.

60 { return m_trailer_CRC; };

Member Data Documentation

◆ m_data

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

Definition at line 149 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 157 of file NSWTriggerSTGL1AElink.h.

◆ m_head_EC

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

Definition at line 155 of file NSWTriggerSTGL1AElink.h.

◆ m_head_flags

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

Definition at line 156 of file NSWTriggerSTGL1AElink.h.

◆ m_head_fragID

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

Definition at line 153 of file NSWTriggerSTGL1AElink.h.

◆ m_head_orbit

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

Definition at line 158 of file NSWTriggerSTGL1AElink.h.

◆ m_head_sectID

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

Definition at line 154 of file NSWTriggerSTGL1AElink.h.

◆ m_head_spare

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

Definition at line 159 of file NSWTriggerSTGL1AElink.h.

◆ m_l1a_busy_thr

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

Definition at line 175 of file NSWTriggerSTGL1AElink.h.

◆ m_l1a_close_BCID

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

Definition at line 169 of file NSWTriggerSTGL1AElink.h.

◆ m_l1a_close_BCID_offset

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

Definition at line 173 of file NSWTriggerSTGL1AElink.h.

◆ m_l1a_engine_snapshot

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

Definition at line 176 of file NSWTriggerSTGL1AElink.h.

◆ m_l1a_link_const

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

Definition at line 177 of file NSWTriggerSTGL1AElink.h.

◆ m_l1a_local_rel_BCID

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

Definition at line 166 of file NSWTriggerSTGL1AElink.h.

◆ m_l1a_local_req_BCID

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

Definition at line 165 of file NSWTriggerSTGL1AElink.h.

◆ m_l1a_open_BCID

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

Definition at line 167 of file NSWTriggerSTGL1AElink.h.

◆ m_l1a_open_BCID_offset

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

Definition at line 171 of file NSWTriggerSTGL1AElink.h.

◆ m_l1a_padding

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

Definition at line 178 of file NSWTriggerSTGL1AElink.h.

◆ m_l1a_req_BCID

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

Definition at line 168 of file NSWTriggerSTGL1AElink.h.

◆ m_l1a_req_BCID_offset

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

Definition at line 172 of file NSWTriggerSTGL1AElink.h.

◆ m_l1a_timeout

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

Definition at line 170 of file NSWTriggerSTGL1AElink.h.

◆ m_l1a_timeout_config

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

Definition at line 174 of file NSWTriggerSTGL1AElink.h.

◆ m_l1a_versionID

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

Definition at line 164 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 180 of file NSWTriggerSTGL1AElink.h.

◆ m_L1ID

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

Definition at line 161 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_pad_packets

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

Definition at line 192 of file NSWTriggerSTGL1AElink.h.

◆ m_segment_packets

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

Definition at line 193 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 186 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 184 of file NSWTriggerSTGL1AElink.h.

◆ m_stream_head_nbits

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

Definition at line 182 of file NSWTriggerSTGL1AElink.h.

◆ m_stream_head_nwords

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

Definition at line 183 of file NSWTriggerSTGL1AElink.h.

◆ m_stream_head_streamID

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

Definition at line 185 of file NSWTriggerSTGL1AElink.h.

◆ m_trailer_CRC

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

Definition at line 190 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 150 of file NSWTriggerSTGL1AElink.h.

◆ WORD_SIZE_DOUBLE

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

Definition at line 151 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
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::STGTPL1A::size_head_BCID
constexpr int size_head_BCID
Definition: NSWSTGTPDecodeBitmaps.h:22
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:77
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:92
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:40
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::STGTPL1A::size_L1ID
constexpr int size_L1ID
Definition: NSWSTGTPDecodeBitmaps.h:25
python.web.remaining
remaining
Definition: web.py:132
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