| The Gaudi Framework v28r2-patches (bc4ad17a)

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

EventSelector.cpp
Go to the documentation of this file.
1 // Include files
2 #include "GaudiKernel/SmartIF.h"
3 #include "GaudiKernel/Incident.h"
4 #include "GaudiKernel/MsgStream.h"
5 #include "GaudiKernel/IIncidentSvc.h"
6 #include "GaudiKernel/ISvcLocator.h"
7 #include "GaudiKernel/ISvcManager.h"
8 #include "GaudiKernel/IToolSvc.h"
9 #include "GaudiKernel/IDataStreamTool.h"
10 #include "GaudiKernel/IAddressCreator.h"
11 #include "GaudiKernel/PropertyHolder.h"
12 #include "GaudiKernel/EventSelectorDataStream.h"
13
14 #include "EventSelector.h"
15 #include "EventIterator.h"
16 #include <climits>
17
18 DECLARE_COMPONENT(EventSelector)
19
20 StatusCode
21 EventSelector::resetCriteria(const std::string& /* criteria */,
22 Context& /* context */) const
23 {
24 return StatusCode::FAILURE;
25 }
26
27 // Progress report
28 void EventSelector::printEvtInfo(const EvtSelectorContext* iter) const {
29 if ( iter ) {
30 long count = iter->numEvent();
31 // Print an message every m_evtPrintFrequency events
32 if ( 0 == iter->context() ) {
33 info() << "End of event input reached." << endmsg;
34 }
35 else if( iter->numStreamEvent() == -1 ) {
36 // Intial value for this stream
37 }
38 else if( m_evtPrintFrequency != -1 && (count % m_evtPrintFrequency == 0)) {
39 always() << "Reading Event record " << count+1
40 << ". Record number within stream " << iter->ID()+1
41 << ": " << iter->numStreamEvent()+1 << endmsg;
42 }
43 }
44 else {
45 info() << "End of event input reached." << endmsg;
46 }
47 }
48
49 // IEvtSelector::first()
50 StatusCode
51 EventSelector::firstOfNextStream(bool shutDown, EvtSelectorContext& iter) const {
52 StatusCode status = StatusCode::SUCCESS;
53 IDataStreamTool::size_type iter_id = (m_reconfigure) ? 0 : iter.ID()+1;
54 if ( m_reconfigure ) const_cast<EventSelector*>(this)->m_reconfigure = false;
55 if ( shutDown ) {
56 if ( iter.ID() >= 0 && iter.ID() < (long)m_streamtool->size() ) {
57 const EventSelectorDataStream* s = m_streamtool->getStream(iter.ID());
58 if ( s->isInitialized() ) {
59 EventSelector* thisPtr = const_cast<EventSelector*>(this);
60 if ( s->selector() && iter.context() ) {
61 Context* ctxt = iter.context();
62 s->selector()->releaseContext(ctxt).ignore();
63 iter.set(0,0);
64 }
65 status = thisPtr->m_streamtool->finalizeStream(const_cast<EventSelectorDataStream*>(s));
66 iter.set(0,0);
67 }
68 }
69 }
70
71 const EventSelectorDataStream* s ;
72 status = m_streamtool->getNextStream( s , iter_id );
73
74 if ( status.isSuccess() ) {
75
76 if (s) {
77 if ( !s->isInitialized() ) {
78 EventSelector* thisPtr = const_cast<EventSelector*>(this);
79 status = thisPtr->m_streamtool->initializeStream(const_cast<EventSelectorDataStream*>(s));
80 }
81
82 if ( status.isSuccess() ) {
83 const IEvtSelector* sel = s->selector();
84 if ( sel ) {
85 Context* ctxt = nullptr;
86 status = sel->createContext(ctxt);
87 if ( status.isSuccess() ) {
88 status = sel->resetCriteria(s->criteria(), *ctxt);
89 if ( status.isSuccess() ) {
90 iter.set(this, iter_id, ctxt, 0);
91 info() << *s << endmsg;
92 m_incidentSvc->fireIncident(Incident(s->dbName(),IncidentType::BeginInputFile));
93 return StatusCode::SUCCESS;
94 }
95 }
96 }
97 }
98 m_incidentSvc->fireIncident(Incident(s->dbName(),IncidentType::FailInputFile));
99 }
100 }
101
102 iter.set(this, -1, 0, 0);
103 status.setChecked();
104 //m_incidentSvc->fireIncident(Incident(s->dbName(),IncidentType::FailInputFile));
105 return StatusCode::FAILURE;
106 }
107
108 // IEvtSelector::first()
109 StatusCode
110 EventSelector::lastOfPreviousStream(bool shutDown, EvtSelectorContext& iter) const {
111 StatusCode status = StatusCode::SUCCESS;
112 if ( shutDown ) {
113 if ( iter.ID() >= 0 && iter.ID() < (long)m_streamtool->size() ) {
114 const EventSelectorDataStream* s = m_streamtool->getStream(iter.ID());
115 if ( s->isInitialized() ) {
116 EventSelector* thisPtr = const_cast<EventSelector*>(this);
117 if ( s->selector() && iter.context() ) {
118 Context* ctxt = iter.context();
119 s->selector()->releaseContext(ctxt);
120 iter.set(0,0);
121 }
122 status = thisPtr->m_streamtool->finalizeStream(const_cast<EventSelectorDataStream*>(s));
123 iter.set(0,0);
124 }
125 }
126 }
127
128 IDataStreamTool::size_type iter_id = iter.ID()-1;
129 const EventSelectorDataStream* s = nullptr;
130 status = m_streamtool->getPreviousStream( s , iter_id );
131
132 if ( status.isSuccess() ) {
133
134 if ( !s->isInitialized() ) {
135 EventSelector* thisPtr = const_cast<EventSelector*>(this);
136 status = thisPtr->m_streamtool->initializeStream(const_cast<EventSelectorDataStream*>(s));
137 }
138 if ( status.isSuccess() ) {
139 const IEvtSelector* sel = s->selector();
140 if ( sel ) {
141 Context* ctxt = nullptr;
142 status = sel->createContext(ctxt);
143 if ( status.isSuccess() ) {
144 status = sel->resetCriteria(s->criteria(), *ctxt);
145 if ( status.isSuccess() ) {
146 iter.set(this, iter_id, ctxt, 0);
147 info() << *s << endmsg;
148 return StatusCode::SUCCESS;
149 }
150 }
151 }
152 }
153 }
154
155 iter.set(this, -1, 0, 0);
156 return StatusCode::FAILURE;
157 }
158
160 StatusCode EventSelector::createContext(Context*& refpCtxt) const
161 {
162 // Max event is zero. Return begin = end
163 refpCtxt = nullptr;
164 if ( m_firstEvent < 0 ) {
165 error() << "First Event = " << m_firstEvent << " not valid" << endmsg;
166 error() << "It should be > 0 " << endmsg;
167 return StatusCode::FAILURE; // if failure => iterators = end();
168 }
169 EvtSelectorContext* ctxt = new EvtSelectorContext(this);
170 ctxt->set(0, -1, 0, 0);
171 firstOfNextStream(true, *ctxt).ignore();
172 refpCtxt = ctxt;
173 long nskip = m_firstEvent;
174 while( --nskip > 0 ) {
175 StatusCode sc = next(*refpCtxt);
176 if ( sc.isFailure() ) {
177 error() << " createContext() failed to start with event number "
178 << m_firstEvent << endmsg;
179 releaseContext(refpCtxt);
180 refpCtxt = nullptr;
181 return StatusCode::FAILURE;
182 }
183 }
184 return StatusCode::SUCCESS;
185 }
186
188 StatusCode EventSelector::next(Context& refCtxt) const {
189 return next(refCtxt, 1);
190 }
191
193 StatusCode EventSelector::next(Context& refCtxt, int /* jump */ ) const {
194 EvtSelectorContext *pIt = dynamic_cast<EvtSelectorContext*>(&refCtxt);
195 if ( pIt ) {
196 if ( pIt->ID() != -1 ) {
197 const EventSelectorDataStream* s = m_streamtool->getStream(pIt->ID());
198 Context* it = pIt->context();
199 IEvtSelector* sel = s->selector();
200 if ( it && sel ) { // First exploit the current stream
201 StatusCode sc = sel->next(*it); // This stream is empty: advance to the next stream
202 if ( !sc.isSuccess() ) {
203 m_incidentSvc->fireIncident(Incident(s->dbName(),IncidentType::EndInputFile));
204 sc = firstOfNextStream(true, *pIt);
205 if (sc.isSuccess() ) sc = next(*pIt);
206 }
207 else {
208 pIt->increaseCounters(false);
209 pIt->set(it, 0);
210 printEvtInfo(pIt);
211 }
212 return sc;
213 }
214 else if ( m_reconfigure ) {
215 StatusCode sc = firstOfNextStream(false, *pIt);
216 printEvtInfo(pIt);
217 return sc;
218 }
219 }
220 else if ( m_reconfigure ) {
221 StatusCode sc = firstOfNextStream(false, *pIt);
222 printEvtInfo(pIt);
223 return sc;
224 }
225 pIt->increaseCounters(false);
226 }
227 printEvtInfo(pIt);
228 return StatusCode::FAILURE;
229 }
230
232 StatusCode EventSelector::previous(Context& refCtxt) const {
233 return previous(refCtxt, 1);
234 }
235
237 StatusCode EventSelector::previous(Context& refCtxt, int jump) const {
238 EvtSelectorContext *pIt = dynamic_cast<EvtSelectorContext*>(&refCtxt);
239 if ( pIt && jump > 0 ) {
240 StatusCode sc = StatusCode::SUCCESS;
241 for ( int i = 0; i < jump && sc.isSuccess(); ++i ) {
242 const EventSelectorDataStream* s = m_streamtool->getStream(pIt->ID());
243 Context* it = pIt->context();
244 IEvtSelector* sel = s->selector();
245 if ( it && sel ) { // First exploit the current stream
246 // This stream is empty: advance to the next stream
247 sc = sel->previous(*it); // This stream is empty: advance to the next stream
248 if ( !sc.isSuccess() ) {
249 sc = lastOfPreviousStream(true, *pIt);
250 }
251 else {
252 pIt->increaseCounters(false);
253 pIt->set(it, 0);
254 }
255 printEvtInfo(pIt);
256 if ( !sc.isSuccess() ) {
257 return sc;
258 }
259 }
260 pIt->increaseCounters(false);
261 }
262 return sc;
263 }
264 printEvtInfo(pIt);
265 return StatusCode::FAILURE;
266 }
267
269 StatusCode EventSelector::last(Context& refCtxt) const {
270 EvtSelectorContext *pIt = dynamic_cast<EvtSelectorContext*>(&refCtxt);
271 if ( pIt ) {
272 }
273 return StatusCode::FAILURE;
274 }
275
277 StatusCode EventSelector::rewind(Context& refCtxt) const {
278 EvtSelectorContext *ctxt = dynamic_cast<EvtSelectorContext*>(&refCtxt);
279 if ( ctxt ) {
280 ctxt->set(0, -1, 0, 0);
281 firstOfNextStream(true, *ctxt);
282 long nskip = m_firstEvent;
283 while( --nskip > 0 ) {
284 StatusCode sc = next(*ctxt);
285 if ( sc.isFailure() ) {
286 error() << "rewind() failed to start with event number "
287 << m_firstEvent << endmsg;
288 return StatusCode::FAILURE;
289 }
290 }
291 return StatusCode::SUCCESS;
292 }
293 return StatusCode::FAILURE;
294 }
295
297 StatusCode
298 EventSelector::createAddress(const Context& refCtxt,
299 IOpaqueAddress*& refpAddr) const
300 {
301 const EvtSelectorContext *cpIt = dynamic_cast<const EvtSelectorContext*>(&refCtxt);
302 EvtSelectorContext *pIt = const_cast<EvtSelectorContext*>(cpIt);
303 refpAddr = nullptr;
304 if ( pIt ) {
305 const EventSelectorDataStream* s = m_streamtool->getStream(pIt->ID());
306 Context* it = pIt->context();
307 IEvtSelector* sel = s->selector();
308 if ( it && sel ) {
309 IOpaqueAddress* pAddr = nullptr;
310 StatusCode sc = sel->createAddress(*it, pAddr);
311 if ( sc.isSuccess() ) refpAddr = pAddr;
312 pIt->set(it, pAddr);
313 return sc;
314 }
315 }
316 return StatusCode::FAILURE;
317 }
318
319 // Release existing event iteration context
320 StatusCode EventSelector::releaseContext(Context*& refCtxt) const {
321 const EvtSelectorContext *cpIt = dynamic_cast<const EvtSelectorContext*>(refCtxt);
322 std::unique_ptr<EvtSelectorContext> pIt{ const_cast<EvtSelectorContext*>(cpIt) };
323 if ( pIt && pIt->ID() >= 0 && pIt->ID() < (long)m_streamtool->size() ) {
324 const EventSelectorDataStream* s = m_streamtool->getStream(pIt->ID());
325 Context* it = pIt->context();
326 IEvtSelector* sel = s->selector();
327 if ( it && sel ) {
328 StatusCode sc = sel->releaseContext(it);
329 if ( sc.isSuccess() ) {
330 refCtxt = nullptr;
331 return sc;
332 }
333 }
334 }
335 return StatusCode::SUCCESS;
336 }
337
339 StatusCode EventSelector::initialize() {
340 // Initialize base class
341 StatusCode status = Service::initialize();
342 if ( !status.isSuccess() ) {
343 error() << "Error initializing base class Service!" << endmsg;
344 return status;
345 }
346 // Get the references to the services that are needed by the ApplicationMgr itself
347 m_incidentSvc = serviceLocator()->service("IncidentSvc");
348 if( !m_incidentSvc ) {
349 fatal() << "Error retrieving IncidentSvc." << endmsg;
350 return StatusCode::FAILURE;
351 }
352 if ( m_evtMax != INT_MAX ) {
353 error() << "EvtMax is an obsolete property of the event selector." << endmsg;
354 error() << "Please set \"ApplicationMgr.EvtMax = " << m_evtMax
355 << ";\" to process the requested number of events." << endmsg;
356 return StatusCode::FAILURE;
357 }
358
359 m_toolSvc = serviceLocator()->service("ToolSvc");
360 if ( !m_toolSvc ) {
361 error() << " Could not locate the Tool Service! " << endmsg;
362 return StatusCode::FAILURE;
363 }
364 // make sure we finalize _prior_ to ToolSvc... we are about to get a
365 // a pointer to a tool which gets finalized and released by the ToolSvc
366 // during ToolSvc::finalize, and we don't want dangling pointers...
367 SmartIF<ISvcManager> mgr(serviceLocator());
368 auto prio = mgr->getPriority("ToolSvc");
369 mgr->setPriority(name(),prio+1).ignore();
370
371 status = m_toolSvc->retrieveTool(m_streamManager, m_streamtool, this);
372
373 if( status.isFailure() ) {
374 error() << "Error initializing "
375 << m_streamManager << endmsg;
376 return status;
377 }
378
379 status = m_streamtool->clear();
380 if( status.isFailure() ) {
381 // Message already printed by the tool
382 return status;
383 }
384
385 status = m_streamtool->addStreams(m_streamSpecs);
386
387 m_streamSpecsLast = m_streamSpecs;
388
389 m_streamID = 0;
390
391 return status;
392 }
393
394 // Re-initialize
395 StatusCode EventSelector::reinitialize() {
396 if ( FSMState() != Gaudi::StateMachine::INITIALIZED ) {
397 error() << "Cannot reinitialize: service not in state initialized" << endmsg;
398 return StatusCode::FAILURE;
399 }
400
401 if( m_streamSpecsLast != m_streamSpecs ) {
402 StatusCode status = m_streamtool->clear();
403 if ( status.isFailure() ) return status;
404 m_streamSpecsLast = m_streamSpecs;
405 m_reconfigure = true;
406 return m_streamtool->addStreams(m_streamSpecs);
407 }
408
409 return StatusCode::SUCCESS;
410 }
411
412 //
413 StatusCode EventSelector::finalize() {
414
415 if (msgLevel(MSG::DEBUG)) {
416 debug() << "finalize()" << endmsg;
417 }
418
419 m_incidentSvc = nullptr;
420
421 if (m_streamtool) {
422 if (m_toolSvc) {
423 m_toolSvc->releaseTool(m_streamtool).ignore();
424 } else {
425 // It should not be possible to get here
426 m_streamtool->release();
427 }
428 m_streamtool = nullptr;
429 }
430 m_toolSvc.reset();
431
432 return Service::finalize();
433 }
EventSelector::lastOfPreviousStream
StatusCode lastOfPreviousStream(bool shutDown, EvtSelectorContext &it) const
Retrieve last entry of the previous data stream.
Definition: EventSelector.cpp:110
EventSelector::m_incidentSvc
SmartIF< IIncidentSvc > m_incidentSvc
Reference to the indicent service.
Definition: EventSelector.h:64
EventSelector::createContext
StatusCode createContext(Context *&refpCtxt) const override
Create a new event loop context.
Definition: EventSelector.cpp:160
EventSelectorDataStream::isInitialized
bool isInitialized() const
Check initialization status.
Definition: EventSelectorDataStream.h:105
PropertyHolder.h
Service::initialize
StatusCode initialize() override
Definition: Service.cpp:64
Gaudi::StateMachine::INITIALIZED
Definition: StateMachine.h:15
StatusCode::SUCCESS
Definition: StatusCode.h:30
SmartIF< ISvcManager >
EvtSelectorContext::context
IEvtSelector::Context * context() const
Access "real" iterator.
Definition: EventIterator.h:70
IDataStreamTool::finalizeStream
virtual StatusCode finalizeStream(EventSelectorDataStream *)=0
Service::name
const std::string & name() const override
Retrieve name of the service.
Definition: Service.cpp:289
EventSelector::rewind
StatusCode rewind(Context &refCtxt) const override
Rewind the dataset.
Definition: EventSelector.cpp:277
EventCollectionSelector::resetCriteria
StatusCode resetCriteria(const std::string &cr, Context &c) const override
Will set a new criteria for the selection of the next list of events and will change the state of the...
Definition: EventCollectionSelector.cpp:344
StatusCode::FAILURE
Definition: StatusCode.h:29
Service::finalize
StatusCode finalize() override
Definition: Service.cpp:174
MsgStream.h
CommonMessagingBase::info
MsgStream & info() const
shortcut for the method msgStream(MSG::INFO)
Definition: CommonMessaging.h:123
EventSelector::releaseContext
StatusCode releaseContext(Context *&refCtxt) const override
Release existing event iteration context.
Definition: EventSelector.cpp:320
IEvtSelector
The Event Selector Interface.
Definition: IEvtSelector.h:18
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:74
EventSelector::m_streamtool
IDataStreamTool * m_streamtool
Definition: EventSelector.h:68
EventSelectorDataStream::selector
IEvtSelector * selector() const
Retrieve event selector object.
Definition: EventSelectorDataStream.h:103
MSG::DEBUG
Definition: IMessageSvc.h:18
IOTest.sel
sel
Definition: IOTest.py:84
EventSelector::m_streamID
long int m_streamID
Definition: EventSelector.h:60
EventSelector::printEvtInfo
virtual void printEvtInfo(const EvtSelectorContext *iter) const
Progress report.
Definition: EventSelector.cpp:28
std
STL namespace.
EventSelector::firstOfNextStream
StatusCode firstOfNextStream(bool shutDown, EvtSelectorContext &it) const
Retrieve first entry of the next data stream.
Definition: EventSelector.cpp:51
IEvtSelector::previous
virtual StatusCode previous(Context &c) const =0
Fetch the previous event.
IDataStreamTool.h
IToolSvc.h
StatusCode::isFailure
bool isFailure() const
Test for a status code of FAILURE.
Definition: StatusCode.h:84
ISvcManager.h
IToolSvc::retrieveTool
StatusCode retrieveTool(const std::string &type, T *&tool, const IInterface *parent=nullptr, bool createIf=true)
Retrieve specified tool sub-type with tool dependent part of the name automatically assigned...
Definition: IToolSvc.h:146
DECLARE_COMPONENT
#define DECLARE_COMPONENT(type)
Definition: PluginService.h:36
ISvcManager::getPriority
virtual int getPriority(const std::string &name) const =0
EventSelector::m_streamSpecsLast
StreamSpecs m_streamSpecsLast
Input stream specifiers (last used)
Definition: EventSelector.h:73
Incident.h
IDataStreamTool::addStreams
virtual StatusCode addStreams(const StreamSpecs &)=0
ISvcLocator::service
StatusCode service(const Gaudi::Utils::TypeNameString &name, T *&svc, bool createIf=true)
Templated method to access a service by name.
Definition: ISvcLocator.h:78
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:117
EventSelector::m_evtPrintFrequency
Gaudi::Property< int > m_evtPrintFrequency
Definition: EventSelector.h:83
IIncidentSvc::fireIncident
virtual void fireIncident(const Incident &incident)=0
Fire an Incident.
EventSelector::m_streamManager
Gaudi::Property< std::string > m_streamManager
Definition: EventSelector.h:84
EventSelector::reinitialize
StatusCode reinitialize() override
Service override: Reinitialize service.
Definition: EventSelector.cpp:395
EventSelector::last
StatusCode last(Context &c) const override
Access last item in the iteration.
Definition: EventSelector.cpp:269
IDataStreamTool::clear
virtual StatusCode clear()=0
EvtSelectorContext
Definition of class EventIterator.
Definition: EventIterator.h:32
IIncidentSvc.h
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
SmartIF.h
IDataStreamTool::getStream
virtual EventSelectorDataStream * getStream(size_type)=0
EventSelector::m_evtMax
Gaudi::Property< int > m_evtMax
Definition: EventSelector.h:82
EventSelectorDataStream.h
IEvtSelector::resetCriteria
virtual StatusCode resetCriteria(const std::string &cr, Context &c) const =0
Will set a new criteria for the selection of the next list of events and will change the state of the...
EventSelector::initialize
StatusCode initialize() override
IService implementation: Db event selector override.
Definition: EventSelector.cpp:339
EventSelector::m_streamSpecs
Gaudi::Property< StreamSpecs > m_streamSpecs
Definition: EventSelector.h:80
EventSelector::m_firstEvent
Gaudi::Property< int > m_firstEvent
Definition: EventSelector.h:81
IEvtSelector::releaseContext
virtual StatusCode releaseContext(Context *&) const =0
Release the Context object.
IDataStreamTool::size_type
long size_type
Definition: IDataStreamTool.h:28
EvtSelectorContext::numStreamEvent
long numStreamEvent() const
Access counter within stream.
Definition: EventIterator.h:103
ISvcManager::setPriority
virtual StatusCode setPriority(const std::string &name, int pri)=0
EventSelector::finalize
StatusCode finalize() override
IService implementation: Service finalization.
Definition: EventSelector.cpp:413
IDataStreamTool::getPreviousStream
virtual StatusCode getPreviousStream(const EventSelectorDataStream *&, size_type &)=0
EventSelector::m_toolSvc
SmartIF< IToolSvc > m_toolSvc
Definition: EventSelector.h:66
IInterface::release
virtual unsigned long release()=0
Release Interface instance.
std::unique_ptr
STL class.
IAddressCreator.h
EvtSelectorContext::set
void set(const IEvtSelector *sel, IDataStreamTool::size_type id, IEvtSelector::Context *it, IOpaqueAddress *pA)
Set the address of the iterator.
Definition: EventIterator.h:53
CommonMessagingBase::debug
MsgStream & debug() const
shortcut for the method msgStream(MSG::DEBUG)
Definition: CommonMessaging.h:126
EventSelectorDataStream
Definition of class EventSelectorDataStream.
Definition: EventSelectorDataStream.h:45
EventSelector::createAddress
StatusCode createAddress(const Context &refCtxt, IOpaqueAddress *&refpAddr) const override
Create new Opaque address corresponding to the current record.
Definition: EventSelector.cpp:298
Incident
Base class for all Incidents (computing events).
Definition: Incident.h:17
EventSelector::previous
StatusCode previous(Context &refCtxt) const override
Get previous iteration item from the event loop context.
Definition: EventSelector.cpp:232
EvtSelectorContext::ID
virtual IDataStreamTool::size_type ID() const
Stream identifier.
Definition: EventIterator.h:95
gaudirun.s
string s
Definition: gaudirun.py:245
Service::FSMState
Gaudi::StateMachine::State FSMState() const override
Definition: Service.h:54
IEvtSelector::next
virtual StatusCode next(Context &c) const =0
Fetch the next event or the first event if it will be use soon after the creation of the context...
IToolSvc::releaseTool
virtual StatusCode releaseTool(IAlgTool *tool)=0
Release the tool.
EvtSelectorContext::increaseCounters
IDataStreamTool::size_type increaseCounters(bool reset=false)
Increase counters.
Definition: EventIterator.h:74
IEvtSelector::createContext
virtual StatusCode createContext(Context *&c) const =0
Create and return a context object that will keep track of the state of selection.
EventSelector
Definition of class EventSelector.
Definition: EventSelector.h:53
SmartIF::reset
void reset(TYPE *ptr=nullptr)
Set the internal pointer to the passed one disposing of the old one.
Definition: SmartIF.h:88
IDataStreamTool::size
virtual size_type size()=0
IDataStreamTool::initializeStream
virtual StatusCode initializeStream(EventSelectorDataStream *)=0
IEvtSelector::createAddress
virtual StatusCode createAddress(const Context &c, IOpaqueAddress *&iop) const =0
Create an IOpaqueAddress object from the event fetched.
EventSelectorDataStream::criteria
const std::string & criteria() const
Retrieve stream criteria.
Definition: EventSelectorDataStream.h:95
EventSelector::m_reconfigure
bool m_reconfigure
Reconfigure occurred.
Definition: EventSelector.h:71
IOpaqueAddress
Opaque address interface definition.
Definition: IOpaqueAddress.h:23
CommonMessagingBase::fatal
MsgStream & fatal() const
shortcut for the method msgStream(MSG::FATAL)
Definition: CommonMessaging.h:111
StatusCode::ignore
void ignore() const
Definition: StatusCode.h:106
IDataStreamTool::getNextStream
virtual StatusCode getNextStream(const EventSelectorDataStream *&, size_type &)=0
CommonMessagingBase::msgLevel
MSG::Level msgLevel() const
get the output level from the embedded MsgStream
Definition: CommonMessaging.h:135
EvtSelectorContext::numEvent
long numEvent() const
Access counter.
Definition: EventIterator.h:99
CommonMessagingBase::always
MsgStream & always() const
shortcut for the method msgStream(MSG::ALWAYS)
Definition: CommonMessaging.h:108
ISvcLocator.h
Service::serviceLocator
SmartIF< ISvcLocator > & serviceLocator() const override
Retrieve pointer to service locator.
Definition: Service.cpp:292
EventIterator.h
EventSelectorDataStream::dbName
const std::string & dbName() const
Retrieve stream dbName.
Definition: EventSelectorDataStream.h:97
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
EventSelector::next
StatusCode next(Context &refCtxt) const override
Get next iteration item from the event loop context.
Definition: EventSelector.cpp:188
EventSelector.h
StatusCode::setChecked
void setChecked() const
Ignore the checking code;.
Definition: StatusCode.h:103