diff --git a/DDG4/lcio/LCIOEventReader.cpp b/DDG4/lcio/LCIOEventReader.cpp
index 5d3c0e55ccb9b550bc5934fda00fab6459e9340f..3e1c5a9fd1a20b0a1521e4c68607832baee9d181 100644
--- a/DDG4/lcio/LCIOEventReader.cpp
+++ b/DDG4/lcio/LCIOEventReader.cpp
@@ -49,7 +49,7 @@ namespace {
 
 /// Initializing constructor
 LCIOEventReader::LCIOEventReader(const string& nam)
-  : Geant4EventReader(nam), m_numEvent(0)
+  : Geant4EventReader(nam)
 {
 }
 
@@ -66,7 +66,6 @@ LCIOEventReader::readParticles(int event_number, vector<Particle*>& particles)
   vector<EVENT::MCParticle*>  mcpcoll;
   EventReaderStatus ret = readParticleCollection(event_number,&primaries);
 
-  ++m_numEvent;
   if ( ret != EVENT_READER_OK ) return ret;
 
   int NHEP = primaries->getNumberOfElements();
diff --git a/DDG4/lcio/LCIOStdHepReader.cpp b/DDG4/lcio/LCIOStdHepReader.cpp
index d23ed28538efb78211f25c7e8fa33e1d67119309..82e357a9dd81db0fa98f20ad4d6d56b43309744e 100644
--- a/DDG4/lcio/LCIOStdHepReader.cpp
+++ b/DDG4/lcio/LCIOStdHepReader.cpp
@@ -44,6 +44,9 @@ namespace DD4hep  {
       virtual ~LCIOStdHepReader();
       /// Read an event and fill a vector of MCParticles.
       virtual EventReaderStatus readParticleCollection(int event_number, EVENT::LCCollection** particles);
+      virtual EventReaderStatus moveToEvent(int event_number);
+      virtual EventReaderStatus skipEvent() { return EVENT_READER_OK; }
+
     };
   }     /* End namespace lcio   */
 }       /* End namespace DD4hep */
@@ -73,9 +76,8 @@ using namespace DD4hep::Simulation;
 
 /// Initializing constructor
 LCIOStdHepReader::LCIOStdHepReader(const std::string& nam)
-  : LCIOEventReader(nam)
+  : LCIOEventReader(nam), m_reader(new UTIL::LCStdHepRdr(m_name.c_str()))
 {
-  m_reader = new UTIL::LCStdHepRdr(m_name.c_str());
 }
 
 /// Default destructor
@@ -83,10 +85,29 @@ LCIOStdHepReader::~LCIOStdHepReader()    {
   DD4hep::deletePtr(m_reader);
 }
 
+
+/// skipEvents if required
+Geant4EventReader::EventReaderStatus
+LCIOStdHepReader::moveToEvent(int event_number) {
+  if( m_currEvent == 0 && event_number != 0 ) {
+    printout(INFO,"LCIOStdHepReader::moveToEvent","Skipping the first %d events ", event_number );
+    printout(INFO,"LCIOStdHepReader::moveToEvent","Current Event Number: %d", m_currEvent );
+    while ( m_currEvent < event_number ) {
+      EVENT::LCCollection* particles = m_reader->readEvent();
+      if ( 0 == particles ) return EVENT_READER_ERROR;
+      ++m_currEvent;
+    }
+  }
+  return EVENT_READER_OK;
+}
+
 /// Read an event and fill a vector of MCParticles.
 Geant4EventReader::EventReaderStatus
-LCIOStdHepReader::readParticleCollection(int /*event_number */, EVENT::LCCollection** particles)  {
+LCIOStdHepReader::readParticleCollection(int event_number, EVENT::LCCollection** particles)  {
+
   *particles = m_reader->readEvent();
+  ++m_currEvent;
+
   if ( 0 == *particles ) return EVENT_READER_ERROR;
   return EVENT_READER_OK;
 }