| The Gaudi Framework v28r2-patches (bc4ad17a)

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

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

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

`#include <GaudiHive/HiveSlimEventLoopMgr.h>`

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

## Public Member Functions
| HiveSlimEventLoopMgr (const std::string &nam, ISvcLocator *svcLoc)
| Standard Constructor. More...
| ~HiveSlimEventLoopMgr () override
| Standard Destructor. More...
StatusCode | getEventRoot (IOpaqueAddress *&refpAddr)
| Create event address using event selector. More...
StatusCode | initialize () override
| implementation of IService::initialize More...
StatusCode | reinitialize () override
| implementation of IService::reinitialize More...
StatusCode | stop () override
| implementation of IService::stop More...
StatusCode | finalize () override
| implementation of IService::finalize More...
StatusCode | nextEvent (int maxevt) override
| implementation of IService::nextEvent More...
StatusCode | executeEvent (void *par) override
| implementation of IEventProcessor::executeEvent(void* par) More...
StatusCode | executeRun (int maxevt) override
| implementation of IEventProcessor::executeRun() More...
StatusCode | stopRun () override
| implementation of IEventProcessor::stopRun() More...
Public Member Functions inherited from extends< Service, IEventProcessor >
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 | declarePrivateTool (ToolHandle< T > &handle, std::string toolTypeAndName="", bool createIf=true)
| Declare used Private tool. More...
template<class T >
StatusCode | declarePublicTool (ToolHandle< T > &handle, std::string toolTypeAndName="", bool createIf=true)
| Declare used Public 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...
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 output level 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...

## Protected Member Functions
StatusCode | clearWBSlot (int evtSlot)
| Clear a slot in the WB. More...
StatusCode | declareEventRootAddress ()
| Declare the root address of the event. More...
StatusCode | createEventContext (EventContext *&eventContext, int createdEvents)
| Create event context. More...
StatusCode | drainScheduler (int &finishedEvents)
| Drain the scheduler from all actions that may be queued. 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 > >
void | updateMsgStreamOutputLevel (int level)
| Update the output level of the cached MsgStream. More...

## Protected Attributes
Gaudi::Property< std::string > | m_histPersName {this, "HistogramPersistency", "", ""}
Gaudi::Property< std::string > | m_evtsel {this, "EvtSel", "", ""}
Gaudi::Property< bool > | m_warnings {this, "Warnings", true, "Set this property to false to suppress warning messages"}
Gaudi::Property< std::string > | m_schedulerName
Gaudi::Property< std::vector< unsigned int > > | m_eventNumberBlacklist {this, "EventNumberBlackList", {}, ""}
SmartIF< IDataManagerSvc > | m_evtDataMgrSvc
| Reference to the Event Data Service's IDataManagerSvc interface. More...
SmartIF< IEvtSelector > | m_evtSelector
| Reference to the Event Selector. More...
IEvtSelector::Context * | m_evtContext = nullptr
| Event Iterator. More...
SmartIF< IDataManagerSvc > | m_histoDataMgrSvc
| Reference to the Histogram Data Service. More...
SmartIF< IConversionSvc > | m_histoPersSvc
| Reference to the Histogram Persistency Service. More...
SmartIF< IHiveWhiteBoard > | m_whiteboard
| Reference to the Whiteboard. More...
SmartIF< IAlgResourcePool > | m_algResourcePool
| Reference to the Algorithm resource pool. More...
SmartIF< IAlgExecStateSvc > | m_algExecStateSvc
| Reference to the AlgExecStateSvc. More...
SmartIF< IProperty > | m_appMgrProperty
| Property interface of ApplicationMgr. More...
bool | m_endEventFired = false
| Flag to avoid to fire the EnvEvent incident twice in a row (and also not before the first event) More...
SmartIF< IScheduler > | m_schedulerSvc
| A shortcut for the scheduler. More...
SmartIF< IIncidentListener > | m_abortEventListener
| Instance of the incident listener waiting for AbortEvent. More...
bool | m_scheduledStop = false
| Scheduled stop of event processing. More...
SmartIF< IAppMgrUI > | m_appMgrUI
| Reference to the IAppMgrUI interface of the application manager. More...
SmartIF< IIncidentSvc > | m_incidentSvc
| Reference to the incident service. More...
boost::dynamic_bitset * | m_blackListBS = nullptr
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...

## Additional Inherited Members
Public Types inherited from extends< Service, IEventProcessor >
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...

## Detailed Description

Definition at line 26 of file HiveSlimEventLoopMgr.h.

## Constructor & Destructor Documentation

HiveSlimEventLoopMgr::HiveSlimEventLoopMgr | ( | const std::string & | nam,
|  | ISvcLocator * | svcLoc
| ) |  |

Standard Constructor.

Definition at line 47 of file HiveSlimEventLoopMgr.cpp.

48 : base_class(name, svcLoc), m_appMgrUI(svcLoc)
49 {
50 }
Service::name
const std::string & name() const override
Retrieve name of the service.
Definition: Service.cpp:289
HiveSlimEventLoopMgr::m_appMgrUI
SmartIF< IAppMgrUI > m_appMgrUI
Reference to the IAppMgrUI interface of the application manager.
Definition: HiveSlimEventLoopMgr.h:73
extends< Service, IEventProcessor >::base_class
extends base_class
Typedef to this class.
Definition: extends.h:14

HiveSlimEventLoopMgr::~HiveSlimEventLoopMgr | ( |  | ) |
| override

Standard Destructor.

Definition at line 55 of file HiveSlimEventLoopMgr.cpp.

55 {
56 m_histoDataMgrSvc.reset();
57 m_histoPersSvc.reset();
58 m_evtDataMgrSvc.reset();
59 m_whiteboard.reset();
60 m_evtSelector.reset();
61 if( m_evtContext ) delete m_evtContext;
62 }
HiveSlimEventLoopMgr::m_evtDataMgrSvc
SmartIF< IDataManagerSvc > m_evtDataMgrSvc
Reference to the Event Data Service&#39;s IDataManagerSvc interface.
Definition: HiveSlimEventLoopMgr.h:38
HiveSlimEventLoopMgr::m_whiteboard
SmartIF< IHiveWhiteBoard > m_whiteboard
Reference to the Whiteboard.
Definition: HiveSlimEventLoopMgr.h:48
HiveSlimEventLoopMgr::m_histoPersSvc
SmartIF< IConversionSvc > m_histoPersSvc
Reference to the Histogram Persistency Service.
Definition: HiveSlimEventLoopMgr.h:46
HiveSlimEventLoopMgr::m_histoDataMgrSvc
SmartIF< IDataManagerSvc > m_histoDataMgrSvc
Reference to the Histogram Data Service.
Definition: HiveSlimEventLoopMgr.h:44
HiveSlimEventLoopMgr::m_evtSelector
SmartIF< IEvtSelector > m_evtSelector
Reference to the Event Selector.
Definition: HiveSlimEventLoopMgr.h:40
SmartIF::reset
void reset(TYPE *ptr=nullptr)
Set the internal pointer to the passed one disposing of the old one.
Definition: SmartIF.h:88
HiveSlimEventLoopMgr::m_evtContext
IEvtSelector::Context * m_evtContext
Event Iterator.
Definition: HiveSlimEventLoopMgr.h:42

## Member Function Documentation

StatusCode HiveSlimEventLoopMgr::clearWBSlot | ( | int | evtSlot | ) |
| protected

Clear a slot in the WB.

Definition at line 666 of file HiveSlimEventLoopMgr.cpp.

