#include </builds/gaudi/Gaudi/GaudiHive/src/PRGraph/PrecedenceRulesGraph.h>
Definition at line 484 of file PrecedenceRulesGraph.h.
 
◆ AlgorithmNode()
◆ accept()
  
  | 
        
          | bool concurrency::AlgorithmNode::accept | ( | IGraphVisitor & | visitor | ) |  |  | overridevirtual | 
 
 
◆ addInputDataNode()
      
        
          | void concurrency::AlgorithmNode::addInputDataNode | ( | DataNode * | node | ) |  | 
      
 
 
◆ addOutputDataNode()
      
        
          | void concurrency::AlgorithmNode::addOutputDataNode | ( | DataNode * | node | ) |  | 
      
 
 
◆ addParentNode()
      
        
          | void concurrency::AlgorithmNode::addParentNode | ( | DecisionNode * | node | ) |  | 
      
 
 
◆ getAlgoIndex()
  
  | 
        
          | unsigned int concurrency::AlgorithmNode::getAlgoIndex | ( |  | ) | const |  | inline | 
 
 
◆ getAlgorithm()
◆ getInputDataNodes()
◆ getOutputDataNodes()
◆ getParentDecisionHubs()
◆ getRank()
  
  | 
        
          | float concurrency::AlgorithmNode::getRank | ( |  | ) | const |  | inline | 
 
 
◆ isAsynchronous()
  
  | 
        
          | bool concurrency::AlgorithmNode::isAsynchronous | ( |  | ) | const |  | inline | 
 
 
◆ printState()
  
  | 
        
          | void concurrency::AlgorithmNode::printState | ( | std::stringstream & | output, |  
          |  |  | EventSlot & | slot, |  
          |  |  | const unsigned int & | recursionLevel |  
          |  | ) |  | const |  | overridevirtual | 
 
Print a string representing the control flow state. 
Implements concurrency::ControlFlowNode.
Definition at line 77 of file PrecedenceRulesGraph.cpp.
   89     if ( states[
m_algoIndex] == AlgsExecutionStates::State::CONTROLREADY ) {
 
   96         ConditionNode*    conditionNode = 
dynamic_cast<ConditionNode*
>( dataNode );
 
   97         DataReadyPromoter visitor( slot, {} );
 
   98         bool              wasProduced = 
false;
 
   99         if ( conditionNode ) {
 
  102           wasProduced = !visitor.visitEnter( *conditionNode );
 
  105           wasProduced = visitor.visit( *dataNode );
 
  109         if ( !wasProduced ) {
 
  113             output << indent << 
"missing conditions data: " << dataNode->name() << 
std::endl;
 
  120           if ( finder.holderNames().size() > 1 ) {
 
  121             output << indent << 
"required by tool:";
 
  122             for ( 
auto const& holderName : finder.holderNames() ) {
 
  123               if ( holderName != this->
name() ) output << 
" " << holderName;
 
  128           if ( conditionNode ) {
 
  132             conditionNode->m_condSvc->validRanges( validRanges, dataNode->name() )
 
  135             if ( validRanges.empty() ) 
output << indent << 
"no interval(s) of validity" << 
std::endl;
 
  138             output << indent << 
"can be produced by alg(s): ";
 
  139             for ( 
auto algoNode : dataNode->getProducers() ) {
 
  140               output << 
"( " << algoNode->name() << 
" in state: " << states[algoNode->getAlgoIndex()] << 
" ) ";
 
  146           if ( !conditionNode ) {
 
  155               if ( visitor.visit( *dataNode ) ) {
 
  156                 output << indent << 
"data is available at whole-event level" << 
std::endl;
 
  161             for ( 
auto& pair : *subSlotMap ) {
 
  162               if ( pair.second.size() > 0 ) {
 
  163                 bool madeLine = 
false;
 
  166                 for ( 
int slotIndex : pair.second ) {
 
  168                   EventSlot* subSlot = &testSubSlots->
at( slotIndex );
 
  169                   visitor.m_slot     = subSlot;
 
  170                   if ( visitor.visit( *dataNode ) ) {
 
  174                       output << indent << 
"data is available in sub-slot(s) ";
 
  177                     output << slotIndex << 
", ";
 
  180                 if ( madeLine ) { 
output << 
"entered from " << pair.first << 
std::endl; }
 
 
 
 
◆ setAsynchronous()
  
  | 
        
          | void concurrency::AlgorithmNode::setAsynchronous | ( | bool | value | ) |  |  | inline | 
 
 
◆ setRank()
  
  | 
        
          | void concurrency::AlgorithmNode::setRank | ( | float | rank | ) |  |  | inline | 
 
 
◆ m_algoIndex
  
  | 
        
          | unsigned int concurrency::AlgorithmNode::m_algoIndex |  | private | 
 
 
◆ m_algoName
◆ m_algorithm
◆ m_inputs
◆ m_isAsynchronous
  
  | 
        
          | bool concurrency::AlgorithmNode::m_isAsynchronous |  | private | 
 
 
◆ m_outputs
◆ m_parents
◆ m_rank
  
  | 
        
          | float concurrency::AlgorithmNode::m_rank = -1 |  | private | 
 
 
The documentation for this class was generated from the following files:
 
 
std::unique_ptr< EventContext > eventContext
Cache for the eventContext.
float m_rank
Algorithm rank of any kind.
std::vector< DecisionNode * > m_parents
Control flow parents of an AlgorithmNode (DecisionNodes)
void acceptDHVisitor(IDataHandleVisitor *) const override
std::unordered_map< std::string, std::vector< unsigned int > > subSlotsByNode
Listing of sub-slots by the node (name) they are attached to.
const std::string & name() const override
The identifying name of the algorithm object.
const EventIDBase & eventID() const
const std::vector< DataNode * > & getInputDataNodes() const
Get all consumer nodes.
Class representing an event slot.
const std::string & name() const
Get node name.
std::vector< DataNode * > m_outputs
Algorithm outputs (DataNodes)
std::string m_algoName
The name of the algorithm.
unsigned int m_algoIndex
The index of the algorithm.
bool isAsynchronous() const
EventSlot * parentSlot
Pointer to parent slot (null for top level)
std::vector< EventSlot > allSubSlots
Actual sub-slot instances.
ControlFlowNode(PrecedenceRulesGraph &graph, unsigned int nodeIndex, const std::string &name)
Constructor.
Gaudi::Algorithm * m_algorithm
Algorithm representative behind the AlgorithmNode.
std::vector< DataNode * > m_inputs
Algorithm inputs (DataNodes)
bool m_isAsynchronous
If an algorithm is asynchronous.
This class provides a unique identification for each event, in terms of run/event number and/or a tim...
std::vector< int > controlFlowState
State of the control flow.
AlgsExecutionStates algsStates
Vector of algorithms states.
Gaudi::Algorithm * getAlgorithm() const
get Algorithm representatives
decltype(auto) range(Args &&... args)
Zips multiple containers together to form a single range.