ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Event
ByteStreamData
ByteStreamData
ROBData.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#ifndef XAOD_ANALYSIS
6
7
#ifndef BYTESTREAMDATA_ROBDATA_H
8
#define BYTESTREAMDATA_ROBDATA_H
9
27
28
#include "eformat/SourceIdentifier.h"
29
#include "
ByteStreamData/RawEvent.h
"
30
43
44
45
template
<
typename
ROBFragment,
typename
Po
int
erType>
46
class
ROBData_T
{
47
48
public
:
50
class
iterator
;
51
52
54
explicit
ROBData_T
(
const
ROBFragment
* rob);
55
57
ROBData_T
(
const
ROBData_T
& other);
58
60
ROBData_T
();
61
63
iterator
begin
()
const
;
64
66
iterator
end
()
const
;
67
69
ROBData_T
&
operator=
(
const
ROBData_T
& other);
70
72
eformat::SubDetector
sub_detector
()
const
;
73
75
uint16_t
module_identifier
()
const
;
76
78
uint32_t
no_of_elements
()
const
;
79
81
const
ROBFragment
*
getROBFragment
()
const
;
82
83
public
:
88
class
iterator
{
89
private
:
96
iterator
(
const
PointerType
& it);
97
98
public
:
100
iterator
(
const
iterator
& other);
101
103
iterator
&
operator=
(
const
iterator
& other);
104
106
uint32_t
operator*
();
107
116
iterator
&
operator+=
(
const
unsigned
int
& pos);
117
119
iterator
&
operator++
();
120
122
bool
operator!=
(
const
iterator
& other)
const
;
123
124
private
:
//Representation
125
friend
class
ROBData_T
<
ROBFragment
,
PointerType
>;
126
PointerType
m_it
;
127
};
128
129
private
:
//Representation
130
const
ROBFragment
*
m_rob
;
131
PointerType
m_data
;
132
};
133
134
template
<
class
ROBFragment,
typename
Po
int
erType>
135
ROBData_T<ROBFragment, PointerType>::ROBData_T
(
const
ROBFragment
* rob) :
m_rob
(rob),
m_data
(nullptr) {
136
m_rob
->rod_data(
m_data
);
137
}
138
139
template
<
class
ROBFragment,
typename
Po
int
erType>
140
ROBData_T<ROBFragment, PointerType>::ROBData_T
() :
m_rob
(nullptr),
m_data
(nullptr) {
141
}
142
143
template
<
class
ROBFragment,
typename
Po
int
erType>
144
ROBData_T<ROBFragment, PointerType>::ROBData_T
(
const
ROBData_T<ROBFragment, PointerType>
& other) :
145
m_rob
(other.
m_rob
),
m_data
(other.
m_data
) {
146
}
147
148
template
<
class
ROBFragment,
typename
Po
int
erType>
149
ROBData_T<ROBFragment, PointerType>
&
ROBData_T<ROBFragment, PointerType>::operator=
(
const
ROBData_T<ROBFragment, PointerType>
& other) {
150
m_rob
= other.m_rob;
151
m_data
= other.m_data;
152
return
*
this
;
153
}
154
155
template
<
class
ROBFragment,
typename
Po
int
erType>
156
typename
ROBData_T<ROBFragment, PointerType>::iterator
ROBData_T<ROBFragment, PointerType>::begin
()
const
{
157
return
iterator
(
m_data
);
158
}
159
160
template
<
class
ROBFragment,
typename
Po
int
erType>
161
typename
ROBData_T<ROBFragment, PointerType>::iterator
ROBData_T<ROBFragment, PointerType>::end
()
const
{
162
return
iterator
(
m_data
+
m_rob
->rod_ndata());
163
}
164
165
template
<
class
ROBFragment,
typename
Po
int
erType>
166
eformat::SubDetector
ROBData_T<ROBFragment, PointerType>::sub_detector
()
const
{
167
eformat::helper::SourceIdentifier sid(
m_rob
->rod_source_id());
168
return
sid.subdetector_id();
169
}
170
171
template
<
class
ROBFragment,
typename
Po
int
erType>
172
uint16_t
ROBData_T<ROBFragment, PointerType>::module_identifier
()
const
{
173
// m_data->header()->source_id(); //FIXME: WHY AM I NEEDED?
174
eformat::helper::SourceIdentifier sid(
m_rob
->rod_source_id());
175
return
sid.module_id();
176
}
177
178
template
<
class
ROBFragment,
typename
Po
int
erType>
179
uint32_t
ROBData_T<ROBFragment, PointerType>::no_of_elements
()
const
{
180
return
m_rob
->rod_ndata();
181
}
182
183
template
<
class
ROBFragment,
typename
Po
int
erType>
184
const
ROBFragment
*
ROBData_T<ROBFragment, PointerType>::getROBFragment
()
const
{
185
return
m_rob
;
186
}
187
188
template
<
class
ROBFragment,
typename
Po
int
erType>
189
ROBData_T<ROBFragment, PointerType>::iterator::iterator
(
const
PointerType
& it) :
m_it
(it) {
190
}
191
192
template
<
class
ROBFragment,
typename
Po
int
erType>
193
ROBData_T<ROBFragment, PointerType>::iterator::iterator
(
const
ROBData_T<ROBFragment, PointerType>::iterator
& other) :
194
m_it(other.m_it) {
195
}
196
197
template
<
class
ROBFragment,
typename
Po
int
erType>
198
typename
ROBData_T<ROBFragment, PointerType>::iterator
&
ROBData_T<ROBFragment, PointerType>::iterator::operator=
(
const
typename
ROBData_T<ROBFragment, PointerType>::iterator
& other) {
199
m_it
= other.m_it;
200
return
*
this
;
201
}
202
203
template
<
class
ROBFragment,
typename
Po
int
erType>
204
uint32_t
ROBData_T<ROBFragment, PointerType>::iterator::operator*
() {
205
return
*
m_it
;
206
}
207
208
template
<
class
ROBFragment,
typename
Po
int
erType>
209
typename
ROBData_T<ROBFragment, PointerType>::iterator
&
ROBData_T<ROBFragment, PointerType>::iterator::operator+=
(
const
unsigned
int
& pos) {
210
m_it
+= pos;
211
return
*
this
;
212
}
213
214
template
<
class
ROBFragment,
typename
Po
int
erType>
215
typename
ROBData_T<ROBFragment, PointerType>::iterator
&
ROBData_T<ROBFragment, PointerType>::iterator::operator++
() {
216
++
m_it
;
217
return
*
this
;
218
}
219
220
template
<
class
ROBFragment,
typename
Po
int
erType>
221
bool
ROBData_T<ROBFragment, PointerType>::iterator::operator!=
(
const
typename
ROBData_T<ROBFragment, PointerType>::iterator
& other)
const
{
222
return
m_it
!= other.m_it;
223
}
224
225
using
ROBData
=
ROBData_T<OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment, OFFLINE_FRAGMENTS_NAMESPACE::PointerType>
;
226
227
#endif
//BYTESTREAMDATA_ROBDATA_H
228
229
#endif
ROBFragment
eformat::ROBFragment< PointerType > ROBFragment
Definition
RawEvent.h:27
PointerType
const DataType * PointerType
Definition
RawEvent.h:25
ROBData
ROBData_T< OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment, OFFLINE_FRAGMENTS_NAMESPACE::PointerType > ROBData
Definition
ROBData.h:225
RawEvent.h
ROBData_T::iterator
This class defines how to iterate over the ROBData_T, in different formats.
Definition
ROBData.h:88
ROBData_T::iterator::operator*
uint32_t operator*()
Dereferencing.
Definition
ROBData.h:204
ROBData_T::iterator::operator++
iterator & operator++()
Increment.
Definition
ROBData.h:215
ROBData_T::iterator::iterator
iterator(const iterator &other)
Copy Constructor.
ROBData_T::iterator::m_it
PointerType m_it
iterator
Definition
ROBData.h:126
ROBData_T::iterator::operator!=
bool operator!=(const iterator &other) const
Is not equal.
Definition
ROBData.h:221
ROBData_T::iterator::iterator
iterator(const PointerType &it)
The sole constructor was made private.
Definition
ROBData.h:189
ROBData_T::iterator::operator+=
iterator & operator+=(const unsigned int &pos)
winding.
Definition
ROBData.h:209
ROBData_T::iterator::operator=
iterator & operator=(const iterator &other)
Assignment Operator.
Definition
ROBData.h:198
ROBData_T
template data class to wrap ROB fragment for accessing ROD data
Definition
ROBData.h:46
ROBData_T< OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment, OFFLINE_FRAGMENTS_NAMESPACE::PointerType >::m_rob
const ROBFragment * m_rob
Definition
ROBData.h:130
ROBData_T::sub_detector
eformat::SubDetector sub_detector() const
Return the current subdetector type.
Definition
ROBData.h:166
ROBData_T::ROBData_T
ROBData_T()
Default Constructor.
Definition
ROBData.h:140
ROBData_T::no_of_elements
uint32_t no_of_elements() const
Return the number of 32-bit words inside the ROD.
Definition
ROBData.h:179
ROBData_T::end
iterator end() const
Instantiates an iterator over 32-bit integers to the last+1 element.
Definition
ROBData.h:161
ROBData_T::ROBData_T
ROBData_T(const ROBFragment *rob)
Builds a "high-level" ROB Data object.
Definition
ROBData.h:135
ROBData_T::module_identifier
uint16_t module_identifier() const
Return the current module identifier.
Definition
ROBData.h:172
ROBData_T< OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment, OFFLINE_FRAGMENTS_NAMESPACE::PointerType >::m_data
PointerType m_data
Definition
ROBData.h:131
ROBData_T::ROBData_T
ROBData_T(const ROBData_T &other)
Copy Constructor.
Definition
ROBData.h:144
ROBData_T::getROBFragment
const ROBFragment * getROBFragment() const
Return the ROBFragment.
Definition
ROBData.h:184
ROBData_T::begin
iterator begin() const
Instantiates an iterator over 32-bit integers to the first element.
Definition
ROBData.h:156
ROBData_T::operator=
ROBData_T & operator=(const ROBData_T &other)
Assignment Operator.
Definition
ROBData.h:149
Generated on
for ATLAS Offline Software by
1.17.0