diff --git a/Detector/DetDriftChamber/compact/det.xml b/Detector/DetDriftChamber/compact/det.xml
index 12b998b8ec54422c0602ca30dc514c8ff323d43b..71e47716ae126dc8bb2db529abc6d8fc252b8bd0 100644
--- a/Detector/DetDriftChamber/compact/det.xml
+++ b/Detector/DetDriftChamber/compact/det.xml
@@ -46,7 +46,7 @@
     <vis name="Invisible" showDaughters="false" visible="false"/>
     <vis name="InvisibleWithChildren" showDaughters="true" visible="false"/>
     <vis name="VisibleRed"  r="1.0" g="0.0" b="0.0" showDaughters="true" visible="true"/>
-    <vis name="VisibleBlue" r="0.0" g="0.0" b="1.0" showDaughters="false" visible="true"/>
+    <vis name="VisibleBlue" r="0.0" g="0.0" b="1.0" showDaughters="true" visible="true"/>
     <vis name="VisibleGreen" alpha="1.0" r="0.0" g="1.0" b="0.0" drawingStyle="solid" lineStyle="solid" showDaughters="true" visible="true"/>
   </display>
 
@@ -64,6 +64,18 @@
         </shape>
       </envelope>
 
+      <module id="0" repeat="1" name="SignalWire" type="Tube" rmin="0*mm" rmax="0.01*mm">
+          <tubs name="W" type="Tube" rmin="0*mm" rmax="0.007*mm" material="Tungsten"/>
+          <tubs name="Au" type="Tube" rmin="0.007*mm" rmax="0.01*mm" material="Gold"/>
+      </module>
+
+      <module id="1" repeat="3" name="FieldWire" type="Tube" rmin="0*mm" rmax="0.02*mm">
+          <tubs name="Al" type="Tube" rmin="0*mm" rmax="0.017*mm" material="Aluminum"/>
+          <tubs name="Ag" type="Tube" rmin="0.017*mm" rmax="0.02*mm" material="Silver"/>
+      </module>
+
+<!--      <tubs name="SignalWire" rmin="0*mm" rmax="0.01*mm" material="Tungsten"/>-->
+
       <type_flags type="DetType_TRACKER + DetType_BARREL + DetType_GASEOUS + DetType_WIRE"/>
       <!-- Use cm as unit if you want to use Pandora for reconstruction -->
      <sensitive type="SimpleDriftChamber"/>
diff --git a/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp b/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp
index 79df65c47ef2a552b91127e6f9caf1592754e277..2575d6791ed9cbaffcee9da0122efd94d54ce8e7 100644
--- a/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp
+++ b/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp
@@ -62,6 +62,10 @@ 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;
+
     // =======================================================================
     // Detector Construction
     // =======================================================================
@@ -88,6 +92,41 @@ 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);
 
+   // - wire
+    dd4hep::Volume module_vol;
+//    dd4hep::Volume Module_vol;
+    for(xml_coll_t c(x_det,_U(module)); c; ++c) {
+      xml_comp_t x_module = c;
+      double  module_rmin = x_module.rmin();
+      double  module_rmax = x_module.rmax();
+      std::string module_name = x_module.nameStr();
+      dd4hep::Tube module_solid(module_rmin,module_rmax,chamber_length*0.5);
+      if(x_module.id()==0) {
+         module_vol = dd4hep::Volume(module_name,module_solid,det_mat);
+      }// else {
+//         Module_vol = dd4hep::Volume(module_name,module_solid,det_mat);
+//      }
+
+         for(xml_coll_t l(x_module,_U(tubs)); l; ++l) {
+            xml_comp_t x_tube =l;
+            double tube_rmin = x_tube.rmin();
+            double tube_rmax = x_tube.rmax();
+            std::string tube_name = x_tube.nameStr();
+            std::string wire_name= module_name + tube_name;
+            dd4hep::Material tube_mat = theDetector.material(x_tube.materialStr());
+            dd4hep::Tube wire_solid(tube_rmin,tube_rmax,chamber_length*0.5);
+            dd4hep::Volume wire_vol(wire_name,wire_solid,tube_mat);
+            dd4hep::Transform3D transform_wire(dd4hep::Rotation3D(),dd4hep::Position(0.,0.,0.));
+            dd4hep::PlacedVolume wire_phy;
+            if(x_module.id()==0) {
+               wire_phy = module_vol.placeVolume(wire_vol,transform_wire);
+            }// else {
+//               wire_phy = Module_vol.placeVolume(wire_vol,transform_wire);
+//            }
+         }
+  }
+
+
     //Initialize the segmentation
     dd4hep::Readout readout = sd.readout();
     dd4hep::Segmentation geomseg = readout.segmentation();
@@ -96,11 +135,10 @@ 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++) {
+    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);
@@ -130,6 +168,19 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector,
 
         dd4hep::Tube layer_solid(rmin,rmax,chamber_length*0.5);
         dd4hep::Volume layer_vol(layer_name,layer_solid,det_mat);
+        layer_vol.setAttributes(theDetector,x_det.regionStr(),x_det.limitsStr(),x_det.visStr());
+
+        // - wire vol
+//     if(layer_id == 1) {
+        for(int icell=0; icell< numWire; icell++) {
+            double wire_phi = (icell+0.5)*layer_Phi + offset;
+            dd4hep::Transform3D transform_module(dd4hep::Rotation3D(),dd4hep::Position(rmid*std::cos(wire_phi),rmid*std::sin(wire_phi),0.));
+//            dd4hep::Transform3D transform_Module(dd4hep::Rotation3D(),dd4hep::Position((rmid+chamber_layer_width*0.5)*std::cos(wire_phi),(rmid+chamber_layer_width*0.5)*std::sin(wire_phi),0.));
+            dd4hep::PlacedVolume module_phy = layer_vol.placeVolume(module_vol,transform_module);
+//            dd4hep::PlacedVolume Module_phy = layer_vol.placeVolume(Module_vol,transform_Module);
+        }
+//  }
+
         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);
@@ -143,19 +194,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);
-     
-     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);
-    
-    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));