diff --git a/DDG4/lcio/LCIOFileReader.cpp b/DDG4/lcio/LCIOFileReader.cpp
index 16a7fc8efc60c5bd004b3b4f91dff3182ca9a1b6..23038ee74deeca924853e754ae39a748cbf07bab 100644
--- a/DDG4/lcio/LCIOFileReader.cpp
+++ b/DDG4/lcio/LCIOFileReader.cpp
@@ -55,9 +55,10 @@ DECLARE_GEANT4_EVENT_READER_NS(DD4hep::Simulation,LCIOFileReader)
 DD4hep::Simulation::LCIOFileReader::LCIOFileReader(const std::string& nam)
 : LCIOEventReader(nam)
 {
-  m_reader = ::lcio::LCFactory::getInstance()->createLCReader();
+  m_reader = ::lcio::LCFactory::getInstance()->createLCReader(LCReader::directAccess);
   printout(INFO,"LCIOFileReader","Created file reader. Try to open input %s",nam.c_str());
   m_reader->open(nam);
+  m_directAccess = true;
 }
 
 /// Default destructor
@@ -67,8 +68,8 @@ DD4hep::Simulation::LCIOFileReader::~LCIOFileReader()    {
 
 /// Read an event and fill a vector of MCParticles.
 Geant4EventReader::EventReaderStatus
-DD4hep::Simulation::LCIOFileReader::readParticleCollection(int /*event_number */, EVENT::LCCollection** particles)  {
-  ::lcio::LCEvent* evt = m_reader->readNextEvent();
+DD4hep::Simulation::LCIOFileReader::readParticleCollection(int event_number, EVENT::LCCollection** particles)  {
+  ::lcio::LCEvent* evt = m_reader->readEvent(/*runNumber*/ 0, event_number);
   if ( evt ) {
     *particles = evt->getCollection(LCIO::MCPARTICLE);
     if ( *particles ) return EVENT_READER_OK;