| The Gaudi Framework v29r1 (5cd95fa2)

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

- Class List
- Class Index
- Class Hierarchy
- Class Members

Public Types | Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
EventSelector Class Reference

Definition of class EventSelector. More...

`#include <src/EventSelector/EventSelector.h>`

Inheritance diagram for EventSelector:
[legend]
Collaboration diagram for EventSelector:
[legend]

## Public Types
typedef std::vector< EventSelectorDataStream * > | Streams
typedef std::vector< std::string > | StreamSpecs
typedef std::vector< Gaudi::Property< std::string > > | Properties
Public Types inherited from extends< Service, IEvtSelector >
using | base_class = extends
| Typedef to this class. More...
using | extend_interfaces_base = extend_interfaces< Interfaces... >
| Typedef to the base of this class. More...
Public Types inherited from Service
typedef Gaudi::PluginService::Factory< IService *, const std::string &, ISvcLocator * > | Factory
Public Types inherited from PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >
using | PropertyHolderImpl = PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >
| Typedef used to refer to this class from derived classes, as in. More...
Public Types inherited from CommonMessaging< implements< IService, IProperty, IStateful > >
using | base_class = CommonMessaging
Public Types inherited from extend_interfaces< Interfaces... >
using | ext_iids = typename Gaudi::interface_list_cat< typename Interfaces::ext_iids... >::type
| take union of the ext_iids of all Interfaces... More...

