From 970ddf223e23e43bc559f420e6f6e16a1d073c11 Mon Sep 17 00:00:00 2001
From: Chengdong Fu <fucd@ihep.ac.cn>
Date: Thu, 27 Mar 2025 16:05:45 +0800
Subject: [PATCH 1/5] gap between sensors

---
 .../compact/CRD_common_v02/ITK_EndCap_v01.xml |   4 +-
 .../DetCRD/src/Tracker/ITK_EndCap_v01.cpp     | 138 +++++++++++-------
 .../src/ild/ftd/CEPCITKEndcapKalDetector.cc   |  37 +++--
 3 files changed, 111 insertions(+), 68 deletions(-)

diff --git a/Detector/DetCRD/compact/CRD_common_v02/ITK_EndCap_v01.xml b/Detector/DetCRD/compact/CRD_common_v02/ITK_EndCap_v01.xml
index 9a57883b..c5b06909 100644
--- a/Detector/DetCRD/compact/CRD_common_v02/ITK_EndCap_v01.xml
+++ b/Detector/DetCRD/compact/CRD_common_v02/ITK_EndCap_v01.xml
@@ -28,7 +28,7 @@
         <slice name="Carbon_fiber_back" material="CF_ITK" thickness="150*um" vis="GrayVis"/>
       </support>
 
-      <sensor>
+      <sensor size="20*mm" side="0.3*mm" dead="2.0*mm">
 	<slice name="GlueF" material="CER_ITK" thickness="200*um" vis="SeeThrough"/>
         <slice name="Sensor" material="G4_Si" thickness="150*um" sensitive="true" vis="OrangeVis"/>
 	<slice name="GlueB" material="CER_ITK" thickness="100*um" vis="SeeThrough"/>
@@ -64,7 +64,7 @@
 
   <readouts>
     <readout name="ITKEndcapCollection">
-      <id>system:5,side:-2,layer:9,module:8,sensor:8</id>
+      <id>system:5,side:-2,layer:9,module:8,ring:3,sensor:5</id>
     </readout>
   </readouts>
 
diff --git a/Detector/DetCRD/src/Tracker/ITK_EndCap_v01.cpp b/Detector/DetCRD/src/Tracker/ITK_EndCap_v01.cpp
index 67bff078..a8f9e8ed 100644
--- a/Detector/DetCRD/src/Tracker/ITK_EndCap_v01.cpp
+++ b/Detector/DetCRD/src/Tracker/ITK_EndCap_v01.cpp
@@ -38,6 +38,11 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
 
   const xml::Component supports = x_det.child("support");
   const xml::Component sensor   = x_det.child("sensor");
+  const double sensor_size   = sensor.attr<double>("size");
+  const double sensor_side   = sensor.attr<double>("side");
+  const double sensor_dead   = sensor.attr<double>("dead");
+  const double sensor_width  = sensor_size - sensor_dead - sensor_side;
+  const double sensor_length = sensor_size - sensor_side * 2;
 
   const xml::Component layers_xml = x_det.child("layers");
   for (xml_coll_t layer(layers_xml, "layer"); layer; ++layer)
@@ -115,6 +120,11 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
       const auto nmodule = ring.attr<double>("nmodule");
       const auto vis = ring.attr<std::string>("vis");
 
+      int nrow    = std::floor(module_dr/sensor_size);
+      int ncolumn = std::floor(module_dphi/sensor_size);
+      double gap_dr   = (module_dr - sensor_size*nrow) / (nrow - 1);
+      double gap_dphi = (module_dphi - sensor_size*ncolumn) / (ncolumn - 1);
+
       std::string ring_vol_name = layer_name + "_ring" + ring_id;
       Tube ring_tube(ring_inner_r, ring_outer_r, SiliconThickness / 2.0, 0.0, 2 * M_PI);
       Volume ringPosF_vol(ring_vol_name + "PF", ring_tube, air);
@@ -131,58 +141,80 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
       ringNegR_vol.setVisAttributes(description.visAttributes(vis));
 
       // populate sensor
-      Box sensor_box(module_dr / 2.0, module_dphi / 2.0, SiliconThickness / 2.0);
-      std::string sensor_name = ring_vol_name + "_petal";
-      Volume sensor_vol(sensor_name, sensor_box, air);
-      DetElement sensor_det(sensor_name, det_id);
-      sensor_vol = sensor_vol.setVisAttributes(description.visAttributes(vis));
+      Box module_box(module_dr / 2.0, module_dphi / 2.0, SiliconThickness / 2.0);
+      std::string module_name = ring_vol_name + "_petal";
+      Volume module_vol(module_name, module_box, air);
+      DetElement module_det(module_name, det_id);
+      module_vol = module_vol.setVisAttributes(description.visAttributes(vis));
 
       double sensitive_thickness = 0;
       double glue_thickness      = 0;
       double service_thickness   = 0;
       //const xml::Component sensor = x_det.child("sensor");
