diff --git a/Detector/DetCRD/compact/CRD_common_v01/DC_Simple_v01_01.xml b/Detector/DetCRD/compact/CRD_common_v01/DC_Simple_v01_01.xml
index d833c27fb77fa52e39d1dc670475171946ec9919..59898fe5decabe2aee36fc74294d5dfe3a6b63eb 100644
--- a/Detector/DetCRD/compact/CRD_common_v01/DC_Simple_v01_01.xml
+++ b/Detector/DetCRD/compact/CRD_common_v01/DC_Simple_v01_01.xml
@@ -44,6 +44,9 @@
     <constant name="DC_Endcap_rmax" value="SDT_radius_max"/>
     <constant name="DC_Endcap_dz" value="DC_Endcap_z"/>
 
+    <constant name="DC_inner_chamber_enabled" value="1"/>
+    <constant name="DC_outer_chamber_enabled" value="1"/>
+
   </define>
 
   <detectors>
diff --git a/Detector/DetCRD/compact/CRD_o1_v01/CRD_Dimensions_v01_01.xml b/Detector/DetCRD/compact/CRD_o1_v01/CRD_Dimensions_v01_01.xml
index 39f0606567dac772e43d09efdd335670f0f2482f..36230440063ab1e4785d4f3340c0cbee6bf02321 100644
--- a/Detector/DetCRD/compact/CRD_o1_v01/CRD_Dimensions_v01_01.xml
+++ b/Detector/DetCRD/compact/CRD_o1_v01/CRD_Dimensions_v01_01.xml
@@ -84,10 +84,10 @@
     <constant name="DC_Endcap_z" value="0.1*mm"/>
     <constant name="DC_half_length"  value="2225*mm" />
     <constant name="MainTracker_half_length"  value="DC_half_length+DC_Endcap_z" />
-    <constant name="InnerTracker_half_length"  value="MainTracker_half_length" />
+    <constant name="InnerTracker_half_length"  value="DC_half_length" />
     <constant name="InnerTracker_inner_radius" value="234*mm"/>
     <constant name="InnerTracker_outer_radius" value="906*mm"/>
-    <constant name="OuterTracker_half_length"  value="MainTracker_half_length"/>
+    <constant name="OuterTracker_half_length"  value="DC_half_length"/>
     <constant name="OuterTracker_inner_radius" value="1085*mm"/>
     <constant name="OuterTracker_outer_radius" value="1720*mm"/>
     
diff --git a/Detector/DetDriftChamber/compact/det.xml b/Detector/DetDriftChamber/compact/det.xml
index 96e8639bedd406be881a3dc3d623ad318acacff7..3a33224601c201847e452dff7c36538fcef1c269 100644
--- a/Detector/DetDriftChamber/compact/det.xml
+++ b/Detector/DetDriftChamber/compact/det.xml
@@ -60,6 +60,9 @@
     <constant name="DC_Endcap_rmin" value="SDT_radius_min"/>
     <constant name="DC_Endcap_rmax" value="SDT_radius_max"/>
 
+    <constant name="DC_inner_chamber_enabled" value="1"/>
+    <constant name="DC_outer_chamber_enabled" value="1"/>
+
   </define>
 
   <display>
diff --git a/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp b/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp
index 48a311d5fe750d53c7dfcb2644898325194b50ef..6894e6a4eb591895dc97dcc3108edc1456ae6122 100644
--- a/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp
+++ b/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp
@@ -62,9 +62,9 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector,
 
     double epsilon = theDetector.constant<double>("Epsilon");
 
-    // - Only keep one chamber
-//    bool Close_inner_chamber = 1;
-//    bool Close_outer_chamber = 1;
+    // - Control the number of drift chambersr
+    int inner_chamber_enabled = theDetector.constant<int>("DC_inner_chamber_enabled");
+    int outer_chamber_enabled = theDetector.constant<int>("DC_outer_chamber_enabled");
 
     // =======================================================================
     // Detector Construction
@@ -147,7 +147,7 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector,
     double Endcap_rmin = theDetector.constant<double>("DC_Endcap_rmin");
     double Endcap_rmax = theDetector.constant<double>("DC_Endcap_rmax");
     double Endcap_z = theDetector.constant<double>("DC_Endcap_dz");
