ATLAS Offline Software
LArFebHeader.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef LARFEBHEADER_H
6 #define LARFEBHEADER_H
7 
9 #include <stdint.h>
10 
11 
21 {
22  public:
23 
25  LArFebHeader(const HWIdentifier febid);
26 
28  ~LArFebHeader() = default;
29 
31  inline HWIdentifier FEBId() const {return m_FEBId;}
32 
34  inline uint32_t FormatVersion() const {return m_RodHeader.FormatVersion;}
35 
37  inline uint32_t SourceId() const {return m_RodHeader.SourceId;}
38 
40  inline uint32_t RunNumber() const {return m_RodHeader. RunNumber;}
41 
43  inline uint16_t ELVL1Id() const {return m_RodHeader.ELVL1Id;}
44 
46  inline uint16_t BCId() const {return m_RodHeader.BCId;}
47 
49  inline uint32_t LVL1TigType() const {return m_RodHeader.LVL1TigType;}
50 
52  inline uint32_t DetEventType() const {return m_RodHeader.DetEventType;}
53 
55  inline uint32_t DspCodeVersion() const {return m_DspHeader.CodeVersion;}
56 
58  inline uint32_t DspEventCounter() const {return m_DspHeader.EventCounter;}
59 
61  inline uint16_t FebELVL1Id() const {return m_ELVL1Id;}
62 
64  inline uint16_t FebBCId() const {return m_BCId;}
65 
67  inline uint16_t RodResults1Size() const {return m_Results1Size;}
68  inline uint16_t RodResults2Size() const {return m_Results2Size;}
69  inline uint16_t RodRawDataSize() const {return m_RawDataSize;}
70 
72  inline uint16_t NbSamples() const {return m_NbSamples;}
73  inline uint16_t NbSweetCells1() const {return m_NbSweetCells1;}
74  inline uint16_t NbSweetCells2() const {return m_NbSweetCells2;}
75  inline uint32_t OnlineChecksum() const { return m_OnlineChecksum; }
76  inline uint32_t OfflineChecksum() const { return m_OfflineChecksum; }
77  inline bool ChecksumVerification() const { return m_OnlineChecksum==m_OfflineChecksum; }
78 
80  inline const std::vector <uint16_t> & FebCtrl1() const {return m_Ctrl1;}
81 
83  inline const std::vector <uint16_t> & FebCtrl2() const {return m_Ctrl2;}
84 
86  inline const std::vector <uint16_t> & FebCtrl3() const {return m_Ctrl3;}
87 
89  inline uint32_t RodStatus() const {return m_Status;}
90 
92  inline const std::vector <uint16_t> & SCA() const { return m_SCA; }
93 
95  inline bool CheckErrorELVL1Id() const { return (m_RodHeader.ELVL1Id&0x1f)!=m_ELVL1Id; }
96 
98  inline bool CheckErrorBCId() const { return m_RodHeader.BCId!=((m_BCId+1)&0xfff); }
99 
101  inline void SetFormatVersion(const uint32_t formatVersion)
102  { m_RodHeader.FormatVersion=formatVersion; return; }
103 
105  inline void SetSourceId(const uint32_t sourceID)
106  { m_RodHeader.SourceId=sourceID; return; }
107 
109  inline void SetRunNumber(const uint32_t runNumber)
110  { m_RodHeader.RunNumber=runNumber; return; }
111 
113  inline void SetELVL1Id(const uint16_t elvl1Id)
114  { m_RodHeader.ELVL1Id=elvl1Id; return; }
115 
117  inline void SetBCId(const uint16_t bcid)
118  { m_RodHeader.BCId=bcid; return; }
119 
121  inline void SetRodResults1Size(const uint16_t size)
122  { m_Results1Size=size; return; }
123  inline void SetRodResults2Size(const uint16_t size)
124  { m_Results2Size=size; return; }
125  inline void SetRodRawDataSize (const uint16_t size)
126  { m_RawDataSize=size; return; }
127 
129  inline void SetNbSweetCells1(const uint16_t n)
130  { m_NbSweetCells1=n; return; }
131  inline void SetNbSweetCells2(const uint16_t n)
132  { m_NbSweetCells2=n; return; }
133  inline void SetNbSamples(const uint16_t n)
134  { m_NbSamples=n; return; }
135  inline void SetOnlineChecksum(const uint32_t checksum)
136  { m_OnlineChecksum=checksum; return; }
137  inline void SetOfflineChecksum(const uint32_t checksum)
138  { m_OfflineChecksum=checksum; return; }
139 
141  inline void SetLVL1TigType(const uint32_t lvl1ttype)
142  { m_RodHeader.LVL1TigType=lvl1ttype; return; }
143 
145  inline void SetDetEventType(const uint32_t detEvType)
146  { m_RodHeader.DetEventType=detEvType; return; }
147 
149  inline void SetDspCodeVersion(const uint32_t codeVersion)
150  { m_DspHeader.CodeVersion=codeVersion; return; }
151 
153  inline void SetDspEventCounter(const uint32_t eventCounter)
154  { m_DspHeader.EventCounter=eventCounter; return; }
155 
157  inline void SetFebELVL1Id(const uint16_t elvl1Id)
158  { m_ELVL1Id=elvl1Id; return; }
159 
161  inline void SetFebBCId(const uint16_t bcid)
162  { m_BCId=bcid; return; }
163 
165  inline void SetFebCtrl1(const uint16_t ctrl1)
166  { m_Ctrl1.push_back(ctrl1); return; }
167 
169  inline void SetFebCtrl2(const uint16_t ctrl2)
170  { m_Ctrl2.push_back(ctrl2); return; }
171 
173  inline void SetFebCtrl3(const uint16_t ctrl3)
174  { m_Ctrl3.push_back(ctrl3); return; }
175 
177  inline void SetRodStatus(const uint32_t status)
178  { m_Status=status; return; }
179 
181  inline void SetFebSCA(const uint16_t sca)
182  { m_SCA.push_back(degray(sca)); return; }
183 
184  private:
185 
187  static int degray(unsigned int x);
188 
191 
193  struct {
202 
204  struct {
205  uint32_t CodeVersion; // DSP code version
206  uint32_t EventCounter; // DSP event counter
208 
211 
214 
223 
226 
228  std::vector<uint16_t> m_SCA;
229 
231  std::vector<uint16_t> m_Ctrl1;
232 
234  std::vector<uint16_t> m_Ctrl2;
235 
237  std::vector<uint16_t> m_Ctrl3;
238 };
239 
240 #endif
LArFebHeader::ELVL1Id
uint16_t ELVL1Id() const
get the EventID
Definition: LArFebHeader.h:43
LArFebHeader::FebCtrl3
const std::vector< uint16_t > & FebCtrl3() const
get the FEB Control Word #3
Definition: LArFebHeader.h:86
LArFebHeader::m_ELVL1Id
uint16_t m_ELVL1Id
FEB EventId.
Definition: LArFebHeader.h:210
LArFebHeader::degray
static int degray(unsigned int x)
like explained in: http://mathworld.wolfram.com/GrayCode.html
Definition: LArFebHeader.cxx:34
LArFebHeader::LVL1TigType
uint32_t LVL1TigType() const
get the Level1 trigger type ID
Definition: LArFebHeader.h:49
LArFebHeader::FebCtrl1
const std::vector< uint16_t > & FebCtrl1() const
get the FEB Control Word #1
Definition: LArFebHeader.h:80
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
LArFebHeader::NbSamples
uint16_t NbSamples() const
get the number of samples and cells above threshold
Definition: LArFebHeader.h:72
LArFebHeader::m_Ctrl1
std::vector< uint16_t > m_Ctrl1
FEB Control word 1.
Definition: LArFebHeader.h:231
LArFebHeader::NbSweetCells1
uint16_t NbSweetCells1() const
Definition: LArFebHeader.h:73
LArFebHeader::m_OnlineChecksum
uint32_t m_OnlineChecksum
Definition: LArFebHeader.h:221
LArFebHeader::DetEventType
uint32_t DetEventType
Definition: LArFebHeader.h:200
LArFebHeader::SetFormatVersion
void SetFormatVersion(const uint32_t formatVersion)
set the format version
Definition: LArFebHeader.h:101
LArFebHeader::FormatVersion
uint32_t FormatVersion() const
get the format version
Definition: LArFebHeader.h:34
HWIdentifier
Definition: HWIdentifier.h:13
LArFebHeader::SetELVL1Id
void SetELVL1Id(const uint16_t elvl1Id)
set the EventID
Definition: LArFebHeader.h:113
LArFebHeader::m_FEBId
const HWIdentifier m_FEBId
Feb Identifier.
Definition: LArFebHeader.h:190
x
#define x
LArFebHeader::NbSweetCells2
uint16_t NbSweetCells2() const
Definition: LArFebHeader.h:74
LArFebHeader::m_NbSamples
uint16_t m_NbSamples
Definition: LArFebHeader.h:220
LArFebHeader::FebCtrl2
const std::vector< uint16_t > & FebCtrl2() const
get the FEB Control Word #2
Definition: LArFebHeader.h:83
LArFebHeader::SetLVL1TigType
void SetLVL1TigType(const uint32_t lvl1ttype)
set the Level1 trigger type ID
Definition: LArFebHeader.h:141
LArFebHeader::OnlineChecksum
uint32_t OnlineChecksum() const
Definition: LArFebHeader.h:75
LArFebHeader::SetRodRawDataSize
void SetRodRawDataSize(const uint16_t size)
Definition: LArFebHeader.h:125
LArFebHeader::BCId
uint16_t BCId() const
get the Bunch Crossing ID
Definition: LArFebHeader.h:46
LArFebHeader::OfflineChecksum
uint32_t OfflineChecksum() const
Definition: LArFebHeader.h:76
LArFebHeader::SetBCId
void SetBCId(const uint16_t bcid)
set the Bunch Crossing ID
Definition: LArFebHeader.h:117
LArFebHeader::m_BCId
uint16_t m_BCId
FEB BCId.
Definition: LArFebHeader.h:213
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
LArFebHeader::~LArFebHeader
~LArFebHeader()=default
Destructor.
LArFebHeader::SCA
const std::vector< uint16_t > & SCA() const
get the SCA's
Definition: LArFebHeader.h:92
LArFebHeader::DetEventType
uint32_t DetEventType() const
get the Detector event type ID
Definition: LArFebHeader.h:52
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:88
LArFebHeader::SetFebELVL1Id
void SetFebELVL1Id(const uint16_t elvl1Id)
set the FEB Event ID
Definition: LArFebHeader.h:157
LArFebHeader::LVL1TigType
uint32_t LVL1TigType
Definition: LArFebHeader.h:199
LArFebHeader::SourceId
uint32_t SourceId() const
get the source Id
Definition: LArFebHeader.h:37
beamspotman.n
n
Definition: beamspotman.py:731
LArFebHeader::FebELVL1Id
uint16_t FebELVL1Id() const
get the FEB Event ID
Definition: LArFebHeader.h:61
LArFebHeader::SourceId
uint32_t SourceId
Definition: LArFebHeader.h:195
LArFebHeader::SetRunNumber
void SetRunNumber(const uint32_t runNumber)
set the run number
Definition: LArFebHeader.h:109
LArFebHeader::m_OfflineChecksum
uint32_t m_OfflineChecksum
Definition: LArFebHeader.h:222
LArFebHeader::FEBId
HWIdentifier FEBId() const
get the FEBId
Definition: LArFebHeader.h:31
LArFebHeader::ELVL1Id
uint16_t ELVL1Id
Definition: LArFebHeader.h:197
LArFebHeader::SetDspCodeVersion
void SetDspCodeVersion(const uint32_t codeVersion)
set the version of the DSP code
Definition: LArFebHeader.h:149
LArFebHeader::SetRodResults2Size
void SetRodResults2Size(const uint16_t size)
Definition: LArFebHeader.h:123
LArFebHeader::SetOnlineChecksum
void SetOnlineChecksum(const uint32_t checksum)
Definition: LArFebHeader.h:135
LArFebHeader::RodRawDataSize
uint16_t RodRawDataSize() const
Definition: LArFebHeader.h:69
LArFebHeader
Holds information from the FEB Header.
Definition: LArFebHeader.h:21
LArFebHeader::RunNumber
uint32_t RunNumber
Definition: LArFebHeader.h:196
LArFebHeader::FormatVersion
uint32_t FormatVersion
Definition: LArFebHeader.h:194
LArFebHeader::SetDspEventCounter
void SetDspEventCounter(const uint32_t eventCounter)
set the Event number counted by the DSP code
Definition: LArFebHeader.h:153
LArFebHeader::m_Results2Size
uint16_t m_Results2Size
Definition: LArFebHeader.h:216
LArFebHeader::m_Ctrl3
std::vector< uint16_t > m_Ctrl3
FEB Control word 3.
Definition: LArFebHeader.h:237
HWIdentifier.h
LArFebHeader::m_Results1Size
uint16_t m_Results1Size
Definition: LArFebHeader.h:215
LArFebHeader::SetSourceId
void SetSourceId(const uint32_t sourceID)
set the source Id
Definition: LArFebHeader.h:105
LArFebHeader::CheckErrorBCId
bool CheckErrorBCId() const
Check functions: return true if mismatch in Bunch Crossing ID.
Definition: LArFebHeader.h:98
xAOD::bcid
setEventNumber setTimeStamp bcid
Definition: EventInfo_v1.cxx:133
LArFebHeader::ChecksumVerification
bool ChecksumVerification() const
Definition: LArFebHeader.h:77
LArFebHeader::DspEventCounter
uint32_t DspEventCounter() const
get the Event number counted by the DSP code
Definition: LArFebHeader.h:58
LArFebHeader::LArFebHeader
LArFebHeader(const HWIdentifier febid)
Constructor with FEB Id.
Definition: LArFebHeader.cxx:8
LArFebHeader::SetRodResults1Size
void SetRodResults1Size(const uint16_t size)
set the ROD block sizes
Definition: LArFebHeader.h:121
LArFebHeader::SetFebCtrl2
void SetFebCtrl2(const uint16_t ctrl2)
set the FEB Control Word #2
Definition: LArFebHeader.h:169
DeMoAtlasDataLoss.runNumber
string runNumber
Definition: DeMoAtlasDataLoss.py:64
LArFebHeader::m_NbSweetCells1
uint16_t m_NbSweetCells1
Definition: LArFebHeader.h:218
LArFebHeader::RunNumber
uint32_t RunNumber() const
get the run number
Definition: LArFebHeader.h:40
LArFebHeader::SetNbSamples
void SetNbSamples(const uint16_t n)
Definition: LArFebHeader.h:133
LArFebHeader::m_NbSweetCells2
uint16_t m_NbSweetCells2
Definition: LArFebHeader.h:219
LArFebHeader::RodStatus
uint32_t RodStatus() const
get the ROD Status
Definition: LArFebHeader.h:89
LArFebHeader::SetFebSCA
void SetFebSCA(const uint16_t sca)
set the SCA's
Definition: LArFebHeader.h:181
LArFebHeader::RodResults2Size
uint16_t RodResults2Size() const
Definition: LArFebHeader.h:68
LArFebHeader::BCId
uint16_t BCId
Definition: LArFebHeader.h:198
LArFebHeader::SetFebCtrl3
void SetFebCtrl3(const uint16_t ctrl3)
set the FEB Control Word #3
Definition: LArFebHeader.h:173
LArFebHeader::SetNbSweetCells2
void SetNbSweetCells2(const uint16_t n)
Definition: LArFebHeader.h:131
LArFebHeader::m_RawDataSize
uint16_t m_RawDataSize
Definition: LArFebHeader.h:217
LArFebHeader::m_SCA
std::vector< uint16_t > m_SCA
SCA number for each samples.
Definition: LArFebHeader.h:228
LArFebHeader::CodeVersion
uint32_t CodeVersion
Definition: LArFebHeader.h:205
LArFebHeader::DspCodeVersion
uint32_t DspCodeVersion() const
get the version of the DSP code
Definition: LArFebHeader.h:55
LArFebHeader::m_DspHeader
struct LArFebHeader::@162 m_DspHeader
DSP-Header (most of it is actually in the DSP-Trailer)
merge.status
status
Definition: merge.py:17
LArFebHeader::SetFebBCId
void SetFebBCId(const uint16_t bcid)
set the FEB Bunch Crossing ID
Definition: LArFebHeader.h:161
LArFebHeader::FebBCId
uint16_t FebBCId() const
get the FEB Bunch Crossing ID
Definition: LArFebHeader.h:64
LArFebHeader::SetFebCtrl1
void SetFebCtrl1(const uint16_t ctrl1)
set the FEB Control Word #1
Definition: LArFebHeader.h:165
LArFebHeader::m_Ctrl2
std::vector< uint16_t > m_Ctrl2
@Brief FEB Control word 2
Definition: LArFebHeader.h:234
LArFebHeader::RodResults1Size
uint16_t RodResults1Size() const
get the ROD block sizes
Definition: LArFebHeader.h:67
LArFebHeader::SetDetEventType
void SetDetEventType(const uint32_t detEvType)
set the Detector event type ID
Definition: LArFebHeader.h:145
LArFebHeader::SetRodStatus
void SetRodStatus(const uint32_t status)
set the ROD Status
Definition: LArFebHeader.h:177
LArFebHeader::SetNbSweetCells1
void SetNbSweetCells1(const uint16_t n)
set the number of samples and cells above thresholds
Definition: LArFebHeader.h:129
LArFebHeader::m_RodHeader
struct LArFebHeader::@161 m_RodHeader
ROD-Header, always present (is part of the FEB-Header)
LArFebHeader::SetOfflineChecksum
void SetOfflineChecksum(const uint32_t checksum)
Definition: LArFebHeader.h:137
LArFebHeader::m_Status
uint32_t m_Status
ROD Status word.
Definition: LArFebHeader.h:225
LArFebHeader::CheckErrorELVL1Id
bool CheckErrorELVL1Id() const
Check functions: return true if mismatch in Event ID.
Definition: LArFebHeader.h:95
LArFebHeader::EventCounter
uint32_t EventCounter
Definition: LArFebHeader.h:206