## Public Member Functions
StatusCode | initialize () override
| IService implementation: Db event selector override. More...
StatusCode | finalize () override
| IService implementation: Service finalization. More...
StatusCode | reinitialize () override
| Service override: Reinitialize service. More...
StatusCode | createContext (Context *&refpCtxt) const override
| Create a new event loop context. More...
StatusCode | next (Context &refCtxt) const override
| Get next iteration item from the event loop context. More...
StatusCode | next (Context &refCtxt, int jump) const override
| Get next iteration item from the event loop context, but skip jump elements. More...
StatusCode | previous (Context &refCtxt) const override
| Get previous iteration item from the event loop context. More...
StatusCode | previous (Context &refCtxt, int jump) const override
| Get previous iteration item from the event loop context, but skip jump elements. More...
StatusCode | rewind (Context &refCtxt) const override
| Rewind the dataset. More...
StatusCode | createAddress (const Context &refCtxt, IOpaqueAddress *&refpAddr) const override
| Create new Opaque address corresponding to the current record. More...
StatusCode | releaseContext (Context *&refCtxt) const override
| Release existing event iteration context. More...
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 context in a way to point to the new list. More...
StatusCode | last (Context &c) const override
| Access last item in the iteration. More...
StatusCode | firstOfNextStream (bool shutDown, EvtSelectorContext &it) const
| Retrieve first entry of the next data stream. More...
StatusCode | lastOfPreviousStream (bool shutDown, EvtSelectorContext &it) const
| Retrieve last entry of the previous data stream. More...
| ~EventSelector () override=default
| Standard Destructor. More...
Public Member Functions inherited from extends< Service, IEvtSelector >
void * | i_cast (const InterfaceID &tid) const override
| Implementation of IInterface::i_cast. More...
StatusCode | queryInterface (const InterfaceID &ti, void **pp) override
| Implementation of IInterface::queryInterface. More...
std::vector< std::string > | getInterfaceNames () const override
| Implementation of IInterface::getInterfaceNames. More...
| ~extends () override=default
| Virtual destructor. More...
Public Member Functions inherited from Service
const std::string & | name () const override
| Retrieve name of the service. More...
StatusCode | configure () override
StatusCode | initialize () override
StatusCode | start () override
StatusCode | stop () override
StatusCode | finalize () override
StatusCode | terminate () override
Gaudi::StateMachine::State | FSMState () const override
Gaudi::StateMachine::State | targetFSMState () const override
StatusCode | reinitialize () override
StatusCode | restart () override
StatusCode | sysInitialize () override
| Initialize Service. More...
StatusCode | sysStart () override
| Initialize Service. More...
StatusCode | sysStop () override
| Initialize Service. More...
StatusCode | sysFinalize () override
| Finalize Service. More...
StatusCode | sysReinitialize () override
| Re-initialize the Service. More...
StatusCode | sysRestart () override
| Re-initialize the Service. More...
| Service (std::string name, ISvcLocator *svcloc)
| Standard Constructor. More...
SmartIF< ISvcLocator > & | serviceLocator () const override
| Retrieve pointer to service locator. More...
StatusCode | setProperties ()
| Method for setting declared properties to the values specified for the job. More...
template<class T >
StatusCode | service (const std::string &name, const T *&psvc, bool createIf=true) const
| Access a service by name, creating it if it doesn't already exist. More...
template<class T >
StatusCode | service (const std::string &name, T *&psvc, bool createIf=true) const
template<typename IFace = IService>
SmartIF< IFace > | service (const std::string &name, bool createIf=true) const
template<class T >
StatusCode | service (const std::string &svcType, const std::string &svcName, T *&psvc) const
| Access a service by name and type, creating it if it doesn't already exist. More...
template<class T >
StatusCode | declareTool (ToolHandle< T > &handle, std::string toolTypeAndName, bool createIf=true)
| Declare used tool. More...
SmartIF< IAuditorSvc > & | auditorSvc () const
| The standard auditor service.May not be invoked before sysInitialize() has been invoked. More...
Public Member Functions inherited from PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >
| PropertyHolder ()=default
| ~PropertyHolder () override=default
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Details::PropertyBase &prop)
| Declare a property. More...
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, TYPE &value, const std::string &doc="none")
| Helper to wrap a regular data member and use it as a regular property. More...
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, TYPE &value, const std::string &doc="none") const
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, Gaudi::Property< TYPE, VERIFIER, HANDLERS > &prop, const std::string &doc="none")
| Declare a PropertyBase instance setting name and documentation. More...
Gaudi::Details::PropertyBase * | declareRemoteProperty (const std::string &name, IProperty *rsvc, const std::string &rname="")
| Declare a remote property. More...
StatusCode | setProperty (const Gaudi::Details::PropertyBase &p) override
| set the property form another property More...
StatusCode | setProperty (const std::string &s) override
| set the property from the formatted string More...
StatusCode | setProperty (const std::string &n, const std::string &v) override
| set the property from name and the value More...
StatusCode | setProperty (const std::string &name, const TYPE &value)
| set the property form the value More...
StatusCode | getProperty (Gaudi::Details::PropertyBase *p) const override
| get the property More...
const Gaudi::Details::PropertyBase & | getProperty (const std::string &name) const override
| get the property by name More...
StatusCode | getProperty (const std::string &n, std::string &v) const override
| convert the property to the string More...
const std::vector< Gaudi::Details::PropertyBase * > & | getProperties () const override
| get all properties More...
bool | hasProperty (const std::string &name) const override
| Return true if we have a property with the given name. More...
| PropertyHolder (const PropertyHolder &)=delete
PropertyHolder & | operator= (const PropertyHolder &)=delete
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, GaudiHandleBase &ref, const std::string &doc="none")
| Specializations for various GaudiHandles. More...
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, GaudiHandleArrayBase &ref, const std::string &doc="none")
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, DataObjectHandleBase &ref, const std::string &doc="none")
Public Member Functions inherited from CommonMessagingBase
virtual | ~CommonMessagingBase ()=default
| Virtual destructor. More...
const SmartIF< IMessageSvc > & | msgSvc () const
| The standard message service. More...
MsgStream & | msgStream () const
| Return an uninitialized MsgStream. More...
MsgStream & | msgStream (const MSG::Level level) const
| Predefined configurable message stream for the efficient printouts. More...
MsgStream & | always () const
| shortcut for the method msgStream(MSG::ALWAYS) More...
MsgStream & | fatal () const
| shortcut for the method msgStream(MSG::FATAL) More...
MsgStream & | err () const
| shortcut for the method msgStream(MSG::ERROR) More...
MsgStream & | error () const
| shortcut for the method msgStream(MSG::ERROR) More...
MsgStream & | warning () const
| shortcut for the method msgStream(MSG::WARNING) More...
MsgStream & | info () const
| shortcut for the method msgStream(MSG::INFO) More...
MsgStream & | debug () const
| shortcut for the method msgStream(MSG::DEBUG) More...
MsgStream & | verbose () const
| shortcut for the method msgStream(MSG::VERBOSE) More...
MsgStream & | msg () const
| shortcut for the method msgStream(MSG::INFO) More...
MSG::Level | msgLevel () const
| get the cached level (originally extracted from the embedded MsgStream) More...
MSG::Level | outputLevel () const __attribute__((deprecated))
| Backward compatibility function for getting the output level. More...
bool | msgLevel (MSG::Level lvl) const
| get the output level from the embedded MsgStream More...
Public Member Functions inherited from extend_interfaces< Interfaces... >
| ~extend_interfaces () override=default
| Virtual destructor. More...

## Public Attributes
long int | m_streamID

## Protected Member Functions
virtual void | printEvtInfo (const EvtSelectorContext *iter) const
| Progress report. More...
Protected Member Functions inherited from Service
| ~Service () override
| Standard Destructor. More...
int | outputLevel () const
| get the `Service's` output level More...
Protected Member Functions inherited from PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >
Gaudi::Details::PropertyBase * | property (const std::string &name) const
Protected Member Functions inherited from CommonMessaging< implements< IService, IProperty, IStateful > >
MSG::Level | setUpMessaging ()
| Set up local caches. More...
MSG::Level | resetMessaging ()
| Reinitialize internal states. More...
void | updateMsgStreamOutputLevel (int level)
| Update the output level of the cached MsgStream. More...

