diff --git a/Control/DataModelAthenaPool/CMakeLists.txt b/Control/DataModelAthenaPool/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..4264959a7ec48c7c2ed7185c3497e171f0e5bb25 --- /dev/null +++ b/Control/DataModelAthenaPool/CMakeLists.txt @@ -0,0 +1,112 @@ +################################################################################ +# Package: DataModelAthenaPool +################################################################################ + +# Declare the package name: +atlas_subdir( DataModelAthenaPool ) + +# Declare the package's dependencies: +atlas_depends_on_subdirs( PUBLIC + Control/AthContainers + Control/AthLinks + Control/AthenaBaseComps + Control/AthenaKernel + Control/Navigation + Control/RootUtils + GaudiKernel + PRIVATE + AtlasTest/TestTools + Control/CLIDSvc + Control/SGTools + Database/AthenaPOOL/AthenaPoolCnvSvc + Database/AthenaPOOL/AthenaPoolUtilities + Database/AthenaPOOL/RootConversions ) + +# External dependencies: +find_package( CLHEP ) +find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread ) + +# Component(s) in the package: +atlas_add_library( DataModelAthenaPoolLib + src/*.cxx + PUBLIC_HEADERS DataModelAthenaPool + PRIVATE_INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} + PRIVATE_DEFINITIONS ${CLHEP_DEFINITIONS} + LINK_LIBRARIES AthContainers AthLinks AthenaBaseComps AthenaKernel Navigation RootUtils GaudiKernel RootUtilsPyROOT AthenaPoolCnvSvcLib + PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} TestTools SGTools AthenaPoolUtilities RootConversions ) + +atlas_add_component( DataModelAthenaPool + src/components/*.cxx + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} + LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} AthContainers AthLinks AthenaBaseComps AthenaKernel Navigation RootUtils RootUtilsPyROOT GaudiKernel TestTools SGTools AthenaPoolCnvSvcLib AthenaPoolUtilities RootConversions DataModelAthenaPoolLib ) + +atlas_add_poolcnv_library( DataModelAthenaPoolPoolCnv + src/*.cxx + FILES AthContainers/UserDataStore.h + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} + LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} AthContainers AthLinks AthenaBaseComps AthenaKernel Navigation RootUtils RootUtilsPyROOT GaudiKernel TestTools SGTools AthenaPoolCnvSvcLib AthenaPoolUtilities RootConversions DataModelAthenaPoolLib ) + +atlas_add_dictionary( DataModelAthenaPoolDictDict + DataModelAthenaPool/DataModelAthenaPoolDict.h + DataModelAthenaPool/selection.xml + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} + LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} AthContainers AthLinks AthenaBaseComps AthenaKernel Navigation RootUtils RootUtilsPyROOT GaudiKernel TestTools SGTools AthenaPoolCnvSvcLib AthenaPoolUtilities RootConversions DataModelAthenaPoolLib ) + +atlas_add_test( DataLink_p2_test + SOURCES + test/DataLink_p2_test.cxx + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} + LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} AthContainers AthLinks AthenaBaseComps AthenaKernel Navigation RootUtils RootUtilsPyROOT GaudiKernel TestTools SGTools AthenaPoolCnvSvcLib AthenaPoolUtilities RootConversions DataModelAthenaPoolLib ) + +atlas_add_test( ElementLinkCnv_p1_test + SOURCES + test/ElementLinkCnv_p1_test.cxx + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} + LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} AthContainers AthLinks AthenaBaseComps AthenaKernel Navigation RootUtils RootUtilsPyROOT GaudiKernel TestTools SGTools AthenaPoolCnvSvcLib AthenaPoolUtilities RootConversions DataModelAthenaPoolLib ) + +atlas_add_test( ElementLinkCnv_p2_test + SOURCES + test/ElementLinkCnv_p2_test.cxx + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} + LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} AthContainers AthLinks AthenaBaseComps AthenaKernel Navigation RootUtils RootUtilsPyROOT GaudiKernel TestTools SGTools AthenaPoolCnvSvcLib AthenaPoolUtilities RootConversions DataModelAthenaPoolLib ) + +atlas_add_test( ElementLinkCnv_p3_test + SOURCES + test/ElementLinkCnv_p3_test.cxx + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} + LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} AthContainers AthLinks AthenaBaseComps AthenaKernel Navigation RootUtils RootUtilsPyROOT GaudiKernel TestTools SGTools AthenaPoolCnvSvcLib AthenaPoolUtilities RootConversions DataModelAthenaPoolLib ) + +atlas_add_test( NavigableCnv_p1_test + SOURCES + test/NavigableCnv_p1_test.cxx + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} + LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} AthContainers AthLinks AthenaBaseComps AthenaKernel Navigation RootUtils RootUtilsPyROOT GaudiKernel TestTools SGTools AthenaPoolCnvSvcLib AthenaPoolUtilities RootConversions DataModelAthenaPoolLib ) + +atlas_add_test( NavigableCnv_p2_test + SOURCES + test/NavigableCnv_p2_test.cxx + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} + LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} AthContainers AthLinks AthenaBaseComps AthenaKernel Navigation RootUtils RootUtilsPyROOT GaudiKernel TestTools SGTools AthenaPoolCnvSvcLib AthenaPoolUtilities RootConversions DataModelAthenaPoolLib ) + +atlas_add_test( NavigableVectorCnv_p1_test + SOURCES + test/NavigableVectorCnv_p1_test.cxx + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} + LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} AthContainers AthLinks AthenaBaseComps AthenaKernel Navigation RootUtils RootUtilsPyROOT GaudiKernel TestTools SGTools AthenaPoolCnvSvcLib AthenaPoolUtilities RootConversions DataModelAthenaPoolLib ) + +atlas_add_test( NavigableVectorCnv_p2_test + SOURCES + test/NavigableVectorCnv_p2_test.cxx + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} + LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} AthContainers AthLinks AthenaBaseComps AthenaKernel Navigation RootUtils RootUtilsPyROOT GaudiKernel TestTools SGTools AthenaPoolCnvSvcLib AthenaPoolUtilities RootConversions DataModelAthenaPoolLib ) + +atlas_add_test( ElementLinkVectorCnv_p1_test + SOURCES + test/ElementLinkVectorCnv_p1_test.cxx + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} + LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} AthContainers AthLinks AthenaBaseComps AthenaKernel Navigation RootUtils RootUtilsPyROOT GaudiKernel TestTools SGTools AthenaPoolCnvSvcLib AthenaPoolUtilities RootConversions DataModelAthenaPoolLib ) + +# Install files from the package: +atlas_install_python_modules( python/*.py ) +atlas_install_joboptions( share/DataModelAthenaPool_jobOptions.py ) + diff --git a/Control/DataModelAthenaPool/DataModelAthenaPool/ElementLinkVector_p1.h b/Control/DataModelAthenaPool/DataModelAthenaPool/ElementLinkVector_p1.h index 1b48cee21becdbc91be683f09af0994a6d903540..1a410134d1f208a516d82da16d60024c3ab0cb1b 100755 --- a/Control/DataModelAthenaPool/DataModelAthenaPool/ElementLinkVector_p1.h +++ b/Control/DataModelAthenaPool/DataModelAthenaPool/ElementLinkVector_p1.h @@ -29,7 +29,7 @@ public: class ElementRef { public: - ElementRef() {} + ElementRef() : m_elementIndex(0), m_nameIndex(0) {} ElementRef(const INDEXTYPE &elink_idx, uint32_t name_idx) : m_elementIndex(elink_idx), m_nameIndex(name_idx) { } diff --git a/Control/DataModelAthenaPool/cmt/requirements b/Control/DataModelAthenaPool/cmt/requirements index 439a1d5d45a0acc55d8a59805316c904dda91b91..ce50c6ee55960f698de43667b187da0d1c4ae89a 100755 --- a/Control/DataModelAthenaPool/cmt/requirements +++ b/Control/DataModelAthenaPool/cmt/requirements @@ -30,6 +30,7 @@ use AtlasCLHEP AtlasCLHEP-* External use AtlasROOT AtlasROOT-* External use AtlasReflex AtlasReflex-* External use CLIDSvc CLIDSvc-* Control +use SGTools SGTools-* Control use AthenaPoolUtilities AthenaPoolUtilities-* Database/AthenaPOOL use RootConversions RootConversions-* Database/AthenaPOOL diff --git a/Control/DataModelAthenaPool/src/DataVectorConvert.cxx b/Control/DataModelAthenaPool/src/DataVectorConvert.cxx index f1ec915b0145719814b659efd4879e2208336b07..d0507c6c0c3df12042603fe3fd57922ae49c1a51 100644 --- a/Control/DataModelAthenaPool/src/DataVectorConvert.cxx +++ b/Control/DataModelAthenaPool/src/DataVectorConvert.cxx @@ -366,13 +366,13 @@ void test_dv (RootUtils::ILogger* logfn, return; } + // If no streaminfos, this class isn't involved in persistency. Skip it. + if (infos->GetEntries() == 0) + return; + // Get the class version, and thence the primary class shape. int dv_vers = dv_class->GetClassVersion(); - // nb. once we don't need to support root 5.14 any more, - // the dynamic_cast can be removed and the type of si0 - // changed to TVirtualStreamerInfo. - TStreamerInfo* si0 = - dynamic_cast<TStreamerInfo*> (dv_class->GetStreamerInfo()); + TVirtualStreamerInfo* si0 = dv_class->GetStreamerInfo(); if (si0 == 0) { if (logfn) { std::ostringstream ss; diff --git a/Control/DataModelAthenaPool/src/UDSLabelHashTableCnv_p1.cxx b/Control/DataModelAthenaPool/src/UDSLabelHashTableCnv_p1.cxx index e63e873efdbc10522fd4fd4db6b7a7938908919a..3afad050f6db31d5affffaba9867d293c740d251 100644 --- a/Control/DataModelAthenaPool/src/UDSLabelHashTableCnv_p1.cxx +++ b/Control/DataModelAthenaPool/src/UDSLabelHashTableCnv_p1.cxx @@ -2,10 +2,7 @@ Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration */ -#define private public #include "AthContainers/tools/UDSLabelHashTable.h" -#undef private - #include "DataModelAthenaPool/UDSLabelHashTable_p1.h" #include "DataModelAthenaPool/UDSLabelHashTableCnv_p1.h" @@ -13,11 +10,9 @@ void UDSLabelHashTableCnv_p1::transToPers(const UDSLabelHashTable& trans, UDSLab const size_t s=trans.size(); pers.m_label.resize(s); pers.m_labelHash.resize(s); - std::map<UDSLabelHashTable::hash_t, std::string>::const_iterator it=trans.m_hashLabels.begin(); - std::map<UDSLabelHashTable::hash_t, std::string>::const_iterator it_e=trans.m_hashLabels.end(); - for(;it!=it_e;++it) { - pers.m_labelHash.push_back(it->first); - pers.m_label.push_back(it->second); + for (const auto& p : trans) { + pers.m_labelHash.push_back(p.first); + pers.m_label.push_back(p.second); } return; } @@ -26,6 +21,6 @@ void UDSLabelHashTableCnv_p1::transToPers(const UDSLabelHashTable& trans, UDSLab void UDSLabelHashTableCnv_p1::persToTrans(const UDSLabelHashTable_p1& pers, UDSLabelHashTable& trans){ const size_t s=pers.m_labelHash.size(); for (size_t i=0;i<s;++i) { - trans.m_hashLabels.insert(trans.m_hashLabels.end(),std::make_pair(pers.m_labelHash[i],pers.m_label[i])); + trans.addLabel (pers.m_label[i], pers.m_labelHash[i]); } } diff --git a/Control/DataModelAthenaPool/src/UserDataStoreCnv.cxx b/Control/DataModelAthenaPool/src/UserDataStoreCnv.cxx index 589284ff5575be76ef96f432c750eb9d3ac3ae6a..3ef60524eb5b2a5a856e2a345715ebea64c67fbb 100644 --- a/Control/DataModelAthenaPool/src/UserDataStoreCnv.cxx +++ b/Control/DataModelAthenaPool/src/UserDataStoreCnv.cxx @@ -9,14 +9,14 @@ UserDataStoreCnv::UserDataStoreCnv(ISvcLocator* svcloc) : T_AthenaPoolCustomCnv<UserDataStore, UserDataStore_p1 >( svcloc), m_converterP1(), m_guidP1("1D3E6FC1-54CD-4239-9714-9C467160F3FA"), - mlog(messageService(), "UserDataStoreCnv") + m_log(messageService(), "UserDataStoreCnv") {} UserDataStore_p1* UserDataStoreCnv::createPersistent(UserDataStore* transObj) { UserDataStore_p1* pers=new UserDataStore_p1(); - m_converterP1.transToPers(*transObj,*pers,mlog); + m_converterP1.transToPers(*transObj,*pers,m_log); return pers; } @@ -27,15 +27,15 @@ UserDataStore* UserDataStoreCnv::createTransient () { UserDataStore* trans=0; if (compareClassGuid(m_guidP1)) { - if (mlog.level() <= MSG::DEBUG) mlog << MSG::DEBUG << "Reading version UserDataStore_p1" << endreq; + if (m_log.level() <= MSG::DEBUG) m_log << MSG::DEBUG << "Reading version UserDataStore_p1" << endreq; trans=new UserDataStore(); UserDataStore_p1* pers=poolReadObject<UserDataStore_p1>(); - m_converterP1.persToTrans(*pers,*trans,mlog); - if (mlog.level() <= MSG::DEBUG) mlog << MSG::DEBUG << "Done converting UserDataStore_p1 to UserDataStore" << endreq; + m_converterP1.persToTrans(*pers,*trans,m_log); + if (m_log.level() <= MSG::DEBUG) m_log << MSG::DEBUG << "Done converting UserDataStore_p1 to UserDataStore" << endreq; delete pers; } else { - mlog << MSG::ERROR << "Unsupported persistent version of UserDataSvc GUID=" << m_classID.toString() << endreq; + m_log << MSG::ERROR << "Unsupported persistent version of UserDataSvc GUID=" << m_classID.toString() << endreq; //throw std::runtime_error("Unsupported persistent version of UserDataSvc"); } return trans; diff --git a/Control/DataModelAthenaPool/src/UserDataStoreCnv.h b/Control/DataModelAthenaPool/src/UserDataStoreCnv.h index 0d50892958928cd5a0a30be619f9d152ef915be5..66c40dd8473392670c2721a0bb570bc65633d55e 100644 --- a/Control/DataModelAthenaPool/src/UserDataStoreCnv.h +++ b/Control/DataModelAthenaPool/src/UserDataStoreCnv.h @@ -27,7 +27,7 @@ class UserDataStoreCnv : public T_AthenaPoolCustomCnv<UserDataStore, UserDataSt private: UserDataStoreCnv_p1 m_converterP1; pool::Guid m_guidP1; - MsgStream mlog; + MsgStream m_log; }; diff --git a/Control/DataModelAthenaPool/test/DataLink_p2_test.cxx b/Control/DataModelAthenaPool/test/DataLink_p2_test.cxx index 178fc345feb1ed0391ec4634ac5115c9f5bdb17a..fcd18c46a224c995863f91ec61361fd1a46d6f2a 100755 --- a/Control/DataModelAthenaPool/test/DataLink_p2_test.cxx +++ b/Control/DataModelAthenaPool/test/DataLink_p2_test.cxx @@ -21,6 +21,9 @@ #include <iostream> +#include "SGTools/TestStore.h" + + class MyVI : public std::vector<int> { @@ -50,6 +53,7 @@ void test1() int main() { + SGTest::initTestStore(); test1(); return 0; } diff --git a/Control/DataModelAthenaPool/test/ElementLinkCnv_p1_test.cxx b/Control/DataModelAthenaPool/test/ElementLinkCnv_p1_test.cxx index 930424556a287f0d69ef5e5de6691691f48302f5..472ca2c452e6546dbfd2b6c8f15a2813f468418e 100644 --- a/Control/DataModelAthenaPool/test/ElementLinkCnv_p1_test.cxx +++ b/Control/DataModelAthenaPool/test/ElementLinkCnv_p1_test.cxx @@ -22,6 +22,9 @@ #include <iostream> +#include "SGTools/TestStore.h" + + class MyVI : public std::vector<int> { @@ -54,6 +57,7 @@ void test1() int main() { + SGTest::initTestStore(); test1(); return 0; } diff --git a/Control/DataModelAthenaPool/test/ElementLinkCnv_p2_test.cxx b/Control/DataModelAthenaPool/test/ElementLinkCnv_p2_test.cxx index be41332653e1d01dfd5a0707c5c1bb66891a9c6d..0ae5441fdc5e3c7c9dae6541acc65111cb8a4f8c 100644 --- a/Control/DataModelAthenaPool/test/ElementLinkCnv_p2_test.cxx +++ b/Control/DataModelAthenaPool/test/ElementLinkCnv_p2_test.cxx @@ -22,6 +22,9 @@ #include <iostream> +#include "SGTools/TestStore.h" + + class MyVI : public std::vector<int> { @@ -61,6 +64,7 @@ void test1() int main() { + SGTest::initTestStore(); test1(); return 0; } diff --git a/Control/DataModelAthenaPool/test/ElementLinkCnv_p3_test.cxx b/Control/DataModelAthenaPool/test/ElementLinkCnv_p3_test.cxx index 337c407273ab42b0ee305f37ea4f85ae72166409..785920512c75f0ab8aa572dc7136e3123eb9eb74 100644 --- a/Control/DataModelAthenaPool/test/ElementLinkCnv_p3_test.cxx +++ b/Control/DataModelAthenaPool/test/ElementLinkCnv_p3_test.cxx @@ -22,6 +22,9 @@ #include <iostream> +#include "SGTools/TestStore.h" + + class MyVI : public std::vector<int> { @@ -53,6 +56,7 @@ void test1() int main() { + SGTest::initTestStore(); test1(); return 0; } diff --git a/Control/DataModelAthenaPool/test/ElementLinkVectorCnv_p1_test.cxx b/Control/DataModelAthenaPool/test/ElementLinkVectorCnv_p1_test.cxx index f5030e40853569f90968225bb674fe25a7564d96..89d0ead85fd63fa1575b6d8c1746b4e3263781ba 100644 --- a/Control/DataModelAthenaPool/test/ElementLinkVectorCnv_p1_test.cxx +++ b/Control/DataModelAthenaPool/test/ElementLinkVectorCnv_p1_test.cxx @@ -22,6 +22,9 @@ #include <iostream> +#include "SGTools/TestStore.h" + + class MyVI : public std::vector<int> { @@ -77,6 +80,7 @@ void test1() int main() { + SGTest::initTestStore(); test1(); return 0; } diff --git a/Control/DataModelAthenaPool/test/NavigableCnv_p1_test.cxx b/Control/DataModelAthenaPool/test/NavigableCnv_p1_test.cxx index d2a50e4888248986965fdf40c09fe7d16c12dce4..8320ee5aa24f0f798f17ca52243151a43648a344 100644 --- a/Control/DataModelAthenaPool/test/NavigableCnv_p1_test.cxx +++ b/Control/DataModelAthenaPool/test/NavigableCnv_p1_test.cxx @@ -24,6 +24,9 @@ #include <iostream> +#include "SGTools/TestStore.h" + + class MyVI : public DataVector<NavigableTerminalNode> { @@ -101,6 +104,7 @@ void test2() int main() { + SGTest::initTestStore(); test1(); test2(); return 0; diff --git a/Control/DataModelAthenaPool/test/NavigableCnv_p2_test.cxx b/Control/DataModelAthenaPool/test/NavigableCnv_p2_test.cxx index 902c03cf5c2a81db64ca3ce4e4a9bc4dc967f3f7..6d24041ebe4e223fb94ed6fc1ddd51030c220b9b 100644 --- a/Control/DataModelAthenaPool/test/NavigableCnv_p2_test.cxx +++ b/Control/DataModelAthenaPool/test/NavigableCnv_p2_test.cxx @@ -24,6 +24,9 @@ #include <iostream> +#include "SGTools/TestStore.h" + + class MyVI : public DataVector<NavigableTerminalNode> { @@ -97,6 +100,7 @@ void test2() int main() { + SGTest::initTestStore(); test1(); test2(); return 0; diff --git a/Control/DataModelAthenaPool/test/NavigableVectorCnv_p1_test.cxx b/Control/DataModelAthenaPool/test/NavigableVectorCnv_p1_test.cxx index b08aa1f3264be2773fe7bd40111dd43566702ec6..c7f9eee352e01c848ed99fd678f66d2e5888c8ba 100644 --- a/Control/DataModelAthenaPool/test/NavigableVectorCnv_p1_test.cxx +++ b/Control/DataModelAthenaPool/test/NavigableVectorCnv_p1_test.cxx @@ -24,6 +24,9 @@ #include <iostream> +#include "SGTools/TestStore.h" + + class MyVI : public DataVector<NavigableTerminalNode> { @@ -169,6 +172,7 @@ void test2() int main() { + SGTest::initTestStore(); test1(); test2(); return 0; diff --git a/Control/DataModelAthenaPool/test/NavigableVectorCnv_p2_test.cxx b/Control/DataModelAthenaPool/test/NavigableVectorCnv_p2_test.cxx index 0739dbf9c355017b2d6337b3dbfbeb734a67e0ca..ac6e3f90243a4f3cd24c168b9abc68862cc1121d 100644 --- a/Control/DataModelAthenaPool/test/NavigableVectorCnv_p2_test.cxx +++ b/Control/DataModelAthenaPool/test/NavigableVectorCnv_p2_test.cxx @@ -24,6 +24,9 @@ #include <iostream> +#include "SGTools/TestStore.h" + + class MyVI : public DataVector<NavigableTerminalNode> { @@ -161,6 +164,7 @@ void test2() int main() { + SGTest::initTestStore(); test1(); test2(); return 0;