diff --git a/Detector/DetCEPCv4/src/tracker/FTD_Simple_Staggered_geo.cpp b/Detector/DetCEPCv4/src/tracker/FTD_Simple_Staggered_geo.cpp
index b1cf2fe64a62fa4a6e518bb325b785d3b0000c38..186668dfb83cf9de9ad44ec24501c01a6edcdbec 100644
--- a/Detector/DetCEPCv4/src/tracker/FTD_Simple_Staggered_geo.cpp
+++ b/Detector/DetCEPCv4/src/tracker/FTD_Simple_Staggered_geo.cpp
@@ -1022,7 +1022,11 @@ static Ref_t create_element(Detector& theDetector, xml_h e, SensitiveDetector se
     petalSupport(theDetector, ftd, valuesDict, FTDPetalAirLogical ) ; 
 
     VolVec volV = petalSensor( theDetector, ftd, sens, valuesDict, FTDPetalAirLogical );
-
+    if (x_det.hasAttr(_U(limits))) {
+      for (auto vol : volV) {
+        vol.first.setLimitSet(theDetector, x_det.limitsStr());
+      }
+    }
 
     //---- meassurement surface vectors 
 
diff --git a/Detector/DetCEPCv4/src/tracker/FTD_cepc_geo.cpp b/Detector/DetCEPCv4/src/tracker/FTD_cepc_geo.cpp
index cdc5294c64a24ea53bc61b7a288192e0668bb72b..18e822a755a94d9c4f4515c4a6e0490bbdad8ec9 100644
--- a/Detector/DetCEPCv4/src/tracker/FTD_cepc_geo.cpp
+++ b/Detector/DetCEPCv4/src/tracker/FTD_cepc_geo.cpp
@@ -1024,7 +1024,11 @@ static Ref_t create_element(Detector& theDetector, xml_h e, SensitiveDetector se
     petalSupport(theDetector, ftd, valuesDict, FTDPetalAirLogical ) ; 
 
     VolVec volV = petalSensor( theDetector, ftd, sens, valuesDict, FTDPetalAirLogical );
-
+    if (x_det.hasAttr(_U(limits))) {
+      for (auto vol : volV) {
+	vol.first.setLimitSet(theDetector, x_det.limitsStr());
+      }
+    }
 
     //---- meassurement surface vectors 
 
diff --git a/Detector/DetCEPCv4/src/tracker/SET_Simple_Planar_geo.cpp b/Detector/DetCEPCv4/src/tracker/SET_Simple_Planar_geo.cpp
index 154f6653f466936753d378aa49c6be2ff06f1440..151a54f7c988b4e87bac4b0f5091966187613dbd 100644
--- a/Detector/DetCEPCv4/src/tracker/SET_Simple_Planar_geo.cpp
+++ b/Detector/DetCEPCv4/src/tracker/SET_Simple_Planar_geo.cpp
@@ -301,7 +301,7 @@ static dd4hep::Ref_t create_element(dd4hep::Detector& theDetector, xml_h e, dd4h
     dd4hep::Volume setSenLogical( dd4hep:: _toString( layer_id,"SET_SenLogical_%02d"), setSenSolid,sensitiveMat ) ; 
     
     setSenLogical.setSensitiveDetector(sens);
-    
+    if (x_det.hasAttr(_U(limits))) setSenLogical.setLimitSet(theDetector, x_det.limitsStr());
     
     
     //====== create the meassurement surface ===================
diff --git a/Detector/DetCEPCv4/src/tracker/SIT_Simple_Pixel_geo.cpp b/Detector/DetCEPCv4/src/tracker/SIT_Simple_Pixel_geo.cpp
index 347b391b371deb19eb966c1e3ad899c04c29c259..7199f4c4b781e6ca9e5db0ffc7a22fb40c0ff150 100644
--- a/Detector/DetCEPCv4/src/tracker/SIT_Simple_Pixel_geo.cpp
+++ b/Detector/DetCEPCv4/src/tracker/SIT_Simple_Pixel_geo.cpp
@@ -315,7 +315,7 @@ static dd4hep::Ref_t create_element(dd4hep::Detector& theDetector, xml_h e, dd4h
     dd4hep::Volume sitSenLogical( name + dd4hep::_toString( layer_id,"_SenLogical_%02d"), sitSenSolid,sensitiveMat ) ; 
     
     sitSenLogical.setSensitiveDetector(sens);
-
+    if (x_det.hasAttr(_U(limits))) sitSenLogical.setLimitSet(theDetector, x_det.limitsStr());
 
     //====== create the meassurement surface ===================
     dd4hep::rec::Vector3D u,v,n ;
diff --git a/Detector/DetCEPCv4/src/tracker/SIT_Simple_Planar_geo.cpp b/Detector/DetCEPCv4/src/tracker/SIT_Simple_Planar_geo.cpp
index 9404518532fef09c4493bef6df027f36808d509f..f2861eaf61b51617c8750106fea2ff30d4249412 100644
--- a/Detector/DetCEPCv4/src/tracker/SIT_Simple_Planar_geo.cpp
+++ b/Detector/DetCEPCv4/src/tracker/SIT_Simple_Planar_geo.cpp
@@ -311,7 +311,7 @@ static dd4hep::Ref_t create_element(dd4hep::Detector& theDetector, xml_h e, dd4h
     dd4hep::Volume sitSenLogical( dd4hep::_toString( layer_id,"SIT_SenLogical_%02d"), sitSenSolid,sensitiveMat ) ; 
     
     sitSenLogical.setSensitiveDetector(sens);
-
+    if (x_det.hasAttr(_U(limits))) sitSenLogical.setLimitSet(theDetector, x_det.limitsStr());
 
     //====== create the meassurement surface ===================
     dd4hep::rec::Vector3D u,v,n ;
diff --git a/Detector/DetCEPCv4/src/tracker/TPC10_geo.cpp b/Detector/DetCEPCv4/src/tracker/TPC10_geo.cpp
index 4e5ee8a9d55a3d21637cda01404d5a8e7839ca1f..4d7c6b03400a229e96bb289014e41ce4231add3a 100644
--- a/Detector/DetCEPCv4/src/tracker/TPC10_geo.cpp
+++ b/Detector/DetCEPCv4/src/tracker/TPC10_geo.cpp
@@ -482,7 +482,10 @@ Material endplate_MaterialMix = theDetector.material( "TPC_endplate_mix" ) ;
 
     lowerlayerLog.setSensitiveDetector(sens);
     upperlayerLog.setSensitiveDetector(sens);
-
+    if (x_det.hasAttr(_U(limits))) {
+      lowerlayerLog.setLimitSet(theDetector, x_det.limitsStr());
+      upperlayerLog.setLimitSet(theDetector, x_det.limitsStr());
+    }
 #else
     // create just one volume per pad ring
     
@@ -512,7 +515,9 @@ Material endplate_MaterialMix = theDetector.material( "TPC_endplate_mix" ) ;
     layerDEbwd.setPlacement( pv ) ;
 
     layerLog.setSensitiveDetector(sens);
-
+    if (x_det.hasAttr(_U(limits))) {
+      layerLog.setLimitSet(theDetector, x_det.limitsStr());
+    }
 #endif
   }
 
diff --git a/Detector/DetCEPCv4/src/tracker/VXD04_geo.cpp b/Detector/DetCEPCv4/src/tracker/VXD04_geo.cpp
index 929822dd30f113ecc4da86d3627dd6a9062007c2..1b9c30b73c5e93c115965f909822301fb7c1bd14 100644
--- a/Detector/DetCEPCv4/src/tracker/VXD04_geo.cpp
+++ b/Detector/DetCEPCv4/src/tracker/VXD04_geo.cpp
@@ -1077,7 +1077,7 @@ static Ref_t create_element(Detector& theDetector, xml_h e, SensitiveDetector se
     vxd.setVisAttributes(theDetector,  "BlueVis" , SiActiveLayerLogical ) ;
 
     SiActiveLayerLogical.setSensitiveDetector(sens);
-   
+    if (x_det.hasAttr(_U(limits))) SiActiveLayerLogical.setLimitSet(theDetector, x_det.limitsStr());
 
     //====== create the meassurement surface ===================
     Vector3D u( 1. , 0. , 0. ) ;
diff --git a/Detector/DetCRD/src/Tracker/SiTrackerSkewRing_v01_geo.cpp b/Detector/DetCRD/src/Tracker/SiTrackerSkewRing_v01_geo.cpp
index 2cbd8bce91190b9138dada2e5b69787d26532f4d..a88fa75629b8436f60957c86eff88271b33af792 100644
--- a/Detector/DetCRD/src/Tracker/SiTrackerSkewRing_v01_geo.cpp
+++ b/Detector/DetCRD/src/Tracker/SiTrackerSkewRing_v01_geo.cpp
@@ -149,6 +149,7 @@ static dd4hep::Ref_t create_detector(Detector& description, xml_h e, SensitiveDe
         tracker.check(sensor_id > 2," fromCompact: "+c_name+" Max of 2 modules allowed!");
         pv.addPhysVolID("sensor", sensor_id);
         c_vol.setSensitiveDetector(sens);
+	if (x_det.hasAttr(_U(limits))) c_vol.setLimitSet(description, x_det.limitsStr());
 	sensitives.push_back(pv);
 
 	dd4hep::rec::Vector3D u(-1., 0.,  0.);
diff --git a/Detector/DetCRD/src/Tracker/SiTrackerStaggeredLadder_v01_geo.cpp b/Detector/DetCRD/src/Tracker/SiTrackerStaggeredLadder_v01_geo.cpp
index b47bfc936ef3d8d678ebbd0cefd6d33c0b4a6625..b8245d662900063e89a77d07ba8a318b91b57131 100644
--- a/Detector/DetCRD/src/Tracker/SiTrackerStaggeredLadder_v01_geo.cpp
+++ b/Detector/DetCRD/src/Tracker/SiTrackerStaggeredLadder_v01_geo.cpp
@@ -266,7 +266,7 @@ static dd4hep::Ref_t create_element(dd4hep::Detector& theDetector, xml_h e, dd4h
   Box SensorSolid(sensor_thickness / 2.0, sensor_active_width / 2.0, sensor_active_len / 2.0);
   Volume SensorLogical(name + dd4hep::_toString( layer_id, "_SensorLogical_%02d"), SensorSolid, sensor_mat);
   SensorLogical.setSensitiveDetector(sens);
-  //vxd.setVisAttributes(theDetector, deadsensVis, SensorDeadLogical);
+  if (x_det.hasAttr(_U(limits))) SensorLogical.setLimitSet(theDetector, x_det.limitsStr());
   SensorLogical.setVisAttributes(theDetector.visAttributes(sensVis));
 
   //create dead sensor logical volume
diff --git a/Detector/DetCRD/src/Tracker/TPC_ModularEndcap_o1_v01.cpp b/Detector/DetCRD/src/Tracker/TPC_ModularEndcap_o1_v01.cpp
index d6fc42830050f69dbc853e8f6096a504b1638ec0..edd4bddb0c45f1d25276f72edce8c6749d439766 100644
--- a/Detector/DetCRD/src/Tracker/TPC_ModularEndcap_o1_v01.cpp
+++ b/Detector/DetCRD/src/Tracker/TPC_ModularEndcap_o1_v01.cpp
@@ -307,6 +307,10 @@ static Ref_t create_element(Detector& theDetector, xml_h e, SensitiveDetector se
 
                 lowerlayerLog.setSensitiveDetector(sens);
                 upperlayerLog.setSensitiveDetector(sens);
+		if (x_det.hasAttr(_U(limits))) {
+		  lowerlayerLog.setLimitSet(theDetector, x_det.limitsStr());
+		  upperlayerLog.setLimitSet(theDetector, x_det.limitsStr());
+		}
             }
 
         }
diff --git a/Detector/DetCRD/src/Tracker/TPC_Simple_o1_v01.cpp b/Detector/DetCRD/src/Tracker/TPC_Simple_o1_v01.cpp
index 4a9b7619aca62aab7caa9a13772b7f881cf14f95..a137e03dd9ed6327ca1d19562edf24c7578c7c90 100644
--- a/Detector/DetCRD/src/Tracker/TPC_Simple_o1_v01.cpp
+++ b/Detector/DetCRD/src/Tracker/TPC_Simple_o1_v01.cpp
@@ -308,6 +308,10 @@ static Ref_t create_element(Detector& theDetector, xml_h e, SensitiveDetector se
 
                 lowerlayerLog.setSensitiveDetector(sens);
                 upperlayerLog.setSensitiveDetector(sens);
+		if (x_det.hasAttr(_U(limits))) {
+		  lowerlayerLog.setLimitSet(theDetector, x_det.limitsStr());
+		  upperlayerLog.setLimitSet(theDetector, x_det.limitsStr());
+		}
             }
 
         }