## Protected Attributes
SmartIF< IIncidentSvc > | m_incidentSvc = nullptr
| Reference to the indicent service. More...
SmartIF< IToolSvc > | m_toolSvc = nullptr
IDataStreamTool * | m_streamtool = nullptr
bool | m_reconfigure = false
| Reconfigure occurred. More...
StreamSpecs | m_streamSpecsLast
| Input stream specifiers (last used) More...
Streams | m_streams
| Input streams. More...
int | m_streamCount = 0
| Input stream counter (0..oo, monotonely increasing) More...
Gaudi::Property< StreamSpecs > | m_streamSpecs {this, "Input", {}, "input stream specifiers (for job options)"}
Gaudi::Property< int > | m_firstEvent {this, "FirstEvent", 0, "first event to be processed"}
Gaudi::Property< int > | m_evtMax {this, "EvtMax", INT_MAX, "maximum number of events to be processed"}
Gaudi::Property< int > | m_evtPrintFrequency {this, "PrintFreq", 10, "printout frequency"}
Gaudi::Property< std::string > | m_streamManager {this, "StreamManager", "DataStreamTool", ""}
Protected Attributes inherited from Service
Gaudi::StateMachine::State | m_state = Gaudi::StateMachine::OFFLINE
| Service state. More...
Gaudi::StateMachine::State | m_targetState = Gaudi::StateMachine::OFFLINE
| Service state. More...
Gaudi::Property< int > | m_outputLevel {this, "OutputLevel", MSG::NIL, "output level"}
Gaudi::Property< bool > | m_auditInit {this, "AuditServices", false, "[[deprecated]] unused"}
Gaudi::Property< bool > | m_auditorInitialize {this, "AuditInitialize", false, "trigger auditor on initialize()"}
Gaudi::Property< bool > | m_auditorStart {this, "AuditStart", false, "trigger auditor on start()"}
Gaudi::Property< bool > | m_auditorStop {this, "AuditStop", false, "trigger auditor on stop()"}
Gaudi::Property< bool > | m_auditorFinalize {this, "AuditFinalize", false, "trigger auditor on finalize()"}
Gaudi::Property< bool > | m_auditorReinitialize {this, "AuditReinitialize", false, "trigger auditor on reinitialize()"}
Gaudi::Property< bool > | m_auditorRestart {this, "AuditRestart", false, "trigger auditor on restart()"}
SmartIF< IAuditorSvc > | m_pAuditorSvc
| Auditor Service. More...

## Detailed Description

Definition of class EventSelector.

Basic event selector service. The event selector service itself is able to connect other services to attached streams.

History: +------—+-------------------------------------------—+---------—+ | Date | Comment | Who | +------—+-------------------------------------------—+---------—+ | 3/10/00 | Initial version | M.Frank | +------—+-------------------------------------------—+---------—+ | 4/09/09 | Added firing incident on opening/ending file | R. Lambert | +------—+-------------------------------------------—+---------—+

Author
  Markus Frank
  R. Lambert

Version
  1.0

Definition at line 53 of file EventSelector.h.

## Member Typedef Documentation

typedef std::vector<Gaudi::Property<std::string> > EventSelector::Properties

Definition at line 58 of file EventSelector.h.

typedef std::vector<EventSelectorDataStream*> EventSelector::Streams

Definition at line 56 of file EventSelector.h.

typedef std::vector<std::string> EventSelector::StreamSpecs

Definition at line 57 of file EventSelector.h.

## Constructor & Destructor Documentation

EventSelector::~EventSelector | ( |  | ) |
| override default

Standard Destructor.

## Member Function Documentation

StatusCode EventSelector::createAddress | ( | const Context & | refCtxt,
|  | IOpaqueAddress *& | refpAddr
| ) |  | const
| override

Create new Opaque address corresponding to the current record.

Parameters

  refCtxt | [IN/OUT] Reference to the context
  refpAddr | [OUT] Reference to address pointer

Returns
  StatusCode indicating success or failure

