129     std::vector<int> nodeDecisions(algPool->getExecutionFlowGraph()->getControlFlowNodeCounter(), -1);
 
  140     while(algStates.algsPresent(AlgsExecutionStates::State::CONTROLREADY) ){
 
  142         debug() << 
"algorithms left" << 
endmsg;
 
  147         for(
auto it = algStates.begin(AlgsExecutionStates::State::CONTROLREADY); it != algStates.end(AlgsExecutionStates::State::CONTROLREADY); ++it){
 
  153                 debug() << 
"Running algorithm [" << algIndex << 
"] " << algName << 
endmsg;
 
  155                 std::vector<AlgsExecutionStates::State> algResults(
m_evtCtx_buffer.size());
 
  170                         bool eventfailed=
false;
 
  181                                 warning() << 
"Execution of algorithm " << algName << 
" failed for event " << 
m_evtCtx_buffer[
i]->evt() << 
endmsg;
 
  186                             error() << 
".executeEvent(): Exception with tag=" << Exception.
tag()
 
  187                                    << 
" thrown by " << algName << 
endmsg;
 
  188                             error() << Exception << 
endmsg;
 
  189                         } 
catch ( 
const std::exception& Exception ) {
 
  190                             fatal() << 
".executeEvent(): Standard std::exception thrown by " 
  192                             error() <<  Exception.what()  << 
endmsg;
 
  194                             fatal() << 
".executeEvent(): UNKNOWN Exception thrown by " 
  201                         algResults[
i] = AlgsExecutionStates::State::EVTACCEPTED;
 
  203                         algResults[
i] = AlgsExecutionStates::State::EVTREJECTED;
 
  211                 bool unanimous = 
true;
 
  212                 for(uint i = 1; i < algResults.size(); ++
i)
 
  213                     if(result != algResults[i])
 
  217                     algStates.updateState(algIndex,result);
 
  219                     fatal() << 
"divergent algorithm execution" << 
endmsg;
 
  220                     fatal() << 
"Algorithm results: ";
 
  221                     for(uint i =0; i < algResults.size(); ++
i){
 
  222                         fatal() << i << 
": " << (algResults[
i] ==  AlgsExecutionStates::State::EVTACCEPTED ? 
"A" : 
"R") << 
"\t";
 
  223                         if(algResults[i] ==  AlgsExecutionStates::State::EVTREJECTED){
 
  244     m_evtCtx_buffer.clear();
 
void resetExecuted() override
Reset the executed state of the Algorithm for the duration of the current event. 
 
virtual StatusCode acquireAlgorithm(const std::string &name, IAlgorithm *&algo, bool blocking=false)=0
Acquire a certain algorithm using its name. 
 
Define general base for Gaudi exception. 
 
Helper class to set the application return code in case of early exit (e.g. 
 
void updateEventState(AlgsExecutionStates &algo_states, std::vector< int > &node_decisions) const 
Update the state of algorithms to controlready, where possible. 
 
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream. 
 
std::list< IAlgorithm * > m_algList
Cache the list of algs to be executed. 
 
The AlgResourcePool is a concrete implementation of the IAlgResourcePool interface. 
 
This class represents an entry point to all the event specific data. 
 
GAUDI_API void setCurrentContextId(ContextIdType newId)
Used by the framework to change the value of the current context id. 
 
void setContext(EventContext *context)
set the context 
 
virtual StatusCode sysExecute()=0
System execution. This method invokes the execute() method of a concrete algorithm. 
 
SmartIF< IAlgResourcePool > m_algResourcePool
 
constexpr int UnhandledException
 
TYPE * get() const 
Get interface pointer. 
 
The AlgsExecutionStates encodes the state machine for the execution of algorithms within a single eve...
 
void promoteToControlReadyState(AlgsExecutionStates &algo_states, std::vector< int > &node_decisions, const int &slotNum=-1) const 
XXX: CF tests. 
 
This class is used for returning status codes from appropriate routines. 
 
std::vector< std::string > m_algname_vect
Vector to bookkeep the information necessary to the index2name conversion. 
 
virtual const std::string & tag() const 
name tag for the exception, or exception type 
 
concurrency::ExecutionFlowManager m_controlFlow
 
The IAlgorithm is the interface implemented by the Algorithm base class. 
 
virtual bool filterPassed() const =0
Did this algorithm pass or fail its filter criterion for the last event? 
 
Base class from which all concrete algorithm classes should be derived. 
 
tbb::concurrent_bounded_queue< EventContext * > m_finishedEvents
Queue of finished events. 
 
State
Execution states of the algorithms. 
 
virtual StatusCode releaseAlgorithm(const std::string &name, IAlgorithm *&algo)=0
Release a certain algorithm. 
 
std::vector< EventContext * > m_evtCtx_buffer