diff --git a/PhysicsAnalysis/TruthParticleID/McParticleTools/CMakeLists.txt b/PhysicsAnalysis/TruthParticleID/McParticleTools/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..be474d1fb09cfb535fff4b286a61e3344b8dbaeb
--- /dev/null
+++ b/PhysicsAnalysis/TruthParticleID/McParticleTools/CMakeLists.txt
@@ -0,0 +1,38 @@
+################################################################################
+# Package: McParticleTools
+################################################################################
+
+# Declare the package name:
+atlas_subdir( McParticleTools )
+
+# Declare the package's dependencies:
+atlas_depends_on_subdirs( PRIVATE
+                          Control/AthenaBaseComps
+                          Control/CxxUtils
+                          Control/DataModel
+                          Control/StoreGate
+                          Event/EventKernel
+                          GaudiKernel
+                          Generators/GenAnalysisTools/TruthHelper
+                          Generators/GeneratorObjects
+                          PhysicsAnalysis/TruthParticleID/McParticleEvent
+                          PhysicsAnalysis/TruthParticleID/McParticleKernel
+                          PhysicsAnalysis/TruthParticleID/McParticleUtils )
+
+# External dependencies:
+find_package( Boost COMPONENTS filesystem thread system )
+find_package( CLHEP )
+find_package( HepMC )
+find_package( HepPDT )
+find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread )
+
+# Component(s) in the package:
+atlas_add_component( McParticleTools
+                     src/*.cxx
+                     src/components/*.cxx
+                     INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${HEPPDT_INCLUDE_DIRS} ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS}
+                     LINK_LIBRARIES ${Boost_LIBRARIES} ${HEPPDT_LIBRARIES} ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} AthenaBaseComps CxxUtils DataModel StoreGateLib SGtests EventKernel GaudiKernel TruthHelper GeneratorObjects McParticleEvent McParticleKernel McParticleUtils )
+
+# Install files from the package:
+atlas_install_headers( McParticleTools )
+
diff --git a/PhysicsAnalysis/TruthParticleID/McParticleTools/src/EtaPtFilterTool.cxx b/PhysicsAnalysis/TruthParticleID/McParticleTools/src/EtaPtFilterTool.cxx
index df610602df7570587689e55184ab92d8666cab26..f439b289f7bc1958218e5e95da57727cd03de601 100755
--- a/PhysicsAnalysis/TruthParticleID/McParticleTools/src/EtaPtFilterTool.cxx
+++ b/PhysicsAnalysis/TruthParticleID/McParticleTools/src/EtaPtFilterTool.cxx
@@ -346,6 +346,7 @@ StatusCode EtaPtFilterTool::addVertex( const HepMC::GenVertex* srcVtx, HepMC::Ge
     if ( 0 == p ) {
       p = new HepMC::GenParticle;
       p->set_momentum( (*parent)->momentum() );
+      p->set_generated_mass( (*parent)->generated_mass() );
       p->set_pdg_id( (*parent)->pdg_id() );
       p->set_status( (*parent)->status() );
       p->set_flow( (*parent)->flow() );
@@ -368,6 +369,7 @@ StatusCode EtaPtFilterTool::addVertex( const HepMC::GenVertex* srcVtx, HepMC::Ge
     if ( 0 == p ) {
       p = new HepMC::GenParticle;
       p->set_momentum( (*child)->momentum() );
+      p->set_generated_mass( (*child)->generated_mass() );
       p->set_pdg_id( (*child)->pdg_id() );
       if ( m_butKeepAllGeneratorStable && !isAccepted(*child) && (*child)->status() == 2 ) 
 	p->set_status( 10902 ) ;
diff --git a/PhysicsAnalysis/TruthParticleID/McParticleTools/src/McVtxFilterTool.cxx b/PhysicsAnalysis/TruthParticleID/McParticleTools/src/McVtxFilterTool.cxx
index 2a34276d882a81d946eede3d39639a37649d4f0f..0668549bcceb3fefe2ee3de02669ef6477148813 100755
--- a/PhysicsAnalysis/TruthParticleID/McParticleTools/src/McVtxFilterTool.cxx
+++ b/PhysicsAnalysis/TruthParticleID/McParticleTools/src/McVtxFilterTool.cxx
@@ -343,6 +343,7 @@ void McVtxFilterTool::addVertex( const HepMC::GenVertex* srcVtx,
     if ( 0 == mother ) {
       mother = new HepMC::GenParticle;
       mother->set_momentum( (*parent)->momentum() );
+      mother->set_generated_mass( (*parent)->generated_mass() );
       mother->set_pdg_id( (*parent)->pdg_id() );
       mother->set_status( (*parent)->status() );
       mother->set_flow( (*parent)->flow() );
@@ -369,6 +370,7 @@ void McVtxFilterTool::addVertex( const HepMC::GenVertex* srcVtx,
       } else {
 	daughter = new HepMC::GenParticle;
 	daughter->set_momentum( (*child)->momentum() );
+   daughter->set_generated_mass( (*child)->generated_mass() );
 	daughter->set_pdg_id( (*child)->pdg_id() );
 	daughter->set_status( (*child)->status() );
 	daughter->set_flow( (*child)->flow() );
diff --git a/PhysicsAnalysis/TruthParticleID/McParticleTools/src/VtxBasedFilterTool.cxx b/PhysicsAnalysis/TruthParticleID/McParticleTools/src/VtxBasedFilterTool.cxx
index 1c6dba85bfd0239689e8c0f7326cb866573b8b73..d565d0bc841246ef2027132193422c0cf55070da 100755
--- a/PhysicsAnalysis/TruthParticleID/McParticleTools/src/VtxBasedFilterTool.cxx
+++ b/PhysicsAnalysis/TruthParticleID/McParticleTools/src/VtxBasedFilterTool.cxx
@@ -208,6 +208,7 @@ StatusCode VtxBasedFilterTool::addVertex( const HepMC::GenVertex* srcVtx,
     if ( 0 == p ) {
       p = new HepMC::GenParticle;
       p->set_momentum( (*parent)->momentum() );
+      p->set_generated_mass( (*parent)->generated_mass() );
       p->set_pdg_id( (*parent)->pdg_id() );
       p->set_status( (*parent)->status() );
       p->set_flow( (*parent)->flow() );
@@ -230,6 +231,7 @@ StatusCode VtxBasedFilterTool::addVertex( const HepMC::GenVertex* srcVtx,
     if ( 0 == p ) {
       p = new HepMC::GenParticle;
       p->set_momentum( (*child)->momentum() );
+      p->set_generated_mass( (*child)->generated_mass() );
       p->set_pdg_id( (*child)->pdg_id() );
       p->set_flow( (*child)->flow() );
       p->set_polarization( (*child)->polarization() );