From 69c55ed8ae421492c9ee6f97acd8d3143b68500a Mon Sep 17 00:00:00 2001 From: lintao <lintao51@gmail.com> Date: Sun, 10 Nov 2019 20:45:56 +0800 Subject: [PATCH] WIP: migrate StdHepRdr. --- Generator/CMakeLists.txt | 2 +- Generator/src/GenAlgo.cpp | 10 ++++---- Generator/src/StdHepRdr.cpp | 47 +++++++++++++++++++++++++++---------- Generator/src/StdHepRdr.h | 37 +++++++++++++++++++---------- 4 files changed, 66 insertions(+), 30 deletions(-) diff --git a/Generator/CMakeLists.txt b/Generator/CMakeLists.txt index b62828d5..0f850fcf 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 6c3784ef..74c2db30 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 e6cfc8b7..b81abb05 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 3d92510b..7517430b 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 -- GitLab