666 {
667 StatusCode sc = m_whiteboard->clearStore(evtSlot);
668 if( !sc.isSuccess() ) {
669 warning() << "Clear of Event data store failed" << endmsg;
670 }
671 return m_whiteboard->freeStore(evtSlot);
672 }
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:74
HiveSlimEventLoopMgr::m_whiteboard
SmartIF< IHiveWhiteBoard > m_whiteboard
Reference to the Whiteboard.
Definition: HiveSlimEventLoopMgr.h:48
CommonMessagingBase::warning
MsgStream & warning() const
shortcut for the method msgStream(MSG::WARNING)
Definition: CommonMessaging.h:120
IHiveWhiteBoard::clearStore
virtual StatusCode clearStore(size_t partitionIndex)=0
Clear an given &#39;slot&#39;.
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
IHiveWhiteBoard::freeStore
virtual StatusCode freeStore(size_t partitionIndex)=0
Free a store partition.
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244

StatusCode HiveSlimEventLoopMgr::createEventContext | ( | EventContext *& | eventContext,
|  | int | createdEvents
| ) |  |
| protected

Create event context.

Definition at line 581 of file HiveSlimEventLoopMgr.cpp.

581 {
582 evtContext = new EventContext;
583
584 evtContext->set(createdEvts, m_whiteboard->allocateStore(createdEvts));
585
586 m_algExecStateSvc->reset(*evtContext);
587
588 StatusCode sc = m_whiteboard->selectStore(evtContext->slot());
589 if (sc.isFailure()){
590 warning() << "Slot " << evtContext->slot()
591 << " could not be selected for the WhiteBoard" << endmsg;
592 }
593 return sc;
594 }
EventContext::set
void set(const ContextEvt_t &e=0, const ContextID_t &s=INVALID_CONTEXT_ID)
Definition: EventContext.h:46
HiveSlimEventLoopMgr::m_whiteboard
SmartIF< IHiveWhiteBoard > m_whiteboard
Reference to the Whiteboard.
Definition: HiveSlimEventLoopMgr.h:48
EventContext
This class represents an entry point to all the event specific data.
Definition: EventContext.h:25
StatusCode::isFailure
bool isFailure() const
Test for a status code of FAILURE.
Definition: StatusCode.h:84
IHiveWhiteBoard::selectStore
virtual StatusCode selectStore(size_t partitionIndex)=0
Activate an given &#39;slot&#39; for all subsequent calls within the same thread id.
CommonMessagingBase::warning
MsgStream & warning() const
shortcut for the method msgStream(MSG::WARNING)
Definition: CommonMessaging.h:120
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
IAlgExecStateSvc::reset
virtual void reset(const EventContext &ctx)=0
HiveSlimEventLoopMgr::m_algExecStateSvc
SmartIF< IAlgExecStateSvc > m_algExecStateSvc
Reference to the AlgExecStateSvc.
Definition: HiveSlimEventLoopMgr.h:52
IHiveWhiteBoard::allocateStore
virtual size_t allocateStore(int evtnumber)=0
Allocate a store partition for new event.
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244

StatusCode HiveSlimEventLoopMgr::declareEventRootAddress | ( |  | ) |
| protected

Declare the root address of the event.

Definition at line 553 of file HiveSlimEventLoopMgr.cpp.

553 {
554
555 StatusCode sc;
556 if( m_evtContext ) {
557 //---This is the "event iterator" context from EventSelector
558 IOpaqueAddress* pAddr = 0;
559 sc = getEventRoot(pAddr);
560 if( !sc.isSuccess() ) {
561 info() << "No more events in event selection " << endmsg;
562 return StatusCode::FAILURE;
563 }
564 sc = m_evtDataMgrSvc->setRoot ("/Event", pAddr);
565 if( !sc.isSuccess() ) {
566 warning() << "Error declaring event root address." << endmsg;
567 }
568 }
569 else {
570 //---In case of no event selector----------------
571 sc = m_evtDataMgrSvc->setRoot ("/Event", new DataObject());
572 if( !sc.isSuccess() ) {
573 warning() << "Error declaring event root DataObject" << endmsg;
574 }
575 }
576 return StatusCode::SUCCESS;
577 }
StatusCode::SUCCESS
Definition: StatusCode.h:30
HiveSlimEventLoopMgr::m_evtDataMgrSvc
SmartIF< IDataManagerSvc > m_evtDataMgrSvc
Reference to the Event Data Service&#39;s IDataManagerSvc interface.
Definition: HiveSlimEventLoopMgr.h:38
StatusCode::FAILURE
Definition: StatusCode.h:29
CommonMessagingBase::info
MsgStream & info() const
shortcut for the method msgStream(MSG::INFO)
Definition: CommonMessaging.h:123
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:74
CommonMessagingBase::warning
MsgStream & warning() const
shortcut for the method msgStream(MSG::WARNING)
Definition: CommonMessaging.h:120
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
HiveSlimEventLoopMgr::getEventRoot
StatusCode getEventRoot(IOpaqueAddress *&refpAddr)
Create event address using event selector.
Definition: HiveSlimEventLoopMgr.cpp:531
IDataManagerSvc::setRoot
virtual StatusCode setRoot(std::string root_name, DataObject *pObject)=0
Initialize data store for new event by giving new event path.
GaudiPython.Bindings.DataObject
DataObject
Definition: Bindings.py:51
IOpaqueAddress
Opaque address interface definition.
Definition: IOpaqueAddress.h:23
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
HiveSlimEventLoopMgr::m_evtContext
IEvtSelector::Context * m_evtContext
Event Iterator.
Definition: HiveSlimEventLoopMgr.h:42

StatusCode HiveSlimEventLoopMgr::drainScheduler | ( | int & | finishedEvents | ) |
| protected

Drain the scheduler from all actions that may be queued.

Definition at line 598 of file HiveSlimEventLoopMgr.cpp.

