diff --git a/Generator/CMakeLists.txt b/Generator/CMakeLists.txt index 43149bd050bea7d47b3336a8a24100cad971b8cf..5d0c6d94d9c398fee85fdb736fd3364f50f56bef 100644 --- a/Generator/CMakeLists.txt +++ b/Generator/CMakeLists.txt @@ -10,7 +10,7 @@ set(GenAlgo_srcs # src/LCAscHepRdr.cc # src/HepevtRdr.cpp src/SLCIORdr.cpp - # src/HepMCRdr.cpp + src/HepMCRdr.cpp src/GtGunTool.cpp ) set(GenAlgo_incs src) diff --git a/Generator/src/HepMCRdr.cpp b/Generator/src/HepMCRdr.cpp index 22acd3ff013603ace42a4086c61d2621fe5e2fdf..b8c81809efb2efb4e0e25a5f4d3a9f3f624fdc60 100644 --- a/Generator/src/HepMCRdr.cpp +++ b/Generator/src/HepMCRdr.cpp @@ -24,13 +24,7 @@ using namespace plcio; using namespace std; - -HepMCRdr::HepMCRdr(string name){ - -ascii_in = new HepMC::IO_GenEvent(name.c_str(),std::ios::in); - -m_processed_event=0; -} +DECLARE_COMPONENT(HepMCRdr) HepMCRdr::~HepMCRdr(){ delete ascii_in; @@ -104,10 +98,34 @@ bool HepMCRdr::isEnd(){ return false; } -bool HepMCRdr::configure(){ -return true; +bool HepMCRdr::configure_gentool(){ + ascii_in = new HepMC::IO_GenEvent(m_filename.value().c_str(),std::ios::in); + + m_processed_event=0; + return true; } bool HepMCRdr::finish(){ -return true; + return true; +} + +StatusCode +HepMCRdr::initialize() { + StatusCode sc; + if (not configure_gentool()) { + error() << "failed to initialize." << endmsg; + return StatusCode::FAILURE; + } + + return sc; +} + +StatusCode +HepMCRdr::finalize() { + StatusCode sc; + if (not finish()) { + error() << "Failed to finalize." << endmsg; + return StatusCode::FAILURE; + } + return sc; } diff --git a/Generator/src/HepMCRdr.h b/Generator/src/HepMCRdr.h index 61c777bba02c8f8a807940162322691c04d127ae..e6ff396937ded45b6640b09d00dfc34a87f27a3f 100644 --- a/Generator/src/HepMCRdr.h +++ b/Generator/src/HepMCRdr.h @@ -1,6 +1,8 @@ #ifndef HepMCRdr_h #define HepMCRdr_h 1 +#include "GaudiKernel/AlgTool.h" + #include "GenReader.h" #include "GenEvent.h" @@ -8,19 +10,27 @@ #include "HepMC/GenEvent.h" -class HepMCRdr: public GenReader{ +class HepMCRdr: public extends<AlgTool, GenReader> { public: - HepMCRdr(string name); + using extends::extends; ~HepMCRdr(); - bool configure(); + + StatusCode initialize() override; + StatusCode finalize() override; + + bool configure_gentool(); bool mutate(MyHepMC::GenEvent& event); bool finish(); bool isEnd(); private: - HepMC::IO_GenEvent *ascii_in; - long m_total_event; - long m_processed_event; + HepMC::IO_GenEvent *ascii_in{nullptr}; + long m_total_event{-1}; + long m_processed_event{-1}; + + // input file name + Gaudi::Property<std::string> m_filename{this, "Input"}; + }; #endif