Definition at line 286 of file EventSelector.cpp.

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 }
EvtSelectorContext::context
IEvtSelector::Context * context() const
Access "real" iterator.
Definition: EventIterator.h:73
StatusCode::FAILURE
Definition: StatusCode.h:31
IEvtSelector
The Event Selector Interface.
Definition: IEvtSelector.h:18
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:75
EventSelector::m_streamtool
IDataStreamTool * m_streamtool
Definition: EventSelector.h:68
EventSelectorDataStream::selector
IEvtSelector * selector() const
Retrieve event selector object.
Definition: EventSelectorDataStream.h:103
IOTest.sel
sel
Definition: IOTest.py:95
EvtSelectorContext
Definition of class EventIterator.
Definition: EventIterator.h:32
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:28
IDataStreamTool::getStream
virtual EventSelectorDataStream * getStream(size_type)=0
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
EventSelectorDataStream
Definition of class EventSelectorDataStream.
Definition: EventSelectorDataStream.h:45
EvtSelectorContext::ID
virtual IDataStreamTool::size_type ID() const
Stream identifier.
Definition: EventIterator.h:94
gaudirun.s
string s
Definition: gaudirun.py:253
IEvtSelector::createAddress
virtual StatusCode createAddress(const Context &c, IOpaqueAddress *&iop) const =0
Create an IOpaqueAddress object from the event fetched.
IOpaqueAddress
Opaque address interface definition.
Definition: IOpaqueAddress.h:23

StatusCode EventSelector::createContext | ( | Context *& | refpCtxt | ) | const
| override

Create a new event loop context.

Parameters

  refpCtxt | [IN/OUT] Reference to pointer to store the context

Returns
  StatusCode indicating success or failure

Definition at line 155 of file EventSelector.cpp.

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 }
StatusCode::SUCCESS
Definition: StatusCode.h:31
StatusCode::FAILURE
Definition: StatusCode.h:31
EventSelector::releaseContext
StatusCode releaseContext(Context *&refCtxt) const override
Release existing event iteration context.
Definition: EventSelector.cpp:307
EventSelector::firstOfNextStream
StatusCode firstOfNextStream(bool shutDown, EvtSelectorContext &it) const
Retrieve first entry of the next data stream.
Definition: EventSelector.cpp:45
StatusCode::isFailure
bool isFailure() const
Test for a status code of FAILURE.
Definition: StatusCode.h:86
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:106
EvtSelectorContext
Definition of class EventIterator.
Definition: EventIterator.h:32
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:28
EventSelector::m_firstEvent
Gaudi::Property< int > m_firstEvent
Definition: EventSelector.h:81
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
StatusCode::ignore
void ignore() const
Definition: StatusCode.h:109
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

StatusCode EventSelector::finalize | ( |  | ) |
| override

IService implementation: Service finalization.

Definition at line 402 of file EventSelector.cpp.

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::m_incidentSvc
SmartIF< IIncidentSvc > m_incidentSvc
Reference to the indicent service.
Definition: EventSelector.h:64
Service::finalize
StatusCode finalize() override
Definition: Service.cpp:174
EventSelector::m_streamtool
IDataStreamTool * m_streamtool
Definition: EventSelector.h:68
MSG::DEBUG
Definition: IMessageSvc.h:16
EventSelector::m_toolSvc
SmartIF< IToolSvc > m_toolSvc
Definition: EventSelector.h:66
IInterface::release
virtual unsigned long release()=0
Release Interface instance.
CommonMessagingBase::debug
MsgStream & debug() const
shortcut for the method msgStream(MSG::DEBUG)
Definition: CommonMessaging.h:115
IToolSvc::releaseTool
virtual StatusCode releaseTool(IAlgTool *tool)=0
Release the tool.
SmartIF::reset
void reset(TYPE *ptr=nullptr)
Set the internal pointer to the passed one disposing of the old one.
Definition: SmartIF.h:92
StatusCode::ignore
void ignore() const
Definition: StatusCode.h:109
CommonMessagingBase::msgLevel
MSG::Level msgLevel() const
get the cached level (originally extracted from the embedded MsgStream)
Definition: CommonMessaging.h:124
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209

StatusCode EventSelector::firstOfNextStream | ( | bool | shutDown,
|  | EvtSelectorContext & | it
| ) |  | const

Retrieve first entry of the next data stream.