598 {
599
600 StatusCode sc(StatusCode::SUCCESS);
601
602 // maybe we can do better
603 std::vector<EventContext*> finishedEvtContexts;
604
605 EventContext* finishedEvtContext(nullptr);
606
607 // Here we wait not to loose cpu resources
608 debug() << "Waiting for a context" << endmsg;
609 sc = m_schedulerSvc->popFinishedEvent(finishedEvtContext);
610
611 // We got past it: cache the pointer
612 if (sc.isSuccess()){
613 debug() << "Context obtained" << endmsg;
614 } else{
615 // A problem occurred.
616 debug() << "Context not obtained: a problem in the scheduling?" << endmsg;
617 // return StatusCode::FAILURE;
618 }
619
620 finishedEvtContexts.push_back(finishedEvtContext);
621
622 // Let's see if we can pop other event contexts
623 while (m_schedulerSvc->tryPopFinishedEvent(finishedEvtContext).isSuccess()){
624 finishedEvtContexts.push_back(finishedEvtContext);
625 }
626
627 // Now we flush them
628 StatusCode finalSC;
629 for (auto& thisFinishedEvtContext : finishedEvtContexts){
630 if (nullptr == thisFinishedEvtContext){
631 error() << "Detected nullptr ctxt before clearing WB!"<< endmsg;
632 finalSC = StatusCode::FAILURE;
633 continue;
634 }
635 if (m_algExecStateSvc->eventStatus(*thisFinishedEvtContext) != EventStatus::Success) {
636 fatal() << "Failed event detected on " << thisFinishedEvtContext << endmsg;
637 finalSC = StatusCode::FAILURE;
638 }
639 //shouldn't these incidents move to the forward scheduler?
640 // If we want to consume incidents with an algorithm at the end of the graph
641 // we need to add this to forward scheduler lambda action,
642 // otherwise we have to do this serially on this thread!
643 m_incidentSvc->fireIncident(Incident(name(), IncidentType::EndProcessing,*thisFinishedEvtContext));
644 m_incidentSvc->fireIncident(Incident(name(),IncidentType::EndEvent,*thisFinishedEvtContext));
645
646 debug() << "Clearing slot " << thisFinishedEvtContext->slot()
647 << " (event " << thisFinishedEvtContext->evt()
648 << ") of the whiteboard" << endmsg;
649
650 StatusCode sc = clearWBSlot(thisFinishedEvtContext->slot());
651 if (!sc.isSuccess())
652 error() << "Whiteboard slot " << thisFinishedEvtContext->slot()
653 << " could not be properly cleared";
654
655
656 delete thisFinishedEvtContext;
657
658 finishedEvts++;
659
660 }
661 return finalSC;
662 }
HiveSlimEventLoopMgr::clearWBSlot
StatusCode clearWBSlot(int evtSlot)
Clear a slot in the WB.
Definition: HiveSlimEventLoopMgr.cpp:666
StatusCode::SUCCESS
Definition: StatusCode.h:30
HiveSlimEventLoopMgr::m_incidentSvc
SmartIF< IIncidentSvc > m_incidentSvc
Reference to the incident service.
Definition: HiveSlimEventLoopMgr.h:75
Service::name
const std::string & name() const override
Retrieve name of the service.
Definition: Service.cpp:289
StatusCode::FAILURE
Definition: StatusCode.h:29
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:74
HiveSlimEventLoopMgr::m_schedulerSvc
SmartIF< IScheduler > m_schedulerSvc
A shortcut for the scheduler.
Definition: HiveSlimEventLoopMgr.h:59
EventContext
This class represents an entry point to all the event specific data.
Definition: EventContext.h:25
std::vector::push_back
T push_back(T...args)
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:117
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:26
EventStatus::Success
Definition: IAlgExecStateSvc.h:64
std::vector
STL class.
HiveSlimEventLoopMgr::m_algExecStateSvc
SmartIF< IAlgExecStateSvc > m_algExecStateSvc
Reference to the AlgExecStateSvc.
Definition: HiveSlimEventLoopMgr.h:52
CommonMessagingBase::debug
MsgStream & debug() const
shortcut for the method msgStream(MSG::DEBUG)
Definition: CommonMessaging.h:126
IScheduler::tryPopFinishedEvent
virtual StatusCode tryPopFinishedEvent(EventContext *&eventContext)=0
Try to retrieve a finished event from the scheduler.
Incident
Base class for all Incidents (computing events).
Definition: Incident.h:17
IAlgExecStateSvc::eventStatus
virtual const EventStatus::Status & eventStatus(const EventContext &ctx) const =0
CommonMessagingBase::fatal
MsgStream & fatal() const
shortcut for the method msgStream(MSG::FATAL)
Definition: CommonMessaging.h:111
IScheduler::popFinishedEvent
virtual StatusCode popFinishedEvent(EventContext *&eventContext)=0
Retrieve a finished event from the scheduler.
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244

StatusCode HiveSlimEventLoopMgr::executeEvent | ( | void * | par | ) |
| override

implementation of IEventProcessor::executeEvent(void* par)

Definition at line 321 of file HiveSlimEventLoopMgr.cpp.

321 {
322
323 // Leave the interface intact and swallow this C trick.
324 int& createdEvts = *((int*)createdEvts_IntPtr);
325
326 EventContext* evtContext(nullptr);
327
328 // Check if event number is in blacklist
329 if(LIKELY(m_blackListBS != nullptr)){ //we are processing a finite number of events, use bitset blacklist
330 if(m_blackListBS->test(createdEvts)){
331 verbose() << "Event " << createdEvts << " on black list" << endmsg;
332 return StatusCode::RECOVERABLE;
333 }
334 } else if(std::binary_search(m_eventNumberBlacklist.begin(),m_eventNumberBlacklist.end(),createdEvts)){
335
336 verbose() << "Event " << createdEvts << " on black list" << endmsg;
337 return StatusCode::RECOVERABLE;
338 }
339
340 if ( createEventContext(evtContext,createdEvts).isFailure() ){
341 fatal() << "Impossible to create event context" << endmsg;
342 return StatusCode::FAILURE;
343 }
344
345 verbose() << "Beginning to process event " << createdEvts << endmsg;
346
347 // An incident may schedule a stop, in which case is better to exit before the actual execution.
348 // DP have to find out who shoots this
349 /* if ( m_scheduledStop ) {
350 always() << "Terminating event processing loop due to a stop scheduled by an incident listener" << endmsg;
351 return StatusCode::SUCCESS;
352 }*/
353
354
355 StatusCode declEvtRootSc = declareEventRootAddress();
356 if (declEvtRootSc.isFailure()) { // We ran out of events!
357 createdEvts = -1; // Set created event to a negative value: we finished!
358 return StatusCode::SUCCESS;
359 }
360
361 // Fire BeginEvent "Incident"
362 m_incidentSvc->fireIncident(std::unique_ptr<Incident>(new Incident(name(),IncidentType::BeginEvent,*evtContext)));
363
364 // Now add event to the scheduler
365 verbose() << "Adding event " << evtContext->evt()
366 << ", slot " << evtContext->slot()
367 << " to the scheduler" << endmsg;
368
369 m_incidentSvc->fireIncident(std::unique_ptr<Incident>(new Incident(name(), IncidentType::BeginProcessing,*evtContext)));
370
371 StatusCode addEventStatus = m_schedulerSvc->pushNewEvent(evtContext);
372
373 // If this fails, we need to wait for something to complete
374 if (!addEventStatus.isSuccess()){
375 fatal() << "An event processing slot should be now free in the scheduler, but it appears not to be the case." << endmsg;
376 }
377
378 createdEvts++;
379 return StatusCode::SUCCESS;
380
381 }
StatusCode::SUCCESS
Definition: StatusCode.h:30
HiveSlimEventLoopMgr::m_incidentSvc
SmartIF< IIncidentSvc > m_incidentSvc
Reference to the incident service.
Definition: HiveSlimEventLoopMgr.h:75
HiveSlimEventLoopMgr::declareEventRootAddress
StatusCode declareEventRootAddress()
Declare the root address of the event.
Definition: HiveSlimEventLoopMgr.cpp:553
Service::name
const std::string & name() const override
Retrieve name of the service.
Definition: Service.cpp:289
StatusCode::FAILURE
Definition: StatusCode.h:29
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:74
HiveSlimEventLoopMgr::m_schedulerSvc
SmartIF< IScheduler > m_schedulerSvc
A shortcut for the scheduler.
Definition: HiveSlimEventLoopMgr.h:59
CommonMessagingBase::verbose
MsgStream & verbose() const
shortcut for the method msgStream(MSG::VERBOSE)
Definition: CommonMessaging.h:129
std::binary_search
T binary_search(T...args)
HiveSlimEventLoopMgr::m_eventNumberBlacklist
Gaudi::Property< std::vector< unsigned int > > m_eventNumberBlacklist
Definition: HiveSlimEventLoopMgr.h:35
EventContext
This class represents an entry point to all the event specific data.
Definition: EventContext.h:25
StatusCode::isFailure
bool isFailure() const
Test for a status code of FAILURE.
Definition: StatusCode.h:84
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:26
HiveSlimEventLoopMgr::createEventContext
StatusCode createEventContext(EventContext *&eventContext, int createdEvents)
Create event context.
Definition: HiveSlimEventLoopMgr.cpp:581
IScheduler::pushNewEvent
virtual StatusCode pushNewEvent(EventContext *eventContext)=0
Make an event available to the scheduler.
std::unique_ptr< Incident >
LIKELY
#define LIKELY(x)
Definition: Kernel.h:125
StatusCode::RECOVERABLE
Definition: StatusCode.h:31
Incident
Base class for all Incidents (computing events).
Definition: Incident.h:17
CommonMessagingBase::fatal
MsgStream & fatal() const
shortcut for the method msgStream(MSG::FATAL)
Definition: CommonMessaging.h:111
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
HiveSlimEventLoopMgr::m_blackListBS
boost::dynamic_bitset * m_blackListBS
Definition: HiveSlimEventLoopMgr.h:78

