ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Database
AthenaPOOL
AthenaPoolUtilities
AthenaPoolUtilities
CondMultChanCollImpl.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3
*/
4
14
15
#ifndef DBDATAOBJECTS_CONDMULTCHANCOLLIMPL_H
16
# define DBDATAOBJECTS_CONDMULTCHANCOLLIMPL_H
17
18
//<<<<<< INCLUDES >>>>>>
19
20
#include "
AthenaPoolUtilities/CondAttrListCollection.h
"
21
#include "
AthContainers/DataVector.h
"
22
#include "
AthenaKernel/IOVRange.h
"
23
#include <vector>
24
36
37
class
CondMultChanCollImpl
38
{
39
public
:
40
41
typedef
unsigned
int
ChanNum
;
42
typedef
std::vector<ChanNum>
ChanVec
;
43
typedef
std::vector<IOVRange>
IOVVec
;
44
typedef
std::vector<std::string>
TokenVec
;
45
typedef
ChanVec::const_iterator
chan_const_iterator
;
46
typedef
ChanVec::iterator
chan_iterator
;
47
typedef
ChanVec::size_type
chan_size_type
;
48
typedef
IOVVec::const_iterator
iov_const_iterator
;
49
typedef
IOVVec::iterator
iov_iterator
;
50
typedef
IOVVec::size_type
iov_size_type
;
51
typedef
TokenVec::const_iterator
token_const_iterator
;
52
typedef
TokenVec::iterator
token_iterator
;
53
typedef
TokenVec::size_type
token_size_type
;
54
56
CondMultChanCollImpl
();
57
59
virtual
~CondMultChanCollImpl
();
60
62
chan_const_iterator
chan_begin
()
const
;
63
chan_const_iterator
chan_end
()
const
;
64
66
chan_size_type
chan_size
()
const
;
67
69
iov_const_iterator
iov_begin
()
const
;
70
iov_const_iterator
iov_end
()
const
;
71
73
iov_size_type
iov_size
()
const
;
74
76
const
IOVRange
&
minRange
()
const
;
77
79
bool
hasUniqueIOV
()
const
;
80
82
token_const_iterator
token_begin
()
const
;
83
token_const_iterator
token_end
()
const
;
84
86
token_size_type
token_size
()
const
;
87
89
void
add
(
ChanNum
chanNum);
90
92
void
add
(
const
IOVRange
& range);
93
96
void
addNewStop
(
const
IOVTime
& stop);
97
99
void
add
(
const
std::string& token);
100
102
void
setAttrListColl
(
CondAttrListCollection
* coll);
103
105
void
resetChannelNumbers
();
106
108
void
resetTokens
();
109
110
private
:
111
112
113
CondAttrListCollection
*
m_attrListColl
;
114
ChanVec
m_channels
;
115
IOVVec
m_iovs
;
116
TokenVec
m_tokens
;
117
IOVRange
m_minRange
;
118
bool
m_hasUniqueIOV
;
119
bool
m_checkRunEventTime
;
120
};
121
122
//<<<<<< INLINE PUBLIC FUNCTIONS >>>>>>
123
//<<<<<< INLINE MEMBER FUNCTIONS >>>>>>
124
125
126
inline
127
CondMultChanCollImpl::CondMultChanCollImpl
()
128
:
129
m_attrListColl
(nullptr),
130
// Assume run/event for minRange
131
m_minRange
(
IOVRange
(
IOVTime
(
IOVTime
::MINRUN,
IOVTime
::MINEVENT),
132
IOVTime
(
IOVTime
::MAXRUN,
IOVTime
::MAXEVENT))),
133
m_hasUniqueIOV
(true),
134
m_checkRunEventTime
(true)
135
{}
136
138
inline
139
CondMultChanCollImpl::~CondMultChanCollImpl
()
140
{}
141
142
144
inline
145
CondMultChanCollImpl::chan_const_iterator
146
CondMultChanCollImpl::chan_begin
()
const
147
{
148
return
(
m_channels
.begin());
149
}
150
151
inline
152
CondMultChanCollImpl::chan_const_iterator
153
CondMultChanCollImpl::chan_end
()
const
154
{
155
return
(
m_channels
.end());
156
}
157
159
inline
160
CondMultChanCollImpl::chan_size_type
161
CondMultChanCollImpl::chan_size
()
const
162
{
163
return
(
m_channels
.size());
164
}
165
166
168
inline
169
CondMultChanCollImpl::iov_const_iterator
170
CondMultChanCollImpl::iov_begin
()
const
171
{
172
return
(
m_iovs
.begin());
173
}
174
175
inline
176
CondMultChanCollImpl::iov_const_iterator
177
CondMultChanCollImpl::iov_end
()
const
178
{
179
return
(
m_iovs
.end());
180
}
181
183
inline
184
CondMultChanCollImpl::iov_size_type
185
CondMultChanCollImpl::iov_size
()
const
186
{
187
return
(
m_iovs
.size());
188
}
189
191
inline
192
const
IOVRange
&
193
CondMultChanCollImpl::minRange
()
const
194
{
195
return
(
m_minRange
);
196
}
197
199
inline
200
bool
201
CondMultChanCollImpl::hasUniqueIOV
()
const
202
{
203
return
(
m_hasUniqueIOV
);
204
}
205
207
inline
208
CondMultChanCollImpl::token_const_iterator
209
CondMultChanCollImpl::token_begin
()
const
210
{
211
return
m_tokens
.begin();
212
}
213
214
inline
215
CondMultChanCollImpl::token_const_iterator
216
CondMultChanCollImpl::token_end
()
const
217
{
218
return
m_tokens
.end();
219
}
220
222
inline
223
CondMultChanCollImpl::token_size_type
224
CondMultChanCollImpl::token_size
()
const
225
{
226
return
m_tokens
.size();
227
}
228
230
inline
231
void
232
CondMultChanCollImpl::add
(
ChanNum
chanNum)
233
{
234
m_channels
.push_back(chanNum);
235
}
236
238
inline
239
void
240
CondMultChanCollImpl::add
(
const
IOVRange
& range)
241
{
242
// Check if we're adding too many iovs - may be a 2nd pass
243
if
(
m_iovs
.size() >=
m_channels
.size()) {
244
// Should throw an exception here because we are trying to
245
// add more iovs than channels. Now we just return
246
return
;
247
}
248
249
// Save range
250
m_iovs
.push_back(range);
251
252
// If CondAttrListCollection exists, also add to it
253
if
(
m_attrListColl
) {
254
// Get channel number
255
ChanNum
chan =
m_channels
[
m_iovs
.size()-1];
256
m_attrListColl
->add(chan, range);
257
}
258
259
if
(
m_checkRunEventTime
) {
260
// On the first push_back we must check if we're using a time
261
// stamp and if so, reset the minRange
262
if
(range.start().isTimestamp()) {
263
m_minRange
=
IOVRange
(
IOVTime
(
IOVTime::MINTIMESTAMP
),
264
IOVTime
(
IOVTime::MAXTIMESTAMP
));
265
}
266
m_checkRunEventTime
=
false
;
267
}
268
269
// Accumulate minRange
270
IOVTime
start =
m_minRange
.start();
271
if
(
m_minRange
.start() < range.start()) start = range.start();
272
IOVTime
stop =
m_minRange
.stop();
273
if
(range.stop() <
m_minRange
.stop()) stop = range.stop();
274
m_minRange
=
IOVRange
(start, stop);
275
if
(
m_hasUniqueIOV
&& range !=
m_minRange
)
m_hasUniqueIOV
=
false
;
276
}
277
280
inline
281
void
282
CondMultChanCollImpl::addNewStop
(
const
IOVTime
& stop)
283
{
284
if
(stop <
m_minRange
.stop()) {
285
m_minRange
=
IOVRange
(
m_minRange
.start(), stop);
286
}
287
}
288
290
inline
291
void
292
CondMultChanCollImpl::add
(
const
std::string& token)
293
{
294
m_tokens
.push_back(token);
295
}
296
298
inline
299
void
300
CondMultChanCollImpl::setAttrListColl
(
CondAttrListCollection
* coll)
301
{
302
m_attrListColl
= coll;
303
}
304
306
inline
307
void
308
CondMultChanCollImpl::resetChannelNumbers
()
309
{
310
m_channels
.clear();
311
}
312
314
inline
315
void
316
CondMultChanCollImpl::resetTokens
()
317
{
318
m_tokens
.clear();
319
}
320
321
322
#endif
// DBDATAOBJECTS_CONDMULTCHANCOLLIMPL_H
CondAttrListCollection.h
This file defines the class for a collection of AttributeLists where each one is associated with a ch...
DataVector.h
An STL vector of pointers that by default owns its pointed-to elements.
IOVRange.h
Validity Range object.
CondAttrListCollection
This class is a collection of AttributeLists where each one is associated with a channel number.
Definition
CondAttrListCollection.h:51
CondMultChanCollImpl::m_iovs
IOVVec m_iovs
Definition
CondMultChanCollImpl.h:115
CondMultChanCollImpl::token_const_iterator
TokenVec::const_iterator token_const_iterator
Definition
CondMultChanCollImpl.h:51
CondMultChanCollImpl::token_size
token_size_type token_size() const
number of tokens
Definition
CondMultChanCollImpl.h:224
CondMultChanCollImpl::ChanVec
std::vector< ChanNum > ChanVec
Definition
CondMultChanCollImpl.h:42
CondMultChanCollImpl::ChanNum
unsigned int ChanNum
Definition
CondMultChanCollImpl.h:41
CondMultChanCollImpl::m_minRange
IOVRange m_minRange
Definition
CondMultChanCollImpl.h:117
CondMultChanCollImpl::add
void add(ChanNum chanNum)
Adding in channel numbers.
Definition
CondMultChanCollImpl.h:232
CondMultChanCollImpl::iov_iterator
IOVVec::iterator iov_iterator
Definition
CondMultChanCollImpl.h:49
CondMultChanCollImpl::iov_size_type
IOVVec::size_type iov_size_type
Definition
CondMultChanCollImpl.h:50
CondMultChanCollImpl::hasUniqueIOV
bool hasUniqueIOV() const
Check whether there is a unique IOV for all channels.
Definition
CondMultChanCollImpl.h:201
CondMultChanCollImpl::IOVVec
std::vector< IOVRange > IOVVec
Definition
CondMultChanCollImpl.h:43
CondMultChanCollImpl::iov_const_iterator
IOVVec::const_iterator iov_const_iterator
Definition
CondMultChanCollImpl.h:48
CondMultChanCollImpl::chan_begin
chan_const_iterator chan_begin() const
Access to Channel numbers via iterators.
Definition
CondMultChanCollImpl.h:146
CondMultChanCollImpl::chan_iterator
ChanVec::iterator chan_iterator
Definition
CondMultChanCollImpl.h:46
CondMultChanCollImpl::chan_const_iterator
ChanVec::const_iterator chan_const_iterator
Definition
CondMultChanCollImpl.h:45
CondMultChanCollImpl::m_attrListColl
CondAttrListCollection * m_attrListColl
Definition
CondMultChanCollImpl.h:113
CondMultChanCollImpl::m_channels
ChanVec m_channels
Definition
CondMultChanCollImpl.h:114
CondMultChanCollImpl::chan_size
chan_size_type chan_size() const
number of channels
Definition
CondMultChanCollImpl.h:161
CondMultChanCollImpl::m_checkRunEventTime
bool m_checkRunEventTime
Definition
CondMultChanCollImpl.h:119
CondMultChanCollImpl::chan_size_type
ChanVec::size_type chan_size_type
Definition
CondMultChanCollImpl.h:47
CondMultChanCollImpl::token_end
token_const_iterator token_end() const
Definition
CondMultChanCollImpl.h:216
CondMultChanCollImpl::token_iterator
TokenVec::iterator token_iterator
Definition
CondMultChanCollImpl.h:52
CondMultChanCollImpl::setAttrListColl
void setAttrListColl(CondAttrListCollection *coll)
Set pointer to the CondAttrListCollection.
Definition
CondMultChanCollImpl.h:300
CondMultChanCollImpl::token_begin
token_const_iterator token_begin() const
Access to tokens via iterators.
Definition
CondMultChanCollImpl.h:209
CondMultChanCollImpl::m_hasUniqueIOV
bool m_hasUniqueIOV
Definition
CondMultChanCollImpl.h:118
CondMultChanCollImpl::TokenVec
std::vector< std::string > TokenVec
Definition
CondMultChanCollImpl.h:44
CondMultChanCollImpl::m_tokens
TokenVec m_tokens
Definition
CondMultChanCollImpl.h:116
CondMultChanCollImpl::minRange
const IOVRange & minRange() const
Current minimal IOVRange.
Definition
CondMultChanCollImpl.h:193
CondMultChanCollImpl::CondMultChanCollImpl
CondMultChanCollImpl()
Default constructor.
Definition
CondMultChanCollImpl.h:127
CondMultChanCollImpl::iov_size
iov_size_type iov_size() const
number of IOVs
Definition
CondMultChanCollImpl.h:185
CondMultChanCollImpl::resetChannelNumbers
void resetChannelNumbers()
Reset channel numbers - needed to allow sorting.
Definition
CondMultChanCollImpl.h:308
CondMultChanCollImpl::~CondMultChanCollImpl
virtual ~CondMultChanCollImpl()
Default destructor.
Definition
CondMultChanCollImpl.h:139
CondMultChanCollImpl::iov_begin
iov_const_iterator iov_begin() const
Access to IOVs via iterators.
Definition
CondMultChanCollImpl.h:170
CondMultChanCollImpl::iov_end
iov_const_iterator iov_end() const
Definition
CondMultChanCollImpl.h:177
CondMultChanCollImpl::chan_end
chan_const_iterator chan_end() const
Definition
CondMultChanCollImpl.h:153
CondMultChanCollImpl::resetTokens
void resetTokens()
Reset tokens - needed to multiple I/O of the same object.
Definition
CondMultChanCollImpl.h:316
CondMultChanCollImpl::token_size_type
TokenVec::size_type token_size_type
Definition
CondMultChanCollImpl.h:53
CondMultChanCollImpl::addNewStop
void addNewStop(const IOVTime &stop)
Add new stop time to minRange - make sure that stop is <= to new stop.
Definition
CondMultChanCollImpl.h:282
IOVRange
Validity Range object.
Definition
IOVRange.h:30
IOVTime
Basic time unit for IOVSvc.
Definition
IOVTime.h:33
IOVTime::MAXTIMESTAMP
static constexpr uint64_t MAXTIMESTAMP
Definition
IOVTime.h:58
IOVTime::MINTIMESTAMP
static constexpr uint64_t MINTIMESTAMP
Definition
IOVTime.h:56
Generated on
for ATLAS Offline Software by
1.17.0