From a2f60fd16f57249c264ec0f8d62957442589c076 Mon Sep 17 00:00:00 2001
From: Ete Remi <remi.ete@gmail.com>
Date: Tue, 27 Feb 2018 15:38:27 +0100
Subject: [PATCH] Added LCIOEventParameters class to handle LCIO input event
 parameters

---
 DDG4/lcio/LCIOEventParameters.cpp | 83 +++++++++++++++++++++++++++++++
 DDG4/lcio/LCIOEventParameters.h   | 59 ++++++++++++++++++++++
 2 files changed, 142 insertions(+)
 create mode 100644 DDG4/lcio/LCIOEventParameters.cpp
 create mode 100644 DDG4/lcio/LCIOEventParameters.h

diff --git a/DDG4/lcio/LCIOEventParameters.cpp b/DDG4/lcio/LCIOEventParameters.cpp
new file mode 100644
index 000000000..9d11785ee
--- /dev/null
+++ b/DDG4/lcio/LCIOEventParameters.cpp
@@ -0,0 +1,83 @@
+//==========================================================================
+//  AIDA Detector description implementation 
+//--------------------------------------------------------------------------
+// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN)
+// All rights reserved.
+//
+// For the licensing terms see $DD4hepINSTALL/LICENSE.
+// For the list of contributors see $DD4hepINSTALL/doc/CREDITS.
+//
+// @author  R.Ete (main author)
+//
+//====================================================================
+
+// Framework include files
+#include "LCIOEventParameters.h"
+
+using namespace std;
+using namespace dd4hep;
+using namespace dd4hep::sim;
+
+/// Initializing constructor
+LCIOEventParameters::LCIOEventParameters()
+  : m_runNumber(0), m_eventNumber(0)
+{
+}
+
+/// Default destructor
+LCIOEventParameters::~LCIOEventParameters()  {
+}
+
+/// Set the event parameters
+void LCIOEventParameters::setParameters(int rNumber, 
+                                        int evtNumber, 
+                                        const EVENT::LCParameters& parameters)
+{
+  m_runNumber = rNumber;
+  m_eventNumber = evtNumber;
+  copyLCParameters(parameters, m_eventParameters);
+}
+
+/// Get the run number
+int LCIOEventParameters::runNumber() const  {
+  return m_runNumber;
+}
+
+/// Get the event number
+int LCIOEventParameters::eventNumber() const  {
+  return m_eventNumber;
+}
+
+/// Get the event parameters
+const IMPL::LCParametersImpl& LCIOEventParameters::eventParameters() const  {
+  return m_eventParameters;
+}
+
+/// Copy the paramaters from source to destination
+void LCIOEventParameters::copyLCParameters(const EVENT::LCParameters& source, 
+                                           EVENT::LCParameters& destination)  
+{
+  EVENT::StringVec intKeys; source.getIntKeys(intKeys);
+  EVENT::StringVec floatKeys; source.getFloatKeys(floatKeys);
+  EVENT::StringVec stringKeys; source.getStringKeys(stringKeys);
+  
+  for(unsigned int i=0; i<intKeys.size(); ++i )  {
+    EVENT::IntVec intVec;
+    source.getIntVals(intKeys.at(i),intVec);
+    destination.setValues(intKeys.at(i),intVec);
+  }
+  
+  for(unsigned int i=0; i<floatKeys.size(); ++i )  {
+    EVENT::FloatVec floatVec;
+    source.getFloatVals(floatKeys.at(i),floatVec);
+    destination.setValues(floatKeys.at(i),floatVec);
+  }
+  
+  for(unsigned int i=0; i<stringKeys.size(); ++i )  {
+    EVENT::StringVec stringVec;
+    source.getStringVals(stringKeys.at(i),stringVec);
+    destination.setValues(stringKeys.at(i),stringVec);
+  }
+}
+
+
diff --git a/DDG4/lcio/LCIOEventParameters.h b/DDG4/lcio/LCIOEventParameters.h
new file mode 100644
index 000000000..66e890487
--- /dev/null
+++ b/DDG4/lcio/LCIOEventParameters.h
@@ -0,0 +1,59 @@
+//==========================================================================
+//  AIDA Detector description implementation 
+//--------------------------------------------------------------------------
+// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN)
+// All rights reserved.
+//
+// For the licensing terms see $DD4hepINSTALL/LICENSE.
+// For the list of contributors see $DD4hepINSTALL/doc/CREDITS.
+//
+// Author     : R.Ete
+//
+//==========================================================================
+#ifndef DD4HEP_DDG4_LCIOEVENTPARAMETERS_H
+#define DD4HEP_DDG4_LCIOEVENTPARAMETERS_H
+
+// lcio include files
+#include "lcio.h"
+#include "IMPL/LCParametersImpl.h"
+
+/// Namespace for the AIDA detector description toolkit
+namespace dd4hep  {
+
+  /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit
+  namespace sim  {
+
+    /// Event extension to pass input LCIO event data to output LCIO event
+    /**
+     *  \author  R.Ete (main author)
+     *  \version 1.0
+     *  \ingroup DD4HEP_SIMULATION
+     */
+    class LCIOEventParameters  {
+    private:
+      int                     m_runNumber;
+      int                     m_eventNumber;
+      IMPL::LCParametersImpl  m_eventParameters;
+      
+    public:
+      /// Initializing constructor
+      LCIOEventParameters();
+      /// Default destructor
+      ~LCIOEventParameters();
+
+      /// Set the event parameters
+      void setParameters(int runNumber, int eventNumber, const EVENT::LCParameters& parameters);
+      /// Get the run number
+      int runNumber() const;
+      /// Get the event number
+      int eventNumber() const;
+      /// Get the event parameters
+      const IMPL::LCParametersImpl& eventParameters() const;
+      
+      /// Copy the paramaters from source to destination
+      static void copyLCParameters(const EVENT::LCParameters& source, EVENT::LCParameters& destination);
+    };
+
+  }     /* End namespace sim   */
+}       /* End namespace dd4hep */
+#endif  /* DD4HEP_DDG4_LCIOEVENTPARAMETERS_H  */
-- 
GitLab