diff --git a/Generator/CMakeLists.txt b/Generator/CMakeLists.txt index b62828d58a0372891fbb51fc888fb9f4df6db9e7..0f850fcf1983a2d96839ce3b86a6a3bd8a076f5d 100644 --- a/Generator/CMakeLists.txt +++ b/Generator/CMakeLists.txt @@ -5,7 +5,7 @@ set(GenAlgo_srcs src/GenAlgo.cpp src/GenEvent.cpp src/GenReader.cpp - # src/StdHepRdr.cpp + src/StdHepRdr.cpp # src/GenPrinter.cpp # src/LCAscHepRdr.cc # src/HepevtRdr.cpp diff --git a/Generator/src/GenAlgo.cpp b/Generator/src/GenAlgo.cpp index 6c3784ef40cc8586946b0e9398c8bc05964494a3..74c2db30e0f75fc02bd2015b349ddade470c4f40 100644 --- a/Generator/src/GenAlgo.cpp +++ b/Generator/src/GenAlgo.cpp @@ -92,10 +92,10 @@ GenAlgo::execute() { StatusCode GenAlgo::finalize() { - cout << "finalize" << endl; - for(auto gentool: m_genTools) { - if (gentool->finish()) {} - else {cout << "finish Failed" << endl; return StatusCode::FAILURE; } - } + // cout << "finalize" << endl; + // for(auto gentool: m_genTools) { + // if (gentool->finish()) {} + // else {cout << "finish Failed" << endl; return StatusCode::FAILURE; } + // } return StatusCode::SUCCESS; } diff --git a/Generator/src/StdHepRdr.cpp b/Generator/src/StdHepRdr.cpp index e6cfc8b79150be75722460b0d690581f4f5f8d4e..b81abb0569a52df5a3674290d9f8a958f33aba35 100644 --- a/Generator/src/StdHepRdr.cpp +++ b/Generator/src/StdHepRdr.cpp @@ -26,17 +26,10 @@ using namespace IMPL; using namespace plcio; using namespace std; - -StdHepRdr::StdHepRdr(string name){ - -m_stdhep_rdr = new LCStdHepRdrNew(name.c_str()); -m_stdhep_rdr->printHeader(); -m_total_event = m_stdhep_rdr->getNumberOfEvents() - 1 ; -m_processed_event=0; -} +DECLARE_COMPONENT(StdHepRdr) StdHepRdr::~StdHepRdr(){ -delete m_stdhep_rdr; + delete m_stdhep_rdr; } bool StdHepRdr::mutate(MyHepMC::GenEvent& event){ @@ -98,10 +91,40 @@ if(m_processed_event == m_total_event) {std::cout<<"Have read all events, end no else return false; } -bool StdHepRdr::configure(){ -return true; +bool StdHepRdr::configure_gentool(){ + m_stdhep_rdr = new LCStdHepRdrNew(m_filename.value().c_str()); + m_stdhep_rdr->printHeader(); + if (m_stdhep_rdr->getNumberOfEvents()<=1) { + return false; + } + + m_total_event = m_stdhep_rdr->getNumberOfEvents() - 1 ; + m_processed_event=0; + + return true; } bool StdHepRdr::finish(){ -return true; + return true; +} + +StatusCode +StdHepRdr::initialize() { + StatusCode sc; + if (not configure_gentool()) { + error() << "failed to initialize." << endmsg; + return StatusCode::FAILURE; + } + + return sc; +} + +StatusCode +StdHepRdr::finalize() { + StatusCode sc; + if (not finish()) { + error() << "Failed to finalize." << endmsg; + return StatusCode::FAILURE; + } + return sc; } diff --git a/Generator/src/StdHepRdr.h b/Generator/src/StdHepRdr.h index 3d92510bb90e9abe2dbc60f29b2770b563d35598..7517430bf406bdf88c11875bb9c0aad713afaa2f 100644 --- a/Generator/src/StdHepRdr.h +++ b/Generator/src/StdHepRdr.h @@ -1,6 +1,8 @@ #ifndef StdHepRdr_h #define StdHepRdr_h 1 +#include "GaudiKernel/AlgTool.h" + #include "GenReader.h" #include "GenEvent.h" @@ -9,19 +11,30 @@ #include "UTIL/LCStdHepRdrNew.h" -class StdHepRdr: public GenReader{ +class StdHepRdr: public extends<AlgTool, GenReader> { + +public: + + using extends::extends; + + ~StdHepRdr(); + + // Overriding initialize and finalize + StatusCode initialize() override; + StatusCode finalize() override; + + bool configure_gentool() override; + bool mutate(MyHepMC::GenEvent& event) override; + bool finish() override; + bool isEnd() override; +private: + lcio::LCStdHepRdrNew* m_stdhep_rdr{nullptr}; + long m_total_event{-1}; + long m_processed_event{-1}; + + // input file name + Gaudi::Property<std::string> m_filename{this, "Input"}; - public: - StdHepRdr(string name); - ~StdHepRdr(); - bool configure(); - bool mutate(MyHepMC::GenEvent& event); - bool finish(); - bool isEnd(); - private: - lcio::LCStdHepRdrNew* m_stdhep_rdr; - long m_total_event; - long m_processed_event; }; #endif