// $Id: Geant4Converter.cpp 603 2013-06-13 21:15:14Z markus.frank $ //==================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------- // //==================================================================== #ifndef DD4HEP_DDG4_LCIOFILEREADER_H #define DD4HEP_DDG4_LCIOFILEREADER_H // Framework include files #include "LCIOEventReader.h" // Forward declarations namespace IO { class LCReader; } /* * DD4hep namespace declaration */ namespace DD4hep { /* * lcio namespace declaration */ namespace Simulation { /** @class LcioEventReader LcioEventReader.h DDG4/LcioEventReader.h * * Base class to read lcio event files * * @author P.Kostka (main author) * @author M.Frank (code reshuffeling into new DDG4 scheme) * @version 1.0 */ struct LCIOFileReader : public LCIOEventReader { protected: /// Reference to reader object IO::LCReader* m_reader; public: /// Initializing constructor LCIOFileReader(const std::string& nam, int); /// Default destructor virtual ~LCIOFileReader(); /// Read an event and return a LCCollectionVec of MCParticles. virtual EVENT::LCCollection *readParticles(); }; } } #endif // DD4HEP_DDG4_LCIOFILEREADER_H #include "DD4hep/Printout.h" #include "DD4hep/Primitives.h" #include "lcio.h" #include "EVENT/LCIO.h" #include "IO/LCReader.h" using namespace EVENT; using namespace DD4hep::Simulation; // Factory entry DECLARE_LCIO_EVENT_READER(LCIOFileReader) /// Initializing constructor LCIOFileReader::LCIOFileReader(const std::string& nam, int /* arg */) : LCIOEventReader(nam) { m_reader = ::lcio::LCFactory::getInstance()->createLCReader(); printout(INFO,"LCIOFileReader","Created file reader. Try to open input %s",nam.c_str()); m_reader->open(nam); } /// Default destructor LCIOFileReader::~LCIOFileReader() { DD4hep::deletePtr(m_reader); } /// Read an event and return a LCCollectionVec of MCParticles. EVENT::LCCollection *LCIOFileReader::readParticles() { ::lcio::LCEvent* evt = m_reader->readNextEvent(); if ( evt ) { return evt->getCollection(LCIO::MCPARTICLE); } return 0; }