StatusCode HiveSlimEventLoopMgr::executeRun | ( | int | maxevt | ) |
| override

implementation of IEventProcessor::executeRun()

Definition at line 386 of file HiveSlimEventLoopMgr.cpp.

386 {
387 StatusCode sc;
388 bool eventfailed = false;
389
390 if(maxevt > 0){ //finite number of events to process
391 const unsigned int umaxevt = static_cast<unsigned int>(maxevt);
392 m_blackListBS = new boost::dynamic_bitset<>(maxevt); //all initialized to zero
393 for(unsigned int i = 0; i < m_eventNumberBlacklist.size() && m_eventNumberBlacklist[i] <= umaxevt; ++i ){ //black list is sorted in init
394 m_blackListBS->set(m_eventNumberBlacklist[i], true);
395 }
396 }
397
398 sc = m_algResourcePool->beginRun();
399 if (sc.isFailure())
400 eventfailed=true;
401
402 // Call now the nextEvent(...)
403 sc = nextEvent(maxevt);
404 if (!sc.isSuccess())
405 eventfailed = true;
406
407 sc = m_algResourcePool->endRun();
408 if (sc.isFailure())
409 eventfailed=true;
410
411 if(m_blackListBS != nullptr)
412 delete m_blackListBS;
413
414 if (eventfailed)
415 return StatusCode::FAILURE;
416 else
417 return StatusCode::SUCCESS;
418 }
StatusCode::SUCCESS
Definition: StatusCode.h:30
StatusCode::FAILURE
Definition: StatusCode.h:29
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:74
HiveSlimEventLoopMgr::m_eventNumberBlacklist
Gaudi::Property< std::vector< unsigned int > > m_eventNumberBlacklist
Definition: HiveSlimEventLoopMgr.h:35
StatusCode::isFailure
bool isFailure() const
Test for a status code of FAILURE.
Definition: StatusCode.h:84
IAlgResourcePool::endRun
virtual StatusCode endRun()=0
End Run.
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
IAlgResourcePool::beginRun
virtual StatusCode beginRun()=0
Begin Run.
maxevt
int maxevt
Definition: Bootstrap.cpp:279
HiveSlimEventLoopMgr::m_algResourcePool
SmartIF< IAlgResourcePool > m_algResourcePool
Reference to the Algorithm resource pool.
Definition: HiveSlimEventLoopMgr.h:50
HiveSlimEventLoopMgr::nextEvent
StatusCode nextEvent(int maxevt) override
implementation of IService::nextEvent
Definition: HiveSlimEventLoopMgr.cpp:441
HiveSlimEventLoopMgr::m_blackListBS
boost::dynamic_bitset * m_blackListBS
Definition: HiveSlimEventLoopMgr.h:78

StatusCode HiveSlimEventLoopMgr::finalize | ( |  | ) |
| override

implementation of IService::finalize

Definition at line 247 of file HiveSlimEventLoopMgr.cpp.

247 {
248
249 StatusCode scRet;
250 StatusCode sc = Service::finalize();
251
252 if (sc.isFailure()) {
253 scRet = StatusCode::FAILURE;
254 error() << "Problems finalizing Service base class" << endmsg;
255 }
256
257 // Save Histograms Now
258 if ( m_histoPersSvc != 0 ) {
259 HistogramAgent agent;
260 sc = m_histoDataMgrSvc->traverseTree( &agent );
261 if( sc.isSuccess() ) {
262 IDataSelector* objects = agent.selectedObjects();
263 // skip /stat entry!
264 if ( objects->size() > 0 ) {
265 IDataSelector::iterator i;
266 for ( i = objects->begin(); i != objects->end(); i++ ) {
267 IOpaqueAddress* pAddr = 0;
268 StatusCode iret = m_histoPersSvc->createRep(*i, pAddr);
269 if ( iret.isSuccess() ) {
270 (*i)->registry()->setAddress(pAddr);
271 }
272 else {
273 sc = iret;
274 }
275 }
276 for ( i = objects->begin(); i != objects->end(); i++ ) {
277 IRegistry* reg = (*i)->registry();
278 StatusCode iret = m_histoPersSvc->fillRepRefs(reg->address(), *i);
279 if ( !iret.isSuccess() ) {
280 sc = iret;
281 }
282 }
283 }
284 if ( sc.isSuccess() ) {
285 info() << "Histograms converted successfully according to request." << endmsg;
286 }
287 else {
288 error() << "Error while saving Histograms." << endmsg;
289 }
290 }
291 else {
292 error() << "Error while traversing Histogram data store" << endmsg;
293 }
294 }
295
296 scRet=sc;
297
298 // Release event selector context
299 if ( m_evtSelector && m_evtContext ) {
300 m_evtSelector->releaseContext(m_evtContext).ignore();
301 m_evtContext = 0;
302 }
303
304 m_incidentSvc = 0; // release
305 m_appMgrUI = 0; // release
306
307 // Release all interfaces...
308 m_histoDataMgrSvc = 0;
309 m_histoPersSvc = 0;
310
311 m_evtSelector = 0;
312 m_whiteboard = 0;
313 m_evtDataMgrSvc = 0;
314
315 return scRet;
316 }
HiveSlimEventLoopMgr::m_incidentSvc
SmartIF< IIncidentSvc > m_incidentSvc
Reference to the incident service.
Definition: HiveSlimEventLoopMgr.h:75
HiveSlimEventLoopMgr::m_evtDataMgrSvc
SmartIF< IDataManagerSvc > m_evtDataMgrSvc
Reference to the Event Data Service&#39;s IDataManagerSvc interface.
Definition: HiveSlimEventLoopMgr.h:38
StatusCode::FAILURE
Definition: StatusCode.h:29
Service::finalize
StatusCode finalize() override
Definition: Service.cpp:174
HiveSlimEventLoopMgr::m_appMgrUI
SmartIF< IAppMgrUI > m_appMgrUI
Reference to the IAppMgrUI interface of the application manager.
Definition: HiveSlimEventLoopMgr.h:73
CommonMessagingBase::info
MsgStream & info() const
shortcut for the method msgStream(MSG::INFO)
Definition: CommonMessaging.h:123
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:74
HistogramAgent
HistogramAgent base in charge of collecting all the refereces to DataObjects in a transient store tha...
Definition: HistogramAgent.h:17
HiveSlimEventLoopMgr::m_whiteboard
SmartIF< IHiveWhiteBoard > m_whiteboard
Reference to the Whiteboard.
Definition: HiveSlimEventLoopMgr.h:48
std::vector::end
T end(T...args)
IConverter::createRep
virtual StatusCode createRep(DataObject *pObject, IOpaqueAddress *&refpAddress)=0
Convert the transient object to the requested representation.
StatusCode::isFailure
bool isFailure() const
Test for a status code of FAILURE.
Definition: StatusCode.h:84
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:117
IDataManagerSvc::traverseTree
virtual StatusCode traverseTree(IDataStoreAgent *pAgent)=0
Analyse by traversing all data objects in the data store.
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
IRegistry
The IRegistry represents the entry door to the environment any data object residing in a transient da...
Definition: IRegistry.h:22
IEvtSelector::releaseContext
virtual StatusCode releaseContext(Context *&) const =0
Release the Context object.
HistogramAgent::selectedObjects
IDataSelector * selectedObjects()
Return the set of selected DataObjects.
Definition: HistogramAgent.h:28
std::vector::size
T size(T...args)
std::vector< DataObject * >
HiveSlimEventLoopMgr::m_histoPersSvc
SmartIF< IConversionSvc > m_histoPersSvc
Reference to the Histogram Persistency Service.
Definition: HiveSlimEventLoopMgr.h:46
std::vector::begin
T begin(T...args)
HiveSlimEventLoopMgr::m_histoDataMgrSvc
SmartIF< IDataManagerSvc > m_histoDataMgrSvc
Reference to the Histogram Data Service.
Definition: HiveSlimEventLoopMgr.h:44
HiveSlimEventLoopMgr::m_evtSelector
SmartIF< IEvtSelector > m_evtSelector
Reference to the Event Selector.
Definition: HiveSlimEventLoopMgr.h:40
IOpaqueAddress
Opaque address interface definition.
Definition: IOpaqueAddress.h:23
StatusCode::ignore
void ignore() const
Definition: StatusCode.h:106
IRegistry::address
virtual IOpaqueAddress * address() const =0
Retrieve opaque storage address.
IConverter::fillRepRefs
virtual StatusCode fillRepRefs(IOpaqueAddress *pAddress, DataObject *pObject)=0
Resolve the references of the converted object.
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
HiveSlimEventLoopMgr::m_evtContext
IEvtSelector::Context * m_evtContext
Event Iterator.
Definition: HiveSlimEventLoopMgr.h:42

