diff --git a/DDG4/plugins/Geant4EventReaderHepEvt.cpp b/DDG4/plugins/Geant4EventReaderHepEvt.cpp
index f8fc997375abcb2287bcecd010e33bad75f52c25..5da37563ba6c54838219b855f10a4b083fdd9ad8 100644
--- a/DDG4/plugins/Geant4EventReaderHepEvt.cpp
+++ b/DDG4/plugins/Geant4EventReaderHepEvt.cpp
@@ -47,6 +47,8 @@ namespace DD4hep {
       virtual ~Geant4EventReaderHepEvt();
       /// Read an event and fill a vector of MCParticles.
       virtual EventReaderStatus readParticles(int event_number, std::vector<Particle*>& particles);
+      virtual EventReaderStatus moveToEvent(int event_number);
+      virtual EventReaderStatus skipEvent() { return EVENT_READER_OK; }
     };
   }     /* End namespace Simulation   */
 }       /* End namespace DD4hep       */
@@ -118,6 +120,25 @@ Geant4EventReaderHepEvt::~Geant4EventReaderHepEvt()    {
   m_input.close();
 }
 
+/// skipEvents if required
+Geant4EventReader::EventReaderStatus
+Geant4EventReaderHepEvt::moveToEvent(int event_number) {
+  if( m_currEvent == 0 && event_number != 0 ) {
+    printout(INFO,"EventReaderHepEvt::moveToEvent","Skipping the first %d events ", event_number );
+    printout(INFO,"EventReaderHepEvt::moveToEvent","Event number before skipping: %d", m_currEvent );
+    while ( m_currEvent < event_number ) {
+      std::vector<Particle*> particles;
+      EventReaderStatus sc = readParticles(m_currEvent,particles);
+      for_each(particles.begin(),particles.end(),deleteObject<Particle>);
+      if ( sc != EVENT_READER_OK ) return sc;
+      //Current event is increased in readParticles already!
+      // ++m_currEvent;
+    }
+  }
+  printout(INFO,"EventReaderHepEvt::moveToEvent","Event number after skipping: %d", m_currEvent );
+  return EVENT_READER_OK;
+}
+
 /// Read an event and fill a vector of MCParticles.
 Geant4EventReader::EventReaderStatus
 Geant4EventReaderHepEvt::readParticles(int /* event_number */, vector<Particle*>& particles)   {
@@ -283,6 +304,7 @@ Geant4EventReaderHepEvt::readParticles(int /* event_number */, vector<Particle*>
       if ( !part.findParent(mcp) ) part.addParent(mcp);
     }
   }  // End second loop over particles
+  ++m_currEvent;
   return EVENT_READER_OK;
 }