diff --git a/Control/AthenaServices/src/MetaDataSvc.cxx b/Control/AthenaServices/src/MetaDataSvc.cxx
index 06394b63e3f2cda4ed299a94b91eaccf472bef6d..95565c66cd655c7e7b8a2a5aefd551dc4392b01c 100644
--- a/Control/AthenaServices/src/MetaDataSvc.cxx
+++ b/Control/AthenaServices/src/MetaDataSvc.cxx
@@ -72,7 +72,6 @@ MetaDataSvc::MetaDataSvc(const std::string& name, ISvcLocator* pSvcLocator) : ::
    m_toolForClid.insert(std::pair<CLID, std::string>(1234982351, "BookkeeperTool"));
    m_toolForClid.insert(std::pair<CLID, std::string>(1107011239, "xAODMaker::TriggerMenuMetaDataTool"));
    m_toolForClid.insert(std::pair<CLID, std::string>(1115934851, "LumiBlockMetaDataTool"));
-   m_toolForClid.insert(std::pair<CLID, std::string>(1188015687, "xAODMaker::TruthMetaDataTool"));
 }
 //__________________________________________________________________________
 MetaDataSvc::~MetaDataSvc() {
@@ -382,6 +381,9 @@ StatusCode MetaDataSvc::addProxyToInputMetaDataStore(const std::string& tokenStr
    std::istringstream iss(numName);
    iss >> num;
    CLID clid = m_persToClid[className];
+   const std::string par[2] = { "SHM" , className };
+   const unsigned long ipar[2] = { num , 0 };
+   IOpaqueAddress* opqAddr = nullptr;
    if (clid == 167728019) { // EventStreamInfo, will change tool to combine input metadata, clearing things before...
       bool foundTool = false;
       for (ToolHandleArray<IAlgTool>::const_iterator iter = m_metaDataTools.begin(), iterEnd = m_metaDataTools.end(); iter != iterEnd; iter++) {
@@ -416,9 +418,7 @@ StatusCode MetaDataSvc::addProxyToInputMetaDataStore(const std::string& tokenStr
          }
       }
    }
-   const std::string par[3] = { "SHM" , keyName , className };
-   const unsigned long ipar[2] = { num , 0 };
-   IOpaqueAddress* opqAddr = nullptr;
+
    if (!m_addrCrtr->createAddress(m_storageType, clid, par, ipar, opqAddr).isSuccess()) {
       ATH_MSG_FATAL("addProxyToInputMetaDataStore: Cannot create address for " << tokenStr);
       return(StatusCode::FAILURE);
@@ -432,9 +432,6 @@ StatusCode MetaDataSvc::addProxyToInputMetaDataStore(const std::string& tokenStr
       ATH_MSG_FATAL("addProxyToInputMetaDataStore: Cannot access data for " << tokenStr);
       return(StatusCode::FAILURE);
    }
-   if (keyName.find("Aux.") != std::string::npos && m_inputDataStore->symLink (clid, keyName, 187169987).isFailure()) {
-      ATH_MSG_WARNING("addProxyToInputMetaDataStore: Cannot symlink to AuxStore for " << tokenStr);
-   }
    std::map<std::string, std::string>::const_iterator iter = m_streamForKey.find(keyName);
    if (iter == m_streamForKey.end()) {
       m_streamForKey.insert(std::pair<std::string, std::string>(keyName, fileName));
diff --git a/Database/AthenaPOOL/AthenaPoolCnvSvc/src/AthenaPoolCnvSvc.cxx b/Database/AthenaPOOL/AthenaPoolCnvSvc/src/AthenaPoolCnvSvc.cxx
index 78471af3f272d728b5d3cabb81fbd014ced8650e..fb79bfceca1a75011805d82b25cff11494aa2436 100644
--- a/Database/AthenaPOOL/AthenaPoolCnvSvc/src/AthenaPoolCnvSvc.cxx
+++ b/Database/AthenaPOOL/AthenaPoolCnvSvc/src/AthenaPoolCnvSvc.cxx
@@ -838,8 +838,8 @@ StatusCode AthenaPoolCnvSvc::createAddress(long svcType,
    if (par[0] == "SHM") {
       token = new Token();
       token->setOid(Token::OID_t(ip[0], ip[1]));
-      token->setAuxString("[PNAME=" + par[2] + "]");
-      RootType classDesc = RootType::ByName(par[2]);
+      token->setAuxString("[PNAME=" + par[1] + "]");
+      RootType classDesc = RootType::ByName(par[1]);
       token->setClassID(pool::DbReflex::guid(classDesc));
    } else if (!m_inputStreamingTool.empty() && m_inputStreamingTool->isClient()) {
       Token addressToken;
@@ -873,7 +873,7 @@ StatusCode AthenaPoolCnvSvc::createAddress(long svcType,
    if (token == nullptr) {
       return(StatusCode::RECOVERABLE);
    }
-   refpAddress = new TokenAddress(POOL_StorageType, clid, "", par[1], ip[0], token);
+   refpAddress = new TokenAddress(POOL_StorageType, clid, "", "", 0, token);
    return(StatusCode::SUCCESS);
 }
 //______________________________________________________________________________
diff --git a/Event/xAOD/xAODTruth/xAODTruth/selection.xml b/Event/xAOD/xAODTruth/xAODTruth/selection.xml
index abd3914cc9dc22eb499e32663223671bd17455b1..20d274ba2e4c288015d6cb25a50c8a93bca4dea8 100644
--- a/Event/xAOD/xAODTruth/xAODTruth/selection.xml
+++ b/Event/xAOD/xAODTruth/xAODTruth/selection.xml
@@ -32,7 +32,6 @@
   <class name="xAOD::TruthEvent_v1" />
   <class name="xAOD::TruthPileupEvent_v1" />
   <class name="xAOD::TruthEvent_v1::PdfInfo" />
-  <class name="xAOD::TruthMetaData_v1" />
 
   <!-- The persistent classes: -->
   <class name="xAOD::TruthParticleContainer_v1"
diff --git a/Event/xAOD/xAODTruthCnv/CMakeLists.txt b/Event/xAOD/xAODTruthCnv/CMakeLists.txt
index 89b82f15bba80e7f966914dc5f5ad673e9664401..1e263b057c6b49bdb8b509e71064e8c8eaeaa259 100644
--- a/Event/xAOD/xAODTruthCnv/CMakeLists.txt
+++ b/Event/xAOD/xAODTruthCnv/CMakeLists.txt
@@ -5,47 +5,29 @@
 # Declare the package name:
 atlas_subdir( xAODTruthCnv )
 
-# Extra package dependencies, based on the build environment:
-set( extra_dep )
-if( NOT XAOD_STANDALONE )
-   set( extra_dep Database/AthenaPOOL/AthenaPoolKernel
-      PRIVATE
-      Control/AthLinks
-      Control/AthenaBaseComps
-      Control/StoreGate
-      Event/EventInfo
-      Event/xAOD/xAODEventInfo
-      Event/xAOD/xAODTruth
-      GaudiKernel
-      Generators/GeneratorObjects )
-endif()
-
 # Declare the package's dependencies:
-atlas_depends_on_subdirs(
-   PUBLIC
-   Control/AthToolSupport/AsgTools
-   Event/xAOD/xAODTruth
-   ${extra_dep} )
-
-# Component(s) in the package:
-atlas_add_library( xAODTruthCnvLib
-   xAODTruthCnv/*.h Root/*.cxx
-   PUBLIC_HEADERS xAODTruthCnv
-   LINK_LIBRARIES AsgTools xAODTruth )
+atlas_depends_on_subdirs( PRIVATE
+                          Control/AthenaBaseComps
+                          Control/AthenaKernel
+                          Control/DataModel
+                          Control/StoreGate
+                          Event/EventInfo
+                          Event/xAOD/xAODEventInfo
+                          Event/xAOD/xAODTruth
+                          GaudiKernel
+                          Generators/GeneratorObjects )
 
-if( NOT XAOD_STANDALONE )
-   atlas_add_component( xAODTruthCnv
-      src/*.h src/*.cxx src/components/*.cxx
-      LINK_LIBRARIES AthLinks AthenaBaseComps StoreGateLib EventInfo
-      xAODEventInfo xAODTruth GaudiKernel GeneratorObjects
-      xAODTruthCnvLib )
-endif()
+# External dependencies:
+find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread )
 
-atlas_add_dictionary( xAODTruthCnvDict
-   xAODTruthCnv/xAODTruthCnvDict.h
-   xAODTruthCnv/selection.xml
-   LINK_LIBRARIES xAODTruthCnvLib )
+# Component(s) in the package:
+atlas_add_component( xAODTruthCnv
+                     src/*.cxx
+                     src/components/*.cxx
+                     INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
+                     LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaBaseComps AthenaKernel DataModel StoreGateLib SGtests EventInfo xAODEventInfo xAODTruth GaudiKernel GeneratorObjects )
 
 # Install files from the package:
 atlas_install_joboptions( share/*.py )
 atlas_install_python_modules( python/*.py )
+
diff --git a/Event/xAOD/xAODTruthCnv/Root/TruthMetaDataTool.cxx b/Event/xAOD/xAODTruthCnv/Root/TruthMetaDataTool.cxx
deleted file mode 100644
index ba3b829a746531a0df3c94c7185e585b652967b9..0000000000000000000000000000000000000000
--- a/Event/xAOD/xAODTruthCnv/Root/TruthMetaDataTool.cxx
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-// Local include(s):
-#include "xAODTruthCnv/TruthMetaDataTool.h"
-
-namespace xAODMaker {
-
-   // Helper typedef:
-   typedef xAOD::TruthMetaDataContainer Cont_t;
-
-   TruthMetaDataTool::TruthMetaDataTool( const std::string& name )
-      : asg::AsgMetadataTool( name ),
-        m_truthMeta(), m_truthMetaAux() {
-
-      declareProperty( "InputKey", m_inputKey = "TruthMetaData" );
-      declareProperty( "OutputKey", m_outputKey = "TruthMetaData" );
-
-#ifdef ASGTOOL_ATHENA
-      declareInterface< ::IMetaDataTool >( this );
-#endif // ASGTOOL_ATHENA
-   }
-
-   StatusCode TruthMetaDataTool::initialize() {
-
-      // Greet the user:
-      ATH_MSG_DEBUG( "Initialising TruthMetaDataTool" );
-      ATH_MSG_DEBUG( "  InputKey  = " << m_inputKey );
-      ATH_MSG_DEBUG( "  OutputKey = " << m_outputKey );
-
-      // Reset the internal variable(s):
-      m_truthMeta.reset(); m_truthMetaAux.reset();
-
-      // Retrun gracefully:
-      return StatusCode::SUCCESS;
-   }
-
-   StatusCode TruthMetaDataTool::beginInputFile() {
-
-      // If the input file doesn't have any trigger configuration metadata,
-      // then finish right away:
-      if( ! inputMetaStore()->contains< Cont_t >( m_inputKey ) ) {
-         return StatusCode::SUCCESS;
-      }
-
-      // Retrieve the input container:
-      const Cont_t* input = 0;
-      ATH_CHECK( inputMetaStore()->retrieve( input, m_inputKey ) );
-
-      // Create an output container if it doesn't exist yet:
-      if( ( ! m_truthMeta.get() ) && ( ! m_truthMetaAux.get() ) ) {
-         ATH_MSG_DEBUG( "Creating output container" );
-         m_truthMeta.reset( new xAOD::TruthMetaDataContainer() );
-         m_truthMetaAux.reset( new xAOD::TruthMetaDataAuxContainer() );
-         m_truthMeta->setStore( m_truthMetaAux.get() );
-      }
-
-      // Loop over the configurations of the input file:
-      for( const xAOD::TruthMetaData* meta : *input ) {
-
-         // Check if this configuration is already in the output container:
-         bool exists = false;
-         for( const xAOD::TruthMetaData* existing : *m_truthMeta ) {
-            if( existing->mcChannelNumber() == meta->mcChannelNumber() ){
-               exists = true;
-               break;
-            }
-         }
-         if( exists ) {
-            continue;
-         }
-
-         // If it's a new configuration, put it into the output container:
-         ATH_MSG_VERBOSE( "Copying configuration with ChannelID: "
-                          << meta->mcChannelNumber() );
-         xAOD::TruthMetaData* out = new xAOD::TruthMetaData();
-         m_truthMeta->push_back( out );
-         *out = *meta;
-      }
-
-      // Return gracefully:
-      return StatusCode::SUCCESS;
-   }
-
-   StatusCode TruthMetaDataTool::metaDataStop() {
-
-      // The output may already have trigger configuration metadata in it.
-      // For instance from TrigConf::xAODMenuWriter. In this case let that
-      // object take precedence.
-      if( outputMetaStore()->contains< Cont_t >( m_outputKey ) ) {
-         ATH_MSG_DEBUG( "xAOD::TruthMetaDataContainer already in the output" );
-         return StatusCode::SUCCESS;
-      }
-
-      // Record the truth metadata, if any was found in the processed input files.
-      if( m_truthMeta.get() && m_truthMetaAux.get() ) {
-         ATH_MSG_DEBUG( "Recording truth metadata" );
-         ATH_CHECK( outputMetaStore()->record( m_truthMeta.release(),
-                                               m_outputKey ) );
-         ATH_CHECK( outputMetaStore()->record( m_truthMetaAux.release(),
-                                               m_outputKey + "Aux." ) );
-      }
-
-      // Retrun gracefully:
-      return StatusCode::SUCCESS;
-   }
-
-} // namespace xAODMaker
diff --git a/Event/xAOD/xAODTruthCnv/src/components/xAODTruthCnv_entries.cxx b/Event/xAOD/xAODTruthCnv/src/components/xAODTruthCnv_entries.cxx
index 5428eb4532786278fd108171eba15c425e6379d7..afb6cd10d2700a9778bcff7bcc785b0e66e742ed 100644
--- a/Event/xAOD/xAODTruthCnv/src/components/xAODTruthCnv_entries.cxx
+++ b/Event/xAOD/xAODTruthCnv/src/components/xAODTruthCnv_entries.cxx
@@ -2,14 +2,12 @@
 
 // Local include(s):
 #include "../xAODTruthCnvAlg.h"
-#include "xAODTruthCnv/TruthMetaDataTool.h"
 #include "../xAODTruthReader.h"
 #include "../HepMCTruthReader.h"
 
 DECLARE_NAMESPACE_ALGORITHM_FACTORY( xAODMaker, xAODTruthCnvAlg )
 DECLARE_NAMESPACE_ALGORITHM_FACTORY( xAODReader, xAODTruthReader )
 DECLARE_ALGORITHM_FACTORY( HepMCTruthReader )
-DECLARE_NAMESPACE_TOOL_FACTORY( xAODMaker, TruthMetaDataTool )
 
 DECLARE_FACTORY_ENTRIES( xAODCreatorAlgs ) {
    DECLARE_NAMESPACE_ALGORITHM( xAODMaker, xAODTruthCnvAlg )
@@ -18,5 +16,5 @@ DECLARE_FACTORY_ENTRIES( xAODCreatorAlgs ) {
 
 DECLARE_FACTORY_ENTRIES( xAODTruthCnv ) {
    DECLARE_ALGORITHM( HepMCTruthReader )
-   DECLARE_NAMESPACE_TOOL( xAODMaker, TruthMetaDataTool )
 }
+
diff --git a/Event/xAOD/xAODTruthCnv/xAODTruthCnv/TruthMetaDataTool.h b/Event/xAOD/xAODTruthCnv/xAODTruthCnv/TruthMetaDataTool.h
deleted file mode 100644
index d240b8f55194151c0d619f5010b60104d4c43ad8..0000000000000000000000000000000000000000
--- a/Event/xAOD/xAODTruthCnv/xAODTruthCnv/TruthMetaDataTool.h
+++ /dev/null
@@ -1,84 +0,0 @@
-// Dear emacs, this is -*- c++ -*-
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-#ifndef XAODTRUTHCNV_TRUTHMETADATATOOL_H
-#define XAODTRUTHCNV_TRUTHMETADATATOOL_H
-
-// System include(s):
-#include <string>
-#include <memory>
-
-// Gaudi/Athena include(s):
-#include "AsgTools/AsgMetadataTool.h"
-#ifdef ASGTOOL_ATHENA
-#   include "AthenaPoolKernel/IMetaDataTool.h"
-#endif // ASGTOOL_ATHENA
-
-// EDM include(s):
-#include "xAODTruth/TruthMetaDataContainer.h"
-#include "xAODTruth/TruthMetaDataAuxContainer.h"
-
-namespace xAODMaker {
-
-   /// Tool taking care of copying the truth metadata from file to file
-   ///
-   /// This tool does the heavy lifting when creating/merging DxAOD files to
-   /// make sure that the truth metadata ends up in the output.
-   ///
-   class TruthMetaDataTool : public asg::AsgMetadataTool
-#ifdef ASGTOOL_ATHENA
-                           , public virtual ::IMetaDataTool
-#endif // ASGTOOL_ATHENA
-   {
-
-      /// Declare the correct constructor for Athena
-      ASG_TOOL_CLASS0( TruthMetaDataTool )
-
-   public:
-      /// Regular AlgTool constructor
-      TruthMetaDataTool( const std::string& name = "TruthMetaDataTool" );
-
-      /// Function initialising the tool
-      virtual StatusCode initialize();
-
-   protected:
-      /// @name Functions called by the AsgMetadataTool base class
-      /// @{
-
-      /// Function collecting the configuration metadata from the input
-      /// file
-      virtual StatusCode beginInputFile();
-
-      /// Function writing out the collected metadata
-      virtual StatusCode metaDataStop();
-
-      /// @}
-
-   private:
-      /// @name Tool properties
-      /// @{
-
-      /// The key of the truth metadata in the input file
-      std::string m_inputKey;
-      /// The key of the truth metadata for the output file
-      std::string m_outputKey;
-
-      /// @}
-
-      /// @name Objects accummulating the merged metadata
-      /// @{
-
-      /// The merged trigger menu container
-      std::unique_ptr< xAOD::TruthMetaDataContainer > m_truthMeta;
-      /// The merged trigger menu auxiliary container
-      std::unique_ptr< xAOD::TruthMetaDataAuxContainer > m_truthMetaAux;
-
-      /// @}
-
-   }; // class TruthMetaDataTool
-
-} // namespace xAODMaker
-
-#endif // XAODTRUTHCNV_TRUTHMETADATATOOL_H
diff --git a/Event/xAOD/xAODTruthCnv/xAODTruthCnv/selection.xml b/Event/xAOD/xAODTruthCnv/xAODTruthCnv/selection.xml
deleted file mode 100644
index a56d7b3296047f6d71dee74a416f4cbb28655ef6..0000000000000000000000000000000000000000
--- a/Event/xAOD/xAODTruthCnv/xAODTruthCnv/selection.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<lcgdict>
-
-  <class name="xAODMaker::TruthMetaDataTool" />
-
-</lcgdict>
diff --git a/Event/xAOD/xAODTruthCnv/xAODTruthCnv/xAODTruthCnvDict.h b/Event/xAOD/xAODTruthCnv/xAODTruthCnv/xAODTruthCnvDict.h
deleted file mode 100644
index b0021f1e8e53dfda76d764ccc46208421ed2cd66..0000000000000000000000000000000000000000
--- a/Event/xAOD/xAODTruthCnv/xAODTruthCnv/xAODTruthCnvDict.h
+++ /dev/null
@@ -1,11 +0,0 @@
-// Dear emacs, this is -*- c++ -*-
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-#ifndef XAODTRUTHCNV_XAODTRUTHCNVDICT_H
-#define XAODTRUTHCNV_XAODTRUTHCNVDICT_H
-
-// Local include(s):
-#include "xAODTruthCnv/TruthMetaDataTool.h"
-
-#endif // XAODTRUTHCNV_XAODTRUTHCNVDICT_H