-      double sensor_z = -SiliconThickness / 2.0;
+      double module_z = -SiliconThickness / 2.0;
       for (xml_coll_t sensor_layer(sensor, "slice"); sensor_layer; ++sensor_layer)
       {
-        const auto sensor_layer_name = sensor_layer.attr<std::string>("name");
-        const auto sensor_layer_material = sensor_layer.attr<std::string>("material");
-        const auto sensor_layer_thickness = sensor_layer.attr<double>("thickness");
-        const auto sensor_layer_vis = sensor_layer.attr<std::string>("vis");
+        const auto module_layer_name      = sensor_layer.attr<std::string>("name");
+        const auto module_layer_material  = sensor_layer.attr<std::string>("material");
+        const auto module_layer_thickness = sensor_layer.attr<double>("thickness");
+        const auto module_layer_vis       = sensor_layer.attr<std::string>("vis");
         auto is_sensitive = sensor_layer.hasAttr(_U(sensitive));
-        std::string sensor_layer_vol_name = sensor_name + "_" + sensor_layer_name;
-        Box sensor_layer_box(module_dr / 2.0, module_dphi / 2.0, sensor_layer_thickness / 2.0);
-        Volume sensor_layer_vol(sensor_layer_vol_name, sensor_layer_box, description.material(sensor_layer_material));
-        DetElement sensor_layer_det(sensor_layer_vol_name, det_id);
-        sensor_layer_vol = sensor_layer_vol.setVisAttributes(description.visAttributes(sensor_layer_vis));
+        std::string module_layer_vol_name = module_name + "_" + module_layer_name;
+        Box    module_layer_box(module_dr / 2.0, module_dphi / 2.0, module_layer_thickness / 2.0);
+        Volume module_layer_vol(module_layer_vol_name, module_layer_box, description.material(module_layer_material));
+        DetElement module_layer_det(module_layer_vol_name, det_id);
+        module_layer_vol = module_layer_vol.setVisAttributes(description.visAttributes(module_layer_vis));
         rec::SurfaceType surf_type;
+	rec::Vector3D u(0.,-1., 0.);
+        rec::Vector3D v(1., 0., 0.);
+        rec::Vector3D n(0., 0., 1.);
         if (is_sensitive)
         {
-          sensor_layer_vol = sensor_layer_vol.setSensitiveDetector(sens);
-          surf_type = rec::SurfaceType(rec::SurfaceType::Sensitive,rec::SurfaceType::Plane);
-	  sensitive_thickness += sensor_layer_thickness;
+	  surf_type = rec::SurfaceType(rec::SurfaceType::Sensitive,rec::SurfaceType::Plane);
+
+	  Box    sensor_box(sensor_length / 2.0, sensor_width / 2.0, module_layer_thickness / 2.0);
+          Volume sensor_vol(module_layer_vol_name + "_sensor", sensor_box, description.material(module_layer_material));
+	  sensor_vol = sensor_vol.setVisAttributes(description.visAttributes(module_layer_vis));
+          sensor_vol = sensor_vol.setSensitiveDetector(sens);
+	  for (int irow = 0; irow < nrow; irow++) {
+	    for (int icolumn = 0; icolumn < ncolumn; icolumn++) {
+	      int sensor_id = icolumn*nrow + irow;
+	      double xpos = -module_dr/2.0 + (irow+0.5)*sensor_size + (irow-1)*gap_dr;
+	      double ypos = -module_dphi/2.0 + sensor_dead + (icolumn+0.5)*sensor_width + icolumn*(gap_dphi+sensor_side*2);
+	      DetElement sensor_det(module_layer_det, module_layer_vol_name + "_sensor" + std::to_string(sensor_id), det_id);
+	      auto pv = module_layer_vol.placeVolume(sensor_vol, Position(xpos, ypos, 0));
+	      pv.addPhysVolID("sensor", sensor_id);
+	      sensor_det.setPlacement(pv);
+
+	      rec::VolPlane surf(sensor_vol, surf_type, module_layer_thickness / 2.0, module_layer_thickness / 2.0, u, v, n);
+	      rec::volSurfaceList(sensor_det)->push_back(surf);
+	    }
+	  }
+
+	  sensitive_thickness += module_layer_thickness;
         }
         else
         {
           surf_type = rec::SurfaceType(rec::SurfaceType::Helper,rec::SurfaceType::Plane);
-	  if (sensitive_thickness==0) glue_thickness    += sensor_layer_thickness;
-          else                        service_thickness += sensor_layer_thickness;
+	  rec::VolPlane surf(module_layer_vol, surf_type, module_layer_thickness / 2.0, module_layer_thickness / 2.0, u, v, n);
+	  rec::volSurfaceList(module_layer_det)->push_back(surf);
+
+	  if (sensitive_thickness==0) glue_thickness    += module_layer_thickness;
+          else                        service_thickness += module_layer_thickness;
         }
-        sensor_layer_det.setPlacement(
-          sensor_vol.placeVolume(sensor_layer_vol, Position(0, 0, sensor_z + sensor_layer_thickness / 2.0)));
-        sensor_z += sensor_layer_thickness;
+        module_layer_det.setPlacement(
+          module_vol.placeVolume(module_layer_vol, Position(0, 0, module_z + module_layer_thickness / 2.0)));
+        module_z += module_layer_thickness;
 
-        sensor_det.add(sensor_layer_det);
-        rec::Vector3D u(0.,-1., 0.);
-        rec::Vector3D v(1., 0., 0.);
-        rec::Vector3D n(0., 0., 1.);
-        rec::VolPlane surf(sensor_layer_vol, surf_type, sensor_layer_thickness / 2.0,
-                           sensor_layer_thickness / 2.0, u, v,
-                           n);
-        rec::volSurfaceList(sensor_layer_det)->push_back(surf);
+        module_det.add(module_layer_det);
+        //rec::VolPlane surf(module_layer_vol, surf_type, module_layer_thickness / 2.0,
+	//                 module_layer_thickness / 2.0, u, v,
+	//                 n);
+        //rec::volSurfaceList(module_layer_det)->push_back(surf);
       }
 
       PlacedVolume pv;
-      // place all the sensors into ring
+      // place all the modules into ring
       double r_offset = ring_inner_r + module_dr / 2.0;
       for (int i = 0; i < nmodule; ++i)
       {
@@ -191,52 +223,52 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
 	double rotated_y = r_offset * sin(angle);
         auto transform = Transform3D(RotationZ(angle), Position(rotated_x, rotated_y, 0));
 
-        DetElement negative_even_sensor_det = i > 0 ? sensor_det.clone(ring_vol_name + "_petalN" + std::to_string(2 * i)) : sensor_det;
-	pv = ringNegF_vol.placeVolume(sensor_vol, transform).addPhysVolID("module", 2 * i);
-        negative_even_sensor_det.setPlacement(pv);
-        ringNegF_det.add(negative_even_sensor_det);
+        DetElement negative_even_module_det = i > 0 ? module_det.clone(ring_vol_name + "_petalN" + std::to_string(2 * i)) : module_det;
+	pv = ringNegF_vol.placeVolume(module_vol, transform).addPhysVolID("module", 2 * i);
+        negative_even_module_det.setPlacement(pv);
+        ringNegF_det.add(negative_even_module_det);
 
         transform = Transform3D(RotationZYX(-angle, 0, M_PI), Position(rotated_x, rotated_y, 0));
-	DetElement positive_even_sensor_det = sensor_det.clone(ring_vol_name + "_petalP" + std::to_string(2 * i));
-        pv = ringPosF_vol.placeVolume(sensor_vol, transform).addPhysVolID("module", 2 * i);
-        positive_even_sensor_det.setPlacement(pv);
-        ringPosF_det.add(positive_even_sensor_det);
+	DetElement positive_even_module_det = module_det.clone(ring_vol_name + "_petalP" + std::to_string(2 * i));
+        pv = ringPosF_vol.placeVolume(module_vol, transform).addPhysVolID("module", 2 * i);
+        positive_even_module_det.setPlacement(pv);
+        ringPosF_det.add(positive_even_module_det);
 
 	angle += M_PI / nmodule;
         rotated_x = r_offset * cos(angle);
         rotated_y = r_offset * sin(angle);
 	transform = Transform3D(RotationZ(angle), Position(rotated_x, rotated_y, 0));
 
-	DetElement positive_odd_sensor_det = sensor_det.clone(ring_vol_name + "_petalP" + std::to_string(2 * i));
-        pv = ringPosR_vol.placeVolume(sensor_vol, transform).addPhysVolID("module", 2 * i + 1);
-        positive_odd_sensor_det.setPlacement(pv);
-        ringPosR_det.add(positive_odd_sensor_det);
+	DetElement positive_odd_module_det = module_det.clone(ring_vol_name + "_petalP" + std::to_string(2 * i));
+        pv = ringPosR_vol.placeVolume(module_vol, transform).addPhysVolID("module", 2 * i + 1);
+        positive_odd_module_det.setPlacement(pv);
+        ringPosR_det.add(positive_odd_module_det);
 
 	transform = Transform3D(RotationZYX(-angle, 0, M_PI), Position(rotated_x, rotated_y, 0));
-	DetElement negative_odd_sensor_det = sensor_det.clone(ring_vol_name + "_petalN" + std::to_string(2 * i));
-	pv = ringNegR_vol.placeVolume(sensor_vol, transform).addPhysVolID("module", 2 * i + 1);
-        negative_odd_sensor_det.setPlacement(pv);
-        ringNegR_det.add(negative_odd_sensor_det);
+	DetElement negative_odd_module_det = module_det.clone(ring_vol_name + "_petalN" + std::to_string(2 * i));
+	pv = ringNegR_vol.placeVolume(module_vol, transform).addPhysVolID("module", 2 * i + 1);
+        negative_odd_module_det.setPlacement(pv);
+        ringNegR_det.add(negative_odd_module_det);
       }
 
       // place ring into layer
       pv = layer_vol.placeVolume(ringPosR_vol, Position(0, 0, +(SupportThickness + SiliconThickness) / 2.0));