-    dd4hep::Tube det_Endcap_solid(Endcap_rmin,Endcap_rmax,Endcap_z);
+    dd4hep::Tube det_Endcap_solid(Endcap_rmin,Endcap_rmax,0.5*Endcap_z);
     dd4hep::Volume det_Endcap_vol(det_name+"Endcap",det_Endcap_solid,det_mat);
     det_Endcap_vol.setVisAttributes(theDetector,"YellowVis");
 
@@ -160,22 +160,21 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector,
 
     // - layer
     for(int layer_id = 0; layer_id < (inner_chamber_layer_number+outer_chamber_layer_number); layer_id++) {
-        double rmin,rmax,offset;
+        double rmin,rmax,offset=0;
         std::string layer_name;
         dd4hep::Volume* current_vol_ptr = nullptr;
         dd4hep::Material layer_mat(theDetector.material("GasHe_90Isob_10"));
-        if( layer_id < inner_chamber_layer_number ) {
+        if(inner_chamber_enabled && (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 {
+        } else if(outer_chamber_enabled && (layer_id > (inner_chamber_layer_number-1))) {
            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");
-        }
+        } else continue;
 
         //Construction of drift chamber layers
         double rmid = delta_a_func(rmin,rmax);
@@ -214,7 +213,7 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector,
             double radius[9] = {rmid-chamber_layer_width*0.5,rmid-chamber_layer_width*0.5,rmid-chamber_layer_width*0.5,rmid-chamber_layer_width*0.5,rmid,rmid+chamber_layer_width*0.5,rmid+chamber_layer_width*0.5,rmid+chamber_layer_width*0.5,rmid+chamber_layer_width*0.5};
             double phi[9] = {wire_phi+layer_Phi*0.25,wire_phi,wire_phi-layer_Phi*0.25,wire_phi-layer_Phi*0.5,wire_phi-layer_Phi*0.5,wire_phi-layer_Phi*0.5,wire_phi-layer_Phi*0.25,wire_phi,wire_phi+layer_Phi*0.25};
             int num = 5;
-            if(layer_id==66||layer_id==129) { num = 9; }
+            if(layer_id==(inner_chamber_layer_number-1)||layer_id==(outer_chamber_layer_number-1)) { num = 9; }
             for(int i=0; i<num ; i++) {
                 dd4hep::Position tr3D = Position(radius[i]*std::cos(phi[i]),radius[i]*std::sin(phi[i]),0.);
                 dd4hep::Transform3D transform_Module(dd4hep::Rotation3D(),tr3D);
@@ -234,23 +233,23 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector,
 
     // - place in det
     // inner
-     dd4hep::Transform3D transform_inner_chamber(dd4hep::Rotation3D(),
+    dd4hep::Transform3D transform_inner_chamber(dd4hep::Rotation3D(),
             dd4hep::Position(0,0,0));
-//    if(Close_inner_chamber) {
-     dd4hep::PlacedVolume det_inner_chamber_phy = det_vol.placeVolume(det_inner_chamber_vol,
-            transform_inner_chamber);
+    if(inner_chamber_enabled) {
+         dd4hep::PlacedVolume det_inner_chamber_phy = det_vol.placeVolume(det_inner_chamber_vol,
+                 transform_inner_chamber);
 
-     det_inner_chamber_phy.addPhysVolID("chamber", 0);
-//    }
+         det_inner_chamber_phy.addPhysVolID("chamber", 0);
+    }
     // outer
     dd4hep::Transform3D transform_outer_chamber(dd4hep::Rotation3D(),
             dd4hep::Position(0,0,0));
-//   if(Close_outer_chamber) {
-    dd4hep::PlacedVolume det_outer_chamber_phy = det_vol.placeVolume(det_outer_chamber_vol,
-            transform_inner_chamber);
+    if(outer_chamber_enabled) {
+       dd4hep::PlacedVolume det_outer_chamber_phy = det_vol.placeVolume(det_outer_chamber_vol,
+               transform_inner_chamber);
 
-    det_outer_chamber_phy.addPhysVolID("chamber", 1);
-//   }
+       det_outer_chamber_phy.addPhysVolID("chamber", 1);
+    }
     // - place in world
     dd4hep::Transform3D transform(dd4hep::Rotation3D(),
             dd4hep::Position(0,0,0));