ATLAS Offline Software
Loading...
Searching...
No Matches
STGTPPackets.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3*/
4#ifndef MUONNSWCOMMONDECODE_STGTPPACKETS_H
5#define MUONNSWCOMMONDECODE_STGTPPACKETS_H
6
7#include <array>
8#include <cstddef>
9#include <cstdint>
10#include <exception>
11#include <vector>
12
14
15namespace Muon::nsw {
16
17
19 public:
20
22 std::uint32_t monitor{};
23 std::uint32_t spare{};
24 std::uint32_t lowRes{};
25 std::uint32_t phiRes{};
26 std::uint32_t dTheta{};
27 std::uint32_t phiID{};
28 std::uint32_t rIndex{};
29 };
30
31 explicit STGTPMMPacket(const std::vector<std::uint32_t>& payload, const int ver);
32 virtual ~STGTPMMPacket() = default;
33 size_t Size(const int ver);
34
35 [[nodiscard]] const std::array<MMSegmentData, STGTPMMData::num_mm>& Segments() const { return m_segmentData; }
36 [[nodiscard]] const MMSegmentData& Segment(std::size_t segment) const;
37
38 [[nodiscard]] std::uint32_t BCID() const { return m_BCID; };
39
40 private:
41 std::array<MMSegmentData, STGTPMMData::num_mm> m_segmentData{};
42 std::uint32_t m_BCID{};
43 std::uint32_t m_valids{};
44};
45
47 public:
48 explicit STGTPPadPacket(const std::vector<std::uint32_t>& payload, const int ver);
49 virtual ~STGTPPadPacket() = default;
50 [[nodiscard]] std::uint32_t BCID() const { return m_BCID; };
51 [[nodiscard]] std::uint32_t BandID(const std::size_t num) const { return m_bandIDs.at(num); };
52 [[nodiscard]] std::uint32_t PhiID(const std::size_t num) const { return m_phiIDs.at(num); };
53 [[nodiscard]] std::uint32_t PadIdleFlag() const { return m_idleFlag; };
54 [[nodiscard]] std::uint32_t CoincidenceWedge() const { return m_coincWedge; };
55
56 private:
57 std::uint32_t m_BCID{};
58 std::array<std::uint32_t, STGTPPad::num_pads> m_bandIDs{};
59 std::array<std::uint32_t, STGTPPad::num_pads> m_phiIDs{};
60 std::uint32_t m_idleFlag{};
61 std::uint32_t m_coincWedge{};
62 size_t Size(const int version);
63
64};
65
67 public:
68 struct SegmentData {
69 std::uint32_t monitor{};
70 std::uint32_t spare{};
71 std::uint32_t lowRes{};
72 std::uint32_t phiRes{};
73 std::uint32_t dTheta{};
74 std::uint32_t phiID{};
75 std::uint32_t rIndex{};
76 };
77
78 explicit STGTPSegmentPacket(const std::vector<std::uint32_t>& payload, const int ver);
79
80 virtual ~STGTPSegmentPacket() = default;
81 [[nodiscard]] std::uint32_t LUT_ChoiceSelection() const { return m_lut_choice; }
82 [[nodiscard]] std::uint32_t NSW_SegmentSelector() const { return m_nsw_segment_selector; }
83 [[nodiscard]] std::uint32_t ValidSegmentSelector() const { return m_valid_segment_selector; }
84
85 [[nodiscard]] const std::array<SegmentData, STGTPSegments::num_segments>& Segments() const { return m_segmentData; }
86 [[nodiscard]] const SegmentData& Segment(std::size_t segment) const;
87
88 [[nodiscard]] std::uint32_t BCID() const { return m_BCID; };
89 [[nodiscard]] std::uint32_t SectorID() const { return m_sectorID; }
90
91 private:
92 std::uint32_t m_lut_choice{};
93 std::uint32_t m_nsw_segment_selector{};
94 std::uint32_t m_valid_segment_selector{};
95
96 std::array<SegmentData, STGTPSegments::num_segments> m_segmentData{};
97
98 std::uint32_t m_BCID{};
99 std::uint32_t m_sectorID{};
100 size_t Size(const int ver);
101};
102
104 public:
105 explicit STGTPStripPacket(const std::vector<std::uint32_t>& payload, const int ver);
106
107 virtual ~STGTPStripPacket() = default;
108
109 [[nodiscard]] const std::array<std::uint32_t, STGTPStrips::num_strips>& Strips() const { return m_stripData; }
110 [[nodiscard]] std::uint32_t Strip(std::size_t strip) const;
111 [[nodiscard]] const std::array<std::uint32_t, STGTPStrips::num_offsets>& Offsets() const { return m_offsets; }
112 [[nodiscard]] std::uint32_t Offset(std::size_t offset) const;
113
114 [[nodiscard]] std::uint32_t PhiIdValue() const { return m_phiIdValue; }
115 [[nodiscard]] std::uint32_t PhiIdSign() const { return m_phiIdSign; }
116 [[nodiscard]] std::uint32_t BandId() const { return m_bandId; }
117 [[nodiscard]] std::uint32_t BCID() const { return m_BCID; }
118
119 private:
120 std::array<std::uint32_t, STGTPStrips::num_strips> m_stripData{};
121 std::array<std::uint32_t, STGTPStrips::num_offsets> m_offsets{};
122 std::uint32_t m_phiIdValue{};
123 std::uint32_t m_phiIdSign{};
124 std::uint32_t m_bandId{};
125 std::uint32_t m_BCID{};
126 size_t Size(const int ver);
127};
128
129} // namespace Muon::nsw
130
131#endif // MUONNSWCOMMONDECODE_STGTPPACKETS_H
STGTPMMPacket(const std::vector< std::uint32_t > &payload, const int ver)
std::uint32_t BCID() const
const std::array< MMSegmentData, STGTPMMData::num_mm > & Segments() const
virtual ~STGTPMMPacket()=default
const MMSegmentData & Segment(std::size_t segment) const
std::array< MMSegmentData, STGTPMMData::num_mm > m_segmentData
size_t Size(const int ver)
std::uint32_t PadIdleFlag() const
std::uint32_t BCID() const
std::uint32_t CoincidenceWedge() const
virtual ~STGTPPadPacket()=default
std::array< std::uint32_t, STGTPPad::num_pads > m_bandIDs
std::array< std::uint32_t, STGTPPad::num_pads > m_phiIDs
size_t Size(const int version)
STGTPPadPacket(const std::vector< std::uint32_t > &payload, const int ver)
std::uint32_t BandID(const std::size_t num) const
std::uint32_t PhiID(const std::size_t num) const
STGTPSegmentPacket(const std::vector< std::uint32_t > &payload, const int ver)
size_t Size(const int ver)
const SegmentData & Segment(std::size_t segment) const
std::uint32_t LUT_ChoiceSelection() const
std::uint32_t m_valid_segment_selector
std::uint32_t ValidSegmentSelector() const
const std::array< SegmentData, STGTPSegments::num_segments > & Segments() const
std::uint32_t BCID() const
virtual ~STGTPSegmentPacket()=default
std::uint32_t NSW_SegmentSelector() const
std::uint32_t SectorID() const
std::array< SegmentData, STGTPSegments::num_segments > m_segmentData
std::uint32_t m_nsw_segment_selector
size_t Size(const int ver)
STGTPStripPacket(const std::vector< std::uint32_t > &payload, const int ver)
std::uint32_t PhiIdValue() const
std::uint32_t Offset(std::size_t offset) const
std::uint32_t Strip(std::size_t strip) const
std::array< std::uint32_t, STGTPStrips::num_strips > m_stripData
std::uint32_t BCID() const
std::uint32_t PhiIdSign() const
std::array< std::uint32_t, STGTPStrips::num_offsets > m_offsets
const std::array< std::uint32_t, STGTPStrips::num_offsets > & Offsets() const
std::uint32_t BandId() const
virtual ~STGTPStripPacket()=default
const std::array< std::uint32_t, STGTPStrips::num_strips > & Strips() const
nsw::STGTPPadPacket STGTPPadPacket
nsw::STGTPSegmentPacket STGTPSegmentPacket
nsw::STGTPMMPacket STGTPMMPacket
nsw::STGTPStripPacket STGTPStripPacket