-      pv = pv.addPhysVolID("sensor", std::stoi(ring_id));
+      pv = pv.addPhysVolID("ring", std::stoi(ring_id));
       ringPosR_det.setPlacement(pv);
       layer_det.add(ringPosR_det);
 
       pv = layer_vol.placeVolume(ringPosF_vol, Position(0, 0, -(SupportThickness + SiliconThickness) / 2.0));
-      pv = pv.addPhysVolID("sensor", std::stoi(ring_id));
+      pv = pv.addPhysVolID("ring", std::stoi(ring_id));
       ringPosF_det.setPlacement(pv);
       layer_det.add(ringPosF_det);
 
       pv = layerNeg_vol.placeVolume(ringNegR_vol, Position(0, 0, -(SupportThickness + SiliconThickness) / 2.0));
-      pv = pv.addPhysVolID("sensor", std::stoi(ring_id));
+      pv = pv.addPhysVolID("ring", std::stoi(ring_id));
       ringNegR_det.setPlacement(pv);
       layerNeg_det.add(ringNegR_det);
 
       pv = layerNeg_vol.placeVolume(ringNegF_vol, Position(0, 0, +(SupportThickness + SiliconThickness) / 2.0));
-      pv = pv.addPhysVolID("sensor", std::stoi(ring_id));
+      pv = pv.addPhysVolID("ring", std::stoi(ring_id));
       ringNegF_det.setPlacement(pv);
       layerNeg_det.add(ringNegF_det);
       // rotate and reflect ring
@@ -262,7 +294,7 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
       */
       dd4hep::rec::MultiRingsZDiskData::Ring ringData;
       ringData.petalNumber        = 2 * nmodule;
-      ringData.sensorsPerPetal    = 1;
+      ringData.sensorsPerPetal    = nrow*ncolumn;
       ringData.phi0               = phi0;
       ringData.phiOffsetOdd       = 2 * M_PI / nmodule;
       ringData.distance           = ring_inner_r;
