T_AthenaPoolCustomCnvWithKey< TRANS, PERS > Node1 T_AthenaPoolCustomCnvWith Key< TRANS, PERS > + T_AthenaPoolCustomCnvWithKey() # createPersistentWithKey() # createTransientWithKey() # poolReadObject() # poolReadObject() # keepPoolObj() # transToPers() # persToTrans() # DataObjectToPers() # DataObjectToPool() # PoolToDataObject() # cleanUp() Node2 T_AthenaPoolCustCnv < TRANS, PERS > + classID() # T_AthenaPoolCustCnv() # initialize() # setPlacementForP() # DataObjectToPers() # DataObjectToPool() # PoolToDataObject() # objectToPool() # poolToObject() # transToPers() # persToTrans() # compareClassGuid() # setToken() Node2->Node1 Node3 T_AthenaPoolCnvBase < TRANS > + T_AthenaPoolCnvBase() + classID() # initialize() # DataObjectToPers() # DataObjectToPool() # PoolToDataObject() # setPlacement() Node3->Node2 Node4 AthenaPoolConverter # m_dataObject + ~AthenaPoolConverter() + initialize() + finalize() + repSvcType() + createObj() + createRep() + fillRepRefs() + cleanUp() + storageType() + classID() # AthenaPoolConverter() # DataObjectToPers() # DataObjectToPool() # PoolToDataObject() # setPlacementWithType() # setPlacement() # getDataObject() # compareClassGuid() Node4->Node3 Node20 std::mutex Node20->Node1 #m_pListMutex Node20->Node4 #m_conv_mut Node12 std::string Node12->Node4 #m_containerPrefix #m_branchNameHint #m_className #m_containerNameHint Node29 std::map< std::string, std::vector< std::unique _ptr< RpcSectorLogicContainer _p1 > > > Node12->Node29 +keys Node17 Guid + m_guidGenMethod - m_data1 - m_data2 - m_data3 - m_data4 + Guid() + Guid() + Guid() + Guid() + Guid() + operator=() + operator<() + operator==() + operator==() + operator!=() and 11 more... + null() + initGuidGenMethod() + create() Node17->Node2 #m_classID Node24 std::map< DataObject *, RpcSectorLogicContainer _p1 * > + keys Node24->Node2 -m_persMap Node29->Node1 #m_persObjLists Node30 std::vector< std::unique _ptr< RpcSectorLogicContainer_p1 > > Node30->Node29 +elements