diff --git a/DDG4/include/DDG4/Geant4Data.h b/DDG4/include/DDG4/Geant4Data.h
index fe43cf7760fac1589479dee51116ac0205fd65aa..410358033a97b0b6091f6321001dd26d1e2fe8c1 100644
--- a/DDG4/include/DDG4/Geant4Data.h
+++ b/DDG4/include/DDG4/Geant4Data.h
@@ -10,8 +10,10 @@
 #define DD4HEP_GEANT4DATA_H
 
 // Framework include files
+#ifndef __DD4HEP_DDEVE_EXCLUSIVE__
 #include "DD4hep/Objects.h"
 #include "G4Step.hh"
+#endif
 
 /*
  *   DD4hep namespace declaration
@@ -224,5 +226,4 @@ namespace DD4hep {
     };
   }    // End namespace Simulation
 }      // End namespace DD4hep
-
 #endif // DD4HEP_GEANT4DATA_H
diff --git a/DDG4/plugins/Geant4HitExtractor.cpp b/DDG4/plugins/Geant4HitExtractor.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..54830c78963f45c74bc1bba32528017f3e96cd70
--- /dev/null
+++ b/DDG4/plugins/Geant4HitExtractor.cpp
@@ -0,0 +1,50 @@
+#include "DDG4/Geant4Data.h"
+
+using namespace DD4hep;
+using namespace DD4hep::Simulation;
+
+namespace DD4hep {
+  namespace DDEve  {
+    class SimulationHit   {
+    public:
+      Position position;
+      float deposit;
+      SimulationHit() : deposit(0.0) {}
+      SimulationHit(const Position& p, float d) : position(p), deposit(d) {}
+      SimulationHit(const SimulationHit& c) : position(c.position), deposit(c.deposit) {}
+      ~SimulationHit()  {}
+      SimulationHit& operator=(const SimulationHit& c)  {
+	if ( this != &c )  {
+	  position = c.position;
+	  deposit = c.deposit;
+	}
+	return *this;
+      }
+    };
+  }
+}
+
+static void* _convertHitCollection(const char* source)  {
+  typedef DD4hep::DDEve::SimulationHit SimulationHit;
+  const std::vector<SimpleHit*>* c = (std::vector<SimpleHit*>*)source;
+  std::vector<SimulationHit>* pv = new std::vector<SimulationHit>();
+  if ( source && c->size() > 0 )   {
+    for(std::vector<SimpleHit*>::const_iterator k=c->begin(); k!=c->end(); ++k)   {
+      SimpleTracker::Hit* trh = dynamic_cast<SimpleTracker::Hit*>(*k);
+      if ( trh )   {
+	pv->push_back(SimulationHit(trh->position, trh->energyDeposit));
+	continue;
+      }
+      SimpleCalorimeter::Hit* cah = dynamic_cast<SimpleCalorimeter::Hit*>(*k);
+      if ( cah )   {
+	pv->push_back(SimulationHit(cah->position, cah->energyDeposit));
+	continue;
+      }
+    }
+  }
+  return pv;
+}
+
+#include "DD4hep/Factories.h"
+using namespace DD4hep::Geometry;
+DECLARE_CONSTRUCTOR(DDEve_DDG4CollectionAccess,_convertHitCollection)