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..ff4a8745c8745fd16ad8121b6495ee3e40be8954 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,8 @@
     <constant name="DC_Endcap_rmax" value="SDT_radius_max"/>
     <constant name="DC_Endcap_dz" value="DC_Endcap_z"/>
 
+    <constant name="DC_num_chamber" value="0"/>
+
   </define>
 
   <detectors>
diff --git a/Detector/DetDriftChamber/compact/det.xml b/Detector/DetDriftChamber/compact/det.xml
index 96e8639bedd406be881a3dc3d623ad318acacff7..f8cffe5c8cd5e74a3f28a0784f787f116415b053 100644
--- a/Detector/DetDriftChamber/compact/det.xml
+++ b/Detector/DetDriftChamber/compact/det.xml
@@ -60,6 +60,12 @@
     <constant name="DC_Endcap_rmin" value="SDT_radius_min"/>
     <constant name="DC_Endcap_rmax" value="SDT_radius_max"/>
 
+    <!-- Control the number of drift chambers :
+         0:inner chamber + outer chamber;
+         1:only inner chamber;
+         2:only outer chamber; -->
+    <constant name="DC_num_chamber" value="0"/>
+
   </define>
 
   <display>
diff --git a/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp b/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp
index 48a311d5fe750d53c7dfcb2644898325194b50ef..9961aa08c7c48827b3df8a6aac26e38c9843e5c8 100644
--- a/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp
+++ b/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp
@@ -62,9 +62,8 @@ 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 num_chamber = theDetector.constant<int>("DC_num_chamber");
 
     // =======================================================================
     // Detector Construction
@@ -159,20 +158,29 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector,
     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); layer_id++) {
+    double num_layer;
+    if(num_chamber == 0) num_layer = inner_chamber_layer_number+outer_chamber_layer_number;
+    else if(num_chamber == 1) num_layer = inner_chamber_layer_number;
+    else num_layer = outer_chamber_layer_number;
+
+    for(int layer_id = 0; layer_id < num_layer; layer_id++) {
         double rmin,rmax,offset;
         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( layer_id < inner_chamber_layer_number ) {
+        if((num_chamber == 0 && layer_id < inner_chamber_layer_number)|| num_chamber ==1 ) {
            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 {
+        if((num_chamber == 0 && layer_id >=inner_chamber_layer_number)|| num_chamber == 2 ) {
            current_vol_ptr = &det_outer_chamber_vol;
-           rmin = outer_chamber_radius_min+((layer_id-inner_chamber_layer_number)*chamber_layer_width);
+           if(num_chamber == 0 && layer_id >= inner_chamber_layer_number) {
+               rmin = outer_chamber_radius_min+((layer_id-inner_chamber_layer_number)*chamber_layer_width);
+           }
+           else if(num_chamber == 2) rmin = outer_chamber_radius_min+(layer_id*chamber_layer_width);
            rmax = rmin+chamber_layer_width;
            layer_name = det_name+"_outer_chamber_vol"+_toString(layer_id,"_layer%d");
         }
@@ -236,21 +244,21 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector,
     // inner
      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(num_chamber == 0 || num_chamber ==1) {
+         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(num_chamber == 0 || num_chamber == 2) {
+       dd4hep::PlacedVolume det_outer_chamber_phy = det_vol.placeVolume(det_outer_chamber_vol,
+               transform_inner_chamber);
 
     det_outer_chamber_phy.addPhysVolID("chamber", 1);
-//   }
+   }
     // - place in world
     dd4hep::Transform3D transform(dd4hep::Rotation3D(),
             dd4hep::Position(0,0,0));