diff --git a/Event/xAOD/xAODTruth/CMakeLists.txt b/Event/xAOD/xAODTruth/CMakeLists.txt
index b469ec6f34d1661347e4f186379aef0880760a0c..f7804228e3abbcaa96e09f76c36b70b78bd2dc1d 100644
--- a/Event/xAOD/xAODTruth/CMakeLists.txt
+++ b/Event/xAOD/xAODTruth/CMakeLists.txt
@@ -32,9 +32,16 @@ atlas_add_dictionary( xAODTruthDict
    LINK_LIBRARIES xAODTruth
    EXTRA_FILES Root/dict/*.cxx )
 
+
+
 atlas_generate_cliddb( xAODTruth )
 
 # Test(s) in the package:
 atlas_add_test( ut_xaodtruth_particle_test
    SOURCES test/ut_xaodtruth_particle_test.cxx
    LINK_LIBRARIES xAODTruth )
+
+if( XAOD_STANDALONE )
+   atlas_add_test( ut_xaodtruth_helpers_test
+      SCRIPT test/ut_xaodtruth_helpers_test.py )
+endif()
diff --git a/Event/xAOD/xAODTruth/Root/TruthMetaDataAuxContainer_v1.cxx b/Event/xAOD/xAODTruth/Root/TruthMetaDataAuxContainer_v1.cxx
index 0d1d7a578c1cdbc2ffe0198a42335214d8f9ca6b..08c1142719a6191f74d43ec831e7a7b8b27932bb 100644
--- a/Event/xAOD/xAODTruth/Root/TruthMetaDataAuxContainer_v1.cxx
+++ b/Event/xAOD/xAODTruth/Root/TruthMetaDataAuxContainer_v1.cxx
@@ -14,6 +14,12 @@ namespace xAOD {
 
       AUX_VARIABLE( weightNames );
       AUX_VARIABLE( mcChannelNumber );
+      AUX_VARIABLE( lhefGenerator );
+      AUX_VARIABLE( generators );
+      AUX_VARIABLE( evgenProcess );
+      AUX_VARIABLE( evgenTune );
+      AUX_VARIABLE( hardPDF );
+      AUX_VARIABLE( softPDF );
    }
 
 } // namespace xAOD
diff --git a/Event/xAOD/xAODTruth/Root/TruthMetaData_v1.cxx b/Event/xAOD/xAODTruth/Root/TruthMetaData_v1.cxx
index 3897c03340dc27adc67ae60ac6b05b922bd51a7f..2cbdbacad3aaf9a1c0daa196975c5616fa61df11 100644
--- a/Event/xAOD/xAODTruth/Root/TruthMetaData_v1.cxx
+++ b/Event/xAOD/xAODTruth/Root/TruthMetaData_v1.cxx
@@ -17,5 +17,11 @@ namespace xAOD {
    //Arguments for MACRO are as follows: AUXSTORE_OBJECT/PRIMITIVE_SETTER_AND_GETTER(CL, TYPE, NAME, SETTER)
    AUXSTORE_OBJECT_SETTER_AND_GETTER(TruthMetaData_v1, std::vector < std::string >, weightNames, setWeightNames )
    AUXSTORE_PRIMITIVE_SETTER_AND_GETTER(TruthMetaData_v1, uint32_t, mcChannelNumber, setMcChannelNumber )
+   AUXSTORE_OBJECT_SETTER_AND_GETTER(TruthMetaData_v1, std::string, lhefGenerator, setLhefGenerator )
+   AUXSTORE_OBJECT_SETTER_AND_GETTER(TruthMetaData_v1, std::string, generators, setGenerators )
+   AUXSTORE_OBJECT_SETTER_AND_GETTER(TruthMetaData_v1, std::string, evgenProcess, setEvgenProcess )
+   AUXSTORE_OBJECT_SETTER_AND_GETTER(TruthMetaData_v1, std::string, evgenTune, setEvgenTune )
+   AUXSTORE_OBJECT_SETTER_AND_GETTER(TruthMetaData_v1, std::string, hardPDF, setHardPDF )
+   AUXSTORE_OBJECT_SETTER_AND_GETTER(TruthMetaData_v1, std::string, softPDF, setSoftPDF )
 }
  // 
diff --git a/Event/xAOD/xAODTruth/Root/TruthParticle_v1.cxx b/Event/xAOD/xAODTruth/Root/TruthParticle_v1.cxx
index d3c2c1f30c67a6d1406bce46feb7108e4ba930aa..cd80998bcd5d105aa56fa1ffdb7283c28f37a1f4 100644
--- a/Event/xAOD/xAODTruth/Root/TruthParticle_v1.cxx
+++ b/Event/xAOD/xAODTruth/Root/TruthParticle_v1.cxx
@@ -17,6 +17,9 @@
 // xAOD include(s):
 #include "xAODCore/AuxStoreAccessorMacros.h"
 
+// Accessor include:
+#include "AthContainers/AuxElement.h"
+
 // Local include(s):
 #include "xAODTruth/versions/TruthParticle_v1.h"
 #include "xAODTruth/TruthVertexContainer.h"
@@ -57,15 +60,15 @@ namespace xAOD {
 
    /// Accessor for the production vertex
    static const SG::AuxElement::Accessor< ElementLink< TruthVertexContainer > >
-      prodVtxLinkAcc( "prodVtxLink" );
+      acc_prodVtxLink( "prodVtxLink" );
    /// Accessor for the decay vertex
    static const SG::AuxElement::Accessor< ElementLink< TruthVertexContainer > >
-      decayVtxLinkAcc( "decayVtxLink" );
+      acc_decayVtxLink( "decayVtxLink" );
 
    bool TruthParticle_v1::hasProdVtx() const {
 
-      return ( prodVtxLinkAcc.isAvailable( *this ) &&
-               prodVtxLinkAcc( *this ).isValid() );
+      return ( acc_prodVtxLink.isAvailable( *this ) &&
+               acc_prodVtxLink( *this ).isValid() );
    }
 
    const TruthVertex* TruthParticle_v1::prodVtx() const {
@@ -79,8 +82,8 @@ namespace xAOD {
 
    bool TruthParticle_v1::hasDecayVtx() const {
 
-      return ( decayVtxLinkAcc.isAvailable( *this ) &&
-               decayVtxLinkAcc( *this ).isValid() );
+      return ( acc_decayVtxLink.isAvailable( *this ) &&
+               acc_decayVtxLink( *this ).isValid() );
    }
 
    const TruthVertex* TruthParticle_v1::decayVtx() const {
@@ -100,24 +103,50 @@ namespace xAOD {
    //                 Direct access to parents and children
    //
 
-   size_t TruthParticle_v1::nParents() const {
+   // Accessor for links to parents
+   static const SG::AuxElement::ConstAccessor< std::vector<ElementLink<xAOD::TruthParticleContainer> > >
+      acc_parentLinks( "parentLinks" );
+   // Accessor for links to children
+   static const SG::AuxElement::ConstAccessor< std::vector<ElementLink<xAOD::TruthParticleContainer> > >
+      acc_childLinks( "childLinks" );
+   // Note that in some conditions the vertex might be saved in a different collection from
+   // the daughters, causing the vertex to not know how many children or parents the particle has.
+   // An extra test lets us ensure that we avoid this case.
 
-      return hasProdVtx() ? prodVtx()->nIncomingParticles() : 0;
+   size_t TruthParticle_v1::nParents() const {
+      if (hasProdVtx() && prodVtx()->nIncomingParticles()>0){
+        return prodVtx()->nIncomingParticles();
+      } else if ( acc_parentLinks.isAvailable( *this ) ) {
+        return acc_parentLinks( *this ).size();
+      }
+      return 0;
    }
 
    const TruthParticle_v1* TruthParticle_v1::parent( size_t i ) const {
-
-      return hasProdVtx() ? prodVtx()->incomingParticle( i ) : 0;
+      if (hasProdVtx() && prodVtx()->nIncomingParticles()>0){
+        return prodVtx()->incomingParticle( i );
+      } else if ( acc_parentLinks.isAvailable( *this ) && i<acc_parentLinks( *this ).size() ) {
+        return acc_parentLinks( *this )[i].isValid() ? *(acc_parentLinks( *this )[i]) : nullptr;
+      }
+      return nullptr;
    }
 
    size_t TruthParticle_v1::nChildren() const {
-
-      return hasDecayVtx() ? decayVtx()->nOutgoingParticles() : 0;
+      if (hasDecayVtx() && decayVtx()->nOutgoingParticles()>0){
+        return decayVtx()->nOutgoingParticles();
+      } else if ( acc_childLinks.isAvailable( *this ) ) {
+        return acc_childLinks( *this ).size();
+      }
+      return 0;
    }
 
    const TruthParticle_v1* TruthParticle_v1::child( size_t i ) const {
-
-      return hasDecayVtx() ? decayVtx()->outgoingParticle( i ) : 0;
+      if (hasDecayVtx() && decayVtx()->nOutgoingParticles()>0){
+        return decayVtx()->outgoingParticle( i );
+      } else if ( acc_childLinks.isAvailable( *this ) && i<acc_childLinks( *this ).size() ) {
+        return acc_childLinks( *this )[i].isValid() ? *(acc_childLinks( *this )[i]) : nullptr;
+      }
+      return nullptr;
    }
 
    //
@@ -273,6 +302,7 @@ namespace xAOD {
    MC_PID_HELPER( bool, isHiggs )
    MC_PID_HELPER( bool, isResonance )
    MC_PID_HELPER( bool, isGenSpecific )
+   MC_PID_HELPER( bool, isBSM )
 
 // Forget about this macro:
 #undef MC_PID_HELPER
@@ -326,7 +356,7 @@ namespace xAOD {
       return true;
    }
 
-   float TruthParticle_v1::polarizationPatameter( PolParam param ) const {
+   float TruthParticle_v1::polarizationParameter( PolParam param ) const {
 
       // Get the accessor object:
       const Accessor< float >* acc = polarizationAccessorV1( param );
@@ -355,11 +385,11 @@ namespace xAOD {
 
    void TruthParticle_v1::toPersistent() {
 
-      if( prodVtxLinkAcc.isAvailableWritable( *this ) ) {
-         prodVtxLinkAcc( *this ).toPersistent();
+      if( acc_prodVtxLink.isAvailableWritable( *this ) ) {
+         acc_prodVtxLink( *this ).toPersistent();
       }
-      if( decayVtxLinkAcc.isAvailableWritable( *this ) ) {
-         decayVtxLinkAcc( *this ).toPersistent();
+      if( acc_decayVtxLink.isAvailableWritable( *this ) ) {
+         acc_decayVtxLink( *this ).toPersistent();
       }
       return;
    }
diff --git a/Event/xAOD/xAODTruth/Root/xAODTruthCLIDs.cxx b/Event/xAOD/xAODTruth/Root/xAODTruthCLIDs.cxx
index 491a18cd3d169a9884a69cf7adb802278886dab4..9f7e425c4bccbd2b893f5db219917c4fa013edff 100644
--- a/Event/xAOD/xAODTruth/Root/xAODTruthCLIDs.cxx
+++ b/Event/xAOD/xAODTruth/Root/xAODTruthCLIDs.cxx
@@ -14,4 +14,6 @@
 #include "xAODTruth/TruthPileupEventContainer.h"
 #include "xAODTruth/TruthPileupEventAuxContainer.h"
 #include "xAODTruth/TruthEventBaseContainer.h"
+#include "xAODTruth/TruthMetaDataContainer.h"
+#include "xAODTruth/TruthMetaDataAuxContainer.h"
 
diff --git a/Event/xAOD/xAODTruth/test/ut_xaodtruth_helpers_test.py b/Event/xAOD/xAODTruth/test/ut_xaodtruth_helpers_test.py
index 4147126363f0779555b4663a4acca857d0c98252..327f904731e1339e1a257fe7924d7f702e374650 100755
--- a/Event/xAOD/xAODTruth/test/ut_xaodtruth_helpers_test.py
+++ b/Event/xAOD/xAODTruth/test/ut_xaodtruth_helpers_test.py
@@ -2,8 +2,6 @@
 
 # Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
 #
-# $Id: ut_xaodtruth_helpers_test.py 761304 2016-07-12 12:03:36Z krasznaa $
-#
 # This is a simple unit test for checking the health of the truth helper
 # functions in the standalone analysis environment.
 #
@@ -13,11 +11,13 @@ def main():
 
     # Initialise the environment:
     import ROOT
-    ROOT.gROOT.Macro( "$ROOTCOREDIR/scripts/load_packages.C" )
+    if not ROOT.xAOD.Init().isSuccess():
+        print( "Couldn't initialise the xAOD reading environment" )
+        return 1
 
     # Open an input xAOD file:
     import os
-    FNAME = os.getenv( "ROOTCORE_TEST_FILE", "FileNotSpecifiedInEnvironment" )
+    FNAME = os.getenv( "ASG_TEST_FILE_MC", "FileNotSpecifiedInEnvironment" )
     f = ROOT.TFile.Open( FNAME, "READ" )
     if not f:
         print( "Couldn't open \"%s\"" % FNAME )
@@ -25,7 +25,7 @@ def main():
     print( "Opened: %s" % FNAME )
 
     # Make a transient tree from it:
-    treeMgr = ROOT.xAOD.TTreeMgr( ROOT.xAOD.TEvent.kAthenaAccess )
+    treeMgr = ROOT.xAOD.TTreeMgr()
     if not treeMgr.readFrom( f ).isSuccess():
         print( "Couldn't make a transient tree from the input file!" )
         return 1
diff --git a/Event/xAOD/xAODTruth/xAODTruth/TruthParticleContainerFwd.h b/Event/xAOD/xAODTruth/xAODTruth/TruthParticleContainerFwd.h
index 95f85d743c19fbaa873dcddcb653cba0c924b41f..7d1fa5bc8c99c97831a02be036ec09557b99cfd3 100644
--- a/Event/xAOD/xAODTruth/xAODTruth/TruthParticleContainerFwd.h
+++ b/Event/xAOD/xAODTruth/xAODTruth/TruthParticleContainerFwd.h
@@ -4,7 +4,6 @@
   Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
 */
 
-// $Id: TruthParticleContainerFwd.h 574253 2013-12-06 15:21:49Z krasznaa $
 #ifndef XAODTRUTH_TRUTHPARTICLECONTAINERFWD_H
 #define XAODTRUTH_TRUTHPARTICLECONTAINERFWD_H
 
@@ -16,7 +15,7 @@
 #include "xAODTruth/TruthParticleFwd.h"
 
 // Declare that this is a vector of IParticle-derived objects
-DATAVECTOR_BASE( xAOD::TruthParticle, xAOD::IParticle );
+DATAVECTOR_BASE_FWD( xAOD::TruthParticle, xAOD::IParticle );
 
 namespace xAOD {
    /// Provide a forward declaration for TruthParticleContainer
diff --git a/Event/xAOD/xAODTruth/xAODTruth/selection.xml b/Event/xAOD/xAODTruth/xAODTruth/selection.xml
index 25517183cd939d67197995db6e02cbb2bf6b7d1d..e051ef8fb0f866f65462af97a4e1f519411a35bf 100644
--- a/Event/xAOD/xAODTruth/xAODTruth/selection.xml
+++ b/Event/xAOD/xAODTruth/xAODTruth/selection.xml
@@ -1,6 +1,22 @@
 <!-- $Id: selection.xml 670153 2015-05-27 11:42:29Z tbisanz $ -->
 <lcgdict>
 
+  <typedef name="xAOD::TruthParticle" />
+  <typedef name="xAOD::TruthVertex" />
+  <typedef name="xAOD::TruthEvent" />
+
+  <typedef name="xAOD::TruthParticleContainer" />
+  <typedef name="xAOD::TruthVertexContainer" />
+  <typedef name="xAOD::TruthEventContainer" />
+
+  <typedef name="xAOD::TruthParticleAuxContainer" />
+  <typedef name="xAOD::TruthVertexAuxContainer" />
+  <typedef name="xAOD::TruthEventAuxContainer" />
+
+  <typedef name="xAOD::TruthMetaData" />
+  <typedef name="xAOD::TruthMetaDataContainer" />
+
+
   <!-- The TruthParticle_v1 class(es): -->
   <class name="xAOD::TruthParticle_v1" />
   <class name="xAOD::TruthParticle_v1::Polarization" />
diff --git a/Event/xAOD/xAODTruth/xAODTruth/versions/TruthEventContainer_v1.h b/Event/xAOD/xAODTruth/xAODTruth/versions/TruthEventContainer_v1.h
index a0f62c9b12d39e954d5c5278f284d8f616772094..17ac7d6994602d1c9bf1a41748b9ca9855d31191 100644
--- a/Event/xAOD/xAODTruth/xAODTruth/versions/TruthEventContainer_v1.h
+++ b/Event/xAOD/xAODTruth/xAODTruth/versions/TruthEventContainer_v1.h
@@ -1,10 +1,9 @@
 // -*- C++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
-// $Id: TruthEventContainer_v1.h 622193 2014-10-16 16:08:34Z krasznaa $
 #ifndef XAODTRUTH_VERSIONS_TRUTHEVENTCONTAINER_V1_H
 #define XAODTRUTH_VERSIONS_TRUTHEVENTCONTAINER_V1_H
 
@@ -14,9 +13,6 @@
 // Local include(s):
 #include "xAODTruth/versions/TruthEvent_v1.h"
 
-// Declare the base class of TruthEvent_v1 for DataVector
-DATAVECTOR_BASE( xAOD::TruthEvent_v1, xAOD::TruthEventBase_v1 );
-
 namespace xAOD {
    /// Alias
    typedef DataVector< TruthEvent_v1 > TruthEventContainer_v1;
diff --git a/Event/xAOD/xAODTruth/xAODTruth/versions/TruthEvent_v1.h b/Event/xAOD/xAODTruth/xAODTruth/versions/TruthEvent_v1.h
index 5363f63227e5e5de2d7774f92ed11a6e47979c85..3afcf7aeaba31f168edf0f6565170a764f594abd 100644
--- a/Event/xAOD/xAODTruth/xAODTruth/versions/TruthEvent_v1.h
+++ b/Event/xAOD/xAODTruth/xAODTruth/versions/TruthEvent_v1.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: TruthEvent_v1.h 761796 2016-07-14 08:06:02Z krasznaa $
@@ -210,4 +210,8 @@ namespace xAOD {
 #include "xAODCore/BaseInfo.h"
 SG_BASE( xAOD::TruthEvent_v1, xAOD::TruthEventBase_v1 );
 
+#include "AthContainers/DataVector.h"
+DATAVECTOR_BASE( xAOD::TruthEvent_v1, xAOD::TruthEventBase_v1 );
+
+
 #endif // XAODTRUTH_VERSIONS_TRUTHEVENT_V1_H
diff --git a/Event/xAOD/xAODTruth/xAODTruth/versions/TruthMetaDataAuxContainer_v1.h b/Event/xAOD/xAODTruth/xAODTruth/versions/TruthMetaDataAuxContainer_v1.h
index aec914664b52160c49992d4b0ad2ddc5a3d8dce6..8ba72062a2c31b653c76cc5632ce79342b572209 100644
--- a/Event/xAOD/xAODTruth/xAODTruth/versions/TruthMetaDataAuxContainer_v1.h
+++ b/Event/xAOD/xAODTruth/xAODTruth/versions/TruthMetaDataAuxContainer_v1.h
@@ -39,6 +39,14 @@ namespace xAOD {
     std::vector < std::vector < std::string > > weightNames;
     std::vector < uint32_t > mcChannelNumber;
 
+    // Provide access to the other key generator metadata
+    std::vector < std::string > lhefGenerator; //!< Generator for LHE file events
+    std::vector < std::string > generators; //!< Generators for this dataset
+    std::vector < std::string > evgenProcess; //!< Physics process in this dataset
+    std::vector < std::string > evgenTune; //!< Hadronization and UE tune used for this dataset
+    std::vector < std::string > hardPDF; //!< PDF used for the hard process
+    std::vector < std::string > softPDF; //!< PDF used for the tune / shower / hadronization
+
   }; // class TruthMetaDataAuxContainer_v1
 
 } // namespace xAOD
diff --git a/Event/xAOD/xAODTruth/xAODTruth/versions/TruthMetaData_v1.h b/Event/xAOD/xAODTruth/xAODTruth/versions/TruthMetaData_v1.h
index cd48d625979ab35333d96b32ac8fa0fc85356db1..53d3d478abacc488bfd9b5b5b15caade35793139 100644
--- a/Event/xAOD/xAODTruth/xAODTruth/versions/TruthMetaData_v1.h
+++ b/Event/xAOD/xAODTruth/xAODTruth/versions/TruthMetaData_v1.h
@@ -40,6 +40,24 @@ namespace xAOD {
       const std::vector< std::string >& weightNames() const;
       void setWeightNames( const std::vector< std::string >& value );
 
+      const std::string& lhefGenerator() const;
+      void setLhefGenerator( const std::string& value );
+
+      const std::string& generators() const;
+      void setGenerators( const std::string& value );
+
+      const std::string& evgenProcess() const;
+      void setEvgenProcess( const std::string& value );
+
+      const std::string& evgenTune() const;
+      void setEvgenTune( const std::string& value );
+
+      const std::string& hardPDF() const;
+      void setHardPDF( const std::string& value );
+
+      const std::string& softPDF() const;
+      void setSoftPDF( const std::string& value );
+
       /// @}
 
    private:
diff --git a/Event/xAOD/xAODTruth/xAODTruth/versions/TruthParticleContainer_v1.h b/Event/xAOD/xAODTruth/xAODTruth/versions/TruthParticleContainer_v1.h
index 4bee9879f63ca4729110c988001e81d539a82e1d..bd5d1a977d0580e97435432405d56efd739c454c 100644
--- a/Event/xAOD/xAODTruth/xAODTruth/versions/TruthParticleContainer_v1.h
+++ b/Event/xAOD/xAODTruth/xAODTruth/versions/TruthParticleContainer_v1.h
@@ -1,10 +1,9 @@
 // -*- C++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
-// $Id: TruthParticleContainer_v1.h 622193 2014-10-16 16:08:34Z krasznaa $
 #ifndef XAODTRUTH_VERSIONS_TRUTHPARTICLECONTAINER_V1_H
 #define XAODTRUTH_VERSIONS_TRUTHPARTICLECONTAINER_V1_H
 
@@ -14,7 +13,6 @@
 
 // Local include(s):
 #include "xAODTruth/versions/TruthParticle_v1.h"
-#include "xAODTruth/TruthParticleContainerFwd.h" // Only as long as this is the most recent version...
 
 namespace xAOD {
    // Alias
diff --git a/Event/xAOD/xAODTruth/xAODTruth/versions/TruthParticle_v1.h b/Event/xAOD/xAODTruth/xAODTruth/versions/TruthParticle_v1.h
index 311c2ec6a536b24a9d2677914ef6730e3917af92..d6fcfe18cdf4d851bfab9302184869a4094c83f7 100644
--- a/Event/xAOD/xAODTruth/xAODTruth/versions/TruthParticle_v1.h
+++ b/Event/xAOD/xAODTruth/xAODTruth/versions/TruthParticle_v1.h
@@ -20,6 +20,8 @@
 
 // ROOT include(s):
 #include "Math/Vector4D.h"
+#include "xAODTruth/TruthParticleContainerFwd.h"
+template struct DataVector_detail::DVLEltBaseInit< xAOD::TruthParticle_v1>;
 
 namespace xAOD {
 
@@ -290,6 +292,8 @@ namespace xAOD {
       bool isResonance() const;
       /// Check if this is a generator specific (non-physical) particle
       bool isGenSpecific() const;
+      /// Check if this is a BSM particle
+      bool isBSM() const;
 
       /// @}
 
@@ -340,7 +344,7 @@ namespace xAOD {
       /// @param parameter The polarion parameter that we are interested in
       /// @return The value of the polarization parameter requested
       ///
-      float polarizationPatameter( PolParam parameter ) const;
+      float polarizationParameter( PolParam parameter ) const;
 
       /// Single container for full polarization information
       ///
diff --git a/Event/xAOD/xAODTruth/xAODTruth/versions/TruthPileupEventContainer_v1.h b/Event/xAOD/xAODTruth/xAODTruth/versions/TruthPileupEventContainer_v1.h
index ded2f41126038d647a442c5367e41709af8b7063..bed3a688df4dc9ad0ce1a65c84f0ded2e93354f5 100644
--- a/Event/xAOD/xAODTruth/xAODTruth/versions/TruthPileupEventContainer_v1.h
+++ b/Event/xAOD/xAODTruth/xAODTruth/versions/TruthPileupEventContainer_v1.h
@@ -1,10 +1,9 @@
 // -*- C++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
-// $Id: TruthPileupEventContainer_v1.h 622193 2014-10-16 16:08:34Z krasznaa $
 #ifndef XAODTRUTH_VERSIONS_TRUTHPILEUPEVENTCONTAINER_V1_H
 #define XAODTRUTH_VERSIONS_TRUTHPILEUPEVENTCONTAINER_V1_H
 
@@ -14,8 +13,6 @@
 // Local include(s):
 #include "xAODTruth/versions/TruthPileupEvent_v1.h"
 
-// Declare the base class of TruthEvent_v1 for DataVector
-DATAVECTOR_BASE( xAOD::TruthPileupEvent_v1, xAOD::TruthEventBase_v1 );
 
 namespace xAOD {
    /// Alias declaring the container type
diff --git a/Event/xAOD/xAODTruth/xAODTruth/versions/TruthPileupEvent_v1.h b/Event/xAOD/xAODTruth/xAODTruth/versions/TruthPileupEvent_v1.h
index a38277cbd93f914752a6bb055ce5c10b835269f4..3bc254384f89d06ba6dca6df6266f6f52ebf036e 100644
--- a/Event/xAOD/xAODTruth/xAODTruth/versions/TruthPileupEvent_v1.h
+++ b/Event/xAOD/xAODTruth/xAODTruth/versions/TruthPileupEvent_v1.h
@@ -1,10 +1,9 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
-// $Id: TruthPileupEvent_v1.h 622193 2014-10-16 16:08:34Z krasznaa $
 #ifndef XAODTRUTH_VERSIONS_TRUTHPILEUPEVENT_V1_H
 #define XAODTRUTH_VERSIONS_TRUTHPILEUPEVENT_V1_H
 
@@ -40,4 +39,6 @@ namespace xAOD {
 #include "xAODCore/BaseInfo.h"
 SG_BASE( xAOD::TruthPileupEvent_v1, xAOD::TruthEventBase_v1 );
 
+DATAVECTOR_BASE( xAOD::TruthPileupEvent_v1, xAOD::TruthEventBase_v1 );
+
 #endif // XAODTRUTH_VERSIONS_TRUTHPILEUPEVENT_V1_H
diff --git a/Event/xAOD/xAODTruth/xAODTruth/xAODTruthDict.h b/Event/xAOD/xAODTruth/xAODTruth/xAODTruthDict.h
index ed88b03a434bccbd99b5a889654c9757b28fbd50..43d481519f4aec026ed1e6f57df97231ae104f07 100644
--- a/Event/xAOD/xAODTruth/xAODTruth/xAODTruthDict.h
+++ b/Event/xAOD/xAODTruth/xAODTruth/xAODTruthDict.h
@@ -1,7 +1,7 @@
 // Dear emacs, this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: xAODTruthDict.h 670153 2015-05-27 11:42:29Z tbisanz $
@@ -27,6 +27,18 @@
 #include "xAODTruth/versions/TruthPileupEventAuxContainer_v1.h"
 #include "xAODTruth/versions/TruthMetaDataContainer_v1.h"
 #include "xAODTruth/versions/TruthMetaDataAuxContainer_v1.h"
+
+#include "xAODTruth/TruthParticleContainer.h"
+#include "xAODTruth/TruthParticleAuxContainer.h"
+#include "xAODTruth/TruthVertexContainer.h"
+#include "xAODTruth/TruthVertexAuxContainer.h"
+#include "xAODTruth/TruthEventBaseContainer.h"
+#include "xAODTruth/TruthEventContainer.h"
+#include "xAODTruth/TruthEventAuxContainer.h"
+#include "xAODTruth/TruthPileupEventContainer.h"
+#include "xAODTruth/TruthPileupEventAuxContainer.h"
+#include "xAODTruth/TruthMetaDataContainer.h"
+#include "xAODTruth/TruthMetaDataAuxContainer.h"
 #include "xAODTruth/xAODTruthHelpers.h"
 
 namespace {
diff --git a/Reconstruction/PFlow/PFlowUtils/CMakeLists.txt b/Reconstruction/PFlow/PFlowUtils/CMakeLists.txt
index d57f06fe8af2fdc90f34510df0b0ef524795a84b..6407592f882a4221c06d85012d8de55504ab8c01 100644
--- a/Reconstruction/PFlow/PFlowUtils/CMakeLists.txt
+++ b/Reconstruction/PFlow/PFlowUtils/CMakeLists.txt
@@ -21,6 +21,7 @@ atlas_depends_on_subdirs(
   PRIVATE
   Control/AthContainers
   Event/xAOD/xAODJet
+  Event/xAOD/xAODTruth
   ${extra_deps} )
 
 # Component(s) in the package:
@@ -32,7 +33,7 @@ atlas_add_library( PFlowUtilsLib
 if( NOT XAOD_STANDALONE )
    atlas_add_component( PFlowUtils
       src/*.h src/*.cxx src/components/*.cxx
-      LINK_LIBRARIES AthenaBaseComps xAODJet xAODPFlow GaudiKernel
+      LINK_LIBRARIES AthenaBaseComps xAODJet xAODPFlow GaudiKernel xAODTruth
       PFlowUtilsLib )
 endif()