diff --git a/DDG4/legacy/Geant4CalorimeterSD.cpp b/DDG4/legacy/Geant4CalorimeterSD.cpp
index 31185c4d00514d658229731292f05e8497f1f65a..ca9ca277fa880a4404194020141867c1238a83dc 100644
--- a/DDG4/legacy/Geant4CalorimeterSD.cpp
+++ b/DDG4/legacy/Geant4CalorimeterSD.cpp
@@ -97,6 +97,7 @@ namespace DD4hep {  namespace Simulation {
           Geant4CalorimeterHit* hit=find(collection(Cerenkov_type),HitPositionCompare<Geant4CalorimeterHit>(pos));
           if ( !hit ) {
             collection(Cerenkov_type)->insert(hit=new Geant4CalorimeterHit(pos));
+            hit->cellID  = getCellID( step ) ;
           }
           hit->energyDeposit += contrib.deposit;
           hit->truth.push_back(contrib);
diff --git a/DDG4/legacy/Geant4TrackerCombineSD.cpp b/DDG4/legacy/Geant4TrackerCombineSD.cpp
index 1a9221a7153bb0cbebbac7cb53cfbbb4052e2c0a..958e7270f7fdf9d17a060da96c0807c791f075fc 100644
--- a/DDG4/legacy/Geant4TrackerCombineSD.cpp
+++ b/DDG4/legacy/Geant4TrackerCombineSD.cpp
@@ -30,13 +30,15 @@ namespace DD4hep {  namespace Simulation {
       G4Track*          track;
       double            e_cut;
       int               current;
-      TrackerCombine() : pre(), post(), track(0), e_cut(0.0), current(-1)  {
+      long long int     cellID;
+      TrackerCombine() : pre(), post(), track(0), e_cut(0.0), current(-1), cellID(0)  {
       }
-      void start(G4Step* step, G4StepPoint* point)   {
+      void start(long long int cell, G4Step* step, G4StepPoint* point)   {
         pre.storePoint(step,point);
         current = pre.truth.trackID;
-        track = step->GetTrack();
-        post = pre;
+        track   = step->GetTrack();
+        cellID  = cell;
+        post    = pre;
       }
       void update(G4Step* step) {
         post.storePoint(step,step->GetPostStepPoint());
@@ -62,9 +64,10 @@ namespace DD4hep {  namespace Simulation {
                                                      pre.truth.pdgID,
                                                      pre.truth.deposit,
                                                      pre.truth.time);
+        hit->cellID   = cellID;
         hit->position = pos;
         hit->momentum = mom;
-        hit->length = path_len;
+        hit->length   = path_len;
         clear();
         c->insert(hit);
         return hit;
@@ -90,7 +93,7 @@ namespace DD4hep {  namespace Simulation {
 
       if ( !userData.track || userData.current != h.track->GetTrackID() ) {
         return_code = userData.extractHit(collection(0)) != 0;
-        userData.start(step, h.pre);
+        userData.start(getCellID(step), step, h.pre);
       }
 
       // ....update .....
@@ -103,7 +106,7 @@ namespace DD4hep {  namespace Simulation {
         if ( 0 != postSD )   {
           void* preSD = h.sd(h.pre);
           if ( preSD == postSD ) {
-            userData.start(step,h.post);
+            userData.start(getCellID(step), step,h.post);
           }
         }
       }
diff --git a/DDG4/legacy/Geant4TrackerSD.cpp b/DDG4/legacy/Geant4TrackerSD.cpp
index 231cecc059a699a1e0fabe6886b6023714342838..12a9c29f8e0da11fff71037a8d9ed43f75916fb0 100644
--- a/DDG4/legacy/Geant4TrackerSD.cpp
+++ b/DDG4/legacy/Geant4TrackerSD.cpp
@@ -54,7 +54,7 @@ namespace DD4hep {  namespace Simulation {
 
       if ( hit )  {
         HitContribution contrib = Geant4Hit::extractContribution(step);
-        hit->cellID  = getVolumeID( step ) ;
+        hit->cellID  = getCellID( step ) ;
         hit->energyDeposit =  contrib.deposit ;
         hit->position = position;
         hit->momentum = direction;