StatusCode HiveSlimEventLoopMgr::getEventRoot | ( | IOpaqueAddress *& | refpAddr | ) |

Create event address using event selector.

Definition at line 531 of file HiveSlimEventLoopMgr.cpp.

531 {
532 refpAddr = 0;
533 StatusCode sc = m_evtSelector->next(*m_evtContext);
534 if ( !sc.isSuccess() ) {
535 return sc;
536 }
537 // Create root address and assign address to data service
538 sc = m_evtSelector->createAddress(*m_evtContext,refpAddr);
539 if( !sc.isSuccess() ) {
540 sc = m_evtSelector->next(*m_evtContext);
541 if ( sc.isSuccess() ) {
542 sc = m_evtSelector->createAddress(*m_evtContext,refpAddr);
543 if ( !sc.isSuccess() ) {
544 warning() << "Error creating IOpaqueAddress." << endmsg;
545 }
546 }
547 }
548 return sc;
549 }
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:74
CommonMessagingBase::warning
MsgStream & warning() const
shortcut for the method msgStream(MSG::WARNING)
Definition: CommonMessaging.h:120
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
HiveSlimEventLoopMgr::m_evtSelector
SmartIF< IEvtSelector > m_evtSelector
Reference to the Event Selector.
Definition: HiveSlimEventLoopMgr.h:40
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...
IEvtSelector::createAddress
virtual StatusCode createAddress(const Context &c, IOpaqueAddress *&iop) const =0
Create an IOpaqueAddress object from the event fetched.
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
HiveSlimEventLoopMgr::m_evtContext
IEvtSelector::Context * m_evtContext
Event Iterator.
Definition: HiveSlimEventLoopMgr.h:42

StatusCode HiveSlimEventLoopMgr::initialize | ( |  | ) |
| override

implementation of IService::initialize

Definition at line 67 of file HiveSlimEventLoopMgr.cpp.

67 {
68
69 if ( !m_appMgrUI.isValid() ) {
70 return StatusCode::FAILURE;
71 }
72
73 StatusCode sc = Service::initialize();
74 if ( !sc.isSuccess() ) {
75 error() << "Failed to initialize Service Base class." << endmsg;
76 return StatusCode::FAILURE;
77 }
78
79 // Get the references to the services that are needed by the ApplicationMgr itself
80 m_incidentSvc = serviceLocator()->service("IncidentSvc");
81 if( !m_incidentSvc.isValid() ) {
82 fatal() << "Error retrieving IncidentSvc." << endmsg;
83 return StatusCode::FAILURE;
84 }
85
86 // Setup access to event data services
87 m_evtDataMgrSvc = serviceLocator()->service("EventDataSvc");
88 if( !m_evtDataMgrSvc.isValid() ) {
89 fatal() << "Error retrieving EventDataSvc interface IDataManagerSvc." << endmsg;
90 return StatusCode::FAILURE;
91 }
92 m_whiteboard = serviceLocator()->service("EventDataSvc");
93 if( !m_whiteboard.isValid() ) {
94 fatal() << "Error retrieving EventDataSvc interface IHiveWhiteBoard." << endmsg;
95 return StatusCode::FAILURE;
96 }
97 m_schedulerSvc = serviceLocator()->service(m_schedulerName);
98 if ( !m_schedulerSvc.isValid()){
99 fatal() << "Error retrieving SchedulerSvc interface IScheduler." << endmsg;
100 return StatusCode::FAILURE;
101 }
102 // Obtain the IProperty of the ApplicationMgr
103 m_appMgrProperty = serviceLocator();
104 if ( ! m_appMgrProperty.isValid() ) {
105 fatal() << "IProperty interface not found in ApplicationMgr." << endmsg;
106 return StatusCode::FAILURE;
107 }
108
109 // We do not expect a Event Selector necessarily being declared
110 setProperty(m_appMgrProperty->getProperty("EvtSel")).ignore();
111
112 if( m_evtsel != "NONE" || m_evtsel.length() == 0) {
113 m_evtSelector = serviceLocator()->service("EventSelector");
114 if( m_evtSelector.isValid() ) {
115 // Setup Event Selector
116 sc=m_evtSelector->createContext(m_evtContext);
117 if( !sc.isSuccess() ) {
118 fatal() << "Can not create the event selector Context." << endmsg;
119 return sc;
120 }
121 }
122 else {
123 fatal() << "EventSelector not found." << endmsg;
124 return sc;
125 }
126 }
127 else {
128 m_evtSelector = 0;
129 m_evtContext = 0;
130 if ( m_warnings ) {
131 warning() << "Unable to locate service \"EventSelector\" " << endmsg;
132 warning() << "No events will be processed from external input." << endmsg;
133 }
134 }
135
136 // Setup access to histogramming services
137 m_histoDataMgrSvc = serviceLocator()->service("HistogramDataSvc");
138 if( !m_histoDataMgrSvc.isValid() ) {
139 fatal() << "Error retrieving HistogramDataSvc." << endmsg;
140 return sc;
141 }
142 // Setup histogram persistency
143 m_histoPersSvc = serviceLocator()->service("HistogramPersistencySvc");
144 if( !m_histoPersSvc.isValid() ) {
145 warning() << "Histograms cannot not be saved - though required." << endmsg;
146 return sc;
147 }
148
149 // Setup algorithm resource pool
150 m_algResourcePool = serviceLocator()->service("AlgResourcePool");
151 if( !m_algResourcePool.isValid() ) {
152 fatal() << "Error retrieving AlgResourcePool" << endmsg;
153 return StatusCode::FAILURE;
154 }
155
156 m_algExecStateSvc = serviceLocator()->service("AlgExecStateSvc");
157 if( !m_algExecStateSvc.isValid() ) {
158 fatal() << "Error retrieving AlgExecStateSvc" << endmsg;
159 return StatusCode::FAILURE;
160 }
161
162 std::sort(m_eventNumberBlacklist.begin(), m_eventNumberBlacklist.end());
163 info() << "Found " << m_eventNumberBlacklist.size() << " events in black list" << endmsg;
164
165 return StatusCode::SUCCESS;
166 }
Service::initialize
StatusCode initialize() override
Definition: Service.cpp:64
StatusCode::SUCCESS
Definition: StatusCode.h:30
HiveSlimEventLoopMgr::m_evtsel
Gaudi::Property< std::string > m_evtsel
Definition: HiveSlimEventLoopMgr.h:31
HiveSlimEventLoopMgr::m_incidentSvc
SmartIF< IIncidentSvc > m_incidentSvc
Reference to the incident service.
Definition: HiveSlimEventLoopMgr.h:75
HiveSlimEventLoopMgr::m_evtDataMgrSvc
SmartIF< IDataManagerSvc > m_evtDataMgrSvc
Reference to the Event Data Service&#39;s IDataManagerSvc interface.
Definition: HiveSlimEventLoopMgr.h:38
StatusCode::FAILURE
Definition: StatusCode.h:29
PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >::setProperty
StatusCode setProperty(const Gaudi::Details::PropertyBase &p) override
set the property form another property
Definition: PropertyHolder.h:210
HiveSlimEventLoopMgr::m_appMgrUI
SmartIF< IAppMgrUI > m_appMgrUI
Reference to the IAppMgrUI interface of the application manager.
Definition: HiveSlimEventLoopMgr.h:73
CommonMessagingBase::info
MsgStream & info() const
shortcut for the method msgStream(MSG::INFO)
Definition: CommonMessaging.h:123
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:74
HiveSlimEventLoopMgr::m_whiteboard
SmartIF< IHiveWhiteBoard > m_whiteboard
Reference to the Whiteboard.
Definition: HiveSlimEventLoopMgr.h:48
HiveSlimEventLoopMgr::m_schedulerSvc
SmartIF< IScheduler > m_schedulerSvc
A shortcut for the scheduler.
Definition: HiveSlimEventLoopMgr.h:59
HiveSlimEventLoopMgr::m_eventNumberBlacklist
Gaudi::Property< std::vector< unsigned int > > m_eventNumberBlacklist
Definition: HiveSlimEventLoopMgr.h:35
IProperty::getProperty
virtual StatusCode getProperty(Gaudi::Details::PropertyBase *p) const =0
Get the property by property.
HiveSlimEventLoopMgr::m_appMgrProperty
SmartIF< IProperty > m_appMgrProperty
Property interface of ApplicationMgr.
Definition: HiveSlimEventLoopMgr.h:54
HiveSlimEventLoopMgr::m_warnings
Gaudi::Property< bool > m_warnings
Definition: HiveSlimEventLoopMgr.h:32
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
CommonMessagingBase::warning
MsgStream & warning() const
shortcut for the method msgStream(MSG::WARNING)
Definition: CommonMessaging.h:120
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
HiveSlimEventLoopMgr::m_algExecStateSvc
SmartIF< IAlgExecStateSvc > m_algExecStateSvc
Reference to the AlgExecStateSvc.
Definition: HiveSlimEventLoopMgr.h:52
HiveSlimEventLoopMgr::m_histoPersSvc
SmartIF< IConversionSvc > m_histoPersSvc
Reference to the Histogram Persistency Service.
Definition: HiveSlimEventLoopMgr.h:46
HiveSlimEventLoopMgr::m_schedulerName
Gaudi::Property< std::string > m_schedulerName
Definition: HiveSlimEventLoopMgr.h:33
SmartIF::isValid
bool isValid() const
Allow for check if smart pointer is valid.
Definition: SmartIF.h:62
HiveSlimEventLoopMgr::m_histoDataMgrSvc
SmartIF< IDataManagerSvc > m_histoDataMgrSvc
Reference to the Histogram Data Service.
Definition: HiveSlimEventLoopMgr.h:44
HiveSlimEventLoopMgr::m_evtSelector
SmartIF< IEvtSelector > m_evtSelector
Reference to the Event Selector.
Definition: HiveSlimEventLoopMgr.h:40
std::sort
T sort(T...args)
IEvtSelector::createContext
virtual StatusCode createContext(Context *&c) const =0
Create and return a context object that will keep track of the state of selection.
CommonMessagingBase::fatal
MsgStream & fatal() const
shortcut for the method msgStream(MSG::FATAL)
Definition: CommonMessaging.h:111
HiveSlimEventLoopMgr::m_algResourcePool
SmartIF< IAlgResourcePool > m_algResourcePool
Reference to the Algorithm resource pool.
Definition: HiveSlimEventLoopMgr.h:50
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:244
HiveSlimEventLoopMgr::m_evtContext
IEvtSelector::Context * m_evtContext
Event Iterator.
Definition: HiveSlimEventLoopMgr.h:42

