diff --git a/Generator/src/HepMCRdr.cpp b/Generator/src/HepMCRdr.cpp index 0ba5577a79bdca0ceac4bfd00590c7dcf5e920c7..5e5c9e5d827ddf7106b425dfbd44dde86e668300 100644 --- a/Generator/src/HepMCRdr.cpp +++ b/Generator/src/HepMCRdr.cpp @@ -25,14 +25,14 @@ using namespace edm4hep; DECLARE_COMPONENT(HepMCRdr) HepMCRdr::~HepMCRdr(){ -delete ascii_in; + delete ascii_in; } bool HepMCRdr::mutate(MyHepMC::GenEvent& event){ + ++m_processed_event; HepMC::GenEvent* evt = ascii_in->read_next_event(); if(!evt) return false; - m_processed_event ++; int n_mc = evt->particles_size(); //std::cout<<"Read event :"<< m_processed_event <<", mc size :"<< n_mc <<std::endl; std::map<int, int> pmcid_lmcid; @@ -93,13 +93,13 @@ bool HepMCRdr::mutate(MyHepMC::GenEvent& event){ } bool HepMCRdr::isEnd(){ -return false; + return false; } bool HepMCRdr::configure_gentool(){ ascii_in = new HepMC::IO_GenEvent(m_filename.value().c_str(),std::ios::in); - m_processed_event=0; + m_processed_event=-1; return true; } @@ -115,6 +115,17 @@ HepMCRdr::initialize() { return StatusCode::FAILURE; } + // skip the first n events if startIndex is not 0. + if (startIndex() > 0) { + for (int i=0; i<startIndex(); ++i) { + ++m_processed_event; + HepMC::GenEvent* evt = ascii_in->read_next_event(); + if(!evt) break; + delete evt; + } + info() << "Skip the first " << startIndex() << " events." << endmsg; + } + return sc; } @@ -127,3 +138,7 @@ HepMCRdr::finalize() { } return sc; } + +int HepMCRdr::startIndex(){ + return m_startIndex.value(); +} \ No newline at end of file diff --git a/Generator/src/HepMCRdr.h b/Generator/src/HepMCRdr.h index e6ff396937ded45b6640b09d00dfc34a87f27a3f..43a9d05b7d2e55365eba885181cde4ce30c320c3 100644 --- a/Generator/src/HepMCRdr.h +++ b/Generator/src/HepMCRdr.h @@ -23,6 +23,8 @@ class HepMCRdr: public extends<AlgTool, GenReader> { bool mutate(MyHepMC::GenEvent& event); bool finish(); bool isEnd(); + + int startIndex() override; private: HepMC::IO_GenEvent *ascii_in{nullptr}; long m_total_event{-1}; @@ -30,6 +32,7 @@ class HepMCRdr: public extends<AlgTool, GenReader> { // input file name Gaudi::Property<std::string> m_filename{this, "Input"}; + Gaudi::Property<int> m_startIndex{this, "StartIndex", 0, "Default start index"}; };