diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 53dea2184a53496cab2f5ed53bd99e27ed4b2cbe..9efa01917de8dd14b0339afb7526e585e69e3d40 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -12,8 +12,8 @@ variables:
   ## Other versions to be included in the container. In general these should be "master"
   ## to keep the container functionally identical to jug_xl:nightly
   JUGGLER_NPDET_VERSION: "master"
-  JUGGLER_EICD_VERSION: "master"
-  JUGGLER_EICD_REPOSITORYURL: "https://github.com/eic/eicd.git"
+  JUGGLER_EDM4EIC_VERSION: "main"
+  JUGGLER_EDM4EIC_REPOSITORYURL: "https://github.com/eic/EDM4eic.git"
 
   ## We have:
   ##   - Juggler triggers eic_container on a master pipeline
@@ -76,13 +76,13 @@ juggler:local:
     - CMAKE_CXX_STANDARD:
       - 17
   script:
-    ## first install EICD to ensure the latest version, then build juggler
+    ## first install EDM4EIC to ensure the latest version, then build juggler
     - |
-      git clone ${JUGGLER_EICD_REPOSITORYURL} /tmp/eicd
-      cd /tmp/eicd && git checkout ${JUGGLER_EICD_VERSION} && cd -
-      cmake -B /tmp/build -S /tmp/eicd -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD} -DCMAKE_INSTALL_PREFIX=/usr/local
+      git clone ${JUGGLER_EDM4EIC_REPOSITORYURL} /tmp/EDM4eic
+      cd /tmp/EDM4eic && git checkout ${JUGGLER_EDM4EIC_VERSION} && cd -
+      cmake -B /tmp/build -S /tmp/EDM4eic -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD} -DCMAKE_INSTALL_PREFIX=/usr/local
       cmake --build /tmp/build -j40 -- install
-      rm -rf /tmp/build /tmp/eicd
+      rm -rf /tmp/build /tmp/EDM4eic
     - |
       cmake -Bbuild -S. -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD} -DCMAKE_INSTALL_PREFIX=/usr/local
       cmake --build build -j20
@@ -98,7 +98,7 @@ analysis:clang-tidy:
     - juggler:local
   script:
     - |
-      run-clang-tidy-13 -p build -j20 -export-fixes clang_tidy_fixes.yml -extra-arg='-std=c++17'
+      run-clang-tidy-14 -p build -j20 -export-fixes clang_tidy_fixes.yml -extra-arg='-std=c++17'
   artifacts:
     expire_in: 1 week
     paths:
@@ -146,8 +146,8 @@ juggler:default:
                    --build-arg INTERNAL_TAG=${EIC_DEV_TAG}
                    --build-arg JUGGLER_VERSION=${CI_COMMIT_REF_NAME}
                    --build-arg NPDET_VERSION=${JUGGLER_NPDET_VERSION}
-                   --build-arg EICD_REPOSITORYURL=${JUGGLER_EICD_REPOSITORYURL}
-                   --build-arg EICD_VERSION=${JUGGLER_EICD_VERSION}
+                   --build-arg EDM4EIC_REPOSITORYURL=${JUGGLER_EDM4EIC_REPOSITORYURL}
+                   --build-arg EDM4EIC_VERSION=${JUGGLER_EDM4EIC_VERSION}
                    --build-arg DETECTOR_VERSION=${JUGGLER_DETECTOR_VERSION}
                    --build-arg IP6_VERSION=${JUGGLER_IP6_VERSION}
                    --build-arg JUG_VERSION=juggler-${INTERNAL_TAG}-$(date +%Y-%m-%d_%H-%M-%S)-$(git rev-parse HEAD)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7f178908fc48b6bae2130ae005037c0c38b234cb..0d1ddad61bac126363c7bfc173c91a8a414f284d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -51,7 +51,7 @@ endif()
 
 find_package(Microsoft.GSL CONFIG)
 
-find_package(EICD REQUIRED)
+find_package(EDM4EIC REQUIRED)
 find_package(EDM4HEP 0.4.1 REQUIRED)
 
 find_package(podio 0.14.1 REQUIRED)
diff --git a/JugBase/CMakeLists.txt b/JugBase/CMakeLists.txt
index 97bdafb59ef9817cd94dd6aec7869a853cbd01fc..4c4a98948edfe868cfb7c32965380c8d066ca28a 100644
--- a/JugBase/CMakeLists.txt
+++ b/JugBase/CMakeLists.txt
@@ -41,7 +41,7 @@ gaudi_add_module(JugBasePlugins
   EDM4HEP::edm4hep
   DD4hep::DDRec
   ActsCore ActsPluginDD4hep ActsPluginJson
-  EICD::eicd
+  EDM4EIC::edm4eic
   ${genfit2}
 )
 
diff --git a/JugBase/JugBase/Utilities/Beam.h b/JugBase/JugBase/Utilities/Beam.h
index 9895f56ab216f703a1ccffd96fdacd7e11908380..ebb94382603e50f09b76e065803cb911ad215557 100644
--- a/JugBase/JugBase/Utilities/Beam.h
+++ b/JugBase/JugBase/Utilities/Beam.h
@@ -7,7 +7,7 @@
 using ROOT::Math::PxPyPzEVector;
 
 #include "edm4hep/MCParticleCollection.h"
