G4RunToolEventQueue Node1 G4RunToolEventQueue - m_closed - m_cv + Size() + PushEvent() + GetEvent() + Close() + CompleteOutstandingEvents() Node2 std::queue< UPEvent >     Node2->Node1 -m_events Node3 std::unique_ptr< AtlasG4 SyncEventUserInfo > + ptr + ptr + operator->() + operator->() Node3->Node2 +elements Node4 std::vector< WeakSyncInterface >     Node4->Node1 -m_outstandingEvents Node5 std::weak_ptr< G4EventSynchronization Interface > + ptr + operator->() Node5->Node4 +elements Node6 std::mutex     Node6->Node1 -m_mutex