Definition at line 45 of file EventSelector.cpp.

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 }
EventSelector::m_incidentSvc
SmartIF< IIncidentSvc > m_incidentSvc
Reference to the indicent service.
Definition: EventSelector.h:64
EventSelectorDataStream::isInitialized
bool isInitialized() const
Check initialization status.
Definition: EventSelectorDataStream.h:105
StatusCode::SUCCESS
Definition: StatusCode.h:31
IDataStreamTool::finalizeStream
virtual StatusCode finalizeStream(EventSelectorDataStream *)=0
StatusCode::FAILURE
Definition: StatusCode.h:31
CommonMessagingBase::info
MsgStream & info() const
shortcut for the method msgStream(MSG::INFO)
Definition: CommonMessaging.h:112
IEvtSelector
The Event Selector Interface.
Definition: IEvtSelector.h:18
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:75
EventSelector::m_streamtool
IDataStreamTool * m_streamtool
Definition: EventSelector.h:68
EventSelectorDataStream::selector
IEvtSelector * selector() const
Retrieve event selector object.
Definition: EventSelectorDataStream.h:103
IOTest.sel
sel
Definition: IOTest.py:95
IIncidentSvc::fireIncident
virtual void fireIncident(const Incident &incident)=0
Fire an Incident.
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:28
IDataStreamTool::getStream
virtual EventSelectorDataStream * getStream(size_type)=0
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...
IEvtSelector::releaseContext
virtual StatusCode releaseContext(Context *&) const =0
Release the Context object.
IDataStreamTool::size_type
long size_type
Definition: IDataStreamTool.h:29
EventSelectorDataStream
Definition of class EventSelectorDataStream.
Definition: EventSelectorDataStream.h:45
Incident
Base class for all Incidents (computing events).
Definition: Incident.h:17
gaudirun.s
string s
Definition: gaudirun.py:253
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
IDataStreamTool::size
virtual size_type size()=0
IDataStreamTool::initializeStream
virtual StatusCode initializeStream(EventSelectorDataStream *)=0
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
StatusCode::ignore
void ignore() const
Definition: StatusCode.h:109
IDataStreamTool::getNextStream
virtual StatusCode getNextStream(const EventSelectorDataStream *&, size_type &)=0
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
StatusCode::setChecked
void setChecked() const
Ignore the checking code;.
Definition: StatusCode.h:108

StatusCode EventSelector::initialize | ( |  | ) |
| override

IService implementation: Db event selector override.

Definition at line 327 of file EventSelector.cpp.

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 }
EventSelector::m_incidentSvc
SmartIF< IIncidentSvc > m_incidentSvc
Reference to the indicent service.
Definition: EventSelector.h:64
Service::initialize
StatusCode initialize() override
Definition: Service.cpp:64
SmartIF< ISvcManager >
Service::name
const std::string & name() const override
Retrieve name of the service.
Definition: Service.cpp:289
StatusCode::FAILURE
Definition: StatusCode.h:31
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:75
EventSelector::m_streamtool
IDataStreamTool * m_streamtool
Definition: EventSelector.h:68
EventSelector::m_streamID
long int m_streamID
Definition: EventSelector.h:60
StatusCode::isFailure
bool isFailure() const
Test for a status code of FAILURE.
Definition: StatusCode.h:86
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
EventSelector::m_streamSpecsLast
StreamSpecs m_streamSpecsLast
Input stream specifiers (last used)
Definition: EventSelector.h:73
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_streamManager
Gaudi::Property< std::string > m_streamManager
Definition: EventSelector.h:84
IDataStreamTool::clear
virtual StatusCode clear()=0
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:28
EventSelector::m_evtMax
Gaudi::Property< int > m_evtMax
Definition: EventSelector.h:82
EventSelector::m_streamSpecs
Gaudi::Property< StreamSpecs > m_streamSpecs
Definition: EventSelector.h:80
EventSelector::m_toolSvc
SmartIF< IToolSvc > m_toolSvc
Definition: EventSelector.h:66
CommonMessagingBase::fatal
MsgStream & fatal() const
shortcut for the method msgStream(MSG::FATAL)
Definition: CommonMessaging.h:100
Service::serviceLocator
SmartIF< ISvcLocator > & serviceLocator() const override
Retrieve pointer to service locator.
Definition: Service.cpp:292
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209

StatusCode EventSelector::last | ( | Context & | c | ) | const
| override

Access last item in the iteration.

Parameters

  c | Reference to the Context object.

Returns
  StatusCode indicating success or failure

Definition at line 257 of file EventSelector.cpp.

258 {
259 EvtSelectorContext* pIt = dynamic_cast<EvtSelectorContext*>( &refCtxt );
260 if ( pIt ) {
261 }
262 return StatusCode::FAILURE;
263 }
StatusCode::FAILURE
Definition: StatusCode.h:31
EvtSelectorContext
Definition of class EventIterator.
Definition: EventIterator.h:32

StatusCode EventSelector::lastOfPreviousStream | ( | bool | shutDown,
|  | EvtSelectorContext & | it
| ) |  | const

Retrieve last entry of the previous data stream.

