ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
MuonSpectrometer
MuonRDO
MuonRDO
TgcL1Rdo.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 MUONRDO_TGCL1RDO_H
6
#define MUONRDO_TGCL1RDO_H
7
8
#include <inttypes.h>
9
#include "
MuonRDO/TgcL1RawData.h
"
10
#include "
AthContainers/DataVector.h
"
11
#include "
AthenaKernel/CLASS_DEF.h
"
12
#include "
Identifier/IdentifierHash.h
"
13
14
/*
15
TGC collection class used for bare RDO ByteStream Conversion.
16
This class holds one ROD information
17
18
@author Tadashi Maeno
19
based on the previous one by H.Kurashige
20
*/
21
class
TgcL1Rdo
:
public
DataVector
<TgcL1RawData>
22
{
23
public
:
24
// typedef required by container
25
typedef
uint16_t
ID
;
26
typedef
TgcL1RawData
DIGIT
;
27
/*
28
enum
29
{
30
MAX_N_SIDE = 2, // A and C side
31
MAX_N_ROD = 12, // max number of ROD in each side
32
MAX_ID = MAX_N_SIDE*MAX_N_ROD
33
};
34
*/
35
struct
Errors
36
{
37
unsigned
badBcID
:1;
38
unsigned
badL1Id
:1;
39
unsigned
timedout
:1;
40
unsigned
badData
:1;
41
unsigned
overflow
:1;
42
};
43
44
struct
SRodStatus
45
{
46
unsigned
EC_RXsend
:1;
// Error in request to send an event via RXlink
47
unsigned
EC_FELdown
:1;
// A Front End link has gone down - abandoned
48
unsigned
EC_frame
:1;
// Invalid FE link framing words
49
unsigned
EC_Glnk
:1;
// G-link error
50
unsigned
EC_xor
:1;
// Invalid XOR event checksum
51
unsigned
EC_ovfl
:1;
// Input FE event is too long or FE FIFO overflow
52
unsigned
EC_timeout
:1;
// Timeout expired for at least one FE link
53
unsigned
EC_xormezz
:1;
// Bad XOR checksum from mezz board
54
unsigned
EC_wc0
:1;
// Event has WC=0
55
unsigned
EC_L1ID
:1;
// L1ID mismatch (TTC EVID FIFO vs local).
56
unsigned
EC_nohdr
:1;
// First word is not header
57
unsigned
EC_rectype
:1;
// Unrecognized record type
58
unsigned
EC_null
:1;
// Unexpected nulls in FE input
59
unsigned
EC_order
:1;
// Word is out of order
60
unsigned
EC_LDB
:1;
// Invalid or unexpected Local Data Block ID
61
unsigned
EC_RXovfl
:1;
// RXfifo has overflowed
62
unsigned
EC_SSWerr
:1;
// SSW reports T1C, NRC, T2C, or GlinkNoLock error
63
unsigned
EC_sbid
:1;
// Illegal SB ID
64
unsigned
EC_unxsbid
:1;
// Unexpected SB ID received
65
unsigned
EC_dupsb
:1;
// SB ID is duplicated in the event
66
unsigned
EC_ec4
:1;
// Unexpected SB L1 Event ID(lo 4)
67
unsigned
EC_bc
:1;
// Unexpected SB BCID
68
unsigned
EC_celladr
:1;
// Invalid cell address
69
unsigned
EC_hitovfl
:1;
// Too many hits in event
70
unsigned
EC_trgbit
:1;
// Unexpected trigger bits
71
unsigned
EC_badEoE
:1;
// Bad End-of-event marker received, not 0xFCA
72
unsigned
EC_endWCnot0
:1;
// WC not 0 after EoE marker
73
unsigned
EC_noEoE
:1;
// No End-of-event marker received
74
};
75
76
struct
LocalStatus
77
{
78
unsigned
mergedHitBCs
:1;
79
unsigned
mergedTrackletBCs
:1;
80
unsigned
sortedHits
:1;
81
unsigned
sortedTracklets
:1;
82
unsigned
hasRoI
:1;
83
unsigned
fakeSsw
:1;
84
unsigned
fill1
:10;
85
};
86
87
/* Constructors
88
*/
90
TgcL1Rdo
();
91
93
TgcL1Rdo
(uint16_t
id
,
IdentifierHash
idHash);
94
95
// P1
96
TgcL1Rdo
(uint16_t
subDetectorId
,
97
uint16_t
srodId
,
98
uint16_t
bcId
,
99
uint16_t
l1Id
);
100
101
// Destructor
102
virtual
~TgcL1Rdo
()
103
{
104
}
105
106
// Identifier
107
uint16_t
identify
()
const
108
{
109
return
m_id
;
110
}
111
112
// Identifier
113
IdentifierHash
identifyHash
()
const
114
{
115
return
m_idHash
;
116
}
117
118
// set methods
119
void
setL1Id
(uint32_t v)
120
{
121
m_l1Id
= v;
122
}
123
void
setBcId
(uint16_t v)
124
{
125
m_bcId
= v;
126
}
127
void
setTriggerType
(uint16_t v)
128
{
129
m_triggerType
= v;
130
}
131
void
setOnlineId
(uint16_t
subDetectorId
, uint16_t
srodId
);
132
133
// get methods
134
uint16_t
subDetectorId
()
const
135
{
136
return
m_subDetectorId
;
137
}
138
uint16_t
srodId
()
const
139
{
140
return
m_srodId
;
141
}
142
uint16_t
triggerType
()
const
143
{
144
return
m_triggerType
;
145
}
146
uint16_t
bcId
()
const
147
{
148
return
m_bcId
;
149
}
150
uint16_t
l1Id
()
const
151
{
152
return
m_l1Id
;
153
}
154
155
// class method for RawData identification
156
static
uint16_t
identifyRawData
(
const
TgcL1RawData
&rawData);
157
158
const
Errors
&
errors
()
const
159
{
160
return
m_errors
;
161
}
162
void
setErrors
(uint16_t data)
163
{
164
// FIXME BUG: This is not portable!
165
// The layout of bitfields in a structure is implementation-defined.
166
union
cnvErrors {
167
uint16_t data;
168
Errors
errors
;
169
} cnv;
170
cnv.data = data;
171
m_errors
= cnv.errors;
172
}
173
174
const
SRodStatus
&
srodStatus
()
const
175
{
176
return
m_srodStatus
;
177
}
178
void
setSRodStatus
(uint32_t data)
179
{
180
// FIXME BUG: This is not portable!
181
// The layout of bitfields in a structure is implementation-defined.
182
union
cnvSRodStatus {
183
uint16_t data;
184
SRodStatus
srodStatus
;
185
} cnv;
186
cnv.data = data;
187
m_srodStatus
= cnv.srodStatus;
188
}
189
190
const
LocalStatus
&
localStatus
()
const
191
{
192
return
m_localStatus
;
193
}
194
void
setLocalStatus
(uint32_t data)
195
{
196
// FIXME BUG: This is not portable!
197
// The layout of bitfields in a structure is implementation-defined.
198
union
cnvLocalStatus {
199
uint16_t data;
200
LocalStatus
localStatus
;
201
} cnv;
202
cnv.data = data;
203
m_localStatus
= cnv.localStatus;
204
}
205
206
uint32_t
orbit
()
const
207
{
208
return
m_orbit
;
209
}
210
void
setOrbit
(uint32_t
orbit
)
211
{
212
m_orbit
=
orbit
;
213
}
214
215
uint16_t
version
()
const
216
{
217
return
m_version
;
218
}
219
220
void
setVersion
(uint16_t
version
)
221
{
222
m_version
=
version
;
223
}
224
225
void
clear
();
226
227
// online ID calculator
228
static
uint16_t
calculateOnlineId
(uint16_t
subDetectorId
, uint16_t rodId);
229
230
private
:
231
// Returns offset, MAX_N_SROD
232
static
std::pair<int, int>
initOnlineId
();
233
234
uint16_t
m_version
= 0U;
// starting August 2006 version = 300. Before that, version = 0
235
237
uint16_t
m_id
= 0U;
238
240
IdentifierHash
m_idHash
;
241
242
// online IDs
243
uint16_t
m_subDetectorId
= 0U;
244
uint16_t
m_srodId
= 0U;
245
246
// Trigger Type
247
uint16_t
m_triggerType
= 0U;
248
249
// BCID and L1ID on ROD
250
uint16_t
m_bcId
= 0U ;
251
uint16_t
m_l1Id
= 0U ;
252
253
struct
Errors
m_errors
{};
254
struct
SRodStatus
m_srodStatus
{};
255
struct
LocalStatus
m_localStatus
{};
256
uint32_t
m_orbit
= 0U;
257
};
258
260
std::ostream&
operator<<
(std::ostream& sl,
const
TgcL1Rdo
& coll);
261
262
CLASS_DEF
(
TgcL1Rdo
,29142172,0)
263
264
// Class needed only for persistency
265
typedef
DataVector
<
TgcL1Rdo
>
TGC_L1RDO_vector
;
266
CLASS_DEF
(
TGC_L1RDO_vector
, 147069493, 1)
267
268
#endif
CLASS_DEF.h
macros to associate a CLID to a type
CLASS_DEF
#define CLASS_DEF(NAME, CID, VERSION)
associate a clid and a version to a type eg
Definition
Control/AthenaKernel/AthenaKernel/CLASS_DEF.h:67
DataVector.h
An STL vector of pointers that by default owns its pointed-to elements.
IdentifierHash.h
TgcL1RawData.h
operator<<
std::ostream & operator<<(std::ostream &sl, const TgcL1Rdo &coll)
Overload of << operator for std::ostream for debug output.
Definition
TgcL1Rdo.cxx:100
TGC_L1RDO_vector
DataVector< TgcL1Rdo > TGC_L1RDO_vector
Definition
TgcL1Rdo.h:265
DataVector
Derived DataVector<T>.
Definition
DataVector.h:795
DataVector< TgcL1RawData >::DataVector
DataVector(SG::OwnershipPolicy ownPolicy=SG::OWN_ELEMENTS, SG::IndexTrackingPolicy trackIndices=SG::DEFAULT_TRACK_INDICES)
IdentifierHash
This is a "hash" representation of an Identifier.
Definition
IdentifierHash.h:25
TgcL1RawData
An unit object of TGC SROD output.
Definition
TgcL1RawData.h:21
TgcL1Rdo
Definition
TgcL1Rdo.h:22
TgcL1Rdo::setErrors
void setErrors(uint16_t data)
Definition
TgcL1Rdo.h:162
TgcL1Rdo::version
uint16_t version() const
Definition
TgcL1Rdo.h:215
TgcL1Rdo::m_triggerType
uint16_t m_triggerType
Definition
TgcL1Rdo.h:247
TgcL1Rdo::triggerType
uint16_t triggerType() const
Definition
TgcL1Rdo.h:142
TgcL1Rdo::setLocalStatus
void setLocalStatus(uint32_t data)
Definition
TgcL1Rdo.h:194
TgcL1Rdo::m_bcId
uint16_t m_bcId
Definition
TgcL1Rdo.h:250
TgcL1Rdo::setL1Id
void setL1Id(uint32_t v)
Definition
TgcL1Rdo.h:119
TgcL1Rdo::setOrbit
void setOrbit(uint32_t orbit)
Definition
TgcL1Rdo.h:210
TgcL1Rdo::setVersion
void setVersion(uint16_t version)
Definition
TgcL1Rdo.h:220
TgcL1Rdo::m_id
uint16_t m_id
ID of this instance.
Definition
TgcL1Rdo.h:237
TgcL1Rdo::m_idHash
IdentifierHash m_idHash
OFFLINE hash of this collection.
Definition
TgcL1Rdo.h:240
TgcL1Rdo::identify
uint16_t identify() const
Definition
TgcL1Rdo.h:107
TgcL1Rdo::l1Id
uint16_t l1Id() const
Definition
TgcL1Rdo.h:150
TgcL1Rdo::identifyHash
IdentifierHash identifyHash() const
Definition
TgcL1Rdo.h:113
TgcL1Rdo::errors
const Errors & errors() const
Definition
TgcL1Rdo.h:158
TgcL1Rdo::TgcL1Rdo
TgcL1Rdo()
Default constructor.
Definition
TgcL1Rdo.cxx:11
TgcL1Rdo::srodStatus
const SRodStatus & srodStatus() const
Definition
TgcL1Rdo.h:174
TgcL1Rdo::localStatus
const LocalStatus & localStatus() const
Definition
TgcL1Rdo.h:190
TgcL1Rdo::srodId
uint16_t srodId() const
Definition
TgcL1Rdo.h:138
TgcL1Rdo::setSRodStatus
void setSRodStatus(uint32_t data)
Definition
TgcL1Rdo.h:178
TgcL1Rdo::m_version
uint16_t m_version
Definition
TgcL1Rdo.h:234
TgcL1Rdo::m_srodId
uint16_t m_srodId
Definition
TgcL1Rdo.h:244
TgcL1Rdo::setTriggerType
void setTriggerType(uint16_t v)
Definition
TgcL1Rdo.h:127
TgcL1Rdo::setOnlineId
void setOnlineId(uint16_t subDetectorId, uint16_t srodId)
Definition
TgcL1Rdo.cxx:37
TgcL1Rdo::m_l1Id
uint16_t m_l1Id
Definition
TgcL1Rdo.h:251
TgcL1Rdo::bcId
uint16_t bcId() const
Definition
TgcL1Rdo.h:146
TgcL1Rdo::m_subDetectorId
uint16_t m_subDetectorId
Definition
TgcL1Rdo.h:243
TgcL1Rdo::m_orbit
uint32_t m_orbit
Definition
TgcL1Rdo.h:256
TgcL1Rdo::~TgcL1Rdo
virtual ~TgcL1Rdo()
Definition
TgcL1Rdo.h:102
TgcL1Rdo::clear
void clear()
Definition
TgcL1Rdo.cxx:106
TgcL1Rdo::ID
uint16_t ID
Definition
TgcL1Rdo.h:25
TgcL1Rdo::DIGIT
TgcL1RawData DIGIT
Definition
TgcL1Rdo.h:26
TgcL1Rdo::setBcId
void setBcId(uint16_t v)
Definition
TgcL1Rdo.h:123
TgcL1Rdo::identifyRawData
static uint16_t identifyRawData(const TgcL1RawData &rawData)
Definition
TgcL1Rdo.cxx:47
TgcL1Rdo::calculateOnlineId
static uint16_t calculateOnlineId(uint16_t subDetectorId, uint16_t rodId)
Definition
TgcL1Rdo.cxx:59
TgcL1Rdo::initOnlineId
static std::pair< int, int > initOnlineId()
Definition
TgcL1Rdo.cxx:52
TgcL1Rdo::orbit
uint32_t orbit() const
Definition
TgcL1Rdo.h:206
TgcL1Rdo::subDetectorId
uint16_t subDetectorId() const
Definition
TgcL1Rdo.h:134
TgcL1Rdo::Errors
Definition
TgcL1Rdo.h:36
TgcL1Rdo::Errors::timedout
unsigned timedout
Definition
TgcL1Rdo.h:39
TgcL1Rdo::Errors::badL1Id
unsigned badL1Id
Definition
TgcL1Rdo.h:38
TgcL1Rdo::Errors::badData
unsigned badData
Definition
TgcL1Rdo.h:40
TgcL1Rdo::Errors::overflow
unsigned overflow
Definition
TgcL1Rdo.h:41
TgcL1Rdo::Errors::badBcID
unsigned badBcID
Definition
TgcL1Rdo.h:37
TgcL1Rdo::LocalStatus
Definition
TgcL1Rdo.h:77
TgcL1Rdo::LocalStatus::mergedHitBCs
unsigned mergedHitBCs
Definition
TgcL1Rdo.h:78
TgcL1Rdo::LocalStatus::sortedHits
unsigned sortedHits
Definition
TgcL1Rdo.h:80
TgcL1Rdo::LocalStatus::mergedTrackletBCs
unsigned mergedTrackletBCs
Definition
TgcL1Rdo.h:79
TgcL1Rdo::LocalStatus::fakeSsw
unsigned fakeSsw
Definition
TgcL1Rdo.h:83
TgcL1Rdo::LocalStatus::fill1
unsigned fill1
Definition
TgcL1Rdo.h:84
TgcL1Rdo::LocalStatus::sortedTracklets
unsigned sortedTracklets
Definition
TgcL1Rdo.h:81
TgcL1Rdo::LocalStatus::hasRoI
unsigned hasRoI
Definition
TgcL1Rdo.h:82
TgcL1Rdo::SRodStatus
Definition
TgcL1Rdo.h:45
TgcL1Rdo::SRodStatus::EC_sbid
unsigned EC_sbid
Definition
TgcL1Rdo.h:63
TgcL1Rdo::SRodStatus::EC_trgbit
unsigned EC_trgbit
Definition
TgcL1Rdo.h:70
TgcL1Rdo::SRodStatus::EC_hitovfl
unsigned EC_hitovfl
Definition
TgcL1Rdo.h:69
TgcL1Rdo::SRodStatus::EC_SSWerr
unsigned EC_SSWerr
Definition
TgcL1Rdo.h:62
TgcL1Rdo::SRodStatus::EC_noEoE
unsigned EC_noEoE
Definition
TgcL1Rdo.h:73
TgcL1Rdo::SRodStatus::EC_Glnk
unsigned EC_Glnk
Definition
TgcL1Rdo.h:49
TgcL1Rdo::SRodStatus::EC_order
unsigned EC_order
Definition
TgcL1Rdo.h:59
TgcL1Rdo::SRodStatus::EC_endWCnot0
unsigned EC_endWCnot0
Definition
TgcL1Rdo.h:72
TgcL1Rdo::SRodStatus::EC_timeout
unsigned EC_timeout
Definition
TgcL1Rdo.h:52
TgcL1Rdo::SRodStatus::EC_RXovfl
unsigned EC_RXovfl
Definition
TgcL1Rdo.h:61
TgcL1Rdo::SRodStatus::EC_bc
unsigned EC_bc
Definition
TgcL1Rdo.h:67
TgcL1Rdo::SRodStatus::EC_frame
unsigned EC_frame
Definition
TgcL1Rdo.h:48
TgcL1Rdo::SRodStatus::EC_unxsbid
unsigned EC_unxsbid
Definition
TgcL1Rdo.h:64
TgcL1Rdo::SRodStatus::EC_dupsb
unsigned EC_dupsb
Definition
TgcL1Rdo.h:65
TgcL1Rdo::SRodStatus::EC_badEoE
unsigned EC_badEoE
Definition
TgcL1Rdo.h:71
TgcL1Rdo::SRodStatus::EC_ovfl
unsigned EC_ovfl
Definition
TgcL1Rdo.h:51
TgcL1Rdo::SRodStatus::EC_ec4
unsigned EC_ec4
Definition
TgcL1Rdo.h:66
TgcL1Rdo::SRodStatus::EC_null
unsigned EC_null
Definition
TgcL1Rdo.h:58
TgcL1Rdo::SRodStatus::EC_nohdr
unsigned EC_nohdr
Definition
TgcL1Rdo.h:56
TgcL1Rdo::SRodStatus::EC_RXsend
unsigned EC_RXsend
Definition
TgcL1Rdo.h:46
TgcL1Rdo::SRodStatus::EC_L1ID
unsigned EC_L1ID
Definition
TgcL1Rdo.h:55
TgcL1Rdo::SRodStatus::EC_FELdown
unsigned EC_FELdown
Definition
TgcL1Rdo.h:47
TgcL1Rdo::SRodStatus::EC_wc0
unsigned EC_wc0
Definition
TgcL1Rdo.h:54
TgcL1Rdo::SRodStatus::EC_LDB
unsigned EC_LDB
Definition
TgcL1Rdo.h:60
TgcL1Rdo::SRodStatus::EC_celladr
unsigned EC_celladr
Definition
TgcL1Rdo.h:68
TgcL1Rdo::SRodStatus::EC_xormezz
unsigned EC_xormezz
Definition
TgcL1Rdo.h:53
TgcL1Rdo::SRodStatus::EC_xor
unsigned EC_xor
Definition
TgcL1Rdo.h:50
TgcL1Rdo::SRodStatus::EC_rectype
unsigned EC_rectype
Definition
TgcL1Rdo.h:57
TgcL1Rdo::m_errors
Definition
TgcL1Rdo.h:253
TgcL1Rdo::m_localStatus
Definition
TgcL1Rdo.h:255
TgcL1Rdo::m_srodStatus
Definition
TgcL1Rdo.h:254
Generated on
for ATLAS Offline Software by
1.17.0