From ed5c3d1a002bd08bb039cd7c6b1f148dd211c4f0 Mon Sep 17 00:00:00 2001
From: lintao <lintao51@gmail.com>
Date: Sun, 10 Nov 2019 21:14:14 +0800
Subject: [PATCH] WIP: migrate SLCIORdr.cpp.

---
 Generator/CMakeLists.txt   |  2 +-
 Generator/src/SLCIORdr.cpp | 39 +++++++++++++++++++++++++++++---------
 Generator/src/SLCIORdr.h   | 30 ++++++++++++++++++++---------
 3 files changed, 52 insertions(+), 19 deletions(-)

diff --git a/Generator/CMakeLists.txt b/Generator/CMakeLists.txt
index 79fbb6a6..43149bd0 100644
--- a/Generator/CMakeLists.txt
+++ b/Generator/CMakeLists.txt
@@ -9,7 +9,7 @@ set(GenAlgo_srcs
     src/GenPrinter.cpp
     # src/LCAscHepRdr.cc
     # src/HepevtRdr.cpp
-    # src/SLCIORdr.cpp
+    src/SLCIORdr.cpp
     # src/HepMCRdr.cpp
     src/GtGunTool.cpp
 )
diff --git a/Generator/src/SLCIORdr.cpp b/Generator/src/SLCIORdr.cpp
index c57a8e7d..9db71153 100644
--- a/Generator/src/SLCIORdr.cpp
+++ b/Generator/src/SLCIORdr.cpp
@@ -31,13 +31,7 @@ using namespace IMPL;
 using namespace plcio;
 using namespace std;
 
-
-SLCIORdr::SLCIORdr(string name){
-
-m_slcio_rdr = IOIMPL::LCFactory::getInstance()->createLCReader();
-m_slcio_rdr->open(name.c_str());
-m_processed_event=0;
-}
+DECLARE_COMPONENT(SLCIORdr)
 
 SLCIORdr::~SLCIORdr(){
 delete m_slcio_rdr;
@@ -160,10 +154,37 @@ bool SLCIORdr::isEnd(){
 return false;
 }
 
-bool SLCIORdr::configure(){
-return true;
+bool SLCIORdr::configure_gentool(){
+    m_slcio_rdr = IOIMPL::LCFactory::getInstance()->createLCReader();
+    m_slcio_rdr->open(m_filename.value().c_str());
+    m_processed_event=0;
+
+
+    return true;
 }
 
 bool SLCIORdr::finish(){
 return true;
 }
+
+
+StatusCode
+SLCIORdr::initialize() {
+    StatusCode sc;
+    if (not configure_gentool()) {
+        error() << "failed to initialize." << endmsg;
+        return StatusCode::FAILURE;
+    }
+
+    return sc;
+}
+
+StatusCode
+SLCIORdr::finalize() {
+    StatusCode sc;
+    if (not finish()) {
+        error() << "Failed to finalize." << endmsg;
+        return StatusCode::FAILURE;
+    }
+    return sc;
+}
diff --git a/Generator/src/SLCIORdr.h b/Generator/src/SLCIORdr.h
index b429475f..a37fa5ed 100644
--- a/Generator/src/SLCIORdr.h
+++ b/Generator/src/SLCIORdr.h
@@ -1,6 +1,8 @@
 #ifndef SLCIORdr_h
 #define SLCIORdr_h 1
 
+#include "GaudiKernel/AlgTool.h"
+
 #include "GenReader.h"
 #include "GenEvent.h"
 
@@ -13,19 +15,29 @@
 #include "IO/LCReader.h"
 
 
-class SLCIORdr: public GenReader{
+class SLCIORdr: public extends<AlgTool, GenReader> {
 
     public:
-        SLCIORdr(string name);
+        using extends::extends;
+
         ~SLCIORdr();
-        bool configure();               
-        bool mutate(MyHepMC::GenEvent& event);    
-        bool finish();
-        bool isEnd();
+
+        // 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:
-        IO::LCReader* m_slcio_rdr;
-        long m_total_event;
-        long m_processed_event;
+        IO::LCReader* m_slcio_rdr{nullptr};
+        long m_total_event{-1};
+        long m_processed_event{-1};
+
+        // input file name
+        Gaudi::Property<std::string> m_filename{this, "Input"};
+
 };
 
 #endif
-- 
GitLab