Definition at line 104 of file EventSelector.cpp.

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 }
EventSelectorDataStream::isInitialized
bool isInitialized() const
Check initialization status.
Definition: EventSelectorDataStream.h:105
StatusCode::SUCCESS
Definition: StatusCode.h:31
IDataStreamTool::finalizeStream
virtual StatusCode finalizeStream(EventSelectorDataStream *)=0
StatusCode::FAILURE
Definition: StatusCode.h:31
CommonMessagingBase::info
MsgStream & info() const
shortcut for the method msgStream(MSG::INFO)
Definition: CommonMessaging.h:112
IEvtSelector
The Event Selector Interface.
Definition: IEvtSelector.h:18
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:75
EventSelector::m_streamtool
IDataStreamTool * m_streamtool
Definition: EventSelector.h:68
EventSelectorDataStream::selector
IEvtSelector * selector() const
Retrieve event selector object.
Definition: EventSelectorDataStream.h:103
IOTest.sel
sel
Definition: IOTest.py:95
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:28
IDataStreamTool::getStream
virtual EventSelectorDataStream * getStream(size_type)=0
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...
IEvtSelector::releaseContext
virtual StatusCode releaseContext(Context *&) const =0
Release the Context object.
IDataStreamTool::size_type
long size_type
Definition: IDataStreamTool.h:29
IDataStreamTool::getPreviousStream
virtual StatusCode getPreviousStream(const EventSelectorDataStream *&, size_type &)=0
EventSelectorDataStream
Definition of class EventSelectorDataStream.
Definition: EventSelectorDataStream.h:45
gaudirun.s
string s
Definition: gaudirun.py:253
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
IDataStreamTool::size
virtual size_type size()=0
IDataStreamTool::initializeStream
virtual StatusCode initializeStream(EventSelectorDataStream *)=0
EventSelectorDataStream::criteria
const std::string & criteria() const
Retrieve stream criteria.
Definition: EventSelectorDataStream.h:95
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209

StatusCode EventSelector::next | ( | Context & | refCtxt | ) | const
| override

Get next iteration item from the event loop context.

Parameters

  refCtxt | [IN/OUT] Reference to the context

Returns
  StatusCode indicating success or failure

Definition at line 182 of file EventSelector.cpp.

182 { return next( refCtxt, 1 ); }
EventSelector::next
StatusCode next(Context &refCtxt) const override
Get next iteration item from the event loop context.
Definition: EventSelector.cpp:182

StatusCode EventSelector::next | ( | Context & | refCtxt,
|  | int | jump
| ) |  | const
| override

Get next iteration item from the event loop context, but skip jump elements.

Parameters

  refCtxt | [IN/OUT] Reference to the context

Returns
  StatusCode indicating success or failure

Definition at line 185 of file EventSelector.cpp.

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 }
EventSelector::m_incidentSvc
SmartIF< IIncidentSvc > m_incidentSvc
Reference to the indicent service.
Definition: EventSelector.h:64
EvtSelectorContext::context
IEvtSelector::Context * context() const
Access "real" iterator.
Definition: EventIterator.h:73
StatusCode::FAILURE
Definition: StatusCode.h:31
IEvtSelector
The Event Selector Interface.
Definition: IEvtSelector.h:18
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:75
EventSelector::m_streamtool
IDataStreamTool * m_streamtool
Definition: EventSelector.h:68
EventSelectorDataStream::selector
IEvtSelector * selector() const
Retrieve event selector object.
Definition: EventSelectorDataStream.h:103
IOTest.sel
sel
Definition: IOTest.py:95
EventSelector::printEvtInfo
virtual void printEvtInfo(const EvtSelectorContext *iter) const
Progress report.
Definition: EventSelector.cpp:26
EventSelector::firstOfNextStream
StatusCode firstOfNextStream(bool shutDown, EvtSelectorContext &it) const
Retrieve first entry of the next data stream.
Definition: EventSelector.cpp:45
IIncidentSvc::fireIncident
virtual void fireIncident(const Incident &incident)=0
Fire an Incident.
EvtSelectorContext
Definition of class EventIterator.
Definition: EventIterator.h:32
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:28
IDataStreamTool::getStream
virtual EventSelectorDataStream * getStream(size_type)=0
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
EventSelectorDataStream
Definition of class EventSelectorDataStream.
Definition: EventSelectorDataStream.h:45
Incident
Base class for all Incidents (computing events).
Definition: Incident.h:17
EvtSelectorContext::ID
virtual IDataStreamTool::size_type ID() const
Stream identifier.
Definition: EventIterator.h:94
gaudirun.s
string s
Definition: gaudirun.py:253
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...
EvtSelectorContext::increaseCounters
IDataStreamTool::size_type increaseCounters(bool reset=false)
Increase counters.
Definition: EventIterator.h:75
EventSelector::m_reconfigure
bool m_reconfigure
Reconfigure occurred.
Definition: EventSelector.h:71
EventSelectorDataStream::dbName
const std::string & dbName() const
Retrieve stream dbName.
Definition: EventSelectorDataStream.h:97
EventSelector::next
StatusCode next(Context &refCtxt) const override
Get next iteration item from the event loop context.
Definition: EventSelector.cpp:182

StatusCode EventSelector::previous | ( | Context & | refCtxt | ) | const
| override

Get previous iteration item from the event loop context.

Parameters

  refCtxt | [IN/OUT] Reference to the context
  jump | [IN] Number of events to be skipped

Returns
  StatusCode indicating success or failure

Definition at line 222 of file EventSelector.cpp.

