ATLAS Offline Software
Loading...
Searching...
No Matches
SectorLogicRXReadOutStructure.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef TrigT1RPChardware_SectorLogicRXReadOutStructure_H
6#define TrigT1RPChardware_SectorLogicRXReadOutStructure_H
7
8#include <vector>
9
12
14public:
18
19 void setInit();
20 //
21 ubit16 makeHeader(ubit16 *inputData);
22 ubit16 makeSubHeader() { return 0; };
23 ubit16 makeBody(ubit16 *inputData) { return *inputData; };
24 ubit16 makeFooter(ubit16 errorCode) { return errorCode; };
25 ubit16 makeFooter(ubit16 *errorCode);
26
27 //**************************************************//
28 // general user methods to decode ReadOut stream //
29 //**************************************************//
30 ubit16 decodeFragment(ubit16 inputWord, char &field);
31 //
32 bool isHeader();
33 bool isBody() { return false; }
34 bool isFooter();
35
36 bool isSubHeader();
37
38 bool isInputHeader();
39 bool isOutputHeader();
40 bool isInputBody();
41 bool isOutputBody();
42 //
43 // header
44 ubit16 slid() const { return m_slid; }
45 ubit16 fel1id() const { return m_fel1id; }
46 // subheader
47 ubit16 slbcid() const { return m_slbcid; }
48 // input header
50 ubit16 inputPadId() const { return m_inputPadId; }
51 // output header
53 // input body
56 ubit16 inputRoi() const { return m_inputRoi; }
60 // output body
62 ubit16 outputTriggerBcid(int /*nCand*/) const { return m_outputTriggerBcid; }
63 ubit16 outputThreshold(int nCand) const { return m_outputThreshold[nCand]; }
64 ubit16 outputRoi(int nCand) const { return m_outputRoi[nCand]; }
65 ubit16 outputOverlap(int nCand) const { return m_outputOverlap[nCand]; }
67 // footer
68 ubit16 status() const { return m_status; }
69 ubit16 crc() const { return m_crc; }
70
71 ubit16 nOfTriggerWords() const { return m_outTriggerWord.size(); }
72 bool isOutputDecoded() { return (nOfTriggerWords() == 3); }
73
74private:
75 //
76 // header
79 // subheader
81 // input header
84 // output header
86 // 8 or 12 bits of trigger output word
87 std::vector<ubit16> m_outTriggerWord{0};
88 // input body
95 // output body
97 std::array<ubit16, 2> m_outputThreshold{0};
98 std::array<ubit16, 2> m_outputOverlap{0};
99 std::array<ubit16, 2> m_outputRoi{0};
102 // footer
105
106 //
107 // internal objects;
108 //
109 //
110 // some static parameter describing the structure
111 //
112 static constexpr ubit16 s_headerNum = 3;
113 static constexpr std::array<ubit16, s_headerNum> s_headerPos{12, 9, 0};
114 static constexpr std::array<ubit16, s_headerNum> s_headerLen{4, 3, 9};
115 static constexpr ubit16 s_headerVal = 0x000d;
116
117 static constexpr ubit16 s_subHeaderNum = 2;
118 static constexpr std::array<ubit16, s_subHeaderNum> s_subHeaderPos{12, 0};
119 static constexpr std::array<ubit16, s_subHeaderNum> s_subHeaderLen{4, 12};
120 static constexpr ubit16 s_subHeaderVal = 0x0006;
121
122 static constexpr ubit16 s_inputHeaderNum = 3;
123 static constexpr std::array<ubit16, s_inputHeaderNum> s_inputHeaderPos{12, 8, 0};
124 static constexpr std::array<ubit16, s_inputHeaderNum> s_inputHeaderLen{4, 4, 3};
125 static constexpr ubit16 s_inputHeaderVal = 0x0001;
126
127 static constexpr ubit16 s_outputHeaderNum = 3;
128 static constexpr std::array<ubit16, s_outputHeaderNum> s_outputHeaderPos{12, 8, 0};
129 static constexpr std::array<ubit16, s_outputHeaderNum> s_outputHeaderLen{4, 4, 8};
130 static constexpr ubit16 s_outputHeaderVal = 0x0002;
131
132 static constexpr ubit16 s_inputBodyNum = 7;
133 static constexpr std::array<ubit16, s_inputBodyNum> s_inputBodyPos{12, 9, 7, 6, 5, 2, 0};
134 static constexpr std::array<ubit16, s_inputBodyNum> s_inputBodyLen{4, 3, 1, 1, 1, 3, 2};
135 static constexpr ubit16 s_inputBodyVal = 0x0000;
136
137 static constexpr ubit16 s_outputBodyNum = 4;
138 static constexpr std::array<ubit16, s_outputBodyNum> s_outputBodyPos{12, 0};
139 static constexpr std::array<ubit16, s_outputBodyNum> s_outputBodyLen{4, 12};
140 static constexpr ubit16 s_outputBodyVal = 0x0003;
141
142 static constexpr ubit16 s_footerNum = 3;
143 static constexpr std::array<ubit16, s_footerNum> s_footerPos{12, 8, 0};
144 static constexpr std::array<ubit16, s_footerNum> s_footerLen{4, 4, 8};
145 static constexpr ubit16 s_footerVal = 0x000f;
146 //
147};
148
149#endif
unsigned short int ubit16
RPCReadOut()=default
char field() const
Definition RPCReadOut.h:19
static constexpr std::array< ubit16, s_subHeaderNum > s_subHeaderPos
ubit16 decodeFragment(ubit16 inputWord, char &field)
static constexpr std::array< ubit16, s_inputHeaderNum > s_inputHeaderPos
static constexpr std::array< ubit16, s_headerNum > s_headerLen
static constexpr std::array< ubit16, s_footerNum > s_footerPos
static constexpr std::array< ubit16, s_footerNum > s_footerLen
static constexpr std::array< ubit16, s_inputBodyNum > s_inputBodyPos
static constexpr std::array< ubit16, s_outputBodyNum > s_outputBodyPos
static constexpr std::array< ubit16, s_inputHeaderNum > s_inputHeaderLen
static constexpr std::array< ubit16, s_outputBodyNum > s_outputBodyLen
static constexpr std::array< ubit16, s_headerNum > s_headerPos
static constexpr std::array< ubit16, s_outputHeaderNum > s_outputHeaderPos
static constexpr std::array< ubit16, s_outputHeaderNum > s_outputHeaderLen
static constexpr std::array< ubit16, s_subHeaderNum > s_subHeaderLen
static constexpr std::array< ubit16, s_inputBodyNum > s_inputBodyLen