From 8ba6190a10e5fbaafd3d3de952e8dd75bdd2f4c0 Mon Sep 17 00:00:00 2001
From: lintao <lintao51@gmail.com>
Date: Sat, 20 Jun 2020 15:26:55 +0800
Subject: [PATCH] WIP: Update the example to read the output of ECAL matrix.

---
 Examples/src/Edm4hepTest/Edm4hepReadAlg.cpp | 29 ++++++++++++++++++---
 Examples/src/Edm4hepTest/Edm4hepReadAlg.h   |  6 +++++
 2 files changed, 31 insertions(+), 4 deletions(-)

diff --git a/Examples/src/Edm4hepTest/Edm4hepReadAlg.cpp b/Examples/src/Edm4hepTest/Edm4hepReadAlg.cpp
index 8ab3ed0e..f41d333b 100644
--- a/Examples/src/Edm4hepTest/Edm4hepReadAlg.cpp
+++ b/Examples/src/Edm4hepTest/Edm4hepReadAlg.cpp
@@ -1,6 +1,8 @@
 #include "Edm4hepReadAlg.h"
 #include "edm4hep/EventHeaderCollection.h"
 #include "edm4hep/MCParticleCollection.h"
+#include "edm4hep/SimCalorimeterHitCollection.h"
+#include "edm4hep/CaloHitContributionCollection.h"
 
 DECLARE_COMPONENT(Edm4hepReadAlg)
 
@@ -21,11 +23,7 @@ StatusCode Edm4hepReadAlg::execute()
 {
     debug() << "begin execute Edm4hepReadAlg" << endmsg;
 
-    auto headers = m_headerCol.get();
-    auto header = headers->at(0);
     auto mcCol = m_mcParCol.get();
-
-    info() << "Run " << header.getRunNumber() << " Event " << header.getEventNumber() << " { ";
     for ( auto p : *mcCol ) {
         info() << p.getObjectID().index << " : [";
         for ( auto it = p.daughters_begin(), end = p.daughters_end(); it != end; ++it ) {
@@ -35,6 +33,29 @@ StatusCode Edm4hepReadAlg::execute()
     }
     info() << "}" << endmsg;
 
+    auto caloCol = m_calorimeterCol.get();
+    for (auto calohit : *caloCol) {
+        unsigned int contrib_size = calohit.contributions_size();
+        info() << " contributions_size: " 
+               << contrib_size
+               << endmsg;
+        for (unsigned int i = 0; i < contrib_size; ++i) {
+            auto contrib = calohit.getContributions(i);
+            auto primary_particle = contrib.getParticle();
+
+            info() << " - #" << i << ": "
+                   << " track with "
+                   << " PDG: " << contrib.getPDG() // current track
+                   << ". "
+                   << " primary track with "
+                   << " PDG: " << primary_particle.getPDG()
+                   << endmsg;
+
+
+        }
+
+    }
+
     return StatusCode::SUCCESS;
 }
 
diff --git a/Examples/src/Edm4hepTest/Edm4hepReadAlg.h b/Examples/src/Edm4hepTest/Edm4hepReadAlg.h
index a5a5e14e..8a194a64 100644
--- a/Examples/src/Edm4hepTest/Edm4hepReadAlg.h
+++ b/Examples/src/Edm4hepTest/Edm4hepReadAlg.h
@@ -7,6 +7,8 @@
 namespace edm4hep {
     class EventHeaderCollection;
     class MCParticleCollection;
+    class SimCalorimeterHitCollection;
+    class CaloHitContributionCollection;
 }
 
 class Edm4hepReadAlg : public GaudiAlgorithm
@@ -24,6 +26,10 @@ class Edm4hepReadAlg : public GaudiAlgorithm
 
         DataHandle<edm4hep::EventHeaderCollection> m_headerCol{"EventHeader", Gaudi::DataHandle::Reader, this};
         DataHandle<edm4hep::MCParticleCollection> m_mcParCol{"MCParticle", Gaudi::DataHandle::Reader, this};
+        DataHandle<edm4hep::SimCalorimeterHitCollection> m_calorimeterCol{"SimCalorimeterCol", 
+                Gaudi::DataHandle::Reader, this};
+        DataHandle<edm4hep::CaloHitContributionCollection> m_caloContribCol{"SimCaloContributionCol", 
+                Gaudi::DataHandle::Reader, this};
 
 };
 
-- 
GitLab