ATLAS Offline Software
NSWTriggerMML1AElink.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 #ifndef _MUON_NSW_TRIGGER_MML1A_ELINK_H_
5 #define _MUON_NSW_TRIGGER_MML1A_ELINK_H_
6 
8 #include <stdint.h>
9 #include <vector>
10 #include <memory>
11 
12 namespace Muon
13 {
14  namespace nsw
15  {
16  class NSWResourceId;
17 
18  class NSWTriggerElinkException;
19 
20  class MMARTPacket;
21 
22  class MMTrigPacket;
23 
25  {
26  public:
27 
28  NSWTriggerMML1AElink (const uint32_t *bs, uint32_t remaining);
29  virtual ~NSWTriggerMML1AElink () = default;
30 
31 
32  uint32_t head_fragID () const {return m_head_fragID;};
33  uint32_t head_sectID () const {return m_head_sectID;};
34  uint32_t head_EC () const {return m_head_EC;};
35  uint32_t head_flags () const {return m_head_flags;};
36  uint32_t head_BCID () const {return m_head_BCID;};
37  uint32_t head_orbit () const {return m_head_orbit;};
38  uint32_t head_spare () const {return m_head_spare;};
39  uint32_t L1ID () const {return m_L1ID;};
40 
45  uint32_t l1a_req_BCID () const {return m_l1a_req_BCID;};
47  uint32_t l1a_timeout () const {return m_l1a_timeout;};
52  uint32_t l1a_busy_thr () const {return m_l1a_busy_thr;};
55  uint32_t l1a_padding () const {return m_l1a_padding;};
56 
57  const std::vector<uint32_t>& stream_head_nbits () const {return m_stream_head_nbits;};
58  const std::vector<uint32_t>& stream_head_nwords () const {return m_stream_head_nwords;};
59  const std::vector<uint32_t>& stream_head_fifo_size () const {return m_stream_head_fifo_size;};
60  const std::vector<uint32_t>& stream_head_streamID () const {return m_stream_head_streamID;};
61  const std::vector<std::vector<std::vector<uint32_t>>>& stream_data () const {return m_stream_data;};
62 
63  uint32_t trailer_CRC () const {return m_trailer_CRC;};
64 
66  bool is_crc_ok () const {return m_trailer_CRC == m_trailer_CRC_calc;};
67 
68  const std::vector<std::shared_ptr<Muon::nsw::MMARTPacket>>& art_packets () const {return m_art_packets;};
69  const std::vector<std::shared_ptr<Muon::nsw::MMTrigPacket>>& trig_packets () const {return m_trig_packets;};
70 
71  private:
72 
81 
97 
98  std::vector<uint32_t> m_stream_head_nbits;
99  std::vector<uint32_t> m_stream_head_nwords;
100  std::vector<uint32_t> m_stream_head_fifo_size;
101  std::vector<uint32_t> m_stream_head_streamID;
102  std::vector<std::vector<std::vector<uint32_t>>> m_stream_data; //size is potentially not known a priori...
103  //first vector had stream index
104  //second vector contains stream data words - length defined by m_stream_head_nwords
105  //third vector used because stream data size (m_stream_head_nwords) can exceed maximum compiler size (uint64_t)
106  //CRC are actually 16b for now but keeping 32b for future proofing
108  uint32_t m_trailer_CRC_calc; //calculated CRC
109 
110  std::vector<std::shared_ptr<Muon::nsw::MMARTPacket>> m_art_packets;
111  std::vector<std::shared_ptr<Muon::nsw::MMTrigPacket>> m_trig_packets;
112 
113  };
114  }
115 }
116 
117 
118 #endif // _MUON_NSW_TRIGGER_MML1A_ELINK_H_
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
Muon
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
Definition: TrackSystemController.h:45