diff --git a/Detector/DetDriftChamber/CMakeLists.txt b/Detector/DetDriftChamber/CMakeLists.txt
index b680276955849c32df5af4e92216e9cab21accf9..0c1cc85b2d26105a245427a369270ad4027769a5 100644
--- a/Detector/DetDriftChamber/CMakeLists.txt
+++ b/Detector/DetDriftChamber/CMakeLists.txt
@@ -27,9 +27,9 @@ gaudi_add_module(DetDriftChamber
                   ${DetDriftChamber_src}
 		  INCLUDE_DIRS
                   # DD4hep ROOT Geant4 src/include
-		  LINK_LIBRARIES 
+		  LINK_LIBRARIES GaudiKernel DD4hep ROOT DetSegmentation
                   # GaudiKernel 
-                  DD4hep ${DD4hep_COMPONENT_LIBRARIES} 
+                  #DD4hep ${DD4hep_COMPONENT_LIBRARIES} 
                   # ROOT Geant4
 )
 
diff --git a/Detector/DetDriftChamber/compact/det.xml b/Detector/DetDriftChamber/compact/det.xml
index 84a1ec7b05d00220ac3fda86c50f4d0111b550b7..b791565dba6598a8c2edc8a178b30afd2c30e25a 100644
--- a/Detector/DetDriftChamber/compact/det.xml
+++ b/Detector/DetDriftChamber/compact/det.xml
@@ -38,6 +38,7 @@
     <constant name="SDT_inner_chamber_layer_number" value="67"/>
     <constant name="SDT_outer_chamber_layer_number" value="63"/>
     <constant name="SDT_chamber_layer_width" value="10*mm"/>
+    <constant name="Epsilon" value="0*deg"/>
 
   </define>
 
@@ -52,14 +53,15 @@
   <detectors>
     <detector id="1" name="DriftChamber" type="DriftChamber" readout="DriftChamberHitsCollection" vis="VisibleBlue" sensitive="true">
       <!-- Use cm as unit if you want to use Pandora for reconstruction -->
+     <sensitive type="SimpleDriftChamber"/>
      </detector>
   </detectors>
 
   <readouts>
     <readout name="DriftChamberHitsCollection">
-      <segmentation type="GridDriftChamber" delta_phi="8*deg" identifier_phi="phi"/>
+      <segmentation type="GridDriftChamber" cell_size="10*mm" offset_phi="0." epsilon0="Epsilon" detector_length="SDT_half_length" identifier_phi="cellID" />
 
-      <id>system:8,chamber:1,layer:8,phi:16</id>
+      <id>system:8,chamber:1,layer:8,cellID:16</id>
     </readout>
   </readouts>
 
diff --git a/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp b/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp
index c71012156662c8b053567bf2667d535c097016a6..07b95b983df469f822a61b22d7ba2827e27b50eb 100644
--- a/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp
+++ b/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp
@@ -8,8 +8,10 @@
 //====================================================================
 
 #include "DD4hep/DetFactoryHelper.h"
+#include "DD4hep/Printout.h"
 #include "XML/Layering.h"
 #include "XML/Utilities.h"
+#include "XML/XMLElements.h"
 #include "DDRec/DetectorData.h"
 #include "DDSegmentation/Segmentation.h"
 #include "DetSegmentation/GridDriftChamber.h"
