CounterAlgorithmClass Node1 CounterAlgorithmClass + CounterAlgorithmClass() + CounterAlgorithmClass() + ~CounterAlgorithmClass() + operator=() + CounterAlgorithmClass() Node2 CounterAlgorithm + CounterAlgorithm() + CounterAlgorithm() + ~CounterAlgorithm() + operator=() + CounterAlgorithm() + newEvent() Node2->Node1 Node3 CounterBase + CounterBase() + CounterBase() + ~CounterBase() + operator=() + CounterBase() + getName() + getParent() + variableExists() + getVariable() + fill() + fill() + increment() + setDenominator() + endEvent() + newEvent() # regHistogram() # regTProfile() # regHistogram() # bookGetPointer() # timeToMilliSec() Node3->Node2 Node4 MonitorBase # m_msgStream + MonitorBase() + MonitorBase() + ~MonitorBase() + operator=() + MonitorBase() + getName() + getParent() + bookGetPointer() + counterExists() + getCounter() + newEvent() + endEvent() + msg() + msg() + msgLvl() # newCounter() Node4->Node3 -m_parent Node5 MonitoredRange + MonitoredRange() + MonitoredRange() + ~MonitoredRange() + operator=() + MonitoredRange() + getName() + getParent() + bookGetPointer() + getMonitors() + addMonitor() + newEvent() Node5->Node4 -m_parent Node6 std::set< uint32_t > + keys Node6->Node5 -m_seenLB Node21 std::string Node21->Node3 -m_name Node21->Node4 -m_name Node21->Node5 -m_name Node66 std::unordered_map < std::string, std:: unique_ptr< CounterBase > > Node21->Node66 +keys Node68 std::unordered_map < std::string, Variable > Node21->Node68 +keys Node69 Variable - m_variableType - m_calls - m_xaccumulator - m_yaccumulator - m_weight - m_oneOverDenominator + Variable() + Variable() + ~Variable() + operator=() + Variable() + getName() + getCalls() + getAccumulator() + fill() + fill() and 6 more... Node21->Node69 -m_name Node66->Node4 #m_counters Node68->Node3 -m_variables Node69->Node68 +elements