From 7e91000c1e0e1b5a35c23fe23566408f7492c1ce Mon Sep 17 00:00:00 2001
From: tmadlener <thomas.madlener@desy.de>
Date: Tue, 30 Jan 2024 18:47:45 +0100
Subject: [PATCH] Make the renaming of TrackerHit -> TrackerHit3D transparent

---
 DDDigi/io/DigiEdm4hepOutput.cpp |  9 ++++-----
 DDDigi/io/DigiEdm4hepOutput.h   | 13 ++++++++++---
 DDDigi/io/DigiIO.cpp            |  9 ++++++++-
 3 files changed, 22 insertions(+), 9 deletions(-)

diff --git a/DDDigi/io/DigiEdm4hepOutput.cpp b/DDDigi/io/DigiEdm4hepOutput.cpp
index 6c324e25e..477ae16c9 100644
--- a/DDDigi/io/DigiEdm4hepOutput.cpp
+++ b/DDDigi/io/DigiEdm4hepOutput.cpp
@@ -29,7 +29,6 @@
 #include <podio/Frame.h>
 #include <edm4hep/SimTrackerHit.h>
 #include <edm4hep/MCParticleCollection.h>
-#include <edm4hep/TrackerHitCollection.h>
 #include <edm4hep/EventHeaderCollection.h>
 #include <edm4hep/CalorimeterHitCollection.h>
 #include <edm4hep/CaloHitContributionCollection.h>
@@ -64,7 +63,7 @@ namespace dd4hep {
       /// MC particle collection
       particlecollection_t                    m_particles { };
       /// Collection of all edm4hep tracker object collections
-      std::map<std::string, std::unique_ptr<edm4hep::TrackerHitCollection> > m_tracker_collections;
+      std::map<std::string, std::unique_ptr<edm4hep::TrackerHit3DCollection> > m_tracker_collections;
       /// Collection of all edm4hep calorimeter object collections
       std::map<std::string, std::unique_ptr<edm4hep::CalorimeterHitCollection> > m_calo_collections;
       /// Output section name
@@ -122,7 +121,7 @@ namespace dd4hep {
             m_particles = std::make_pair(nam, std::make_unique<edm4hep::MCParticleCollection>());
           }
           else if ( typ == "TrackerHits" )   {
-            m_tracker_collections.emplace(nam, std::make_unique<edm4hep::TrackerHitCollection>());
+            m_tracker_collections.emplace(nam, std::make_unique<edm4hep::TrackerHit3DCollection>());
           }
           else if ( typ == "CalorimeterHits" )   {
             m_calo_collections.emplace(nam, std::make_unique<edm4hep::CalorimeterHitCollection>());
@@ -286,7 +285,7 @@ namespace dd4hep {
     template <typename T> void
     DigiEdm4hepOutputProcessor::convert_depos(const T& cont,
                                               const predicate_t& predicate,
-                                              edm4hep::TrackerHitCollection* collection)  const
+                                              edm4hep::TrackerHit3DCollection* collection)  const
     {
       std::array<float,6> covMat = {0., 0., m_pointResoutionRPhi*m_pointResoutionRPhi, 
         0., 0., m_pointResoutionZ*m_pointResoutionZ
@@ -320,7 +319,7 @@ namespace dd4hep {
       if ( !cont.empty() )   {
         switch(cont.data_type)    {
         case SegmentEntry::TRACKER_HITS:
-          convert_depos(cont, predicate, static_cast<edm4hep::TrackerHitCollection*>(coll));
+          convert_depos(cont, predicate, static_cast<edm4hep::TrackerHit3DCollection*>(coll));
           break;
         case SegmentEntry::CALORIMETER_HITS:
           convert_depos(cont, predicate, static_cast<edm4hep::CalorimeterHitCollection*>(coll));
diff --git a/DDDigi/io/DigiEdm4hepOutput.h b/DDDigi/io/DigiEdm4hepOutput.h
index 09998b70f..8711967e6 100644
--- a/DDDigi/io/DigiEdm4hepOutput.h
+++ b/DDDigi/io/DigiEdm4hepOutput.h
@@ -17,10 +17,17 @@
 #include <DDDigi/DigiOutputAction.h>
 
 /// C/C++ include files
+#if __has_include("edm4hep/TrackerHitCollection.h")
+#include <edm4hep/TrackerHitCollection.h>
+namespace edm4hep {
+  using TrackerHit3DCollection = edm4hep::TrackerHitCollection;
+}
+#else
+#include <edm4hep/TrackerHit3DCollection.h>
+#endif
 
 /// Forward declarations from edm4hep
 namespace edm4hep  {
-  class TrackerHitCollection;
   class CalorimeterHitCollection;
 }
 
@@ -35,7 +42,7 @@ namespace dd4hep {
      *  Supported output containers types are:
      *  - edm4hep::MCParticles aka "MCParticles"
      *  - edm4hep::CalorimeterHitCollection  aka "CalorimeterHits"
-     *  - edm4hep::TrackerHitCollection aka "TracketHits"
+     *  - edm4hep::TrackerHit3DCollection aka "TracketHits"
      *
      *  This entity actually is only the work dispatcher:
      *  It opens files and dumps data into
@@ -103,7 +110,7 @@ namespace dd4hep {
 
       /// Convert tracker hits to edm4hep
       template <typename T> void
-      convert_depos(const T& cont, const predicate_t& predicate, edm4hep::TrackerHitCollection* collection)  const;
+      convert_depos(const T& cont, const predicate_t& predicate, edm4hep::TrackerHit3DCollection* collection)  const;
 
       /// Convert calorimeter hits to edm4hep
       template <typename T> void
diff --git a/DDDigi/io/DigiIO.cpp b/DDDigi/io/DigiIO.cpp
index 10074ef94..e259a7865 100644
--- a/DDDigi/io/DigiIO.cpp
+++ b/DDDigi/io/DigiIO.cpp
@@ -28,7 +28,14 @@
 #include <edm4hep/SimTrackerHit.h>
 #include <edm4hep/MCParticle.h>
 #include <edm4hep/MCParticleCollection.h>
+#if __has_include("edm4hep/TrackerHitCollection.h")
 #include <edm4hep/TrackerHitCollection.h>
+namespace edm4hep {
+  using TrackerHit3DCollection = edm4hep::TrackerHitCollection;
+}
+#else
+#include <edm4hep/TrackerHit3DCollection.h>
+#endif
 #include <edm4hep/SimTrackerHitCollection.h>
 #include <edm4hep/CalorimeterHitCollection.h>
 #include <edm4hep/SimCalorimeterHitCollection.h>
@@ -224,7 +231,7 @@ namespace dd4hep {
     template <> template <> 
     void data_io<edm4hep_input>::_to_edm4hep(const std::pair<const CellID, EnergyDeposit>& dep,
 					     const std::array<float, 6>& covMat,
-					     edm4hep::TrackerHitCollection& collection,
+					     edm4hep::TrackerHit3DCollection& collection,
 					     int hit_type)
 
     {
-- 
GitLab