@@ -24,6 +26,9 @@ using namespace dd4hep::rec ;
 static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector,
         xml_h e,
         dd4hep::SensitiveDetector sens) {
+    // ------- Lambda functions ---- //
+    auto delta_a_func = [](auto x, auto y) { return 0.5 * ( x + y ); };
+
     // =======================================================================
     // Parameter Definition
     // =======================================================================
@@ -33,6 +38,8 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector,
     std::string det_name = x_det.nameStr();
     std::string det_type = x_det.typeStr();
 
+    dd4hep::SensitiveDetector sd = sens;
+
     // - global
     double chamber_radius_min = theDetector.constant<double>("SDT_radius_min");
     double chamber_radius_max = theDetector.constant<double>("SDT_radius_max");
@@ -53,6 +60,8 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector,
     int outer_chamber_layer_number = theDetector.constant<int>("SDT_outer_chamber_layer_number");
     double chamber_layer_width  = theDetector.constant<double>("SDT_chamber_layer_width");
 
+    double epsilon = theDetector.constant<double>("Epsilon");
+
     // =======================================================================
     // Detector Construction
     // =======================================================================
@@ -75,36 +84,55 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector,
     dd4hep::Tube det_outer_chamber_solid(outer_chamber_radius_min, outer_chamber_radius_max, outer_chamber_length*0.5);
     dd4hep::Volume det_outer_chamber_vol(det_name+"_outer_chamber_vol", det_outer_chamber_solid, det_mat);
 
+    //Initialize the segmentation
+    dd4hep::Readout readout = sd.readout();
+    dd4hep::Segmentation geomseg = readout.segmentation();
+    dd4hep::Segmentation* _geoSeg = &geomseg;
+
+    auto DCHseg = dynamic_cast<dd4hep::DDSegmentation::GridDriftChamber*>(_geoSeg->segmentation());
 
     // - layer
-    for(int layer_id=0; layer_id<(inner_chamber_layer_number+outer_chamber_layer_number-1);layer_id++) {
-      double rmin,rmax;
-      std::string layer_name;
-      dd4hep::Volume* current_vol_ptr = nullptr;
-
-      if(layer_id<inner_chamber_layer_number){
-        current_vol_ptr = &det_inner_chamber_vol;
-        rmin = inner_chamber_radius_min+(layer_id*chamber_layer_width);
-        rmax = rmin+chamber_layer_width;
-        layer_name = det_name+"_inner_chamber_vol"+_toString(layer_id,"_layer%d");
-      }else{
-        current_vol_ptr = &det_outer_chamber_vol;
-        rmin = outer_chamber_radius_min+((layer_id-inner_chamber_layer_number)*chamber_layer_width);
-        rmax = rmin+chamber_layer_width;
-        layer_name = det_name+"_outer_chamber_vol"+_toString(layer_id,"_layer%d");
+      for(int layer_id = 0; layer_id < (inner_chamber_layer_number+outer_chamber_layer_number); layer_id++) {
+        double rmin,rmax,offset;
+        std::string layer_name;
+        dd4hep::Volume* current_vol_ptr = nullptr;
+
+        if( layer_id < inner_chamber_layer_number ) {
+           current_vol_ptr = &det_inner_chamber_vol;
+           rmin = inner_chamber_radius_min+(layer_id*chamber_layer_width);
+           rmax = rmin+chamber_layer_width;
+           layer_name = det_name+"_inner_chamber_vol"+_toString(layer_id,"_layer%d");
+        }
+        else {
+           current_vol_ptr = &det_outer_chamber_vol;
+           rmin = outer_chamber_radius_min+((layer_id-inner_chamber_layer_number)*chamber_layer_width);
+           rmax = rmin+chamber_layer_width;
+           layer_name = det_name+"_outer_chamber_vol"+_toString(layer_id,"_layer%d");
+        }
+
+        //Construction of drift chamber layers
+        double rmid = delta_a_func(rmin,rmax);
+        double ilayer_cir = 2 * M_PI * rmid;
+        double ncell = ilayer_cir / chamber_layer_width;
+        int ncell_layer = ceil(ncell);
+        int numWire = ncell_layer;
+        double layer_Phi = 2*M_PI / ncell_layer;
+        if(layer_id %2 ==0){ offset = 0.; }
+        else { offset = 0.5 * layer_Phi; }
+
+        DCHseg->setGeomParams(layer_id, layer_Phi, rmid, epsilon, offset);
+        DCHseg->setWiresInLayer(layer_id, numWire);
+
+        dd4hep::Tube layer_solid(rmin,rmax,chamber_length*0.5);
+        dd4hep::Volume layer_vol(layer_name,layer_solid,det_mat);
+        dd4hep::Transform3D transform_layer(dd4hep::Rotation3D(),dd4hep::Position(0.,0.,0.));
+        dd4hep::PlacedVolume layer_phy = (*current_vol_ptr).placeVolume(layer_vol, transform_layer);
+        layer_phy.addPhysVolID("layer",layer_id);
+
+        //Set drift chamber layers to sensitive detector
+        layer_vol.setSensitiveDetector(sens);
+        sd.setType("tracker");
       }
-      /// Construction of drift chamber layers
-      dd4hep::Tube layer_solid(rmin,rmax,chamber_length*0.5);
-      dd4hep::Volume layer_vol(layer_name,layer_solid,det_mat);
-      dd4hep::Transform3D transform_layer(dd4hep::Rotation3D(),dd4hep::Position(0.,0.,0.));
-      dd4hep::PlacedVolume layer_phy = (*current_vol_ptr).placeVolume(layer_vol, transform_layer);
-      layer_phy.addPhysVolID("layer",layer_id);
-
-      /// Set drift chamber layers to sensitive detector
-      dd4hep::SensitiveDetector sd = sens;
-      layer_vol.setSensitiveDetector(sens);
-      sd.setType("tracker");
-   }
 
     // - place in det
     // inner
diff --git a/Detector/DetInterface/DetInterface/IGeoSvc.h b/Detector/DetInterface/DetInterface/IGeomSvc.h
similarity index 92%
rename from Detector/DetInterface/DetInterface/IGeoSvc.h
rename to Detector/DetInterface/DetInterface/IGeomSvc.h
index 75f6f5aa8b6302c59554b4e173cdeb3e2dc0b591..7fe1255dd64c0fb24fd543e66b5079f41de15859 100644
--- a/Detector/DetInterface/DetInterface/IGeoSvc.h
+++ b/Detector/DetInterface/DetInterface/IGeomSvc.h
@@ -1,5 +1,5 @@
 //
-//  IGeoSvc.h
+//  IGeomSvc.h
 //
 //  Based on FCCSW with some modification.
 //  In the design, the geometry shoud only depends on DD4hep. 
@@ -34,12 +34,12 @@ namespace gear{
 class TMaterial;
 // class G4VUserDetectorConstruction;
 
-class GAUDI_API IGeoSvc : virtual public IService {
+class GAUDI_API IGeomSvc : virtual public IService {
 public:
   typedef dd4hep::DDSegmentation::BitFieldCoder Decoder;
 public:
   /// InterfaceID
-  DeclareInterfaceID(IGeoSvc, 1, 0);
+  DeclareInterfaceID(IGeomSvc, 1, 0);
   // receive DD4hep Geometry
   virtual dd4hep::DetElement getDD4HepGeo() = 0;
   virtual dd4hep::Detector* lcdd() = 0;
@@ -59,7 +59,7 @@ public:
   virtual const double getDetParameter(std::string set_name, std::string par_name) = 0;
   virtual TMaterial* getMaterial(std::string s) = 0;
 
-  virtual ~IGeoSvc() {}
+  virtual ~IGeomSvc() {}
 };
 
 #endif  // IGEOSVC_H
diff --git a/Detector/DetSegmentation/DetSegmentation/GridDriftChamber.h b/Detector/DetSegmentation/DetSegmentation/GridDriftChamber.h
index 379ad4a19fdbce33a63f009577970534f3f995c3..fc01bf114d8d1780690ecbc9db2c23a82cc8cbe5 100644
--- a/Detector/DetSegmentation/DetSegmentation/GridDriftChamber.h
+++ b/Detector/DetSegmentation/DetSegmentation/GridDriftChamber.h
@@ -6,6 +6,7 @@
 #include "TVector3.h"
 #include <cmath>
 #include <iostream>
+#include <map>
 
 /** GridDriftChamber Detector/DetSegmentation/DetSegmentation/GridDriftChamber.h GridDriftChamber.h
  *
@@ -14,6 +15,21 @@
  *  @author    nalipour
  */
 
+
+typedef struct Layer
+ {
+   double layerphi;
+   double R;
+   double eps;
+   double offset;
+   Layer(){};
+   Layer(double x, double y, double z, double k):layerphi(x),R(y),eps(z),offset(k){};
+   bool operator < (const Layer &a) const
+   {
+      return layerphi < a.layerphi;
+   }
+ } LAYER;
+
 namespace dd4hep {
 namespace DDSegmentation {
 class GridDriftChamber : public Segmentation {
@@ -28,62 +44,102 @@ public:
   virtual Vector3D position(const CellID& aCellID) const;
   virtual CellID cellID(const Vector3D& aLocalPosition, const Vector3D& aGlobalPosition,
                         const VolumeID& aVolumeID) const;
+  virtual double distanceTrackWire(const CellID& cID, const TVector3& hit_start, const TVector3& hit_end) const;
 
-//  inline double innerRadius() const { return m_innerRadius; }
-//  inline double detectorLength() const { return m_detectorLength; }
-  inline double offsetPhi() const { return m_offsetPhi; }
-  inline double delta_phi() const{ return m_delta_phi; }
+  inline double cell_Size() const { return m_cellSize; }
+  inline double offset_phi() const { return m_offsetPhi; }
+  inline double epsilon0() const { return m_epsilon0; }
+  inline double detectorLength() const { return m_detectorLength; }
   inline const std::string& fieldNamePhi() const { return m_phiID; }
   // Setters
 
-//  inline void setGeomParams(int layer, double sizePhi) {
-//    layer_params[layer] = {sizePhi};
-// }
-
-//  void updateParams(int layer) const {
-//    auto it_end = layer_params.cend();
-//    --it_end;
-//    double size = it_end->second[0];
-//    double radius = it_end->second[1];
-//    double eps = it_end->second[2];
-//
-//    auto map_it = layer_params.find(layer);
-//    if (map_it != layer_params.cend()) {
-//      size = map_it->second[0];
-//      radius = map_it->second[1];
-//      eps = map_it->second[2];
-//    }
-//
-//    _currentGridSizePhi = size;
-//    _currentRadius = radius;
-//    m_epsilon = eps;
-//  }
-
   inline double phiFromXY(const Vector3D& aposition) const {
     return std::atan2(aposition.Y, aposition.X) + M_PI ;
   }
 
-//  inline int returnLayer(double x, double y) const {
-//  // Hit R position
-//    double R = std::sqrt(x * x + y * y);
-//  // Layer
-//    int layer = int((R - m_innerRadius) / m_cellSize);
-//    return layer;
-//  }
+  inline void setGeomParams(int layer, double layerphi, double R, double eps, double offset ) {
+    // layer_params[layer] = {layerphi,R,eps};
+    layer_params.insert(std::pair<int,LAYER>(layer,LAYER(layerphi,R,eps,offset)));
+   }
+
+  inline void setWiresInLayer(int layer, int numWires)
+  {
+    double phi0;
+    updateParams(layer);
+    for (int i = 0; i<numWires; ++i) {
+
+//    if(layer % 2 == 0) { phi0 = 0.; }
+//    else { phi0 = 0.5 * _currentLayerphi; }
+      double phi0 = m_offset;
+
+      auto phi_start = _currentLayerphi * i + phi0;
+      if(phi_start > 2 * M_PI) { phi_start = phi_start - 2 * M_PI; }
+      auto phi_end = phi_start + _currentLayerphi;
+
+      TVector3 Wstart = returnWirePosition(phi_start, 1);
+      TVector3 Wend = returnWirePosition(phi_end, -1);
+
+      TVector3 Wmid = (Wstart+Wend)*(1/2.0);
+      TVector3 Wdirection = (Wend - Wstart);
+
+      m_wiresPositions[layer].push_back(std::make_pair(Wmid, Wdirection));
+      }
+  }
+
+  inline auto returnAllWires() const { return m_wiresPositions; }
+
+  inline TVector3 returnWirePosition(double angle, int sign) const {
+    TVector3 w(0, 0, 0);
+    w.SetX(_currentRadius * std::cos(angle));
+    w.SetY(_currentRadius * std::sin(angle));
+    w.SetZ(sign * m_detectorLength / 2.0);
+    return w;
+  }
+
+  void updateParams(int layer)  const{
+    auto it_end = layer_params.cend();
+    --it_end;
+    double layerphi = it_end->second.layerphi;
+    double radius = it_end->second.R;
+    double eps = it_end->second.eps;
+    double offset = it_end->second.offset;
+
+    auto map_it = layer_params.find(layer);
+    if (map_it != layer_params.cend()) {
+     layerphi = map_it->second.layerphi;
+     radius = map_it->second.R;
+     eps = map_it->second.eps;
+     offset = map_it->second.offset;
+    }
+    _currentLayerphi = layerphi;
+    _currentRadius = radius;
+    m_epsilon = eps;
+    m_offset = offset;
+ }
+
+  inline double returnAlpha() const {
+    double alpha = 2 * std::asin(m_detectorLength * std::tan(m_epsilon0)/(2 * _currentRadius));
+    return alpha;
+ }
 
 protected:
   /* *** nalipour *** */
   double phi(const CellID& cID) const;
+  std::map<int,LAYER> layer_params; // <layer, {layerphi, R, eps, offset}>
+  std::map<int, std::vector<std::pair<TVector3, TVector3> >> m_wiresPositions; // < layer, vec<WireMidpoint, WireDirection> >
 
-
+  double m_cellSize;
   double m_offsetPhi;
-  double m_delta_phi;
+  double m_epsilon0;
+  double m_detectorLength;
   std::string m_phiID;
 
   // Current parameters of the layer: sizePhi
-//  mutable double _currentGridSizePhi;  // current size Phi
-//  mutable double _currentRadius;       // current size radius
-//  mutable double m_epsilon;
+  mutable double _currentLayerphi;
+  mutable double _currentRadius;
+  mutable double m_epsilon;
+  mutable double m_offset;
+
 };
 }
 }
diff --git a/Detector/DetSegmentation/src/GridDriftChamber.cpp b/Detector/DetSegmentation/src/GridDriftChamber.cpp
index 4b1ed216fb0825e1b41a210871ca2451954ee22e..57a6d7ebacd9fb221dbb7e59dfedd2a14a52894b 100644
--- a/Detector/DetSegmentation/src/GridDriftChamber.cpp
+++ b/Detector/DetSegmentation/src/GridDriftChamber.cpp
@@ -1,4 +1,5 @@
 #include "DetSegmentation/GridDriftChamber.h"
+#include <map>
 
 namespace dd4hep {
 namespace DDSegmentation {
@@ -9,17 +10,22 @@ GridDriftChamber::GridDriftChamber(const std::string& cellEncoding) : Segmentati
   _type = "GridDriftChamber";
   _description = "Drift chamber segmentation in the global coordinates";
 
-  registerIdentifier("identifier_phi", "Cell ID identifier for phi", m_phiID, "phi");
-  registerParameter("delta_phi", "delta phi", m_delta_phi, 0., SegmentationParameter::LengthUnit);
+  registerParameter("cell_size", "cell size", m_cellSize, 0., SegmentationParameter::LengthUnit);
+  registerParameter("offset_phi", "offset in phi", m_offsetPhi, 0., SegmentationParameter::LengthUnit, true);
+  registerParameter("detector_length", "Length of the wire", m_detectorLength, 1., SegmentationParameter::LengthUnit);
+  registerIdentifier("identifier_phi", "Cell ID identifier for phi", m_phiID, "cellID");
 }
 
 GridDriftChamber::GridDriftChamber(const BitFieldCoder* decoder) : Segmentation(decoder) {
-  // define type and description
+
   _type = "GridDriftChamber";
   _description = "Drift chamber segmentation in the global coordinates";
 
-  registerIdentifier("identifier_phi", "Cell ID identifier for phi", m_phiID, "phi");
-  registerParameter("delta_phi", "delta phi", m_delta_phi, 0., SegmentationParameter::LengthUnit);
+  registerParameter("cell_size", "cell size", m_cellSize, 1., SegmentationParameter::LengthUnit);
+  registerParameter("offset_phi", "offset in phi", m_offsetPhi, 0., SegmentationParameter::LengthUnit, true);
+  registerParameter("epsilon0", "epsilon", m_epsilon0, 0., SegmentationParameter::AngleUnit, true);
+  registerParameter("detector_length", "Length of the wire", m_detectorLength, 1., SegmentationParameter::LengthUnit);
+  registerIdentifier("identifier_phi", "Cell ID identifier for phi", m_phiID, "cellID");
 }
 
 Vector3D GridDriftChamber::position(const CellID& /*cID*/) const {
@@ -27,28 +33,78 @@ Vector3D GridDriftChamber::position(const CellID& /*cID*/) const {
   return cellPosition;
 }
 
+
 CellID GridDriftChamber::cellID(const Vector3D& /*localPosition*/, const Vector3D& globalPosition,
                                 const VolumeID& vID) const {
 
   CellID cID = vID;
+  unsigned int layerID = _decoder->get(vID, "layer");
+  updateParams(layerID);
 
   double phi_hit = phiFromXY(globalPosition);
   double posx = globalPosition.X;
   double posy = globalPosition.Y;
-
-  int lphi = (int) (phi_hit/m_delta_phi);
+  double offsetphi= m_offset;
+  int _lphi;
+//  if(layerID % 2 == 0) {
+//      offsetphi = 0.;
+//     _lphi = (int) (phi_hit / _currentLayerphi);
+//   }
+//  else {
+//    offsetphi = _currentLayerphi / 2.;
+    if(phi_hit >= offsetphi) {
+      _lphi = (int) ((phi_hit - offsetphi)/ _currentLayerphi);
+    }
+    else {
+      _lphi = (int) ((phi_hit - offsetphi + 2 * M_PI)/ _currentLayerphi);
+    }
+  int lphi = _lphi;
   _decoder->set(cID, m_phiID, lphi);
 
-//  std::cout << " myliu: "
-//            << " x: " << posx
-//            << " y: " << posy
-////            << " pre: " << phi_pre
-//            << " phi_hit: " << phi_hit
-//            << " lphi: " << lphi
-//            << std::endl;
+//std::cout << "#######################################: " 
+//          <<  " offset : " << m_offset
+//          << " offsetphi: " << offsetphi
+//          << " layerID: " << layerID
+//          << " r: " << _currentRadius
+//          << " layerphi: " << _currentLayerphi
+//          << std::endl;
+
   return cID;
 }
 
+double GridDriftChamber::phi(const CellID& cID) const {
+  CellID phiValue = _decoder->get(cID, m_phiID);
+  return binToPosition(phiValue, _currentLayerphi, m_offsetPhi);
+}
+
+double GridDriftChamber::distanceTrackWire(const CellID& cID, const TVector3& hit_start,
+                                           const TVector3& hit_end) const {
+
+  auto layerIndex = _decoder->get(cID, "layer");
+  updateParams(layerIndex);
+
+  double phi_start = phi(cID);
+  double phi_end = phi_start + returnAlpha();
+
+  TVector3 Wstart = returnWirePosition(phi_start, 1);
+  TVector3 Wend = returnWirePosition(phi_end, -1);
+
+  TVector3 a = hit_end - hit_start;
+  TVector3 b = Wend - Wstart;
+  TVector3 c = Wstart - hit_start;
+
+  double num = std::abs(c.Dot(a.Cross(b)));
+  double denum = (a.Cross(b)).Mag();
+
+  double DCA = 0;
+
+   if (denum) {
+    DCA = num / denum;
+  }
+
+  return DCA;
+}
+
 
 REGISTER_SEGMENTATION(GridDriftChamber)
 }
diff --git a/Detector/GeoSvc/CMakeLists.txt b/Detector/GeomSvc/CMakeLists.txt
similarity index 84%
rename from Detector/GeoSvc/CMakeLists.txt
rename to Detector/GeomSvc/CMakeLists.txt
index b0e86b467a522c2154ffd2aed8191092e57d5766..e9aefede2dcef02a72127f51e34c3164789ab291 100644
--- a/Detector/GeoSvc/CMakeLists.txt
+++ b/Detector/GeomSvc/CMakeLists.txt
@@ -1,10 +1,10 @@
 
 ##############################################################################
-# Package: GeoSvc
-#    Desc: implement the IGeoSvc interface.
+# Package: GeomSvc
+#    Desc: implement the IGeomSvc interface.
 ##############################################################################
 
-gaudi_subdir(GeoSvc v0r0)
+gaudi_subdir(GeomSvc v0r0)
 
 gaudi_depends_on_subdirs(
     FWCore
@@ -17,8 +17,8 @@ find_package(GEAR REQUIRED)
 
 message("GEAR_LIBRARIES: ${GEAR_LIBRARIES}")
 
-gaudi_add_module(GeoSvc
-                 src/GeoSvc.cpp
+gaudi_add_module(GeomSvc
+                 src/GeomSvc.cpp
                  INCLUDE_DIRS
                    # DetInterface
                    # DD4hep
diff --git a/Detector/GeoSvc/src/GeoSvc.cpp b/Detector/GeomSvc/src/GeomSvc.cpp
similarity index 96%
rename from Detector/GeoSvc/src/GeoSvc.cpp
rename to Detector/GeomSvc/src/GeomSvc.cpp
index 61671acfa8140087fdcdfa15ba3a40404cceaf72..050431b8a5359493e9c6e57413f70576a93cd0b7 100644
--- a/Detector/GeoSvc/src/GeoSvc.cpp
+++ b/Detector/GeomSvc/src/GeomSvc.cpp
@@ -1,4 +1,4 @@
-#include "GeoSvc.h"
+#include "GeomSvc.h"
 #include "gearimpl/GearParametersImpl.h"
 #include "TMath.h"
 #include "TMaterial.h"
@@ -19,19 +19,19 @@
 #include <iomanip>
 #include <iostream>
 
-DECLARE_COMPONENT(GeoSvc)
+DECLARE_COMPONENT(GeomSvc)
 
-GeoSvc::GeoSvc(const std::string& name, ISvcLocator* svc)
+GeomSvc::GeomSvc(const std::string& name, ISvcLocator* svc)
 : base_class(name, svc), m_dd4hep_geo(nullptr), m_vxdData(nullptr), m_beamPipeData(nullptr){
 
 }
 
-GeoSvc::~GeoSvc() {
+GeomSvc::~GeomSvc() {
 
 }
 
 StatusCode
-GeoSvc::initialize() {
+GeomSvc::initialize() {
   StatusCode sc = Service::initialize();
 
   m_dd4hep_geo = &(dd4hep::Detector::getInstance());
@@ -68,14 +68,14 @@ GeoSvc::initialize() {
 }
 
 StatusCode
-GeoSvc::finalize() {
+GeomSvc::finalize() {
   StatusCode sc;
   if(m_vxdParameters) delete m_vxdParameters;
   return sc;
 }
 
 dd4hep::DetElement
-GeoSvc::getDD4HepGeo() {
+GeomSvc::getDD4HepGeo() {
     if (lcdd()) {
         return lcdd()->world();
     }
@@ -83,15 +83,15 @@ GeoSvc::getDD4HepGeo() {
 }
 
 dd4hep::Detector*
-GeoSvc::lcdd() {
+GeomSvc::lcdd() {
     return m_dd4hep_geo;
 }
 
 
-IGeoSvc::Decoder*
-GeoSvc::getDecoder(const std::string& readout_name) {
+IGeomSvc::Decoder*
+GeomSvc::getDecoder(const std::string& readout_name) {
 
-    IGeoSvc::Decoder* decoder = nullptr;
+    IGeomSvc::Decoder* decoder = nullptr;
 
     if (!lcdd()) {
         error() << "Failed to get lcdd()" << endmsg;
@@ -121,26 +121,26 @@ GeoSvc::getDecoder(const std::string& readout_name) {
 }
 
 
-const std::map<std::string,double>& GeoSvc::getDetParameters(std::string name){
+const std::map<std::string,double>& GeomSvc::getDetParameters(std::string name){
   if(m_detParameters.find(name)!=m_detParameters.end()) return m_detParameters[name];
   else{
     char message[200];
-    sprintf(message,"GeoSvc has not the parameter set named %s", name); 
+    sprintf(message,"GeomSvc has not the parameter set named %s", name); 
     throw std::runtime_error(message);
   }
 }
 
-const double GeoSvc::getDetParameter(std::string set_name, std::string par_name){
+const double GeomSvc::getDetParameter(std::string set_name, std::string par_name){
   std::map<std::string, std::map<std::string,double> >::iterator it=m_detParameters.find(set_name);
   if(it!=m_detParameters.end()){
     if(it->second.find(par_name)!=it->second.end()) return it->second[par_name];  
   }
   char message[200];
-  sprintf(message,"GeoSvc has not the parameter named %s in set %s", par_name, set_name);
+  sprintf(message,"GeomSvc has not the parameter named %s in set %s", par_name, set_name);
   throw std::runtime_error(message);
 }
 
-StatusCode GeoSvc::convertVXD(dd4hep::DetElement& vxd){
+StatusCode GeomSvc::convertVXD(dd4hep::DetElement& vxd){
   StatusCode sc;
   //fucd: another method to obtain parameters, but not fully for KalDet  
   bool extensionDataValid = true;
@@ -575,7 +575,7 @@ StatusCode GeoSvc::convertVXD(dd4hep::DetElement& vxd){
   return sc;
 }
 
-TGeoNode* GeoSvc::FindNode(TGeoNode* mother, char* name){
+TGeoNode* GeomSvc::FindNode(TGeoNode* mother, char* name){
   TGeoNode* next = 0;
   if(mother->GetNdaughters()!=0){ 
     for(int i=0;i<mother->GetNdaughters();i++){
@@ -594,7 +594,7 @@ TGeoNode* GeoSvc::FindNode(TGeoNode* mother, char* name){
   return next;
 }
 
-TMaterial* GeoSvc::getMaterial(std::string name){
+TMaterial* GeomSvc::getMaterial(std::string name){
   std::map<std::string, TMaterial*>::const_iterator it = m_materials.find(name);
   if(it!=m_materials.end()) return it->second;
   else return 0;     
diff --git a/Detector/GeoSvc/src/GeoSvc.h b/Detector/GeomSvc/src/GeomSvc.h
similarity index 89%
rename from Detector/GeoSvc/src/GeoSvc.h
rename to Detector/GeomSvc/src/GeomSvc.h
index b90060cfa5adc65a00fb013089bff8412c826e37..7c4207af96982af2e4f4055b07d5b4f67ee6cc2b 100644
--- a/Detector/GeoSvc/src/GeoSvc.h
+++ b/Detector/GeomSvc/src/GeomSvc.h
@@ -1,8 +1,8 @@
-#ifndef GeoSvc_h
-#define GeoSvc_h
+#ifndef GeomSvc_h
+#define GeomSvc_h
 
 // Interface
-#include "DetInterface/IGeoSvc.h"
+#include "DetInterface/IGeomSvc.h"
 
 // Gaudi
 #include "GaudiKernel/IIncidentListener.h"
@@ -22,16 +22,16 @@
 class dd4hep::DetElement;
 class TGeoNode;
 
-class GeoSvc: public extends<Service, IGeoSvc> {
+class GeomSvc: public extends<Service, IGeomSvc> {
  public:
-  GeoSvc(const std::string& name, ISvcLocator* svc);
-  ~GeoSvc();
+  GeomSvc(const std::string& name, ISvcLocator* svc);
+  ~GeomSvc();
   
   // Service
   StatusCode initialize() override;
   StatusCode finalize() override;
   
-  // IGeoSvc
+  // IGeomSvc
   dd4hep::DetElement getDD4HepGeo() override;
   dd4hep::Detector* lcdd() override;
   
@@ -76,4 +76,4 @@ private:
   };
 };
 
-#endif // GeoSvc_h
+#endif // GeomSvc_h
diff --git a/Digitisers/DCHDigi/src/DCHDigiAlg.cpp b/Digitisers/DCHDigi/src/DCHDigiAlg.cpp
index d4089bbf9ad53b11864e908a9110f096eb975173..4f782b71cd79c852d974daa9d8d001be237398c6 100644
--- a/Digitisers/DCHDigi/src/DCHDigiAlg.cpp
+++ b/Digitisers/DCHDigi/src/DCHDigiAlg.cpp
@@ -36,8 +36,8 @@ DCHDigiAlg::DCHDigiAlg(const std::string& name, ISvcLocator* svcLoc)
 StatusCode DCHDigiAlg::initialize()
 {
   /*
-  m_geosvc = service<IGeoSvc>("GeoSvc");
-  if ( !m_geosvc )  throw "DCHDigiAlg :Failed to find GeoSvc ...";
+  m_geosvc = service<IGeomSvc>("GeomSvc");
+  if ( !m_geosvc )  throw "DCHDigiAlg :Failed to find GeomSvc ...";
   dd4hep::Detector* m_dd4hep = m_geosvc->lcdd();
   if ( !m_dd4hep )  throw "DCHDigiAlg :Failed to get dd4hep::Detector ...";
   m_cellIDConverter = new dd4hep::rec::CellIDPositionConverter(*m_dd4hep);
diff --git a/Digitisers/DCHDigi/src/DCHDigiAlg.h b/Digitisers/DCHDigi/src/DCHDigiAlg.h
index bdd80cfded1b3d0902f15befbbb1589ecbb7789d..6a6bb320675aae225b5589f2a03599b643f8e120 100644
--- a/Digitisers/DCHDigi/src/DCHDigiAlg.h
+++ b/Digitisers/DCHDigi/src/DCHDigiAlg.h
@@ -9,7 +9,7 @@
 
 #include <DDRec/DetectorData.h>
 #include <DDRec/CellIDPositionConverter.h>
-#include "DetInterface/IGeoSvc.h"
+#include "DetInterface/IGeomSvc.h"
 
 
 
@@ -36,7 +36,7 @@ public:
  
 protected:
 
-  SmartIF<IGeoSvc> m_geosvc;
+  SmartIF<IGeomSvc> m_geosvc;
   typedef std::vector<float> FloatVec;
   int _nEvt ;
 
diff --git a/Digitisers/G2CDArbor/src/G2CDArborAlg.cpp b/Digitisers/G2CDArbor/src/G2CDArborAlg.cpp
index 6e36e5ac7e44011caa8b3bdd5db6621ba783d3b2..2c5526aa506b8f5924be7ac2ba36e394a02f1865 100644
--- a/Digitisers/G2CDArbor/src/G2CDArborAlg.cpp
+++ b/Digitisers/G2CDArbor/src/G2CDArborAlg.cpp
@@ -215,9 +215,9 @@ G2CDArborAlg::G2CDArborAlg(const std::string& name, ISvcLocator* svcLoc)
 }
 
 StatusCode G2CDArborAlg::initialize() {
-     m_geosvc = service<IGeoSvc>("GeoSvc");
+     m_geosvc = service<IGeomSvc>("GeomSvc");
      if (!m_geosvc) {
-       error() << "Failed to find GeoSvc." << endmsg;
+       error() << "Failed to find GeomSvc." << endmsg;
        return StatusCode::FAILURE;
      }
      m_dd4hep_geo = m_geosvc->lcdd();
diff --git a/Digitisers/G2CDArbor/src/G2CDArborAlg.h b/Digitisers/G2CDArbor/src/G2CDArborAlg.h
index 9608419dcc74fddebe98d75d7c7d72f20044bba5..35658c8b01f3e837b61b11f72aa9b86aa6af5d99 100644
--- a/Digitisers/G2CDArbor/src/G2CDArborAlg.h
+++ b/Digitisers/G2CDArbor/src/G2CDArborAlg.h
@@ -16,7 +16,7 @@
 
 #include <DDRec/DetectorData.h>
 #include <DDRec/CellIDPositionConverter.h>
-#include "DetInterface/IGeoSvc.h"
+#include "DetInterface/IGeomSvc.h"
 
 #include <string>
 #include <iostream>
@@ -148,7 +148,7 @@ protected:
      std::ostream *_output;
      std::string m_encoder_str;
 
-     SmartIF<IGeoSvc> m_geosvc;
+     SmartIF<IGeomSvc> m_geosvc;
      dd4hep::Detector* m_dd4hep_geo;
      dd4hep::DDSegmentation::BitFieldCoder* m_decoder;
 };
diff --git a/Examples/options/dumpid.py b/Examples/options/dumpid.py
index 1b7ddde3af79aea5e7c8be979a870c47e0713833..91f63ce40ff22e2eca421676728774ddd49ab0a8 100644
--- a/Examples/options/dumpid.py
+++ b/Examples/options/dumpid.py
@@ -19,8 +19,8 @@ if not os.path.exists(geometry_path):
     print("Can't find the compact geometry file: %s"%geometry_path)
     sys.exit(-1)
 
-from Configurables import GeoSvc
-geosvc = GeoSvc("GeoSvc")
+from Configurables import GeomSvc
+geosvc = GeomSvc("GeomSvc")
 geosvc.compact = geometry_path
 
 ##############################################################################
diff --git a/Examples/options/tut_detsim.py b/Examples/options/tut_detsim.py
index 3c9071ed5e8580691c2d7412e9478feb83500ea9..a7062c485705333f956e0642bba6af8135b64715 100644
--- a/Examples/options/tut_detsim.py
+++ b/Examples/options/tut_detsim.py
@@ -44,8 +44,8 @@ if not os.path.exists(geometry_path):
     print("Can't find the compact geometry file: %s"%geometry_path)
     sys.exit(-1)
 
-from Configurables import GeoSvc
-geosvc = GeoSvc("GeoSvc")
+from Configurables import GeomSvc
+geosvc = GeomSvc("GeomSvc")
 geosvc.compact = geometry_path
 
 ##############################################################################
diff --git a/Examples/options/tut_detsim_SDT.py b/Examples/options/tut_detsim_SDT.py
index 5510a6d9ab18fadf3423f629e31637a62d470060..478f3acc965df2dadec26027182d7176adac6364 100644
--- a/Examples/options/tut_detsim_SDT.py
+++ b/Examples/options/tut_detsim_SDT.py
@@ -44,8 +44,8 @@ if not os.path.exists(geometry_path):
     print("Can't find the compact geometry file: %s"%geometry_path)
     sys.exit(-1)
 
-from Configurables import GeoSvc
-geosvc = GeoSvc("GeoSvc")
+from Configurables import GeomSvc
+geosvc = GeomSvc("GeomSvc")
 geosvc.compact = geometry_path
 
 ##############################################################################
diff --git a/Examples/options/tut_detsim_pan_matrix.py b/Examples/options/tut_detsim_pan_matrix.py
index ab3b6cbb1499b30cca09ce964ecfadbbb6205032..05bc4fdef084d3c27eec9e035946c9fa37ca0042 100644
--- a/Examples/options/tut_detsim_pan_matrix.py
+++ b/Examples/options/tut_detsim_pan_matrix.py
@@ -37,8 +37,8 @@ if not os.path.exists(geometry_path):
     print("Can't find the compact geometry file: %s"%geometry_path)
     sys.exit(-1)
 
-from Configurables import GeoSvc
-geosvc = GeoSvc("GeoSvc")
+from Configurables import GeomSvc
+geosvc = GeomSvc("GeomSvc")
 #geosvc.compact = geometry_path
 geosvc.compact = "./Detector/DetEcalMatrix/compact/det.xml"
 
diff --git a/Examples/options/tut_detsim_pandora.py b/Examples/options/tut_detsim_pandora.py
index be552eaaf41ce2bfc393043ff924ef7ce067b84a..af80c1e6565ec12dc9cef76faa1bfa7b8fd62fd8 100644
--- a/Examples/options/tut_detsim_pandora.py
+++ b/Examples/options/tut_detsim_pandora.py
@@ -38,8 +38,8 @@ if not os.path.exists(geometry_path):
     print("Can't find the compact geometry file: %s"%geometry_path)
     sys.exit(-1)
 
-from Configurables import GeoSvc
-geosvc = GeoSvc("GeoSvc")
+from Configurables import GeomSvc
+geosvc = GeomSvc("GeomSvc")
 geosvc.compact = geometry_path
 
 ##############################################################################
diff --git a/Examples/src/DumpIDAlg/DumpIDAlg.cpp b/Examples/src/DumpIDAlg/DumpIDAlg.cpp
index 1ae59e335bb44fcb32a428a5fb03f77c37df9f29..c82b76479a40fd2f830fc2e519171a487537eee0 100644
--- a/Examples/src/DumpIDAlg/DumpIDAlg.cpp
+++ b/Examples/src/DumpIDAlg/DumpIDAlg.cpp
@@ -18,9 +18,9 @@ DumpIDAlg::DumpIDAlg(const std::string& name, ISvcLocator* svcLoc)
 
 StatusCode DumpIDAlg::initialize()
 {
-    m_geosvc = service<IGeoSvc>("GeoSvc");
+    m_geosvc = service<IGeomSvc>("GeomSvc");
     if (!m_geosvc) {
-        error() << "Failed to find GeoSvc." << endmsg;
+        error() << "Failed to find GeomSvc." << endmsg;
         return StatusCode::FAILURE;
     }
     m_dd4hep_geo = m_geosvc->lcdd();
diff --git a/Examples/src/DumpIDAlg/DumpIDAlg.h b/Examples/src/DumpIDAlg/DumpIDAlg.h
index 20bb9469ffaebe9f46fb50bf0a919cbf66218bb0..9680d2b2c989dad773e427d4a134957227646b26 100644
--- a/Examples/src/DumpIDAlg/DumpIDAlg.h
+++ b/Examples/src/DumpIDAlg/DumpIDAlg.h
@@ -5,7 +5,7 @@
 #include "GaudiAlg/GaudiAlgorithm.h"
 #include "GaudiKernel/NTuple.h"
 
-#include "DetInterface/IGeoSvc.h"
+#include "DetInterface/IGeomSvc.h"
 
 #include "DD4hep/Detector.h"
 
@@ -27,7 +27,7 @@ public:
     virtual StatusCode finalize();
 
 private:
-    SmartIF<IGeoSvc> m_geosvc;
+    SmartIF<IGeomSvc> m_geosvc;
     dd4hep::Detector* m_dd4hep_geo;
     dd4hep::DDSegmentation::BitFieldCoder* m_decoder;
 
diff --git a/Reconstruction/Digi_Calo/src/CaloDigiAlg.cpp b/Reconstruction/Digi_Calo/src/CaloDigiAlg.cpp
index 93e2fb35c0fa217382f588947fb6ce7db60d0f90..acc8533f91d4ead80ec4d74bea12d01e806cd50e 100644
--- a/Reconstruction/Digi_Calo/src/CaloDigiAlg.cpp
+++ b/Reconstruction/Digi_Calo/src/CaloDigiAlg.cpp
@@ -35,8 +35,8 @@ StatusCode CaloDigiAlg::initialize()
 {
 
   std::cout<<"CaloDigiAlg::m_scale="<<m_scale<<std::endl;
-  m_geosvc = service<IGeoSvc>("GeoSvc");
-  if ( !m_geosvc )  throw "CaloDigiAlg :Failed to find GeoSvc ...";
+  m_geosvc = service<IGeomSvc>("GeomSvc");
+  if ( !m_geosvc )  throw "CaloDigiAlg :Failed to find GeomSvc ...";
   dd4hep::Detector* m_dd4hep = m_geosvc->lcdd();
   if ( !m_dd4hep )  throw "CaloDigiAlg :Failed to get dd4hep::Detector ...";
   m_cellIDConverter = new dd4hep::rec::CellIDPositionConverter(*m_dd4hep);
diff --git a/Reconstruction/Digi_Calo/src/CaloDigiAlg.h b/Reconstruction/Digi_Calo/src/CaloDigiAlg.h
index c1a82c8867450cf7335dce74d4743d0e7e9b374e..2142018cf3a5138831de10b07f9eb9b7b3b41f93 100644
--- a/Reconstruction/Digi_Calo/src/CaloDigiAlg.h
+++ b/Reconstruction/Digi_Calo/src/CaloDigiAlg.h
@@ -12,7 +12,7 @@
 
 #include <DDRec/DetectorData.h>
 #include <DDRec/CellIDPositionConverter.h>
-#include "DetInterface/IGeoSvc.h"
+#include "DetInterface/IGeomSvc.h"
 
 
 
@@ -39,7 +39,7 @@ public:
  
 protected:
 
-  SmartIF<IGeoSvc> m_geosvc;
+  SmartIF<IGeomSvc> m_geosvc;
   typedef std::vector<float> FloatVec;
 
   int _nEvt ;
diff --git a/Reconstruction/PFA/Pandora/MatrixPandora/include/CaloHitCreator.h b/Reconstruction/PFA/Pandora/MatrixPandora/include/CaloHitCreator.h
index 7dfb684f8d155291f5d1e1e3a02154da7f2ad1dc..fb601edbaa87f0ba0d547308097692ed54ab1911 100644
--- a/Reconstruction/PFA/Pandora/MatrixPandora/include/CaloHitCreator.h
+++ b/Reconstruction/PFA/Pandora/MatrixPandora/include/CaloHitCreator.h
@@ -15,7 +15,7 @@
 
 #include "Api/PandoraApi.h"
 
-#include "DetInterface/IGeoSvc.h"
+#include "DetInterface/IGeomSvc.h"
 #include "DD4hep/DD4hepUnits.h"
 #include "DD4hep/Detector.h"
 #include <DDRec/DetectorData.h>
diff --git a/Reconstruction/PFA/Pandora/MatrixPandora/include/GeometryCreator.h b/Reconstruction/PFA/Pandora/MatrixPandora/include/GeometryCreator.h
index 6bd9c4ba2f9c3cfc48591533377d296d7df62d17..318b52d593c14f2025a1055e0a56bac7bc400504 100644
--- a/Reconstruction/PFA/Pandora/MatrixPandora/include/GeometryCreator.h
+++ b/Reconstruction/PFA/Pandora/MatrixPandora/include/GeometryCreator.h
@@ -12,7 +12,7 @@
 
 #include "GaudiKernel/ISvcLocator.h"
 
-#include "DetInterface/IGeoSvc.h"
+#include "DetInterface/IGeomSvc.h"
 #include "DD4hep/DD4hepUnits.h"
 #include "DD4hep/Detector.h"
 
diff --git a/Reconstruction/PFA/Pandora/MatrixPandora/src/CaloHitCreator.cpp b/Reconstruction/PFA/Pandora/MatrixPandora/src/CaloHitCreator.cpp
index a6e812806716d76aaadbcda877c1e38959ca6ca0..5bda03ba495910bda0c738739736eb25eab68c3c 100644
--- a/Reconstruction/PFA/Pandora/MatrixPandora/src/CaloHitCreator.cpp
+++ b/Reconstruction/PFA/Pandora/MatrixPandora/src/CaloHitCreator.cpp
@@ -57,11 +57,11 @@ CaloHitCreator::CaloHitCreator(const Settings &settings, const pandora::Pandora
     _GEAR = iSvc->getGearMgr();
 
 
-    IGeoSvc*  Svc = 0;
-    StatusCode sc1 = svcloc->service("GeoSvc", Svc, false);
+    IGeomSvc*  Svc = 0;
+    StatusCode sc1 = svcloc->service("GeomSvc", Svc, false);
     if ( !sc1 )
     {
-        throw "Failed to find GeoSvc ...";
+        throw "Failed to find GeomSvc ...";
     }
     m_dd4hep = Svc->lcdd();
     const dd4hep::DetElement &detElement = m_dd4hep->detector("CaloDetector");
diff --git a/Reconstruction/PFA/Pandora/MatrixPandora/src/GeometryCreator.cpp b/Reconstruction/PFA/Pandora/MatrixPandora/src/GeometryCreator.cpp
index 343b6045398c032c9b71c3c64e18081437a5f2b4..2ccaa0990e1622251539eb6763b5f92c1bcb1997 100644
--- a/Reconstruction/PFA/Pandora/MatrixPandora/src/GeometryCreator.cpp
+++ b/Reconstruction/PFA/Pandora/MatrixPandora/src/GeometryCreator.cpp
@@ -47,11 +47,11 @@ pandora::StatusCode GeometryCreator::CreateGeometry(ISvcLocator* svcloc)
     _GEAR = iSvc->getGearMgr();
 
 
-    IGeoSvc*  Svc = 0;
-    StatusCode sc1 = svcloc->service("GeoSvc", Svc, false);
+    IGeomSvc*  Svc = 0;
+    StatusCode sc1 = svcloc->service("GeomSvc", Svc, false);
     if ( !sc1 )
     {
-        throw "Failed to find GeoSvc ...";
+        throw "Failed to find GeomSvc ...";
     }
     m_dd4hep = Svc->lcdd();
     
diff --git a/Service/TrackSystemSvc/src/MarlinKalTest.cc b/Service/TrackSystemSvc/src/MarlinKalTest.cc
index 0c0dde8c5a14c4663cce7ae2af288447d375bbae..90dcd47c8cb43e0c6ee332c1827050e5529bbaa6 100644
--- a/Service/TrackSystemSvc/src/MarlinKalTest.cc
+++ b/Service/TrackSystemSvc/src/MarlinKalTest.cc
@@ -26,7 +26,7 @@
 #include "gear/BField.h"
 #include "gear/TPCParameters.h"
 #include "gear/PadRowLayout2D.h"
-#include "DetInterface/IGeoSvc.h"
+#include "DetInterface/IGeomSvc.h"
 
 #include <math.h>
 #include <cmath>
@@ -39,7 +39,7 @@
 
 namespace MarlinTrk{
   
-  MarlinKalTest::MarlinKalTest( const gear::GearMgr& gearMgr, IGeoSvc* geoSvc) : 
+  MarlinKalTest::MarlinKalTest( const gear::GearMgr& gearMgr, IGeomSvc* geoSvc) : 
   _ipLayer(NULL) ,
   _gearMgr( &gearMgr ),
   _geoSvc(geoSvc){
diff --git a/Service/TrackSystemSvc/src/MarlinKalTest.h b/Service/TrackSystemSvc/src/MarlinKalTest.h
index 2e62bd09980cbe93886692f9a6708fa8c02d1177..df37d747418d538449feace37006cfeb902d6b8d 100644
--- a/Service/TrackSystemSvc/src/MarlinKalTest.h
+++ b/Service/TrackSystemSvc/src/MarlinKalTest.h
@@ -19,13 +19,13 @@
 
 #include <cmath>
 #include <vector>
-#include "DetInterface/IGeoSvc.h"
+#include "DetInterface/IGeomSvc.h"
 
 class TKalDetCradle ;
 class TVKalDetector ;
 class ILDVMeasLayer ;
 class THelicalTrack ;
-//class IGeoSvc;
+//class IGeomSvc;
 class ILDCylinderMeasLayer;
 
 namespace edm4hep{
@@ -48,7 +48,7 @@ namespace MarlinTrk{
     
     
     /** Default c'tor, initializes the geometry from GEAR. */
-    MarlinKalTest( const gear::GearMgr& gearMgr, IGeoSvc* geoSvc) ;
+    MarlinKalTest( const gear::GearMgr& gearMgr, IGeomSvc* geoSvc) ;
     
     /** d'tor */
     ~MarlinKalTest() ;
@@ -92,7 +92,7 @@ namespace MarlinTrk{
     const ILDCylinderMeasLayer* _ipLayer ;
     
     const gear::GearMgr* _gearMgr ;
-    IGeoSvc* _geoSvc;
+    IGeomSvc* _geoSvc;
     
     TKalDetCradle* _det ;            // the detector cradle
     
diff --git a/Service/TrackSystemSvc/src/TrackSystemSvc.cpp b/Service/TrackSystemSvc/src/TrackSystemSvc.cpp
index 9f604edac92e844cf552039871a5679a9ab18bf7..238c12b8a34e758fe31cccd681be2f91939c76fc 100644
--- a/Service/TrackSystemSvc/src/TrackSystemSvc.cpp
+++ b/Service/TrackSystemSvc/src/TrackSystemSvc.cpp
@@ -50,6 +50,7 @@ StatusCode TrackSystemSvc::initialize(){
   m_trackSystems.clear();
 
   m_trackSystems[0] = getTrackSystem(0);
+
   
   return StatusCode::SUCCESS;
 }
diff --git a/Simulation/DetSimGeom/src/AnExampleDetElemTool.cpp b/Simulation/DetSimGeom/src/AnExampleDetElemTool.cpp
index e78170bc5eaf9534a29126630458285166421772..fffebf7940367aa72b08de7fba925a034efea7bd 100644
--- a/Simulation/DetSimGeom/src/AnExampleDetElemTool.cpp
+++ b/Simulation/DetSimGeom/src/AnExampleDetElemTool.cpp
@@ -191,9 +191,9 @@ StatusCode
 AnExampleDetElemTool::initialize() {
     StatusCode sc;
 
-    m_geosvc = service<IGeoSvc>("GeoSvc");
+    m_geosvc = service<IGeomSvc>("GeomSvc");
     if (!m_geosvc) {
-        error() << "Failed to find GeoSvc." << endmsg;
+        error() << "Failed to find GeomSvc." << endmsg;
         return StatusCode::FAILURE;
     }
 
diff --git a/Simulation/DetSimGeom/src/AnExampleDetElemTool.h b/Simulation/DetSimGeom/src/AnExampleDetElemTool.h
index ba1990715d10ca9f07eb5a2791314f8ce0d090ee..31fcfc0ea420185f3e15fcc9f8502e9f6d4ccb7e 100644
--- a/Simulation/DetSimGeom/src/AnExampleDetElemTool.h
+++ b/Simulation/DetSimGeom/src/AnExampleDetElemTool.h
@@ -8,7 +8,7 @@
 #include "G4SystemOfUnits.hh"
 #include "G4PhysicalConstants.hh"
 
-#include "DetInterface/IGeoSvc.h"
+#include "DetInterface/IGeomSvc.h"
 #include "DetSimInterface/IDetElemTool.h"
 #include "DetSimInterface/ISensDetTool.h"
 
@@ -31,7 +31,7 @@ private:
     // DD4hep XML compact file path
     Gaudi::Property<std::string> m_dd4hep_xmls{this, "detxml"};
 
-    SmartIF<IGeoSvc> m_geosvc;
+    SmartIF<IGeomSvc> m_geosvc;
     ToolHandle<ISensDetTool> m_calo_sdtool;
     ToolHandle<ISensDetTool> m_driftchamber_sdtool;
 };
diff --git a/Simulation/DetSimSD/src/CalorimeterSensDetTool.cpp b/Simulation/DetSimSD/src/CalorimeterSensDetTool.cpp
index d8c30b10e8663a8977f99aa08eefd0113f2c3918..844104e28b4fda57d60ab1100d38d7ae7d3c25b8 100644
--- a/Simulation/DetSimSD/src/CalorimeterSensDetTool.cpp
+++ b/Simulation/DetSimSD/src/CalorimeterSensDetTool.cpp
@@ -13,9 +13,9 @@ CalorimeterSensDetTool::initialize() {
     StatusCode sc;
 
 
-    m_geosvc = service<IGeoSvc>("GeoSvc");
+    m_geosvc = service<IGeomSvc>("GeomSvc");
     if (!m_geosvc) {
-        error() << "Failed to find GeoSvc." << endmsg;
+        error() << "Failed to find GeomSvc." << endmsg;
         return StatusCode::FAILURE;
     }
 
diff --git a/Simulation/DetSimSD/src/CalorimeterSensDetTool.h b/Simulation/DetSimSD/src/CalorimeterSensDetTool.h
index 775d24510bba9da061e0a76ae2816cc762f7ada6..f3e0796b55670534b10cfb242093a577c724f4e9 100644
--- a/Simulation/DetSimSD/src/CalorimeterSensDetTool.h
+++ b/Simulation/DetSimSD/src/CalorimeterSensDetTool.h
@@ -9,7 +9,7 @@
 
 #include "GaudiKernel/AlgTool.h"
 #include "DetSimInterface/ISensDetTool.h"
-#include "DetInterface/IGeoSvc.h"
+#include "DetInterface/IGeomSvc.h"
 
 class CalorimeterSensDetTool: public extends<AlgTool, ISensDetTool> {
 
@@ -27,7 +27,7 @@ public:
 private:
 
     // in order to initialize SD, we need to get the lcdd()
-    SmartIF<IGeoSvc> m_geosvc;
+    SmartIF<IGeomSvc> m_geosvc;
 
 };
 
diff --git a/Simulation/DetSimSD/src/DriftChamberSensDetTool.cpp b/Simulation/DetSimSD/src/DriftChamberSensDetTool.cpp
index 33df958868b519aa2ac7f3a0506111fed5aaa23c..07c7b88f450920dc6cf046cc85f1c2440fecc322 100644
--- a/Simulation/DetSimSD/src/DriftChamberSensDetTool.cpp
+++ b/Simulation/DetSimSD/src/DriftChamberSensDetTool.cpp
@@ -11,9 +11,9 @@ DECLARE_COMPONENT(DriftChamberSensDetTool);
 StatusCode DriftChamberSensDetTool::initialize() {
     StatusCode sc;
 
-    m_geosvc = service<IGeoSvc>("GeoSvc");
+    m_geosvc = service<IGeomSvc>("GeomSvc");
     if (!m_geosvc) {
-        error() << "Failed to find GeoSvc." << endmsg;
+        error() << "Failed to find GeomSvc." << endmsg;
         return StatusCode::FAILURE;
     }
 
diff --git a/Simulation/DetSimSD/src/DriftChamberSensDetTool.h b/Simulation/DetSimSD/src/DriftChamberSensDetTool.h
index ae727ed09fbcb58c5ea918cf3e86813bd2625a2f..e01445d51bb85a259df0596d8bdbce2213091e0c 100644
--- a/Simulation/DetSimSD/src/DriftChamberSensDetTool.h
+++ b/Simulation/DetSimSD/src/DriftChamberSensDetTool.h
@@ -13,7 +13,7 @@
 #include "GaudiKernel/ToolHandle.h"
 #include "DetSimInterface/ISensDetTool.h"
 #include "DetSimInterface/IDedxSimTool.h"
-#include "DetInterface/IGeoSvc.h"
+#include "DetInterface/IGeomSvc.h"
 
 
 class DriftChamberSensDetTool: public extends<AlgTool, ISensDetTool> {
@@ -32,7 +32,7 @@ public:
 private:
 
     // in order to initialize SD, we need to get the lcdd()
-    SmartIF<IGeoSvc> m_geosvc;
+    SmartIF<IGeomSvc> m_geosvc;
     ToolHandle<IDedxSimTool> m_dedx_simtool;
     Gaudi::Property<std::string> m_dedx_sim_option{this, "DedxSimTool"};
 
diff --git a/Utilities/KalDet/kaldet/ILDFTDKalDetector.h b/Utilities/KalDet/kaldet/ILDFTDKalDetector.h
index 80d348a8a58a6b916d8e7f901099a3129d5bb1e6..c6ff6fa02d86da87f66176657d05b84da134a495 100644
--- a/Utilities/KalDet/kaldet/ILDFTDKalDetector.h
+++ b/Utilities/KalDet/kaldet/ILDFTDKalDetector.h
@@ -11,7 +11,7 @@
 
 class TNode;
 class TVector3;
-class IGeoSvc;
+class IGeomSvc;
 
 namespace gear{
   class GearMgr ;
@@ -22,7 +22,7 @@ class ILDFTDKalDetector : public TVKalDetector {
 public:
   
   /** Initialize the FTD from GEAR */
-  ILDFTDKalDetector( const gear::GearMgr& gearMgr, IGeoSvc* geoSvc );
+  ILDFTDKalDetector( const gear::GearMgr& gearMgr, IGeomSvc* geoSvc );
   
   
 private:
diff --git a/Utilities/KalDet/kaldet/ILDSETKalDetector.h b/Utilities/KalDet/kaldet/ILDSETKalDetector.h
index 6c434cba9d28ee3c89c9d5dbec35dc442eef8789..cdc83120c86a1ee5b422c901faff42d746cf2df5 100644
--- a/Utilities/KalDet/kaldet/ILDSETKalDetector.h
+++ b/Utilities/KalDet/kaldet/ILDSETKalDetector.h
@@ -16,20 +16,20 @@ namespace gear{
   class GearMgr ;
 }
 
-class IGeoSvc;
+class IGeomSvc;
 
 class ILDSETKalDetector : public TVKalDetector {
   
 public:
   
   /** Initialize the SET from GEAR */
-  ILDSETKalDetector( const gear::GearMgr& gearMgr, IGeoSvc* geoSvc=0 );
+  ILDSETKalDetector( const gear::GearMgr& gearMgr, IGeomSvc* geoSvc=0 );
   
   
 private:
   
   void setupGearGeom( const gear::GearMgr& gearMgr ) ;
-  void setupGearGeom( IGeoSvc* geoSvc );
+  void setupGearGeom( IGeomSvc* geoSvc );
   
   int _nLayers ;
   double _bZ ;
diff --git a/Utilities/KalDet/kaldet/ILDSITKalDetector.h b/Utilities/KalDet/kaldet/ILDSITKalDetector.h
index d9eb3059b680eb16823cef7de3b315659c056272..3f5a8636068503a4696ca6a5b32e3b5390bd3acb 100644
--- a/Utilities/KalDet/kaldet/ILDSITKalDetector.h
+++ b/Utilities/KalDet/kaldet/ILDSITKalDetector.h
@@ -16,20 +16,20 @@ namespace gear{
   class GearMgr ;
 }
 
-class IGeoSvc;
+class IGeomSvc;
 
 class ILDSITKalDetector : public TVKalDetector {
   
 public:
   
   /** Initialize the SIT from GEAR */
-  ILDSITKalDetector( const gear::GearMgr& gearMgr, IGeoSvc* geoSvc );
+  ILDSITKalDetector( const gear::GearMgr& gearMgr, IGeomSvc* geoSvc );
   
   
 private:
   
   void setupGearGeom( const gear::GearMgr& gearMgr ) ;
-  void setupGearGeom( IGeoSvc* geoSvc );
+  void setupGearGeom( IGeomSvc* geoSvc );
   
   int _nLayers ;
   double _bZ ;
diff --git a/Utilities/KalDet/kaldet/ILDSupportKalDetector.h b/Utilities/KalDet/kaldet/ILDSupportKalDetector.h
index b7e28fa929884ceadf7755395766d8f75c079c3f..373fe51bd5e57dd16e5ccc913ebfd2dcc0bc17dd 100644
--- a/Utilities/KalDet/kaldet/ILDSupportKalDetector.h
+++ b/Utilities/KalDet/kaldet/ILDSupportKalDetector.h
@@ -13,7 +13,7 @@ class TNode;
 namespace gear{
   class GearMgr ;
 }
-class IGeoSvc;
+class IGeomSvc;
 
 class ILDCylinderMeasLayer;
 
@@ -21,7 +21,7 @@ class ILDSupportKalDetector : public TVKalDetector {
 public:
   
   /** Initialize the support structures from GEAR */
-  ILDSupportKalDetector( const gear::GearMgr& gearMgr, IGeoSvc* geoSvc );
+  ILDSupportKalDetector( const gear::GearMgr& gearMgr, IGeomSvc* geoSvc );
   
   /** Returns the special layer inside the Beam Pipe used for propagation to the IP */
   ILDCylinderMeasLayer* getIPLayer() { return _ipLayer; }
diff --git a/Utilities/KalDet/kaldet/ILDTPCKalDetector.h b/Utilities/KalDet/kaldet/ILDTPCKalDetector.h
index a249f22ce1a7133dc88135ec233c785b54d777b7..480129910dc10693eadaf1997f4b8ffb576ef711 100644
--- a/Utilities/KalDet/kaldet/ILDTPCKalDetector.h
+++ b/Utilities/KalDet/kaldet/ILDTPCKalDetector.h
@@ -14,13 +14,13 @@ namespace gear{
   class GearMgr ;
 }
 
-class IGeoSvc;
+class IGeomSvc;
 
 class ILDTPCKalDetector : public TVKalDetector {
 public:
   
   /** Initialize the TPC from GEAR */
-  ILDTPCKalDetector( const gear::GearMgr& gearMgr, IGeoSvc* geoSvc=0 );
+  ILDTPCKalDetector( const gear::GearMgr& gearMgr, IGeomSvc* geoSvc=0 );
   
   
 private:
diff --git a/Utilities/KalDet/kaldet/ILDVXDKalDetector.h b/Utilities/KalDet/kaldet/ILDVXDKalDetector.h
index c0205e149f55b4ca2340cdfc7549b17fd020cdbc..4feebacd9311cdfd4d5577e6b6588ad120461212 100644
--- a/Utilities/KalDet/kaldet/ILDVXDKalDetector.h
+++ b/Utilities/KalDet/kaldet/ILDVXDKalDetector.h
@@ -11,7 +11,7 @@
 #include "TMath.h"
 
 class TNode;
-class IGeoSvc;
+class IGeomSvc;
 
 namespace gear{
   class GearMgr ;
@@ -22,12 +22,12 @@ class ILDVXDKalDetector : public TVKalDetector {
   
 public:
   
-  ILDVXDKalDetector( const gear::GearMgr& gearMgr, IGeoSvc* geoSvc);
+  ILDVXDKalDetector( const gear::GearMgr& gearMgr, IGeomSvc* geoSvc);
   
   
 private:
   
-  void setupGearGeom( const gear::GearMgr& gearMgr, IGeoSvc* geoSvc) ;
+  void setupGearGeom( const gear::GearMgr& gearMgr, IGeomSvc* geoSvc) ;
   
   int _nLayers ;
   double _bZ ;
diff --git a/Utilities/KalDet/kaldet/MaterialDataBase.h b/Utilities/KalDet/kaldet/MaterialDataBase.h
index d1ed28bf0af03621cfc6dc9a1d7935b6a3833131..398c025287dbad4274a8f407a241c64ae81da45a 100644
--- a/Utilities/KalDet/kaldet/MaterialDataBase.h
+++ b/Utilities/KalDet/kaldet/MaterialDataBase.h
@@ -18,7 +18,7 @@ class TMaterial;
 namespace gear{
   class GearMgr ;
 }
-class IGeoSvc;
+class IGeomSvc;
 // fg: define the MaterialDataBaseException as an lcio Exception to allow for 
 //     messages to be printed in what() 
 typedef lcio::Exception MaterialDataBaseException ;
@@ -46,12 +46,12 @@ public:
   /** Get Material via name */
   TMaterial* getMaterial(std::string mat_name) ;  
   
-  void registerForService(const gear::GearMgr& gearMgr, IGeoSvc* geoSvc=0) ;
+  void registerForService(const gear::GearMgr& gearMgr, IGeomSvc* geoSvc=0) ;
   
   
 private:
  
-  void initialise(const gear::GearMgr& gearMgr, IGeoSvc* geoSvc) ;
+  void initialise(const gear::GearMgr& gearMgr, IGeomSvc* geoSvc) ;
   
   MaterialDataBase() { _material_map.clear(); _isInitialised = false ; _gearMgr = 0; }                               // Private constructor
   
@@ -60,7 +60,7 @@ private:
   MaterialDataBase& operator=(const MaterialDataBase&) ;      // Prevent assignment
   
   void addMaterial(TMaterial* mat, std::string name); 
-  void createMaterials(const gear::GearMgr& gearMgr, IGeoSvc* geoSvc);
+  void createMaterials(const gear::GearMgr& gearMgr, IGeomSvc* geoSvc);
   
   // private member variables
   std::map<std::string,TMaterial* > _material_map;
diff --git a/Utilities/KalDet/src/ild/common/MaterialDataBase.h b/Utilities/KalDet/src/ild/common/MaterialDataBase.h
index d1ed28bf0af03621cfc6dc9a1d7935b6a3833131..398c025287dbad4274a8f407a241c64ae81da45a 100644
--- a/Utilities/KalDet/src/ild/common/MaterialDataBase.h
+++ b/Utilities/KalDet/src/ild/common/MaterialDataBase.h
@@ -18,7 +18,7 @@ class TMaterial;
 namespace gear{
   class GearMgr ;
 }
-class IGeoSvc;
+class IGeomSvc;
 // fg: define the MaterialDataBaseException as an lcio Exception to allow for 
 //     messages to be printed in what() 
 typedef lcio::Exception MaterialDataBaseException ;
@@ -46,12 +46,12 @@ public:
   /** Get Material via name */
   TMaterial* getMaterial(std::string mat_name) ;  
   
-  void registerForService(const gear::GearMgr& gearMgr, IGeoSvc* geoSvc=0) ;
+  void registerForService(const gear::GearMgr& gearMgr, IGeomSvc* geoSvc=0) ;
   
   
 private:
  
-  void initialise(const gear::GearMgr& gearMgr, IGeoSvc* geoSvc) ;
+  void initialise(const gear::GearMgr& gearMgr, IGeomSvc* geoSvc) ;
   
   MaterialDataBase() { _material_map.clear(); _isInitialised = false ; _gearMgr = 0; }                               // Private constructor
   
@@ -60,7 +60,7 @@ private:
   MaterialDataBase& operator=(const MaterialDataBase&) ;      // Prevent assignment
   
   void addMaterial(TMaterial* mat, std::string name); 
-  void createMaterials(const gear::GearMgr& gearMgr, IGeoSvc* geoSvc);
+  void createMaterials(const gear::GearMgr& gearMgr, IGeomSvc* geoSvc);
   
   // private member variables
   std::map<std::string,TMaterial* > _material_map;
diff --git a/Utilities/KalDet/src/ild/ftd/ILDFTDKalDetector.cc b/Utilities/KalDet/src/ild/ftd/ILDFTDKalDetector.cc
index 06246a68ebafbc6821afe8bef847ca3ecb3714a4..b87a9d0f8015cbd07434c15ecc5d12e44ca97900 100644
--- a/Utilities/KalDet/src/ild/ftd/ILDFTDKalDetector.cc
+++ b/Utilities/KalDet/src/ild/ftd/ILDFTDKalDetector.cc
@@ -5,7 +5,7 @@
 
 #include <sstream>
 
-#include "DetInterface/IGeoSvc.h"
+#include "DetInterface/IGeomSvc.h"
 #include "DD4hep/Detector.h"
 #include "DDRec/DetectorData.h"
 #include "DD4hep/DD4hepUnits.h"
@@ -27,7 +27,7 @@
 #include "CLHEP/Units/SystemOfUnits.h"
 #include "TVector3.h"
 
-ILDFTDKalDetector::ILDFTDKalDetector( const gear::GearMgr& gearMgr, IGeoSvc* geoSvc ) : 
+ILDFTDKalDetector::ILDFTDKalDetector( const gear::GearMgr& gearMgr, IGeomSvc* geoSvc ) : 
 TVKalDetector(300), _nDisks(0) // SJA:FIXME initial size, 300 looks reasonable for ILD, though this would be better stored as a const somewhere
 {
   // streamlog_out(DEBUG1) << "ILDFTDKalDetector building FTD detector using GEAR " << std::endl ;
@@ -510,7 +510,7 @@ void ILDFTDKalDetector::setupGearGeom( const gear::GearMgr& gearMgr ){
   
 }
 
-void ILDFTDKalDetector::setupGearGeom( IGeoSvc* geoSvc ){
+void ILDFTDKalDetector::setupGearGeom( IGeomSvc* geoSvc ){
   dd4hep::DetElement world = geoSvc->getDD4HepGeo();
   dd4hep::DetElement ftd;
   const std::map<std::string, dd4hep::DetElement>& subs = world.children();
diff --git a/Utilities/KalDet/src/ild/ftd/ILDFTDKalDetector.h b/Utilities/KalDet/src/ild/ftd/ILDFTDKalDetector.h
index deee9061226776bfd3986fb2cc6c21b65ab469e9..b3f66522d6328d6a463f6ea4b83e7dd257c799ee 100644
--- a/Utilities/KalDet/src/ild/ftd/ILDFTDKalDetector.h
+++ b/Utilities/KalDet/src/ild/ftd/ILDFTDKalDetector.h
@@ -11,7 +11,7 @@
 
 class TNode;
 class TVector3;
-class IGeoSvc;
+class IGeomSvc;
 
 namespace gear{
   class GearMgr ;
@@ -21,7 +21,7 @@ class ILDFTDKalDetector : public TVKalDetector {
 public:
   
   /** Initialize the FTD from GEAR */
-  ILDFTDKalDetector( const gear::GearMgr& gearMgr, IGeoSvc* geoSvc  );
+  ILDFTDKalDetector( const gear::GearMgr& gearMgr, IGeomSvc* geoSvc  );
   
   
 private:
@@ -80,7 +80,7 @@ private:
   
   
   void setupGearGeom( const gear::GearMgr& gearMgr ) ;
-  void setupGearGeom( IGeoSvc* geoSvc );
+  void setupGearGeom( IGeomSvc* geoSvc );
   
   int _nDisks ;
   double _bZ ;
diff --git a/Utilities/KalDet/src/ild/set/ILDSETKalDetector.cc b/Utilities/KalDet/src/ild/set/ILDSETKalDetector.cc
index e1c0dee10db76546fa16e6a76e2f54a60d7124f1..3da10d5c34815b8cfe9df023c6078bdbd99df3b4 100644
--- a/Utilities/KalDet/src/ild/set/ILDSETKalDetector.cc
+++ b/Utilities/KalDet/src/ild/set/ILDSETKalDetector.cc
@@ -9,7 +9,7 @@
 #include <UTIL/BitField64.h>
 #include <UTIL/ILDConf.h>
 
-#include "DetInterface/IGeoSvc.h"
+#include "DetInterface/IGeomSvc.h"
 #include "DD4hep/Detector.h"
 #include "DDRec/DetectorData.h"
 
@@ -28,7 +28,7 @@
 
 // #include "streamlog/streamlog.h"
 
-ILDSETKalDetector::ILDSETKalDetector( const gear::GearMgr& gearMgr, IGeoSvc* geoSvc )
+ILDSETKalDetector::ILDSETKalDetector( const gear::GearMgr& gearMgr, IGeomSvc* geoSvc )
 : TVKalDetector(300) // SJA:FIXME initial size, 300 looks reasonable for ILD, though this would be better stored as a const somewhere
 {
   
@@ -294,7 +294,7 @@ void ILDSETKalDetector::setupGearGeom( const gear::GearMgr& gearMgr ){
   }
 }
 
-void ILDSETKalDetector::setupGearGeom( IGeoSvc* geoSvc ){
+void ILDSETKalDetector::setupGearGeom( IGeomSvc* geoSvc ){
   dd4hep::DetElement world = geoSvc->getDD4HepGeo();
   dd4hep::DetElement set;
   const std::map<std::string, dd4hep::DetElement>& subs = world.children();
diff --git a/Utilities/KalDet/src/ild/sit/ILDSITKalDetector.cc b/Utilities/KalDet/src/ild/sit/ILDSITKalDetector.cc
index b63364d1cefa91103f4f4117eda6a252295a2fc9..5d10c55f505d6c9186baa4cb526a931e27dc733a 100644
--- a/Utilities/KalDet/src/ild/sit/ILDSITKalDetector.cc
+++ b/Utilities/KalDet/src/ild/sit/ILDSITKalDetector.cc
@@ -9,7 +9,7 @@
 #include <UTIL/BitField64.h>
 #include <UTIL/ILDConf.h>
 
-#include "DetInterface/IGeoSvc.h"
+#include "DetInterface/IGeomSvc.h"
 #include "DD4hep/Detector.h"
 #include "DDRec/DetectorData.h"
 #include "CLHEP/Units/SystemOfUnits.h"
@@ -28,7 +28,7 @@
 
 // #include "streamlog/streamlog.h"
 
-ILDSITKalDetector::ILDSITKalDetector( const gear::GearMgr& gearMgr, IGeoSvc* geoSvc )
+ILDSITKalDetector::ILDSITKalDetector( const gear::GearMgr& gearMgr, IGeomSvc* geoSvc )
 : TVKalDetector(300) // SJA:FIXME initial size, 300 looks reasonable for ILD, though this would be better stored as a const somewhere
 {
   // std::cout << "ILDSITKalDetector building SIT detector using GEAR " << std::endl ;
@@ -288,7 +288,7 @@ void ILDSITKalDetector::setupGearGeom( const gear::GearMgr& gearMgr ){
   
 }
 
-void ILDSITKalDetector::setupGearGeom( IGeoSvc* geoSvc ){
+void ILDSITKalDetector::setupGearGeom( IGeomSvc* geoSvc ){
 
   dd4hep::DetElement world = geoSvc->getDD4HepGeo();
   dd4hep::DetElement sit;
diff --git a/Utilities/KalDet/src/ild/sit/ILDSITKalDetector.h b/Utilities/KalDet/src/ild/sit/ILDSITKalDetector.h
index d9eb3059b680eb16823cef7de3b315659c056272..3f5a8636068503a4696ca6a5b32e3b5390bd3acb 100644
--- a/Utilities/KalDet/src/ild/sit/ILDSITKalDetector.h
+++ b/Utilities/KalDet/src/ild/sit/ILDSITKalDetector.h
@@ -16,20 +16,20 @@ namespace gear{
   class GearMgr ;
 }
 
-class IGeoSvc;
+class IGeomSvc;
 
 class ILDSITKalDetector : public TVKalDetector {
   
 public:
   
   /** Initialize the SIT from GEAR */
-  ILDSITKalDetector( const gear::GearMgr& gearMgr, IGeoSvc* geoSvc );
+  ILDSITKalDetector( const gear::GearMgr& gearMgr, IGeomSvc* geoSvc );
   
   
 private:
   
   void setupGearGeom( const gear::GearMgr& gearMgr ) ;
-  void setupGearGeom( IGeoSvc* geoSvc );
+  void setupGearGeom( IGeomSvc* geoSvc );
   
   int _nLayers ;
   double _bZ ;
diff --git a/Utilities/KalDet/src/ild/support/ILDSupportKalDetector.cc b/Utilities/KalDet/src/ild/support/ILDSupportKalDetector.cc
index c3bd0c5f05a70f8567893f914ca913c54e2b4c84..fe92415eb745cdfcbf883be2fd2c9ac3dc878bdb 100644
--- a/Utilities/KalDet/src/ild/support/ILDSupportKalDetector.cc
+++ b/Utilities/KalDet/src/ild/support/ILDSupportKalDetector.cc
@@ -26,9 +26,9 @@
 #include "gearimpl/Util.h"
 #include "gear/CalorimeterParameters.h"
 // #include "streamlog/streamlog.h"
-#include "DetInterface/IGeoSvc.h"
+#include "DetInterface/IGeomSvc.h"
 
-ILDSupportKalDetector::ILDSupportKalDetector( const gear::GearMgr& gearMgr, IGeoSvc* geoSvc ) : 
+ILDSupportKalDetector::ILDSupportKalDetector( const gear::GearMgr& gearMgr, IGeomSvc* geoSvc ) : 
 TVKalDetector(10) 
 {
   Double_t bz;
diff --git a/Utilities/KalDet/src/ild/support/ILDSupportKalDetector.h b/Utilities/KalDet/src/ild/support/ILDSupportKalDetector.h
index b7e28fa929884ceadf7755395766d8f75c079c3f..373fe51bd5e57dd16e5ccc913ebfd2dcc0bc17dd 100644
--- a/Utilities/KalDet/src/ild/support/ILDSupportKalDetector.h
+++ b/Utilities/KalDet/src/ild/support/ILDSupportKalDetector.h
@@ -13,7 +13,7 @@ class TNode;
 namespace gear{
   class GearMgr ;
 }
-class IGeoSvc;
+class IGeomSvc;
 
 class ILDCylinderMeasLayer;
 
@@ -21,7 +21,7 @@ class ILDSupportKalDetector : public TVKalDetector {
 public:
   
   /** Initialize the support structures from GEAR */
-  ILDSupportKalDetector( const gear::GearMgr& gearMgr, IGeoSvc* geoSvc );
+  ILDSupportKalDetector( const gear::GearMgr& gearMgr, IGeomSvc* geoSvc );
   
   /** Returns the special layer inside the Beam Pipe used for propagation to the IP */
   ILDCylinderMeasLayer* getIPLayer() { return _ipLayer; }
diff --git a/Utilities/KalDet/src/ild/tpc/ILDTPCKalDetector.cc b/Utilities/KalDet/src/ild/tpc/ILDTPCKalDetector.cc
index 3f36963f99385be87a7c5a20ed9b09c1650e1581..61af3eedbd6421b78c3d9189de7daea2d203160a 100644
--- a/Utilities/KalDet/src/ild/tpc/ILDTPCKalDetector.cc
+++ b/Utilities/KalDet/src/ild/tpc/ILDTPCKalDetector.cc
@@ -10,7 +10,7 @@
 
 #include <sstream>
 
-#include "DetInterface/IGeoSvc.h"
+#include "DetInterface/IGeomSvc.h"
 #include "DD4hep/Detector.h"
 #include "DDRec/DetectorData.h"
 #include "CLHEP/Units/SystemOfUnits.h"
@@ -28,7 +28,7 @@
 // #include "streamlog/streamlog.h"
 
 
-ILDTPCKalDetector::ILDTPCKalDetector( const gear::GearMgr& gearMgr, IGeoSvc* geoSvc ) : 
+ILDTPCKalDetector::ILDTPCKalDetector( const gear::GearMgr& gearMgr, IGeomSvc* geoSvc ) : 
 TVKalDetector(250) // SJA:FIXME initial size, 250 looks reasonable for ILD, though this would be better stored as a const somewhere
 {
   Double_t bz;
diff --git a/Utilities/KalDet/src/ild/tpc/ILDTPCKalDetector.h b/Utilities/KalDet/src/ild/tpc/ILDTPCKalDetector.h
index a249f22ce1a7133dc88135ec233c785b54d777b7..480129910dc10693eadaf1997f4b8ffb576ef711 100644
--- a/Utilities/KalDet/src/ild/tpc/ILDTPCKalDetector.h
+++ b/Utilities/KalDet/src/ild/tpc/ILDTPCKalDetector.h
@@ -14,13 +14,13 @@ namespace gear{
   class GearMgr ;
 }
 
-class IGeoSvc;
+class IGeomSvc;
 
 class ILDTPCKalDetector : public TVKalDetector {
 public:
   
   /** Initialize the TPC from GEAR */
-  ILDTPCKalDetector( const gear::GearMgr& gearMgr, IGeoSvc* geoSvc=0 );
+  ILDTPCKalDetector( const gear::GearMgr& gearMgr, IGeomSvc* geoSvc=0 );
   
   
 private:
diff --git a/Utilities/KalDet/src/ild/vxd/ILDVXDKalDetector.cc b/Utilities/KalDet/src/ild/vxd/ILDVXDKalDetector.cc
index cebb37ef4968d3ddbca5869b61c5001053a671db..5cacd3d76205a515295102ec6c6f865bd24776a4 100644
--- a/Utilities/KalDet/src/ild/vxd/ILDVXDKalDetector.cc
+++ b/Utilities/KalDet/src/ild/vxd/ILDVXDKalDetector.cc
@@ -10,7 +10,7 @@
 #include <UTIL/BitField64.h>
 #include <UTIL/ILDConf.h>
 
-#include "DetInterface/IGeoSvc.h"
+#include "DetInterface/IGeomSvc.h"
 #include "DD4hep/Detector.h"
 #include "DDRec/DetectorData.h"
 #include "CLHEP/Units/SystemOfUnits.h"
@@ -22,7 +22,7 @@
 #include <gear/VXDParameters.h>
 #include <gear/VXDLayerLayout.h>
 #include "gearimpl/Util.h"
-#include "DetInterface/IGeoSvc.h"
+#include "DetInterface/IGeomSvc.h"
 
 #include "TMath.h"
 
@@ -31,7 +31,7 @@
 
 // #include "streamlog/streamlog.h"
 
-ILDVXDKalDetector::ILDVXDKalDetector( const gear::GearMgr& gearMgr, IGeoSvc* geoSvc )
+ILDVXDKalDetector::ILDVXDKalDetector( const gear::GearMgr& gearMgr, IGeomSvc* geoSvc )
 : TVKalDetector(300) // SJA:FIXME initial size, 300 looks reasonable for ILD, though this would be better stored as a const somewhere
 {
   
@@ -381,7 +381,7 @@ void ILDVXDKalDetector::setupGearGeom( const gear::GearMgr& gearMgr ){
 }
 
 
-void ILDVXDKalDetector::setupGearGeom( IGeoSvc* geoSvc){
+void ILDVXDKalDetector::setupGearGeom( IGeomSvc* geoSvc){
   /*
   dd4hep::DetElement world = geoSvc->getDD4HepGeo();
   dd4hep::DetElement vxd;
diff --git a/Utilities/KalDet/src/ild/vxd/ILDVXDKalDetector.h b/Utilities/KalDet/src/ild/vxd/ILDVXDKalDetector.h
index 05840c8c85477a4083404a22dfcadb652d7a0e60..d1bbaaa24c4fad2e3dd955cf2640e63ff341345d 100644
--- a/Utilities/KalDet/src/ild/vxd/ILDVXDKalDetector.h
+++ b/Utilities/KalDet/src/ild/vxd/ILDVXDKalDetector.h
@@ -11,7 +11,7 @@
 #include "TMath.h"
 
 class TNode;
-class IGeoSvc;
+class IGeomSvc;
 
 namespace gear{
   class GearMgr ;
@@ -22,13 +22,13 @@ class ILDVXDKalDetector : public TVKalDetector {
   
 public:
   
-  ILDVXDKalDetector( const gear::GearMgr& gearMgr, IGeoSvc* geoSvc);
+  ILDVXDKalDetector( const gear::GearMgr& gearMgr, IGeomSvc* geoSvc);
   
   
 private:
   
   void setupGearGeom( const gear::GearMgr& gearMgr );
-  void setupGearGeom( IGeoSvc* geoSvc) ;
+  void setupGearGeom( IGeomSvc* geoSvc) ;
   
   int _nLayers ;
   double _bZ ;
diff --git a/Utilities/KiTrack/src/Tools/Fitter.cc b/Utilities/KiTrack/src/Tools/Fitter.cc
index 512c4a22618540f5c56d25bf00571ba7b1d21a72..89576340e46d2d59ed6c6967469fe1e06bd4c666 100644
--- a/Utilities/KiTrack/src/Tools/Fitter.cc
+++ b/Utilities/KiTrack/src/Tools/Fitter.cc
@@ -16,7 +16,7 @@
 typedef std::vector<edm4hep::ConstTrackerHit> TrackerHitVec;
 using namespace MarlinTrk;
 
-// by fucd: 3.5->3.0 default, will be read from GeoSvc
+// by fucd: 3.5->3.0 default, will be read from GeomSvc
 // if compare to Marlin, should change to 3.5
 float Fitter::_bField = 3.5;//later on overwritten with the value read by geo file
 
diff --git a/docs/simulation-tutorial/index.html b/docs/simulation-tutorial/index.html
index 6a59e836c53728605595a379e217b7fb7ffc8462..ca9e44c8264309c91690786f4dace230f8b2be6d 100644
--- a/docs/simulation-tutorial/index.html
+++ b/docs/simulation-tutorial/index.html
@@ -178,8 +178,8 @@ geometry_option = &#34;CepC_v4-onlyVXD.xml&#34;
 geometry_path = os.path.join(os.getenv(&#34;DETCEPCV4ROOT&#34;), 
                              &#34;compact&#34;, geometry_option)
 
-from Configurables import GeoSvc
-geosvc = GeoSvc(&#34;GeoSvc&#34;)
+from Configurables import GeomSvc
+geosvc = GeomSvc(&#34;GeomSvc&#34;)
 geosvc.compact = geometry_path
 ```
 * The compact file is in XML format, which describes the detector.