diff --git a/Detector/DetCRD/compact/CRD_common_v01/DC_Straight_v01_01.xml b/Detector/DetCRD/compact/CRD_common_v01/DC_Straight_v01_01.xml
deleted file mode 100644
index a35bb38344b4a2f7ec6d68189a95a212f1c97fc6..0000000000000000000000000000000000000000
--- a/Detector/DetCRD/compact/CRD_common_v01/DC_Straight_v01_01.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<lccdd>
-  <info name="DriftChamber" title="Drift Chamber only with straight wire" url="http://github.com/cepc/CEPCSW" author="FU Chengdong" status="development" version="v1">
-    <comment>Test with Drift Chamber</comment>
-  </info>
-
-  <define>
-    <constant name="DC_cell_size" value="15*mm"/>
-    <constant name="DC_layer_number" value="int((DC_chamber_layer_rend-DC_chamber_layer_rbegin)/DC_cell_size)"/>
-    <constant name="DC_sensitive_rmin" value="DC_chamber_layer_rbegin+0.5*(DC_chamber_layer_rend-DC_chamber_layer_rbegin-DC_cell_size*DC_layer_number)"/>
-    <constant name="DC_sensitive_rmax" value="DC_sensitive_rmin+DC_cell_size*DC_layer_number"/>
-  </define>
-
-  <detectors>
-    <detector id="DetID_DC" name="DriftChamber" type="StraightDriftChamber_v01" readout="DriftChamberHitsCollection" combineHits="true"
-	      vis="DCVis" insideTrackingVolume="true" limits="dc_limits">
-      <envelope>
-        <shape type="BooleanShape" operation="Union" material="Air">
-          <shape type="Tube" rmin="DC_inner_radius" rmax="DC_outer_radius" dz="DC_half_length+DC_Endcap_dz" />
-        </shape>
-      </envelope>
-
-      <type_flags type="DetType_TRACKER + DetType_BARREL + DetType_GASEOUS + DetType_WIRE"/>
-
-      <shell>
-	<inner thickness="SDT_inner_wall_thickness" material="CarbonFiber" vis="LightGrayVis"/>
-	<outer thickness="SDT_outer_wall_thickness" material="CarbonFiber" vis="LightGrayVis"/>
-	<side  thickness="0.1*mm" material="CarbonFiber" vis="LightGrayVis"/>
-      </shell>
-      <chamber rmin="DC_chamber_layer_rbegin" rmax="DC_chamber_layer_rend" zhalf="DC_half_length" material="GasHe_90Isob_10" vis="DCVis">
-	<layer id="0" name="MainChamber" rmin="DC_sensitive_rmin" rmax="DC_sensitive_rmax" number="DC_layer_number" material="GasHe_90Isob_10" vis="DCLayerVis"/>
-      </chamber>
-     </detector>
-  </detectors>
-
-  <readouts>
-    <readout name="DriftChamberHitsCollection">
-      <id>system:5,layer:7:9,chamber:8,cellID:32:16</id>
-    </readout>
-  </readouts>
-
-</lccdd>
diff --git a/Detector/DetCRD/src/Tracker/StraightDriftChamber_v01_geo.cpp b/Detector/DetCRD/src/Tracker/StraightDriftChamber_v01_geo.cpp
deleted file mode 100644
index 09cd2394d153a2d823e635c2b7ccb01eb2b5010f..0000000000000000000000000000000000000000
--- a/Detector/DetCRD/src/Tracker/StraightDriftChamber_v01_geo.cpp
+++ /dev/null
@@ -1,256 +0,0 @@
-//====================================================================
-//  Detector description implementation of the Drift Chamber with only straight
-//--------------------------------------------------------------------
-//
-//  Author: Chengdong FU
-//
-//====================================================================
-
-#include <DD4hep/Detector.h>
-#include "DD4hep/DetFactoryHelper.h"
-#include "XML/Utilities.h"
-#include "DDRec/Surface.h"
-#include "DDRec/DetectorData.h"
-
-#include <map>
-
-using namespace std;
-
-using dd4hep::DetElement;
-using dd4hep::Detector;
-using dd4hep::Material;
-using dd4hep::PlacedVolume;
-using dd4hep::SensitiveDetector;
-using dd4hep::Volume;
-using dd4hep::Tube;
-using dd4hep::_toString;
-using dd4hep::Position;
-using dd4hep::rec::FixedPadSizeTPCData;
-using dd4hep::rec::Vector3D;
-using dd4hep::rec::VolCylinder;
-using dd4hep::rec::SurfaceType;
-using dd4hep::rec::volSurfaceList;
-using dd4hep::rec::VolPlane;
-
-static dd4hep::Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector sens) {
-  xml_det_t   x_det     = e;
-  Material    air       = description.air();
-  int         det_id    = x_det.id();
-  string      name      = x_det.nameStr();
-  DetElement  tracker(name, det_id);
-
-  Volume envelope = dd4hep::xml::createPlacedEnvelope(description, e, tracker);
-  dd4hep::xml::setDetectorTypeFlag(e, tracker) ;
-  if(description.buildType()==dd4hep::BUILD_ENVELOPE) return tracker;
-  envelope.setVisAttributes(description.visAttributes("SeeThrough"));
-
-  sens.setType("tracker");
-  std::cout << " ** building StraightDriftChamber_v01 ..." << std::endl ;
-  
-  xml_coll_t c_shell(x_det,_Unicode(shell));
-  xml_comp_t x_shell = c_shell;
-
-  xml_coll_t c_inner(x_shell,_U(inner));
-  xml_comp_t x_inner = c_inner;
-  double thickness_inner = x_inner.thickness();
-  Material mat_inner(description.material(x_inner.materialStr())); 
-
-  xml_coll_t c_outer(x_shell,_U(outer));
-  xml_comp_t x_outer = c_outer;
-  double thickness_outer = x_outer.thickness();
-  Material mat_outer(description.material(x_outer.materialStr()));
-
-  xml_coll_t c_side(x_shell,_U(side));
-  xml_comp_t x_side = c_side;
-  double thickness_side = x_side.thickness();
-  Material mat_side(description.material(x_side.materialStr()));
-
-  xml_coll_t c_chamber(x_det,_U(chamber));
-  xml_comp_t x_chamber = c_chamber;
-  double rmin_chamber = x_chamber.rmin();
-  double rmax_chamber = x_chamber.rmax();
-  double halflength_chamber = x_chamber.zhalf();
-  Material mat_chamber(description.material(x_chamber.materialStr()));
-
-  xml_coll_t c_signal(x_det,_Unicode(signal_wire));
-  xml_comp_t x_signal = c_signal;
-  double rmin_signal = x_signal.rmin();
-  double rmax_signal = x_signal.rmax();
-  Material mat_signal = (description.material(x_signal.materialStr()));
-  Tube solid_signal(rmin_signal,rmax_signal,halflength_chamber);
-  Volume volume_signal(name+"_signal",solid_signal,mat_signal);
-  for(xml_coll_t c(x_signal, _U(tubs)); c; ++c) {
-    xml_comp_t x_tub = c;
-    string name_tub = x_tub.nameStr();
-    double rmin_tub = x_tub.rmin();
-    double rmax_tub = x_tub.rmax();
-    Material mat_tub(description.material(x_tub.materialStr()));
-    Tube solid_tub(rmin_tub,rmax_tub,halflength_chamber);
-    Volume volume_tub(name+"_signal"+name_tub,solid_tub,mat_tub);
-    volume_tub.setVisAttributes(description.visAttributes(x_tub.visStr()));
-    PlacedVolume phy_tub = volume_signal.placeVolume(volume_tub);
-  }
-
-  xml_coll_t c_field(x_det,_Unicode(field_wire));
-  xml_comp_t x_field = c_field;
-  double rmin_field = x_field.rmin();
-  double rmax_field = x_field.rmax();
-  Material mat_field = (description.material(x_field.materialStr()));
-  Tube solid_field(rmin_field,rmax_field,halflength_chamber);
-  Volume volume_field(name+"_field",solid_field,mat_field);
-  for(xml_coll_t c(x_field, _U(tubs)); c; ++c) {
-    xml_comp_t x_tub = c;
-    string name_tub = x_tub.nameStr();
-    double rmin_tub = x_tub.rmin();
-    double rmax_tub = x_tub.rmax();
-    Material mat_tub(description.material(x_tub.materialStr()));
-    Tube solid_tub(rmin_tub,rmax_tub,halflength_chamber);
-    Volume volume_tub(name+"_field"+name_tub,solid_tub,mat_tub);
-    volume_tub.setVisAttributes(description.visAttributes(x_tub.visStr()));
-    PlacedVolume phy_tub = volume_field.placeVolume(volume_tub);
-  }
-		    
-  Tube solid_chamber(rmin_chamber,rmax_chamber,halflength_chamber);
-  Volume volume_chamber(name+"_chamber",solid_chamber,mat_chamber);
-  volume_chamber.setVisAttributes(description.visAttributes(x_chamber.visStr()));
-  PlacedVolume phy_chamber = envelope.placeVolume(volume_chamber);
-  if(x_det.hasAttr(_U(id))){
-    phy_chamber.addPhysVolID("system",x_det.id());
-  }
-  DetElement det_chamber(tracker, name+"_chamber", 0);
-  det_chamber.setPlacement(phy_chamber);
-
-  Tube solid_inner(rmin_chamber-thickness_inner, rmin_chamber, halflength_chamber);
-  Volume volume_inner(name+"_inner_wall",solid_inner,mat_inner);
-  volume_inner.setVisAttributes(description.visAttributes(x_inner.visStr()));
-  PlacedVolume phy_inner = envelope.placeVolume(volume_inner);
-  DetElement det_inner(tracker, name+"_inner_wall", 0);
-  det_inner.setPlacement(phy_inner);
-  Vector3D ocyl_inner(rmin_chamber-0.5*thickness_inner, 0., 0.);
-  VolCylinder surfI(volume_inner, SurfaceType(SurfaceType::Helper), 0.5*thickness_inner, 0.5*thickness_inner, ocyl_inner);
-  volSurfaceList(tracker)->push_back(surfI);
-
-  Tube solid_outer(rmax_chamber, rmax_chamber+thickness_outer, halflength_chamber);
-  Volume volume_outer(name+"_outer_wall",solid_outer,mat_outer);
-  volume_outer.setVisAttributes(description.visAttributes(x_outer.visStr()));
-  PlacedVolume phy_outer = envelope.placeVolume(volume_outer);
-  DetElement det_outer(tracker, name+"_outer_wall", 0);
-  det_outer.setPlacement(phy_outer);
-  Vector3D ocyl_outer(rmax_chamber+0.5*thickness_inner, 0., 0.);
-  VolCylinder surfO(volume_outer, SurfaceType(SurfaceType::Helper), 0.5*thickness_outer, 0.5*thickness_outer, ocyl_outer);
-  volSurfaceList(tracker)->push_back(surfO);
-
-  Tube solid_side(rmin_chamber-thickness_inner, rmax_chamber+thickness_inner, 0.5*thickness_side);
-  Volume volume_side(name+"_side_wall",solid_side,mat_side);
-  volume_side.setVisAttributes(description.visAttributes(x_side.visStr()));
-  PlacedVolume phy_plus  = envelope.placeVolume(volume_side,Position(0,0,halflength_chamber+0.5*thickness_side));
-  PlacedVolume phy_minus = envelope.placeVolume(volume_side,Position(0,0,-halflength_chamber-0.5*thickness_side));
-  DetElement det_plus(tracker, name+"_plusside_wall", 0);
-  det_plus.setPlacement(phy_plus);
-  DetElement det_minus(tracker, name+"_minusside_wall", 1);
-  det_minus.setPlacement(phy_minus);
-  Vector3D u(0., 1., 0.);
-  Vector3D v(1., 0., 0.);
-  Vector3D n(0., 0., 1.);
-  double mid_r = 0.5*(rmin_chamber-thickness_inner+rmax_chamber+thickness_inner);
-  Vector3D o(0., mid_r, 0.);
-  VolPlane surfS(volume_side, SurfaceType(SurfaceType::Helper), 0.5*thickness_side, 0.5*thickness_side, u, v, n, o);
-  volSurfaceList(det_plus)->push_back(surfS);
-  volSurfaceList(det_minus)->push_back(surfS);
-
-  int chamber_id=0, max_layer=0;
-  double rmin_sensitive=10000, rmax_sensitive=0, cell_height=0;
-  for(xml_coll_t c(x_chamber, _U(layer)); c; ++c) {
-    xml_comp_t x_layer = c;
-    string name_layer = x_layer.nameStr();
-    double rmin_layer = x_layer.rmin();
-    double rmax_layer = x_layer.rmax();
-    Material mat_layer(description.material(x_layer.materialStr()));
-    Tube solid_sub(rmin_layer, rmax_layer, halflength_chamber);
-    Volume volume_sub(name+name_layer,solid_sub,mat_layer);
-    volume_sub.setVisAttributes(description.visAttributes("SeeThrough"));
-    PlacedVolume phy_sub = volume_chamber.placeVolume(volume_sub);
-    DetElement det_sub(det_chamber, name+name_layer, x_layer.id());
-    det_sub.setPlacement(phy_sub);
-
-    int nlayer = x_layer.number();
-    double height = (rmax_layer-rmin_layer)/nlayer;
-    double radius = rmin_layer;
-    for(int layer_id=0; layer_id<nlayer; layer_id++){
-      Tube solid_layer(radius, radius+height, halflength_chamber);
-      Volume volume_layer(name+name_layer+_toString(layer_id, "_%d"),solid_layer,mat_layer);
-      volume_layer.setVisAttributes(description.visAttributes(x_layer.visStr()));
-      
-      PlacedVolume phy = volume_sub.placeVolume(volume_layer);
-      if(x_layer.isSensitive()){
-	volume_layer.setSensitiveDetector(sens);
-	volume_layer.setLimitSet(description,x_det.limitsStr());
-	phy.addPhysVolID("chamber", chamber_id).addPhysVolID("layer", layer_id);
-	if(radius<rmin_sensitive){
-	  rmin_sensitive = radius;
-	  // TODO: more than one chamber, with different height; now only minimum radius chamber include
-	  rmax_sensitive = radius + nlayer*height;
-	  max_layer = nlayer;
-	  cell_height = height;
-	}
-	double radius_center = radius+0.5*height;
-	double radius_edge   = radius+rmax_field;
-	int ncell = floor(dd4hep::twopi*radius_center/height);
-	double dphi = dd4hep::twopi / ncell;
-	double offset = 0.;
-	if(layer_id%2!=0) offset = 0.5*dphi;
-	//std::cout << "debug: " << layer_id << " rmid=" << radius_center << " redge=" << radius_edge
-	//	  << " ncell=" << ncell << " dphi=" << dphi << " offset=" << offset << std::endl;
-	for(int icell=0;icell<ncell;icell++){
-	  double phi = (icell+0.5)*dphi + offset;
-	  volume_layer.placeVolume(volume_signal, Position(radius_center*cos(phi),radius_center*sin(phi),0));
-	  volume_layer.placeVolume(volume_field, Position(radius_center*cos(phi+0.5*dphi),radius_center*sin(phi+0.5*dphi),0));
-	  volume_layer.placeVolume(volume_field, Position(radius_edge*cos(phi+0.5*dphi),radius_edge*sin(phi+0.5*dphi),0));
-	  volume_layer.placeVolume(volume_field, Position(radius_edge*cos(phi+0.25*dphi),radius_edge*sin(phi+0.25*dphi),0));
-	  volume_layer.placeVolume(volume_field, Position(radius_edge*cos(phi),radius_edge*sin(phi),0));
-	  volume_layer.placeVolume(volume_field, Position(radius_edge*cos(phi-0.25*dphi),radius_edge*sin(phi-0.25*dphi),0));
-	  
-	  if(layer_id==nlayer){
-	    double radius_max = radius+height-rmax_field;
-	    volume_layer.placeVolume(volume_field, Position(radius_max*cos(phi+0.5*dphi),radius_max*sin(phi+0.5*dphi),0));
-	    volume_layer.placeVolume(volume_field, Position(radius_max*cos(phi+0.25*dphi),radius_max*sin(phi+0.25*dphi),0));
-	    volume_layer.placeVolume(volume_field, Position(radius_max*cos(phi),radius_max*sin(phi),0));
-	    volume_layer.placeVolume(volume_field, Position(radius_max*cos(phi-0.25*dphi),radius_max*sin(phi-0.25*dphi),0));
-	  }
-	}
-      }
-      DetElement det_layer(det_sub, name+name_layer+_toString(layer_id, "_%d"), layer_id);
-      det_layer.setPlacement(phy);
-      Vector3D ol(radius+0.5*height, 0., 0.);
-      SurfaceType type = x_layer.isSensitive()?SurfaceType(SurfaceType::Sensitive, SurfaceType::Invisible):SurfaceType(SurfaceType::Helper);
-      VolCylinder surf(volume_layer, type, 0.5*height, 0.5*height, ol);
-      volSurfaceList(det_layer)->push_back(surf);
-
-      radius += height;
-    }
-    if(x_layer.isSensitive()) chamber_id++;
-  }
-
-  if ( x_det.hasAttr(_U(combineHits)) ) {
-    tracker.setCombineHits(x_det.attr<bool>(_U(combineHits)),sens);
-  }
-
-  FixedPadSizeTPCData* dcData = new FixedPadSizeTPCData;
-  dcData->zHalf = halflength_chamber+thickness_side;
-  dcData->rMin = rmin_chamber-thickness_inner;
-  dcData->rMax = rmax_chamber+thickness_outer;
-  dcData->innerWallThickness = thickness_inner;
-  dcData->outerWallThickness = thickness_outer;
-  dcData->rMinReadout = rmin_sensitive;
-  dcData->rMaxReadout = rmax_sensitive;
-  dcData->maxRow = max_layer;
-  dcData->padHeight = cell_height;
-  dcData->padWidth = cell_height;
-  dcData->driftLength = halflength_chamber;
-  dcData->zMinReadout = thickness_side/2.0;
-  tracker.addExtension<FixedPadSizeTPCData>(dcData);
-  
-  return tracker;
-}
-
-DECLARE_DETELEMENT(StraightDriftChamber_v01, create_detector)