| The Gaudi Framework v30r0 (c919700c)

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