diff --git a/Event/xAOD/xAODTruthCnv/src/HepMCTruthReader.h b/Event/xAOD/xAODTruthCnv/src/HepMCTruthReader.h
index 71bf61b5a3f71d0889c104cc7a953b3eaba1938b..71e19e440fe4f5baf913847ffb51dbd2a28fd661 100644
--- a/Event/xAOD/xAODTruthCnv/src/HepMCTruthReader.h
+++ b/Event/xAOD/xAODTruthCnv/src/HepMCTruthReader.h
@@ -7,11 +7,9 @@
 
 #include "AthenaBaseComps/AthAlgorithm.h"
 
-namespace HepMC {
-  class GenEvent;
-  class GenVertex;
-  class GenParticle;
-}
+#include "AtlasHepMC/GenEvent_fwd.h"
+#include "AtlasHepMC/GenVertex_fwd.h"
+#include "AtlasHepMC/GenParticle_fwd.h"
 
 
 /// @short Algorithm demonstrating reading of HepMC truth, and printing to screen
diff --git a/Event/xAOD/xAODTruthCnv/src/xAODTruthCnvAlg.h b/Event/xAOD/xAODTruthCnv/src/xAODTruthCnvAlg.h
index 52f60dc6ba8be3020730fe43e7ae3d790bde3700..aad1b77c482e42a9749517d9a08015d4667d4dce 100644
--- a/Event/xAOD/xAODTruthCnv/src/xAODTruthCnvAlg.h
+++ b/Event/xAOD/xAODTruthCnv/src/xAODTruthCnvAlg.h
@@ -15,7 +15,7 @@
 #pragma clang diagnostic ignored "-Wkeyword-macro"
 #endif
 #define private public
-#   include "HepMC/WeightContainer.h"
+#include "AtlasHepMC/WeightContainer.h"
 #undef private
 #ifdef __clang__
 #pragma clang diagnostic pop
@@ -38,10 +38,10 @@
 
 #include <unordered_set>
 