StatusCode HiveSlimEventLoopMgr::nextEvent | ( | int | maxevt | ) |
| override

implementation of IService::nextEvent

Definition at line 441 of file HiveSlimEventLoopMgr.cpp.

441 {
442
443 // Calculate runtime
444 typedef std::chrono::high_resolution_clock Clock;
445 typedef Clock::time_point time_point;
446
447 // Reset the application return code.
448 Gaudi::setAppReturnCode(m_appMgrProperty, Gaudi::ReturnCode::Success, true).ignore();
449
450 int finishedEvts =0;
451 int createdEvts =0;
452 int skippedEvts = 0;
453 info() << "Starting loop on events" << endmsg;
454 // Loop until the finished events did not reach the maxevt number
455 bool loop_ended = false;
456 // Run the first event before spilling more than one
457 bool newEvtAllowed = false ;
458
459 constexpr double oneOver1204 = 1./1024.;
460
461 uint iteration = 0;
462 time_point start_time = Clock::now();
463 while ( !loop_ended and (maxevt < 0 or (finishedEvts+skippedEvts) < maxevt)){
464 debug() << "work loop iteration " << iteration++ << endmsg;
465 // if the created events did not reach maxevt, create an event
466 if ((newEvtAllowed or createdEvts == 0 ) && // Launch the first event alone
467 createdEvts >= 0 && // The events are not finished with an unlimited number of events
468 (createdEvts < maxevt or maxevt<0) && // The events are not finished with a limited number of events
469 m_schedulerSvc->freeSlots()>0){ // There are still free slots in the scheduler
470
471 if (1==createdEvts) // reset counter to count from event 1
472 start_time = Clock::now();
473
474 debug() << "createdEvts: " << createdEvts << ", freeslots: " << m_schedulerSvc->freeSlots() << endmsg;
475 // DP remove to remove the syscalls...
476 // if (0!=createdEvts){
477 // info() << "Event Number = " << createdEvts
478 // << " WSS (MB) = " << System::mappedMemory(System::MemoryUnit::kByte)*oneOver1204
479 // << " Time (s) = " << secsFromStart(start_time) << endmsg;
480 // }
481
482 //TODO can we adapt the interface of executeEvent for a nicer solution?
483 StatusCode sc = StatusCode::RECOVERABLE;
484 while(!sc.isSuccess() //we haven't created an event yet
485 && (createdEvts < maxevt or maxevt<0)){ //redunant check for maxEvts, can we do better?
486 sc = executeEvent(&createdEvts);
487
488 if (sc.isRecoverable()){ //we skipped an event
489
490 //this is all to skip the event
491 size_t slot = m_whiteboard->allocateStore(createdEvts); //we need a new store, not to change the previous event
492 m_whiteboard->selectStore(slot);
493 declareEventRootAddress(); //actually skip over the event
494 m_whiteboard->freeStore(slot); // delete the store
495
496 ++createdEvts;
497 ++skippedEvts;
498 } else if (sc.isRecoverable()){ //exit immediatly
499 return StatusCode::FAILURE;
500 } // else we have an success --> exit loop
501 }
502
503 } // end if condition createdEvts < maxevt
504 else{
505 // all the events were created but not all finished or the slots were
506 // all busy: the scheduler should finish its job
507
508 debug() << "Draining the scheduler" << endmsg;
509
510 // Pull out of the scheduler the finished events
511 if (drainScheduler(finishedEvts).isFailure()){
512 loop_ended = true;
513 }
514 newEvtAllowed = true;
515 }
516 } // end main loop on finished events
517 time_point end_time = Clock::now();
518
519 info() << "---> Loop Finished (skipping 1st evt) - "
520 << " WSS " << System::mappedMemory(System::MemoryUnit::kByte)*oneOver1204
521 << " total time " << std::chrono::duration_cast < std::chrono::nanoseconds > (end_time - start_time).count() <<endmsg;
522 info() << skippedEvts << " events were SKIPed" << endmsg;
523
524 return StatusCode::SUCCESS;
525
526 }
std::chrono::nanoseconds
StatusCode::SUCCESS
Definition: StatusCode.h:30
HiveSlimEventLoopMgr::declareEventRootAddress
StatusCode declareEventRootAddress()
Declare the root address of the event.
Definition: HiveSlimEventLoopMgr.cpp:553
StatusCode::FAILURE
Definition: StatusCode.h:29
CommonMessagingBase::info
MsgStream & info() const
shortcut for the method msgStream(MSG::INFO)
Definition: CommonMessaging.h:123
HiveSlimEventLoopMgr::drainScheduler
StatusCode drainScheduler(int &finishedEvents)
Drain the scheduler from all actions that may be queued.
Definition: HiveSlimEventLoopMgr.cpp:598
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:74
HiveSlimEventLoopMgr::m_whiteboard
SmartIF< IHiveWhiteBoard > m_whiteboard
Reference to the Whiteboard.
Definition: HiveSlimEventLoopMgr.h:48
HiveSlimEventLoopMgr::m_schedulerSvc
SmartIF< IScheduler > m_schedulerSvc
A shortcut for the scheduler.
Definition: HiveSlimEventLoopMgr.h:59
std::chrono::duration_cast
T duration_cast(T...args)
HiveSlimEventLoopMgr::m_appMgrProperty
SmartIF< IProperty > m_appMgrProperty
Property interface of ApplicationMgr.
Definition: HiveSlimEventLoopMgr.h:54
System::kByte
Definition: Memory.h:56
IHiveWhiteBoard::selectStore
virtual StatusCode selectStore(size_t partitionIndex)=0
Activate an given &#39;slot&#39; for all subsequent calls within the same thread id.
std::chrono::high_resolution_clock
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
StatusCode::isRecoverable
bool isRecoverable() const
Definition: StatusCode.h:85
Clock
std::chrono::high_resolution_clock Clock
Definition: ITimelineSvc.h:10
Gaudi::setAppReturnCode
StatusCode setAppReturnCode(SmartIF< IProperty > &appmgr, int value, bool force=false)
Set the application return code.
Definition: AppReturnCode.h:51
std::count
T count(T...args)
System::mappedMemory
GAUDI_API long mappedMemory(MemoryUnit unit=kByte, InfoType fetch=Memory, long pid=-1)
Basic Process Information: priority boost.
Definition: Memory.cpp:180
CommonMessagingBase::debug
MsgStream & debug() const
shortcut for the method msgStream(MSG::DEBUG)
Definition: CommonMessaging.h:126
IHiveWhiteBoard::allocateStore
virtual size_t allocateStore(int evtnumber)=0
Allocate a store partition for new event.
StatusCode::RECOVERABLE
Definition: StatusCode.h:31
time_point
Clock::time_point time_point
Definition: ITimelineSvc.h:11
std::chrono::high_resolution_clock::now
T now(T...args)
IHiveWhiteBoard::freeStore
virtual StatusCode freeStore(size_t partitionIndex)=0
Free a store partition.
maxevt
int maxevt
Definition: Bootstrap.cpp:279
StatusCode::ignore
void ignore() const
Definition: StatusCode.h:106
Gaudi::ReturnCode::Success
constexpr int Success
Definition: AppReturnCode.h:18
HiveSlimEventLoopMgr::executeEvent
StatusCode executeEvent(void *par) override
implementation of IEventProcessor::executeEvent(void* par)
Definition: HiveSlimEventLoopMgr.cpp:321
IScheduler::freeSlots
virtual unsigned int freeSlots()=0
Get the free event processing slots.
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244

