ATLAS Offline Software
CondMultChanCollImpl.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3 */
4 
15 #ifndef DBDATAOBJECTS_CONDMULTCHANCOLLIMPL_H
16 # define DBDATAOBJECTS_CONDMULTCHANCOLLIMPL_H
17 
18 //<<<<<< INCLUDES >>>>>>
19 
22 #include "AthenaKernel/IOVRange.h"
23 #include <vector>
24 
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;
47  typedef ChanVec::size_type chan_size_type;
48  typedef IOVVec::const_iterator iov_const_iterator;
50  typedef IOVVec::size_type iov_size_type;
51  typedef TokenVec::const_iterator token_const_iterator;
53  typedef TokenVec::size_type token_size_type;
54 
57 
59  virtual ~CondMultChanCollImpl();
60 
64 
66  chan_size_type chan_size() const;
67 
70  iov_const_iterator iov_end () const;
71 
73  iov_size_type iov_size() const;
74 
76  IOVRange minRange() const;
77 
79  bool hasUniqueIOV() const;
80 
84 
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 
103 
105  void resetChannelNumbers();
106 
108  void resetTokens();
109 
110 private:
111 
112 
120 };
121 
122 //<<<<<< INLINE PUBLIC FUNCTIONS >>>>>>
123 //<<<<<< INLINE MEMBER FUNCTIONS >>>>>>
124 
125 
126 inline
128  :
129  m_attrListColl(0),
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
140 {}
141 
142 
144 inline
147 {
148  return (m_channels.begin());
149 }
150 
151 inline
154 {
155  return (m_channels.end());
156 }
157 
159 inline
162 {
163  return (m_channels.size());
164 }
165 
166 
168 inline
171 {
172  return (m_iovs.begin());
173 }
174 
175 inline
178 {
179  return (m_iovs.end());
180 }
181 
183 inline
186 {
187  return (m_iovs.size());
188 }
189 
191 inline
192 IOVRange
194 {
195  return (m_minRange);
196 }
197 
199 inline
200 bool
202 {
203  return (m_hasUniqueIOV);
204 }
205 
207 inline
210 {
211  return m_tokens.begin();
212 }
213 
214 inline
217 {
218  return m_tokens.end();
219 }
220 
222 inline
225 {
226  return m_tokens.size();
227 }
228 
230 inline
231 void
233 {
234  m_channels.push_back(chanNum);
235 }
236 
238 inline
239 void
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];
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()) {
265  }
266  m_checkRunEventTime = false;
267  }
268 
269  // Accumulate minRange
271  if (m_minRange.start() < range.start()) start = range.start();
273  if (range.stop() < m_minRange.stop()) stop = range.stop();
275  if (m_hasUniqueIOV && range != m_minRange)m_hasUniqueIOV = false;
276 }
277 
280 inline
281 void
283 {
284  if (stop < m_minRange.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
301 {
302  m_attrListColl = coll;
303 }
304 
306 inline
307 void
309 {
310  m_channels.clear();
311 }
312 
314 inline
315 void
317 {
318  m_tokens.clear();
319 }
320 
321 
322 #endif // DBDATAOBJECTS_CONDMULTCHANCOLLIMPL_H
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
CondMultChanCollImpl::chan_const_iterator
ChanVec::const_iterator chan_const_iterator
Definition: CondMultChanCollImpl.h:45
CondMultChanCollImpl::chan_iterator
ChanVec::iterator chan_iterator
Definition: CondMultChanCollImpl.h:46
CondMultChanCollImpl::m_tokens
TokenVec m_tokens
Definition: CondMultChanCollImpl.h:116
IOVRange
Validity Range object. Holds two IOVTimes (start and stop)
Definition: IOVRange.h:30
CondAttrListCollection.h
This file defines the class for a collection of AttributeLists where each one is associated with a ch...
CondMultChanCollImpl::iov_iterator
IOVVec::iterator iov_iterator
Definition: CondMultChanCollImpl.h:49
IOVRange.h
Validity Range object. Holds two IOVTime instances (start and stop)
mergePhysValFiles.start
start
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:14
python.CaloCondTools.MINRUN
int MINRUN
Definition: CaloCondTools.py:23
IOVRange::start
const IOVTime & start() const
Definition: IOVRange.h:38
CondMultChanCollImpl::m_checkRunEventTime
bool m_checkRunEventTime
Definition: CondMultChanCollImpl.h:119
CondMultChanCollImpl::~CondMultChanCollImpl
virtual ~CondMultChanCollImpl()
Default destructor.
Definition: CondMultChanCollImpl.h:139
PixelModuleFeMask_create_db.stop
int stop
Definition: PixelModuleFeMask_create_db.py:76
CondMultChanCollImpl::token_const_iterator
TokenVec::const_iterator token_const_iterator
Definition: CondMultChanCollImpl.h:51
CondAttrListCollection
This class is a collection of AttributeLists where each one is associated with a channel number....
Definition: CondAttrListCollection.h:52
CondMultChanCollImpl::token_size_type
TokenVec::size_type token_size_type
Definition: CondMultChanCollImpl.h:53
CondMultChanCollImpl::resetChannelNumbers
void resetChannelNumbers()
Reset channel numbers - needed to allow sorting.
Definition: CondMultChanCollImpl.h:308
CondMultChanCollImpl::m_minRange
IOVRange m_minRange
Definition: CondMultChanCollImpl.h:117
CondMultChanCollImpl::setAttrListColl
void setAttrListColl(CondAttrListCollection *coll)
Set pointer to the CondAttrListCollection.
Definition: CondMultChanCollImpl.h:300
IOVRange::stop
const IOVTime & stop() const
Definition: IOVRange.h:39
CondMultChanCollImpl::m_iovs
IOVVec m_iovs
Definition: CondMultChanCollImpl.h:115
IOVTime
Basic time unit for IOVSvc. Hold time as a combination of run and event numbers.
Definition: IOVTime.h:33
checkCoolLatestUpdate.chanNum
chanNum
Definition: checkCoolLatestUpdate.py:27
ReadCellNoiseFromCool.chan
chan
Definition: ReadCellNoiseFromCool.py:52
CondMultChanCollImpl::chan_size_type
ChanVec::size_type chan_size_type
Definition: CondMultChanCollImpl.h:47
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::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_size
chan_size_type chan_size() const
number of channels
Definition: CondMultChanCollImpl.h:161
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:195
IOVTime::MAXTIMESTAMP
static constexpr uint64_t MAXTIMESTAMP
Definition: IOVTime.h:58
CondMultChanCollImpl::token_iterator
TokenVec::iterator token_iterator
Definition: CondMultChanCollImpl.h:52
CondMultChanCollImpl::m_attrListColl
CondAttrListCollection * m_attrListColl
Definition: CondMultChanCollImpl.h:113
CondMultChanCollImpl::TokenVec
std::vector< std::string > TokenVec
Definition: CondMultChanCollImpl.h:44
CondMultChanCollImpl::CondMultChanCollImpl
CondMultChanCollImpl()
Default constructor.
Definition: CondMultChanCollImpl.h:127
CondMultChanCollImpl::chan_end
chan_const_iterator chan_end() const
Definition: CondMultChanCollImpl.h:153
CondMultChanCollImpl::token_begin
token_const_iterator token_begin() const
Access to tokens via iterators.
Definition: CondMultChanCollImpl.h:209
CondMultChanCollImpl::m_channels
ChanVec m_channels
Definition: CondMultChanCollImpl.h:114
CondMultChanCollImpl
A CondMultChanCollImpl defines the non-template part of a CondMultChanCollection. It holds the vector...
Definition: CondMultChanCollImpl.h:38
CondMultChanCollImpl::token_end
token_const_iterator token_end() const
Definition: CondMultChanCollImpl.h:216
CondMultChanCollImpl::resetTokens
void resetTokens()
Reset tokens - needed to multiple I/O of the same object.
Definition: CondMultChanCollImpl.h:316
CondMultChanCollImpl::ChanNum
unsigned int ChanNum
Definition: CondMultChanCollImpl.h:41
CondMultChanCollImpl::hasUniqueIOV
bool hasUniqueIOV() const
Check whether there is a unique IOV for all channels.
Definition: CondMultChanCollImpl.h:201
python.CaloCondTools.MAXRUN
MAXRUN
Definition: CaloCondTools.py:25
CondMultChanCollImpl::add
void add(ChanNum chanNum)
Adding in channel numbers.
Definition: CondMultChanCollImpl.h:232
CondMultChanCollImpl::iov_size_type
IOVVec::size_type iov_size_type
Definition: CondMultChanCollImpl.h:50
DataVector.h
An STL vector of pointers that by default owns its pointed-to elements.
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
CondMultChanCollImpl::IOVVec
std::vector< IOVRange > IOVVec
Definition: CondMultChanCollImpl.h:43
CondMultChanCollImpl::m_hasUniqueIOV
bool m_hasUniqueIOV
Definition: CondMultChanCollImpl.h:118
CondMultChanCollImpl::iov_end
iov_const_iterator iov_end() const
Definition: CondMultChanCollImpl.h:177
IOVTime::MINTIMESTAMP
static constexpr uint64_t MINTIMESTAMP
Definition: IOVTime.h:56
CondMultChanCollImpl::iov_begin
iov_const_iterator iov_begin() const
Access to IOVs via iterators.
Definition: CondMultChanCollImpl.h:170
CondMultChanCollImpl::iov_size
iov_size_type iov_size() const
number of IOVs
Definition: CondMultChanCollImpl.h:185
CondAttrListCollection::add
bool add(ChanNum chanNum, const AttributeList &attributeList)
Adding in chan/attrList pairs.
Definition: CondAttrListCollection.h:452
CondMultChanCollImpl::minRange
IOVRange minRange() const
Current minimal IOVRange.
Definition: CondMultChanCollImpl.h:193