Belle II Software  release-08-01-10
DirectedNodeNetwork< EntryType, MetaInfoType > Class Template Reference

Network of directed nodes of the type EntryType. More...

#include <DirectedNodeNetwork.h>

Collaboration diagram for DirectedNodeNetwork< EntryType, MetaInfoType >:

Public Member Functions

 DirectedNodeNetwork ()
 ************************* CONSTRUCTOR/DESTRUCTOR ************************* More...
 
 ~DirectedNodeNetwork ()
 destructor taking care of cleaning up the pointer-mess WARNING only needed when using classic pointers for the nodes!
 
bool addNode (NodeID nodeID, EntryType &newEntry)
 ************************* PUBLIC MEMBER FUNCTIONS ************************* More...
 
bool addInnerToLastOuterNode (NodeID innerNodeID)
 to the last outerNode added, another innerNode will be attached
 
bool addOuterToLastInnerNode (NodeID outerNodeID)
 to the last innerNode added, another outerNode will be attached
 
bool linkNodes (NodeID outerNodeID, NodeID innerNodeID)
 takes two entry IDs and weaves them into the network
 
bool isNodeInNetwork (const NodeID nodeID) const
 Check if a given entry is already in the network.
 
void clear ()
 Clear directed node network Called to clear the directed node network if its size grows to large. More...
 
std::vector< Node * > getOuterEnds ()
 getters: More...
 
std::vector< Node * > getInnerEnds ()
 returns all nodes which have no inner nodes (but outer ones) and therefore are inner ends of the network
 
NodegetNode (NodeID toBeFound)
 Returns pointer to the node carrying the entry which is equal to given parameter. More...
 
std::vector< Node * > & getNodes ()
 Returns all nodes of the network.
 
std::vector< Node * >::iterator begin ()
 Returns iterator for container: begin.
 
std::vector< Node * >::iterator end ()
 Returns iterator for container: end.
 
unsigned int size () const
 Returns number of nodes to be found in the network.
 

Protected Types

using Node = DirectedNode< EntryType, MetaInfoType >
 Defining abbreviation for the used directed node type pack.
 
using NodeID = std::int64_t
 NodeID should be some unique integer.
 

Protected Member Functions

void finalize ()
 Finalizing the NodeNetwork.
 

Static Protected Member Functions

static bool createLink (Node &outerNode, Node &innerNode)
 ************************* INTERNAL MEMBER FUNCTIONS ************************* More...
 

Protected Attributes

std::unordered_map< NodeID, Node * > m_nodeMap
 ************************* DATA MEMBERS ************************* More...
 
NodeID m_lastOuterNodeID
 temporal storage for last outer node added, used for speed-up
 
NodeID m_lastInnerNodeID
 temporal storage for last inner node added, used for speed-up
 
bool m_isFinalized
 keeps track of the state of the network to fill the vectors m_nodes, m_outerEnds, m_innerEnds only if required
 
std::vector< Node * > m_nodes
 After the network is finalized this vector will also carry all nodes to be able to keep the old interface. More...
 
std::vector< Node * > m_outerEnds
 keeps track of current outerEnds (nodes which have no outerNodes) entries are the NodeIDs of the nodes which currently form an outermost node
 
std::vector< Node * > m_innerEnds
 keeps track of current innerEnds (nodes which have no innerNodes) entries are the NodeIds of the nodes which currently form an innermost node
 

Detailed Description

template<typename EntryType, typename MetaInfoType>
class Belle2::DirectedNodeNetwork< EntryType, MetaInfoType >

Network of directed nodes of the type EntryType.

Template Parameters
EntryType: type of the directe nodes
MetaInfoType: meta info type of the nodes

Definition at line 28 of file DirectedNodeNetwork.h.

Constructor & Destructor Documentation

◆ DirectedNodeNetwork()

DirectedNodeNetwork ( )
inline

************************* CONSTRUCTOR/DESTRUCTOR *************************

Constructor

Definition at line 38 of file DirectedNodeNetwork.h.

38  :
41  m_isFinalized(false)
42  {
43  m_nodeMap.reserve(40000);
44  m_nodes.reserve(40000);
45  }
bool m_isFinalized
keeps track of the state of the network to fill the vectors m_nodes, m_outerEnds, m_innerEnds only if...
std::unordered_map< NodeID, Node * > m_nodeMap
************************* DATA MEMBERS *************************
NodeID m_lastInnerNodeID
temporal storage for last inner node added, used for speed-up
NodeID m_lastOuterNodeID
temporal storage for last outer node added, used for speed-up
std::vector< Node * > m_nodes
After the network is finalized this vector will also carry all nodes to be able to keep the old inter...

Member Function Documentation

◆ addNode()

bool addNode ( NodeID  nodeID,
EntryType &  newEntry 
)
inline

************************* PUBLIC MEMBER FUNCTIONS *************************

Adding new node to nodeMap, if the nodeID is not already present in the nodeMap. Returns true if new node was added.

Definition at line 62 of file DirectedNodeNetwork.h.

◆ clear()

void clear ( void  )
inline

Clear directed node network Called to clear the directed node network if its size grows to large.

This is necessary to prevent to following modules from processing events with only partly filled networks.

Definition at line 153 of file DirectedNodeNetwork.h.

◆ createLink()

static bool createLink ( Node outerNode,
Node innerNode 
)
inlinestaticprotected

************************* INTERNAL MEMBER FUNCTIONS *************************

links nodes with each other. returns true if everything went well, returns false, if not

Definition at line 221 of file DirectedNodeNetwork.h.

◆ getNode()

Node* getNode ( NodeID  toBeFound)
inline

Returns pointer to the node carrying the entry which is equal to given parameter.

If no fitting entry was found, nullptr is returned.

Definition at line 184 of file DirectedNodeNetwork.h.

◆ getOuterEnds()

std::vector<Node*> getOuterEnds ( )
inline

getters:

returns all nodes which have no outer nodes (but inner ones) and therefore are outer ends of the network

Definition at line 167 of file DirectedNodeNetwork.h.

Member Data Documentation

◆ m_nodeMap

std::unordered_map<NodeID, Node*> m_nodeMap
protected

************************* DATA MEMBERS *************************

carries all nodes

Definition at line 254 of file DirectedNodeNetwork.h.

◆ m_nodes

std::vector<Node*> m_nodes
protected

After the network is finalized this vector will also carry all nodes to be able to keep the old interface.

This shouldn't affect the performance drastically in comparison to directly accessing the nodeMap.

Definition at line 268 of file DirectedNodeNetwork.h.


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