StatusCode HiveSlimEventLoopMgr::reinitialize | ( |  | ) |
| override

implementation of IService::reinitialize

Definition at line 170 of file HiveSlimEventLoopMgr.cpp.

170 {
171
172
173 // Check to see whether a new Event Selector has been specified
174 setProperty(m_appMgrProperty->getProperty("EvtSel"));
175 if( m_evtsel != "NONE" || m_evtsel.length() == 0) {
176 SmartIF<IService> theSvc(serviceLocator()->service("EventSelector"));
177 SmartIF<IEvtSelector> theEvtSel(theSvc);
178 StatusCode sc;
179 if( theEvtSel.isValid() && ( theEvtSel.get() != m_evtSelector.get() ) ) {
180 // Setup Event Selector
181 if ( m_evtSelector.get() && m_evtContext ) {
182 // Need to release context before switching to new event selector
183 m_evtSelector->releaseContext(m_evtContext);
184 m_evtContext = 0;
185 }
186 m_evtSelector = theEvtSel;
187 if (theSvc->FSMState() == Gaudi::StateMachine::INITIALIZED) {
188 sc = theSvc->reinitialize();
189 if( !sc.isSuccess() ) {
190 error() << "Failure Reinitializing EventSelector "
191 << theSvc->name( ) << endmsg;
192 return sc;
193 }
194 }
195 else {
196 sc = theSvc->sysInitialize();
197 if( !sc.isSuccess() ) {
198 error() << "Failure Initializing EventSelector "
199 << theSvc->name( ) << endmsg;
200 return sc;
201 }
202 }
203 sc = m_evtSelector->createContext(m_evtContext);
204 if( !sc.isSuccess() ) {
205 error() << "Can not create Context " << theSvc->name( ) << endmsg;
206 return sc;
207 }
208
209 }
210 else if ( m_evtSelector.isValid() ) {
211 if ( m_evtContext ) {
212 m_evtSelector->releaseContext(m_evtContext);
213 m_evtContext = 0;
214 }
215 sc = m_evtSelector->createContext(m_evtContext);
216 if( !sc.isSuccess() ) {
217 error() << "Can not create Context " << theSvc->name( ) << endmsg;
218 return sc;
219 }
220 }
221 }
222 else if ( m_evtSelector.isValid() && m_evtContext ) {
223 m_evtSelector->releaseContext(m_evtContext);
224 m_evtSelector = 0;
225 m_evtContext = 0;
226 }
227 return StatusCode::SUCCESS;
228 }
Gaudi::StateMachine::INITIALIZED
Definition: StateMachine.h:15
StatusCode::SUCCESS
Definition: StatusCode.h:30
HiveSlimEventLoopMgr::m_evtsel
Gaudi::Property< std::string > m_evtsel
Definition: HiveSlimEventLoopMgr.h:31
SmartIF< IService >
PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >::setProperty
StatusCode setProperty(const Gaudi::Details::PropertyBase &p) override
set the property form another property
Definition: PropertyHolder.h:210
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:74
IProperty::getProperty
virtual StatusCode getProperty(Gaudi::Details::PropertyBase *p) const =0
Get the property by property.
HiveSlimEventLoopMgr::m_appMgrProperty
SmartIF< IProperty > m_appMgrProperty
Property interface of ApplicationMgr.
Definition: HiveSlimEventLoopMgr.h:54
SmartIF::get
TYPE * get() const
Get interface pointer.
Definition: SmartIF.h:76
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:117
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
IEvtSelector::releaseContext
virtual StatusCode releaseContext(Context *&) const =0
Release the Context object.
SmartIF::isValid
bool isValid() const
Allow for check if smart pointer is valid.
Definition: SmartIF.h:62
HiveSlimEventLoopMgr::m_evtSelector
SmartIF< IEvtSelector > m_evtSelector
Reference to the Event Selector.
Definition: HiveSlimEventLoopMgr.h:40
Service::service
StatusCode service(const std::string &name, const T *&psvc, bool createIf=true) const
Access a service by name, creating it if it doesn&#39;t already exist.
Definition: Service.h:85
IEvtSelector::createContext
virtual StatusCode createContext(Context *&c) const =0
Create and return a context object that will keep track of the state of selection.
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:244
HiveSlimEventLoopMgr::m_evtContext
IEvtSelector::Context * m_evtContext
Event Iterator.
Definition: HiveSlimEventLoopMgr.h:42