diff --git a/Utilities/KalDet/src/ild/ftd/CEPCITKEndcapKalDetector.cc b/Utilities/KalDet/src/ild/ftd/CEPCITKEndcapKalDetector.cc
index 22d54a1f..10ef634e 100644
--- a/Utilities/KalDet/src/ild/ftd/CEPCITKEndcapKalDetector.cc
+++ b/Utilities/KalDet/src/ild/ftd/CEPCITKEndcapKalDetector.cc
@@ -159,17 +159,25 @@ void CEPCITKEndcapKalDetector::create_segmented_disk_layers(int idisk, int iring
   int zsign       = zpos > 0 ? 1 : -1;
   int start_index = even_petals ? 0 : 1;
 
+  int nsensor = _disksData.layers[idisk].rings[iring].sensorsPerPetal;
+  std::vector<int> module_ids;
   dd4hep::DDSegmentation::BitField64 encoder("system:5,side:-2,layer:9,module:8,sensor:8");
   encoder.reset();
   encoder[CEPCConf::DetCellID::system] = CEPCConf::DetID::ITKEndcap;
   encoder[CEPCConf::DetCellID::side]   = zsign;
   encoder[CEPCConf::DetCellID::layer]  = idisk;
-  encoder[CEPCConf::DetCellID::sensor] = iring;
-
-  std::vector<int> module_ids;
   for (int i = 0; i < nsegments; i++) {
     encoder[CEPCConf::DetCellID::module] = even_petals ? 2*i : 2*i+1;
-    module_ids.push_back(encoder.lowWord());
+    if (nsensor == 1) {
+      encoder[CEPCConf::DetCellID::sensor] = iring;
+      module_ids.push_back(encoder.lowWord());
+    }
+    else {
+      for (int isensor = 0; isensor < nsensor; isensor++) {
+        encoder[CEPCConf::DetCellID::sensor] = iring + (isensor<<3);
+        module_ids.push_back(encoder.lowWord());
+      }
+    }
   }
   
   // create segmented disk
@@ -241,6 +249,7 @@ void CEPCITKEndcapKalDetector::setupGearGeom(const gear::GearMgr& gearMgr) {
     std::vector<double> tGlues      = params.getDoubleVals("ThicknessGlues");
     std::vector<double> tServices   = params.getDoubleVals("ThicknessServices");
     std::vector<std::string> petalParNames      = params.getStringVals("PetalNumberNames");
+    std::vector<std::string> petalNSenParNames  = params.getStringVals("PetalNSensorNames");
     std::vector<std::string> phi0ParNames       = params.getStringVals("PetalPhi0Names");
     std::vector<std::string> distanceParNames   = params.getStringVals("PetalDistanceNames");
     std::vector<std::string> widthInnerParNames = params.getStringVals("PetalInnerWidthNames");
@@ -261,7 +270,8 @@ void CEPCITKEndcapKalDetector::setupGearGeom(const gear::GearMgr& gearMgr) {
       //std::string widthInnerParName = widthInnerParNames[idisk];
       //std::string widthOuterParName = widthOuterParNames[idisk];
       //std::string lengthParName = lengthParNames[idisk];
-      std::vector<int> petals         = params.getIntVals(petalParNames[idisk]);
+      std::vector<int>    petals      = params.getIntVals(petalParNames[idisk]);
+      std::vector<int>    nsensors    = params.getIntVals(petalNSenParNames[idisk]);
       std::vector<double> phi0s       = params.getDoubleVals(phi0ParNames[idisk]);
       std::vector<double> distances   = params.getDoubleVals(distanceParNames[idisk]);
       std::vector<double> widthInners = params.getDoubleVals(widthInnerParNames[idisk]);
@@ -270,15 +280,16 @@ void CEPCITKEndcapKalDetector::setupGearGeom(const gear::GearMgr& gearMgr) {
       int nrings = petals.size();
       for (int iring = 0; iring < nrings; iring++) {
 	dd4hep::rec::MultiRingsZDiskData::Ring ring;
-	ring.petalNumber = petals[iring];
-	ring.phi0 = phi0s[iring];
-	ring.distance = distances[iring];
-	ring.widthInner = widthInners[iring];
-	ring.widthOuter = widthOuters[iring];
-	ring.length = lengths[iring];
+	ring.petalNumber        = petals[iring];
+	ring.sensorsPerPetal    = nsensors[iring];
+	ring.phi0               = phi0s[iring];
+	ring.distance           = distances[iring];
+	ring.widthInner         = widthInners[iring];
+	ring.widthOuter         = widthOuters[iring];
+	ring.length             = lengths[iring];
 	ring.thicknessSensitive = tSensitives[idisk];
-	ring.thicknessGlue = tGlues[idisk];
-	ring.thicknessService = tServices[idisk];
+	ring.thicknessGlue      = tGlues[idisk];
+	ring.thicknessService   = tServices[idisk];
 	disk.rings.push_back(ring);
       }
       _disksData.layers.push_back(disk);
-- 
GitLab


From d66d0cbae0eea127c690ac10c673de3bacf42bfc Mon Sep 17 00:00:00 2001
From: Chengdong Fu <fucd@ihep.ac.cn>
Date: Thu, 27 Mar 2025 16:06:59 +0800
Subject: [PATCH 2/5] change position of sensor

---
 .../DetCRD/src/Tracker/SiTrackerStaggeredLadder_v03_geo.cpp     | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Detector/DetCRD/src/Tracker/SiTrackerStaggeredLadder_v03_geo.cpp b/Detector/DetCRD/src/Tracker/SiTrackerStaggeredLadder_v03_geo.cpp
index 9a268d29..eea42eb3 100644
--- a/Detector/DetCRD/src/Tracker/SiTrackerStaggeredLadder_v03_geo.cpp
+++ b/Detector/DetCRD/src/Tracker/SiTrackerStaggeredLadder_v03_geo.cpp
@@ -254,7 +254,7 @@ static dd4hep::Ref_t create_element(dd4hep::Detector& theDetector, xml_h e, dd4h
     for (int sensor_id = 0; sensor_id < sensor_n; sensor_id++) {
       int irow            = std::floor(sensor_id/sensor_column_n);
       int icolumn         = sensor_id%sensor_column_n;
-      double ypos = module_y0 - module_width/2.0 + sensor_dead + sensor_side + irow*sensor_gap + (irow + 0.5)*sensor_width;
+      double ypos = module_y0 - module_width/2.0 + sensor_dead + irow*(sensor_gap + sensor_side*2) + (irow + 0.5)*sensor_width;
       double zpos = module_z0 - sensor_total_length/2.0 + sensor_side + icolumn*(sensor_gap + sensor_side*2) + (icolumn + 0.5)*sensor_length;
       pv = moduleLogical.placeVolume(sensorLogical, Position(0, ypos, zpos));
       pv.addPhysVolID("sensor", sensor_id);
-- 
GitLab


From 52d185b03350bab1f77c2cc8b84d9d2b6b461e7d Mon Sep 17 00:00:00 2001
From: Chengdong Fu <fucd@ihep.ac.cn>
Date: Thu, 27 Mar 2025 16:07:32 +0800
Subject: [PATCH 3/5] gap between sensors

---
 Service/GearSvc/src/GearSvc.cpp | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/Service/GearSvc/src/GearSvc.cpp b/Service/GearSvc/src/GearSvc.cpp
index 9d0fab4c..66bc402b 100644
--- a/Service/GearSvc/src/GearSvc.cpp
+++ b/Service/GearSvc/src/GearSvc.cpp
@@ -474,7 +474,7 @@ StatusCode GearSvc::convertMultiRingsZDisk(dd4hep::DetElement& ftd) {
 
   std::vector<double> alphaPetals, zPositions, zOffsetSupports, rminSupports, rmaxSupports, thicknessSupports;
   std::vector<double> thicknessSensitives, thicknessGlues, thicknessServices;
-  std::vector<std::string> petalParNames, phi0ParNames, distanceParNames, widthInnerParNames, widthOuterParNames, lengthParNames;
+  std::vector<std::string> petalParNames, petalNSensorNames, phi0ParNames, distanceParNames, widthInnerParNames, widthOuterParNames, lengthParNames;
   for (int layer = 0; layer < nLayers; layer++) {
     dd4hep::rec::MultiRingsZDiskData::LayerLayout& ftdlayer = ftdlayers[layer];
 
@@ -489,19 +489,20 @@ StatusCode GearSvc::convertMultiRingsZDisk(dd4hep::DetElement& ftd) {
     auto& rings = ftdlayer.rings;
 
     petalParNames.push_back(std::string("PetalNumber_")+std::to_string(layer));
+    petalNSensorNames.push_back(std::string("PetalNSensor_")+std::to_string(layer));
     phi0ParNames.push_back(std::string("PetalPhi0_")+std::to_string(layer));
     distanceParNames.push_back(std::string("PetalDistance_")+std::to_string(layer));
     widthInnerParNames.push_back(std::string("PetalInnerWidth_")+std::to_string(layer));
     widthOuterParNames.push_back(std::string("PetalOuterWidth_")+std::to_string(layer));
     lengthParNames.push_back(std::string("PetalLength_")+std::to_string(layer));
 
-    std::vector<int>    petalNumbers;
+    std::vector<int>    petalNumbers, petalNSensors;
     std::vector<double> phi0s, distances, widthInners, widthOuters, lengths;
     for (unsigned iring = 0; iring < rings.size(); iring++) {
       auto&  ring = rings[iring];
 
       petalNumbers.push_back(ring.petalNumber);
-      //int    sensorsPerPetal;
+      petalNSensors.push_back(ring.sensorsPerPetal);
       phi0s.push_back(ring.phi0);
       //double phiOffsetOdd;
       distances.push_back(ring.distance*CLHEP::cm);
@@ -516,6 +517,7 @@ StatusCode GearSvc::convertMultiRingsZDisk(dd4hep::DetElement& ftd) {
       }
     }
     ftdParam->setIntVals(std::string("PetalNumber_")+std::to_string(layer), petalNumbers);
+    ftdParam->setIntVals(std::string("PetalNSensor_")+std::to_string(layer), petalNSensors);
     ftdParam->setDoubleVals(std::string("PetalPhi0_")+std::to_string(layer), phi0s);
     ftdParam->setDoubleVals(std::string("PetalDistance_")+std::to_string(layer), distances);
     ftdParam->setDoubleVals(std::string("PetalInnerWidth_")+std::to_string(layer), widthInners);
@@ -554,6 +556,7 @@ StatusCode GearSvc::convertMultiRingsZDisk(dd4hep::DetElement& ftd) {
   ftdParam->setDoubleVals("ThicknessGlues", thicknessGlues);
   ftdParam->setDoubleVals("ThicknessServices", thicknessServices);
   ftdParam->setStringVals("PetalNumberNames", petalParNames);
+  ftdParam->setStringVals("PetalNSensorNames", petalNSensorNames);
   ftdParam->setStringVals("PetalPhi0Names", phi0ParNames);
   ftdParam->setStringVals("PetalDistanceNames", distanceParNames);
   ftdParam->setStringVals("PetalInnerWidthNames", widthInnerParNames);
-- 
GitLab


From 12ac6e1bd51c1e8eacc11f352e235ba6b0137bfc Mon Sep 17 00:00:00 2001
From: Chengdong Fu <fucd@ihep.ac.cn>
Date: Thu, 27 Mar 2025 16:23:14 +0800
Subject: [PATCH 4/5] modify support thickness of stitching to design

---
 .../CRD_common_v02/VXD_Composite_v01_03.xml      | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/Detector/DetCRD/compact/CRD_common_v02/VXD_Composite_v01_03.xml b/Detector/DetCRD/compact/CRD_common_v02/VXD_Composite_v01_03.xml
index e9279e61..94c77774 100644
--- a/Detector/DetCRD/compact/CRD_common_v02/VXD_Composite_v01_03.xml
+++ b/Detector/DetCRD/compact/CRD_common_v02/VXD_Composite_v01_03.xml
@@ -44,7 +44,7 @@
           <sensor thickness="50*um" width="8.409*mm" length="3.296*mm" material="G4_Si" vis="VXDVis"/>
           <flex vis="GrayVis">
             <!--slice thickness="0.4*um" material="G4_Al"/-->
-            <slice thickness="VXD_flex_thickness+45*um" material="CFRP_CMS"/>
+            <slice thickness="VXD_flex_thickness+57.3*um" material="CFRP_CMS"/>
           </flex>
           <readout thickness="50*um" width="4.155*mm" material="Kapton" vis="RedVis"/>
 	  <driver thickness="50*um" width="1.385*mm" material="Kapton" vis="BlueVis"/>
@@ -55,7 +55,7 @@
           <sensor thickness="50*um" width="8.409*mm" length="3.296*mm" material="G4_Si" vis="VXDVis"/>
           <flex vis="GrayVis">
             <!--slice thickness="0.4*um" material="G4_Al"/-->
-            <slice thickness="VXD_flex_thickness+45*um" material="CFRP_CMS"/>
+            <slice thickness="VXD_flex_thickness+57.3*um" material="CFRP_CMS"/>
           </flex>
           <readout thickness="50*um" width="4.155*mm" material="Kapton" vis="RedVis"/>
           <driver thickness="50*um" width="1.385*mm" material="Kapton" vis="BlueVis"/>
@@ -68,7 +68,7 @@
           <sensor thickness="50*um" width="8.409*mm" length="3.296*mm" material="G4_Si" vis="VXDVis"/>
           <flex vis="GrayVis">
             <!--slice thickness="0.4*um" material="G4_Al"/-->
-            <slice thickness="VXD_flex_thickness+32*um" material="CFRP_CMS"/>
+            <slice thickness="VXD_flex_thickness+33.7*um" material="CFRP_CMS"/>
           </flex>
           <readout thickness="50*um" width="4.155*mm" material="Kapton" vis="RedVis"/>
           <driver thickness="50*um" width="1.385*mm" material="Kapton" vis="BlueVis"/>
@@ -79,7 +79,7 @@
           <sensor thickness="50*um" width="8.409*mm" length="3.296*mm" material="G4_Si" vis="VXDVis"/>
           <flex vis="GrayVis">
             <!--slice thickness="0.4*um" material="G4_Al"/-->
-            <slice thickness="VXD_flex_thickness+32*um" material="CFRP_CMS"/>
+            <slice thickness="VXD_flex_thickness+33.7*um" material="CFRP_CMS"/>
           </flex>
           <readout thickness="50*um" width="4.155*mm" material="Kapton" vis="RedVis"/>
           <driver thickness="50*um" width="1.385*mm" material="Kapton" vis="BlueVis"/>
@@ -92,7 +92,7 @@
           <sensor thickness="50*um" width="8.409*mm" length="3.296*mm" material="G4_Si" vis="VXDVis"/>
 	  <flex vis="GrayVis">
             <!--slice thickness="0.4*um" material="G4_Al"/-->
-            <slice thickness="VXD_flex_thickness+31*um" material="CFRP_CMS"/>
+            <slice thickness="VXD_flex_thickness+31.8*um" material="CFRP_CMS"/>
           </flex>
           <readout thickness="50*um" width="4.155*mm" material="Kapton" vis="RedVis"/>
           <driver thickness="50*um" width="4.155*mm" material="Kapton" vis="BlueVis"/>
@@ -103,7 +103,7 @@
           <sensor thickness="50*um" width="8.409*mm" length="3.296*mm" material="G4_Si" vis="VXDVis"/>
           <flex vis="GrayVis">
             <!--slice thickness="0.4*um" material="G4_Al"/-->
-            <slice thickness="VXD_flex_thickness+31*um" material="CFRP_CMS"/>
+            <slice thickness="VXD_flex_thickness+31.8*um" material="CFRP_CMS"/>
           </flex>
           <readout thickness="50*um" width="4.155*mm" material="Kapton" vis="RedVis"/>
           <driver thickness="50*um" width="4.155*mm" material="Kapton" vis="BlueVis"/>
@@ -116,7 +116,7 @@
           <sensor thickness="50*um" width="8.409*mm" length="3.296*mm" material="G4_Si" vis="VXDVis"/>
           <flex vis="GrayVis">
             <!--slice thickness="0.4*um" material="G4_Al"/-->
-            <slice thickness="VXD_flex_thickness+29*um" material="CFRP_CMS"/>
+            <slice thickness="VXD_flex_thickness+40*um" material="CFRP_CMS"/>
           </flex>
           <readout thickness="50*um" width="4.155*mm" material="Kapton" vis="RedVis"/>
           <driver thickness="50*um" width="4.155*mm" material="Kapton" vis="BlueVis"/>
@@ -127,7 +127,7 @@
           <sensor thickness="50*um" width="8.409*mm" length="3.296*mm" material="G4_Si" vis="VXDVis"/>
           <flex vis="GrayVis">
 	    <!--slice thickness="0.4*um" material="G4_Al"/-->
-            <slice thickness="VXD_flex_thickness+29*um" material="CFRP_CMS"/>
+            <slice thickness="VXD_flex_thickness+40*um" material="CFRP_CMS"/>
           </flex>
           <readout thickness="50*um" width="4.155*mm" material="Kapton" vis="RedVis"/>
           <driver thickness="50*um" width="4.155*mm" material="Kapton" vis="BlueVis"/>
-- 
GitLab


From 745c8682268c0f7a4ec6018f6a827018d0bcf7dd Mon Sep 17 00:00:00 2001
From: Chengdong Fu <fucd@ihep.ac.cn>
Date: Mon, 28 Apr 2025 20:03:00 +0800
Subject: [PATCH 5/5] change MDI support

---
 .../CRD_common_v02/VXD_Composite_v01_04.xml   | 178 ++++++++++++++++++
 .../compact/CRD_common_v02/materials.xml      |   7 +
 .../TDR_o1_v01/TDR_o1_v01-onlyTracker.xml     |  11 +-
 .../DetCRD/compact/TDR_o1_v01/TDR_o1_v01.xml  |  19 +-
 4 files changed, 190 insertions(+), 25 deletions(-)
 create mode 100644 Detector/DetCRD/compact/CRD_common_v02/VXD_Composite_v01_04.xml

diff --git a/Detector/DetCRD/compact/CRD_common_v02/VXD_Composite_v01_04.xml b/Detector/DetCRD/compact/CRD_common_v02/VXD_Composite_v01_04.xml
new file mode 100644
index 00000000..f0fa59d3
--- /dev/null
+++ b/Detector/DetCRD/compact/CRD_common_v02/VXD_Composite_v01_04.xml
@@ -0,0 +1,178 @@
+<lccdd>
+  <info name="VXD_Composite_v01_03"
+        title="CepC VXD with stitch and ladder module"
+        author=""
+        url="http://cepc.ihep.ac.cn"
+        status="developing"
+        version="v01">
+    <comment>CepC vertex detector</comment>
+  </info>
+  <define>
+    <constant name="VXD_inner_radius" value="Vertex_inner_radius"/>
+    <constant name="VXD_outer_radius" value="Vertex_outer_radius"/>
+    <constant name="VXD_half_length"  value="Vertex_half_length"/>
+    <!--ladder parameter-->
+    <constant name="VXD_ladder_length" value="682*mm"/>
+    <constant name="VXD_ladder_width"      value="17.3*mm"/>
+    <constant name="VXD_ladder_flex_width" value="VXD_ladder_width"/>
+    <!--stitching parameter-->
+    <constant name="VXD_sensor_backbone"   value="0.055*mm"/>
+    <constant name="VXD_sensor_switches"   value="0.019*mm"/>
+    <constant name="VXD_sensor_bias"       value="0.106*mm"/>
+    <constant name="VXD_sensor_periphery"  value="0.177*mm"/>
+    <!--equivalent to CFRP_CMS-->
+    <constant name="VXD_flex_thickness"    value="1.3*um"/>
+  </define>
+
+  <detectors>
+    <detector id="DetID_VXD" name="VXD" type="SiTrackerComposite_v03" vis="VXDVis" readout="VXDCollection" combineHits="true" insideTrackingVolume="true" printLevel="INFO">
+      <envelope>
+        <shape type="Assembly"/>
+      </envelope>
+
+      <type_flags type="DetType_TRACKER + DetType_BARREL + DetType_PIXEL "/>
+
+      <global sensitive_thickness="VXD_sensitive_thickness" support_thickness="VXD_support_thickness" sensor_length="VXD_sensor_length"
+              sensitive_mat="G4_Si" support_mat="G4_C" sensitive_threshold_KeV="64*keV"  />
+      <display ladder="SeeThrough" support="VXDSupportVis" flex="VXDFlexVis" sens_env="SeeThrough" sens="GrayVis" deadsensor="GreenVis" deadwire="RedVis"/>
+
+      <shell rmin="70*mm" rmax="70.5*mm" zhalf="510*mm" material="CFRP_M55J" vis="LightGrayVis"/>
+
+      <layer id="0" phi0="0" isBent="true">
+	<module offset="0" phi="0" radius="11.06254*mm" nx="48" ny="4" backbone="VXD_sensor_backbone" switches="VXD_sensor_switches"
+		bias="VXD_sensor_bias" periphery="VXD_sensor_periphery" mechanical_gap="0*mm" material="G4_Si">
+          <sensor thickness="50*um" width="8.409*mm" length="3.296*mm" material="G4_Si" vis="VXDVis"/>
+          <flex vis="GrayVis">
+            <!--slice thickness="0.4*um" material="G4_Al"/-->
+            <slice thickness="VXD_flex_thickness+57.3*um" material="CFRP_CMS"/>
+          </flex>
+          <readout thickness="50*um" width="4.155*mm" material="Kapton" vis="RedVis"/>
+	  <driver thickness="50*um" width="1.385*mm" material="Kapton" vis="BlueVis"/>
+        </module>
+
+	<module offset="0" phi="180*degree" radius="11.06254*mm" nx="48" ny="4" backbone="VXD_sensor_backbone" switches="VXD_sensor_switches"
+		bias="VXD_sensor_bias" periphery="VXD_sensor_periphery" mechanical_gap="0*mm" material="G4_Si">
+          <sensor thickness="50*um" width="8.409*mm" length="3.296*mm" material="G4_Si" vis="VXDVis"/>
+          <flex vis="GrayVis">
+            <!--slice thickness="0.4*um" material="G4_Al"/-->
+            <slice thickness="VXD_flex_thickness+57.3*um" material="CFRP_CMS"/>
+          </flex>
+          <readout thickness="50*um" width="4.155*mm" material="Kapton" vis="RedVis"/>
+          <driver thickness="50*um" width="1.385*mm" material="Kapton" vis="BlueVis"/>
+        </module>
+      </layer>
+
+      <layer id="1" phi0="11.4375*degree" isBent="true">
+	<module offset="0" phi="0" radius="16.56198*mm" nx="72" ny="6" backbone="VXD_sensor_backbone" switches="VXD_sensor_switches"
+		bias="VXD_sensor_bias" periphery="VXD_sensor_periphery" mechanical_gap="0.5*mm" material="G4_Si">
+          <sensor thickness="50*um" width="8.409*mm" length="3.296*mm" material="G4_Si" vis="VXDVis"/>
+          <flex vis="GrayVis">
+            <!--slice thickness="0.4*um" material="G4_Al"/-->
+            <slice thickness="VXD_flex_thickness+33.7*um" material="CFRP_CMS"/>
+          </flex>
+          <readout thickness="50*um" width="4.155*mm" material="Kapton" vis="RedVis"/>
+          <driver thickness="50*um" width="1.385*mm" material="Kapton" vis="BlueVis"/>
+        </module>
+
+        <module offset="0" phi="180*degree" radius="16.56198*mm" nx="72" ny="6" backbone="VXD_sensor_backbone" switches="VXD_sensor_switches"
+		bias="VXD_sensor_bias" periphery="VXD_sensor_periphery" mechanical_gap="0.5*mm" material="G4_Si">
+          <sensor thickness="50*um" width="8.409*mm" length="3.296*mm" material="G4_Si" vis="VXDVis"/>
+          <flex vis="GrayVis">
+            <!--slice thickness="0.4*um" material="G4_Al"/-->
+            <slice thickness="VXD_flex_thickness+33.7*um" material="CFRP_CMS"/>
+          </flex>
+          <readout thickness="50*um" width="4.155*mm" material="Kapton" vis="RedVis"/>
+          <driver thickness="50*um" width="1.385*mm" material="Kapton" vis="BlueVis"/>
+        </module>
+      </layer>
+
+      <layer id="2" phi0="-1.6875*degree" isBent="true">
+	<module offset="0" phi="0" radius="22.06142*mm" nx="96" ny="8" backbone="VXD_sensor_backbone" switches="VXD_sensor_switches"
+		bias="VXD_sensor_bias" periphery="VXD_sensor_periphery" mechanical_gap="0.5*mm" material="G4_Si">
+          <sensor thickness="50*um" width="8.409*mm" length="3.296*mm" material="G4_Si" vis="VXDVis"/>
+	  <flex vis="GrayVis">
+            <!--slice thickness="0.4*um" material="G4_Al"/-->
+            <slice thickness="VXD_flex_thickness+31.8*um" material="CFRP_CMS"/>
+          </flex>
+          <readout thickness="50*um" width="4.155*mm" material="Kapton" vis="RedVis"/>
+          <driver thickness="50*um" width="4.155*mm" material="Kapton" vis="BlueVis"/>
+        </module>
+
+        <module offset="0" phi="180*degree" radius="22.06142*mm" nx="96" ny="8" backbone="VXD_sensor_backbone" switches="VXD_sensor_switches"
+		bias="VXD_sensor_bias" periphery="VXD_sensor_periphery" mechanical_gap="0.5*mm" material="G4_Si">
+          <sensor thickness="50*um" width="8.409*mm" length="3.296*mm" material="G4_Si" vis="VXDVis"/>
+          <flex vis="GrayVis">
+            <!--slice thickness="0.4*um" material="G4_Al"/-->
+            <slice thickness="VXD_flex_thickness+31.8*um" material="CFRP_CMS"/>
+          </flex>
+          <readout thickness="50*um" width="4.155*mm" material="Kapton" vis="RedVis"/>
+          <driver thickness="50*um" width="4.155*mm" material="Kapton" vis="BlueVis"/>
+        </module>
+      </layer>
+
+      <layer id="3" phi0="-6.75*degree" isBent="true">
+	<module offset="0" phi="0" radius="27.56086*mm" nx="120" ny="10" backbone="VXD_sensor_backbone" switches="VXD_sensor_switches"
+		bias="VXD_sensor_bias" periphery="VXD_sensor_periphery" mechanical_gap="0.5*mm" material="G4_Si">
+          <sensor thickness="50*um" width="8.409*mm" length="3.296*mm" material="G4_Si" vis="VXDVis"/>
+          <flex vis="GrayVis">
+            <!--slice thickness="0.4*um" material="G4_Al"/-->
+            <slice thickness="VXD_flex_thickness+40*um" material="CFRP_CMS"/>
+          </flex>
+          <readout thickness="50*um" width="4.155*mm" material="Kapton" vis="RedVis"/>
+          <driver thickness="50*um" width="4.155*mm" material="Kapton" vis="BlueVis"/>
+        </module>
+
+        <module offset="0" phi="180*degree" radius="27.56086*mm" nx="120" ny="10" backbone="VXD_sensor_backbone" switches="VXD_sensor_switches"
+		bias="VXD_sensor_bias" periphery="VXD_sensor_periphery" mechanical_gap="0.5*mm" material="G4_Si">
+          <sensor thickness="50*um" width="8.409*mm" length="3.296*mm" material="G4_Si" vis="VXDVis"/>
+          <flex vis="GrayVis">
+	    <!--slice thickness="0.4*um" material="G4_Al"/-->
+            <slice thickness="VXD_flex_thickness+40*um" material="CFRP_CMS"/>
+          </flex>
+          <readout thickness="50*um" width="4.155*mm" material="Kapton" vis="RedVis"/>
+          <driver thickness="50*um" width="4.155*mm" material="Kapton" vis="BlueVis"/>
+        </module>
+      </layer>
+
+      <layer id="4" support_rmin="39.5*mm" rotate="13.5*degree" phi0="13.5*degree" n_ladders="24" n_sensors_per_side="0">
+        <ladder isDoubleSided="true">
+          <ladderSupport height="3.1988*mm" length="VXD_ladder_length" thickness="370*um" width="VXD_ladder_width" mat="CFRP_CMS"/>
+          <flex>
+            <slice length="VXD_ladder_length" thickness="12.5*um" width="VXD_ladder_flex_width" mat="Acrylicglue"/> <!--glue between flex and sensor/support-->
+            <slice length="VXD_ladder_length" thickness="12.5*um" width="VXD_ladder_flex_width" mat="Kapton"/>
+            <slice length="VXD_ladder_length" thickness="12.5*um" width="VXD_ladder_flex_width" mat="Acrylicglue"/>
+            <slice length="VXD_ladder_length" thickness=" 8.0*um" width="VXD_ladder_flex_width" mat="G4_Al"/>
+            <slice length="VXD_ladder_length" thickness="13.0*um" width="VXD_ladder_flex_width" mat="Kapton"/>
+            <slice length="VXD_ladder_length" thickness="12.5*um" width="VXD_ladder_flex_width" mat="Acrylicglue"/>
+            <slice length="VXD_ladder_length" thickness=" 8.0*um" width="VXD_ladder_flex_width" mat="G4_Al"/>
+            <slice length="VXD_ladder_length" thickness="13.0*um" width="VXD_ladder_flex_width" mat="Kapton"/>
+            <slice length="VXD_ladder_length" thickness="12.5*um" width="VXD_ladder_flex_width" mat="Acrylicglue"/>
+            <slice length="VXD_ladder_length" thickness="12.0*um" width="VXD_ladder_flex_width" mat="G4_Al"/>
+            <slice length="VXD_ladder_length" thickness="25.0*um" width="VXD_ladder_flex_width" mat="Kapton"/>
+            <slice length="VXD_ladder_length" thickness="12.0*um" width="VXD_ladder_flex_width" mat="G4_Al"/>
+            <slice length="VXD_ladder_length" thickness="12.5*um" width="VXD_ladder_flex_width" mat="Acrylicglue"/>
+            <slice length="VXD_ladder_length" thickness="13.0*um" width="VXD_ladder_flex_width" mat="Kapton"/>
+            <slice length="VXD_ladder_length" thickness=" 8.0*um" width="VXD_ladder_flex_width" mat="G4_Al"/>
+            <slice length="VXD_ladder_length" thickness="12.5*um" width="VXD_ladder_flex_width" mat="Acrylicglue"/>
+            <slice length="VXD_ladder_length" thickness="13.0*um" width="VXD_ladder_flex_width" mat="Kapton"/>
+            <slice length="VXD_ladder_length" thickness=" 8.0*um" width="VXD_ladder_flex_width" mat="G4_Al"/>
+            <slice length="VXD_ladder_length" thickness="12.5*um" width="VXD_ladder_flex_width" mat="Acrylicglue"/>
+            <slice length="VXD_ladder_length" thickness="12.5*um" width="VXD_ladder_flex_width" mat="Kapton"/>
+            <slice length="VXD_ladder_length" thickness="12.5*um" width="VXD_ladder_flex_width" mat="Acrylicglue"/> <!--glue between flex and sensor/support-->
+          </flex>
+          <sensor n_sensors="26" gap="0.1*mm" thickness="50*um" active_length="25.6*mm" active_width="12.8*mm" dead_width="2*mm" sensor_mat="G4_Si"
+                  deadwire_length="(26*(25.6+0.1)-0.1)*mm" deadwire_width="2.5*mm" deadwire_thickness="(50/10)*um" deadwire_mat="G4_Al"/>
+        </ladder>
+      </layer>
+    </detector>
+  </detectors>
+  
+  <readouts>
+    <readout name="VXDCollection">
+      <!--segmentation type="CartesianGridYZ" grid_size_y="0.016*mm" grid_size_z="0.016*mm"/>
+      <id>system:5,side:-2,layer:9,module:8,sensor:32:8,y:-12,z:-12</id-->
+      <!-- old tracking not use senor id: 24-31 bit-->
+      <id>system:5,side:-2,layer:9,module:8,sensor:32:16</id>
+    </readout>
+  </readouts>
+</lccdd>
diff --git a/Detector/DetCRD/compact/CRD_common_v02/materials.xml b/Detector/DetCRD/compact/CRD_common_v02/materials.xml
index 0a89e4af..69b68c28 100644
--- a/Detector/DetCRD/compact/CRD_common_v02/materials.xml
+++ b/Detector/DetCRD/compact/CRD_common_v02/materials.xml
@@ -704,6 +704,13 @@
      <fraction n="0.29" ref="CH2OCN" />
    </material>
 
+   <material name="CFRP_M55J">
+     <D type="density" value="1.91" unit="g/cm3" />
+     <!--total 99% of C, 0.8% in CH2OCN-->
+     <fraction n="0.982" ref="C" />
+     <fraction n="0.018" ref="CH2OCN" />
+   </material>
+
    <material name="Acrylicglue">
      <D type="density" value="1.16" unit="g/cm3" />
      <composite n="5" ref="C" />
diff --git a/Detector/DetCRD/compact/TDR_o1_v01/TDR_o1_v01-onlyTracker.xml b/Detector/DetCRD/compact/TDR_o1_v01/TDR_o1_v01-onlyTracker.xml
index 777e636f..3bace007 100644
--- a/Detector/DetCRD/compact/TDR_o1_v01/TDR_o1_v01-onlyTracker.xml
+++ b/Detector/DetCRD/compact/TDR_o1_v01/TDR_o1_v01-onlyTracker.xml
@@ -27,21 +27,12 @@
   <include ref="./TDR_Dimensions_v01_01.xml"/>
 
   <include ref="../CRD_common_v02/Beampipe_v01_07.xml"/>
-  <!--preliminary vertex and tracker, to update/-->
-  <!--include ref="../CRD_common_v02/VXD_StaggeredLadder_v02_01.xml"/-->
-  <include ref="../CRD_common_v02/VXD_Composite_v01_03.xml"/>
-  <!--include ref="../CRD_common_v02/FTD_SkewRing_v01_09.xml"/-->
-  <!--include ref="../CRD_common_v02/SIT_SimplePixel_v01_04.xml"/-->
-  <!--include ref="../CRD_common_v02/SIT_StaggeredStave_v02.xml"/-->
+  <include ref="../CRD_common_v02/VXD_Composite_v01_04.xml"/>
   <include ref="../CRD_common_v02/ITK_StaggeredStave_v03_01.xml"/>
   <include ref="../CRD_common_v02/ITK_EndCap_v01.xml"/>
-  <!--include ref="../CRD_common_v01/TPC_Simple_v10_02.xml"/-->
   <!-- use 10 rows clustering version-->
   <include ref="../CRD_common_v02/TPC_ModularEndcap_o1_v02.xml"/>
-  <!--include ref="../CRD_common_v01/SET_SimplePixel_v01_01.xml"/-->
-  <!--include ref="../CRD_common_v01/OTKBarrel_v01_01.xml"/-->
   <include ref="../CRD_common_v01/OTKBarrel_v02.xml"/>
-  <!--include ref="../CRD_common_v01/OTKEndcap_v01_01.xml"/-->
   <include ref="../CRD_common_v01/OTKEndcap_v02.xml"/>
 
   <fields>
diff --git a/Detector/DetCRD/compact/TDR_o1_v01/TDR_o1_v01.xml b/Detector/DetCRD/compact/TDR_o1_v01/TDR_o1_v01.xml
index b6d1bb89..33ee447a 100644
--- a/Detector/DetCRD/compact/TDR_o1_v01/TDR_o1_v01.xml
+++ b/Detector/DetCRD/compact/TDR_o1_v01/TDR_o1_v01.xml
@@ -28,21 +28,13 @@
   <include ref="./TDR_Dimensions_v01_01.xml"/>
 
   <include ref="../CRD_common_v02/Beampipe_v01_07.xml"/>
-  <!--preliminary vertex and tracker, to update/-->
-  <!--include ref="../CRD_common_v02/VXD_StaggeredLadder_v02_01.xml"/-->
-  <include ref="../CRD_common_v02/VXD_Composite_v01_03.xml"/>
-  <!--include ref="../CRD_common_v02/FTD_SkewRing_v01_07.xml"/-->
-  <!--include ref="../CRD_common_v02/SIT_SimplePixel_v01_04.xml"/-->
-  <!--include ref="../CRD_common_v02/SIT_StaggeredStave_v02.xml"/-->
+
+  <include ref="../CRD_common_v02/VXD_Composite_v01_04.xml"/>
   <include ref="../CRD_common_v02/ITK_StaggeredStave_v03_01.xml"/>
   <include ref="../CRD_common_v02/ITK_EndCap_v01.xml"/>
-  <!--include ref="../CRD_common_v01/TPC_Simple_v10_02.xml"/-->
   <!-- use 10 rows clustering version-->
   <include ref="../CRD_common_v02/TPC_ModularEndcap_o1_v02.xml"/>
-  <!--include ref="../CRD_common_v01/SET_SimplePixel_v01_01.xml"/-->
-  <!--include ref="../CRD_common_v01/OTKBarrel_v01_01.xml"/-->
   <include ref="../CRD_common_v01/OTKBarrel_v02.xml"/>
-  <!--include ref="../CRD_common_v01/OTKEndcap_v01_01.xml"/-->
   <include ref="../CRD_common_v01/OTKEndcap_v02.xml"/>
 
   <include ref="../CRD_common_v01/Ecal_Crystal_Barrel_v02_02.xml"/>
@@ -50,13 +42,10 @@
   <include ref="../CRD_common_v01/SHcalGlass_Barrel_v05.xml"/>
   <include ref="../CRD_common_v01/SHcalGlass_Endcaps_v01.xml"/>
 
-  <!--Lumical to update-->
+  <!--Lumical-->
   <include ref="../CRD_common_v01/Lumical_o1_v01.xml"/>
-  <!--preliminary Magnet, to update/-->
+  <!--Magnet/-->
   <include ref="../CRD_common_v02/Coil_Simple_v01_03.xml"/>
-  <!--preliminary Muon, obselete/-->
-  <!--include ref="../CRD_common_v02/Yoke_Polyhedra_Barrel_v01_01.xml"/>
-  <include ref="../CRD_common_v02/Yoke_Polyhedra_Endcaps_v01_01.xml"/-->
  
   <!--muon detector-->
   <include ref="../CRD_common_v01/Muon_Barrel_v01_04.xml"/>
-- 
GitLab