-#include "eicd/ReconstructedParticleCollection.h"
+#include "edm4eic/ReconstructedParticleCollection.h"
 
 namespace Jug::Base::Beam {
 
@@ -53,7 +53,7 @@ namespace Jug::Base::Beam {
     return find_first_with_status_pdg(mcparts, {1}, {11});
   }
 
-  inline auto find_first_scattered_electron(const eicd::ReconstructedParticleCollection& rcparts) {
+  inline auto find_first_scattered_electron(const edm4eic::ReconstructedParticleCollection& rcparts) {
     return find_first_with_pdg(rcparts, {11});
   }
 
diff --git a/JugDigi/CMakeLists.txt b/JugDigi/CMakeLists.txt
index 64a0749a4273b2e5691fb77010a9a4ee6c5c65c2..41d082b7ac5d9cb04e803f478fbccf499ce3cdf4 100644
--- a/JugDigi/CMakeLists.txt
+++ b/JugDigi/CMakeLists.txt
@@ -14,7 +14,7 @@ gaudi_add_module(JugDigiPlugins
   JugBase
   ROOT::Core ROOT::RIO ROOT::Tree
   EDM4HEP::edm4hep
-  EICD::eicd
+  EDM4EIC::edm4eic
 )
 
 target_include_directories(JugDigiPlugins PUBLIC
diff --git a/JugDigi/src/components/CalorimeterBirksCorr.cpp b/JugDigi/src/components/CalorimeterBirksCorr.cpp
index b42c1dd72a783c99149f088a4e70c11e44ebc4e2..392f1bfe38a2e8a0f22fac9a3f1ce1bd60525bc0 100644
--- a/JugDigi/src/components/CalorimeterBirksCorr.cpp
+++ b/JugDigi/src/components/CalorimeterBirksCorr.cpp
@@ -21,8 +21,8 @@
 
 // Event Model related classes
 #include "edm4hep/SimCalorimeterHitCollection.h"
-#include "eicd/RawCalorimeterHitCollection.h"
-#include "eicd/RawCalorimeterHitData.h"
+#include "edm4eic/RawCalorimeterHitCollection.h"
+#include "edm4eic/RawCalorimeterHitData.h"
 
 
 using namespace Gaudi::Units;
diff --git a/JugDigi/src/components/CalorimeterHitDigi.cpp b/JugDigi/src/components/CalorimeterHitDigi.cpp
index 622418954cac55d77da55a3ce981fdc3b4bc54f4..c73d608fa34d3b887b326db05cc7aa7cfe832f3b 100644
--- a/JugDigi/src/components/CalorimeterHitDigi.cpp
+++ b/JugDigi/src/components/CalorimeterHitDigi.cpp
@@ -31,8 +31,8 @@
 
 // Event Model related classes
 #include "edm4hep/SimCalorimeterHitCollection.h"
-#include "eicd/RawCalorimeterHitCollection.h"
-#include "eicd/RawCalorimeterHitData.h"
+#include "edm4eic/RawCalorimeterHitCollection.h"
+#include "edm4eic/RawCalorimeterHitData.h"
 
 
 using namespace Gaudi::Units;
@@ -80,7 +80,7 @@ namespace Jug::Digi {
 
     DataHandle<edm4hep::SimCalorimeterHitCollection> m_inputHitCollection{
       "inputHitCollection", Gaudi::DataHandle::Reader, this};
-    DataHandle<eicd::RawCalorimeterHitCollection> m_outputHitCollection{
+    DataHandle<edm4eic::RawCalorimeterHitCollection> m_outputHitCollection{
       "outputHitCollection", Gaudi::DataHandle::Writer, this};
 
     //  ill-formed: using GaudiAlgorithm::GaudiAlgorithm;
@@ -189,7 +189,7 @@ namespace Jug::Digi {
         }
         const long long tdc = std::llround((time + m_normDist() * tRes) * stepTDC);
 
-        eicd::RawCalorimeterHit rawhit(
+        edm4eic::RawCalorimeterHit rawhit(
           ahit.getCellID(),
           (adc > m_capADC.value() ? m_capADC.value() : adc),
           tdc
@@ -244,7 +244,7 @@ namespace Jug::Digi {
         unsigned long long adc     = std::llround(ped + edep * (1. + eResRel) / dyRangeADC * m_capADC);
         unsigned long long tdc     = std::llround((time + m_normDist() * tRes) * stepTDC);
 
-        eicd::RawCalorimeterHit rawhit(
+        edm4eic::RawCalorimeterHit rawhit(
           id,
           (adc > m_capADC.value() ? m_capADC.value() : adc),
           tdc
diff --git a/JugDigi/src/components/PhotoMultiplierDigi.cpp b/JugDigi/src/components/PhotoMultiplierDigi.cpp
index c5a5480c9d4adbf954a01e8a90459ae9e0dd9bf8..2fde77d49a9efbac25ae52cdc86c4c2a57ec13c0 100644
--- a/JugDigi/src/components/PhotoMultiplierDigi.cpp
+++ b/JugDigi/src/components/PhotoMultiplierDigi.cpp
@@ -23,7 +23,7 @@
 #include "JugBase/DataHandle.h"
 
 // Event Model related classes
-#include "eicd/RawPMTHitCollection.h"
+#include "edm4eic/RawPMTHitCollection.h"
 #include "edm4hep/MCParticleCollection.h"
 #include "edm4hep/SimTrackerHitCollection.h"
 
@@ -41,7 +41,7 @@ class PhotoMultiplierDigi : public GaudiAlgorithm
 public:
     DataHandle<edm4hep::SimTrackerHitCollection>
         m_inputHitCollection{"inputHitCollection", Gaudi::DataHandle::Reader, this};
-    DataHandle<eicd::RawPMTHitCollection>
+    DataHandle<edm4eic::RawPMTHitCollection>
         m_outputHitCollection{"outputHitCollection", Gaudi::DataHandle::Writer, this};
     Gaudi::Property<std::vector<std::pair<double, double>>>
         u_quantumEfficiency{this, "quantumEfficiency", {{2.6*eV, 0.3}, {7.0*eV, 0.3}}};
@@ -124,7 +124,7 @@ public:
         // build hit
         for (auto &it : hit_groups) {
             for (auto &data : it.second) {
-                eicd::RawPMTHit hit{
+                edm4eic::RawPMTHit hit{
                   it.first,
                   static_cast<uint32_t>(data.signal), 
                   static_cast<uint32_t>(data.time/(m_timeStep/ns))};
diff --git a/JugDigi/src/components/SiliconTrackerDigi.cpp b/JugDigi/src/components/SiliconTrackerDigi.cpp
index 4789ce2f04eddd4c2ac9f956d5eda264e03da1f2..d37bfec379092e15aef7e8e5877a0850516c22b9 100644
--- a/JugDigi/src/components/SiliconTrackerDigi.cpp
+++ b/JugDigi/src/components/SiliconTrackerDigi.cpp
@@ -16,8 +16,8 @@
 // edm4hep's tracker hit is the input collectiopn
 #include "edm4hep/MCParticle.h"
 #include "edm4hep/SimTrackerHitCollection.h"
-// eicd's RawTrackerHit is the output
-#include "eicd/RawTrackerHitCollection.h"
+// edm4eic's RawTrackerHit is the output
+#include "edm4eic/RawTrackerHitCollection.h"
 
 namespace Jug::Digi {
 
@@ -32,7 +32,7 @@ private:
   Rndm::Numbers m_gaussDist;
   DataHandle<edm4hep::SimTrackerHitCollection> m_inputHitCollection{"inputHitCollection", Gaudi::DataHandle::Reader,
                                                                     this};
-  DataHandle<eicd::RawTrackerHitCollection> m_outputHitCollection{"outputHitCollection", Gaudi::DataHandle::Writer,
+  DataHandle<edm4eic::RawTrackerHitCollection> m_outputHitCollection{"outputHitCollection", Gaudi::DataHandle::Writer,
                                                                   this};
 
 public:
@@ -57,7 +57,7 @@ public:
     const auto* const simhits = m_inputHitCollection.get();
     // Create output collections
     auto* rawhits = m_outputHitCollection.createAndPut();
-    // eicd::RawTrackerHitCollection* rawHitCollection = new eicd::RawTrackerHitCollection();
+    // edm4eic::RawTrackerHitCollection* rawHitCollection = new edm4eic::RawTrackerHitCollection();
     std::map<long long, int> cell_hit_map;
     for (const auto& ahit : *simhits) {
       if (msgLevel(MSG::DEBUG)) {
@@ -82,7 +82,7 @@ public:
       }
       if (cell_hit_map.count(ahit.getCellID()) == 0) {
         cell_hit_map[ahit.getCellID()] = rawhits->size();
-        eicd::RawTrackerHit rawhit(ahit.getCellID(),
+        edm4eic::RawTrackerHit rawhit(ahit.getCellID(),
                                    ahit.getMCParticle().getTime() * 1e6 + m_gaussDist() * 1e3, // ns->fs
                                    std::llround(ahit.getEDep() * 1e6));
         rawhits->push_back(rawhit);
diff --git a/JugFast/CMakeLists.txt b/JugFast/CMakeLists.txt
index 96d3ccf152d5860f6fc35036c8293d99af1af60d..91b9c9b99413d59344ccde8d56d087329b4cf229 100644
--- a/JugFast/CMakeLists.txt
+++ b/JugFast/CMakeLists.txt
@@ -14,7 +14,7 @@ gaudi_add_module(JugFastPlugins
   JugBase
   ROOT::Core ROOT::RIO ROOT::Tree
   EDM4HEP::edm4hep
-  EICD::eicd
+  EDM4EIC::edm4eic
 )
 
 target_include_directories(JugFastPlugins PUBLIC
diff --git a/JugFast/src/components/ClusterMerger.cpp b/JugFast/src/components/ClusterMerger.cpp
index ddabc9f8efb02bc2b17adf54b09934ea871e3f0b..45b47b1920c3e518148992e12db6aa15e313f2eb 100644
--- a/JugFast/src/components/ClusterMerger.cpp
+++ b/JugFast/src/components/ClusterMerger.cpp
@@ -15,9 +15,9 @@
 #include "JugBase/DataHandle.h"
 
 // Event Model related classes
-#include "eicd/ClusterCollection.h"
-#include "eicd/MCRecoClusterParticleAssociationCollection.h"
-#include "eicd/vector_utils.h"
+#include "edm4eic/ClusterCollection.h"
+#include "edm4eic/MCRecoClusterParticleAssociationCollection.h"
+#include "edm4eic/vector_utils.h"
 
 using namespace Gaudi::Units;
 
@@ -31,11 +31,11 @@ namespace Jug::Fast {
 class ClusterMerger : public GaudiAlgorithm {
 private:
   // Input
-  DataHandle<eicd::ClusterCollection> m_inputClusters{"InputClusters", Gaudi::DataHandle::Reader, this};
-  DataHandle<eicd::MCRecoClusterParticleAssociationCollection> m_inputAssociations{"InputAssociations", Gaudi::DataHandle::Reader, this};
+  DataHandle<edm4eic::ClusterCollection> m_inputClusters{"InputClusters", Gaudi::DataHandle::Reader, this};
+  DataHandle<edm4eic::MCRecoClusterParticleAssociationCollection> m_inputAssociations{"InputAssociations", Gaudi::DataHandle::Reader, this};
   // Output
-  DataHandle<eicd::ClusterCollection> m_outputClusters{"OutputClusters", Gaudi::DataHandle::Writer, this};
-  DataHandle<eicd::MCRecoClusterParticleAssociationCollection> m_outputAssociations{"OutputAssociations", Gaudi::DataHandle::Writer, this};
+  DataHandle<edm4eic::ClusterCollection> m_outputClusters{"OutputClusters", Gaudi::DataHandle::Writer, this};
+  DataHandle<edm4eic::MCRecoClusterParticleAssociationCollection> m_outputAssociations{"OutputAssociations", Gaudi::DataHandle::Writer, this};
 public:
   ClusterMerger(const std::string& name, ISvcLocator* svcLoc)
       : GaudiAlgorithm(name, svcLoc) {
@@ -142,12 +142,12 @@ public:
   }
 
   // get a map of MCParticle index--> std::vector<Cluster> for clusters that belong together
-  std::map<int, std::vector<eicd::Cluster>> indexedClusterLists(
-      const eicd::ClusterCollection& clusters,
-      const eicd::MCRecoClusterParticleAssociationCollection& associations
+  std::map<int, std::vector<edm4eic::Cluster>> indexedClusterLists(
+      const edm4eic::ClusterCollection& clusters,
+      const edm4eic::MCRecoClusterParticleAssociationCollection& associations
   ) const {
 
-    std::map<int, std::vector<eicd::Cluster>> matched = {};
+    std::map<int, std::vector<edm4eic::Cluster>> matched = {};
 
     // loop over clusters
     for (const auto& cluster : clusters) {
diff --git a/JugFast/src/components/InclusiveKinematicsTruth.cpp b/JugFast/src/components/InclusiveKinematicsTruth.cpp
index 0f35704f10c1df774371f0c4c43c8f93b66fbc9c..48f7e34811a7d1346df06add7a42466968a2e56c 100644
--- a/JugFast/src/components/InclusiveKinematicsTruth.cpp
+++ b/JugFast/src/components/InclusiveKinematicsTruth.cpp
@@ -20,9 +20,9 @@ using ROOT::Math::PxPyPzEVector;
 
 // Event Model related classes
 #include "edm4hep/MCParticleCollection.h"
-#include "eicd/InclusiveKinematicsCollection.h"
+#include "edm4eic/InclusiveKinematicsCollection.h"
 
-#include "eicd/vector_utils.h"
+#include "edm4eic/vector_utils.h"
 
 namespace Jug::Fast {
 
@@ -32,7 +32,7 @@ private:
     "inputMCParticles",
     Gaudi::DataHandle::Reader,
     this};
-  DataHandle<eicd::InclusiveKinematicsCollection> m_outputInclusiveKinematicsCollection{
+  DataHandle<edm4eic::InclusiveKinematicsCollection> m_outputInclusiveKinematicsCollection{
     "outputInclusiveKinematics",
     Gaudi::DataHandle::Writer,
     this};
@@ -89,7 +89,7 @@ public:
       return StatusCode::SUCCESS;
     }
     const auto ei_p = ei_coll[0].getMomentum();
-    const auto ei_p_mag = eicd::magnitude(ei_p);
+    const auto ei_p_mag = edm4eic::magnitude(ei_p);
     const auto ei_mass = m_electron;
     const PxPyPzEVector ei(ei_p.x, ei_p.y, ei_p.z, std::hypot(ei_p_mag, ei_mass));
 
@@ -102,7 +102,7 @@ public:
       return StatusCode::SUCCESS;
     }
     const auto pi_p = pi_coll[0].getMomentum();
-    const auto pi_p_mag = eicd::magnitude(pi_p);
+    const auto pi_p_mag = edm4eic::magnitude(pi_p);
     const auto pi_mass = pi_coll[0].getPDG() == 2212 ? m_proton : m_neutron;
     const PxPyPzEVector pi(pi_p.x, pi_p.y, pi_p.z, std::hypot(pi_p_mag, pi_mass));
 
@@ -119,7 +119,7 @@ public:
       return StatusCode::SUCCESS;
     }
     const auto ef_p = ef_coll[0].getMomentum();
-    const auto ef_p_mag = eicd::magnitude(ef_p);
+    const auto ef_p_mag = edm4eic::magnitude(ef_p);
     const auto ef_mass = m_electron;
     const PxPyPzEVector ef(ef_p.x, ef_p.y, ef_p.z, std::hypot(ef_p_mag, ef_mass));
 
diff --git a/JugFast/src/components/MC2SmearedParticle.cpp b/JugFast/src/components/MC2SmearedParticle.cpp
index b3e691d9f537c4f7bf79529b23aa7ab365c869ac..6968e37fde8b36293b063a13ca3e5dd65e4f543f 100644
--- a/JugFast/src/components/MC2SmearedParticle.cpp
+++ b/JugFast/src/components/MC2SmearedParticle.cpp
@@ -13,14 +13,14 @@
 
 // Event Model related classes
 #include "edm4hep/MCParticleCollection.h"
-#include "eicd/ReconstructedParticleCollection.h"
+#include "edm4eic/ReconstructedParticleCollection.h"
 
 namespace Jug::Fast {
 
 class MC2SmearedParticle : public GaudiAlgorithm {
 private:
   DataHandle<edm4hep::MCParticleCollection> m_inputMCParticles{"MCParticles", Gaudi::DataHandle::Reader, this};
-  DataHandle<eicd::ReconstructedParticleCollection> m_outputParticles{"SmearedReconstructedParticles",
+  DataHandle<edm4eic::ReconstructedParticleCollection> m_outputParticles{"SmearedReconstructedParticles",
                                                                       Gaudi::DataHandle::Writer, this};
   Rndm::Numbers m_gaussDist;
   Gaudi::Property<double> m_smearing{this, "smearing", 0.01 /* 1 percent*/};
@@ -62,7 +62,7 @@ public:
       const auto pgen     = std::hypot(pvec.x, pvec.y, pvec.z);
       const auto momentum = pgen * m_gaussDist();
       // make sure we keep energy consistent
-      using MomType        = decltype(eicd::ReconstructedParticle().getMomentum().x);
+      using MomType        = decltype(edm4eic::ReconstructedParticle().getMomentum().x);
       const MomType energy = std::sqrt(p.getEnergy() * p.getEnergy() - pgen * pgen + momentum * momentum);
       const MomType px     = p.getMomentum().x * momentum / pgen;
       const MomType py     = p.getMomentum().y * momentum / pgen;
diff --git a/JugFast/src/components/MatchClusters.cpp b/JugFast/src/components/MatchClusters.cpp
index 547d8af8e3e71a74343f6f98a82b1020315e6588..2a888b3ba5654e8e93df5170c4256f7f78eea985 100644
--- a/JugFast/src/components/MatchClusters.cpp
+++ b/JugFast/src/components/MatchClusters.cpp
@@ -20,12 +20,12 @@
 
 // Event Model related classes
 #include "edm4hep/MCParticleCollection.h"
-#include "eicd/ClusterCollection.h"
-#include "eicd/MCRecoClusterParticleAssociationCollection.h"
-#include "eicd/MCRecoParticleAssociationCollection.h"
-#include "eicd/ReconstructedParticleCollection.h"
-#include "eicd/TrackParametersCollection.h"
-#include "eicd/vector_utils.h"
+#include "edm4eic/ClusterCollection.h"
+#include "edm4eic/MCRecoClusterParticleAssociationCollection.h"
+#include "edm4eic/MCRecoParticleAssociationCollection.h"
+#include "edm4eic/ReconstructedParticleCollection.h"
+#include "edm4eic/TrackParametersCollection.h"
+#include "edm4eic/vector_utils.h"
 
 namespace Jug::Fast {
 
@@ -33,19 +33,19 @@ class MatchClusters : public GaudiAlgorithm {
 private:
   // input data
   DataHandle<edm4hep::MCParticleCollection> m_inputMCParticles{"MCParticles", Gaudi::DataHandle::Reader, this};
-  DataHandle<eicd::ReconstructedParticleCollection> m_inputParticles{"ReconstructedChargedParticles",
+  DataHandle<edm4eic::ReconstructedParticleCollection> m_inputParticles{"ReconstructedChargedParticles",
                                                                     Gaudi::DataHandle::Reader, this};
-  DataHandle<eicd::MCRecoParticleAssociationCollection> m_inputParticlesAssoc{"ReconstructedChargedParticlesAssoc",
+  DataHandle<edm4eic::MCRecoParticleAssociationCollection> m_inputParticlesAssoc{"ReconstructedChargedParticlesAssoc",
                                                                     Gaudi::DataHandle::Reader, this};
   Gaudi::Property<std::vector<std::string>> m_inputClusters{this, "inputClusters", {}, "Clusters to be aggregated"};
   Gaudi::Property<std::vector<std::string>> m_inputClustersAssoc{this, "inputClustersAssoc", {}, "Cluster associations to be aggregated"};
-  std::vector<DataHandle<eicd::ClusterCollection>*> m_inputClustersCollections;
-  std::vector<DataHandle<eicd::MCRecoClusterParticleAssociationCollection>*> m_inputClustersAssocCollections;
+  std::vector<DataHandle<edm4eic::ClusterCollection>*> m_inputClustersCollections;
+  std::vector<DataHandle<edm4eic::MCRecoClusterParticleAssociationCollection>*> m_inputClustersAssocCollections;
 
   // output data
-  DataHandle<eicd::ReconstructedParticleCollection> m_outputParticles{"ReconstructedParticles",
+  DataHandle<edm4eic::ReconstructedParticleCollection> m_outputParticles{"ReconstructedParticles",
                                                                      Gaudi::DataHandle::Writer, this};
-  DataHandle<eicd::MCRecoParticleAssociationCollection> m_outputParticlesAssoc{"ReconstructedParticlesAssoc",
+  DataHandle<edm4eic::MCRecoParticleAssociationCollection> m_outputParticlesAssoc{"ReconstructedParticlesAssoc",
                                                                      Gaudi::DataHandle::Writer, this};
 
 public:
@@ -183,32 +183,32 @@ public:
   }
 
 private:
-  std::vector<DataHandle<eicd::ClusterCollection>*> getClusterCollections(const std::vector<std::string>& cols) {
-    std::vector<DataHandle<eicd::ClusterCollection>*> ret;
+  std::vector<DataHandle<edm4eic::ClusterCollection>*> getClusterCollections(const std::vector<std::string>& cols) {
+    std::vector<DataHandle<edm4eic::ClusterCollection>*> ret;
     for (const auto& colname : cols) {
       debug() << "initializing cluster collection: " << colname << endmsg;
-      ret.push_back(new DataHandle<eicd::ClusterCollection>{colname, Gaudi::DataHandle::Reader, this});
+      ret.push_back(new DataHandle<edm4eic::ClusterCollection>{colname, Gaudi::DataHandle::Reader, this});
     }
     return ret;
   }
 
-  std::vector<DataHandle<eicd::MCRecoClusterParticleAssociationCollection>*> getClusterAssociations(const std::vector<std::string>& cols) {
-    std::vector<DataHandle<eicd::MCRecoClusterParticleAssociationCollection>*> ret;
+  std::vector<DataHandle<edm4eic::MCRecoClusterParticleAssociationCollection>*> getClusterAssociations(const std::vector<std::string>& cols) {
+    std::vector<DataHandle<edm4eic::MCRecoClusterParticleAssociationCollection>*> ret;
     for (const auto& colname : cols) {
       debug() << "initializing cluster association collection: " << colname << endmsg;
-      ret.push_back(new DataHandle<eicd::MCRecoClusterParticleAssociationCollection>{colname, Gaudi::DataHandle::Reader, this});
+      ret.push_back(new DataHandle<edm4eic::MCRecoClusterParticleAssociationCollection>{colname, Gaudi::DataHandle::Reader, this});
     }
     return ret;
   }
 
   // get a map of mcID --> cluster
   // input: cluster_collections --> list of handles to all cluster collections
-  std::map<int, eicd::Cluster>
+  std::map<int, edm4eic::Cluster>
   indexedClusters(
-      const std::vector<DataHandle<eicd::ClusterCollection>*>& cluster_collections,
-      const std::vector<DataHandle<eicd::MCRecoClusterParticleAssociationCollection>*>& associations_collections
+      const std::vector<DataHandle<edm4eic::ClusterCollection>*>& cluster_collections,
+      const std::vector<DataHandle<edm4eic::MCRecoClusterParticleAssociationCollection>*>& associations_collections
   ) const {
-    std::map<int, eicd::Cluster> matched = {};
+    std::map<int, edm4eic::Cluster> matched = {};
 
     // loop over cluster collections
     for (const auto& cluster_handle : cluster_collections) {
@@ -266,14 +266,14 @@ private:
 
   // reconstruct a neutral cluster
   // (for now assuming the vertex is at (0,0,0))
-  eicd::ReconstructedParticle reconstruct_neutral(const eicd::Cluster& clus, const double mass,
+  edm4eic::ReconstructedParticle reconstruct_neutral(const edm4eic::Cluster& clus, const double mass,
                                                  const int32_t pdg) const {
     const float energy = clus.getEnergy();
     const float p = energy < mass ? 0 : std::sqrt(energy * energy - mass * mass);
     const auto position = clus.getPosition();
-    const auto momentum = p * (position / eicd::magnitude(position));
+    const auto momentum = p * (position / edm4eic::magnitude(position));
     // setup our particle
-    eicd::MutableReconstructedParticle part;
+    edm4eic::MutableReconstructedParticle part;
     part.setMomentum(momentum);
     part.setPDG(pdg);
     part.setCharge(0);
diff --git a/JugFast/src/components/ParticlesWithTruthPID.cpp b/JugFast/src/components/ParticlesWithTruthPID.cpp
index c09a18e8e3c7de7fd410a8f1698d60877b0af7c2..40177ae4900195466dc30afa243183977bcf9a01 100644
--- a/JugFast/src/components/ParticlesWithTruthPID.cpp
+++ b/JugFast/src/components/ParticlesWithTruthPID.cpp
@@ -16,21 +16,21 @@
 
 // Event Model related classes
 #include "edm4hep/MCParticleCollection.h"
-#include "eicd/MCRecoParticleAssociationCollection.h"
-#include "eicd/ReconstructedParticleCollection.h"
-#include "eicd/TrackParametersCollection.h"
-#include "eicd/vector_utils.h"
+#include "edm4eic/MCRecoParticleAssociationCollection.h"
+#include "edm4eic/ReconstructedParticleCollection.h"
+#include "edm4eic/TrackParametersCollection.h"
+#include "edm4eic/vector_utils.h"
 
 namespace Jug::Fast {
 
 class ParticlesWithTruthPID : public GaudiAlgorithm {
 private:
   DataHandle<edm4hep::MCParticleCollection> m_inputTruthCollection{"inputMCParticles", Gaudi::DataHandle::Reader, this};
-  DataHandle<eicd::TrackParametersCollection> m_inputTrackCollection{"inputTrackParameters", Gaudi::DataHandle::Reader,
+  DataHandle<edm4eic::TrackParametersCollection> m_inputTrackCollection{"inputTrackParameters", Gaudi::DataHandle::Reader,
                                                                      this};
-  DataHandle<eicd::ReconstructedParticleCollection> m_outputParticleCollection{"ReconstructedParticles",
+  DataHandle<edm4eic::ReconstructedParticleCollection> m_outputParticleCollection{"ReconstructedParticles",
                                                                                Gaudi::DataHandle::Writer, this};
-  DataHandle<eicd::MCRecoParticleAssociationCollection> m_outputAssocCollection{"MCRecoParticleAssociation",
+  DataHandle<edm4eic::MCRecoParticleAssociationCollection> m_outputAssocCollection{"MCRecoParticleAssociation",
                                                                                 Gaudi::DataHandle::Writer, this};
 
   // Matching momentum tolerance requires 10% by default;
@@ -63,7 +63,7 @@ public:
     const double sinPhiOver2Tolerance = sin(0.5 * m_phiTolerance);
     std::vector<bool> consumed(mc.size(), false);
     for (const auto& trk : tracks) {
-      const auto mom        = eicd::sphericalToVector(1.0 / std::abs(trk.getQOverP()), trk.getTheta(), trk.getPhi());
+      const auto mom        = edm4eic::sphericalToVector(1.0 / std::abs(trk.getQOverP()), trk.getTheta(), trk.getPhi());
       const auto charge_rec = trk.getCharge();
       // utility variables for matching
       int best_match    = -1;
@@ -81,11 +81,11 @@ public:
         const auto p_mag    = std::hypot(p.x, p.y, p.z);
         const auto p_phi    = std::atan2(p.y, p.x);
         const auto p_eta    = std::atanh(p.z / p_mag);
-        const double dp_rel = std::abs((eicd::magnitude(mom) - p_mag) / p_mag);
+        const double dp_rel = std::abs((edm4eic::magnitude(mom) - p_mag) / p_mag);
         // check the tolerance for sin(dphi/2) to avoid the hemisphere problem and allow
         // for phi rollovers
-        const double dsphi = std::abs(sin(0.5 * (eicd::angleAzimuthal(mom) - p_phi)));
-        const double deta  = std::abs((eicd::eta(mom) - p_eta));
+        const double dsphi = std::abs(sin(0.5 * (edm4eic::angleAzimuthal(mom) - p_phi)));
+        const double deta  = std::abs((edm4eic::eta(mom) - p_eta));
 
         if (dp_rel < m_pRelativeTolerance && deta < m_etaTolerance && dsphi < sinPhiOver2Tolerance) {
           const double delta =
@@ -112,7 +112,7 @@ public:
         mass = mcpart.getMass();
       }
       rec_part.setType(static_cast<int16_t>(best_match >= 0 ? 0 : -1)); // @TODO: determine type codes
-      rec_part.setEnergy(std::hypot(eicd::magnitude(mom), mass));
+      rec_part.setEnergy(std::hypot(edm4eic::magnitude(mom), mass));
       rec_part.setMomentum(mom);
       rec_part.setReferencePoint(referencePoint);
       rec_part.setCharge(charge_rec);
@@ -133,20 +133,20 @@ public:
         if (best_match > 0) {
           const auto& mcpart = mc[best_match];
           debug() << fmt::format("Matched track with MC particle {}\n", best_match) << endmsg;
-          debug() << fmt::format("  - Track: (mom: {}, theta: {}, phi: {}, charge: {})", eicd::magnitude(mom),
-                                 eicd::anglePolar(mom), eicd::angleAzimuthal(mom), charge_rec)
+          debug() << fmt::format("  - Track: (mom: {}, theta: {}, phi: {}, charge: {})", edm4eic::magnitude(mom),
+                                 edm4eic::anglePolar(mom), edm4eic::angleAzimuthal(mom), charge_rec)
                   << endmsg;
           const auto& p      = mcpart.getMomentum();
-          const auto p_mag   = eicd::magnitude(p);
-          const auto p_phi   = eicd::angleAzimuthal(p);
-          const auto p_theta = eicd::anglePolar(p);
+          const auto p_mag   = edm4eic::magnitude(p);
+          const auto p_phi   = edm4eic::angleAzimuthal(p);
+          const auto p_theta = edm4eic::anglePolar(p);
           debug() << fmt::format("  - MC particle: (mom: {}, theta: {}, phi: {}, charge: {}, type: {}", p_mag, p_theta,
                                  p_phi, mcpart.getCharge(), mcpart.getPDG())
                   << endmsg;
         } else {
           debug() << fmt::format("Did not find a good match for track \n") << endmsg;
-          debug() << fmt::format("  - Track: (mom: {}, theta: {}, phi: {}, charge: {})", eicd::magnitude(mom),
-                                 eicd::anglePolar(mom), eicd::angleAzimuthal(mom), charge_rec)
+          debug() << fmt::format("  - Track: (mom: {}, theta: {}, phi: {}, charge: {})", edm4eic::magnitude(mom),
+                                 edm4eic::anglePolar(mom), edm4eic::angleAzimuthal(mom), charge_rec)
                   << endmsg;
         }
       }
diff --git a/JugFast/src/components/SmearedFarForwardParticles.cpp b/JugFast/src/components/SmearedFarForwardParticles.cpp
index 629c1d6cb750a920aac5867f20219f3c6d9c3f45..bdebe27536313381148cf0665bada6a64f6bf667 100644
--- a/JugFast/src/components/SmearedFarForwardParticles.cpp
+++ b/JugFast/src/components/SmearedFarForwardParticles.cpp
@@ -15,9 +15,9 @@
 
 // Event Model related classes
 #include "edm4hep/MCParticleCollection.h"
-#include "eicd/MCRecoParticleAssociationCollection.h"
-#include "eicd/ReconstructedParticleCollection.h"
-#include "eicd/vector_utils.h"
+#include "edm4eic/MCRecoParticleAssociationCollection.h"
+#include "edm4eic/ReconstructedParticleCollection.h"
+#include "edm4eic/vector_utils.h"
 
 namespace {
 enum DetectorTags { kTagB0 = 1, kTagRP = 2, kTagOMD = 3, kTagZDC = 4 };
@@ -28,9 +28,9 @@ namespace Jug::Fast {
 class SmearedFarForwardParticles : public GaudiAlgorithm {
 private:
   DataHandle<edm4hep::MCParticleCollection> m_inputMCParticles{"inputMCParticles", Gaudi::DataHandle::Reader, this};
-  DataHandle<eicd::ReconstructedParticleCollection> m_outputParticles{"SmearedFarForwardParticles",
+  DataHandle<edm4eic::ReconstructedParticleCollection> m_outputParticles{"SmearedFarForwardParticles",
                                                                       Gaudi::DataHandle::Writer, this};
-  DataHandle<eicd::MCRecoParticleAssociationCollection> m_outputAssocCollection{"MCRecoParticleAssociation",
+  DataHandle<edm4eic::MCRecoParticleAssociationCollection> m_outputAssocCollection{"MCRecoParticleAssociation",
                                                                                 Gaudi::DataHandle::Writer, this};
 
   Gaudi::Property<bool> m_enableZDC{this, "enableZDC", true};
@@ -66,8 +66,8 @@ private:
 
   Rndm::Numbers m_gaussDist;
 
-  using RecPart = eicd::MutableReconstructedParticle;
-  using Assoc   = eicd::MutableMCRecoParticleAssociation;
+  using RecPart = edm4eic::MutableReconstructedParticle;
+  using Assoc   = edm4eic::MutableMCRecoParticleAssociation;
   using RecData = std::pair<RecPart, Assoc>;
 
 public:
@@ -160,8 +160,8 @@ private:
         continue;
       }
       // only 0-->4.5 mrad
-      const double mom_ion_theta = eicd::anglePolar(mom_ion);
-      const double mom_ion_phi   = eicd::angleAzimuthal(mom_ion);
+      const double mom_ion_theta = edm4eic::anglePolar(mom_ion);
+      const double mom_ion_phi   = edm4eic::angleAzimuthal(mom_ion);
       if (mom_ion_theta > 4.5 / 1000.) {
         continue;
       }
@@ -192,7 +192,7 @@ private:
       const double phis = phi + dphi;
       const double moms = sqrt(Es * Es - part.getMass() * part.getMass());
       // now cast back into float
-      const auto mom3s_ion = eicd::sphericalToVector(moms, ths, phis);
+      const auto mom3s_ion = edm4eic::sphericalToVector(moms, ths, phis);
       const auto mom3s     = rotateIonToLabDirection(mom3s_ion);
       RecPart rec_part;
       rec_part.setType(kTagZDC);
@@ -220,8 +220,8 @@ private:
         debug()
             << fmt::format(
                    "Found ZDC particle: {}, Etrue: {}, Emeas: {}, ptrue: {}, pmeas: {}, theta_true: {}, theta_meas: {}",
-                   part.getPDG(), E, rec_part.getEnergy(), part_p_mag, eicd::magnitude(rec_part.getMomentum()), th,
-                   eicd::anglePolar(rec_part.getMomentum()))
+                   part.getPDG(), E, rec_part.getEnergy(), part_p_mag, edm4eic::magnitude(rec_part.getMomentum()), th,
+                   edm4eic::anglePolar(rec_part.getMomentum()))
             << endmsg;
       }
     }
@@ -245,7 +245,7 @@ private:
       }
       // only 6-->20 mrad
       const auto mom_ion = removeCrossingAngle(part.getMomentum()); // rotateLabToIonDirection(part.getMomentum());
-      const auto mom_ion_theta = eicd::anglePolar(mom_ion);
+      const auto mom_ion_theta = edm4eic::anglePolar(mom_ion);
       if (mom_ion_theta < m_thetaMinB0 || mom_ion_theta > m_thetaMaxB0) {
         continue;
       }
@@ -259,14 +259,14 @@ private:
       rc.emplace_back(rc_part, assoc);
       if (msgLevel(MSG::DEBUG)) {
         const auto& part_p      = part.getMomentum();
-        const auto part_p_pt    = eicd::magnitudeTransverse(part_p);
-        const auto part_p_mag   = eicd::magnitude(part_p);
-        const auto part_p_theta = eicd::anglePolar(part_p);
+        const auto part_p_pt    = edm4eic::magnitudeTransverse(part_p);
+        const auto part_p_mag   = edm4eic::magnitude(part_p);
+        const auto part_p_theta = edm4eic::anglePolar(part_p);
         debug() << fmt::format("Found B0 particle: {}, ptrue: {}, pmeas: {}, pttrue: {}, ptmeas: {}, theta_true: {}, "
                                "theta_meas: {}",
-                               part.getPDG(), part_p_mag, eicd::magnitude(rc_part.momentum()), part_p_pt,
-                               eicd::magnitudeTransverse(rc_part.momentum()), part_p_theta,
-                               eicd::anglePolar(rc_part.momentum()))
+                               part.getPDG(), part_p_mag, edm4eic::magnitude(rc_part.momentum()), part_p_pt,
+                               edm4eic::magnitudeTransverse(rc_part.momentum()), part_p_theta,
+                               edm4eic::anglePolar(rc_part.momentum()))
                 << endmsg;
       }
     }
@@ -288,7 +288,7 @@ private:
         continue;
       }
       const auto mom_ion = removeCrossingAngle(part.getMomentum()); // rotateLabToIonDirection(part.getMomentum());
-      const auto mom_ion_theta = eicd::anglePolar(mom_ion);
+      const auto mom_ion_theta = edm4eic::anglePolar(mom_ion);
       if (mom_ion_theta < m_thetaMinRP || mom_ion_theta > m_thetaMaxRP ||
           mom_ion.z < m_pMinRigidityRP * ionBeamEnergy) {
         continue;
@@ -298,14 +298,14 @@ private:
       rc.emplace_back(rc_part, assoc);
       if (msgLevel(MSG::DEBUG)) {
         const auto& part_p      = part.getMomentum();
-        const auto part_p_pt    = eicd::magnitudeTransverse(part_p);
-        const auto part_p_mag   = eicd::magnitude(part_p);
-        const auto part_p_theta = eicd::anglePolar(part_p);
+        const auto part_p_pt    = edm4eic::magnitudeTransverse(part_p);
+        const auto part_p_mag   = edm4eic::magnitude(part_p);
+        const auto part_p_theta = edm4eic::anglePolar(part_p);
         debug() << fmt::format("Found RP particle: {}, ptrue: {}, pmeas: {}, pttrue: {}, ptmeas: {}, theta_true: {}, "
                                "theta_meas: {}",
-                               part.getPDG(), part_p_mag, eicd::magnitude(rc_part.momentum()), part_p_pt,
-                               eicd::magnitudeTransverse(rc_part.momentum()), part_p_theta,
-                               eicd::anglePolar(rc_part.momentum()))
+                               part.getPDG(), part_p_mag, edm4eic::magnitude(rc_part.momentum()), part_p_pt,
+                               edm4eic::magnitudeTransverse(rc_part.momentum()), part_p_theta,
+                               edm4eic::anglePolar(rc_part.momentum()))
                 << endmsg;
       }
     }
@@ -334,14 +334,14 @@ private:
       rc.emplace_back(rc_part, assoc);
       if (msgLevel(MSG::DEBUG)) {
         const auto& part_p      = part.getMomentum();
-        const auto part_p_pt    = eicd::magnitudeTransverse(part_p);
-        const auto part_p_mag   = eicd::magnitude(part_p);
-        const auto part_p_theta = eicd::anglePolar(part_p);
+        const auto part_p_pt    = edm4eic::magnitudeTransverse(part_p);
+        const auto part_p_mag   = edm4eic::magnitude(part_p);
+        const auto part_p_theta = edm4eic::anglePolar(part_p);
         debug() << fmt::format("Found OMD particle: {}, ptrue: {}, pmeas: {}, pttrue: {}, ptmeas: {}, theta_true: {}, "
                                "theta_meas: {}",
-                               part.getPDG(), part_p_mag, eicd::magnitude(rc_part.momentum()), part_p_pt,
-                               eicd::magnitudeTransverse(rc_part.momentum()), part_p_theta,
-                               eicd::anglePolar(rc_part.momentum()))
+                               part.getPDG(), part_p_mag, edm4eic::magnitude(rc_part.momentum()), part_p_pt,
+                               edm4eic::magnitudeTransverse(rc_part.momentum()), part_p_theta,
+                               edm4eic::anglePolar(rc_part.momentum()))
                 << endmsg;
       }
     }
@@ -371,7 +371,7 @@ private:
     // And build our 3-vector
     const edm4hep::Vector3f psmear_ion{static_cast<float>(pxs), static_cast<float>(pys), static_cast<float>(pzs)};
     const auto psmear = rotateIonToLabDirection(psmear_ion);
-    eicd::MutableReconstructedParticle rec_part;
+    edm4eic::MutableReconstructedParticle rec_part;
     rec_part.setType(-1);
     rec_part.setEnergy(std::hypot(ps, part.getMass()));
     rec_part.setMomentum({psmear.x, psmear.y, psmear.z});
diff --git a/JugFast/src/components/TruthClustering.cpp b/JugFast/src/components/TruthClustering.cpp
index 35ce7eaf00661815373703a903fe51521cf7a0a2..7b9e49d8a12fb1a9a27f8e98517385b78ef748f5 100644
--- a/JugFast/src/components/TruthClustering.cpp
+++ b/JugFast/src/components/TruthClustering.cpp
@@ -21,10 +21,10 @@
 // Event Model related classes
 #include "edm4hep/MCParticle.h"
 #include "edm4hep/SimCalorimeterHitCollection.h"
-#include "eicd/CalorimeterHitCollection.h"
-#include "eicd/ClusterCollection.h"
-#include "eicd/ProtoClusterCollection.h"
-#include "eicd/RawCalorimeterHitCollection.h"
+#include "edm4eic/CalorimeterHitCollection.h"
+#include "edm4eic/ClusterCollection.h"
+#include "edm4eic/ProtoClusterCollection.h"
+#include "edm4eic/RawCalorimeterHitCollection.h"
 
 using namespace Gaudi::Units;
 
@@ -36,9 +36,9 @@ namespace Jug::Fast {
  */
 class TruthClustering : public GaudiAlgorithm {
 private:
-  DataHandle<eicd::CalorimeterHitCollection> m_inputHits{"inputHits", Gaudi::DataHandle::Reader, this};
+  DataHandle<edm4eic::CalorimeterHitCollection> m_inputHits{"inputHits", Gaudi::DataHandle::Reader, this};
   DataHandle<edm4hep::SimCalorimeterHitCollection> m_mcHits{"mcHits", Gaudi::DataHandle::Reader, this};
-  DataHandle<eicd::ProtoClusterCollection> m_outputProtoClusters{"outputProtoClusters", Gaudi::DataHandle::Writer, this};
+  DataHandle<edm4eic::ProtoClusterCollection> m_outputProtoClusters{"outputProtoClusters", Gaudi::DataHandle::Writer, this};
 
 public:
   TruthClustering(const std::string& name, ISvcLocator* svcLoc)
diff --git a/JugFast/src/components/TruthEnergyPositionClusterMerger.cpp b/JugFast/src/components/TruthEnergyPositionClusterMerger.cpp
index 091cdc27c4cd9bff93cc077154071112ca478032..a743c83246a4a4a177ec472ae5ebcace09a70ce3 100644
--- a/JugFast/src/components/TruthEnergyPositionClusterMerger.cpp
+++ b/JugFast/src/components/TruthEnergyPositionClusterMerger.cpp
@@ -16,9 +16,9 @@
 
 // Event Model related classes
 #include "edm4hep/MCParticleCollection.h"
-#include "eicd/ClusterCollection.h"
-#include "eicd/MCRecoClusterParticleAssociationCollection.h"
-#include <eicd/vector_utils.h>
+#include "edm4eic/ClusterCollection.h"
+#include "edm4eic/MCRecoClusterParticleAssociationCollection.h"
+#include <edm4eic/vector_utils.h>
 
 using namespace Gaudi::Units;
 
@@ -36,13 +36,13 @@ class TruthEnergyPositionClusterMerger : public GaudiAlgorithm {
 private:
   // Input
   DataHandle<edm4hep::MCParticleCollection> m_inputMCParticles{"MCParticles", Gaudi::DataHandle::Reader, this};
-  DataHandle<eicd::ClusterCollection> m_energyClusters{"EnergyClusters", Gaudi::DataHandle::Reader, this};
-  DataHandle<eicd::MCRecoClusterParticleAssociationCollection> m_energyAssociations{"EnergyAssociations", Gaudi::DataHandle::Reader, this};
-  DataHandle<eicd::ClusterCollection> m_positionClusters{"PositionClusters", Gaudi::DataHandle::Reader, this};
-  DataHandle<eicd::MCRecoClusterParticleAssociationCollection> m_positionAssociations{"PositionAssociations", Gaudi::DataHandle::Reader, this};
+  DataHandle<edm4eic::ClusterCollection> m_energyClusters{"EnergyClusters", Gaudi::DataHandle::Reader, this};
+  DataHandle<edm4eic::MCRecoClusterParticleAssociationCollection> m_energyAssociations{"EnergyAssociations", Gaudi::DataHandle::Reader, this};
+  DataHandle<edm4eic::ClusterCollection> m_positionClusters{"PositionClusters", Gaudi::DataHandle::Reader, this};
+  DataHandle<edm4eic::MCRecoClusterParticleAssociationCollection> m_positionAssociations{"PositionAssociations", Gaudi::DataHandle::Reader, this};
   // Output
-  DataHandle<eicd::ClusterCollection> m_outputClusters{"OutputClusters", Gaudi::DataHandle::Writer, this};
-  DataHandle<eicd::MCRecoClusterParticleAssociationCollection> m_outputAssociations{"OutputAssociations", Gaudi::DataHandle::Writer, this};
+  DataHandle<edm4eic::ClusterCollection> m_outputClusters{"OutputClusters", Gaudi::DataHandle::Writer, this};
+  DataHandle<edm4eic::MCRecoClusterParticleAssociationCollection> m_outputAssociations{"OutputAssociations", Gaudi::DataHandle::Writer, this};
 
 public:
   TruthEnergyPositionClusterMerger(const std::string& name, ISvcLocator* svcLoc)
@@ -121,7 +121,7 @@ public:
         }
 
         // set association
-        eicd::MutableMCRecoClusterParticleAssociation clusterassoc;
+        edm4eic::MutableMCRecoClusterParticleAssociation clusterassoc;
         clusterassoc.setRecID(new_clus.getObjectID().index);
         clusterassoc.setSimID(mcID);
         clusterassoc.setWeight(1.0);
@@ -141,7 +141,7 @@ public:
         merged_clus.push_back(new_clus);
 
         // set association
-        eicd::MutableMCRecoClusterParticleAssociation clusterassoc;
+        edm4eic::MutableMCRecoClusterParticleAssociation clusterassoc;
         clusterassoc.setRecID(new_clus.getObjectID().index);
         clusterassoc.setSimID(mcID);
         clusterassoc.setWeight(1.0);
@@ -167,7 +167,7 @@ public:
       new_clus.setTime(eclus.getTime());
       new_clus.setNhits(eclus.getNhits());
       // use nominal radius of 110cm, and use start vertex theta and phi
-      new_clus.setPosition(eicd::sphericalToVector(110.*cm, theta, phi));
+      new_clus.setPosition(edm4eic::sphericalToVector(110.*cm, theta, phi));
       new_clus.addToClusters(eclus);
       if (msgLevel(MSG::DEBUG)) {
         debug() << " --> Processing energy cluster " << eclus.id() << ", mcID: " << mcID << ", energy: " << eclus.getEnergy()
@@ -176,7 +176,7 @@ public:
       }
 
       // set association
-      eicd::MutableMCRecoClusterParticleAssociation clusterassoc;
+      edm4eic::MutableMCRecoClusterParticleAssociation clusterassoc;
       clusterassoc.setRecID(new_clus.getObjectID().index);
       clusterassoc.setSimID(mcID);
       clusterassoc.setWeight(1.0);
@@ -191,12 +191,12 @@ public:
 
   // get a map of MCParticle index --> cluster
   // input: cluster_collections --> list of handles to all cluster collections
-  std::map<int, eicd::Cluster> indexedClusters(
-      const eicd::ClusterCollection& clusters,
-      const eicd::MCRecoClusterParticleAssociationCollection& associations
+  std::map<int, edm4eic::Cluster> indexedClusters(
+      const edm4eic::ClusterCollection& clusters,
+      const edm4eic::MCRecoClusterParticleAssociationCollection& associations
   ) const {
 
-    std::map<int, eicd::Cluster> matched = {};
+    std::map<int, edm4eic::Cluster> matched = {};
 
     for (const auto& cluster : clusters) {
       int mcID = -1;
diff --git a/JugPID/CMakeLists.txt b/JugPID/CMakeLists.txt
index 6669b9060aca6fa6732320d9f9f63c8226dfd468..c407301325e1d789341f01a7c2129aa4e41c6d1b 100644
--- a/JugPID/CMakeLists.txt
+++ b/JugPID/CMakeLists.txt
@@ -14,7 +14,7 @@ gaudi_add_module(JugPIDPlugins
   JugBase
   ROOT::Core ROOT::RIO ROOT::Tree
   EDM4HEP::edm4hep
-  EICD::eicd
+  EDM4EIC::edm4eic
 )
 
 target_include_directories(JugPIDPlugins PUBLIC
diff --git a/JugPID/src/components/PhotoRingClusters.cpp b/JugPID/src/components/PhotoRingClusters.cpp
index 921c31b29d5c3248ab21ce7ddd4fdb834326cee7..80554054b8734fb5a0051c9dabf7120cba0e5870 100644
--- a/JugPID/src/components/PhotoRingClusters.cpp
+++ b/JugPID/src/components/PhotoRingClusters.cpp
@@ -27,8 +27,8 @@
 
 // Event Model related classes
 #include "FuzzyKClusters.h"
-#include "eicd/PMTHitCollection.h"
-#include "eicd/RingImageCollection.h"
+#include "edm4eic/PMTHitCollection.h"
+#include "edm4eic/RingImageCollection.h"
 
 using namespace Gaudi::Units;
 using namespace Eigen;
@@ -41,8 +41,8 @@ namespace Jug::Reco {
  */
 class PhotoRingClusters : public GaudiAlgorithm {
 private:
-  DataHandle<eicd::PMTHitCollection> m_inputHitCollection{"inputHitCollection", Gaudi::DataHandle::Reader, this};
-  DataHandle<eicd::RingImageCollection> m_outputClusterCollection{"outputClusterCollection", Gaudi::DataHandle::Writer,
+  DataHandle<edm4eic::PMTHitCollection> m_inputHitCollection{"inputHitCollection", Gaudi::DataHandle::Reader, this};
+  DataHandle<edm4eic::RingImageCollection> m_outputClusterCollection{"outputClusterCollection", Gaudi::DataHandle::Writer,
                                                                   this};
   // @TODO
   // A more realistic way is to have tracker info as the input to determine how much clusters should be found
diff --git a/JugReco/CMakeLists.txt b/JugReco/CMakeLists.txt
index d342b8592592e06d84abefbc6c1a1e2b125d118f..e4305607e31c41f27f32dc34fe92acc096cb87dc 100644
--- a/JugReco/CMakeLists.txt
+++ b/JugReco/CMakeLists.txt
@@ -14,7 +14,7 @@ gaudi_add_module(JugRecoPlugins
   JugBase
   ROOT::Core ROOT::RIO ROOT::Tree
   EDM4HEP::edm4hep
-  EICD::eicd
+  EDM4EIC::edm4eic
   DD4hep::DDRec
 )
 
diff --git a/JugReco/JugReco/SourceLinks.h b/JugReco/JugReco/SourceLinks.h
index 4c5fe8f1a71048703bfcf0ba392a4d7d87eca581..85ebb2de38e72d964259b1c15fed312b9aeb500e 100644
--- a/JugReco/JugReco/SourceLinks.h
+++ b/JugReco/JugReco/SourceLinks.h
@@ -10,7 +10,7 @@
 #include <string>
 #include "edm4hep/Geant4Particle.h"
 
-#include "eicd/TrackerHitCollection.h"
+#include "edm4eic/TrackerHitCollection.h"
 
 
 namespace Jug {
@@ -36,7 +36,7 @@ class SourceLink {
   // need to store pointers to make the object copyable
   const Acts::Surface* m_surface;
   //const ActsFatras::Hit* m_truthHit;
-  const eicd::TrackerHit* m_Hit ;
+  const edm4eic::TrackerHit* m_Hit ;
 
  public:
   SourceLink(const Acts::Surface& surface, //const ActsFatras::Hit& truthHit,
diff --git a/JugReco/src/components/CalorimeterHitReco.cpp b/JugReco/src/components/CalorimeterHitReco.cpp
index 7bd08d782f52389492f606809c93b529ae910701..674d7dca2d466806319c5d8785a8ead8e649e8e4 100644
--- a/JugReco/src/components/CalorimeterHitReco.cpp
+++ b/JugReco/src/components/CalorimeterHitReco.cpp
@@ -26,8 +26,8 @@
 #include "JugBase/IGeoSvc.h"
 
 // Event Model related classes
-#include "eicd/CalorimeterHitCollection.h"
-#include "eicd/RawCalorimeterHitCollection.h"
+#include "edm4eic/CalorimeterHitCollection.h"
+#include "edm4eic/RawCalorimeterHitCollection.h"
 
 using namespace Gaudi::Units;
 
@@ -62,9 +62,9 @@ private:
   double thresholdADC{0};
   double stepTDC{0};
 
-  DataHandle<eicd::RawCalorimeterHitCollection> m_inputHitCollection{"inputHitCollection", Gaudi::DataHandle::Reader,
+  DataHandle<edm4eic::RawCalorimeterHitCollection> m_inputHitCollection{"inputHitCollection", Gaudi::DataHandle::Reader,
                                                                     this};
-  DataHandle<eicd::CalorimeterHitCollection> m_outputHitCollection{"outputHitCollection", Gaudi::DataHandle::Writer,
+  DataHandle<edm4eic::CalorimeterHitCollection> m_outputHitCollection{"outputHitCollection", Gaudi::DataHandle::Writer,
                                                                   this};
 
   // geometry service to get ids, ignored if no names provided
@@ -208,13 +208,13 @@ public:
         }
 
         // create const vectors for passing to hit initializer list
-        const decltype(eicd::CalorimeterHitData::position) position(
+        const decltype(edm4eic::CalorimeterHitData::position) position(
           gpos.x() / m_lUnit, gpos.y() / m_lUnit, gpos.z() / m_lUnit
         );
-        const decltype(eicd::CalorimeterHitData::dimension) dimension(
+        const decltype(edm4eic::CalorimeterHitData::dimension) dimension(
           cdim[0] / m_lUnit, cdim[1] / m_lUnit, cdim[2] / m_lUnit
         );
-        const decltype(eicd::CalorimeterHitData::local) local_position(
+        const decltype(edm4eic::CalorimeterHitData::local) local_position(
           pos.x() / m_lUnit, pos.y() / m_lUnit, pos.z() / m_lUnit
         );
 
diff --git a/JugReco/src/components/CalorimeterHitsEtaPhiProjector.cpp b/JugReco/src/components/CalorimeterHitsEtaPhiProjector.cpp
index fe927357aac285cc05b5ad648ba4ecec7a24783d..12d414db28f2f521c9c2dc068955c62bf0743635 100644
--- a/JugReco/src/components/CalorimeterHitsEtaPhiProjector.cpp
+++ b/JugReco/src/components/CalorimeterHitsEtaPhiProjector.cpp
@@ -32,8 +32,8 @@
 #include "JugBase/Utilities/Utils.hpp"
 
 // Event Model related classes
-#include "eicd/CalorimeterHitCollection.h"
-#include "eicd/vector_utils.h"
+#include "edm4eic/CalorimeterHitCollection.h"
+#include "edm4eic/vector_utils.h"
 
 using namespace Gaudi::Units;
 using Point3D = ROOT::Math::XYZPoint;
@@ -60,9 +60,9 @@ namespace Jug::Reco {
 class CalorimeterHitsEtaPhiProjector : public GaudiAlgorithm {
 private:
   Gaudi::Property<std::vector<double>> u_gridSizes{this, "gridSizes", {0.001, 0.001 * rad}};
-  DataHandle<eicd::CalorimeterHitCollection> m_inputHitCollection{"inputHitCollection", Gaudi::DataHandle::Reader,
+  DataHandle<edm4eic::CalorimeterHitCollection> m_inputHitCollection{"inputHitCollection", Gaudi::DataHandle::Reader,
                                                                   this};
-  DataHandle<eicd::CalorimeterHitCollection> m_outputHitCollection{"outputHitCollection", Gaudi::DataHandle::Writer,
+  DataHandle<edm4eic::CalorimeterHitCollection> m_outputHitCollection{"outputHitCollection", Gaudi::DataHandle::Writer,
                                                                    this};
 
   double gridSizes[2]{0.0, 0.0};
@@ -93,25 +93,25 @@ public:
     auto& mhits = *m_outputHitCollection.createAndPut();
 
     // container
-    std::unordered_map<std::pair<int64_t, int64_t>, std::vector<eicd::CalorimeterHit>, pair_hash> merged_hits;
+    std::unordered_map<std::pair<int64_t, int64_t>, std::vector<edm4eic::CalorimeterHit>, pair_hash> merged_hits;
 
     for (const auto h : *m_inputHitCollection.get()) {
       auto bins =
-          std::make_pair(static_cast<int64_t>(pos2bin(eicd::eta(h.getPosition()), gridSizes[0], 0.)),
-                         static_cast<int64_t>(pos2bin(eicd::angleAzimuthal(h.getPosition()), gridSizes[1], 0.)));
+          std::make_pair(static_cast<int64_t>(pos2bin(edm4eic::eta(h.getPosition()), gridSizes[0], 0.)),
+                         static_cast<int64_t>(pos2bin(edm4eic::angleAzimuthal(h.getPosition()), gridSizes[1], 0.)));
       merged_hits[bins].push_back(h);
     }
 
     for (const auto& [bins, hits] : merged_hits) {
       const auto ref = hits.front();
-      eicd::MutableCalorimeterHit hit;
+      edm4eic::MutableCalorimeterHit hit;
       hit.setCellID(ref.getCellID());
       // TODO, we can do timing cut to reject noises
       hit.setTime(ref.getTime());
-      double r   = eicd::magnitude(ref.getPosition());
+      double r   = edm4eic::magnitude(ref.getPosition());
       double eta = bin2pos(bins.first, gridSizes[0], 0.);
       double phi = bin2pos(bins.second, gridSizes[1], 1.);
-      hit.setPosition(eicd::sphericalToVector(r, eicd::etaToAngle(eta), phi));
+      hit.setPosition(edm4eic::sphericalToVector(r, edm4eic::etaToAngle(eta), phi));
       hit.setDimension({static_cast<float>(gridSizes[0]), static_cast<float>(gridSizes[1]), 0.});
       // merge energy
       hit.setEnergy(0.);
diff --git a/JugReco/src/components/CalorimeterHitsMerger.cpp b/JugReco/src/components/CalorimeterHitsMerger.cpp
index 3b7c0b6e9107ba6d00b699a7a567bdf5134d0377..db0beccd5ab6d69ad95639a59c4687631037e470 100644
--- a/JugReco/src/components/CalorimeterHitsMerger.cpp
+++ b/JugReco/src/components/CalorimeterHitsMerger.cpp
@@ -32,7 +32,7 @@
 #include "JugBase/IGeoSvc.h"
 
 // Event Model related classes
-#include "eicd/CalorimeterHitCollection.h"
+#include "edm4eic/CalorimeterHitCollection.h"
 
 using namespace Gaudi::Units;
 
@@ -53,8 +53,8 @@ private:
   Gaudi::Property<std::vector<std::string>> u_fields{this, "fields", {"layer"}};
   // reference field numbers to locate position for each merged hits group
   Gaudi::Property<std::vector<int>> u_refs{this, "fieldRefNumbers", {}};
-  DataHandle<eicd::CalorimeterHitCollection> m_inputHitCollection{"inputHitCollection", Gaudi::DataHandle::Reader, this};
-  DataHandle<eicd::CalorimeterHitCollection> m_outputHitCollection{"outputHitCollection", Gaudi::DataHandle::Writer,
+  DataHandle<edm4eic::CalorimeterHitCollection> m_inputHitCollection{"inputHitCollection", Gaudi::DataHandle::Reader, this};
+  DataHandle<edm4eic::CalorimeterHitCollection> m_outputHitCollection{"outputHitCollection", Gaudi::DataHandle::Writer,
                                                                   this};
 
   SmartIF<IGeoSvc> m_geoSvc;
@@ -111,7 +111,7 @@ public:
     auto& outputs = *m_outputHitCollection.createAndPut();
 
     // find the hits that belong to the same group (for merging)
-    std::unordered_map<long long, std::vector<eicd::CalorimeterHit>> merge_map;
+    std::unordered_map<long long, std::vector<edm4eic::CalorimeterHit>> merge_map;
     for (const auto& h : inputs) {
       int64_t id = h.getCellID() & id_mask;
       // use the reference field position
@@ -162,15 +162,15 @@ public:
       const auto& href = hits.front();
 
       // create const vectors for passing to hit initializer list
-      const decltype(eicd::CalorimeterHitData::position) position(
+      const decltype(edm4eic::CalorimeterHitData::position) position(
         gpos.x() / dd4hep::mm, gpos.y() / dd4hep::mm, gpos.z() / dd4hep::mm
       );
-      const decltype(eicd::CalorimeterHitData::local) local(
+      const decltype(edm4eic::CalorimeterHitData::local) local(
         pos.x(), pos.y(), pos.z()
       );
 
       outputs.push_back(
-          eicd::CalorimeterHit{href.getCellID(),
+          edm4eic::CalorimeterHit{href.getCellID(),
                               energy,
                               energyError,
                               time,
diff --git a/JugReco/src/components/CalorimeterIslandCluster.cpp b/JugReco/src/components/CalorimeterIslandCluster.cpp
index 77639d776c39ce391a1a7d110ea90cb3a9159578..3a3ab6d9687ace50c157df4c09b78b84f5841161 100644
--- a/JugReco/src/components/CalorimeterIslandCluster.cpp
+++ b/JugReco/src/components/CalorimeterIslandCluster.cpp
@@ -33,23 +33,23 @@
 #include "JugBase/IGeoSvc.h"
 
 // Event Model related classes
-#include "eicd/CalorimeterHitCollection.h"
-#include "eicd/ClusterCollection.h"
-#include "eicd/ProtoClusterCollection.h"
-#include "eicd/vector_utils.h"
+#include "edm4eic/CalorimeterHitCollection.h"
+#include "edm4eic/ClusterCollection.h"
+#include "edm4eic/ProtoClusterCollection.h"
+#include "edm4eic/vector_utils.h"
 #include "edm4hep/Vector3f.h"
 #include "edm4hep/Vector2f.h"
 
 #if defined __has_include
-#  if __has_include ("eicd/Vector3f.h")
-#    include "eicd/Vector3f.h"
+#  if __has_include ("edm4eic/Vector3f.h")
+#    include "edm4eic/Vector3f.h"
 #  endif
-#  if __has_include ("eicd/Vector2f.h")
-#    include "eicd/Vector2f.h"
+#  if __has_include ("edm4eic/Vector2f.h")
+#    include "edm4eic/Vector2f.h"
 #  endif
 #endif
 
-namespace eicd {
+namespace edm4eic {
   class Vector2f;
   class Vector3f;
 }
@@ -58,13 +58,13 @@ using namespace Gaudi::Units;
 
 namespace {
 
-using CaloHit = eicd::CalorimeterHit;
-using CaloHitCollection = eicd::CalorimeterHitCollection;
+using CaloHit = edm4eic::CalorimeterHit;
+using CaloHitCollection = edm4eic::CalorimeterHitCollection;
 
 using Vector2f = std::conditional_t<
-  std::is_same_v<decltype(eicd::CalorimeterHitData::position), edm4hep::Vector3f>,
+  std::is_same_v<decltype(edm4eic::CalorimeterHitData::position), edm4hep::Vector3f>,
   edm4hep::Vector2f,
-  eicd::Vector2f
+  edm4eic::Vector2f
 >;
 
 // helper functions to get distance between hits
@@ -89,10 +89,10 @@ static Vector2f globalDistRPhi(const CaloHit& h1, const CaloHit& h2) {
   using vector_type = decltype(Vector2f::a);
   return {
     static_cast<vector_type>(
-      eicd::magnitude(h1.getPosition()) - eicd::magnitude(h2.getPosition())
+      edm4eic::magnitude(h1.getPosition()) - edm4eic::magnitude(h2.getPosition())
     ),
     static_cast<vector_type>(
-      eicd::angleAzimuthal(h1.getPosition()) - eicd::angleAzimuthal(h2.getPosition())
+      edm4eic::angleAzimuthal(h1.getPosition()) - edm4eic::angleAzimuthal(h2.getPosition())
     )
   };
 }
@@ -101,10 +101,10 @@ static Vector2f globalDistEtaPhi(const CaloHit& h1,
   using vector_type = decltype(Vector2f::a);
   return {
     static_cast<vector_type>(
-      eicd::eta(h1.getPosition()) - eicd::eta(h2.getPosition())
+      edm4eic::eta(h1.getPosition()) - edm4eic::eta(h2.getPosition())
     ),
     static_cast<vector_type>(
-      eicd::angleAzimuthal(h1.getPosition()) - eicd::angleAzimuthal(h2.getPosition())
+      edm4eic::angleAzimuthal(h1.getPosition()) - edm4eic::angleAzimuthal(h2.getPosition())
     )
   };
 }
@@ -138,7 +138,7 @@ private:
   Gaudi::Property<double> m_minClusterHitEdep{this, "minClusterHitEdep", 0.};
   Gaudi::Property<double> m_minClusterCenterEdep{this, "minClusterCenterEdep", 50.0 * MeV};
   DataHandle<CaloHitCollection> m_inputHitCollection{"inputHitCollection", Gaudi::DataHandle::Reader, this};
-  DataHandle<eicd::ProtoClusterCollection> m_outputProtoCollection{"outputProtoClusterCollection",
+  DataHandle<edm4eic::ProtoClusterCollection> m_outputProtoCollection{"outputProtoClusterCollection",
                                                                   Gaudi::DataHandle::Writer, this};
 
   // neighbour checking distances
@@ -273,7 +273,7 @@ private:
       // different sector, local coordinates do not work, using global coordinates
     } else {
       // sector may have rotation (barrel), so z is included
-      return (eicd::magnitude(h1.getPosition() - h2.getPosition()) <= sectorDist);
+      return (edm4eic::magnitude(h1.getPosition() - h2.getPosition()) <= sectorDist);
     }
   }
 
@@ -357,7 +357,7 @@ private:
 
   // split a group of hits according to the local maxima
   void split_group(std::vector<std::pair<uint32_t, CaloHit>>& group, const std::vector<CaloHit>& maxima,
-                   eicd::ProtoClusterCollection& proto) const {
+                   edm4eic::ProtoClusterCollection& proto) const {
     // special cases
     if (maxima.empty()) {
       if (msgLevel(MSG::VERBOSE)) {
@@ -365,7 +365,7 @@ private:
       }
       return;
     } else if (maxima.size() == 1) {
-      eicd::MutableProtoCluster pcl;
+      edm4eic::MutableProtoCluster pcl;
       for (auto& [idx, hit] : group) {
         pcl.addToHits(hit);
         pcl.addToWeights(1.);
@@ -380,7 +380,7 @@ private:
     // split between maxima
     // TODO, here we can implement iterations with profile, or even ML for better splits
     std::vector<double> weights(maxima.size(), 1.);
-    std::vector<eicd::MutableProtoCluster> pcls;
+    std::vector<edm4eic::MutableProtoCluster> pcls;
     for (size_t k = 0; k < maxima.size(); ++k) {
       pcls.emplace_back();
     }
@@ -392,7 +392,7 @@ private:
       for (const auto& chit : maxima) {
         double dist_ref = chit.getDimension().x;
         double energy   = chit.getEnergy();
-        double dist     = eicd::magnitude(hitsDist(chit, hit));
+        double dist     = edm4eic::magnitude(hitsDist(chit, hit));
         weights[j]      = std::exp(-dist / dist_ref) * energy;
         j += 1;
       }
diff --git a/JugReco/src/components/ClusterRecoCoG.cpp b/JugReco/src/components/ClusterRecoCoG.cpp
index 8b60f023ca07f29c592f2ee9dfdc66aef21434d5..88dd369c557264046847d5b7e3c18b0dc6b082ad 100644
--- a/JugReco/src/components/ClusterRecoCoG.cpp
+++ b/JugReco/src/components/ClusterRecoCoG.cpp
@@ -34,10 +34,10 @@
 // Event Model related classes
 #include "edm4hep/MCParticle.h"
 #include "edm4hep/SimCalorimeterHitCollection.h"
-#include "eicd/ClusterCollection.h"
-#include "eicd/MCRecoClusterParticleAssociationCollection.h"
-#include "eicd/ProtoClusterCollection.h"
-#include "eicd/vector_utils.h"
+#include "edm4eic/ClusterCollection.h"
+#include "edm4eic/MCRecoClusterParticleAssociationCollection.h"
+#include "edm4eic/ProtoClusterCollection.h"
+#include "edm4eic/vector_utils.h"
 
 using namespace Gaudi::Units;
 
@@ -76,8 +76,8 @@ private:
   // for endcaps.
   Gaudi::Property<bool> m_enableEtaBounds{this, "enableEtaBounds", false};
 
-  DataHandle<eicd::ProtoClusterCollection> m_inputProto{"inputProtoClusterCollection", Gaudi::DataHandle::Reader, this};
-  DataHandle<eicd::ClusterCollection> m_outputClusters{"outputClusterCollection", Gaudi::DataHandle::Writer, this};
+  DataHandle<edm4eic::ProtoClusterCollection> m_inputProto{"inputProtoClusterCollection", Gaudi::DataHandle::Reader, this};
+  DataHandle<edm4eic::ClusterCollection> m_outputClusters{"outputClusterCollection", Gaudi::DataHandle::Writer, this};
 
   // Collection for MC hits when running on MC
   Gaudi::Property<std::string> m_mcHits{this, "mcHits", ""};
@@ -87,7 +87,7 @@ private:
   // Collection for associations when running on MC
   Gaudi::Property<std::string> m_outputAssociations{this, "outputAssociations", ""};
   // Optional handle to MC hits
-  std::unique_ptr<DataHandle<eicd::MCRecoClusterParticleAssociationCollection>> m_outputAssociations_ptr;
+  std::unique_ptr<DataHandle<edm4eic::MCRecoClusterParticleAssociationCollection>> m_outputAssociations_ptr;
 
   // Pointer to the geometry service
   SmartIF<IGeoSvc> m_geoSvc;
@@ -115,7 +115,7 @@ public:
     // Initialize the optional association collection if requested
     if (m_outputAssociations != "") {
       m_outputAssociations_ptr =
-        std::make_unique<DataHandle<eicd::MCRecoClusterParticleAssociationCollection>>(m_outputAssociations, Gaudi::DataHandle::Writer,
+        std::make_unique<DataHandle<edm4eic::MCRecoClusterParticleAssociationCollection>>(m_outputAssociations, Gaudi::DataHandle::Writer,
         this);
     }
 
@@ -158,7 +158,7 @@ public:
     }
 
     // Optional output associations
-    eicd::MCRecoClusterParticleAssociationCollection* associations = nullptr;
+    edm4eic::MCRecoClusterParticleAssociationCollection* associations = nullptr;
     if (m_outputAssociations_ptr) {
       associations = m_outputAssociations_ptr->createAndPut();
     }
@@ -227,11 +227,11 @@ public:
           debug() << "cluster has largest energy in cellID: " << pclhit->getCellID() << endmsg;
           debug() << "pcl hit with highest energy " << pclhit->getEnergy() << " at index " << pclhit->getObjectID().index << endmsg;
           debug() << "corresponding mc hit energy " << mchit->getEnergy() << " at index " << mchit->getObjectID().index << endmsg;
-          debug() << "from MCParticle index " << mcp.getObjectID().index << ", PDG " << mcp.getPDG() << ", " << eicd::magnitude(mcp.getMomentum()) << endmsg;
+          debug() << "from MCParticle index " << mcp.getObjectID().index << ", PDG " << mcp.getPDG() << ", " << edm4eic::magnitude(mcp.getMomentum()) << endmsg;
         }
 
         // set association
-        eicd::MutableMCRecoClusterParticleAssociation clusterassoc;
+        edm4eic::MutableMCRecoClusterParticleAssociation clusterassoc;
         clusterassoc.setRecID(cl.getObjectID().index);
         clusterassoc.setSimID(mcp.getObjectID().index);
         clusterassoc.setWeight(1.0);
@@ -249,8 +249,8 @@ public:
   }
 
 private:
-  eicd::MutableCluster reconstruct(const eicd::ProtoCluster& pcl) const {
-    eicd::MutableCluster cl;
+  edm4eic::MutableCluster reconstruct(const edm4eic::ProtoCluster& pcl) const {
+    edm4eic::MutableCluster cl;
     cl.setNhits(pcl.hits_size());
 
     // no hits
@@ -279,7 +279,7 @@ private:
       totalE += energy;
       if (energy > maxE) {
       }
-      const float eta = eicd::eta(hit.getPosition());
+      const float eta = edm4eic::eta(hit.getPosition());
       if (eta < minHitEta) {
         minHitEta = eta;
       }
@@ -310,14 +310,14 @@ private:
 
     // Optionally constrain the cluster to the hit eta values
     if (m_enableEtaBounds) {
-      const bool overflow  = (eicd::eta(cl.getPosition()) > maxHitEta);
-      const bool underflow = (eicd::eta(cl.getPosition()) < minHitEta);
+      const bool overflow  = (edm4eic::eta(cl.getPosition()) > maxHitEta);
+      const bool underflow = (edm4eic::eta(cl.getPosition()) < minHitEta);
       if (overflow || underflow) {
         const double newEta   = overflow ? maxHitEta : minHitEta;
-        const double newTheta = eicd::etaToAngle(newEta);
-        const double newR     = eicd::magnitude(cl.getPosition());
-        const double newPhi   = eicd::angleAzimuthal(cl.getPosition());
-        cl.setPosition(eicd::sphericalToVector(newR, newTheta, newPhi));
+        const double newTheta = edm4eic::etaToAngle(newEta);
+        const double newR     = edm4eic::magnitude(cl.getPosition());
+        const double newPhi   = edm4eic::angleAzimuthal(cl.getPosition());
+        cl.setPosition(edm4eic::sphericalToVector(newR, newTheta, newPhi));
         if (msgLevel(MSG::DEBUG)) {
           debug() << "Bound cluster position to contributing hits due to " << (overflow ? "overflow" : "underflow")
                   << endmsg;
@@ -329,8 +329,8 @@ private:
 
     // best estimate on the cluster direction is the cluster position
     // for simple 2D CoG clustering
-    cl.setIntrinsicTheta(eicd::anglePolar(cl.getPosition()));
-    cl.setIntrinsicPhi(eicd::angleAzimuthal(cl.getPosition()));
+    cl.setIntrinsicTheta(edm4eic::anglePolar(cl.getPosition()));
+    cl.setIntrinsicPhi(edm4eic::angleAzimuthal(cl.getPosition()));
     // TODO errors
 
     // Calculate radius
diff --git a/JugReco/src/components/EnergyPositionClusterMerger.cpp b/JugReco/src/components/EnergyPositionClusterMerger.cpp
index ff3aa3884ad8ba60240ecfaf08129289f07fa215..957611ef53106b4b51d86bf2eb1f7ae422490199 100644
--- a/JugReco/src/components/EnergyPositionClusterMerger.cpp
+++ b/JugReco/src/components/EnergyPositionClusterMerger.cpp
@@ -15,8 +15,8 @@
 #include "JugBase/DataHandle.h"
 
 // Event Model related classes
-#include "eicd/ClusterCollection.h"
-#include "eicd/vector_utils.h"
+#include "edm4eic/ClusterCollection.h"
+#include "edm4eic/vector_utils.h"
 
 using namespace Gaudi::Units;
 
@@ -37,10 +37,10 @@ namespace Jug::Reco {
 class EnergyPositionClusterMerger : public GaudiAlgorithm {
 private:
   // Input
-  DataHandle<eicd::ClusterCollection> m_energyClusters{"energyClusters", Gaudi::DataHandle::Reader, this};
-  DataHandle<eicd::ClusterCollection> m_positionClusters{"positionClusters", Gaudi::DataHandle::Reader, this};
+  DataHandle<edm4eic::ClusterCollection> m_energyClusters{"energyClusters", Gaudi::DataHandle::Reader, this};
+  DataHandle<edm4eic::ClusterCollection> m_positionClusters{"positionClusters", Gaudi::DataHandle::Reader, this};
   // Output
-  DataHandle<eicd::ClusterCollection> m_outputClusters{"outputClusters", Gaudi::DataHandle::Writer, this};
+  DataHandle<edm4eic::ClusterCollection> m_outputClusters{"outputClusters", Gaudi::DataHandle::Writer, this};
   // Negative values mean the tolerance check is disabled
   Gaudi::Property<double> m_zToleranceUnits{this, "zTolerance", -1 * cm};
   Gaudi::Property<double> m_phiToleranceUnits{this, "phiTolerance", 20 * degree};
@@ -83,7 +83,7 @@ public:
         const auto& ec = e_clus[ie];
         // 1. stop if not within tolerance
         //    (make sure to handle rollover of phi properly)
-        double dphi = eicd::angleAzimuthal(pc.getPosition()) - eicd::angleAzimuthal(ec.getPosition());
+        double dphi = edm4eic::angleAzimuthal(pc.getPosition()) - edm4eic::angleAzimuthal(ec.getPosition());
         if (std::abs(dphi) > M_PI) {
           dphi = std::abs(dphi) - M_PI;
         }
@@ -120,13 +120,13 @@ public:
         if (msgLevel(MSG::DEBUG)) {
           debug() << fmt::format("Matched position cluster {} with energy cluster {}\n", pc.id(), ec.id()) << endmsg;
           debug() << fmt::format("  - Position cluster: (E: {}, phi: {}, z: {})", pc.getEnergy(),
-                                 eicd::angleAzimuthal(pc.getPosition()), pc.getPosition().z)
+                                 edm4eic::angleAzimuthal(pc.getPosition()), pc.getPosition().z)
                   << endmsg;
           debug() << fmt::format("  - Energy cluster: (E: {}, phi: {}, z: {})", ec.getEnergy(),
-                                 eicd::angleAzimuthal(ec.getPosition()), ec.getPosition().z)
+                                 edm4eic::angleAzimuthal(ec.getPosition()), ec.getPosition().z)
                   << endmsg;
           debug() << fmt::format("  ---> Merged cluster: (E: {}, phi: {}, z: {})", new_clus.getEnergy(),
-                                 eicd::angleAzimuthal(new_clus.getPosition()), new_clus.getPosition().z)
+                                 edm4eic::angleAzimuthal(new_clus.getPosition()), new_clus.getPosition().z)
                   << endmsg;
         }
       }
diff --git a/JugReco/src/components/FarForwardParticles.cpp b/JugReco/src/components/FarForwardParticles.cpp
index 828ee36164fee37aaec2997b6dd6884351dc99ec..9922644c7b3f773b19dd39352e4e83e8262602f2 100644
--- a/JugReco/src/components/FarForwardParticles.cpp
+++ b/JugReco/src/components/FarForwardParticles.cpp
@@ -19,16 +19,16 @@
 #include "JugBase/IGeoSvc.h"
 
 // Event Model related classes
-#include "eicd/ReconstructedParticleCollection.h"
-#include "eicd/TrackerHitCollection.h"
-#include <eicd/vector_utils.h>
+#include "edm4eic/ReconstructedParticleCollection.h"
+#include "edm4eic/TrackerHitCollection.h"
+#include <edm4eic/vector_utils.h>
 
 namespace Jug::Reco {
 
 class FarForwardParticles : public GaudiAlgorithm {
 private:
-  DataHandle<eicd::TrackerHitCollection> m_inputHitCollection{"FarForwardTrackerHits", Gaudi::DataHandle::Reader, this};
-  DataHandle<eicd::ReconstructedParticleCollection> m_outputParticles{"outputParticles", Gaudi::DataHandle::Writer,
+  DataHandle<edm4eic::TrackerHitCollection> m_inputHitCollection{"FarForwardTrackerHits", Gaudi::DataHandle::Reader, this};
+  DataHandle<edm4eic::ReconstructedParticleCollection> m_outputParticles{"outputParticles", Gaudi::DataHandle::Writer,
                                                                      this};
 
   //----- Define constants here ------
@@ -152,7 +152,7 @@ public:
   }
 
   StatusCode execute() override {
-    const eicd::TrackerHitCollection* rawhits = m_inputHitCollection.get();
+    const edm4eic::TrackerHitCollection* rawhits = m_inputHitCollection.get();
     auto& rc                                 = *(m_outputParticles.createAndPut());
 
     auto converter = m_geoSvc->cellIDPositionConverter();
@@ -255,10 +255,10 @@ public:
 
       //----- end RP reconstruction code ------
 
-      eicd::MutableReconstructedParticle rpTrack;
+      edm4eic::MutableReconstructedParticle rpTrack;
       rpTrack.setType(0);
       rpTrack.setMomentum({prec});
-      rpTrack.setEnergy(std::hypot(eicd::magnitude(rpTrack.getMomentum()), .938272));
+      rpTrack.setEnergy(std::hypot(edm4eic::magnitude(rpTrack.getMomentum()), .938272));
       rpTrack.setReferencePoint({0, 0, 0});
       rpTrack.setCharge(1);
       rpTrack.setMass(.938272);
diff --git a/JugReco/src/components/FarForwardParticlesOMD.cpp b/JugReco/src/components/FarForwardParticlesOMD.cpp
index 3a14f8caa7e9a2820fd563cbfec842312f2aa6e7..49e5514f84cd1c292cd846001d555ee6e5615391 100644
--- a/JugReco/src/components/FarForwardParticlesOMD.cpp
+++ b/JugReco/src/components/FarForwardParticlesOMD.cpp
@@ -14,16 +14,16 @@
 #include "JugBase/DataHandle.h"
 
 // Event Model related classes
-#include "eicd/ReconstructedParticleCollection.h"
-#include "eicd/TrackerHitCollection.h"
-#include <eicd/vector_utils.h>
+#include "edm4eic/ReconstructedParticleCollection.h"
+#include "edm4eic/TrackerHitCollection.h"
+#include <edm4eic/vector_utils.h>
 
 namespace Jug::Reco {
 
 class FarForwardParticlesOMD : public GaudiAlgorithm {
 private:
-  DataHandle<eicd::TrackerHitCollection> m_inputHitCollection{"FarForwardTrackerHits", Gaudi::DataHandle::Reader, this};
-  DataHandle<eicd::ReconstructedParticleCollection> m_outputParticles{"outputParticles", Gaudi::DataHandle::Writer,
+  DataHandle<edm4eic::TrackerHitCollection> m_inputHitCollection{"FarForwardTrackerHits", Gaudi::DataHandle::Reader, this};
+  DataHandle<edm4eic::ReconstructedParticleCollection> m_outputParticles{"outputParticles", Gaudi::DataHandle::Writer,
                                                                      this};
 
   //----- Define constants here ------
@@ -75,7 +75,7 @@ public:
   }
 
   StatusCode execute() override {
-    const eicd::TrackerHitCollection* rawhits = m_inputHitCollection.get();
+    const edm4eic::TrackerHitCollection* rawhits = m_inputHitCollection.get();
     auto& rc                                 = *(m_outputParticles.createAndPut());
 
     // for (const auto& part : mc) {
@@ -164,10 +164,10 @@ public:
 
       //----- end RP reconstruction code ------
 
-      eicd::MutableReconstructedParticle rpTrack;
+      edm4eic::MutableReconstructedParticle rpTrack;
       rpTrack.setType(0);
       rpTrack.setMomentum({prec});
-      rpTrack.setEnergy(std::hypot(eicd::magnitude(rpTrack.getMomentum()), .938272));
+      rpTrack.setEnergy(std::hypot(edm4eic::magnitude(rpTrack.getMomentum()), .938272));
       rpTrack.setReferencePoint({0, 0, 0});
       rpTrack.setCharge(1);
       rpTrack.setMass(.938272);
diff --git a/JugReco/src/components/ImagingClusterReco.cpp b/JugReco/src/components/ImagingClusterReco.cpp
index 84ee214d45450529f930d4cc9b528ab8c48a8f86..0e85ec91506396f0275d0d3a3ddde75e0489a64c 100644
--- a/JugReco/src/components/ImagingClusterReco.cpp
+++ b/JugReco/src/components/ImagingClusterReco.cpp
@@ -31,11 +31,11 @@
 // Event Model related classes
 #include "edm4hep/MCParticleCollection.h"
 #include "edm4hep/SimCalorimeterHitCollection.h"
-#include "eicd/CalorimeterHitCollection.h"
-#include "eicd/ClusterCollection.h"
-#include "eicd/MCRecoClusterParticleAssociationCollection.h"
-#include "eicd/ProtoClusterCollection.h"
-#include "eicd/vector_utils.h"
+#include "edm4eic/CalorimeterHitCollection.h"
+#include "edm4eic/ClusterCollection.h"
+#include "edm4eic/MCRecoClusterParticleAssociationCollection.h"
+#include "edm4eic/ProtoClusterCollection.h"
+#include "edm4eic/vector_utils.h"
 
 using namespace Gaudi::Units;
 using namespace Eigen;
@@ -53,9 +53,9 @@ class ImagingClusterReco : public GaudiAlgorithm {
 private:
   Gaudi::Property<int> m_trackStopLayer{this, "trackStopLayer", 9};
 
-  DataHandle<eicd::ProtoClusterCollection> m_inputProtoClusters{"inputProtoClusters", Gaudi::DataHandle::Reader, this};
-  DataHandle<eicd::ClusterCollection> m_outputLayers{"outputLayers", Gaudi::DataHandle::Writer, this};
-  DataHandle<eicd::ClusterCollection> m_outputClusters{"outputClusters", Gaudi::DataHandle::Reader, this};
+  DataHandle<edm4eic::ProtoClusterCollection> m_inputProtoClusters{"inputProtoClusters", Gaudi::DataHandle::Reader, this};
+  DataHandle<edm4eic::ClusterCollection> m_outputLayers{"outputLayers", Gaudi::DataHandle::Writer, this};
+  DataHandle<edm4eic::ClusterCollection> m_outputClusters{"outputClusters", Gaudi::DataHandle::Reader, this};
 
   // Collection for MC hits when running on MC
   Gaudi::Property<std::string> m_mcHits{this, "mcHits", ""};
@@ -65,7 +65,7 @@ private:
   // Collection for associations when running on MC
   Gaudi::Property<std::string> m_outputAssociations{this, "outputAssociations", ""};
   // Optional handle to MC hits
-  std::unique_ptr<DataHandle<eicd::MCRecoClusterParticleAssociationCollection>> m_outputAssociations_ptr;
+  std::unique_ptr<DataHandle<edm4eic::MCRecoClusterParticleAssociationCollection>> m_outputAssociations_ptr;
 
 public:
   ImagingClusterReco(const std::string& name, ISvcLocator* svcLoc) : GaudiAlgorithm(name, svcLoc) {
@@ -89,7 +89,7 @@ public:
     // Initialize the optional association collection if requested
     if (m_outputAssociations != "") {
       m_outputAssociations_ptr =
-        std::make_unique<DataHandle<eicd::MCRecoClusterParticleAssociationCollection>>(m_outputAssociations, Gaudi::DataHandle::Writer,
+        std::make_unique<DataHandle<edm4eic::MCRecoClusterParticleAssociationCollection>>(m_outputAssociations, Gaudi::DataHandle::Writer,
         this);
     }
 
@@ -110,7 +110,7 @@ public:
     }
 
     // Optional output associations
-    eicd::MCRecoClusterParticleAssociationCollection* associations = nullptr;
+    edm4eic::MCRecoClusterParticleAssociationCollection* associations = nullptr;
     if (m_outputAssociations_ptr) {
       associations = m_outputAssociations_ptr->createAndPut();
     }
@@ -170,7 +170,7 @@ public:
         const auto& mcp = mchit->getContributions(0).getParticle();
 
         // set association
-        eicd::MutableMCRecoClusterParticleAssociation clusterassoc;
+        edm4eic::MutableMCRecoClusterParticleAssociation clusterassoc;
         clusterassoc.setRecID(cl.getObjectID().index);
         clusterassoc.setSimID(mcp.getObjectID().index);
         clusterassoc.setWeight(1.0);
@@ -197,11 +197,11 @@ public:
 private:
   template <typename T> static inline T pow2(const T& x) { return x * x; }
 
-  static std::vector<eicd::Cluster> reconstruct_cluster_layers(const eicd::ProtoCluster& pcl) {
+  static std::vector<edm4eic::Cluster> reconstruct_cluster_layers(const edm4eic::ProtoCluster& pcl) {
     const auto& hits    = pcl.getHits();
     const auto& weights = pcl.getWeights();
     // using map to have hits sorted by layer
-    std::map<int, std::vector<std::pair<eicd::CalorimeterHit, float>>> layer_map;
+    std::map<int, std::vector<std::pair<edm4eic::CalorimeterHit, float>>> layer_map;
     for (unsigned i = 0; i < hits.size(); ++i) {
       const auto hit = hits[i];
       auto lid       = hit.getLayer();
@@ -212,7 +212,7 @@ private:
     }
 
     // create layers
-    std::vector<eicd::Cluster> cl_layers;
+    std::vector<edm4eic::Cluster> cl_layers;
     for (const auto& [lid, layer_hits] : layer_map) {
       auto layer = reconstruct_layer(layer_hits);
       cl_layers.push_back(layer);
@@ -220,8 +220,8 @@ private:
     return cl_layers;
   }
 
-  static eicd::Cluster reconstruct_layer(const std::vector<std::pair<eicd::CalorimeterHit, float>>& hits) {
-    eicd::MutableCluster layer;
+  static edm4eic::Cluster reconstruct_layer(const std::vector<std::pair<edm4eic::CalorimeterHit, float>>& hits) {
+    edm4eic::MutableCluster layer;
     layer.setType(ClusterType::kClusterSlice);
     // Calculate averages
     double energy{0};
@@ -251,7 +251,7 @@ private:
     // Calculate radius as the standard deviation of the hits versus the cluster center
     double radius = 0.;
     for (const auto& [hit, weight] : hits) {
-      radius += std::pow(eicd::magnitude(hit.getPosition() - layer.getPosition()), 2);
+      radius += std::pow(edm4eic::magnitude(hit.getPosition() - layer.getPosition()), 2);
     }
     layer.addToShapeParameters(std::sqrt(radius / layer.getNhits()));
     // TODO Skewedness
@@ -259,8 +259,8 @@ private:
     return layer;
   }
 
-  eicd::MutableCluster reconstruct_cluster(const eicd::ProtoCluster& pcl) {
-    eicd::MutableCluster cluster;
+  edm4eic::MutableCluster reconstruct_cluster(const edm4eic::ProtoCluster& pcl) {
+    edm4eic::MutableCluster cluster;
 
     const auto& hits    = pcl.getHits();
     const auto& weights = pcl.getWeights();
@@ -282,9 +282,9 @@ private:
       const double energyWeight = hit.getEnergy() * weight;
       time += hit.getTime() * energyWeight;
       timeError += std::pow(hit.getTimeError() * energyWeight, 2);
-      meta += eicd::eta(hit.getPosition()) * energyWeight;
-      mphi += eicd::angleAzimuthal(hit.getPosition()) * energyWeight;
-      r = std::min(eicd::magnitude(hit.getPosition()), r);
+      meta += edm4eic::eta(hit.getPosition()) * energyWeight;
+      mphi += edm4eic::angleAzimuthal(hit.getPosition()) * energyWeight;
+      r = std::min(edm4eic::magnitude(hit.getPosition()), r);
       cluster.addToHits(hit);
     }
     cluster.setEnergy(energy);
@@ -292,13 +292,13 @@ private:
     cluster.setTime(time / energy);
     cluster.setTimeError(std::sqrt(timeError) / energy);
     cluster.setNhits(hits.size());
-    cluster.setPosition(eicd::sphericalToVector(r, eicd::etaToAngle(meta / energy), mphi / energy));
+    cluster.setPosition(edm4eic::sphericalToVector(r, edm4eic::etaToAngle(meta / energy), mphi / energy));
 
     // shower radius estimate (eta-phi plane)
     double radius = 0.;
     for (const auto& hit : hits) {
-      radius += pow2(eicd::eta(hit.getPosition()) - eicd::eta(cluster.getPosition())) +
-                pow2(eicd::angleAzimuthal(hit.getPosition()) - eicd::angleAzimuthal(cluster.getPosition()));
+      radius += pow2(edm4eic::eta(hit.getPosition()) - edm4eic::eta(cluster.getPosition())) +
+                pow2(edm4eic::angleAzimuthal(hit.getPosition()) - edm4eic::angleAzimuthal(cluster.getPosition()));
     }
     cluster.addToShapeParameters(std::sqrt(radius / cluster.getNhits()));
     // Skewedness not calculated TODO
@@ -313,9 +313,9 @@ private:
     return cluster;
   }
 
-  std::pair<double /* polar */, double /* azimuthal */> fit_track(const std::vector<eicd::Cluster>& layers) const {
+  std::pair<double /* polar */, double /* azimuthal */> fit_track(const std::vector<edm4eic::Cluster>& layers) const {
     int nrows = 0;
-    decltype(eicd::ClusterData::position) mean_pos{0, 0, 0};
+    decltype(edm4eic::ClusterData::position) mean_pos{0, 0, 0};
     for (const auto& layer : layers) {
       if ((layer.getNhits() > 0) && (layer.getHits(0).getLayer() <= m_trackStopLayer)) {
         mean_pos = mean_pos + layer.getPosition();
diff --git a/JugReco/src/components/ImagingPixelDataCombiner.cpp b/JugReco/src/components/ImagingPixelDataCombiner.cpp
index dc1c1399692de79a355e78c1b8f86a475aaab989..4b71e49ffb1a2da87f1d842ef7134a9f19f0f6f1 100644
--- a/JugReco/src/components/ImagingPixelDataCombiner.cpp
+++ b/JugReco/src/components/ImagingPixelDataCombiner.cpp
@@ -28,8 +28,8 @@
 #include "JugBase/Utilities/Utils.hpp"
 
 // Event Model related classes
-#include "eicd/CalorimeterHitCollection.h"
-#include "eicd/vector_utils.h"
+#include "edm4eic/CalorimeterHitCollection.h"
+#include "edm4eic/vector_utils.h"
 
 using namespace Gaudi::Units;
 
@@ -48,9 +48,9 @@ class ImagingPixelDataCombiner : public GaudiAlgorithm {
 private:
   Gaudi::Property<int> m_layerIncrement{this, "layerIncrement", 0};
   Gaudi::Property<std::string> m_rule{this, "rule", "concatenate"};
-  DataHandle<eicd::CalorimeterHitCollection> m_inputHits1{"inputHits1", Gaudi::DataHandle::Reader, this};
-  DataHandle<eicd::CalorimeterHitCollection> m_inputHits2{"inputHits2", Gaudi::DataHandle::Reader, this};
-  DataHandle<eicd::CalorimeterHitCollection> m_outputHits{"outputHits", Gaudi::DataHandle::Writer, this};
+  DataHandle<edm4eic::CalorimeterHitCollection> m_inputHits1{"inputHits1", Gaudi::DataHandle::Reader, this};
+  DataHandle<edm4eic::CalorimeterHitCollection> m_inputHits2{"inputHits2", Gaudi::DataHandle::Reader, this};
+  DataHandle<edm4eic::CalorimeterHitCollection> m_outputHits{"outputHits", Gaudi::DataHandle::Writer, this};
   std::vector<std::string> supported_rules{"concatenate", "interlayer"};
 
 public:
@@ -80,7 +80,7 @@ public:
     // input collections
     const auto* const hits1 = m_inputHits1.get();
     const auto* const hits2 = m_inputHits2.get();
-    std::vector<const eicd::CalorimeterHitCollection*> inputs{hits1, hits2};
+    std::vector<const edm4eic::CalorimeterHitCollection*> inputs{hits1, hits2};
     // Create output collections
     auto* mhits = m_outputHits.createAndPut();
 
@@ -89,7 +89,7 @@ public:
       for (int i = 0; i < (int)inputs.size(); ++i) {
         const auto* const coll = inputs[i];
         for (auto hit : *coll) {
-          eicd::CalorimeterHit h2{
+          edm4eic::CalorimeterHit h2{
               hit.getCellID(),    hit.getEnergy(),   hit.getEnergyError(), hit.getTime(),
               hit.getTimeError(), hit.getPosition(), hit.getDimension(),   hit.getLayer() + m_layerIncrement * i,
               hit.getSector(),    hit.getLocal(),
@@ -140,7 +140,7 @@ public:
         }
 
         // push hit, increment of index
-        eicd::CalorimeterHit h2{
+        edm4eic::CalorimeterHit h2{
             hit.getCellID(),    hit.getEnergy(),   hit.getEnergyError(), hit.getTime(),
             hit.getTimeError(), hit.getPosition(), hit.getDimension(),   hit.getLayer() + m_layerIncrement * curr_coll,
             hit.getSector(),    hit.getLocal()};
diff --git a/JugReco/src/components/ImagingPixelDataSorter.cpp b/JugReco/src/components/ImagingPixelDataSorter.cpp
index 84cea6c8b2a2b81dcbfb806a0dc22da7ab9d6020..83484b78db5a84ab367db58535d8c1e446c6cdac 100644
--- a/JugReco/src/components/ImagingPixelDataSorter.cpp
+++ b/JugReco/src/components/ImagingPixelDataSorter.cpp
@@ -27,9 +27,9 @@
 #include "JugBase/Utilities/Utils.hpp"
 
 // Event Model related classes
-#include <eicd/vector_utils.h>
-#include "eicd/CalorimeterHit.h"
-#include "eicd/CalorimeterHitCollection.h"
+#include <edm4eic/vector_utils.h>
+#include "edm4eic/CalorimeterHit.h"
+#include "edm4eic/CalorimeterHitCollection.h"
 
 using namespace Gaudi::Units;
 
@@ -48,9 +48,9 @@ namespace Jug::Reco {
   private:
     Gaudi::Property<int>                        m_nLayers{this, "numberOfLayers", 9};
     Gaudi::Property<int>                        m_nHits{this, "numberOfHits", 50};
-    DataHandle<eicd::CalorimeterHitCollection>   m_inputHitCollection{"inputHitCollection",
+    DataHandle<edm4eic::CalorimeterHitCollection>   m_inputHitCollection{"inputHitCollection",
                                                                      Gaudi::DataHandle::Reader, this};
-    DataHandle<eicd::CalorimeterHitCollection>   m_outputHitCollection{"outputHitCollection",
+    DataHandle<edm4eic::CalorimeterHitCollection>   m_outputHitCollection{"outputHitCollection",
                                                                       Gaudi::DataHandle::Writer, this};
 
   public:
@@ -78,7 +78,7 @@ namespace Jug::Reco {
       auto& mhits = *m_outputHitCollection.createAndPut();
 
       // group the hits by layer
-      std::vector<std::vector<eicd::CalorimeterHit>> layer_hits;
+      std::vector<std::vector<edm4eic::CalorimeterHit>> layer_hits;
       layer_hits.resize(m_nLayers);
       for (const auto& h : hits) {
         auto k = h.getLayer();
@@ -90,7 +90,7 @@ namespace Jug::Reco {
       // sort by energy
       for (auto &layer : layer_hits) {
         std::sort(layer.begin(), layer.end(),
-          [] (const eicd::CalorimeterHit &h1, const eicd::CalorimeterHit &h2) {
+          [] (const edm4eic::CalorimeterHit &h1, const edm4eic::CalorimeterHit &h2) {
             return h1.getEnergy() > h2.getEnergy();
           });
       }
diff --git a/JugReco/src/components/ImagingPixelMerger.cpp b/JugReco/src/components/ImagingPixelMerger.cpp
index f641a9451b6b22671d29d8cdf7af8cc2ff7e5a61..c81219adc4cba3ae79bb2c872e1f859eb210a901 100644
--- a/JugReco/src/components/ImagingPixelMerger.cpp
+++ b/JugReco/src/components/ImagingPixelMerger.cpp
@@ -31,8 +31,8 @@
 #include "JugBase/Utilities/Utils.hpp"
 
 // Event Model related classes
-#include "eicd/CalorimeterHitCollection.h"
-#include <eicd/vector_utils.h>
+#include "edm4eic/CalorimeterHitCollection.h"
+#include <edm4eic/vector_utils.h>
 
 using namespace Gaudi::Units;
 
@@ -56,8 +56,8 @@ class ImagingPixelMerger : public GaudiAlgorithm {
 private:
   Gaudi::Property<float> m_etaSize{this, "etaSize", 0.001};
   Gaudi::Property<float> m_phiSize{this, "phiSize", 0.001};
-  DataHandle<eicd::CalorimeterHitCollection> m_inputHits{"inputHits", Gaudi::DataHandle::Reader, this};
-  DataHandle<eicd::CalorimeterHitCollection> m_outputHits{"outputHits", Gaudi::DataHandle::Writer, this};
+  DataHandle<edm4eic::CalorimeterHitCollection> m_inputHits{"inputHits", Gaudi::DataHandle::Reader, this};
+  DataHandle<edm4eic::CalorimeterHitCollection> m_outputHits{"outputHits", Gaudi::DataHandle::Writer, this};
 
 public:
   ImagingPixelMerger(const std::string& name, ISvcLocator* svcLoc) : GaudiAlgorithm(name, svcLoc) {
@@ -102,9 +102,9 @@ public:
       const auto& pos = h.getPosition();
 
       // cylindrical r
-      const float rc   = eicd::magnitudeTransverse(pos);
-      const double eta = eicd::eta(pos);
-      const double phi = eicd::angleAzimuthal(pos);
+      const float rc   = edm4eic::magnitudeTransverse(pos);
+      const double eta = edm4eic::eta(pos);
+      const double phi = edm4eic::angleAzimuthal(pos);
 
       const auto grid = std::pair<int, int>{pos2grid(eta, m_etaSize), pos2grid(phi, m_phiSize)};
       auto it         = layer.find(grid);
@@ -132,10 +132,10 @@ public:
       for (const auto& [grid, data] : layer) {
         const double eta   = grid2pos(grid.first, m_etaSize);
         const double phi   = grid2pos(grid.second, m_phiSize);
-        const double theta = eicd::etaToAngle(eta);
+        const double theta = edm4eic::etaToAngle(eta);
         const double z     = cotan(theta) * data.rc;
         const float r      = std::hypot(data.rc, z);
-        const auto pos     = eicd::sphericalToVector(r, theta, phi);
+        const auto pos     = edm4eic::sphericalToVector(r, theta, phi);
         auto oh            = ohits.create();
         oh.setEnergy(data.energy);
         oh.setEnergyError(std::sqrt(data.energyError));
diff --git a/JugReco/src/components/ImagingPixelReco.cpp b/JugReco/src/components/ImagingPixelReco.cpp
index 5ab831836c1488ce0ee03c35fb50ed1d40d79c01..f815f0796fa648f7cd66af446a68b9a7835a7db8 100644
--- a/JugReco/src/components/ImagingPixelReco.cpp
+++ b/JugReco/src/components/ImagingPixelReco.cpp
@@ -24,8 +24,8 @@
 #include "JugBase/IGeoSvc.h"
 
 // Event Model related classes
-#include "eicd/CalorimeterHitCollection.h"
-#include "eicd/RawCalorimeterHitCollection.h"
+#include "edm4eic/CalorimeterHitCollection.h"
+#include "edm4eic/RawCalorimeterHitCollection.h"
 
 using namespace Gaudi::Units;
 
@@ -60,9 +60,9 @@ private:
   double dyRangeADC{0};
 
   // hits containers
-  DataHandle<eicd::RawCalorimeterHitCollection> m_inputHitCollection{"inputHitCollection", Gaudi::DataHandle::Reader,
+  DataHandle<edm4eic::RawCalorimeterHitCollection> m_inputHitCollection{"inputHitCollection", Gaudi::DataHandle::Reader,
                                                                     this};
-  DataHandle<eicd::CalorimeterHitCollection> m_outputHitCollection{"outputHitCollection", Gaudi::DataHandle::Writer,
+  DataHandle<edm4eic::CalorimeterHitCollection> m_outputHitCollection{"outputHitCollection", Gaudi::DataHandle::Writer,
                                                                   this};
 
   // Pointer to the geometry service
@@ -145,14 +145,14 @@ public:
 
 
       // create const vectors for passing to hit initializer list
-      const decltype(eicd::CalorimeterHitData::position) position(
+      const decltype(edm4eic::CalorimeterHitData::position) position(
         gpos.x() / m_lUnit, gpos.y() / m_lUnit, gpos.z() / m_lUnit
       );
-      const decltype(eicd::CalorimeterHitData::local) local(
+      const decltype(edm4eic::CalorimeterHitData::local) local(
         pos.x() / m_lUnit, pos.y() / m_lUnit, pos.z() / m_lUnit
       );
 
-      hits.push_back(eicd::CalorimeterHit{id,                         // cellID
+      hits.push_back(edm4eic::CalorimeterHit{id,                         // cellID
                                           static_cast<float>(energy), // energy
                                           0,                          // energyError
                                           static_cast<float>(time),   // time
diff --git a/JugReco/src/components/ImagingTopoCluster.cpp b/JugReco/src/components/ImagingTopoCluster.cpp
index 39cd0f7b97d59061b5860cddb8203d1a73beb0a9..e11781a1a40e57d8d089229d77520c7195f27eab 100644
--- a/JugReco/src/components/ImagingTopoCluster.cpp
+++ b/JugReco/src/components/ImagingTopoCluster.cpp
@@ -30,9 +30,9 @@
 #include "JugReco/ClusterTypes.h"
 
 // Event Model related classes
-#include "eicd/CalorimeterHitCollection.h"
-#include "eicd/ProtoClusterCollection.h"
-#include "eicd/vector_utils.h"
+#include "edm4eic/CalorimeterHitCollection.h"
+#include "edm4eic/ProtoClusterCollection.h"
+#include "edm4eic/vector_utils.h"
 
 using namespace Gaudi::Units;
 
@@ -68,10 +68,10 @@ private:
   // minimum number of hits (to save this cluster)
   Gaudi::Property<int> m_minClusterNhits{this, "minClusterNhits", 10};
   // input hits collection
-  DataHandle<eicd::CalorimeterHitCollection> m_inputHitCollection{"inputHitCollection", Gaudi::DataHandle::Reader,
+  DataHandle<edm4eic::CalorimeterHitCollection> m_inputHitCollection{"inputHitCollection", Gaudi::DataHandle::Reader,
                                                                   this};
   // output clustered hits
-  DataHandle<eicd::ProtoClusterCollection> m_outputProtoClusterCollection{"outputProtoClusterCollection",
+  DataHandle<edm4eic::ProtoClusterCollection> m_outputProtoClusterCollection{"outputProtoClusterCollection",
                                                                           Gaudi::DataHandle::Writer, this};
 
   // unitless counterparts of the input parameters
@@ -135,7 +135,7 @@ public:
 
     // group neighboring hits
     std::vector<bool> visits(hits.size(), false);
-    std::vector<std::vector<std::pair<uint32_t, eicd::CalorimeterHit>>> groups;
+    std::vector<std::vector<std::pair<uint32_t, edm4eic::CalorimeterHit>>> groups;
     for (size_t i = 0; i < hits.size(); ++i) {
       if (msgLevel(MSG::DEBUG)) {
         debug() << fmt::format("hit {:d}: local position = ({}, {}, {}), global position = ({}, {}, {})", i + 1,
@@ -184,7 +184,7 @@ private:
   template <typename T> static inline T pow2(const T& x) { return x * x; }
 
   // helper function to group hits
-  bool is_neighbor(const eicd::CalorimeterHit& h1, const eicd::CalorimeterHit& h2) const {
+  bool is_neighbor(const edm4eic::CalorimeterHit& h1, const edm4eic::CalorimeterHit& h2) const {
     // different sectors, simple distance check
     if (h1.getSector() != h2.getSector()) {
       return std::sqrt(pow2(h1.getPosition().x - h2.getPosition().x) + pow2(h1.getPosition().y - h2.getPosition().y) +
@@ -198,8 +198,8 @@ private:
       return (std::abs(h1.getLocal().x - h2.getLocal().x) <= localDistXY[0]) &&
              (std::abs(h1.getLocal().y - h2.getLocal().y) <= localDistXY[1]);
     } else if (ldiff <= m_neighbourLayersRange) {
-      return (std::abs(eicd::eta(h1.getPosition()) - eicd::eta(h2.getPosition())) <= layerDistEtaPhi[0]) &&
-             (std::abs(eicd::angleAzimuthal(h1.getPosition()) - eicd::angleAzimuthal(h2.getPosition())) <=
+      return (std::abs(edm4eic::eta(h1.getPosition()) - edm4eic::eta(h2.getPosition())) <= layerDistEtaPhi[0]) &&
+             (std::abs(edm4eic::angleAzimuthal(h1.getPosition()) - edm4eic::angleAzimuthal(h2.getPosition())) <=
               layerDistEtaPhi[1]);
     }
 
@@ -208,8 +208,8 @@ private:
   }
 
   // grouping function with Depth-First Search
-  void dfs_group(std::vector<std::pair<uint32_t, eicd::CalorimeterHit>>& group, int idx,
-                 const eicd::CalorimeterHitCollection& hits, std::vector<bool>& visits) const {
+  void dfs_group(std::vector<std::pair<uint32_t, edm4eic::CalorimeterHit>>& group, int idx,
+                 const edm4eic::CalorimeterHitCollection& hits, std::vector<bool>& visits) const {
     // not a qualified hit to participate in clustering, stop here
     if (hits[idx].getEnergy() < minClusterHitEdep) {
       visits[idx] = true;
diff --git a/JugReco/src/components/InclusiveKinematicsDA.cpp b/JugReco/src/components/InclusiveKinematicsDA.cpp
index fb165d6539bab6d2f594a0538591106290dfa3fa..01286561ac1d2c44929ee3c88f013702887b2718 100644
--- a/JugReco/src/components/InclusiveKinematicsDA.cpp
+++ b/JugReco/src/components/InclusiveKinematicsDA.cpp
@@ -21,9 +21,9 @@ using ROOT::Math::PxPyPzEVector;
 
 // Event Model related classes
 #include "edm4hep/MCParticleCollection.h"
-#include "eicd/MCRecoParticleAssociationCollection.h"
-#include "eicd/ReconstructedParticleCollection.h"
-#include "eicd/InclusiveKinematicsCollection.h"
+#include "edm4eic/MCRecoParticleAssociationCollection.h"
+#include "edm4eic/ReconstructedParticleCollection.h"
+#include "edm4eic/InclusiveKinematicsCollection.h"
 
 namespace Jug::Reco {
 
@@ -33,15 +33,15 @@ private:
     "inputMCParticles",
     Gaudi::DataHandle::Reader,
     this};
-  DataHandle<eicd::ReconstructedParticleCollection> m_inputParticleCollection{
+  DataHandle<edm4eic::ReconstructedParticleCollection> m_inputParticleCollection{
     "inputReconstructedParticles",
     Gaudi::DataHandle::Reader,
     this};
-  DataHandle<eicd::MCRecoParticleAssociationCollection> m_inputParticleAssociation{
+  DataHandle<edm4eic::MCRecoParticleAssociationCollection> m_inputParticleAssociation{
     "inputParticleAssociations",
     Gaudi::DataHandle::Reader,
     this};
-  DataHandle<eicd::InclusiveKinematicsCollection> m_outputInclusiveKinematicsCollection{
+  DataHandle<edm4eic::InclusiveKinematicsCollection> m_outputInclusiveKinematicsCollection{
     "outputInclusiveKinematics",
     Gaudi::DataHandle::Writer,
     this};
diff --git a/JugReco/src/components/InclusiveKinematicsElectron.cpp b/JugReco/src/components/InclusiveKinematicsElectron.cpp
index e16ad98ecaaee617c2d8ae22c78601555979676d..af36f9e2435c9438d27c0bc33de6728c3e1aebaf 100644
--- a/JugReco/src/components/InclusiveKinematicsElectron.cpp
+++ b/JugReco/src/components/InclusiveKinematicsElectron.cpp
@@ -21,9 +21,9 @@ using ROOT::Math::PxPyPzEVector;
 
 // Event Model related classes
 #include "edm4hep/MCParticleCollection.h"
-#include "eicd/MCRecoParticleAssociationCollection.h"
-#include "eicd/ReconstructedParticleCollection.h"
-#include "eicd/InclusiveKinematicsCollection.h"
+#include "edm4eic/MCRecoParticleAssociationCollection.h"
+#include "edm4eic/ReconstructedParticleCollection.h"
+#include "edm4eic/InclusiveKinematicsCollection.h"
 
 namespace Jug::Reco {
 
@@ -33,15 +33,15 @@ private:
     "inputMCParticles",
     Gaudi::DataHandle::Reader,
     this};
-  DataHandle<eicd::ReconstructedParticleCollection> m_inputParticleCollection{
+  DataHandle<edm4eic::ReconstructedParticleCollection> m_inputParticleCollection{
     "inputReconstructedParticles",
     Gaudi::DataHandle::Reader,
     this};
-  DataHandle<eicd::MCRecoParticleAssociationCollection> m_inputParticleAssociation{
+  DataHandle<edm4eic::MCRecoParticleAssociationCollection> m_inputParticleAssociation{
     "inputParticleAssociations",
     Gaudi::DataHandle::Reader,
     this};
-  DataHandle<eicd::InclusiveKinematicsCollection> m_outputInclusiveKinematicsCollection{
+  DataHandle<edm4eic::InclusiveKinematicsCollection> m_outputInclusiveKinematicsCollection{
     "outputInclusiveKinematics",
     Gaudi::DataHandle::Writer,
     this};
diff --git a/JugReco/src/components/InclusiveKinematicsJB.cpp b/JugReco/src/components/InclusiveKinematicsJB.cpp
index 3eb9af359c13947dadc467600d005a0dc1b487ec..d4dd4cf25000abf506b6f1c19084015ac5d528b7 100644
--- a/JugReco/src/components/InclusiveKinematicsJB.cpp
+++ b/JugReco/src/components/InclusiveKinematicsJB.cpp
@@ -21,9 +21,9 @@ using ROOT::Math::PxPyPzEVector;
 
 // Event Model related classes
 #include "edm4hep/MCParticleCollection.h"
-#include "eicd/MCRecoParticleAssociationCollection.h"
-#include "eicd/ReconstructedParticleCollection.h"
-#include "eicd/InclusiveKinematicsCollection.h"
+#include "edm4eic/MCRecoParticleAssociationCollection.h"
+#include "edm4eic/ReconstructedParticleCollection.h"
+#include "edm4eic/InclusiveKinematicsCollection.h"
 
 namespace Jug::Reco {
 
@@ -33,15 +33,15 @@ private:
     "inputMCParticles",
     Gaudi::DataHandle::Reader,
     this};
-  DataHandle<eicd::ReconstructedParticleCollection> m_inputParticleCollection{
+  DataHandle<edm4eic::ReconstructedParticleCollection> m_inputParticleCollection{
     "inputReconstructedParticles",
     Gaudi::DataHandle::Reader,
     this};
-  DataHandle<eicd::MCRecoParticleAssociationCollection> m_inputParticleAssociation{
+  DataHandle<edm4eic::MCRecoParticleAssociationCollection> m_inputParticleAssociation{
     "inputParticleAssociations",
     Gaudi::DataHandle::Reader,
     this};
-  DataHandle<eicd::InclusiveKinematicsCollection> m_outputInclusiveKinematicsCollection{
+  DataHandle<edm4eic::InclusiveKinematicsCollection> m_outputInclusiveKinematicsCollection{
     "outputInclusiveKinematics",
     Gaudi::DataHandle::Writer,
     this};
diff --git a/JugReco/src/components/InclusiveKinematicsSigma.cpp b/JugReco/src/components/InclusiveKinematicsSigma.cpp
index 8070171c6aafcbf44846aa76e61b3b3594c1ff6b..03c21567d9881f684aac2fd4c17df4dbeb6844ba 100644
--- a/JugReco/src/components/InclusiveKinematicsSigma.cpp
+++ b/JugReco/src/components/InclusiveKinematicsSigma.cpp
@@ -21,9 +21,9 @@ using ROOT::Math::PxPyPzEVector;
 
 // Event Model related classes
 #include "edm4hep/MCParticleCollection.h"
-#include "eicd/MCRecoParticleAssociationCollection.h"
-#include "eicd/ReconstructedParticleCollection.h"
-#include "eicd/InclusiveKinematicsCollection.h"
+#include "edm4eic/MCRecoParticleAssociationCollection.h"
+#include "edm4eic/ReconstructedParticleCollection.h"
+#include "edm4eic/InclusiveKinematicsCollection.h"
 
 namespace Jug::Reco {
 
@@ -33,15 +33,15 @@ private:
     "inputMCParticles",
     Gaudi::DataHandle::Reader,
     this};
-  DataHandle<eicd::ReconstructedParticleCollection> m_inputParticleCollection{
+  DataHandle<edm4eic::ReconstructedParticleCollection> m_inputParticleCollection{
     "inputReconstructedParticles",
     Gaudi::DataHandle::Reader,
     this};
-  DataHandle<eicd::MCRecoParticleAssociationCollection> m_inputParticleAssociation{
+  DataHandle<edm4eic::MCRecoParticleAssociationCollection> m_inputParticleAssociation{
     "inputParticleAssociations",
     Gaudi::DataHandle::Reader,
     this};
-  DataHandle<eicd::InclusiveKinematicsCollection> m_outputInclusiveKinematicsCollection{
+  DataHandle<edm4eic::InclusiveKinematicsCollection> m_outputInclusiveKinematicsCollection{
     "outputInclusiveKinematics",
     Gaudi::DataHandle::Writer,
     this};
diff --git a/JugReco/src/components/InclusiveKinematicseSigma.cpp b/JugReco/src/components/InclusiveKinematicseSigma.cpp
index 1fca5366c9b79a9d5cb0f44b7229dbc85eded8ab..f9c52852b90c562258ef87c4b4c0c881ca98cc01 100644
--- a/JugReco/src/components/InclusiveKinematicseSigma.cpp
+++ b/JugReco/src/components/InclusiveKinematicseSigma.cpp
@@ -21,9 +21,9 @@ using ROOT::Math::PxPyPzEVector;
 
 // Event Model related classes
 #include "edm4hep/MCParticleCollection.h"
-#include "eicd/MCRecoParticleAssociationCollection.h"
-#include "eicd/ReconstructedParticleCollection.h"
-#include "eicd/InclusiveKinematicsCollection.h"
+#include "edm4eic/MCRecoParticleAssociationCollection.h"
+#include "edm4eic/ReconstructedParticleCollection.h"
+#include "edm4eic/InclusiveKinematicsCollection.h"
 
 namespace Jug::Reco {
 
@@ -33,15 +33,15 @@ private:
     "inputMCParticles",
     Gaudi::DataHandle::Reader,
     this};
-  DataHandle<eicd::ReconstructedParticleCollection> m_inputParticleCollection{
+  DataHandle<edm4eic::ReconstructedParticleCollection> m_inputParticleCollection{
     "inputReconstructedParticles",
     Gaudi::DataHandle::Reader,
     this};
-  DataHandle<eicd::MCRecoParticleAssociationCollection> m_inputParticleAssociation{
+  DataHandle<edm4eic::MCRecoParticleAssociationCollection> m_inputParticleAssociation{
     "inputParticleAssociations",
     Gaudi::DataHandle::Reader,
     this};
-  DataHandle<eicd::InclusiveKinematicsCollection> m_outputInclusiveKinematicsCollection{
+  DataHandle<edm4eic::InclusiveKinematicsCollection> m_outputInclusiveKinematicsCollection{
     "outputInclusiveKinematics",
     Gaudi::DataHandle::Writer,
     this};
diff --git a/JugReco/src/components/ParticleCollector.cpp b/JugReco/src/components/ParticleCollector.cpp
index 24e28b5c71c06484d732dd8781cc1e933d10cbbd..59f4306808fc8fb6e9a63e9e953514552180e5e7 100644
--- a/JugReco/src/components/ParticleCollector.cpp
+++ b/JugReco/src/components/ParticleCollector.cpp
@@ -10,7 +10,7 @@
 #include "JugBase/DataHandle.h"
 
 // Event Model related classes
-#include "eicd/ReconstructedParticleCollection.h"
+#include "edm4eic/ReconstructedParticleCollection.h"
 
 namespace Jug::Reco {
 
@@ -24,10 +24,10 @@ namespace Jug::Reco {
 class ParticleCollector : public GaudiAlgorithm {
 private:
   Gaudi::Property<std::vector<std::string>> m_inputParticles{this, "inputParticles", {}, "Particles to be aggregated"};
-  DataHandle<eicd::ReconstructedParticleCollection> m_outputParticles{"outputParticles", Gaudi::DataHandle::Writer,
+  DataHandle<edm4eic::ReconstructedParticleCollection> m_outputParticles{"outputParticles", Gaudi::DataHandle::Writer,
                                                                      this};
 
-  std::vector<DataHandle<eicd::ReconstructedParticleCollection>*> m_particleCollections;
+  std::vector<DataHandle<edm4eic::ReconstructedParticleCollection>*> m_particleCollections;
 
 public:
   ParticleCollector(const std::string& name, ISvcLocator* svcLoc) : GaudiAlgorithm(name, svcLoc) {
@@ -46,7 +46,7 @@ public:
     for (auto colname : m_inputParticles) {
       debug() << "initializing collection: " << colname << endmsg;
       m_particleCollections.push_back(
-          new DataHandle<eicd::ReconstructedParticleCollection>{colname, Gaudi::DataHandle::Reader, this});
+          new DataHandle<edm4eic::ReconstructedParticleCollection>{colname, Gaudi::DataHandle::Reader, this});
     }
     return StatusCode::SUCCESS;
   }
diff --git a/JugReco/src/components/PhotoMultiplierReco.cpp b/JugReco/src/components/PhotoMultiplierReco.cpp
index 141446bcb52cccd30d0ab44e7b5f09dee7c87d18..652a044b6d8b4d2cfef959a65f5b6a8183ef3f17 100644
--- a/JugReco/src/components/PhotoMultiplierReco.cpp
+++ b/JugReco/src/components/PhotoMultiplierReco.cpp
@@ -28,8 +28,8 @@
 #include "JugBase/IGeoSvc.h"
 
 // Event Model related classes
-#include "eicd/PMTHitCollection.h"
-#include "eicd/RawPMTHitCollection.h"
+#include "edm4eic/PMTHitCollection.h"
+#include "edm4eic/RawPMTHitCollection.h"
 
 using namespace Gaudi::Units;
 
@@ -44,8 +44,8 @@ namespace Jug::Reco {
  */
 class PhotoMultiplierReco : public GaudiAlgorithm {
 private:
-  DataHandle<eicd::RawPMTHitCollection> m_inputHitCollection{"inputHitCollection", Gaudi::DataHandle::Reader, this};
-  DataHandle<eicd::PMTHitCollection> m_outputHitCollection{"outputHitCollection", Gaudi::DataHandle::Writer, this};
+  DataHandle<edm4eic::RawPMTHitCollection> m_inputHitCollection{"inputHitCollection", Gaudi::DataHandle::Reader, this};
+  DataHandle<edm4eic::PMTHitCollection> m_outputHitCollection{"outputHitCollection", Gaudi::DataHandle::Writer, this};
   Gaudi::Property<double> m_timeStep{this, "timeStep", 0.0625 * ns};
   Gaudi::Property<double> m_minNpe{this, "minNpe", 0.0};
   Gaudi::Property<double> m_speMean{this, "speMean", 80.0};
@@ -91,7 +91,7 @@ public:
         auto pos = m_geoSvc->cellIDPositionConverter()->findContext(id)->volumePlacement().position();
         // cell dimension
         auto dim = m_geoSvc->cellIDPositionConverter()->cellDimensions(id);
-        hits.push_back(eicd::PMTHit{
+        hits.push_back(edm4eic::PMTHit{
             rh.getCellID(),
             npe,
             time,
diff --git a/JugReco/src/components/SimpleClustering.cpp b/JugReco/src/components/SimpleClustering.cpp
index 446a73627039465660c265be03426cf655c8625e..a48b4248566e6b893afac04585fb4ae648b66e28 100644
--- a/JugReco/src/components/SimpleClustering.cpp
+++ b/JugReco/src/components/SimpleClustering.cpp
@@ -20,11 +20,11 @@
 
 // Event Model related classes
 #include "edm4hep/SimCalorimeterHitCollection.h"
-#include "eicd/CalorimeterHitCollection.h"
-#include "eicd/ClusterCollection.h"
-#include "eicd/ProtoClusterCollection.h"
-#include "eicd/RawCalorimeterHitCollection.h"
-#include "eicd/vector_utils.h"
+#include "edm4eic/CalorimeterHitCollection.h"
+#include "edm4eic/ClusterCollection.h"
+#include "edm4eic/ProtoClusterCollection.h"
+#include "edm4eic/RawCalorimeterHitCollection.h"
+#include "edm4eic/vector_utils.h"
 
 using namespace Gaudi::Units;
 
@@ -36,9 +36,9 @@ namespace Jug::Reco {
    */
   class SimpleClustering : public GaudiAlgorithm {
   private:
-    using RecHits  = eicd::CalorimeterHitCollection;
-    using ProtoClusters = eicd::ProtoClusterCollection;
-    using Clusters = eicd::ClusterCollection;
+    using RecHits  = edm4eic::CalorimeterHitCollection;
+    using ProtoClusters = edm4eic::ProtoClusterCollection;
+    using Clusters = edm4eic::ClusterCollection;
 
     DataHandle<RecHits>       m_inputHitCollection{"inputHitCollection", Gaudi::DataHandle::Reader, this};
     DataHandle<ProtoClusters> m_outputProtoClusters{"outputProtoCluster", Gaudi::DataHandle::Writer, this};
@@ -97,13 +97,13 @@ namespace Jug::Reco {
       //  mcHits = m_inputMC->get();
       //}
 
-      std::vector<std::pair<uint32_t, eicd::CalorimeterHit>> the_hits;
-      std::vector<std::pair<uint32_t, eicd::CalorimeterHit>> remaining_hits;
+      std::vector<std::pair<uint32_t, edm4eic::CalorimeterHit>> the_hits;
+      std::vector<std::pair<uint32_t, edm4eic::CalorimeterHit>> remaining_hits;
 
       double max_dist   = m_maxDistance.value() / mm;
       double min_energy = m_minModuleEdep.value() / GeV;
 
-      eicd::CalorimeterHit ref_hit;
+      edm4eic::CalorimeterHit ref_hit;
       bool have_ref = false;
       // Collect all our hits, and get the highest energy hit
       {
@@ -124,10 +124,10 @@ namespace Jug::Reco {
 
       while (have_ref && ref_hit.getEnergy() > min_energy) {
 
-        std::vector<std::pair<uint32_t, eicd::CalorimeterHit>> cluster_hits;
+        std::vector<std::pair<uint32_t, edm4eic::CalorimeterHit>> cluster_hits;
 
         for (const auto& [idx, h] : the_hits) {
-          if (eicd::magnitude(h.getPosition() - ref_hit.getPosition()) < max_dist) {
+          if (edm4eic::magnitude(h.getPosition() - ref_hit.getPosition()) < max_dist) {
             cluster_hits.emplace_back(idx, h);
           } else {
             remaining_hits.emplace_back(idx, h);
@@ -136,7 +136,7 @@ namespace Jug::Reco {
 
         double total_energy = std::accumulate(
             std::begin(cluster_hits), std::end(cluster_hits), 0.0,
-            [](double t, const std::pair<uint32_t, eicd::CalorimeterHit>& h1) { return (t + h1.second.getEnergy()); });
+            [](double t, const std::pair<uint32_t, edm4eic::CalorimeterHit>& h1) { return (t + h1.second.getEnergy()); });
 
         if (msgLevel(MSG::DEBUG)) {
           debug() << " total_energy = " << total_energy << endmsg;
diff --git a/JugReco/src/components/TrackerHitReconstruction.cpp b/JugReco/src/components/TrackerHitReconstruction.cpp
index b6692087e949e38bf14f6c0c86842e3440d3b984..d054f7b1775322e6184efe88877ce0b8947a7487 100644
--- a/JugReco/src/components/TrackerHitReconstruction.cpp
+++ b/JugReco/src/components/TrackerHitReconstruction.cpp
@@ -21,8 +21,8 @@
 
 // Event Model related classes
 //#include "GaudiExamples/MyTrack.h"
-#include "eicd/RawTrackerHitCollection.h"
-#include "eicd/TrackerHitCollection.h"
+#include "edm4eic/RawTrackerHitCollection.h"
+#include "edm4eic/TrackerHitCollection.h"
 
 #include "DD4hep/DD4hepUnits.h"
 
@@ -46,9 +46,9 @@ namespace Jug::Reco {
   class TrackerHitReconstruction : public GaudiAlgorithm {
   private:
     Gaudi::Property<float> m_timeResolution{this, "timeResolution", 10}; // in ns
-    DataHandle<eicd::RawTrackerHitCollection> m_inputHitCollection{"inputHitCollection", Gaudi::DataHandle::Reader,
+    DataHandle<edm4eic::RawTrackerHitCollection> m_inputHitCollection{"inputHitCollection", Gaudi::DataHandle::Reader,
                                                                    this};
-    DataHandle<eicd::TrackerHitCollection> m_outputHitCollection{"outputHitCollection", Gaudi::DataHandle::Writer,
+    DataHandle<edm4eic::TrackerHitCollection> m_outputHitCollection{"outputHitCollection", Gaudi::DataHandle::Writer,
                                                                  this};
 
     /// Pointer to the geometry service
@@ -106,7 +106,7 @@ namespace Jug::Reco {
         //      - XYZ segmentation: xx -> sigma_x, yy-> sigma_y, zz -> sigma_z, tt -> 0
         //    This is properly in line with how we get the local coordinates for the hit
         //    in the TrackerSourceLinker.
-        eicd::TrackerHit hit{ahit.getCellID(), // Raw DD4hep cell ID
+        edm4eic::TrackerHit hit{ahit.getCellID(), // Raw DD4hep cell ID
                              {static_cast<float>(pos.x() / mm), static_cast<float>(pos.y() / mm),
                               static_cast<float>(pos.z() / mm)},                    // mm
                              {get_variance(dim[0] / mm), get_variance(dim[1] / mm), // variance (see note above)
diff --git a/JugReco/src/components/TrackingHitsCollector.cpp b/JugReco/src/components/TrackingHitsCollector.cpp
index 2172314917690ead14143e9797d9431b50635b2a..0e4d1ea7a35025944abd0337b297960021831afd 100644
--- a/JugReco/src/components/TrackingHitsCollector.cpp
+++ b/JugReco/src/components/TrackingHitsCollector.cpp
@@ -10,7 +10,7 @@
 #include "JugBase/DataHandle.h"
 
 // Event Model related classes
-#include "eicd/TrackerHitCollection.h"
+#include "edm4eic/TrackerHitCollection.h"
 
 namespace Jug::Reco {
 
@@ -20,12 +20,12 @@ namespace Jug::Reco {
      */
     class TrackingHitsCollector : public GaudiAlgorithm {
     private:
-      DataHandle<eicd::TrackerHitCollection> m_trackerBarrelHits{"trackerBarrelHits", Gaudi::DataHandle::Reader, this};
-      DataHandle<eicd::TrackerHitCollection> m_trackerEndcapHits{"trackerEndcapHits", Gaudi::DataHandle::Reader, this};
-      DataHandle<eicd::TrackerHitCollection> m_vertexBarrelHits {"vertexBarrelHits" , Gaudi::DataHandle::Reader, this};
-      DataHandle<eicd::TrackerHitCollection> m_vertexEndcapHits {"vertexEndcapHits" , Gaudi::DataHandle::Reader, this};
-      DataHandle<eicd::TrackerHitCollection> m_gemEndcapHits {"gemEndcapHits" , Gaudi::DataHandle::Reader, this};
-      DataHandle<eicd::TrackerHitCollection> m_outputHitCollection{"outputHitCollection", Gaudi::DataHandle::Writer, this};
+      DataHandle<edm4eic::TrackerHitCollection> m_trackerBarrelHits{"trackerBarrelHits", Gaudi::DataHandle::Reader, this};
+      DataHandle<edm4eic::TrackerHitCollection> m_trackerEndcapHits{"trackerEndcapHits", Gaudi::DataHandle::Reader, this};
+      DataHandle<edm4eic::TrackerHitCollection> m_vertexBarrelHits {"vertexBarrelHits" , Gaudi::DataHandle::Reader, this};
+      DataHandle<edm4eic::TrackerHitCollection> m_vertexEndcapHits {"vertexEndcapHits" , Gaudi::DataHandle::Reader, this};
+      DataHandle<edm4eic::TrackerHitCollection> m_gemEndcapHits {"gemEndcapHits" , Gaudi::DataHandle::Reader, this};
+      DataHandle<edm4eic::TrackerHitCollection> m_outputHitCollection{"outputHitCollection", Gaudi::DataHandle::Writer, this};
 
     public:
       TrackingHitsCollector(const std::string& name, ISvcLocator* svcLoc)
@@ -47,11 +47,11 @@ namespace Jug::Reco {
 
       StatusCode execute() override
       {
-        const eicd::TrackerHitCollection* trkBarrelHits = m_trackerBarrelHits.get();
-        const eicd::TrackerHitCollection* trkEndcapHits = m_trackerEndcapHits.get();
-        const eicd::TrackerHitCollection* vtxBarrelHits = m_vertexBarrelHits .get();
-        const eicd::TrackerHitCollection* vtxEndcapHits = m_vertexEndcapHits .get();
-        const eicd::TrackerHitCollection* gemEndcapHits = m_gemEndcapHits .get();
+        const edm4eic::TrackerHitCollection* trkBarrelHits = m_trackerBarrelHits.get();
+        const edm4eic::TrackerHitCollection* trkEndcapHits = m_trackerEndcapHits.get();
+        const edm4eic::TrackerHitCollection* vtxBarrelHits = m_vertexBarrelHits .get();
+        const edm4eic::TrackerHitCollection* vtxEndcapHits = m_vertexEndcapHits .get();
+        const edm4eic::TrackerHitCollection* gemEndcapHits = m_gemEndcapHits .get();
         auto* outputHits = m_outputHitCollection.createAndPut();
 
         for (const auto* hits : {trkBarrelHits, trkEndcapHits, vtxBarrelHits, vtxEndcapHits, gemEndcapHits}) {
diff --git a/JugReco/src/components/TrackingHitsCollector2.cpp b/JugReco/src/components/TrackingHitsCollector2.cpp
index da51534c13754cd172d4dd73138d1dc14f934d26..17afb4f2b1b94b88a8044be487ea2fd4b761cf05 100644
--- a/JugReco/src/components/TrackingHitsCollector2.cpp
+++ b/JugReco/src/components/TrackingHitsCollector2.cpp
@@ -10,7 +10,7 @@
 #include "JugBase/DataHandle.h"
 
 // Event Model related classes
-#include "eicd/TrackerHitCollection.h"
+#include "edm4eic/TrackerHitCollection.h"
 
 namespace Jug::Reco {
 
@@ -24,9 +24,9 @@ namespace Jug::Reco {
     class TrackingHitsCollector2 : public GaudiAlgorithm {
     private:
       Gaudi::Property<std::vector<std::string>> m_inputTrackingHits{this, "inputTrackingHits", {},"Tracker hits to be aggregated"};
-      DataHandle<eicd::TrackerHitCollection> m_trackingHits{"trackingHits", Gaudi::DataHandle::Writer, this};
+      DataHandle<edm4eic::TrackerHitCollection> m_trackingHits{"trackingHits", Gaudi::DataHandle::Writer, this};
 
-      std::vector<DataHandle<eicd::TrackerHitCollection>*> m_hitCollections;
+      std::vector<DataHandle<edm4eic::TrackerHitCollection>*> m_hitCollections;
 
     public:
       TrackingHitsCollector2(const std::string& name, ISvcLocator* svcLoc)
@@ -46,7 +46,7 @@ namespace Jug::Reco {
         }
         for (auto colname : m_inputTrackingHits) {
           debug() << "initializing collection: " << colname  << endmsg;
-          m_hitCollections.push_back(new DataHandle<eicd::TrackerHitCollection>{colname, Gaudi::DataHandle::Reader, this});
+          m_hitCollections.push_back(new DataHandle<edm4eic::TrackerHitCollection>{colname, Gaudi::DataHandle::Reader, this});
         }
         return StatusCode::SUCCESS;
       }
@@ -58,7 +58,7 @@ namespace Jug::Reco {
           debug() << "execute collector" << endmsg;
         }
         for(const auto& hits: m_hitCollections) {
-          const eicd::TrackerHitCollection* hitCol = hits->get();
+          const edm4eic::TrackerHitCollection* hitCol = hits->get();
           if (msgLevel(MSG::DEBUG)) {
             debug() << "col n hits: " << hitCol->size() << endmsg;
           }
diff --git a/JugTrack/CMakeLists.txt b/JugTrack/CMakeLists.txt
index fc6bf3347e31ce86e4b1d584259e37cb673d965f..0fb0c66c6ee21991d6ca1d70bf4f142a441a3792 100644
--- a/JugTrack/CMakeLists.txt
+++ b/JugTrack/CMakeLists.txt
@@ -14,7 +14,7 @@ gaudi_add_module(JugTrackPlugins
   JugBase
   ROOT::Core ROOT::RIO ROOT::Tree
   EDM4HEP::edm4hep
-  EICD::eicd
+  EDM4EIC::edm4eic
   DD4hep::DDRec
   ActsCore
   ${genfit2}
diff --git a/JugTrack/JugTrack/SourceLinks.h b/JugTrack/JugTrack/SourceLinks.h
index 898ace3d8a42380ebe7ad620b0eedd542e434c0d..0598edac3e0458359fd38facae8769e9aae5ee5a 100644
--- a/JugTrack/JugTrack/SourceLinks.h
+++ b/JugTrack/JugTrack/SourceLinks.h
@@ -10,7 +10,7 @@
 #include <stdexcept>
 #include <string>
 
-#include "eicd/TrackerHitCollection.h"
+#include "edm4eic/TrackerHitCollection.h"
 
 
 namespace Jug {
@@ -34,7 +34,7 @@ class SourceLink {
   // need to store pointers to make the object copyable
   const Acts::Surface* m_surface;
   //const ActsFatras::Hit* m_truthHit;
-  const eicd::TrackerHit* m_Hit ;
+  const edm4eic::TrackerHit* m_Hit ;
 
  public:
   SourceLink(const Acts::Surface& surface, //const ActsFatras::Hit& truthHit,
diff --git a/JugTrack/src/components/CKFTracking.cpp b/JugTrack/src/components/CKFTracking.cpp
index adabc3d48ab3b16cc1d49d0ee8f3c2b228f7b4d9..2875edc2894d205192311bcc7797cddff7cc049b 100644
--- a/JugTrack/src/components/CKFTracking.cpp
+++ b/JugTrack/src/components/CKFTracking.cpp
@@ -40,7 +40,7 @@
 #include "JugTrack/Track.hpp"
 
 
-#include "eicd/TrackerHitCollection.h"
+#include "edm4eic/TrackerHitCollection.h"
 
 #include <functional>
 #include <stdexcept>
diff --git a/JugTrack/src/components/CKFTracking.h b/JugTrack/src/components/CKFTracking.h
index ead37d25a8be72ae92a69387752fb4614e272aa9..aff038028247b570cf4b31b73e65b326842c9477 100644
--- a/JugTrack/src/components/CKFTracking.h
+++ b/JugTrack/src/components/CKFTracking.h
@@ -23,7 +23,7 @@
 #include "JugTrack/Track.hpp"
 #include "JugTrack/Trajectories.hpp"
 
-#include "eicd/TrackerHitCollection.h"
+#include "edm4eic/TrackerHitCollection.h"
 
 #include "Acts/Definitions/Common.hpp"
 #include "Acts/Geometry/TrackingGeometry.hpp"
diff --git a/JugTrack/src/components/ConformalXYPeakProtoTracks.cpp b/JugTrack/src/components/ConformalXYPeakProtoTracks.cpp
index 5ee77192c5e2c4b8c6e5de4f0899461d1ec15bb8..94a9da2fab531d8e60916d549eff3a81b756ac4c 100644
--- a/JugTrack/src/components/ConformalXYPeakProtoTracks.cpp
+++ b/JugTrack/src/components/ConformalXYPeakProtoTracks.cpp
@@ -18,7 +18,7 @@
 #include "Math/Vector3D.h"
 #include "Math/Vector2D.h"
 
-#include "eicd/TrackerHitCollection.h"
+#include "edm4eic/TrackerHitCollection.h"
 
 namespace Jug::Reco {
 
@@ -30,7 +30,7 @@ namespace Jug::Reco {
  */
 class ConformalXYPeakProtoTracks : public GaudiAlgorithm {
 private:
-  DataHandle<eicd::TrackerHitCollection> m_inputTrackerHits{"inputTrackerHits", Gaudi::DataHandle::Reader, this};
+  DataHandle<edm4eic::TrackerHitCollection> m_inputTrackerHits{"inputTrackerHits", Gaudi::DataHandle::Reader, this};
   DataHandle<Jug::ProtoTrackContainer> m_outputProtoTracks{"outputProtoTracks", Gaudi::DataHandle::Writer, this};
   DataHandle<int> m_nProtoTracks{"nProtoTracks", Gaudi::DataHandle::Writer, this};
 
@@ -54,7 +54,7 @@ public:
 
   StatusCode execute() override {
     // input collection
-    const eicd::TrackerHitCollection* hits = m_inputTrackerHits.get();
+    const edm4eic::TrackerHitCollection* hits = m_inputTrackerHits.get();
     // Create output collections
     auto* proto_tracks = m_outputProtoTracks.createAndPut();
     int n_proto_tracks = 0;
diff --git a/JugTrack/src/components/FinderAlgoTemplate.cpp b/JugTrack/src/components/FinderAlgoTemplate.cpp
index 0425abdd2ba8666e68a73192fe3e6d65a6b474e5..c2238d4b5d06850ad4fb785d0d78abaa568dd794 100644
--- a/JugTrack/src/components/FinderAlgoTemplate.cpp
+++ b/JugTrack/src/components/FinderAlgoTemplate.cpp
@@ -16,7 +16,7 @@
 
 #include "Math/Vector3D.h"
 
-#include "eicd/TrackerHitCollection.h"
+#include "edm4eic/TrackerHitCollection.h"
 
 namespace Jug::Reco {
 
@@ -26,7 +26,7 @@ namespace Jug::Reco {
  */
 class FinderAlgoTemplate : public GaudiAlgorithm {
 private:
-  DataHandle<eicd::TrackerHitCollection> m_inputTrackerHits{"inputTrackerHits", Gaudi::DataHandle::Reader, this};
+  DataHandle<edm4eic::TrackerHitCollection> m_inputTrackerHits{"inputTrackerHits", Gaudi::DataHandle::Reader, this};
   DataHandle<Jug::ProtoTrackContainer> m_outputProtoTracks{"outputProtoTracks", Gaudi::DataHandle::Writer, this};
 
 public:
@@ -44,7 +44,7 @@ public:
 
   StatusCode execute() override {
     // input collection
-    //const eicd::TrackerHitCollection* hits = m_inputTrackerHits.get();
+    //const edm4eic::TrackerHitCollection* hits = m_inputTrackerHits.get();
     // Create output collections
     /*auto proto_tracks = */m_outputProtoTracks.createAndPut();
 
diff --git a/JugTrack/src/components/GenFitTrackFitter.cpp b/JugTrack/src/components/GenFitTrackFitter.cpp
index f8c52aa269c37ffca7ef5cdbe213c7fe8338e287..48db05dbe16bee56e231064e47037857e43293d1 100644
--- a/JugTrack/src/components/GenFitTrackFitter.cpp
+++ b/JugTrack/src/components/GenFitTrackFitter.cpp
@@ -22,8 +22,8 @@
 #include "JugTrack/Measurement.hpp"
 #include "JugTrack/Track.hpp"
 
-#include "eicd/TrackerHitCollection.h"
-#include "eicd/vector_utils.h"
+#include "edm4eic/TrackerHitCollection.h"
+#include "edm4eic/vector_utils.h"
 
 #include <functional>
 #include <random>
@@ -90,7 +90,7 @@ StatusCode GenFitTrackFitter::initialize() {
 
 StatusCode GenFitTrackFitter::execute() {
   // Read input data
-  const eicd::TrackerHitCollection* hits            = m_inputHitCollection.get();
+  const edm4eic::TrackerHitCollection* hits            = m_inputHitCollection.get();
   const TrackParametersContainer* initialParameters = m_initialTrackParameters.get();
   const ProtoTrackContainer* protoTracks            = m_inputProtoTracks.get();
 
@@ -127,7 +127,7 @@ StatusCode GenFitTrackFitter::execute() {
 
     ROOT::Math::XYZVector tp(track_param.momentum()[0], track_param.momentum()[1], track_param.momentum()[2]);
     auto first_hit       = (*hits)[proto_track[0]];
-    auto first_hit_phi   = eicd::angleAzimuthal(first_hit.getPosition());
+    auto first_hit_phi   = edm4eic::angleAzimuthal(first_hit.getPosition());
     auto track_param_phi = tp.phi();
     if (msgLevel(MSG::DEBUG)) {
       debug() << " first hit phi:  " << first_hit_phi << endmsg;
@@ -291,10 +291,10 @@ StatusCode GenFitTrackFitter::execute() {
       continue;
     }
 
-    // eicd::TrackParameters electron_track_params({ID++, algorithmID()}, {0.0,0.0},{0.0,0.0},{0.0,0.0},{0.0,0.0},
+    // edm4eic::TrackParameters electron_track_params({ID++, algorithmID()}, {0.0,0.0},{0.0,0.0},{0.0,0.0},{0.0,0.0},
 
-    // TrackParameters(eicd::Index ID, eicd::FloatPair loc, eicd::FloatPair locError, eicd::Direction direction,
-    // eicd::Direction directionError, float qOverP, float qOverPError, float time, float timeError);
+    // TrackParameters(edm4eic::Index ID, edm4eic::FloatPair loc, edm4eic::FloatPair locError, edm4eic::Direction direction,
+    // edm4eic::Direction directionError, float qOverP, float qOverPError, float time, float timeError);
     // tracks->push_back(electron_track_params);
 
     // delete fitter;
diff --git a/JugTrack/src/components/GenFitTrackFitter.h b/JugTrack/src/components/GenFitTrackFitter.h
index 8f2e254a6f35564734e438a16df56a202db40b89..6efac291158ac85af319d3438cbe936481a4b9a7 100644
--- a/JugTrack/src/components/GenFitTrackFitter.h
+++ b/JugTrack/src/components/GenFitTrackFitter.h
@@ -23,9 +23,9 @@
 #include "JugTrack/Trajectories.hpp"
 #include "JugTrack/ProtoTrack.hpp"
 
-#include "eicd/TrackerHitCollection.h"
-#include "eicd/TrajectoryCollection.h"
-#include "eicd/TrackParametersCollection.h"
+#include "edm4eic/TrackerHitCollection.h"
+#include "edm4eic/TrajectoryCollection.h"
+#include "edm4eic/TrackParametersCollection.h"
 
 //genfitk
 #include "FieldManager.h"
@@ -77,11 +77,11 @@ namespace Jug::Reco {
   };
 
 public:
-  DataHandle<eicd::TrackerHitCollection> m_inputHitCollection{"inputHitCollection", Gaudi::DataHandle::Reader, this};
+  DataHandle<edm4eic::TrackerHitCollection> m_inputHitCollection{"inputHitCollection", Gaudi::DataHandle::Reader, this};
   DataHandle<TrackParametersContainer>  m_initialTrackParameters{"initialTrackParameters", Gaudi::DataHandle::Reader, this};
   DataHandle<ProtoTrackContainer>       m_inputProtoTracks{"inputProtoTracks", Gaudi::DataHandle::Reader, this};
-  DataHandle<eicd::TrackParametersCollection> m_foundTracks{"trackParameters", Gaudi::DataHandle::Reader, this};
-  DataHandle<eicd::TrajectoryCollection> m_outputTrajectories{"outputTrajectories", Gaudi::DataHandle::Writer, this};
+  DataHandle<edm4eic::TrackParametersCollection> m_foundTracks{"trackParameters", Gaudi::DataHandle::Reader, this};
+  DataHandle<edm4eic::TrajectoryCollection> m_outputTrajectories{"outputTrajectories", Gaudi::DataHandle::Writer, this};
 
   SmartIF<IGeoSvc> m_geoSvc;
   // Acts::GeometryContext                 m_geoctx;
diff --git a/JugTrack/src/components/HoughTransformProtoTracks.cpp b/JugTrack/src/components/HoughTransformProtoTracks.cpp
index 1816b7353bfbc7ef4a9fe60b71d34ae24a5e8d4b..04eac00b6137cdf566762a29e97fef861173f80f 100644
--- a/JugTrack/src/components/HoughTransformProtoTracks.cpp
+++ b/JugTrack/src/components/HoughTransformProtoTracks.cpp
@@ -16,7 +16,7 @@
 
 #include "Math/Vector3D.h"
 
-#include "eicd/TrackerHitCollection.h"
+#include "edm4eic/TrackerHitCollection.h"
 
 namespace Jug::Reco {
 
@@ -26,7 +26,7 @@ namespace Jug::Reco {
  */
 class HoughTransformProtoTracks : public GaudiAlgorithm {
 private:
-  DataHandle<eicd::TrackerHitCollection> m_inputTrackerHits{"inputTrackerHits", Gaudi::DataHandle::Reader, this};
+  DataHandle<edm4eic::TrackerHitCollection> m_inputTrackerHits{"inputTrackerHits", Gaudi::DataHandle::Reader, this};
   DataHandle<Jug::ProtoTrackContainer> m_outputProtoTracks{"outputProtoTracks", Gaudi::DataHandle::Writer, this};
 
 public:
@@ -43,7 +43,7 @@ public:
 
   StatusCode execute() override {
     // input collection
-    //const eicd::TrackerHitCollection* hits = m_inputTrackerHits.get();
+    //const edm4eic::TrackerHitCollection* hits = m_inputTrackerHits.get();
     // Create output collections
     //auto proto_tracks = m_outputProtoTracks.createAndPut();
 
diff --git a/JugTrack/src/components/ParticlesFromTrackFit.cpp b/JugTrack/src/components/ParticlesFromTrackFit.cpp
index daa30eea361b9ffa5997f6d10130a1a88b7caa21..4312b65b9d114344efdfb44178eb7affbe2d3967 100644
--- a/JugTrack/src/components/ParticlesFromTrackFit.cpp
+++ b/JugTrack/src/components/ParticlesFromTrackFit.cpp
@@ -22,16 +22,16 @@
 #include "Acts/EventData/MultiTrajectoryHelpers.hpp"
 
 // Event Model related classes
-#include "eicd/ReconstructedParticleCollection.h"
-#include "eicd/TrackerHitCollection.h"
-#include "eicd/TrackParametersCollection.h"
+#include "edm4eic/ReconstructedParticleCollection.h"
+#include "edm4eic/TrackerHitCollection.h"
+#include "edm4eic/TrackParametersCollection.h"
 #include "JugTrack/IndexSourceLink.hpp"
 #include "JugTrack/Track.hpp"
 #include "JugTrack/Trajectories.hpp"
 
 #include "Acts/Utilities/Helpers.hpp"
 
-#include "eicd/vector_utils.h"
+#include "edm4eic/vector_utils.h"
 
 #include <cmath>
 
@@ -44,8 +44,8 @@ namespace Jug::Reco {
    class ParticlesFromTrackFit : public GaudiAlgorithm {
    private:
     DataHandle<TrajectoriesContainer>     m_inputTrajectories{"inputTrajectories", Gaudi::DataHandle::Reader, this};
-    DataHandle<eicd::ReconstructedParticleCollection> m_outputParticles{"outputParticles", Gaudi::DataHandle::Writer, this};
-    DataHandle<eicd::TrackParametersCollection> m_outputTrackParameters{"outputTrackParameters", Gaudi::DataHandle::Writer, this};
+    DataHandle<edm4eic::ReconstructedParticleCollection> m_outputParticles{"outputParticles", Gaudi::DataHandle::Writer, this};
+    DataHandle<edm4eic::TrackParametersCollection> m_outputTrackParameters{"outputTrackParameters", Gaudi::DataHandle::Writer, this};
 
    public:
     //  ill-formed: using GaudiAlgorithm::GaudiAlgorithm;
@@ -116,24 +116,24 @@ namespace Jug::Reco {
               debug() << " chi2 = " << trajState.chi2Sum << endmsg;
             }
 
-            const decltype(eicd::TrackParametersData::loc) loc {
+            const decltype(edm4eic::TrackParametersData::loc) loc {
               static_cast<float>(parameter[Acts::eBoundLoc0]),
               static_cast<float>(parameter[Acts::eBoundLoc1])
             };
-            const decltype(eicd::TrackParametersData::momentumError) momentumError {
+            const decltype(edm4eic::TrackParametersData::momentumError) momentumError {
               static_cast<float>(covariance(Acts::eBoundTheta, Acts::eBoundTheta)),
               static_cast<float>(covariance(Acts::eBoundPhi, Acts::eBoundPhi)),
               static_cast<float>(covariance(Acts::eBoundQOverP, Acts::eBoundQOverP)),
               static_cast<float>(covariance(Acts::eBoundTheta, Acts::eBoundPhi)),
               static_cast<float>(covariance(Acts::eBoundTheta, Acts::eBoundQOverP)),
               static_cast<float>(covariance(Acts::eBoundPhi, Acts::eBoundQOverP))};
-            const decltype(eicd::TrackParametersData::locError) locError {
+            const decltype(edm4eic::TrackParametersData::locError) locError {
               static_cast<float>(covariance(Acts::eBoundLoc0, Acts::eBoundLoc0)),
               static_cast<float>(covariance(Acts::eBoundLoc1, Acts::eBoundLoc1)),
               static_cast<float>(covariance(Acts::eBoundLoc0, Acts::eBoundLoc1))};
             const float timeError{sqrt(static_cast<float>(covariance(Acts::eBoundTime, Acts::eBoundTime)))};
 
-            eicd::TrackParameters pars{
+            edm4eic::TrackParameters pars{
               0, // type: track head --> 0
               loc,
               locError,
@@ -173,7 +173,7 @@ namespace Jug::Reco {
 
             auto rec_part = rec_parts->create();
             rec_part.setMomentum(
-              eicd::sphericalToVector(
+              edm4eic::sphericalToVector(
                 1.0 / std::abs(params[Acts::eBoundQOverP]),
                 params[Acts::eBoundTheta],
                 params[Acts::eBoundPhi])
diff --git a/JugTrack/src/components/ProtoTrackMatching.cpp b/JugTrack/src/components/ProtoTrackMatching.cpp
index 5065a54fe1f97b451d281b32501f748e24aa9f3f..5d4e3d9089b85ae1af4b54ad6510eeae844300cb 100644
--- a/JugTrack/src/components/ProtoTrackMatching.cpp
+++ b/JugTrack/src/components/ProtoTrackMatching.cpp
@@ -16,7 +16,7 @@
 
 #include "Math/Vector3D.h"
 
-#include "eicd/TrackerHitCollection.h"
+#include "edm4eic/TrackerHitCollection.h"
 
 namespace Jug::Reco {
 
@@ -26,7 +26,7 @@ namespace Jug::Reco {
  */
 class ProtoTrackMatching : public GaudiAlgorithm {
 private:
-  DataHandle<eicd::TrackerHitCollection> m_inputTrackerHits{"inputTrackerHits", Gaudi::DataHandle::Reader, this};
+  DataHandle<edm4eic::TrackerHitCollection> m_inputTrackerHits{"inputTrackerHits", Gaudi::DataHandle::Reader, this};
   DataHandle<TrackParametersContainer> m_initialTrackParameters{"initialTrackParameters", Gaudi::DataHandle::Reader, this};
   DataHandle<ProtoTrackContainer> m_inputProtoTracks{"inputProtoTracks", Gaudi::DataHandle::Reader, this};
   DataHandle<ProtoTrackContainer> m_outputProtoTracks{"matchedProtoTracks", Gaudi::DataHandle::Writer, this};
diff --git a/JugTrack/src/components/SingleTrackSourceLinker.cpp b/JugTrack/src/components/SingleTrackSourceLinker.cpp
index 27306f293918b7abe30e1b3a31a5c1ec504a3480..24fab9c73d7e6f2a55b8ce9d570f6cb435eafad8 100644
--- a/JugTrack/src/components/SingleTrackSourceLinker.cpp
+++ b/JugTrack/src/components/SingleTrackSourceLinker.cpp
@@ -30,7 +30,7 @@
 #include "JugTrack/Measurement.hpp"
 #include "JugTrack/ProtoTrack.hpp"
 
-#include "eicd/TrackerHitCollection.h"
+#include "edm4eic/TrackerHitCollection.h"
 
 namespace Jug::Reco {
 
@@ -42,7 +42,7 @@ namespace Jug::Reco {
  */
 class SingleTrackSourceLinker : public GaudiAlgorithm {
 private:
-  DataHandle<eicd::TrackerHitCollection> m_inputHitCollection{"inputHitCollection", Gaudi::DataHandle::Reader, this};
+  DataHandle<edm4eic::TrackerHitCollection> m_inputHitCollection{"inputHitCollection", Gaudi::DataHandle::Reader, this};
   DataHandle<std::list<IndexSourceLink>> m_sourceLinkStorage{"sourceLinkStorage", Gaudi::DataHandle::Writer, this};
   DataHandle<IndexSourceLinkContainer> m_outputSourceLinks{"outputSourceLinks", Gaudi::DataHandle::Writer, this};
   DataHandle<MeasurementContainer> m_outputMeasurements{"outputMeasurements", Gaudi::DataHandle::Writer, this};
@@ -74,7 +74,7 @@ public:
 
   StatusCode execute() override {
     // input collection
-    const eicd::TrackerHitCollection* hits = m_inputHitCollection.get();
+    const edm4eic::TrackerHitCollection* hits = m_inputHitCollection.get();
     // Create output collections
     auto* linkStorage  = m_sourceLinkStorage.createAndPut();
     auto* sourceLinks  = m_outputSourceLinks.createAndPut();
diff --git a/JugTrack/src/components/TrackFindingAlgorithm.cpp b/JugTrack/src/components/TrackFindingAlgorithm.cpp
index acdb6780a3a24e10638aa78e5be6f8f8f62c7efc..1961d50d7f04b49da5d1357875fe4bab3594abf6 100644
--- a/JugTrack/src/components/TrackFindingAlgorithm.cpp
+++ b/JugTrack/src/components/TrackFindingAlgorithm.cpp
@@ -40,7 +40,7 @@
 #include "JugTrack/Track.hpp"
 
 
-#include "eicd/TrackerHitCollection.h"
+#include "edm4eic/TrackerHitCollection.h"
 
 #include <functional>
 #include <stdexcept>
diff --git a/JugTrack/src/components/TrackFindingAlgorithm.h b/JugTrack/src/components/TrackFindingAlgorithm.h
index dca6bce12702e39e785d32dc3de3208a02764978..b5eeca4271fe2d7f7231abd621bc51ab80503a76 100644
--- a/JugTrack/src/components/TrackFindingAlgorithm.h
+++ b/JugTrack/src/components/TrackFindingAlgorithm.h
@@ -23,7 +23,7 @@
 #include "JugTrack/Track.hpp"
 #include "JugTrack/Trajectories.hpp"
 
-#include "eicd/TrackerHitCollection.h"
+#include "edm4eic/TrackerHitCollection.h"
 
 #include "Acts/Definitions/Common.hpp"
 #include "Acts/Geometry/TrackingGeometry.hpp"
diff --git a/JugTrack/src/components/TrackFittingAlgorithm.cpp b/JugTrack/src/components/TrackFittingAlgorithm.cpp
index 6fa1344177faf184ccd3ef03c18e1bb78cd464f5..644669faefa47deaf58975d10485a71b8f545cf2 100644
--- a/JugTrack/src/components/TrackFittingAlgorithm.cpp
+++ b/JugTrack/src/components/TrackFittingAlgorithm.cpp
@@ -36,7 +36,7 @@
 #include "JugTrack/Track.hpp"
 #include "JugTrack/Measurement.hpp"
 
-#include "eicd/TrackerHitCollection.h"
+#include "edm4eic/TrackerHitCollection.h"
 
 #include <functional>
 #include <stdexcept>
diff --git a/JugTrack/src/components/TrackFittingAlgorithm.h b/JugTrack/src/components/TrackFittingAlgorithm.h
index 6f193da372137db7f26c342d943a433f71a14dad..297b63dc043a11f428c8ec207ea0a7f94d1500cd 100644
--- a/JugTrack/src/components/TrackFittingAlgorithm.h
+++ b/JugTrack/src/components/TrackFittingAlgorithm.h
@@ -24,7 +24,7 @@
 #include "JugTrack/Trajectories.hpp"
 #include "JugTrack/ProtoTrack.hpp"
 
-#include "eicd/TrackerHitCollection.h"
+#include "edm4eic/TrackerHitCollection.h"
 
 #include "Acts/Definitions/Common.hpp"
 #include "Acts/Geometry/TrackingGeometry.hpp"
diff --git a/JugTrack/src/components/TrackParamACTSSeeding.cpp b/JugTrack/src/components/TrackParamACTSSeeding.cpp
index c4cb3ecf25e1c654052d1c7b61ade1985294662d..8f302a95045e035ba1398aaa750d5088ae0ab289 100644
--- a/JugTrack/src/components/TrackParamACTSSeeding.cpp
+++ b/JugTrack/src/components/TrackParamACTSSeeding.cpp
@@ -31,7 +31,7 @@
 #include "JugTrack/Measurement.hpp"
 #include "JugTrack/Track.hpp"
 
-#include "eicd/TrackerHitCollection.h"
+#include "edm4eic/TrackerHitCollection.h"
 
 #include "Math/Vector3D.h"
 
@@ -63,7 +63,7 @@ namespace Jug::Reco {
         DataHandle<MeasurementContainer>
         m_inputMeasurements { "inputMeasurements",
             Gaudi::DataHandle::Reader, this};
-        DataHandle<eicd::TrackerHitCollection>
+        DataHandle<edm4eic::TrackerHitCollection>
         m_inputHitCollection { "inputHitCollection",
             Gaudi::DataHandle::Reader, this };
         DataHandle<TrackParametersContainer>
@@ -86,12 +86,12 @@ namespace Jug::Reco {
 
         /// Space point representation of eic::TrackerHitData suitable
         /// for ACTS track seeding.
-        class SpacePoint : eicd::TrackerHitData {
+        class SpacePoint : edm4eic::TrackerHitData {
         public:
             int32_t _measurementIndex;
             // Constructor to circumvent the fact that eic::TrackerHit
             // and associated classes are all non-polymorphic
-            SpacePoint(const eicd::TrackerHit h,
+            SpacePoint(const edm4eic::TrackerHit h,
                        const int32_t measurementIndex)
                 : _measurementIndex(measurementIndex)
             {
@@ -212,7 +212,7 @@ namespace Jug::Reco {
 
         void
         findSeed(SeedContainer &seeds,
-                 const eicd::TrackerHitCollection *hits,
+                 const edm4eic::TrackerHitCollection *hits,
                  const IndexSourceLinkContainer *sourceLinks,
                  const MeasurementContainer *measurements,
                  Acts::Seedfinder<SpacePoint>::State &state);
@@ -291,7 +291,7 @@ namespace Jug::Reco {
 
     void TrackParamACTSSeeding::
     findSeed(SeedContainer &seeds,
-             const eicd::TrackerHitCollection *hits,
+             const edm4eic::TrackerHitCollection *hits,
              const IndexSourceLinkContainer *sourceLinks,
              const MeasurementContainer *measurements,
              Acts::Seedfinder<SpacePoint>::State &state)
@@ -330,7 +330,7 @@ namespace Jug::Reco {
 #ifdef USE_LOCAL_COORD
                 spacePoint.push_back(
                     SpacePoint(
-                        eicd::TrackerHit(
+                        edm4eic::TrackerHit(
                             static_cast<uint64_t>(spacePoint.size()),
                             {v[0], v[1], v[2]},
                             {25.0e-6 / 3.0,
@@ -443,7 +443,7 @@ namespace Jug::Reco {
 
     StatusCode TrackParamACTSSeeding::execute()
     {
-        const eicd::TrackerHitCollection *hits =
+        const edm4eic::TrackerHitCollection *hits =
             m_inputHitCollection.get();
         const IndexSourceLinkContainer *sourceLinks =
             m_inputSourceLinks.get();
diff --git a/JugTrack/src/components/TrackParamClusterInit.cpp b/JugTrack/src/components/TrackParamClusterInit.cpp
index 538bcc8f7a281aaff3781d10c1ab5727d9786df5..e554a4746f30d3576ade8b8c02169c7d9e8458e7 100644
--- a/JugTrack/src/components/TrackParamClusterInit.cpp
+++ b/JugTrack/src/components/TrackParamClusterInit.cpp
@@ -16,9 +16,9 @@
 #include "JugBase/IGeoSvc.h"
 #include "JugTrack/Track.hpp"
 
-#include "eicd/ClusterCollection.h"
-#include "eicd/TrackerHitCollection.h"
-#include "eicd/vector_utils.h"
+#include "edm4eic/ClusterCollection.h"
+#include "edm4eic/TrackerHitCollection.h"
+#include "edm4eic/vector_utils.h"
 
 #include "Acts/Surfaces/PerigeeSurface.hpp"
 
@@ -44,7 +44,7 @@ namespace Jug::Reco {
  */
 class TrackParamClusterInit : public GaudiAlgorithm {
 private:
-  using Clusters = eicd::ClusterCollection;
+  using Clusters = edm4eic::ClusterCollection;
 
   DataHandle<Clusters> m_inputClusters{"inputClusters", Gaudi::DataHandle::Reader, this};
   DataHandle<TrackParametersContainer> m_outputInitialTrackParameters{"outputInitialTrackParameters",
@@ -84,14 +84,14 @@ public:
       if (p < 0.1 * GeV) {
         continue;
       }
-      double len    = eicd::magnitude(c.getPosition());
+      double len    = edm4eic::magnitude(c.getPosition());
       auto momentum = c.getPosition() * p / len;
 
       Acts::BoundVector params;
       params(Acts::eBoundLoc0)   = 0.0 * mm;
       params(Acts::eBoundLoc1)   = 0.0 * mm;
-      params(Acts::eBoundPhi)    = eicd::angleAzimuthal(momentum);
-      params(Acts::eBoundTheta)  = eicd::anglePolar(momentum);
+      params(Acts::eBoundPhi)    = edm4eic::angleAzimuthal(momentum);
+      params(Acts::eBoundTheta)  = edm4eic::anglePolar(momentum);
       params(Acts::eBoundQOverP) = 1 / p;
       params(Acts::eBoundTime)   = 0 * ns;
 
@@ -107,8 +107,8 @@ public:
       Acts::BoundVector params2;
       params2(Acts::eBoundLoc0)   = 0.0 * mm;
       params2(Acts::eBoundLoc1)   = 0.0 * mm;
-      params2(Acts::eBoundPhi)    = eicd::angleAzimuthal(momentum);
-      params2(Acts::eBoundTheta)  = eicd::anglePolar(momentum);
+      params2(Acts::eBoundPhi)    = edm4eic::angleAzimuthal(momentum);
+      params2(Acts::eBoundTheta)  = edm4eic::anglePolar(momentum);
       params2(Acts::eBoundQOverP) = -1 / p;
       params2(Acts::eBoundTime)   = 0 * ns;
       init_trk_params->push_back({pSurface, params2, -1});
diff --git a/JugTrack/src/components/TrackParamImagingClusterInit.cpp b/JugTrack/src/components/TrackParamImagingClusterInit.cpp
index 7260951e564447d42e03ca45f8e79a5c0b3c0934..54063846ee5176c70cbbf36516952e4a7a238c81 100644
--- a/JugTrack/src/components/TrackParamImagingClusterInit.cpp
+++ b/JugTrack/src/components/TrackParamImagingClusterInit.cpp
@@ -16,9 +16,9 @@
 #include "Acts/Definitions/Units.hpp"
 #include "Acts/Definitions/Common.hpp"
 
-#include "eicd/TrackerHitCollection.h"
-#include "eicd/ClusterCollection.h"
-#include "eicd/vector_utils.h"
+#include "edm4eic/TrackerHitCollection.h"
+#include "edm4eic/ClusterCollection.h"
+#include "edm4eic/vector_utils.h"
 
 #include "Acts/Surfaces/PerigeeSurface.hpp"
 
@@ -44,7 +44,7 @@ namespace Jug::Reco {
    */
   class TrackParamImagingClusterInit : public GaudiAlgorithm {
   private:
-    using ImagingClusters =  eicd::ClusterCollection;
+    using ImagingClusters =  edm4eic::ClusterCollection;
 
     DataHandle<ImagingClusters>          m_inputClusters{"inputClusters", Gaudi::DataHandle::Reader, this};
     DataHandle<TrackParametersContainer> m_outputInitialTrackParameters{"outputInitialTrackParameters",
@@ -86,8 +86,8 @@ namespace Jug::Reco {
         if( p < 0.1*GeV) {
           continue;
         }
-        const double theta = eicd::anglePolar(c.getPosition());
-        const double phi = eicd::angleAzimuthal(c.getPosition());
+        const double theta = edm4eic::anglePolar(c.getPosition());
+        const double phi = edm4eic::angleAzimuthal(c.getPosition());
 
         Acts::BoundVector  params;
         params(Acts::eBoundLoc0)   = 0.0 * mm ;
diff --git a/JugTrack/src/components/TrackParamTruthInit.cpp b/JugTrack/src/components/TrackParamTruthInit.cpp
index 07b58b0a31ba93fec5ee391159ce5bd8955dcc8c..a07bd65298942df20f14b8d7ea1e6117ce8ccdad 100644
--- a/JugTrack/src/components/TrackParamTruthInit.cpp
+++ b/JugTrack/src/components/TrackParamTruthInit.cpp
@@ -18,7 +18,7 @@
 #include "Acts/Definitions/Units.hpp"
 #include "Acts/Definitions/Common.hpp"
 
-#include "eicd/TrackerHitCollection.h"
+#include "edm4eic/TrackerHitCollection.h"
 #include "edm4hep/MCParticleCollection.h"
 #include "Math/Vector3D.h"
 #include "Acts/Surfaces/PerigeeSurface.hpp"
diff --git a/JugTrack/src/components/TrackParamVertexClusterInit.cpp b/JugTrack/src/components/TrackParamVertexClusterInit.cpp
index 1e12819093336180d84aea5e1accbf3496d35067..362ce3bfd7a372e98e4ea72a1ff1193dabead7bf 100644
--- a/JugTrack/src/components/TrackParamVertexClusterInit.cpp
+++ b/JugTrack/src/components/TrackParamVertexClusterInit.cpp
@@ -19,9 +19,9 @@
 #include "JugTrack/Track.hpp"
 
 #include "Acts/Surfaces/PerigeeSurface.hpp"
-#include "eicd/ClusterCollection.h"
-#include "eicd/TrackerHitCollection.h"
-#include "eicd/vector_utils.h"
+#include "edm4eic/ClusterCollection.h"
+#include "edm4eic/TrackerHitCollection.h"
+#include "edm4eic/vector_utils.h"
 
 using namespace Gaudi::Units;
 
@@ -37,8 +37,8 @@ namespace Jug::Reco {
  */
 class TrackParamVertexClusterInit : public GaudiAlgorithm {
 private:
-  using Clusters   = eicd::ClusterCollection;
-  using VertexHits = eicd::TrackerHitCollection;
+  using Clusters   = edm4eic::ClusterCollection;
+  using VertexHits = edm4eic::TrackerHitCollection;
 
   DataHandle<VertexHits> m_inputVertexHits{"inputVertexHits", Gaudi::DataHandle::Reader, this};
   DataHandle<Clusters> m_inputClusters{"inputClusters", Gaudi::DataHandle::Reader, this};
@@ -101,8 +101,8 @@ public:
         Acts::BoundVector params;
         params(Acts::eBoundLoc0)   = 0.0 * mm;
         params(Acts::eBoundLoc1)   = 0.0 * mm;
-        params(Acts::eBoundPhi)    = eicd::angleAzimuthal(momentum);
-        params(Acts::eBoundTheta)  = eicd::anglePolar(momentum);
+        params(Acts::eBoundPhi)    = edm4eic::angleAzimuthal(momentum);
+        params(Acts::eBoundTheta)  = edm4eic::anglePolar(momentum);
         params(Acts::eBoundQOverP) = 1 / p_cluster;
         params(Acts::eBoundTime)   = 0 * ns;
 
@@ -114,8 +114,8 @@ public:
         Acts::BoundVector params2;
         params2(Acts::eBoundLoc0)   = 0.0 * mm;
         params2(Acts::eBoundLoc1)   = 0.0 * mm;
-        params2(Acts::eBoundPhi)    = eicd::angleAzimuthal(momentum);
-        params2(Acts::eBoundTheta)  = eicd::anglePolar(momentum);
+        params2(Acts::eBoundPhi)    = edm4eic::angleAzimuthal(momentum);
+        params2(Acts::eBoundTheta)  = edm4eic::anglePolar(momentum);
         params2(Acts::eBoundQOverP) = -1 / p_cluster;
         params2(Acts::eBoundTime)   = 0 * ns;
         init_trk_params->push_back({pSurface, params2, -1});
diff --git a/JugTrack/src/components/TrackProjector.cpp b/JugTrack/src/components/TrackProjector.cpp
index 3722b16cd8fa5356e7b9a8b736af6731f28adf17..620e1d13f3efd9b7e2e243976144654b77af7570 100644
--- a/JugTrack/src/components/TrackProjector.cpp
+++ b/JugTrack/src/components/TrackProjector.cpp
@@ -22,10 +22,10 @@
 #include "Acts/EventData/MultiTrajectoryHelpers.hpp"
 
 // Event Model related classes
-#include "eicd/TrackerHitCollection.h"
-#include "eicd/TrackParametersCollection.h"
-#include "eicd/TrajectoryCollection.h"
-#include "eicd/TrackSegmentCollection.h"
+#include "edm4eic/TrackerHitCollection.h"
+#include "edm4eic/TrackParametersCollection.h"
+#include "edm4eic/TrajectoryCollection.h"
+#include "edm4eic/TrackSegmentCollection.h"
 #include "JugTrack/IndexSourceLink.hpp"
 #include "JugTrack/Track.hpp"
 #include "JugTrack/Trajectories.hpp"
@@ -38,7 +38,7 @@
 #include "Acts/Propagator/EigenStepper.hpp"
 #include "Acts/Surfaces/PerigeeSurface.hpp"
 
-#include "eicd/vector_utils.h"
+#include "edm4eic/vector_utils.h"
 
 #include <cmath>
 
@@ -51,7 +51,7 @@ namespace Jug::Reco {
    class TrackProjector : public GaudiAlgorithm {
    private:
     DataHandle<TrajectoriesContainer>        m_inputTrajectories{"inputTrajectories", Gaudi::DataHandle::Reader, this};
-    DataHandle<eicd::TrackSegmentCollection> m_outputTrackSegments{"outputTrackSegments", Gaudi::DataHandle::Writer, this};
+    DataHandle<edm4eic::TrackSegmentCollection> m_outputTrackSegments{"outputTrackSegments", Gaudi::DataHandle::Writer, this};
 
     Gaudi::Property<unsigned int> m_firstInVolumeID{this, "firstInVolumeID", 0};
     Gaudi::Property<std::string> m_firstInVolumeName{this, "firstInVolumeName", ""};
@@ -114,7 +114,7 @@ namespace Jug::Reco {
           debug() << "n state in trajectory " << m_nStates << endmsg;
         }
 
-        eicd::MutableTrackSegment track_segment;
+        edm4eic::MutableTrackSegment track_segment;
 
         // visit the track points
         mj.visitBackwards(trackTip, [&](auto&& trackstate) {
@@ -137,29 +137,29 @@ namespace Jug::Reco {
             {0, 0, 0}
           );
           // global position
-          const decltype(eicd::TrackPoint::position) position {
+          const decltype(edm4eic::TrackPoint::position) position {
             static_cast<float>(global.x()),
             static_cast<float>(global.y()),
             static_cast<float>(global.z())
           };
 
           // local position
-          const decltype(eicd::TrackParametersData::loc) loc {
+          const decltype(edm4eic::TrackParametersData::loc) loc {
             static_cast<float>(parameter[Acts::eBoundLoc0]),
             static_cast<float>(parameter[Acts::eBoundLoc1])
           };
-          const decltype(eicd::TrackParametersData::locError) locError {
+          const decltype(edm4eic::TrackParametersData::locError) locError {
             static_cast<float>(covariance(Acts::eBoundLoc0, Acts::eBoundLoc0)),
             static_cast<float>(covariance(Acts::eBoundLoc1, Acts::eBoundLoc1)),
             static_cast<float>(covariance(Acts::eBoundLoc0, Acts::eBoundLoc1))
           };
-          const decltype(eicd::TrackPoint::positionError) positionError{0, 0, 0};
-          const decltype(eicd::TrackPoint::momentum) momentum = eicd::sphericalToVector(
+          const decltype(edm4eic::TrackPoint::positionError) positionError{0, 0, 0};
+          const decltype(edm4eic::TrackPoint::momentum) momentum = edm4eic::sphericalToVector(
             static_cast<float>(1.0 / std::abs(parameter[Acts::eBoundQOverP])),
             static_cast<float>(parameter[Acts::eBoundTheta]),
             static_cast<float>(parameter[Acts::eBoundPhi])
           );
-          const decltype(eicd::TrackPoint::momentumError) momentumError {
+          const decltype(edm4eic::TrackPoint::momentumError) momentumError {
             static_cast<float>(covariance(Acts::eBoundTheta, Acts::eBoundTheta)),
             static_cast<float>(covariance(Acts::eBoundPhi, Acts::eBoundPhi)),
             static_cast<float>(covariance(Acts::eBoundQOverP, Acts::eBoundQOverP)),
@@ -171,7 +171,7 @@ namespace Jug::Reco {
           const float timeError{sqrt(static_cast<float>(covariance(Acts::eBoundTime, Acts::eBoundTime)))};
           const float theta(parameter[Acts::eBoundTheta]);
           const float phi(parameter[Acts::eBoundPhi]);
-          const decltype(eicd::TrackPoint::directionError) directionError {
+          const decltype(edm4eic::TrackPoint::directionError) directionError {
             static_cast<float>(covariance(Acts::eBoundTheta, Acts::eBoundTheta)),
             static_cast<float>(covariance(Acts::eBoundPhi, Acts::eBoundPhi)),
             static_cast<float>(covariance(Acts::eBoundTheta, Acts::eBoundPhi))
diff --git a/JugTrack/src/components/TrackerSourceLinker.cpp b/JugTrack/src/components/TrackerSourceLinker.cpp
index 4fd9cd8b3365ccd64f0dfe7899d1e249e6fdd5ed..3833d383e9637f3150648ec11a94f48782157e41 100644
--- a/JugTrack/src/components/TrackerSourceLinker.cpp
+++ b/JugTrack/src/components/TrackerSourceLinker.cpp
@@ -30,7 +30,7 @@
 #include "JugTrack/IndexSourceLink.hpp"
 #include "JugTrack/Measurement.hpp"
 
-#include "eicd/TrackerHitCollection.h"
+#include "edm4eic/TrackerHitCollection.h"
 
 namespace Jug::Reco {
 
@@ -44,7 +44,7 @@ namespace Jug::Reco {
  */
 class TrackerSourceLinker : public GaudiAlgorithm {
 private:
-  DataHandle<eicd::TrackerHitCollection> m_inputHitCollection{"inputHitCollection", Gaudi::DataHandle::Reader, this};
+  DataHandle<edm4eic::TrackerHitCollection> m_inputHitCollection{"inputHitCollection", Gaudi::DataHandle::Reader, this};
   DataHandle<std::list<IndexSourceLink>> m_sourceLinkStorage{"sourceLinkStorage", Gaudi::DataHandle::Writer, this};
   DataHandle<IndexSourceLinkContainer> m_outputSourceLinks{"outputSourceLinks", Gaudi::DataHandle::Writer, this};
   DataHandle<MeasurementContainer> m_outputMeasurements{"outputMeasurements", Gaudi::DataHandle::Writer, this};
@@ -78,7 +78,7 @@ public:
     constexpr double mm_conv = mm_acts / dd4hep::mm; // = 1/0.1
 
     // input collection
-    const eicd::TrackerHitCollection* hits = m_inputHitCollection.get();
+    const edm4eic::TrackerHitCollection* hits = m_inputHitCollection.get();
     // Create output collections
     auto* linkStorage  = m_sourceLinkStorage.createAndPut();
     auto* sourceLinks  = m_outputSourceLinks.createAndPut();
diff --git a/JugTrack/src/components/TruthTrackSeeding.cpp b/JugTrack/src/components/TruthTrackSeeding.cpp
index d6505510501f5e44de58a0e22f525bd6a5b1d014..4a68a3a59d95f0fd676acafc9c769acc0a7f96b5 100644
--- a/JugTrack/src/components/TruthTrackSeeding.cpp
+++ b/JugTrack/src/components/TruthTrackSeeding.cpp
@@ -20,7 +20,7 @@
 //#include "Acts/EventData/Charge.hpp"
 
 #include "edm4hep/MCParticleCollection.h"
-#include "eicd/TrackParametersCollection.h"
+#include "edm4eic/TrackParametersCollection.h"
 #include "Math/Vector3D.h"
 
 
@@ -28,7 +28,7 @@ namespace Jug::Reco {
 
   /** Track seeding using MC truth.
    *
-   *  \note "Seeding" algorithms are required to output a eicd::TrackParametersCollection, as opposed to the legacy "init"
+   *  \note "Seeding" algorithms are required to output a edm4eic::TrackParametersCollection, as opposed to the legacy "init"
    *  algorithms, such as  TrackParamTruthInit.
    *
    *  \ingroup tracking
@@ -37,7 +37,7 @@ namespace Jug::Reco {
   private:
     DataHandle<edm4hep::MCParticleCollection> m_inputMCParticles{"inputMCParticles", Gaudi::DataHandle::Reader,
                                                                     this};
-    DataHandle<eicd::TrackParametersCollection> m_outputTrackParameters{"outputTrackParameters",
+    DataHandle<edm4eic::TrackParametersCollection> m_outputTrackParameters{"outputTrackParameters",
                                                                        Gaudi::DataHandle::Writer, this};
     SmartIF<IParticleSvc> m_pidSvc;
 
@@ -93,7 +93,7 @@ namespace Jug::Reco {
 
         const auto q_over_p = charge / p;
 
-        eicd::TrackParameters params{-1,                // type --> seed (-1)
+        edm4eic::TrackParameters params{-1,                // type --> seed (-1)
                                      {0.0F, 0.0F},      // location on surface
                                      {0.1, 0.1, 0.1},   // Covariance on location
                                      theta,             // theta (rad)
diff --git a/doc/page.dox b/doc/page.dox
index d0a904df0a264d6279f952ea3f519cdea0e15cee..4a11fe29c8125dbec4414f6aea66d3fcdd86668d 100644
--- a/doc/page.dox
+++ b/doc/page.dox
@@ -22,7 +22,7 @@
  * \brief Global geometry service
  * 
  * \defgroup datasvc Data Services
- * \brief Data services for using eicd/podio 
+ * \brief Data services for using edm4eic/podio 
  *
  */