222 { return previous( refCtxt, 1 ); }
EventSelector::previous
StatusCode previous(Context &refCtxt) const override
Get previous iteration item from the event loop context.
Definition: EventSelector.cpp:222

StatusCode EventSelector::previous | ( | Context & | refCtxt,
|  | int | jump
| ) |  | const
| override

Get previous iteration item from the event loop context, but skip jump elements.

Parameters

  refCtxt | [IN/OUT] Reference to the context
  jump | [IN] Number of events to be skipped

Returns
  StatusCode indicating success or failure

Definition at line 225 of file EventSelector.cpp.

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 }
EventSelector::lastOfPreviousStream
StatusCode lastOfPreviousStream(bool shutDown, EvtSelectorContext &it) const
Retrieve last entry of the previous data stream.
Definition: EventSelector.cpp:104
StatusCode::SUCCESS
Definition: StatusCode.h:31
EvtSelectorContext::context
IEvtSelector::Context * context() const
Access "real" iterator.
Definition: EventIterator.h:73
StatusCode::FAILURE
Definition: StatusCode.h:31
IEvtSelector
The Event Selector Interface.
Definition: IEvtSelector.h:18
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:75
EventSelector::m_streamtool
IDataStreamTool * m_streamtool
Definition: EventSelector.h:68
EventSelectorDataStream::selector
IEvtSelector * selector() const
Retrieve event selector object.
Definition: EventSelectorDataStream.h:103
IOTest.sel
sel
Definition: IOTest.py:95
EventSelector::printEvtInfo
virtual void printEvtInfo(const EvtSelectorContext *iter) const
Progress report.
Definition: EventSelector.cpp:26
IEvtSelector::previous
virtual StatusCode previous(Context &c) const =0
Fetch the previous event.
EvtSelectorContext
Definition of class EventIterator.
Definition: EventIterator.h:32
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:28
IDataStreamTool::getStream
virtual EventSelectorDataStream * getStream(size_type)=0
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
EventSelectorDataStream
Definition of class EventSelectorDataStream.
Definition: EventSelectorDataStream.h:45
EvtSelectorContext::ID
virtual IDataStreamTool::size_type ID() const
Stream identifier.
Definition: EventIterator.h:94
gaudirun.s
string s
Definition: gaudirun.py:253
EvtSelectorContext::increaseCounters
IDataStreamTool::size_type increaseCounters(bool reset=false)
Increase counters.
Definition: EventIterator.h:75

void EventSelector::printEvtInfo | ( | const EvtSelectorContext * | iter | ) | const
| protected virtual

Progress report.

Definition at line 26 of file EventSelector.cpp.

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 }
EvtSelectorContext::context
IEvtSelector::Context * context() const
Access "real" iterator.
Definition: EventIterator.h:73
CommonMessagingBase::info
MsgStream & info() const
shortcut for the method msgStream(MSG::INFO)
Definition: CommonMessaging.h:112
EventSelector::m_evtPrintFrequency
Gaudi::Property< int > m_evtPrintFrequency
Definition: EventSelector.h:83
EvtSelectorContext::numStreamEvent
long numStreamEvent() const
Access counter within stream.
Definition: EventIterator.h:98
std::count
T count(T...args)
EvtSelectorContext::ID
virtual IDataStreamTool::size_type ID() const
Stream identifier.
Definition: EventIterator.h:94
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
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209

StatusCode EventSelector::reinitialize | ( |  | ) |
| override

Service override: Reinitialize service.

Definition at line 383 of file EventSelector.cpp.

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 }
Gaudi::StateMachine::INITIALIZED
Definition: StateMachine.h:17
StatusCode::SUCCESS
Definition: StatusCode.h:31
StatusCode::FAILURE
Definition: StatusCode.h:31
EventSelector::m_streamtool
IDataStreamTool * m_streamtool
Definition: EventSelector.h:68
StatusCode::isFailure
bool isFailure() const
Test for a status code of FAILURE.
Definition: StatusCode.h:86
EventSelector::m_streamSpecsLast
StreamSpecs m_streamSpecsLast
Input stream specifiers (last used)
Definition: EventSelector.h:73
IDataStreamTool::addStreams
virtual StatusCode addStreams(const StreamSpecs &)=0
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:106
IDataStreamTool::clear
virtual StatusCode clear()=0
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:28
EventSelector::m_streamSpecs
Gaudi::Property< StreamSpecs > m_streamSpecs
Definition: EventSelector.h:80
Service::FSMState
Gaudi::StateMachine::State FSMState() const override
Definition: Service.h:54
EventSelector::m_reconfigure
bool m_reconfigure
Reconfigure occurred.
Definition: EventSelector.h:71
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209

StatusCode EventSelector::releaseContext | ( | Context *& | refCtxt | ) | const
| override

Release existing event iteration context.

