| # Gaudi Framework, version v25r0 |

Home |  | Generated: Mon Feb 17 2014

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

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

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Public Types | Public Member Functions | Protected Types | Protected Attributes | Private Member Functions | List of all members
MinimalEventLoopMgr Class Reference

This is the default processing manager of the application manager. More...

`#include <MinimalEventLoopMgr.h>`

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

## Public Types
typedef std::list< SmartIF < IAlgorithm > > | ListAlg
typedef std::list< IAlgorithm * > | ListAlgPtrs
typedef std::list< std::string > | ListName
typedef std::vector< std::string > | VectorName
Public Types inherited from extends1< Service, IEventProcessor >
typedef extends1 | base_class
| Typedef to this class.
typedef extend_interfaces1 < IEventProcessor > | extend_interfaces_base
| Typedef to the base of this class.
typedef extend_interfaces_base::ext_iids | interfaces
| MPL set of all the implemented interfaces.
Public Types inherited from Service
typedef Gaudi::PluginService::Factory2 < IService *, const std::string &, ISvcLocator * > | Factory
Public Types inherited from CommonMessaging< implements3< IService, IProperty, IStateful > >
typedef CommonMessaging | base_class
Public Types inherited from implements3< IService, IProperty, IStateful >
typedef implements3 | base_class
| Typedef to this class.
typedef extend_interfaces3 < IService, IProperty, IStateful > | extend_interfaces_base
| Typedef to the base of this class.
typedef extend_interfaces_base::ext_iids | interfaces
| MPL set of all the implemented interfaces.
Public Types inherited from extend_interfaces3< I1, I2, I3 >
typedef mpl::fold< typename I1::iid::iids::type, typename mpl::fold< typename I2::iid::iids::type, typename I3::iid::iids::type, mpl::insert< mpl::_1, mpl::_2 > >::type, mpl::insert< mpl::_1, mpl::_2 > >::type | ext_iids
| MPL set of interfaces extended by this one.
Public Types inherited from extend_interfaces1< IEventProcessor >
typedef IEventProcessor::iid::iids::type | ext_iids
| MPL set of interfaces extended by this one.

