ATLAS Offline Software
Loading...
Searching...
No Matches
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
12namespace 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
41 uint32_t l1a_versionID () const {return m_l1a_versionID;};
42 uint32_t l1a_local_req_BCID () const {return m_l1a_local_req_BCID;};
43 uint32_t l1a_local_rel_BCID () const {return m_l1a_local_rel_BCID;};
44 uint32_t l1a_open_BCID () const {return m_l1a_open_BCID;};
45 uint32_t l1a_req_BCID () const {return m_l1a_req_BCID;};
46 uint32_t l1a_close_BCID () const {return m_l1a_close_BCID;};
47 uint32_t l1a_timeout () const {return m_l1a_timeout;};
48 uint32_t l1a_open_BCID_offset () const {return m_l1a_open_BCID_offset;};
49 uint32_t l1a_req_BCID_offset () const {return m_l1a_req_BCID_offset;};
51 uint32_t l1a_timeout_config () const {return m_l1a_timeout_config;};
52 uint32_t l1a_busy_thr () const {return m_l1a_busy_thr;};
53 uint32_t l1a_engine_snapshot () const {return m_l1a_engine_snapshot;};
54 uint32_t l1a_link_const () const {return m_l1a_link_const;};
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
65 uint32_t trailer_CRC_calc () const {return m_trailer_CRC_calc;};
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
73 uint32_t m_head_fragID;
74 uint32_t m_head_sectID;
75 uint32_t m_head_EC;
76 uint32_t m_head_flags;
77 uint32_t m_head_BCID;
78 uint32_t m_head_orbit;
79 uint32_t m_head_spare;
80 uint32_t m_L1ID;
81
88 uint32_t m_l1a_timeout;
96 uint32_t m_l1a_padding;
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_
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.