-namespace HepMC {
-  class GenVertex;
-  class GenParticle;
-}
+
+#include "AtlasHepMC/GenVertex_fwd.h"
+#include "AtlasHepMC/GenParticle_fwd.h"
+
 
 namespace xAODMaker {
 
diff --git a/Generators/AtlasHepMC/AtlasHepMC/Flow.h b/Generators/AtlasHepMC/AtlasHepMC/Flow.h
index eb686562d48f0bdebc76dd8b0b98fa2e65a97523..9991ae6192d641fe065fac9eb2f1c9864c2f97d9 100644
--- a/Generators/AtlasHepMC/AtlasHepMC/Flow.h
+++ b/Generators/AtlasHepMC/AtlasHepMC/Flow.h
@@ -6,6 +6,7 @@
 #include "HepMC/Flow.h"
 namespace HepMC
 {
-template <class T> int flow(T a,int i=0){return a->flow(i);}
+template <class T> int flow(T a,int i){return a->flow(i);}
+template <class T> Flow flow(T a){return a->flow();}
 }
 #endif
diff --git a/Generators/AtlasHepMC/AtlasHepMC/GenParticle_fwd.h b/Generators/AtlasHepMC/AtlasHepMC/GenParticle_fwd.h
index 1dcb967968155092299bbe848ad21d836c1e00d5..15f0ac57861cc47993a7cf724f74579c20bb8a36 100644
--- a/Generators/AtlasHepMC/AtlasHepMC/GenParticle_fwd.h
+++ b/Generators/AtlasHepMC/AtlasHepMC/GenParticle_fwd.h
@@ -6,6 +6,5 @@
 namespace HepMC {
 class GenParticle;
 typedef GenParticle* GenParticlePtr;
-typedef (GenParticle* const) ConstGenParticlePtr;
 }
 #endif
diff --git a/Generators/AtlasHepMC/AtlasHepMC/GenVertex_fwd.h b/Generators/AtlasHepMC/AtlasHepMC/GenVertex_fwd.h
index 93fa2244ed9be6ad4eab6e34644659b815ee4a60..2c98b4f9dafe17533e948790226012f9efb13b6e 100644
--- a/Generators/AtlasHepMC/AtlasHepMC/GenVertex_fwd.h
+++ b/Generators/AtlasHepMC/AtlasHepMC/GenVertex_fwd.h
@@ -6,6 +6,5 @@
 namespace HepMC {
 class GenVertex;
 typedef HepMC::GenVertex* GenVertexPtr;
-typedef (HepMC::GenVertex* const)  ConstGenVertexPtr;
 }
 #endif
diff --git a/Generators/AtlasHepMC/AtlasHepMC/IteratorRange.h b/Generators/AtlasHepMC/AtlasHepMC/IteratorRange.h
new file mode 100644
index 0000000000000000000000000000000000000000..3936956cb0f3a6f0ba0319e4c6b786286e943d65
--- /dev/null
+++ b/Generators/AtlasHepMC/AtlasHepMC/IteratorRange.h
@@ -0,0 +1,7 @@
+/* Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+   Author: Andrii Verbytskyi andrii.verbytskyi@mpp.mpg.de
+   */
+#ifndef ATLASHEPMC_ITERATORRANGE_H
+#define ATLASHEPMC_ITERATORRANGE_H
+#include "HepMC/IteratorRange.h"
+#endif
diff --git a/Generators/AtlasHepMC/CMakeLists.txt b/Generators/AtlasHepMC/CMakeLists.txt
index a269ede5797684346f20a06e8a4a88b6d913c535..a4e5b03554e4748b74d7a671fc3225cde3dad3ed 100644
--- a/Generators/AtlasHepMC/CMakeLists.txt
+++ b/Generators/AtlasHepMC/CMakeLists.txt
@@ -11,11 +11,11 @@ atlas_add_library( AtlasHepMCLib
    INTERFACE
    PUBLIC_HEADERS AtlasHepMC
    INCLUDE_DIRS ${HEPMC_INCLUDE_DIRS}
-   LINK_LIBRARIES ${HepMC_HepMC_LIBRARY} )
+   LINK_LIBRARIES ${_HEPMC_HepMC_library} )
 
 atlas_add_library( AtlasHepMCfioLib
    AtlasHepMC/*.h
    INTERFACE
    PUBLIC_HEADERS AtlasHepMC
    INCLUDE_DIRS ${HEPMC_INCLUDE_DIRS}
-   LINK_LIBRARIES ${HepMC_HepMCfio_LIBRARY} )
+   LINK_LIBRARIES ${_HEPMC_HepMCfio_library} )
diff --git a/Generators/Epos_i/CMakeLists.txt b/Generators/Epos_i/CMakeLists.txt
index bb317817567b6c2d099cef7a98d98072def5e7f4..922105d3edaae19fe12c71721d31c12b0c4f325f 100644
--- a/Generators/Epos_i/CMakeLists.txt
+++ b/Generators/Epos_i/CMakeLists.txt
@@ -8,6 +8,7 @@ atlas_subdir( Epos_i )
 # Declare the package's dependencies:
 atlas_depends_on_subdirs( PUBLIC
                           Generators/GeneratorModules
+                          Generators/AtlasHepMC
                           PRIVATE
                           Control/AthenaKernel
                           GaudiKernel
@@ -16,7 +17,6 @@ atlas_depends_on_subdirs( PUBLIC
 # External dependencies:
 find_package( CLHEP )
 find_package( Crmc COMPONENTS Epos )
-find_package( HepMC COMPONENTS HepMC HepMCfio )
 
 # Remove the --as-needed linker flags:
 atlas_disable_as_needed()
@@ -29,15 +29,15 @@ atlas_add_library( Epos_iLib
                    src/Rangen.F
                    PUBLIC_HEADERS Epos_i
                    INCLUDE_DIRS ${CRMC_INCLUDE_DIRS}
-                   PRIVATE_INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS}
+                   PRIVATE_INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS}
                    PRIVATE_DEFINITIONS ${CLHEP_DEFINITIONS}
                    LINK_LIBRARIES ${CRMC_LIBRARIES} GeneratorModulesLib
-                   PRIVATE_LINK_LIBRARIES ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} AthenaKernel GaudiKernel TruthUtils )
+                   PRIVATE_LINK_LIBRARIES ${CLHEP_LIBRARIES} AtlasHepMCLib AtlasHepMCfioLib AthenaKernel GaudiKernel TruthUtils )
 
 atlas_add_component( Epos_i
                      src/components/*.cxx
-                     INCLUDE_DIRS ${CRMC_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS}
-                     LINK_LIBRARIES ${CRMC_LIBRARIES} ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} GeneratorModulesLib AthenaKernel GaudiKernel TruthUtils Epos_iLib )
+                     INCLUDE_DIRS ${CRMC_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} 
+                     LINK_LIBRARIES ${CRMC_LIBRARIES} ${CLHEP_LIBRARIES} AtlasHepMCLib AtlasHepMCfioLib GeneratorModulesLib AthenaKernel GaudiKernel TruthUtils Epos_iLib )
 
 # Install files from the package:
 atlas_install_joboptions( share/*.py )
diff --git a/Generators/Epos_i/src/Epos.cxx b/Generators/Epos_i/src/Epos.cxx
index 383829dabe73698c1dca048518962deda8d5f845..c1a635e247b58e0e2c694105d7d124a7d52573dc 100644
--- a/Generators/Epos_i/src/Epos.cxx
+++ b/Generators/Epos_i/src/Epos.cxx
@@ -19,8 +19,8 @@
 #include "CLHEP/Random/RandFlat.h"
 #include "AthenaKernel/IAtRndmGenSvc.h"
 
-#include "HepMC/HEPEVT_Wrapper.h"
-#include "HepMC/IO_HEPEVT.h"
+#include "AtlasHepMC/HEPEVT_Wrapper.h"
+#include "AtlasHepMC/IO_HEPEVT.h"
 
 
 #include "Epos_i/Epos.h"
diff --git a/Generators/GenAnalysisTools/TruthHelper/CMakeLists.txt b/Generators/GenAnalysisTools/TruthHelper/CMakeLists.txt
index 8edd6ffd07639d0705e61dec9319bca43fbe6d67..572d21a40444c209d20d27d6d7fbb115ce79567a 100644
--- a/Generators/GenAnalysisTools/TruthHelper/CMakeLists.txt
+++ b/Generators/GenAnalysisTools/TruthHelper/CMakeLists.txt
@@ -23,7 +23,6 @@ find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread )
 atlas_add_library( TruthHelper
                    src/*.cxx
                    PUBLIC_HEADERS TruthHelper
-                   INCLUDE_DIRS ${HEPMC_INCLUDE_DIRS}
                    PRIVATE_INCLUDE_DIRS ${HEPPDT_INCLUDE_DIRS} ${ROOT_INCLUDE_DIRS}
                    LINK_LIBRARIES AtlasHepMCLib GaudiKernel GeneratorObjects StoreGateLib SGtests
                    PRIVATE_LINK_LIBRARIES ${HEPPDT_LIBRARIES} ${ROOT_LIBRARIES} AthenaKernel TruthUtils )
diff --git a/Generators/GenInterfaces/CMakeLists.txt b/Generators/GenInterfaces/CMakeLists.txt
index ea23276ef7014851a09d54c889b4db38de853e73..793dd383df472648e1057b1ef7cc4ae59a3f7f49 100644
--- a/Generators/GenInterfaces/CMakeLists.txt
+++ b/Generators/GenInterfaces/CMakeLists.txt
@@ -14,11 +14,10 @@ atlas_add_library( GenInterfacesLib
    GenInterfaces/*.h
    INTERFACE
    PUBLIC_HEADERS GenInterfaces
-   LINK_LIBRARIES ${HEPMC_LIBRARIES} GaudiKernel )
+   LINK_LIBRARIES AtlasHepMCLib GaudiKernel )
 
 atlas_add_dictionary( GenInterfacesDict
    GenInterfaces/GenInterfacesDict.h
    GenInterfaces/selection.xml
-   INCLUDE_DIRS ${HEPMC_INCLUDE_DIRS}
-   LINK_LIBRARIES ${HEPMC_LIBRARIES} GenInterfacesLib )
+   LINK_LIBRARIES AtlasHepMCLib GenInterfacesLib )
 
diff --git a/Generators/GenInterfaces/GenInterfaces/IHforTool.h b/Generators/GenInterfaces/GenInterfaces/IHforTool.h
index 68ec146628bf84267e3d7adbb4dc2d38b2134f61..1e8824aa766fc66196b11c52a805447f2179708f 100644
--- a/Generators/GenInterfaces/GenInterfaces/IHforTool.h
+++ b/Generators/GenInterfaces/GenInterfaces/IHforTool.h
@@ -8,8 +8,7 @@
 #include "GaudiKernel/IAlgTool.h"
 #include <vector>
 
-// Forward declaration
-namespace HepMC {class FourVector ;}
+#include "AtlasHepMC/SimpleVector.h"
 
 static const InterfaceID IID_IHforTool("IHforTool", 1, 0);
 
diff --git a/Generators/GeneratorObjects/CMakeLists.txt b/Generators/GeneratorObjects/CMakeLists.txt
index 0f9baed500474648f98fc8816e6e3f4bb50b7469..af7edc9db03691a1c7450e2b1b89ad85c0eb9b08 100644
--- a/Generators/GeneratorObjects/CMakeLists.txt
+++ b/Generators/GeneratorObjects/CMakeLists.txt
@@ -13,6 +13,7 @@ atlas_depends_on_subdirs( PUBLIC
                           Control/AthenaKernel
                           Event/xAOD/xAODTruth
                           GaudiKernel
+                          Generators/AtlasHepMC
                           PRIVATE
                           AtlasTest/TestTools
                           Control/CxxUtils
@@ -21,7 +22,6 @@ atlas_depends_on_subdirs( PUBLIC
 
 # External dependencies:
 find_package( CLHEP )
-find_package( HepMC )
 find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread )
 find_package( GTest )
 
@@ -31,17 +31,16 @@ atlas_add_library( GeneratorObjects
                    src/McEventCollection.cxx
                    src/HijingEventParams.cxx
                    PUBLIC_HEADERS GeneratorObjects
-                   INCLUDE_DIRS ${HEPMC_INCLUDE_DIRS}
                    PRIVATE_INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS}
                    PRIVATE_DEFINITIONS ${CLHEP_DEFINITIONS}
-                   LINK_LIBRARIES ${HEPMC_LIBRARIES} AthContainers AthLinks SGTools xAODTruth GaudiKernel RootUtilsPyROOT StoreGateLib SGtests
+                   LINK_LIBRARIES  AtlasHepMCLib AthContainers AthLinks SGTools xAODTruth GaudiKernel RootUtilsPyROOT StoreGateLib SGtests
                    PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} TestTools AthenaKernel RootUtils )
 
 atlas_add_dictionary( GeneratorObjectsDict
                       GeneratorObjects/McEventDict.h
                       GeneratorObjects/selection.xml
-                      INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS}
-                      LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} AthContainers AthLinks SGTools xAODTruth GaudiKernel TestTools AthenaKernel RootUtils RootUtilsPyROOT StoreGateLib SGtests GeneratorObjects )
+                      INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} 
+                      LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES}  AtlasHepMCLib AthContainers AthLinks SGTools xAODTruth GaudiKernel TestTools AthenaKernel RootUtils RootUtilsPyROOT StoreGateLib SGtests GeneratorObjects )
 
 # Install a dummy rootmap file to suppress loading the rootmap from hepmc3,
 # which defines dictionary entries for HepMC types that clash with
@@ -53,11 +52,11 @@ atlas_install_generic ( share/libHepMC3rootIO.rootmap
 
 atlas_add_test( HepMcParticleLink_test
                 SOURCES test/HepMcParticleLink_test.cxx
-                INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS} ${GTEST_INCLUDE_DIRS}
-                LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} AthContainers CxxUtils AthLinks SGTools xAODTruth GaudiKernel TestTools AthenaKernel RootUtils RootUtilsPyROOT StoreGateLib SGtests GeneratorObjects ${GTEST_LIBRARIES} )
+                INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS}  ${GTEST_INCLUDE_DIRS}
+                LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} AtlasHepMCLib AthContainers CxxUtils AthLinks SGTools xAODTruth GaudiKernel TestTools AthenaKernel RootUtils RootUtilsPyROOT StoreGateLib SGtests GeneratorObjects ${GTEST_LIBRARIES} )
 
 
 atlas_add_test( CachedParticlePtr_test
                 SOURCES test/CachedParticlePtr_test.cxx
-                LINK_LIBRARIES GeneratorObjects )
+                LINK_LIBRARIES GeneratorObjects AtlasHepMCLib)
 
diff --git a/Generators/GeneratorObjects/GeneratorObjects/CachedParticlePtr.h b/Generators/GeneratorObjects/GeneratorObjects/CachedParticlePtr.h
index 06e5390eb327f88a88bee8f6ce8db7c581cb7ae4..6b34ff3706d62ff0b6f53c60f9d32de412ee635e 100644
--- a/Generators/GeneratorObjects/GeneratorObjects/CachedParticlePtr.h
+++ b/Generators/GeneratorObjects/GeneratorObjects/CachedParticlePtr.h
@@ -17,11 +17,9 @@
 #include "SGTools/CurrentEventStore.h"
 #include <atomic>
 #include <cassert>
+#include "AtlasHepMC/GenParticle.h"
 
 
-namespace HepMC {
-  class GenParticle;
-}
 class IProxyDict;
 
 
diff --git a/Generators/GeneratorObjects/GeneratorObjects/HepMcParticleLink.h b/Generators/GeneratorObjects/GeneratorObjects/HepMcParticleLink.h
index 03f23289188bee38398a44b22acf1447ec426b18..f62074daf4d80f8dfa217446d03e6aff271fed11 100644
--- a/Generators/GeneratorObjects/GeneratorObjects/HepMcParticleLink.h
+++ b/Generators/GeneratorObjects/GeneratorObjects/HepMcParticleLink.h
@@ -23,10 +23,9 @@
 #include <limits>  /* numeric_limits */
 #include <string>
 
-namespace HepMC {
-  class GenParticle;
-  class GenEvent;
-}
+#include "AtlasHepMC/GenEvent_fwd.h"
+#include "AtlasHepMC/GenParticle_fwd.h"
+
 class IProxyDict;
 class McEventCollection;
 
diff --git a/Generators/GeneratorObjects/GeneratorObjects/McEventCollection.h b/Generators/GeneratorObjects/GeneratorObjects/McEventCollection.h
index 9feff45822d30de249bdc3448406f417cde7d4a9..bc193502de52e244820032c07b0588c7552e12f9 100644
--- a/Generators/GeneratorObjects/GeneratorObjects/McEventCollection.h
+++ b/Generators/GeneratorObjects/GeneratorObjects/McEventCollection.h
@@ -6,14 +6,12 @@
 #define GENERATOROBJECTSMCEVENTCOLLECTION_H 1
 
 
-
-// #include "GeneratorObjects/McEvent.h"
 #include "AthContainers/DataVector.h"
 #include "AthenaKernel/CLASS_DEF.h"
-#include "HepMC/GenEvent.h"
-#include "HepMC/GenParticle.h"
-#include "HepMC/GenVertex.h"
-#include "HepMC/GenRanges.h"
+#include "AtlasHepMC/GenEvent.h"
+#include "AtlasHepMC/GenParticle.h"
+#include "AtlasHepMC/GenVertex.h"
+#include "AtlasHepMC/GenRanges.h"
 
 #include <iostream>
 /**
diff --git a/Generators/GeneratorObjects/src/HepMcParticleLink.cxx b/Generators/GeneratorObjects/src/HepMcParticleLink.cxx
index f88d72553417dc7d3a981326aa2fb78b3d36c359..21fd8cdd80b58614b762fba6bedd527f6a69f8d2 100644
--- a/Generators/GeneratorObjects/src/HepMcParticleLink.cxx
+++ b/Generators/GeneratorObjects/src/HepMcParticleLink.cxx
@@ -10,8 +10,8 @@
 #include "GeneratorObjects/HepMcParticleLink.h"
 #include "GeneratorObjects/McEventCollection.h"
 #include "StoreGate/StoreGate.h"
-#include "HepMC/GenParticle.h"
-#include "HepMC/GenEvent.h"
+#include "AtlasHepMC/GenParticle.h"
+#include "AtlasHepMC/GenEvent.h"
 #include "AthenaKernel/getMessageSvc.h"
 #include "GaudiKernel/MsgStream.h"
 #include "SGTools/CurrentEventStore.h"
diff --git a/Generators/GeneratorObjects/test/CachedParticlePtr_test.cxx b/Generators/GeneratorObjects/test/CachedParticlePtr_test.cxx
index 360a5e368554f224d935568c16a78f76dcd73eda..7a930f29d4ac3d599a6e7b34951fb5322d41bbc7 100644
--- a/Generators/GeneratorObjects/test/CachedParticlePtr_test.cxx
+++ b/Generators/GeneratorObjects/test/CachedParticlePtr_test.cxx
@@ -11,7 +11,7 @@
 
 #undef NDEBUG
 #include "GeneratorObjects/CachedParticlePtr.h"
-#include "HepMC/GenParticle.h"
+#include "AtlasHepMC/GenParticle.h"
 #include "SGTools/TestStore.h"
 #include "SGTools/CurrentEventStore.h"
 #include <thread>
diff --git a/Generators/GeneratorObjects/test/HepMcParticleLink_test.cxx b/Generators/GeneratorObjects/test/HepMcParticleLink_test.cxx
index 305f6767b10c5de8836e9673217efaae8cb6fc9b..f4b6714a07164791ee9b0223e692e0954311b829 100644
--- a/Generators/GeneratorObjects/test/HepMcParticleLink_test.cxx
+++ b/Generators/GeneratorObjects/test/HepMcParticleLink_test.cxx
@@ -18,7 +18,7 @@
 #include "gtest/gtest.h"
 
 // HepMC includes
-#include "HepMC/GenEvent.h"
+#include "AtlasHepMC/GenEvent.h"
 
 // CLHEP includes
 #include "CLHEP/Vector/LorentzVector.h"
diff --git a/Generators/GeneratorObjectsTPCnv/CMakeLists.txt b/Generators/GeneratorObjectsTPCnv/CMakeLists.txt
index ba5903714e358e0e4e5e7039802a485b054986bc..c3c5b0b14a76ba2a66ed093c8293e616ebcfba5e 100644
--- a/Generators/GeneratorObjectsTPCnv/CMakeLists.txt
+++ b/Generators/GeneratorObjectsTPCnv/CMakeLists.txt
@@ -14,6 +14,7 @@ atlas_depends_on_subdirs( PUBLIC
                           AtlasTest/TestTools
                           Control/AthAllocators
                           Control/AthenaKernel
+                          Generators/AtlasHepMC
                           Generators/GenInterfaces )
 
 # External dependencies:
@@ -25,42 +26,41 @@ find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread )
 atlas_add_tpcnv_library( GeneratorObjectsTPCnv
                          src/*.cxx
                          PUBLIC_HEADERS GeneratorObjectsTPCnv
-                         INCLUDE_DIRS ${HEPMC_INCLUDE_DIRS}
                          PRIVATE_INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS}
-                         LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} AthenaPoolCnvSvcLib GaudiKernel GeneratorObjects AthAllocators AthenaKernel TestTools )
+                         LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} AtlasHepMCLib AthenaPoolCnvSvcLib GaudiKernel GeneratorObjects AthAllocators AthenaKernel TestTools )
 
 atlas_add_dictionary( GeneratorObjectsTPCnvDict
                       GeneratorObjectsTPCnv/GeneratorObjectsTPCnvDict.h
                       GeneratorObjectsTPCnv/selection.xml
-                      INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS}
-                      LINK_LIBRARIES ${ROOT_LIBRARIES} ${HEPMC_LIBRARIES} AthenaPoolCnvSvcLib GaudiKernel GeneratorObjects AthAllocators AthenaKernel GeneratorObjectsTPCnv TestTools )
+                      INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} 
+                      LINK_LIBRARIES ${ROOT_LIBRARIES} AtlasHepMCLib AthenaPoolCnvSvcLib GaudiKernel GeneratorObjects AthAllocators AthenaKernel GeneratorObjectsTPCnv TestTools )
 
 atlas_add_dictionary( OLD_GeneratorObjectsTPCnvDict
                       GeneratorObjectsTPCnv/GeneratorObjectsTPCnvDict.h
                       GeneratorObjectsTPCnv/OLD_selection.xml
-                      INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS}
-                      LINK_LIBRARIES ${ROOT_LIBRARIES} ${HEPMC_LIBRARIES} AthenaPoolCnvSvcLib GaudiKernel GeneratorObjects AthAllocators AthenaKernel GeneratorObjectsTPCnv TestTools )
+                      INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} 
+                      LINK_LIBRARIES ${ROOT_LIBRARIES} AtlasHepMCLib AthenaPoolCnvSvcLib GaudiKernel GeneratorObjects AthAllocators AthenaKernel GeneratorObjectsTPCnv TestTools )
 
 atlas_add_test( McEventCollectionCnv_p4_test
                 SOURCES
                 test/McEventCollectionCnv_p4_test.cxx
-                INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS}
-                LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} AthenaPoolCnvSvcLib GaudiKernel GeneratorObjects TestTools StoreGateLib SGtests GeneratorObjectsTPCnv )
+                INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} 
+                LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} AtlasHepMCLib AthenaPoolCnvSvcLib GaudiKernel GeneratorObjects TestTools StoreGateLib SGtests GeneratorObjectsTPCnv )
 
 atlas_add_test( McEventCollectionCnv_p5_test
                 SOURCES
                 test/McEventCollectionCnv_p5_test.cxx
-                INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS}
-                LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} AthenaPoolCnvSvcLib GaudiKernel GeneratorObjects TestTools StoreGateLib SGtests GeneratorObjectsTPCnv )
+                INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} 
+                LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} AtlasHepMCLib AthenaPoolCnvSvcLib GaudiKernel GeneratorObjects TestTools StoreGateLib SGtests GeneratorObjectsTPCnv )
 
 atlas_add_test( HepMcParticleLinkCnv_p1_test
                 SOURCES
                 test/HepMcParticleLinkCnv_p1_test.cxx
-                INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS}
-                LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} AthenaPoolCnvSvcLib GaudiKernel GeneratorObjects TestTools StoreGateLib SGtests GeneratorObjectsTPCnv )
+                INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} 
+                LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} AtlasHepMCLib AthenaPoolCnvSvcLib GaudiKernel GeneratorObjects TestTools StoreGateLib SGtests GeneratorObjectsTPCnv )
 
 atlas_add_test( HepMcParticleLinkCnv_p2_test
                 SOURCES
                 test/HepMcParticleLinkCnv_p2_test.cxx
-                INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS}
-                LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} AthenaPoolCnvSvcLib GaudiKernel GeneratorObjects TestTools StoreGateLib SGtests GeneratorObjectsTPCnv )
+                INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} 
+                LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} AtlasHepMCLib AthenaPoolCnvSvcLib GaudiKernel GeneratorObjects TestTools StoreGateLib SGtests GeneratorObjectsTPCnv )
diff --git a/Generators/GeneratorObjectsTPCnv/GeneratorObjectsTPCnv/GenEventCnv_p1.h b/Generators/GeneratorObjectsTPCnv/GeneratorObjectsTPCnv/GenEventCnv_p1.h
index 84ae7420bf5b36b4b185bc6e2e0f8f672f4af2fd..533727ce1cd94a8ee5bbd8aa96f5714841f2b2af 100755
--- a/Generators/GeneratorObjectsTPCnv/GeneratorObjectsTPCnv/GenEventCnv_p1.h
+++ b/Generators/GeneratorObjectsTPCnv/GeneratorObjectsTPCnv/GenEventCnv_p1.h
@@ -24,9 +24,9 @@
 #endif
 #define private public
 #define protected public
-#include "HepMC/GenEvent.h"
-#include "HepMC/GenVertex.h"
-#include "HepMC/GenParticle.h"
+#include "AtlasHepMC/GenEvent.h"
+#include "AtlasHepMC/GenVertex.h"
+#include "AtlasHepMC/GenParticle.h"
 #undef private
 #undef protected
 #ifdef __clang__
diff --git a/Generators/GeneratorObjectsTPCnv/GeneratorObjectsTPCnv/McEventCollectionCnv_p1.h b/Generators/GeneratorObjectsTPCnv/GeneratorObjectsTPCnv/McEventCollectionCnv_p1.h
index 87e5aa412ad38798b3158a170e62e6f8ae43c9f2..473957d7818cd3d7653fec2bfa3c9b99441202c9 100755
--- a/Generators/GeneratorObjectsTPCnv/GeneratorObjectsTPCnv/McEventCollectionCnv_p1.h
+++ b/Generators/GeneratorObjectsTPCnv/GeneratorObjectsTPCnv/McEventCollectionCnv_p1.h
@@ -20,9 +20,9 @@
 #endif
 #define private public
 #define protected public
-#include "HepMC/GenEvent.h"
-#include "HepMC/GenVertex.h"
-#include "HepMC/GenParticle.h"
+#include "AtlasHepMC/GenEvent.h"
+#include "AtlasHepMC/GenVertex.h"
+#include "AtlasHepMC/GenParticle.h"
 #ifdef __clang__
 #pragma clang diagnostic pop
 #endif
diff --git a/Generators/GeneratorObjectsTPCnv/GeneratorObjectsTPCnv/McEventCollectionCnv_p2.h b/Generators/GeneratorObjectsTPCnv/GeneratorObjectsTPCnv/McEventCollectionCnv_p2.h
index 6cdcd5b5bc441b03c0d920b31c7b96179cc703c8..5ef4935216c7cd344509557f3432f5aa4b140065 100755
--- a/Generators/GeneratorObjectsTPCnv/GeneratorObjectsTPCnv/McEventCollectionCnv_p2.h
+++ b/Generators/GeneratorObjectsTPCnv/GeneratorObjectsTPCnv/McEventCollectionCnv_p2.h
@@ -21,9 +21,9 @@
 #endif
 #define private public
 #define protected public
-#include "HepMC/GenEvent.h"
-#include "HepMC/GenVertex.h"
-#include "HepMC/GenParticle.h"
+#include "AtlasHepMC/GenEvent.h"
+#include "AtlasHepMC/GenVertex.h"
+#include "AtlasHepMC/GenParticle.h"
 #ifdef __clang__
 #pragma clang diagnostic pop
 #endif
diff --git a/Generators/GeneratorObjectsTPCnv/GeneratorObjectsTPCnv/McEventCollectionCnv_p3.h b/Generators/GeneratorObjectsTPCnv/GeneratorObjectsTPCnv/McEventCollectionCnv_p3.h
index de2c3adb5b0afd5b55ebdaea264666d3f2084593..d286f8a0a0215d17a78410cccc3e8b06f8b28db4 100755
--- a/Generators/GeneratorObjectsTPCnv/GeneratorObjectsTPCnv/McEventCollectionCnv_p3.h
+++ b/Generators/GeneratorObjectsTPCnv/GeneratorObjectsTPCnv/McEventCollectionCnv_p3.h
@@ -21,9 +21,9 @@
 #endif
 #define private public
 #define protected public
-#include "HepMC/GenEvent.h"
-#include "HepMC/GenVertex.h"
-#include "HepMC/GenParticle.h"
+#include "AtlasHepMC/GenEvent.h"
+#include "AtlasHepMC/GenVertex.h"
+#include "AtlasHepMC/GenParticle.h"
 #undef private
 #undef protected
 #ifdef __clang__
diff --git a/Generators/GeneratorObjectsTPCnv/GeneratorObjectsTPCnv/McEventCollectionCnv_p4.h b/Generators/GeneratorObjectsTPCnv/GeneratorObjectsTPCnv/McEventCollectionCnv_p4.h
index 1de4eb6223817a22a4de19b3ca14301adddcb987..c8f96383057b33d1d3c17d29755e140c3115bf76 100755
--- a/Generators/GeneratorObjectsTPCnv/GeneratorObjectsTPCnv/McEventCollectionCnv_p4.h
+++ b/Generators/GeneratorObjectsTPCnv/GeneratorObjectsTPCnv/McEventCollectionCnv_p4.h
@@ -21,9 +21,9 @@
 #endif
 #define private public
 #define protected public
-#include "HepMC/GenEvent.h"
-#include "HepMC/GenVertex.h"
-#include "HepMC/GenParticle.h"
+#include "AtlasHepMC/GenEvent.h"
+#include "AtlasHepMC/GenVertex.h"
+#include "AtlasHepMC/GenParticle.h"
 #undef private
 #undef protected
 #ifdef __clang__
diff --git a/Generators/GeneratorObjectsTPCnv/GeneratorObjectsTPCnv/McEventCollectionCnv_p5.h b/Generators/GeneratorObjectsTPCnv/GeneratorObjectsTPCnv/McEventCollectionCnv_p5.h
index f176d50a336be29f0e767954cc59293f9c8f953b..cad48a5b7c386902918cac61b53a86e1280a5258 100755
--- a/Generators/GeneratorObjectsTPCnv/GeneratorObjectsTPCnv/McEventCollectionCnv_p5.h
+++ b/Generators/GeneratorObjectsTPCnv/GeneratorObjectsTPCnv/McEventCollectionCnv_p5.h
@@ -21,9 +21,9 @@
 #endif
 #define private public
 #define protected public
-#include "HepMC/GenEvent.h"
-#include "HepMC/GenVertex.h"
-#include "HepMC/GenParticle.h"
+#include "AtlasHepMC/GenEvent.h"
+#include "AtlasHepMC/GenVertex.h"
+#include "AtlasHepMC/GenParticle.h"
 #undef private
 #undef protected
 #ifdef __clang__
diff --git a/Generators/GeneratorObjectsTPCnv/GeneratorObjectsTPCnv/initMcEventCollection.h b/Generators/GeneratorObjectsTPCnv/GeneratorObjectsTPCnv/initMcEventCollection.h
index 0a46ab4f962abefbb68f5fdf281665dd061127d5..f74c78bbe9a6f33bd700d298377f3acb734130d5 100644
--- a/Generators/GeneratorObjectsTPCnv/GeneratorObjectsTPCnv/initMcEventCollection.h
+++ b/Generators/GeneratorObjectsTPCnv/GeneratorObjectsTPCnv/initMcEventCollection.h
@@ -11,14 +11,12 @@
 
 #include <string>
 #include <vector>
-#include "HepMC/GenParticle.h"
+#include "AtlasHepMC/GenParticle.h"
 
 #undef NDEBUG
 
 class ISvcLocator;
-namespace HepMC {
-  class GenEvent;
-}
+#include "AtlasHepMC/GenEvent_fwd.h"
 
 namespace Athena_test {
   /** @fn bool initGaudi(ISvcLocator*& pSvcLoc, HepMC::GenParticle*& pGenParticle)
diff --git a/Generators/GeneratorObjectsTPCnv/src/HepMcDataPool.h b/Generators/GeneratorObjectsTPCnv/src/HepMcDataPool.h
index 0e4fd635a27b29f074a40641d378e518d727e3bb..be051d1fbb405777b6c5251a460626ac291e441e 100755
--- a/Generators/GeneratorObjectsTPCnv/src/HepMcDataPool.h
+++ b/Generators/GeneratorObjectsTPCnv/src/HepMcDataPool.h
@@ -18,9 +18,9 @@
 #endif
 #define private public
 #define protected public
-#include "HepMC/GenEvent.h"
-#include "HepMC/GenVertex.h"
-#include "HepMC/GenParticle.h"
+#include "AtlasHepMC/GenEvent.h"
+#include "AtlasHepMC/GenVertex.h"
+#include "AtlasHepMC/GenParticle.h"
 #ifdef __clang__
 #pragma clang diagnostic pop
 #endif
diff --git a/Generators/GeneratorObjectsTPCnv/src/initMcEventCollection.cxx b/Generators/GeneratorObjectsTPCnv/src/initMcEventCollection.cxx
index 50bbb46a4483132ad09f83b26bf9e29f235a669e..4714e3d384374dc98b338b4cf4ada1e3ecf3c648 100644
--- a/Generators/GeneratorObjectsTPCnv/src/initMcEventCollection.cxx
+++ b/Generators/GeneratorObjectsTPCnv/src/initMcEventCollection.cxx
@@ -4,9 +4,9 @@
 #include "GeneratorObjectsTPCnv/initMcEventCollection.h"
 
 // HepMC includes
-#include "HepMC/GenEvent.h"
-#include "HepMC/GenParticle.h"
-#include "HepMC/GenVertex.h"
+#include "AtlasHepMC/GenEvent.h"
+#include "AtlasHepMC/GenParticle.h"
+#include "AtlasHepMC/GenVertex.h"
 
 // CLHEP includes
 #include "CLHEP/Vector/LorentzVector.h"
diff --git a/Generators/GeneratorObjectsTPCnv/test/HepMcParticleLinkCnv_p1_test.cxx b/Generators/GeneratorObjectsTPCnv/test/HepMcParticleLinkCnv_p1_test.cxx
index 0e4af50864d09307360e47bee12a62117bf0e2b4..23fcbdabe1b8ad0b682a70a63416e2b09d9e5dd2 100644
--- a/Generators/GeneratorObjectsTPCnv/test/HepMcParticleLinkCnv_p1_test.cxx
+++ b/Generators/GeneratorObjectsTPCnv/test/HepMcParticleLinkCnv_p1_test.cxx
@@ -13,7 +13,7 @@
 #include <cassert>
 #include <iostream>
 // HepMC includes
-#include "HepMC/GenEvent.h"
+#include "AtlasHepMC/GenEvent.h"
 
 // CLHEP includes
 #include "CLHEP/Vector/LorentzVector.h"
diff --git a/Generators/GeneratorObjectsTPCnv/test/HepMcParticleLinkCnv_p2_test.cxx b/Generators/GeneratorObjectsTPCnv/test/HepMcParticleLinkCnv_p2_test.cxx
index 5284dfa1a0c6b9cac1184ddc85f1b5cb238605e0..ce94ce084fbf814fb323738caa4272c66dead66d 100644
--- a/Generators/GeneratorObjectsTPCnv/test/HepMcParticleLinkCnv_p2_test.cxx
+++ b/Generators/GeneratorObjectsTPCnv/test/HepMcParticleLinkCnv_p2_test.cxx
@@ -8,7 +8,7 @@
 #include <cassert>
 #include <iostream>
 // HepMC includes
-#include "HepMC/GenEvent.h"
+#include "AtlasHepMC/GenEvent.h"
 
 // CLHEP includes
 #include "CLHEP/Vector/LorentzVector.h"
diff --git a/Generators/GeneratorObjectsTPCnv/test/McEventCollectionCnv_p4_test.cxx b/Generators/GeneratorObjectsTPCnv/test/McEventCollectionCnv_p4_test.cxx
index 792e0629fd3190d9c33bc907f1eff15701d06897..52d941263c79519fbb419cf8adc39c9c1784ea64 100644
--- a/Generators/GeneratorObjectsTPCnv/test/McEventCollectionCnv_p4_test.cxx
+++ b/Generators/GeneratorObjectsTPCnv/test/McEventCollectionCnv_p4_test.cxx
@@ -13,7 +13,7 @@
 #include <cassert>
 #include <iostream>
 // HepMC includes
-#include "HepMC/GenEvent.h"
+#include "AtlasHepMC/GenEvent.h"
 
 // CLHEP includes
 #include "CLHEP/Vector/LorentzVector.h"
diff --git a/Generators/GeneratorObjectsTPCnv/test/McEventCollectionCnv_p5_test.cxx b/Generators/GeneratorObjectsTPCnv/test/McEventCollectionCnv_p5_test.cxx
index 831571ff7242e8ac271911bf3ba64f9c216cc4ca..b9e78aa81a55b75a18e34a09e158c8b2b455a9d0 100644
--- a/Generators/GeneratorObjectsTPCnv/test/McEventCollectionCnv_p5_test.cxx
+++ b/Generators/GeneratorObjectsTPCnv/test/McEventCollectionCnv_p5_test.cxx
@@ -13,7 +13,7 @@
 #include <cassert>
 #include <iostream>
 // HepMC includes
-#include "HepMC/GenEvent.h"
+#include "AtlasHepMC/GenEvent.h"
 
 // CLHEP includes
 #include "CLHEP/Vector/LorentzVector.h"
diff --git a/Generators/GenzModuleEvent/CMakeLists.txt b/Generators/GenzModuleEvent/CMakeLists.txt
index 3ca3bd07589fd55a3b53087e9c9577577e457258..c8063a30fdccd63cbe4687201a66d499aaf66e65 100644
--- a/Generators/GenzModuleEvent/CMakeLists.txt
+++ b/Generators/GenzModuleEvent/CMakeLists.txt
@@ -5,13 +5,14 @@
 # Declare the package name:
 atlas_subdir( GenzModuleEvent )
 
-# External dependencies:
-find_package( HepMC )
+# The dependencies of the package:
+atlas_depends_on_subdirs(
+   PUBLIC
+   Generators/AtlasHepMC)
 
 # Component(s) in the package:
 atlas_add_library( GenzModuleEvent
                    src/*.cxx
                    PUBLIC_HEADERS GenzModuleEvent
-                   INCLUDE_DIRS ${HEPMC_INCLUDE_DIRS}
-                   LINK_LIBRARIES ${HEPMC_LIBRARIES} )
+                   LINK_LIBRARIES AtlasHepMCLib )
 
diff --git a/Generators/GenzModuleEvent/GenzModuleEvent/KineHepMcmap.h b/Generators/GenzModuleEvent/GenzModuleEvent/KineHepMcmap.h
index 5ce4da78d407f52af88efccae989fab63cbb17ba..8b76dbb6cfb3e17ca87a0394a382bc367c73c8d0 100644
--- a/Generators/GenzModuleEvent/GenzModuleEvent/KineHepMcmap.h
+++ b/Generators/GenzModuleEvent/GenzModuleEvent/KineHepMcmap.h
@@ -5,8 +5,8 @@
 #ifndef KINEHEPMCMAP_H
 #define KINEHEPMCMAP_H
 
-#include "HepMC/GenEvent.h"
-#include "HepMC/GenParticle.h"
+#include "AtlasHepMC/GenEvent.h"
+#include "AtlasHepMC/GenParticle.h"
 
 class KineHepMcmap
 {
diff --git a/Generators/HepMCAnalysis_i/HepMCAnalysis_i/LeptonJetAnalysis.h b/Generators/HepMCAnalysis_i/HepMCAnalysis_i/LeptonJetAnalysis.h
index b138f1349c54013096b3dce6be9444ded7e6a83e..6c1f44dffacc25e1beeb46f8afbe9b1373bbc6d0 100644
--- a/Generators/HepMCAnalysis_i/HepMCAnalysis_i/LeptonJetAnalysis.h
+++ b/Generators/HepMCAnalysis_i/HepMCAnalysis_i/LeptonJetAnalysis.h
@@ -8,9 +8,7 @@
 #include "baseAnalysis.h"
 
 // forward declarations
-namespace HepMC {
-  class GenEvent;
-}
+#include "AtlasHepMC/GenEvent_fwd.h"
 class TH1D;
 
 class LeptonJetAnalysis: public baseAnalysis
diff --git a/Generators/HepMCAnalysis_i/HepMCAnalysis_i/ParticleContentAnalysis.h b/Generators/HepMCAnalysis_i/HepMCAnalysis_i/ParticleContentAnalysis.h
index fa5490f7c6de38c253edb5a82bf72e5d9fee4853..45cfd6ce142dd8fa01990f53c9eb7e09c44090d9 100644
--- a/Generators/HepMCAnalysis_i/HepMCAnalysis_i/ParticleContentAnalysis.h
+++ b/Generators/HepMCAnalysis_i/HepMCAnalysis_i/ParticleContentAnalysis.h
@@ -8,10 +8,9 @@
 #include "baseAnalysis.h"
 
 // forward declarations
-namespace HepMC {
-  class GenEvent;
-  class GenParticle;
-}
+// forward declarations
+#include "AtlasHepMC/GenEvent_fwd.h"
+#include "AtlasHepMC/GenParticle_fwd.h"
 
 class TH1D;
 
diff --git a/Generators/HepMCAnalysis_i/HepMCAnalysis_i/PdfAnalysis.h b/Generators/HepMCAnalysis_i/HepMCAnalysis_i/PdfAnalysis.h
index ff245a2961fc43d7abd65d0c78469b1c1df0ba91..2cecf588b5a6f99210325a08397830465bc1186a 100644
--- a/Generators/HepMCAnalysis_i/HepMCAnalysis_i/PdfAnalysis.h
+++ b/Generators/HepMCAnalysis_i/HepMCAnalysis_i/PdfAnalysis.h
@@ -8,9 +8,9 @@
 #include "baseAnalysis.h"
 
 // forward declarations
-namespace HepMC {
-  class GenEvent;
-}
+#include "AtlasHepMC/GenEvent_fwd.h"
+#include "AtlasHepMC/PdfInfo.h"
+
 class TH1D;
 
 class PdfAnalysis: public baseAnalysis
diff --git a/Generators/HepMCAnalysis_i/HepMCAnalysis_i/UserAnalysis.h b/Generators/HepMCAnalysis_i/HepMCAnalysis_i/UserAnalysis.h
index 6baf9b56349a9673a906ddbec6d66de94a2d1f77..a81836c552559fac4febb8826c0019a890ddbcc2 100644
--- a/Generators/HepMCAnalysis_i/HepMCAnalysis_i/UserAnalysis.h
+++ b/Generators/HepMCAnalysis_i/HepMCAnalysis_i/UserAnalysis.h
@@ -8,9 +8,7 @@
 #include "baseAnalysis.h"
 
 // forward declarations
-namespace HepMC {
-  class GenEvent;
-}
+#include "AtlasHepMC/GenEvent_fwd.h"
 class TH1D;
 
 class UserAnalysis: public baseAnalysis
diff --git a/Generators/QGSJet_i/CMakeLists.txt b/Generators/QGSJet_i/CMakeLists.txt
index 5c4bbd5e2f08214617db26319eb75619c37552b5..74608c333b627804482178a3c23850870337063d 100644
--- a/Generators/QGSJet_i/CMakeLists.txt
+++ b/Generators/QGSJet_i/CMakeLists.txt
@@ -16,7 +16,6 @@ atlas_depends_on_subdirs( PUBLIC
 # External dependencies:
 find_package( CLHEP )
 find_package( Crmc COMPONENTS QgsjetII04 )
-find_package( HepMC COMPONENTS HepMC HepMCfio )
 
 # Remove the --as-needed linker flags:
 atlas_disable_as_needed()
@@ -29,15 +28,15 @@ atlas_add_library( QGSJet_iLib
                    src/Rangen.F
                    PUBLIC_HEADERS QGSJet_i
                    INCLUDE_DIRS ${CRMC_INCLUDE_DIRS}
-                   PRIVATE_INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS}
+                   PRIVATE_INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} 
                    PRIVATE_DEFINITIONS ${CLHEP_DEFINITIONS}
                    LINK_LIBRARIES ${CRMC_LIBRARIES} GeneratorModulesLib
-                   PRIVATE_LINK_LIBRARIES ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} AthenaKernel GaudiKernel TruthUtils )
+                   PRIVATE_LINK_LIBRARIES ${CLHEP_LIBRARIES} AtlasHepMCLib AtlasHepMCfioLib AthenaKernel GaudiKernel TruthUtils )
 
 atlas_add_component( QGSJet_i
                      src/components/*.cxx
-                     INCLUDE_DIRS ${CRMC_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS}
-                     LINK_LIBRARIES ${CRMC_LIBRARIES} ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} GeneratorModulesLib AthenaKernel GaudiKernel TruthUtils QGSJet_iLib )
+                     INCLUDE_DIRS ${CRMC_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} 
+                     LINK_LIBRARIES ${CRMC_LIBRARIES} ${CLHEP_LIBRARIES} AtlasHepMCLib AtlasHepMCfioLib GeneratorModulesLib AthenaKernel GaudiKernel TruthUtils QGSJet_iLib )
 
 # Install files from the package:
 atlas_install_runtime( share/qgsjet_crmc.param )
diff --git a/Generators/QGSJet_i/src/QGSJet.cxx b/Generators/QGSJet_i/src/QGSJet.cxx
index c301f7285768172c3fc24016111c40f2b9774f7e..34786c4bde28a6c342f7181e1864d0c84d668aff 100644
--- a/Generators/QGSJet_i/src/QGSJet.cxx
+++ b/Generators/QGSJet_i/src/QGSJet.cxx
@@ -19,8 +19,8 @@
 #include "CLHEP/Random/RandFlat.h"
 #include "AthenaKernel/IAtRndmGenSvc.h"
 
-#include "HepMC/HEPEVT_Wrapper.h"
-#include "HepMC/IO_HEPEVT.h"
+#include "AtlasHepMC/HEPEVT_Wrapper.h"
+#include "AtlasHepMC/IO_HEPEVT.h"
 
 
 #include "QGSJet_i/QGSJet.h"
diff --git a/Generators/Sherpa_i/Sherpa_i/Sherpa_i.h b/Generators/Sherpa_i/Sherpa_i/Sherpa_i.h
index 395903d6ac27c45c79581c18ca9b5c0cca457b93..8e1c60deefbef6f19fd41386b9be9b82ff5010fb 100644
--- a/Generators/Sherpa_i/Sherpa_i/Sherpa_i.h
+++ b/Generators/Sherpa_i/Sherpa_i/Sherpa_i.h
@@ -9,14 +9,12 @@
 #include "GeneratorModules/GenModule.h"
 #include "TruthUtils/GeneratorName.h"
 
+#include "AtlasHepMC/GenEvent.h"
 
 namespace SHERPA {
   class Sherpa;
 }
 
-namespace HepMC {
-  class GenEvent;
-}
 
 class Sherpa_i : public GenModule {
 public:
diff --git a/Generators/TruthIO/CMakeLists.txt b/Generators/TruthIO/CMakeLists.txt
index ea13ffbe7047d34c3613311f44b61126366a2658..ffe7a4f709d50762fa944b5ff1c78879c39c3e06 100644
--- a/Generators/TruthIO/CMakeLists.txt
+++ b/Generators/TruthIO/CMakeLists.txt
@@ -16,7 +16,6 @@ atlas_depends_on_subdirs( PUBLIC
                           Generators/GeneratorObjects )
 
 # External dependencies:
-find_package( HepMC COMPONENTS HepMC HepMCfio )
 find_package( HepPDT )
 
 # Component(s) in the package:
@@ -24,8 +23,8 @@ atlas_add_component( TruthIO
                      src/*.cxx
                      src/*.F
                      src/components/*.cxx
-                     INCLUDE_DIRS ${HEPPDT_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS}
-                     LINK_LIBRARIES ${HEPPDT_LIBRARIES} ${HEPMC_LIBRARIES} AthenaBaseComps GaudiKernel GeneratorModulesLib StoreGateLib SGtests EventInfo GeneratorObjects )
+                     INCLUDE_DIRS ${HEPPDT_INCLUDE_DIRS} 
+                     LINK_LIBRARIES ${HEPPDT_LIBRARIES} AtlasHepMCLib AtlasHepMCfioLib AthenaBaseComps GaudiKernel GeneratorModulesLib StoreGateLib SGtests EventInfo GeneratorObjects )
 
 # Install files from the package:
 atlas_install_headers( TruthIO )
diff --git a/Generators/TruthIO/TruthIO/HepMCReadFromFile.h b/Generators/TruthIO/TruthIO/HepMCReadFromFile.h
index 1201f4dc574e8bf5ab6389dc513f11fadc45dba2..2b0c41c447185a62ec32bd2887b05133547bd4d1 100644
--- a/Generators/TruthIO/TruthIO/HepMCReadFromFile.h
+++ b/Generators/TruthIO/TruthIO/HepMCReadFromFile.h
@@ -6,7 +6,7 @@
 #define TRUTHIO_HEPMCREADFROMFILE_H
 
 #include "GeneratorModules/GenBase.h"
-#include "HepMC/IO_GenEvent.h"
+#include "AtlasHepMC/IO_GenEvent.h"
 #include <memory>
 
 class StoreGateSvc;
diff --git a/Generators/TruthIO/TruthIO/ReadHepEvtFromAscii.h b/Generators/TruthIO/TruthIO/ReadHepEvtFromAscii.h
index 94d73de726d137b1a840c89039c7c06e6d384e76..87992b5d260b8173d2b6c29c80314c8d11d01e08 100644
--- a/Generators/TruthIO/TruthIO/ReadHepEvtFromAscii.h
+++ b/Generators/TruthIO/TruthIO/ReadHepEvtFromAscii.h
@@ -3,7 +3,7 @@
 */
 
 #include "AthenaBaseComps/AthAlgorithm.h"
-#include "HepMC/IO_GenEvent.h"
+#include "AtlasHepMC/IO_GenEvent.h"
 
 class StoreGateSvc;
 
diff --git a/Generators/TruthIO/TruthIO/WriteHepMC.h b/Generators/TruthIO/TruthIO/WriteHepMC.h
index 8140ccecae38e9bab5bc12669c5edd04cf3e20a6..aa4ccc0b56bd250e4b27e23f4d90ec7e5e3eb73d 100644
--- a/Generators/TruthIO/TruthIO/WriteHepMC.h
+++ b/Generators/TruthIO/TruthIO/WriteHepMC.h
@@ -6,7 +6,7 @@
 #define TRUTHIO_WRITEHEPMC_H
 
 #include "GeneratorModules/GenBase.h"
-#include "HepMC/IO_GenEvent.h"
+#include "AtlasHepMC/IO_GenEvent.h"
 #include <memory>
 
 
diff --git a/Generators/TruthIO/src/HepMCReadFromFile.cxx b/Generators/TruthIO/src/HepMCReadFromFile.cxx
index 6cabf7a025118f3ea040a6cec06afb4282bbbea3..b323637adcb40d61db16f42c6e8c1dac50ed83d2 100644
--- a/Generators/TruthIO/src/HepMCReadFromFile.cxx
+++ b/Generators/TruthIO/src/HepMCReadFromFile.cxx
@@ -4,9 +4,9 @@
 
 #include "TruthIO/HepMCReadFromFile.h"
 #include "GeneratorObjects/McEventCollection.h"
-#include "HepMC/GenEvent.h"
-#include "HepMC/IO_HEPEVT.h"
-#include "HepMC/HEPEVT_Wrapper.h"
+#include "AtlasHepMC/GenEvent.h"
+#include "AtlasHepMC/IO_HEPEVT.h"
+#include "AtlasHepMC/HEPEVT_Wrapper.h"
 
 #include "GaudiKernel/DataSvc.h"
 
diff --git a/Generators/TruthIO/src/PrintMC.cxx b/Generators/TruthIO/src/PrintMC.cxx
index e23c8aa4faa44977e3b77af786417ee32121698d..f210ffe1617aa4d2f8bafaf5b3fa2e05ac8ddd74 100644
--- a/Generators/TruthIO/src/PrintMC.cxx
+++ b/Generators/TruthIO/src/PrintMC.cxx
@@ -13,7 +13,7 @@
 
 #include "HepPDT/ParticleData.hh"
 #include "HepPDT/ParticleDataTable.hh"
-#include "HepMC/GenEvent.h"
+#include "AtlasHepMC/GenEvent.h"
 
 
 inline void drawLine(std::ostream& os) {
diff --git a/Generators/TruthIO/src/ReadHepEvtFromAscii.cxx b/Generators/TruthIO/src/ReadHepEvtFromAscii.cxx
index 4fa18d7b52004e34b821669b7c8781b53d8cbfee..06831e5d4a22c5c1d296edea493defe0feb9fa65 100644
--- a/Generators/TruthIO/src/ReadHepEvtFromAscii.cxx
+++ b/Generators/TruthIO/src/ReadHepEvtFromAscii.cxx
@@ -6,9 +6,9 @@
 
 #include "TruthIO/ReadHepEvtFromAscii.h"
 #include "GeneratorObjects/McEventCollection.h"
-#include "HepMC/GenEvent.h"
-#include "HepMC/IO_HEPEVT.h"
-#include "HepMC/HEPEVT_Wrapper.h"
+#include "AtlasHepMC/GenEvent.h"
+#include "AtlasHepMC/IO_HEPEVT.h"
+#include "AtlasHepMC/HEPEVT_Wrapper.h"
 
 #include "GaudiKernel/DataSvc.h"
 
diff --git a/PhysicsAnalysis/TruthParticleID/McParticleEvent/CMakeLists.txt b/PhysicsAnalysis/TruthParticleID/McParticleEvent/CMakeLists.txt
index f84711b2e5170fc75c517b08d2715ecc950490a2..37b70bc221722ff3b994662da30371de690e886c 100644
--- a/PhysicsAnalysis/TruthParticleID/McParticleEvent/CMakeLists.txt
+++ b/PhysicsAnalysis/TruthParticleID/McParticleEvent/CMakeLists.txt
@@ -24,15 +24,14 @@ atlas_depends_on_subdirs(
 # External dependencies:
 find_package( Boost )
 find_package( CLHEP )
-find_package( HepMC )
 
 # Component(s) in the package:
 atlas_add_library( McParticleEvent
    McParticleEvent/*.h src/*.cxx
    PUBLIC_HEADERS McParticleEvent
-   INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS}
+   INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS}
    PRIVATE_INCLUDE_DIRS ${Boost_INCLUDE_DIRS}
-   LINK_LIBRARIES ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} AthenaKernel AthContainers AthLinks Navigation
+   LINK_LIBRARIES ${CLHEP_LIBRARIES} AtlasHepMCLib AthenaKernel AthContainers AthLinks Navigation
    EventKernel NavFourMom GeneratorObjects ParticleEvent VxVertex
    PRIVATE_LINK_LIBRARIES ${Boost_LIBRARIES} )
 
@@ -50,8 +49,8 @@ set( _jobOPath "${_jobOPath}:$ENV{JOBOPTSEARCHPATH}" )
 # Test(s) in the package:
 atlas_add_test( TruthParticle_test
    SOURCES test/TruthParticle_test.cxx
-   INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS}
-   LINK_LIBRARIES ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} GeneratorObjects
+   INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} 
+   LINK_LIBRARIES ${CLHEP_LIBRARIES} AtlasHepMCLib GeneratorObjects
    TestTools GaudiKernel McParticleEvent
    ENVIRONMENT "JOBOPTSEARCHPATH=${_jobOPath}" )
 
diff --git a/PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthEtIsolations.h b/PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthEtIsolations.h
index 20be30414bf09d3f2fcec5138dc28ce8fcee9660..fa2a630b35fa856daa3f04e650e286ca3ca4123a 100644
--- a/PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthEtIsolations.h
+++ b/PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthEtIsolations.h
@@ -37,8 +37,6 @@
 #include "McParticleEvent/TruthParticleParamDefs.h"
 
 // Forward declaration
-namespace HepMC { class GenEvent; }
-namespace HepMC { class GenParticle; }
 class McEventCollection;
 
 class TruthEtIsolations
diff --git a/PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticle.h b/PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticle.h
index 2e7eb1d1ced0b19553de8100009f25359a6d0321..5f20cd1489492fed12570b798fecf8592efd39f1 100644
--- a/PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticle.h
+++ b/PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticle.h
@@ -25,7 +25,9 @@
 
 // HepMC / CLHEP includes
 #include "CLHEP/Vector/LorentzVector.h"
-#include "HepMC/GenParticle.h"
+#include "AtlasHepMC/GenParticle.h"
+#include "AtlasHepMC/Polarization.h"
+#include "AtlasHepMC/Flow.h"
 
 // Gaudi includes
 
@@ -45,7 +47,6 @@
 #include "McParticleEvent/TruthEtIsolations.h"
 
 // Forward declaration
-namespace HepMC { class GenEvent; }
 namespace Trk   { class RecVertex; }
 class TruthParticleContainer;
 
diff --git a/PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticleBase.h b/PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticleBase.h
index be8c2b186b8f3361091470591662d24dcc5cc06f..bb5c3fe8b1a66273b5fc6b810c8c165df3f1b362 100644
--- a/PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticleBase.h
+++ b/PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticleBase.h
@@ -14,7 +14,7 @@
 // STL includes
 
 // HepMC / CLHEP includes
-#include "HepMC/GenParticle.h"
+#include "AtlasHepMC/GenParticle.h"
 
 // Gaudi includes
 
diff --git a/PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticleMomentum.h b/PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticleMomentum.h
index 61ef93e52ee36f3085df40fed93080db4ff77c27..b13eac5c2deb196b671b573fcd30a08fef41243c 100644
--- a/PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticleMomentum.h
+++ b/PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticleMomentum.h
@@ -18,7 +18,7 @@
 // HepMC / CLHEP includes
 #include "CLHEP/Vector/LorentzVector.h"
 #include "CLHEP/Units/SystemOfUnits.h"
-#include "HepMC/SimpleVector.h"
+#include "AtlasHepMC/SimpleVector.h"
 #include "EventKernel/I4Momentum.h"
 
 // Forward declaration
diff --git a/PhysicsAnalysis/TruthParticleID/McParticleEvent/src/TruthEtIsolations.cxx b/PhysicsAnalysis/TruthParticleID/McParticleEvent/src/TruthEtIsolations.cxx
index 7e31fa1ec53e25c81d97ed6b6beb0a02203a78fd..e6681817dde9ce48f59706fbf76873b370006f9e 100644
--- a/PhysicsAnalysis/TruthParticleID/McParticleEvent/src/TruthEtIsolations.cxx
+++ b/PhysicsAnalysis/TruthParticleID/McParticleEvent/src/TruthEtIsolations.cxx
@@ -17,9 +17,9 @@
 
 // HepMC / CLHEP includes
 #include "CLHEP/Units/SystemOfUnits.h"
-#include "HepMC/GenParticle.h"
-#include "HepMC/GenEvent.h"
-#include "HepMC/GenVertex.h"
+#include "AtlasHepMC/GenParticle.h"
+#include "AtlasHepMC/GenEvent.h"
+#include "AtlasHepMC/GenVertex.h"
 #include "GeneratorObjects/McEventCollection.h"
 
 // McParticleEvent includes
diff --git a/PhysicsAnalysis/TruthParticleID/McParticleEvent/src/TruthParticle.cxx b/PhysicsAnalysis/TruthParticleID/McParticleEvent/src/TruthParticle.cxx
index 9c7ce29ed6b030e0c5e3d4f6fdea80a1e12ebea1..d1a09ef0a762fc0dfb85ada2ae7a5221fb126dca 100644
--- a/PhysicsAnalysis/TruthParticleID/McParticleEvent/src/TruthParticle.cxx
+++ b/PhysicsAnalysis/TruthParticleID/McParticleEvent/src/TruthParticle.cxx
@@ -14,9 +14,9 @@
 #include <string>
 
 // HepMC / CLHEP includes
-#include "HepMC/GenParticle.h"
-#include "HepMC/GenEvent.h"
-#include "HepMC/GenVertex.h"
+#include "AtlasHepMC/GenParticle.h"
+#include "AtlasHepMC/GenEvent.h"
+#include "AtlasHepMC/GenVertex.h"
 
 #include "VxVertex/RecVertex.h"
 
diff --git a/Reconstruction/MissingETEvent/CMakeLists.txt b/Reconstruction/MissingETEvent/CMakeLists.txt
index e4537ce12d08d7f856418e142cb3b539182ab7b4..f39849d5f0c9380199ede45975f18dbd0756b58c 100644
--- a/Reconstruction/MissingETEvent/CMakeLists.txt
+++ b/Reconstruction/MissingETEvent/CMakeLists.txt
@@ -22,22 +22,21 @@ atlas_depends_on_subdirs( PUBLIC
 # External dependencies:
 find_package( Boost COMPONENTS filesystem thread system )
 find_package( CLHEP )
-find_package( HepMC )
 find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread )
 
 # Component(s) in the package:
 atlas_add_library( MissingETEvent
                    src/*.cxx
                    PUBLIC_HEADERS MissingETEvent
-                   INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS}
+                   INCLUDE_DIRS ${Boost_INCLUDE_DIRS}
                    PRIVATE_INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS}
                    PRIVATE_DEFINITIONS ${CLHEP_DEFINITIONS}
-                   LINK_LIBRARIES ${Boost_LIBRARIES} ${HEPMC_LIBRARIES} CaloEvent CaloGeoHelpers AthContainers Navigation EventKernel NavFourMom GaudiKernel
+                   LINK_LIBRARIES ${Boost_LIBRARIES} AtlasHepMCLib CaloEvent CaloGeoHelpers AthContainers Navigation EventKernel NavFourMom GaudiKernel
                    PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} CxxUtils TruthHelper )
 
 atlas_add_dictionary( MissingETEventDict
                       MissingETEvent/MissingETEventDict.h
                       MissingETEvent/selection.xml
                       INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS}
-                      LINK_LIBRARIES ${Boost_LIBRARIES} ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} CaloEvent CaloGeoHelpers AthContainers Navigation EventKernel NavFourMom GaudiKernel CxxUtils TruthHelper MissingETEvent )
+                      LINK_LIBRARIES ${Boost_LIBRARIES} ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} AtlasHepMCLib CaloEvent CaloGeoHelpers AthContainers Navigation EventKernel NavFourMom GaudiKernel CxxUtils TruthHelper MissingETEvent )
 
diff --git a/Reconstruction/MissingETEvent/MissingETEvent/MissingEtTruth.h b/Reconstruction/MissingETEvent/MissingETEvent/MissingEtTruth.h
index 22bee632de7143fca8d5f4ec13dd51d122ae1c80..a0b336d266f886d1b25cb815ac2ba2764364b68d 100644
--- a/Reconstruction/MissingETEvent/MissingETEvent/MissingEtTruth.h
+++ b/Reconstruction/MissingETEvent/MissingETEvent/MissingEtTruth.h
@@ -18,8 +18,8 @@ PURPOSE:
 #include "MissingETEvent/MissingET.h"
 #include "MissingETEvent/MissingEtRegions.h"
 
-#include "HepMC/GenEvent.h"
-#include "HepMC/GenParticle.h"
+#include "AtlasHepMC/GenEvent.h"
+#include "AtlasHepMC/GenParticle.h"
 
 #include <vector>