Parameters

  refCtxt | [IN/OUT] Reference to the context

Returns
  StatusCode indicating success or failure

Definition at line 307 of file EventSelector.cpp.

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 }
StatusCode::SUCCESS
Definition: StatusCode.h:31
IEvtSelector
The Event Selector Interface.
Definition: IEvtSelector.h:18
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:75
EventSelector::m_streamtool
IDataStreamTool * m_streamtool
Definition: EventSelector.h:68
EventSelectorDataStream::selector
IEvtSelector * selector() const
Retrieve event selector object.
Definition: EventSelectorDataStream.h:103
IOTest.sel
sel
Definition: IOTest.py:95
EvtSelectorContext
Definition of class EventIterator.
Definition: EventIterator.h:32
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:28
IDataStreamTool::getStream
virtual EventSelectorDataStream * getStream(size_type)=0
IEvtSelector::releaseContext
virtual StatusCode releaseContext(Context *&) const =0
Release the Context object.
std::unique_ptr
STL class.
EventSelectorDataStream
Definition of class EventSelectorDataStream.
Definition: EventSelectorDataStream.h:45
gaudirun.s
string s
Definition: gaudirun.py:253
IDataStreamTool::size
virtual size_type size()=0

StatusCode EventSelector::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 context in a way to point to the new list.

Parameters

  cr | The new criteria string.
  c | Reference pointer to the Context object.

Returns
  StatusCode indicating success or failure

Definition at line 20 of file EventSelector.cpp.

21 {
22 return StatusCode::FAILURE;
23 }
StatusCode::FAILURE
Definition: StatusCode.h:31

StatusCode EventSelector::rewind | ( | Context & | refCtxt | ) | const
| override

Rewind the dataset.

Parameters

  refCtxt | [IN/OUT] Reference to the context

Returns
  StatusCode indicating success or failure

Definition at line 266 of file EventSelector.cpp.

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 }
StatusCode::SUCCESS
Definition: StatusCode.h:31
StatusCode::FAILURE
Definition: StatusCode.h:31
EventSelector::firstOfNextStream
StatusCode firstOfNextStream(bool shutDown, EvtSelectorContext &it) const
Retrieve first entry of the next data stream.
Definition: EventSelector.cpp:45
StatusCode::isFailure
bool isFailure() const
Test for a status code of FAILURE.
Definition: StatusCode.h:86
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:106
EvtSelectorContext
Definition of class EventIterator.
Definition: EventIterator.h:32
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:28
EventSelector::m_firstEvent
Gaudi::Property< int > m_firstEvent
Definition: EventSelector.h:81
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
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

## Member Data Documentation

Gaudi::Property<int> EventSelector::m_evtMax {this, "EvtMax", INT_MAX, "maximum number of events to be processed"}
| protected

Definition at line 82 of file EventSelector.h.

Gaudi::Property<int> EventSelector::m_evtPrintFrequency {this, "PrintFreq", 10, "printout frequency"}
| protected

Definition at line 83 of file EventSelector.h.

Gaudi::Property<int> EventSelector::m_firstEvent {this, "FirstEvent", 0, "first event to be processed"}
| protected

Definition at line 81 of file EventSelector.h.

SmartIF<IIncidentSvc> EventSelector::m_incidentSvc = nullptr
| protected

Reference to the indicent service.

Definition at line 64 of file EventSelector.h.

bool EventSelector::m_reconfigure = false
| protected

Reconfigure occurred.

Definition at line 71 of file EventSelector.h.

int EventSelector::m_streamCount = 0
| protected

Input stream counter (0..oo, monotonely increasing)

Definition at line 77 of file EventSelector.h.

long int EventSelector::m_streamID

Definition at line 60 of file EventSelector.h.

Gaudi::Property<std::string> EventSelector::m_streamManager {this, "StreamManager", "DataStreamTool", ""}
| protected

Definition at line 84 of file EventSelector.h.

Streams EventSelector::m_streams
| protected

Input streams.

Definition at line 75 of file EventSelector.h.

Gaudi::Property<StreamSpecs> EventSelector::m_streamSpecs {this, "Input", {}, "input stream specifiers (for job options)"}
| protected

Definition at line 80 of file EventSelector.h.

StreamSpecs EventSelector::m_streamSpecsLast
| protected

Input stream specifiers (last used)

Definition at line 73 of file EventSelector.h.

IDataStreamTool* EventSelector::m_streamtool = nullptr
| protected

Definition at line 68 of file EventSelector.h.

SmartIF<IToolSvc> EventSelector::m_toolSvc = nullptr
| protected

Definition at line 66 of file EventSelector.h.

The documentation for this class was generated from the following files:

- GaudiCoreSvc/src/EventSelector/EventSelector.h
- GaudiCoreSvc/src/EventSelector/EventSelector.cpp