## Public Member Functions
| MinimalEventLoopMgr (const std::string &nam, ISvcLocator *svcLoc)
| Standard Constructor.
virtual | ~MinimalEventLoopMgr ()
| Standard Destructor.
virtual StatusCode | initialize ()
| implementation of IService::initialize
virtual StatusCode | start ()
| implementation of IService::start
virtual StatusCode | stop ()
| implementation of IService::stop
virtual StatusCode | finalize ()
| implementation of IService::finalize
virtual StatusCode | reinitialize ()
| implementation of IService::reinitialize
virtual StatusCode | restart ()
| implementation of IService::restart
virtual StatusCode | nextEvent (int maxevt)
| implementation of IEventProcessor::nextEvent
virtual StatusCode | executeEvent (void *par)
| implementation of IEventProcessor::executeEvent(void* par)
virtual StatusCode | executeRun (int maxevt)
| implementation of IEventProcessor::executeRun( )
virtual StatusCode | stopRun ()
| implementation of IEventProcessor::stopRun( )
void | topAlgHandler (Property &p)
| Top algorithm List handler.
StatusCode | decodeTopAlgs ()
| decodeTopAlgNameList & topAlgNameListHandler
void | outStreamHandler (Property &p)
| Output stream List handler.
StatusCode | decodeOutStreams ()
| decodeOutStreamNameList & outStreamNameListHandler
Public Member Functions inherited from extends1< Service, IEventProcessor >
| extends1 (A1 a1, A2 a2, A3 a3)
| Templated constructor with 3 arguments.
| extends1 (A1 a1, A2 a2)
| Templated constructor with 2 arguments.
| extends1 (A1 a1)
| Templated constructor with 1 argument.
| extends1 ()
| Default constructor.
virtual void * | i_cast (const InterfaceID &tid) const
| Implementation of IInterface::i_cast.
virtual StatusCode | queryInterface (const InterfaceID &ti, void **pp)
| Implementation of IInterface::queryInterface.
virtual std::vector< std::string > | getInterfaceNames () const
| Implementation of IInterface::getInterfaceNames.
virtual | ~extends1 ()
| Virtual destructor.
Public Member Functions inherited from Service
virtual unsigned long | release ()
| Release Interface instance.
virtual const std::string & | name () const
| Retrieve name of the service.
virtual StatusCode | configure ()
virtual StatusCode | terminate ()
virtual Gaudi::StateMachine::State | FSMState () const
virtual Gaudi::StateMachine::State | targetFSMState () const
virtual StatusCode | sysInitialize ()
| Initialize Service.
virtual StatusCode | sysStart ()
| Initialize Service.
virtual StatusCode | sysStop ()
| Initialize Service.
virtual StatusCode | sysFinalize ()
| Finalize Service.
virtual StatusCode | sysReinitialize ()
| Re-initialize the Service.
virtual StatusCode | sysRestart ()
| Re-initialize the Service.
virtual StatusCode | setProperty (const Property &p)
virtual StatusCode | setProperty (const std::string &s)
virtual StatusCode | setProperty (const std::string &n, const std::string &v)
virtual StatusCode | getProperty (Property *p) const
virtual const Property & | getProperty (const std::string &name) const
virtual StatusCode | getProperty (const std::string &n, std::string &v) const
virtual const std::vector < Property * > & | getProperties () const
template<class TYPE >
StatusCode | setProperty (const std::string &name, const TYPE &value)
| set the property form the value
| Service (const std::string &name, ISvcLocator *svcloc)
| Standard Constructor.
SmartIF< ISvcLocator > & | serviceLocator () const
| Retrieve pointer to service locator.
StatusCode | setProperties ()
| Method for setting declared properties to the values specified for the job.
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.
template<class T >
StatusCode | service (const std::string &name, T *&psvc, 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.
template<class T >
Property * | declareProperty (const std::string &name, T &property, const std::string &doc="none") const
| Declare the named property.
Property * | declareRemoteProperty (const std::string &name, IProperty *rsvc, const std::string &rname="") const
| Declare remote named properties.
SmartIF< IAuditorSvc > & | auditorSvc () const
| The standard auditor service.May not be invoked before sysInitialize() has been invoked.
Public Member Functions inherited from CommonMessaging< implements3< IService, IProperty, IStateful > >
| CommonMessaging (const A1 &a1, const A2 &a2, const A3 &a3)
| Templated constructor with 3 arguments.
| CommonMessaging (const A1 &a1, const A2 &a2)
| Templated constructor with 2 arguments.
| CommonMessaging (const A1 &a1)
| Templated constructor with 1 argument.
| CommonMessaging ()
| Default constructor.
virtual | ~CommonMessaging ()
| Virtual destructor.
SmartIF< IMessageSvc > & | msgSvc () const
| The standard message service.
MsgStream & | msgStream () const
| Return an uninitialized MsgStream.
MsgStream & | msgStream (const MSG::Level level) const
| Predefined configurable message stream for the efficient printouts.
MsgStream & | always () const
| shortcut for the method msgStream(MSG::ALWAYS)
MsgStream & | fatal () const
| shortcut for the method msgStream(MSG::FATAL)
MsgStream & | err () const
| shortcut for the method msgStream(MSG::ERROR)
MsgStream & | error () const
| shortcut for the method msgStream(MSG::ERROR)
MsgStream & | warning () const
| shortcut for the method msgStream(MSG::WARNING)
MsgStream & | info () const
| shortcut for the method msgStream(MSG::INFO)
MsgStream & | debug () const
| shortcut for the method msgStream(MSG::DEBUG)
MsgStream & | verbose () const
| shortcut for the method msgStream(MSG::VERBOSE)
MsgStream & | msg () const
| shortcut for the method msgStream(MSG::INFO)
MSG::Level | msgLevel () const
| get the output level from the embedded MsgStream
bool | msgLevel (MSG::Level lvl) const
| get the output level from the embedded MsgStream
Public Member Functions inherited from extend_interfaces1< IEventProcessor >
virtual | ~extend_interfaces1 ()
| Virtual destructor.
Public Member Functions inherited from IEventProcessor
| DeclareInterfaceID (IEventProcessor, 3, 0)
| InterfaceID.
Public Member Functions inherited from IInterface
virtual unsigned long | addRef ()=0
| Increment the reference count of Interface instance.
virtual unsigned long | release ()=0
| Release Interface instance.
virtual unsigned long | refCount () const =0
| Current reference count.
virtual | ~IInterface ()
| Virtual destructor.

## Protected Types
enum | State { OFFLINE, CONFIGURED, FINALIZED, INITIALIZED }

## Protected Attributes
SmartIF< IAppMgrUI > | m_appMgrUI
| Reference to the IAppMgrUI interface of the application manager.
SmartIF< IIncidentSvc > | m_incidentSvc
| Reference to the incident service.
ListAlg | m_topAlgList
| List of top level algorithms.
ListAlg | m_outStreamList
| List of output streams.
std::string | m_outStreamType
| Out Stream type.
StringArrayProperty | m_topAlgNames
| List of top level algorithms names.
StringArrayProperty | m_outStreamNames
| List of output stream names.
State | m_state
| State of the object.
bool | m_scheduledStop
| Scheduled stop of event processing.
SmartIF< IIncidentListener > | m_abortEventListener
| Instance of the incident listener waiting for AbortEvent.
bool | m_abortEvent
| Flag signalling that the event being processedhas to be aborted (skip all following top algs).
std::string | m_abortEventSource
| Source of the AbortEvent incident.

## Private Member Functions
| MinimalEventLoopMgr (const MinimalEventLoopMgr &)
| Fake copy constructor (never implemented).
MinimalEventLoopMgr & | operator= (const MinimalEventLoopMgr &)
| Fake assignment operator (never implemented).

## Additional Inherited Members
Static Public Member Functions inherited from IInterface
static const InterfaceID & | interfaceID ()
| Return an instance of InterfaceID identifying the interface.
Protected Member Functions inherited from Service
virtual | ~Service ()
| Standard Destructor.
int | outputLevel () const
| get the `Service's` output level

## Detailed Description

This is the default processing manager of the application manager.

This object handles the minimal requirements needed by the application manager. It also is capable of handling a bunch of algorithms and output streams. However, they list may as well be empty.

Author
  Markus Frank

Version
  1.0

Definition at line 26 of file MinimalEventLoopMgr.h.

## Member Typedef Documentation

typedef std::list<SmartIF<IAlgorithm> > MinimalEventLoopMgr::ListAlg

Definition at line 29 of file MinimalEventLoopMgr.h.

typedef std::list<IAlgorithm*> MinimalEventLoopMgr::ListAlgPtrs

Definition at line 30 of file MinimalEventLoopMgr.h.

typedef std::list<std::string> MinimalEventLoopMgr::ListName

Definition at line 31 of file MinimalEventLoopMgr.h.

typedef std::vector<std::string> MinimalEventLoopMgr::VectorName

Definition at line 32 of file MinimalEventLoopMgr.h.

## Member Enumeration Documentation

enum MinimalEventLoopMgr::State
| protected

Enumerator:

  OFFLINE |
  CONFIGURED |
  FINALIZED |
  INITIALIZED |

Definition at line 36 of file MinimalEventLoopMgr.h.

{ OFFLINE, CONFIGURED, FINALIZED, INITIALIZED };

## Constructor & Destructor Documentation

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

Standard Constructor.

Definition at line 50 of file MinimalEventLoopMgr.cpp.

: base_class(nam, svcLoc), m_appMgrUI(svcLoc)
{
declareProperty("TopAlg", m_topAlgNames );
declareProperty("OutStream", m_outStreamNames );
declareProperty("OutStreamType", m_outStreamType = "OutputStream");
m_topAlgNames.declareUpdateHandler ( &MinimalEventLoopMgr::topAlgHandler, this );
m_outStreamNames.declareUpdateHandler( &MinimalEventLoopMgr::outStreamHandler, this );
m_state = OFFLINE;
m_scheduledStop = false;
m_abortEvent = false;
}

MinimalEventLoopMgr::~MinimalEventLoopMgr | ( |  | ) |
| virtual

Standard Destructor.

Definition at line 66 of file MinimalEventLoopMgr.cpp.

{
m_state = OFFLINE;
}

MinimalEventLoopMgr::MinimalEventLoopMgr | ( | const MinimalEventLoopMgr & |  | ) |
| private

Fake copy constructor (never implemented).

## Member Function Documentation

StatusCode MinimalEventLoopMgr::decodeOutStreams | ( |  | ) |

decodeOutStreamNameList & outStreamNameListHandler

Definition at line 539 of file MinimalEventLoopMgr.cpp.

{
StatusCode sc = StatusCode::SUCCESS;
if ( CONFIGURED == m_state || INITIALIZED == m_state ) {
SmartIF<IAlgManager> algMan(serviceLocator());
if ( algMan.isValid() ) {
// Reset the existing Top Algorithm List
m_outStreamList.clear();
const std::vector<std::string>& algNames = m_outStreamNames.value( );
for (VectorName::const_iterator it = algNames.begin(); it != algNames.end(); it++) {
Gaudi::Utils::TypeNameString item(*it, m_outStreamType);
DEBMSG << "Creating " << m_outStreamType << (*it) << endmsg;
const bool CREATE = false;
SmartIF<IAlgorithm> os = algMan->algorithm( item, CREATE );
if (os.isValid()) {
DEBMSG << "Output Stream " << item.name() << " already exists" << endmsg;
}
else {
DEBMSG << "Creating Output Stream " << (*it) << endmsg;
IAlgorithm* ios = 0;
StatusCode sc1 = algMan->createAlgorithm( item.type(), item.name(), ios );
if( !sc1.isSuccess() ) {
error() << "Unable to create Output Stream " << (*it) << endmsg;
return sc1;
}
os = ios; // manage reference counting
}
m_outStreamList.push_back( os );
}
return sc;
}
sc = StatusCode::FAILURE;
}
return sc;
}

StatusCode MinimalEventLoopMgr::decodeTopAlgs | ( |  | ) |

decodeTopAlgNameList & topAlgNameListHandler

Definition at line 489 of file MinimalEventLoopMgr.cpp.

{
StatusCode sc = StatusCode::SUCCESS;
if ( CONFIGURED == m_state || INITIALIZED == m_state ) {
SmartIF<IAlgManager> algMan(serviceLocator());
if ( algMan.isValid()) {
// Reset the existing Top Algorithm List
m_topAlgList.clear( );
const std::vector<std::string>& algNames = m_topAlgNames.value( );
for (VectorName::const_iterator it = algNames.begin(); it != algNames.end(); it++) {
Gaudi::Utils::TypeNameString item(*it);
// Got the type and name. Now creating the algorithm, avoiding duplicate creation.
std::string item_name = item.name() + getGaudiThreadIDfromName(name());
const bool CREATE = false;
SmartIF<IAlgorithm> alg = algMan->algorithm(item_name, CREATE);
if (alg.isValid()) {
DEBMSG << "Top Algorithm " << item_name << " already exists" << endmsg;
}
else {
DEBMSG << "Creating Top Algorithm " << item.type() << " with name " << item_name << endmsg;
IAlgorithm *ialg = 0;
StatusCode sc1 = algMan->createAlgorithm(item.type(), item_name, ialg);
if( !sc1.isSuccess() ) {
error() << "Unable to create Top Algorithm " << item.type() << " with name " << item_name << endmsg;
return sc1;
}
alg = ialg; // manage reference counting
}
m_topAlgList.push_back(alg);
}
return sc;
}
sc = StatusCode::FAILURE;
}
return sc;
}

StatusCode MinimalEventLoopMgr::executeEvent | ( | void * | par | ) |
| virtual

implementation of IEventProcessor::executeEvent(void* par)

Implements IEventProcessor.

Reimplemented in EventLoopMgr.

Definition at line 389 of file MinimalEventLoopMgr.cpp.

{
bool eventfailed = false;
// Call the resetExecuted() method of ALL "known" algorithms
// (before we were reseting only the topalgs)
SmartIF<IAlgManager> algMan(serviceLocator());
if (LIKELY(algMan.isValid())) {
const ListAlgPtrs& allAlgs = algMan->getAlgorithms() ;
for( ListAlgPtrs::const_iterator ialg = allAlgs.begin() ; allAlgs.end() != ialg ; ++ialg ) {
if (LIKELY(0 != *ialg)) (*ialg)->resetExecuted();
}
}
// Get the IProperty interface of the ApplicationMgr to pass it to RetCodeGuard
const SmartIF<IProperty> appmgr(serviceLocator());
// Call the execute() method of all top algorithms
for (ListAlg::iterator ita = m_topAlgList.begin(); ita != m_topAlgList.end(); ita++ ) {
StatusCode sc(StatusCode::FAILURE);
try {
if (UNLIKELY(m_abortEvent)) {
DEBMSG << "AbortEvent incident fired by "
<< m_abortEventSource << endmsg;
m_abortEvent = false;
sc.ignore();
break;
}
RetCodeGuard rcg(appmgr, Gaudi::ReturnCode::UnhandledException);
sc = (*ita)->sysExecute();
rcg.ignore(); // disarm the guard
} catch ( const GaudiException& Exception ) {
fatal() << ".executeEvent(): Exception with tag=" << Exception.tag()
<< " thrown by " << (*ita)->name() << endmsg;
error() << Exception << endmsg;
} catch ( const std::exception& Exception ) {
fatal() << ".executeEvent(): Standard std::exception thrown by "
<< (*ita)->name() << endmsg;
error() << Exception.what() << endmsg;
} catch(...) {
fatal() << ".executeEvent(): UNKNOWN Exception thrown by "
<< (*ita)->name() << endmsg;
}
if (UNLIKELY(!sc.isSuccess())) {
warning() << "Execution of algorithm " << (*ita)->name() << " failed" << endmsg;
eventfailed = true;
}
}
// ensure that the abortEvent flag is cleared before the next event
if (UNLIKELY(m_abortEvent)) {
DEBMSG << "AbortEvent incident fired by " << m_abortEventSource << endmsg;
m_abortEvent = false;
}
// Call the execute() method of all output streams
for (ListAlg::iterator ito = m_outStreamList.begin(); ito != m_outStreamList.end(); ito++ ) {
(*ito)->resetExecuted();
StatusCode sc;
sc = (*ito)->sysExecute();
if (UNLIKELY(!sc.isSuccess())) {
warning() << "Execution of output stream " << (*ito)->name() << " failed" << endmsg;
eventfailed = true;
}
}
// Check if there was an error processing current event
if (UNLIKELY(eventfailed)){
error() << "Error processing event loop." << endmsg;
return StatusCode(StatusCode::FAILURE,true);
}
return StatusCode(StatusCode::SUCCESS,true);
}

StatusCode MinimalEventLoopMgr::executeRun | ( | int | maxevt | ) |
| virtual

implementation of IEventProcessor::executeRun( )

Implements IEventProcessor.

Reimplemented in EventLoopMgr.

Definition at line 329 of file MinimalEventLoopMgr.cpp.

{
StatusCode sc;
ListAlg::iterator ita;
bool eventfailed = false;
// Call the beginRun() method of all top algorithms
for (ita = m_topAlgList.begin(); ita != m_topAlgList.end(); ita++ ) {
sc = (*ita)->sysBeginRun();
if (!sc.isSuccess()) {
warning() << "beginRun() of algorithm " << (*ita)->name() << " failed" << endmsg;
eventfailed = true;
}
}
// Call now the nextEvent(...)
sc = nextEvent(maxevt);
if (!sc.isSuccess()) {
eventfailed = true;
}
// Call the endRun() method of all top algorithms
for (ita = m_topAlgList.begin(); ita != m_topAlgList.end(); ita++ ) {
sc = (*ita)->sysEndRun();
if (!sc.isSuccess()) {
warning() << "endRun() of algorithm " << (*ita)->name() << " failed" << endmsg;
eventfailed = true;
}
}
if (eventfailed) {
return StatusCode::FAILURE;
}
else {
return StatusCode::SUCCESS;
}
}

StatusCode MinimalEventLoopMgr::finalize | ( |  | ) |
| virtual

implementation of IService::finalize

Reimplemented from Service.

Reimplemented in EventLoopMgr.

Definition at line 264 of file MinimalEventLoopMgr.cpp.

{
StatusCode sc = StatusCode::SUCCESS;
StatusCode scRet = StatusCode::SUCCESS;
// Call the finalize() method of all top algorithms
ListAlg::iterator ita;
for ( ita = m_topAlgList.begin(); ita != m_topAlgList.end(); ita++ ) {
sc = (*ita)->sysFinalize();
if( !sc.isSuccess() ) {
scRet = StatusCode::FAILURE;
warning() << "Finalization of algorithm " << (*ita)->name() << " failed" << endmsg;
}
}
// Call the finalize() method of all Output streams
for ( ita = m_outStreamList.begin(); ita != m_outStreamList.end(); ita++ ) {
sc = (*ita)->sysFinalize();
if( !sc.isSuccess() ) {
scRet = StatusCode::FAILURE;
warning() << "Finalization of algorithm " << (*ita)->name() << " failed" << endmsg;
}
}
// release all top algorithms
SmartIF<IAlgManager> algMan(serviceLocator());
for ( ita = m_topAlgList.begin(); ita != m_topAlgList.end(); ita++ ) {
if (algMan->removeAlgorithm(*ita).isFailure()) {
scRet = StatusCode::FAILURE;
warning() << "Problems removing Algorithm " << (*ita)->name() << endmsg;
}
}
m_topAlgList.clear();
// release all output streams
for ( ita = m_outStreamList.begin(); ita != m_outStreamList.end(); ita++ ) {
(*ita)->release();
}
m_outStreamList.clear();
if ( sc.isSuccess() ) m_state = FINALIZED;
m_incidentSvc->removeListener(m_abortEventListener, IncidentType::AbortEvent);
m_abortEventListener = 0; // release
m_incidentSvc = 0; // release
m_appMgrUI = 0; // release
sc = Service::finalize();
if (sc.isFailure()) {
scRet = StatusCode::FAILURE;
error() << "Problems finalizing Service base class" << endmsg;
}
return scRet;
}

StatusCode MinimalEventLoopMgr::initialize | ( |  | ) |
| virtual

implementation of IService::initialize

Reimplemented from Service.

Reimplemented in EventLoopMgr.

Definition at line 73 of file MinimalEventLoopMgr.cpp.

{
if ( !m_appMgrUI.isValid() ) {
return StatusCode::FAILURE;
}
StatusCode sc = Service::initialize();
if ( !sc.isSuccess() ) {
error() << "Failed to initialize Service Base class." << endmsg;
return StatusCode::FAILURE;
}
SmartIF<IProperty> prpMgr(serviceLocator());
if ( ! prpMgr.isValid() ) {
error() << "Error retrieving AppMgr interface IProperty." << endmsg;
return StatusCode::FAILURE;
}
else {
if ( m_topAlgNames.value().size() == 0 ) {
setProperty(prpMgr->getProperty("TopAlg")).ignore();
}
if ( m_outStreamNames.value().size() == 0 ) {
setProperty(prpMgr->getProperty("OutStream")).ignore();
}
}
// Get the references to the services that are needed by the ApplicationMgr itself
m_incidentSvc = serviceLocator()->service("IncidentSvc");
if( !m_incidentSvc.isValid() ) {
fatal() << "Error retrieving IncidentSvc." << endmsg;
return StatusCode::FAILURE;
}
m_abortEventListener = new AbortEventListener(m_abortEvent,m_abortEventSource);
m_incidentSvc->addListener(m_abortEventListener,IncidentType::AbortEvent);
// The state is changed at this moment to allow decodeXXXX() to do something
m_state = INITIALIZED;
//--------------------------------------------------------------------------------------------
// Create output streams. Do not initialize them yet.
// The state is updated temporarily in order to enable the handler, which
// is also triggered by a change to the "OutputStream" Property.
//--------------------------------------------------------------------------------------------
sc = decodeOutStreams();
if ( !sc.isSuccess() ) {
error() << "Failed to initialize Output streams." << endmsg;
m_state = CONFIGURED;
return sc;
}
//--------------------------------------------------------------------------------------------
// Create all needed Top Algorithms. Do not initialize them yet.
// The state is updated temporarily in order to enable the handler, which
// is also triggered by a change to the "TopAlg" Property.
//--------------------------------------------------------------------------------------------
sc = decodeTopAlgs();
if ( !sc.isSuccess() ) {
error() << "Failed to initialize Top Algorithms streams." << endmsg;
m_state = CONFIGURED;
return sc;
}
ListAlg::iterator ita;
// Initialize all the new TopAlgs. In fact Algorithms are protected against getting
// initialized twice.
for (ita = m_topAlgList.begin(); ita != m_topAlgList.end(); ita++ ) {
sc = (*ita)->sysInitialize();
if( !sc.isSuccess() ) {
error() << "Unable to initialize Algorithm: " << (*ita)->name() << endmsg;
return sc;
}
}
for (ita = m_outStreamList.begin(); ita != m_outStreamList.end(); ita++ ) {
sc = (*ita)->sysInitialize();
if( !sc.isSuccess() ) {
error() << "Unable to initialize Output Stream: " << (*ita)->name() << endmsg;
return sc;
}
}
return StatusCode::SUCCESS;
}

StatusCode MinimalEventLoopMgr::nextEvent | ( | int | maxevt | ) |
| virtual

implementation of IEventProcessor::nextEvent

Implements IEventProcessor.

Reimplemented in EventLoopMgr.

Definition at line 320 of file MinimalEventLoopMgr.cpp.

{
error() << "This method cannot be called on an object of type "
<< System::typeinfoName(typeid(*this)) << endmsg;
return StatusCode::FAILURE;
}

MinimalEventLoopMgr& MinimalEventLoopMgr::operator= | ( | const MinimalEventLoopMgr & |  | ) |
| private

Fake assignment operator (never implemented).

void MinimalEventLoopMgr::outStreamHandler | ( | Property & | p | ) |

Output stream List handler.

Definition at line 528 of file MinimalEventLoopMgr.cpp.

{
if ( !(decodeOutStreams( )).isSuccess() ) {
throw GaudiException("Failed to initialize output streams.",
"MinimalEventLoopMgr::outStreamHandler",
StatusCode::FAILURE);
}
}

StatusCode MinimalEventLoopMgr::reinitialize | ( |  | ) |
| virtual

implementation of IService::reinitialize

Reimplemented from Service.

Reimplemented in EventLoopMgr.

Definition at line 213 of file MinimalEventLoopMgr.cpp.

{
StatusCode sc = StatusCode::SUCCESS;
ListAlg::iterator ita;
// Reinitialize all the TopAlgs.
for (ita = m_topAlgList.begin(); ita != m_topAlgList.end(); ita++ ) {
sc = (*ita)->sysReinitialize();
if( !sc.isSuccess() ) {
error() << "Unable to reinitialize Algorithm: " << (*ita)->name() << endmsg;
return sc;
}
}
for (ita = m_outStreamList.begin(); ita != m_outStreamList.end(); ita++ ) {
sc = (*ita)->sysReinitialize();
if( !sc.isSuccess() ) {
error() << "Unable to reinitialize Output Stream: " << (*ita)->name() << endmsg;
return sc;
}
}
return sc;
}

StatusCode MinimalEventLoopMgr::restart | ( |  | ) |
| virtual

implementation of IService::restart

Reimplemented from Service.

Definition at line 238 of file MinimalEventLoopMgr.cpp.

{
StatusCode sc = StatusCode::SUCCESS;
ListAlg::iterator ita;
// Restart all the TopAlgs.
for (ita = m_topAlgList.begin(); ita != m_topAlgList.end(); ita++ ) {
sc = (*ita)->sysRestart();
if( !sc.isSuccess() ) {
error() << "Unable to restart Algorithm: " << (*ita)->name() << endmsg;
return sc;
}
}
for (ita = m_outStreamList.begin(); ita != m_outStreamList.end(); ita++ ) {
sc = (*ita)->sysRestart();
if( !sc.isSuccess() ) {
error() << "Unable to restart Output Stream: " << (*ita)->name() << endmsg;
return sc;
}
}
return sc;
}

StatusCode MinimalEventLoopMgr::start | ( |  | ) |
| virtual

implementation of IService::start

Reimplemented from Service.

Definition at line 158 of file MinimalEventLoopMgr.cpp.

{
StatusCode sc = Service::start();
if ( ! sc.isSuccess() ) return sc;
ListAlg::iterator ita;
// Start all the new TopAlgs. In fact Algorithms are protected against getting
// started twice.
for (ita = m_topAlgList.begin(); ita != m_topAlgList.end(); ita++ ) {
sc = (*ita)->sysStart();
if( !sc.isSuccess() ) {
error() << "Unable to start Algorithm: " << (*ita)->name() << endmsg;
return sc;
}
}
for (ita = m_outStreamList.begin(); ita != m_outStreamList.end(); ita++ ) {
sc = (*ita)->sysStart();
if( !sc.isSuccess() ) {
error() << "Unable to start Output Stream: " << (*ita)->name() << endmsg;
return sc;
}
}
return StatusCode::SUCCESS;
}

StatusCode MinimalEventLoopMgr::stop | ( |  | ) |
| virtual

implementation of IService::stop

Reimplemented from Service.

Reimplemented in EventLoopMgr.

Definition at line 185 of file MinimalEventLoopMgr.cpp.

{
StatusCode sc = StatusCode::SUCCESS;
ListAlg::iterator ita;
// Stop all the TopAlgs. In fact Algorithms are protected against getting
// stopped twice.
for (ita = m_topAlgList.begin(); ita != m_topAlgList.end(); ita++ ) {
sc = (*ita)->sysStop();
if( !sc.isSuccess() ) {
error() << "Unable to stop Algorithm: " << (*ita)->name() << endmsg;
return sc;
}
}
for (ita = m_outStreamList.begin(); ita != m_outStreamList.end(); ita++ ) {
sc = (*ita)->sysStop();
if( !sc.isSuccess() ) {
error() << "Unable to stop Output Stream: " << (*ita)->name() << endmsg;
return sc;
}
}
return Service::stop();
}

StatusCode MinimalEventLoopMgr::stopRun | ( |  | ) |
| virtual

implementation of IEventProcessor::stopRun( )

Implements IEventProcessor.

Definition at line 464 of file MinimalEventLoopMgr.cpp.

{
// Set the application return code
SmartIF<IProperty> appmgr(serviceLocator());
if(Gaudi::setAppReturnCode(appmgr, Gaudi::ReturnCode::ScheduledStop).isFailure()) {
error() << "Could not set return code of the application ("
<< Gaudi::ReturnCode::ScheduledStop << ")" << endmsg;
}
m_scheduledStop = true;
return StatusCode::SUCCESS;
}

void MinimalEventLoopMgr::topAlgHandler | ( | Property & | p | ) |

Top algorithm List handler.

Definition at line 478 of file MinimalEventLoopMgr.cpp.

{
if ( !(decodeTopAlgs( )).isSuccess() ) {
throw GaudiException("Failed to initialize Top Algorithms streams.",
"MinimalEventLoopMgr::topAlgHandler",
StatusCode::FAILURE);
}
}

## Member Data Documentation

bool MinimalEventLoopMgr::m_abortEvent
| protected

Flag signalling that the event being processedhas to be aborted (skip all following top algs).

Definition at line 59 of file MinimalEventLoopMgr.h.

SmartIF<IIncidentListener> MinimalEventLoopMgr::m_abortEventListener
| protected

Instance of the incident listener waiting for AbortEvent.

Definition at line 56 of file MinimalEventLoopMgr.h.

std::string MinimalEventLoopMgr::m_abortEventSource
| protected

Source of the AbortEvent incident.

Definition at line 61 of file MinimalEventLoopMgr.h.

SmartIF<IAppMgrUI> MinimalEventLoopMgr::m_appMgrUI
| protected

Reference to the IAppMgrUI interface of the application manager.

Definition at line 38 of file MinimalEventLoopMgr.h.

SmartIF<IIncidentSvc> MinimalEventLoopMgr::m_incidentSvc
| protected

Reference to the incident service.

Definition at line 40 of file MinimalEventLoopMgr.h.

ListAlg MinimalEventLoopMgr::m_outStreamList
| protected

List of output streams.

Definition at line 44 of file MinimalEventLoopMgr.h.

StringArrayProperty MinimalEventLoopMgr::m_outStreamNames
| protected

List of output stream names.

Definition at line 50 of file MinimalEventLoopMgr.h.

std::string MinimalEventLoopMgr::m_outStreamType
| protected

Out Stream type.

Definition at line 46 of file MinimalEventLoopMgr.h.

bool MinimalEventLoopMgr::m_scheduledStop
| protected

Scheduled stop of event processing.

Definition at line 54 of file MinimalEventLoopMgr.h.

State MinimalEventLoopMgr::m_state
| protected

State of the object.

Definition at line 52 of file MinimalEventLoopMgr.h.

ListAlg MinimalEventLoopMgr::m_topAlgList
| protected

List of top level algorithms.

Definition at line 42 of file MinimalEventLoopMgr.h.

StringArrayProperty MinimalEventLoopMgr::m_topAlgNames
| protected

List of top level algorithms names.

Definition at line 48 of file MinimalEventLoopMgr.h.

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

- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v25r0/GaudiKernel/GaudiKernel/MinimalEventLoopMgr.h
- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v25r0/GaudiKernel/src/Lib/MinimalEventLoopMgr.cpp