StatusCode HiveSlimEventLoopMgr::stop | ( |  | ) |
| override

implementation of IService::stop

Definition at line 234 of file HiveSlimEventLoopMgr.cpp.

234 {
235 if ( ! m_endEventFired ) {
236 // Fire pending EndEvent incident
237 m_incidentSvc->fireIncident(Incident(name(),IncidentType::EndEvent));
238 m_endEventFired = true;
239 }
240 return StatusCode::SUCCESS;
241 }
StatusCode::SUCCESS
Definition: StatusCode.h:30
HiveSlimEventLoopMgr::m_incidentSvc
SmartIF< IIncidentSvc > m_incidentSvc
Reference to the incident service.
Definition: HiveSlimEventLoopMgr.h:75
Service::name
const std::string & name() const override
Retrieve name of the service.
Definition: Service.cpp:289
IIncidentSvc::fireIncident
virtual void fireIncident(const Incident &incident)=0
Fire an Incident.
Incident
Base class for all Incidents (computing events).
Definition: Incident.h:17
HiveSlimEventLoopMgr::m_endEventFired
bool m_endEventFired
Flag to avoid to fire the EnvEvent incident twice in a row (and also not before the first event) ...
Definition: HiveSlimEventLoopMgr.h:57

StatusCode HiveSlimEventLoopMgr::stopRun | ( |  | ) |
| override

implementation of IEventProcessor::stopRun()

Definition at line 423 of file HiveSlimEventLoopMgr.cpp.

423 {
424 // Set the application return code
425 SmartIF<IProperty> appmgr(serviceLocator());
426 if(Gaudi::setAppReturnCode(appmgr, Gaudi::ReturnCode::ScheduledStop).isFailure()) {
427 error() << "Could not set return code of the application ("
428 << Gaudi::ReturnCode::ScheduledStop << ")" << endmsg;
429 }
430 m_scheduledStop = true;
431 return StatusCode::SUCCESS;
432 }
StatusCode::SUCCESS
Definition: StatusCode.h:30
SmartIF< IProperty >
HiveSlimEventLoopMgr::m_scheduledStop
bool m_scheduledStop
Scheduled stop of event processing.
Definition: HiveSlimEventLoopMgr.h:71
Gaudi::ReturnCode::ScheduledStop
constexpr int ScheduledStop
Definition: AppReturnCode.h:27
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:117
Gaudi::setAppReturnCode
StatusCode setAppReturnCode(SmartIF< IProperty > &appmgr, int value, bool force=false)
Set the application return code.
Definition: AppReturnCode.h:51
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:244

## Member Data Documentation

SmartIF<IIncidentListener> HiveSlimEventLoopMgr::m_abortEventListener
| protected

Instance of the incident listener waiting for AbortEvent.

Definition at line 69 of file HiveSlimEventLoopMgr.h.

SmartIF<IAlgExecStateSvc> HiveSlimEventLoopMgr::m_algExecStateSvc
| protected

Reference to the AlgExecStateSvc.

Definition at line 52 of file HiveSlimEventLoopMgr.h.

SmartIF<IAlgResourcePool> HiveSlimEventLoopMgr::m_algResourcePool
| protected

Reference to the Algorithm resource pool.

Definition at line 50 of file HiveSlimEventLoopMgr.h.

SmartIF<IProperty> HiveSlimEventLoopMgr::m_appMgrProperty
| protected

Property interface of ApplicationMgr.

Definition at line 54 of file HiveSlimEventLoopMgr.h.

SmartIF<IAppMgrUI> HiveSlimEventLoopMgr::m_appMgrUI
| protected

Reference to the IAppMgrUI interface of the application manager.

Definition at line 73 of file HiveSlimEventLoopMgr.h.

boost::dynamic_bitset* HiveSlimEventLoopMgr::m_blackListBS = nullptr
| protected

Definition at line 78 of file HiveSlimEventLoopMgr.h.

bool HiveSlimEventLoopMgr::m_endEventFired = false
| protected

Flag to avoid to fire the EnvEvent incident twice in a row (and also not before the first event)

Definition at line 57 of file HiveSlimEventLoopMgr.h.

Gaudi::Property<std::vector<unsigned int> > HiveSlimEventLoopMgr::m_eventNumberBlacklist {this, "EventNumberBlackList", {}, ""}
| protected

Definition at line 35 of file HiveSlimEventLoopMgr.h.

IEvtSelector::Context* HiveSlimEventLoopMgr::m_evtContext = nullptr
| protected

Event Iterator.

Definition at line 42 of file HiveSlimEventLoopMgr.h.

SmartIF<IDataManagerSvc> HiveSlimEventLoopMgr::m_evtDataMgrSvc
| protected

Reference to the Event Data Service's IDataManagerSvc interface.

Definition at line 38 of file HiveSlimEventLoopMgr.h.

Gaudi::Property<std::string> HiveSlimEventLoopMgr::m_evtsel {this, "EvtSel", "", ""}
| protected

Definition at line 31 of file HiveSlimEventLoopMgr.h.

SmartIF<IEvtSelector> HiveSlimEventLoopMgr::m_evtSelector
| protected

Reference to the Event Selector.

Definition at line 40 of file HiveSlimEventLoopMgr.h.

SmartIF<IDataManagerSvc> HiveSlimEventLoopMgr::m_histoDataMgrSvc
| protected

Reference to the Histogram Data Service.

Definition at line 44 of file HiveSlimEventLoopMgr.h.

SmartIF<IConversionSvc> HiveSlimEventLoopMgr::m_histoPersSvc
| protected

Reference to the Histogram Persistency Service.

Definition at line 46 of file HiveSlimEventLoopMgr.h.

Gaudi::Property<std::string> HiveSlimEventLoopMgr::m_histPersName {this, "HistogramPersistency", "", ""}
| protected

Definition at line 30 of file HiveSlimEventLoopMgr.h.

SmartIF<IIncidentSvc> HiveSlimEventLoopMgr::m_incidentSvc
| protected

Reference to the incident service.

Definition at line 75 of file HiveSlimEventLoopMgr.h.

bool HiveSlimEventLoopMgr::m_scheduledStop = false
| protected

Scheduled stop of event processing.

Definition at line 71 of file HiveSlimEventLoopMgr.h.

Gaudi::Property<std::string> HiveSlimEventLoopMgr::m_schedulerName
| protected

Initial value:
{this, "SchedulerName", "ForwardSchedulerSvc",
"Name of the scheduler to be used"}

Definition at line 33 of file HiveSlimEventLoopMgr.h.

SmartIF<IScheduler> HiveSlimEventLoopMgr::m_schedulerSvc
| protected

A shortcut for the scheduler.

Definition at line 59 of file HiveSlimEventLoopMgr.h.

Gaudi::Property<bool> HiveSlimEventLoopMgr::m_warnings {this, "Warnings", true, "Set this property to false to suppress warning messages"}
| protected

Definition at line 32 of file HiveSlimEventLoopMgr.h.

SmartIF<IHiveWhiteBoard> HiveSlimEventLoopMgr::m_whiteboard
| protected

Reference to the Whiteboard.

Definition at line 48 of file HiveSlimEventLoopMgr.h.

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

- GaudiHive/GaudiHive/HiveSlimEventLoopMgr.h
- GaudiHive/src/HiveSlimEventLoopMgr.cpp