diff --git a/Detector/DetCEPCv4/compact/tpc10_01.xml b/Detector/DetCEPCv4/compact/tpc10_01.xml
index cef34c70fe00ce6688ef56683195c92355838388..80ba7721bfa05724f35bf6da4d246e5410d97eb8 100644
--- a/Detector/DetCEPCv4/compact/tpc10_01.xml
+++ b/Detector/DetCEPCv4/compact/tpc10_01.xml
@@ -6,7 +6,7 @@
 
   <detectors>
 
-    <detector name="TPC" type="TPC10" vis="TPCVis" id="ILDDetID_TPC" limits="Tracker_limits" readout="TPCCollection" insideTrackingVolume="true">
+    <detector name="TPC" type="TPC10" vis="TPCVis" id="ILDDetID_TPC" limits="TPC_limits" readout="TPCCollection" insideTrackingVolume="true">
 
 
       <envelope vis="ILD_TPCVis">
diff --git a/Detector/DetCEPCv4/src/tracker/TPC10_geo.cpp b/Detector/DetCEPCv4/src/tracker/TPC10_geo.cpp
index 888aff300fa10286f78085884436f70a8da6a029..50d28c2e8b9af697bdb7d5ff16e1ea6779c83140 100644
--- a/Detector/DetCEPCv4/src/tracker/TPC10_geo.cpp
+++ b/Detector/DetCEPCv4/src/tracker/TPC10_geo.cpp
@@ -26,7 +26,7 @@ using dd4hep::rec::SurfaceType;
 using dd4hep::rec::volSurfaceList;
 using dd4hep::rec::VolPlane;
 using dd4hep::rec::FixedPadSizeTPCData;
-
+using dd4hep::rec::ConicalSupportData;
 /** Construction of TPC detector, ported from Mokka driver TPC10.cc
  * Mokka History:
  * - modified version of TPC driver by Ties Behnke
@@ -620,9 +620,27 @@ Material endplate_MaterialMix = theDetector.material( "TPC_endplate_mix" ) ;
   tpcData->driftLength = dz_Sensitive + dz_Cathode/2.0; // SJA: cathode has to be added as the sensitive region does not start at 0.00    
   tpcData->zMinReadout = dz_Cathode/2.0; 
   //  tpcData.z_anode = dzTotal - dz_Endplate; // the edge of the readout terminating the drift volume
-  
-  tpc.addExtension< FixedPadSizeTPCData >( tpcData )   ; 
-
+  ConicalSupportData* supportData = new ConicalSupportData;
+  ConicalSupportData::Section section0;
+  section0.rInner = rMin_GasVolume;
+  section0.rOuter = rMax_GasVolume;
+  section0.zPos   = dz_GasVolume - dz_Readout;
+
+  ConicalSupportData::Section section1;
+  section1.rInner = rMin_GasVolume;
+  section1.rOuter = rMax_GasVolume;
+  section1.zPos   = dz_GasVolume;
+
+  ConicalSupportData::Section section2;
+  section2.rInner = rInner;
+  section2.rOuter = rOuter;
+  section2.zPos   = dz_GasVolume + dz_Endplate;
+  supportData->sections.push_back(section0);
+  supportData->sections.push_back(section1);
+  supportData->sections.push_back(section2);
+
+  tpc.addExtension< FixedPadSizeTPCData >( tpcData )   ;
+  tpc.addExtension< ConicalSupportData > (supportData);
   //######################################################################################################################################################################
   
   
diff --git a/Detector/DetCRD/compact/CRD_common_v01/TPC_Simple_v10_02.xml b/Detector/DetCRD/compact/CRD_common_v01/TPC_Simple_v10_02.xml
index 8b2ba26d9503ca770bff18c753b296d9ca4f568b..af527ca6b5d7e8a6e3fec04fef3c9b2a264b466f 100644
--- a/Detector/DetCRD/compact/CRD_common_v01/TPC_Simple_v10_02.xml
+++ b/Detector/DetCRD/compact/CRD_common_v01/TPC_Simple_v10_02.xml
@@ -1,6 +1,6 @@
 <lccdd>
   <detectors>
-    <detector name="TPC" type="TPC10" vis="TPCVis" id="DetID_TPC" limits="tracker_limits" readout="TPCCollection" insideTrackingVolume="true">
+    <detector name="TPC" type="TPC10" vis="TPCVis" id="DetID_TPC" limits="tpc_limits" readout="TPCCollection" insideTrackingVolume="true">
       <envelope vis="TPCVis">
         <shape type="Tube" rmin="TPC_inner_radius" rmax="TPC_outer_radius" dz="TPC_half_length" material="Air"/>
       </envelope>
diff --git a/Detector/DetCRD/compact/CRD_common_v02/Beampipe_v01_03.xml b/Detector/DetCRD/compact/CRD_common_v02/Beampipe_v01_03.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c1217f02068835878eaf590685071aaf3b2ad04b
--- /dev/null
+++ b/Detector/DetCRD/compact/CRD_common_v02/Beampipe_v01_03.xml
@@ -0,0 +1,206 @@
+<lccdd>
+  <info name="CRD" title="CRD Beam pipe" author="Chengdong Fu" url="no" status="development" version="1.0">
+    <comment>A beampipe for CRD</comment>
+  </info>
+
+  <display>
+    <vis name="TubeVis"   alpha="0.1" r="1.0" g="0.7"  b="0.5"   showDaughters="true"  visible="true"/>
+    <vis name="VacVis"   alpha="1.0" r="0.0" g="0.0"  b="0.0"   showDaughters="true"  visible="false"/>
+  </display>
+
+  <define>
+    <constant name="BeamPipe_Iron_thickness"       value="2.5*mm"/>
+  </define>
+
+  <detectors>        
+    <detector name="BeamPipe" type="CRDBeamPipe_v01" vis="VacVis">
+      <parameter crossingangle="CrossingAngle" />
+      <envelope>
+	<shape type="Assembly"/>
+      </envelope>
+
+      <section type ="Center" name="IPInnerTube" zStart="0" zEnd="BeamPipe_CentralBe_zmax" rStart="0">
+	<layer material="beam" thickness="BeamPipe_Central_inner_radius" vis="VacVis"/>
+	<layer material="G4_Be" thickness="BeamPipe_Be_inner_thickness" vis="TubeVis"/>
+	<layer material="G4_PARAFFIN" thickness="BeamPipe_Cooling_thickness" vis="GrayVis"/>
+	<layer material="G4_Be" thickness="BeamPipe_Be_outer_thickness" vis="TubeVis"/>
+      </section>
+      <section type="Center" name="IPAl" zStart="BeamPipe_CentralBe_zmax" zEnd="BeamPipe_CentralAl_zmax" rStart="0">
+	<layer material="beam" thickness="BeamPipe_Central_inner_radius" vis="VacVis"/>
+	<layer material="G4_Al" thickness="BeamPipe_Al_thickness" vis="TubeVis"/>
+      </section>
+      <section type="Waist" name="Waist1st" zStart="BeamPipe_CentralAl_zmax" zEnd="BeamPipe_ExpandAl_zmax" rStart="BeamPipe_Central_inner_radius" size="BeamPipe_FirstExpand_width">
+	<layer material="G4_Al" thickness="BeamPipe_Al_thickness" vis="TubeVis"/>
+      </section>
+      <section type="Runway" name="Waist2nd" zStart="BeamPipe_ExpandAl_zmax" zEnd="BeamPipe_Linker_zmin" rStart="BeamPipe_Central_inner_radius" size="BeamPipe_FirstExpand_width">
+        <layer material="G4_Al" thickness="BeamPipe_Al_thickness" vis="TubeVis"/>
+      </section>
+      <section type="Runway" name="Waist3rd" zStart="BeamPipe_Linker_zmin" zEnd="BeamPipe_Linker_zmax" rStart="BeamPipe_Central_inner_radius" size="BeamPipe_FirstExpand_width">
+        <layer material="G4_Cu" thickness="BeamPipe_ThinCu_thickness" vis="TubeVis"/>
+      </section>
+      <section type="Runway" name="Waist4th" zStart="BeamPipe_Linker_zmax" zEnd="BeamPipe_Waist_zmax" rStart="BeamPipe_Central_inner_radius" size="BeamPipe_FirstExpand_width"
+	       shift="BeamPipe_SecondExpand_width-BeamPipe_FirstExpand_width">
+        <layer material="G4_Cu" thickness="BeamPipe_ThinCu_thickness" vis="TubeVis"/>
+      </section>
+      <section type="Crotch" name="Fork" zStart="BeamPipe_Waist_zmax" zEnd="BeamPipe_Crotch_zmax"
+	       rStart="BeamPipe_Central_inner_radius" rEnd="BeamPipe_Central_inner_radius" size="BeamPipe_SecondExpand_width">
+        <layer material="G4_Cu" thickness="BeamPipe_ThinCu_thickness" vis="TubeVis"/>
+      </section>
+      <section type="Legs" name="FirstDoublePipe" zStart="BeamPipe_Crotch_zmax" zEnd="BeamPipe_FirstSeparated_zmax" rStart="0">
+	<layer material="beam" thickness="BeamPipe_Fork_inner_radius" vis="VacVis"/>
+	<layer material="G4_Cu" thickness="BeamPipe_ThinCu_thickness" vis="TubeVis"/>
+      </section>
+      <section type="Legs" name="BeforeMask" zStart="BeamPipe_FirstSeparated_zmax" zEnd="BeamPipe_Mask_zmin" rStart="0">
+        <layer material="beam" thickness="BeamPipe_Fork_inner_radius" vis="VacVis"/>
+        <layer material="G4_Cu" thickness="BeamPipe_Cu_thickness" vis="TubeVis"/>
+      </section>
+      <section type="Legs" name="Mask" zStart="BeamPipe_Mask_zmin" zEnd="BeamPipe_Mask_zmax" rStart="0">
+        <layer material="beam" thickness="BeamPipe_Mask_inner_radius" vis="VacVis"/>
+        <layer material="G4_Cu" thickness="BeamPipe_Cu_thickness+BeamPipe_Fork_inner_radius-BeamPipe_Mask_inner_radius" vis="TubeVis"/>
+      </section>
+      <section type="Legs" name="SecondDoublePipe" zStart="BeamPipe_Mask_zmax" zEnd="BeamPipe_Q1a_zmin" rStart="0">
+        <layer material="beam" thickness="BeamPipe_Fork_inner_radius" vis="VacVis"/>
+        <layer material="G4_Cu" thickness="BeamPipe_Cu_thickness" vis="TubeVis"/>
+      </section>
+      <section type="Legs" name="Q1a" zStart="BeamPipe_Q1a_zmin" zEnd="BeamPipe_Q1a_zmax" rStart="0">
+        <layer material="beam" thickness="BeamPipe_Q1a_inner_radius" vis="VacVis"/>
+	<layer material="G4_Cu" thickness="BeamPipe_Cu_thickness" vis="TubeVis"/>
+        <layer material="stainless_steel" thickness="BeamPipe_Iron_thickness" vis="TubeVis"/>
+        <layer material="CrZrCu18150" thickness="6.0*mm" vis="MagentaVis"/>
+        <layer material="stainless_steel" thickness="8.0*mm" vis="ShellVis"/>
+      </section>
+      <section type="Legs" name="Q1Linker" zStart="BeamPipe_Q1a_zmax" zEnd="BeamPipe_Q1b_zmin" rStart="0">
+        <layer material="beam" thickness="BeamPipe_Q1a_inner_radius" thicknessEnd="BeamPipe_Q1b_inner_radius" vis="VacVis"/>
+        <layer material="G4_Cu" thickness="BeamPipe_Cu_thickness" vis="TubeVis"/>
+      </section>
+      <section type="Legs" name="Q1b" zStart="BeamPipe_Q1b_zmin" zEnd="BeamPipe_Q1b_zmax" rStart="0">
+        <layer material="beam" thickness="BeamPipe_Q1b_inner_radius" vis="VacVis"/>
+	<layer material="G4_Cu" thickness="BeamPipe_Cu_thickness" vis="TubeVis"/>
+        <layer material="stainless_steel" thickness="BeamPipe_Iron_thickness" vis="TubeVis"/>
+        <layer material="CrZrCu18150" thickness="6.0*mm" vis="MagentaVis"/>
+        <layer material="stainless_steel" thickness="8.0*mm" vis="ShellVis"/>
+      </section>
+      <section type="Legs" name="QF1Linker" zStart="BeamPipe_Q1b_zmax" zEnd="BeamPipe_QF1_zmin" rStart="0">
+        <layer material="beam" thickness="BeamPipe_Q1b_inner_radius" thicknessEnd="BeamPipe_QF1_inner_radius" vis="VacVis"/>
+        <layer material="G4_Cu" thickness="BeamPipe_Cu_thickness" vis="TubeVis"/>
+      </section>
+      <section type="Legs" name="QF1" zStart="BeamPipe_QF1_zmin" zEnd="BeamPipe_QF1_zmax" rStart="0">
+        <layer material="beam" thickness="BeamPipe_QF1_inner_radius" vis="VacVis"/>
+	<layer material="G4_Cu" thickness="BeamPipe_Cu_thickness" vis="TubeVis"/>
+        <layer material="stainless_steel" thickness="BeamPipe_Iron_thickness" vis="TubeVis"/>
+        <layer material="CrZrCu18150" thickness="6.0*mm" vis="MagentaVis"/>
+        <layer material="stainless_steel" thickness="8.0*mm" vis="ShellVis"/>
+      </section>
+      <section type="Legs" name="Farest" zStart="BeamPipe_QF1_zmax" zEnd="BeamPipe_end_z" rStart="0">
+        <layer material="beam" thickness="BeamPipe_QF1_inner_radius" vis="VacVis"/>
+        <layer material="G4_Cu" thickness="BeamPipe_Cu_thickness" vis="TubeVis"/>
+      </section>
+
+      <!-- Magnets and their cooling, support -->
+      <section type="CenterSide" name="AntiSolenoid1" zStart="1160*mm" zEnd="1900*mm" rStart="90*mm">
+        <layer material="CrZrCu18150" thickness="20*mm" vis="MagentaVis"/>
+      </section>
+      <section type="CenterSide" name="AntiSolenoid2" zStart="1930*mm" zEnd="3964*mm" rStart="120*mm">
+        <layer material="CrZrCu18150" thickness="10*mm" vis="MagentaVis"/>
+      </section>
+      <section type="CenterSide" name="AntiSolenoid3" zStart="3970*mm" zEnd="7000*mm" rStart="185*mm">
+        <layer material="CrZrCu18150" thickness="10*mm" vis="MagentaVis"/>
+      </section>
+      <section type="CenterSide" name="MagnetShell_Front" zStart="1110*mm" zEnd="1115*mm" rStart="50.0*mm">
+        <layer material="stainless_steel" thickness="91.25*mm" vis="ShellVis"/>
+	<layer material="G4_W" thickness="10*mm" vis="ShellVis"/>
+      </section>
+      <section type="CenterSide" name="MagnetShell_FrontSide" zStart="1115*mm" zEnd="1900*mm" rStart="130.75*mm" rEnd="175*mm">
+        <layer material="stainless_steel" thickness="10.5*mm" thicknessEnd="65*mm" vis="ShellVis"/>
+	<layer material="G4_W" thickness="10*mm" vis="ShellVis"/>
+      </section>
+      <section type="CenterSide" name="MagnetShell_CenterSide" zStart="1900*mm" zEnd="3800*mm" rStart="175*mm">
+        <layer material="stainless_steel" thickness="65*mm" vis="ShellVis"/>
+	<layer material="G4_W" thickness="10*mm" vis="ShellVis"/>
+      </section>
+      <section type="CenterSide" name="MagnetShell_Linker" zStart="3800*mm" zEnd="3910*mm" rStart="175*mm">
+        <layer material="stainless_steel" thickness="135*mm" vis="ShellVis"/>
+	<layer material="G4_W" thickness="10*mm" vis="ShellVis"/>
+      </section>
+      <section type="CenterSide" name="MagnetShell_RearSide" zStart="3910*mm" zEnd="7160*mm" rStart="240*mm">
+        <layer material="stainless_steel" thickness="70*mm" vis="ShellVis"/>
+	<layer material="G4_W" thickness="10*mm" vis="ShellVis"/>
+      </section>
+      <section type="CenterSide" name="MagnetSupport_1" zStart="1130*mm" zEnd="1135*mm" rStart="75*mm">
+        <layer material="stainless_steel" thickness="50*mm" vis="ShellVis"/>
+      </section>
+      <section type="CenterSide" name="MagnetSupport_2i" zStart="1135*mm" zEnd="1925*mm" rStart="75*mm">
+        <layer material="stainless_steel" thickness="5*mm" vis="ShellVis"/>
+      </section>
+      <section type="CenterSide" name="MagnetSupport_2o" zStart="1135*mm" zEnd="1900*mm" rStart="120*mm">
+        <layer material="stainless_steel" thickness="5*mm" vis="ShellVis"/>
+      </section>
+      <section type="CenterSide" name="MagnetSupport_3l" zStart="1900*mm" zEnd="1905*mm" rStart="120*mm">
+        <layer material="stainless_steel" thickness="25*mm" vis="ShellVis"/>
+      </section>
+      <section type="CenterSide" name="MagnetSupport_3r" zStart="1925*mm" zEnd="1930*mm" rStart="75*mm">
+        <layer material="stainless_steel" thickness="35*mm" vis="ShellVis"/>
+      </section>
+      <section type="CenterSide" name="MagnetSupport_4i" zStart="1930*mm" zEnd="4000*mm" rStart="105*mm">
+        <layer material="stainless_steel" thickness="5*mm" vis="ShellVis"/>
+      </section>
+      <section type="CenterSide" name="MagnetSupport_4o" zStart="1905*mm" zEnd="3940*mm" rStart="140*mm">
+        <layer material="stainless_steel" thickness="5*mm" vis="ShellVis"/>
+      </section>
+      <section type="CenterSide" name="MagnetSupport_5l" zStart="3940*mm" zEnd="3945*mm" rStart="140*mm">
+        <layer material="stainless_steel" thickness="70*mm" vis="ShellVis"/>
+      </section>
+      <section type="CenterSide" name="MagnetSupport_5r" zStart="4000*mm" zEnd="4005*mm" rStart="105*mm">
+        <layer material="stainless_steel" thickness="70*mm" vis="ShellVis"/>
+      </section>
+      <section type="CenterSide" name="MagnetSupport_6i" zStart="4005*mm" zEnd="7050*mm" rStart="170*mm">
+        <layer material="stainless_steel" thickness="5*mm" vis="ShellVis"/>
+      </section>
+      <section type="CenterSide" name="MagnetSupport_6o" zStart="3945*mm" zEnd="7050*mm" rStart="205*mm">
+        <layer material="stainless_steel" thickness="5*mm" vis="ShellVis"/>
+      </section>
+      <section type="CenterSide" name="MagnetSupport_7" zStart="7050*mm" zEnd="7055*mm" rStart="170*mm">
+        <layer material="stainless_steel" thickness="40*mm" vis="ShellVis"/>
+      </section>
+      <section type="CenterSide" name="MagnetCooling_1l" zStart="1135*mm" zEnd="1160*mm" rStart="80*mm">
+        <layer material="lHe" thickness="40*mm" vis="BlueVis"/>
+      </section>
+      <section type="CenterSide" name="MagnetCooling_1i" zStart="1160*mm" zEnd="1900*mm" rStart="80*mm">
+        <layer material="lHe" thickness="10*mm" vis="BlueVis"/>
+      </section>
+      <section type="CenterSide" name="MagnetCooling_1o" zStart="1160*mm" zEnd="1900*mm" rStart="110*mm">
+        <layer material="lHe" thickness="10*mm" vis="BlueVis"/>
+      </section>
+      <section type="CenterSide" name="MagnetCooling_1r" zStart="1900*mm" zEnd="1925*mm" rStart="80*mm">
+        <layer material="lHe" thickness="40*mm" vis="BlueVis"/>
+      </section>
+      <section type="CenterSide" name="MagnetCooling_2l" zStart="1905*mm" zEnd="1930*mm" rStart="120*mm">
+        <layer material="lHe" thickness="20*mm" vis="BlueVis"/>
+      </section>
+      <section type="CenterSide" name="MagnetCooling_2i" zStart="1925*mm" zEnd="3964*mm" rStart="110*mm">
+        <layer material="lHe" thickness="10*mm" vis="BlueVis"/>
+      </section>
+      <section type="CenterSide" name="MagnetCooling_2o" zStart="1930*mm" zEnd="3945*mm" rStart="130*mm">
+        <layer material="lHe" thickness="10*mm" vis="BlueVis"/>
+      </section>
+      <section type="CenterSide" name="MagnetCooling_2r1" zStart="3964*mm" zEnd="4000*mm" rStart="110*mm">
+        <layer material="lHe" thickness="65*mm" vis="BlueVis"/>
+      </section>
+      <section type="CenterSide" name="MagnetCooling_2r2" zStart="3945*mm" zEnd="3964*mm" rStart="130*mm">
+        <layer material="lHe" thickness="45*mm" vis="BlueVis"/>
+      </section>
+      <section type="CenterSide" name="MagnetCooling_3l" zStart="3945*mm" zEnd="3970*mm" rStart="175*mm">
+        <layer material="lHe" thickness="30*mm" vis="BlueVis"/>
+      </section>
+      <section type="CenterSide" name="MagnetCooling_3i" zStart="3970*mm" zEnd="7000*mm" rStart="175*mm">
+        <layer material="lHe" thickness="10*mm" vis="BlueVis"/>
+      </section>
+      <section type="CenterSide" name="MagnetCooling_3o" zStart="3970*mm" zEnd="7000*mm" rStart="195*mm">
+        <layer material="lHe" thickness="10*mm" vis="BlueVis"/>
+      </section>
+      <section type="CenterSide" name="MagnetCooling_3r" zStart="7000*mm" zEnd="7050*mm" rStart="175*mm">
+        <layer material="lHe" thickness="30*mm" vis="BlueVis"/>
+      </section>
+    </detector>
+  </detectors>        
+</lccdd>
diff --git a/Detector/DetCRD/compact/CRD_common_v02/FTD_SkewRing_v01_05.xml b/Detector/DetCRD/compact/CRD_common_v02/FTD_SkewRing_v01_05.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1cced282aa3d6e441dffc6a7e8fa647d9a97d695
--- /dev/null
+++ b/Detector/DetCRD/compact/CRD_common_v02/FTD_SkewRing_v01_05.xml
@@ -0,0 +1,55 @@
+<lccdd>
+  <define>
+    <constant name="SiliconThickness" value="0.2*mm"/>
+    <constant name="SupportThickness" value="1.4925*mm"/> <!--equivalent from carbon fiber to carbon/-->
+    <constant name="ModuleZGap"       value="2.0*mm"/>
+    <constant name="ModuleRPhiGap"    value="-10*mm"/>
+    <constant name="FTDPetalNumber"   value="16"/>
+  </define>
+
+  <detectors>
+    <detector id="DetID_FTD" name="FTD" type="SiTrackerSkewRing_v01" vis="FTDVis" readout="FTDCollection" insideTrackingVolume="true" reflect="true">
+      <envelope>
+	<shape type="Assembly"/>
+      </envelope>
+
+      <type_flags type="DetType_TRACKER +  DetType_ENDCAP  + DetType_PIXEL "/>
+
+      <reconstruction strip_width="0.05*mm" strip_length="92*mm" strip_pitch="0" strip_angle="0"/>
+
+      <layer id="0" z="SiTracker_endcap_z1" dz="0.5*ModuleZGap" inner_r="SiTracker_endcap_z1*tan(acos(Global_endcap_costheta))*cos(pi/FTDPetalNumber)" outer_r="SiTracker_endcap_outer_radius1"
+	     skew="acos(Global_endcap_costheta)" phi0="0" gap="ModuleRPhiGap" is_pixel="true" nmodules="FTDPetalNumber" vis="SeeThrough">
+	<component material="G4_Si"       thickness="SiliconThickness" vis="FTDSensitiveVis" sensitive="yes"/>
+	<component material="Carbon" thickness="SupportThickness" vis="FTDSupportVis"/>
+      </layer>
+      <layer id="1" z="SiTracker_endcap_z2" dz="0.5*ModuleZGap" inner_r="SiTracker_endcap_z2*tan(acos(Global_endcap_costheta))*cos(pi/FTDPetalNumber)" outer_r="SiTracker_endcap_outer_radius2"
+	     skew="acos(Global_endcap_costheta)" phi0="0" gap="ModuleRPhiGap" is_pixel="true" nmodules="FTDPetalNumber" vis="SeeThrough">
+        <component material="G4_Si"       thickness="SiliconThickness" vis="FTDSensitiveVis" sensitive="yes"/>
+        <component material="Carbon" thickness="SupportThickness" vis="FTDSupportVis"/>
+      </layer>
+      <layer id="2" z="SiTracker_endcap_z3" dz="0.5*ModuleZGap" inner_r="SiTracker_endcap_z3*tan(acos(Global_endcap_costheta))*cos(pi/FTDPetalNumber)" outer_r="SiTracker_endcap_outer_radius3"
+	     skew="acos(Global_endcap_costheta)" phi0="0" gap="ModuleRPhiGap" is_pixel="true" nmodules="FTDPetalNumber" vis="SeeThrough">
+        <component material="G4_Si"       thickness="SiliconThickness" vis="FTDSensitiveVis" sensitive="yes"/>
+        <component material="Carbon" thickness="SupportThickness" vis="FTDSupportVis"/>
+      </layer>
+      <layer id="3" z="SiTracker_endcap_z4" dz="0.5*ModuleZGap" inner_r="SiTracker_endcap_z4*tan(acos(Global_endcap_costheta))*cos(pi/FTDPetalNumber)" outer_r="SiTracker_endcap_outer_radius4"
+	     skew="acos(Global_endcap_costheta)" phi0="0" gap="ModuleRPhiGap" is_pixel="true" nmodules="FTDPetalNumber" vis="SeeThrough">
+        <component material="G4_Si"       thickness="SiliconThickness" vis="FTDSensitiveVis" sensitive="yes"/>
+        <component material="Carbon" thickness="SupportThickness" vis="FTDSupportVis"/>
+      </layer>
+      <layer id="4" z="SiTracker_endcap_z5" dz="0.5*ModuleZGap" inner_r="SiTracker_endcap_z5*tan(acos(Global_endcap_costheta))*cos(pi/FTDPetalNumber)" outer_r="SiTracker_endcap_outer_radius5"
+             phi0="0" gap="ModuleRPhiGap" is_pixel="true" nmodules="FTDPetalNumber" vis="SeeThrough">
+        <component material="G4_Si"       thickness="SiliconThickness" vis="FTDSensitiveVis" sensitive="yes"/>
+        <component material="Carbon" thickness="SupportThickness" vis="FTDSupportVis"/>
+      </layer>
+
+    </detector>
+  </detectors>
+
+  <readouts>
+    <readout name="FTDCollection">
+      <id>system:5,side:-2,layer:9,module:8,sensor:8</id>
+    </readout>
+  </readouts>
+
+</lccdd>
diff --git a/Detector/DetCRD/compact/CRD_common_v02/HcalEndcaps_Polyhedra_v01_01.xml b/Detector/DetCRD/compact/CRD_common_v02/HcalEndcaps_Polyhedra_v01_01.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f7b814f2dc8c87612d97507408a00a07535f905a
--- /dev/null
+++ b/Detector/DetCRD/compact/CRD_common_v02/HcalEndcaps_Polyhedra_v01_01.xml
@@ -0,0 +1,39 @@
+<lccdd>
+  <define>
+    <!--repeat in barrel and endcap-->
+    <constant name="Hcal_cell_size" value="40*mm"/>
+    <constant name="Hcal_nlayers" value="48"/>
+    <constant name="Hcal_radiator_thickness" value="9.9*mm"/>
+    <constant name="Hcal_scintillator_thickness" value="10.*mm"/>
+    <constant name="Hcal_pcb_thickness" value="3.2*mm"/>
+    <constant name="Hcal_esr_thickness" value="0.2*mm"/>
+    <constant name="Hcal_cassette_thickness" value="2.0*mm"/>
+    <constant name="Hcal_endcap_nlayers" value="Hcal_nlayers"/>
+  </define>
+
+  <detectors>
+    <detector name="HcalEndcap" type="DD4hep_PolyhedraEndcapCalorimeter2" id="DetID_HCAL_ENDCAP" readout="HcalEndcapsCollection" vis="SeeThrough">
+      <type_flags type=" DetType_CALORIMETER + DetType_ENDCAP + DetType_MUON " />
+
+      <dimensions numsides="Hcal_endcap_symmetry" rmin="Hcal_endcap_inner_radius" rmax="Hcal_endcap_outer_radius/cos(pi/Hcal_endcap_symmetry)"
+		  zmin="Hcal_endcap_zmin" />
+      <layer repeat="Hcal_endcap_nlayers" vis="GrayVis">
+	<slice material="Steel235"        thickness = "Hcal_radiator_thickness" vis="LightGrayVis" />
+	<slice material="stainless_steel" thickness = "Hcal_cassette_thickness" vis="CyanVis" />
+        <slice material="G4_ESR"          thickness = "Hcal_esr_thickness" vis="CyanVis" />
+        <slice material="G4_GlassHCAL"    thickness = "Hcal_scintillator_thickness" sensitive = "yes"   limits="cal_limits"  vis="CyanVis"   />
+        <slice material="PCB"             thickness = "Hcal_pcb_thickness" vis="CyanVis" />
+        <slice material="stainless_steel" thickness = "Hcal_cassette_thickness" vis="CyanVis" />
+      </layer>
+    </detector>
+  </detectors>
+  
+  <readouts>
+    <readout name="HcalEndcapsCollection">
+      <segmentation type="CartesianGridXY" grid_size_x="Hcal_cell_size" grid_size_y="Hcal_cell_size" offset_x="Hcal_cell_size/2.0" offset_y="Hcal_cell_size/2.0" />
+      <!--id>system:5,module:3,stave:3,tower:5,layer:6,x:32:-16,y:-16</id-->
+      <id>system:5,side:2,module:3,stave:4,barrel:3,layer:6,slice:4,x:32:-16,y:-16</id>
+    </readout>
+  </readouts>
+  
+</lccdd>
diff --git a/Detector/DetCRD/compact/CRD_common_v02/SHcalGlass_Barrel_v04_02.xml b/Detector/DetCRD/compact/CRD_common_v02/SHcalGlass_Barrel_v04_02.xml
new file mode 100644
index 0000000000000000000000000000000000000000..280d471cd706d97ea5ce015bf053b4e09427481f
--- /dev/null
+++ b/Detector/DetCRD/compact/CRD_common_v02/SHcalGlass_Barrel_v04_02.xml
@@ -0,0 +1,65 @@
+<lccdd>
+  <comment>different outer_radius meaning with SHcalGlass_Barrel_v04_01.xml (rmax), here Hcal_barrel_outer_radius is Hcal_barrel_inner_radius+thickness</comment>
+
+  <define>
+    <constant name="Hcal_cell_size" value="40*mm"/>
+    <constant name="Hcal_inner_radius" value="Hcal_barrel_inner_radius"/>
+    <constant name="Hcal_outer_radius" value="Hcal_barrel_outer_radius/cos(pi/Hcal_barrel_symmetry)"/>
+    <constant name="Hcal_half_length" value="Hcal_barrel_half_length"/>
+    <constant name="Hcal_inner_symmetry" value="Hcal_barrel_symmetry"/>
+    <constant name="Hcal_nlayers" value="48"/>
+    <constant name="Hcal_radiator_thickness" value="9.9*mm"/>
+    <constant name="Hcal_back_plate_thickness" value="0.*mm"/>
+    <!-- 15. -->
+    <constant name="Hcal_lateral_structure_thickness" value="10*mm"/> 
+    <!-- only the middle has the steel plate -->
+    <constant name="Hcal_stave_gaps" value="0*mm"/>
+    <!-- Break in phi staves -->
+    <constant name="Hcal_middle_stave_gaps" value="0*mm"/>
+    <!-- ??? -->
+    <constant name="Hcal_modules_gap" value="2*mm"/>
+    <!-- Break size in Z modules -->
+    <constant name="Hcal_layer_air_gap" value="0*mm"/>
+    
+    <constant name="Hcal_scintillator_thickness" value="10.*mm"/>
+    <constant name="Hcal_pcb_thickness" value="3.2*mm"/>
+    <constant name="Hcal_esr_thickness" value="0.2*mm"/>
+    <constant name="Hcal_cassette_thickness" value="2.0*mm"/>
+    <constant name="Hcal_chamber_thickness" value="Hcal_scintillator_thickness+Hcal_pcb_thickness+Hcal_esr_thickness+2*Hcal_cassette_thickness"/>
+  </define>
+
+  <detectors>
+    <detector name="HcalBarrel" type="SHcalSc04_Barrel_v04" id="DetID_HCAL" readout="HcalBarrelCollection" vis="CyanVis" insideTrackingVolume="false" >
+      <comment>Hadron Calorimeter Barrel</comment>
+
+      <envelope vis="CyanVis">
+        <shape type="BooleanShape" operation="Subtraction" material="Air" >
+          <shape type="Tube" rmin="0.0" rmax="Hcal_outer_radius + env_safety" dz="Hcal_half_length + env_safety/2.0"/>
+          <shape type="PolyhedraRegular" numsides="Hcal_inner_symmetry" rmin="0.0" rmax="Hcal_inner_radius - env_safety" dz="2*(Hcal_half_length + env_safety)"/>
+        </shape>
+        <rotation x="0" y="0" z="90*deg-180*deg/Hcal_inner_symmetry"/>
+      </envelope>
+
+      <type_flags type=" DetType_CALORIMETER + DetType_BARREL + DetType_HADRONIC " />
+
+      <staves  material = "Steel235"  vis="BlueVis"/>
+
+      <layer repeat="Hcal_nlayers" vis="CyanVis">
+	<slice material="stainless_steel" thickness = "Hcal_cassette_thickness" vis="CyanVis" />
+	<slice material="G4_ESR" thickness = "Hcal_esr_thickness" vis="CyanVis" />
+        <slice material="G4_GlassHCAL" thickness = "Hcal_scintillator_thickness" sensitive = "yes"   limits="cal_limits"  vis="CyanVis"   />
+        <slice material="PCB" thickness = "Hcal_pcb_thickness" vis="CyanVis" />
+	<slice material="stainless_steel" thickness = "Hcal_cassette_thickness" vis="CyanVis" />
+      </layer>
+    </detector>
+  </detectors>
+
+  <readouts>
+    <readout name="HcalBarrelCollection">
+      <segmentation type="TiledLayerGridXY" grid_size_x="Hcal_cell_size" grid_size_y="Hcal_cell_size"/>
+      <id>system:5,module:4,stave:6,tower:6,layer:7,slice:4,x:32:-16,y:-16</id>
+    </readout>
+  </readouts>
+
+
+</lccdd>
diff --git a/Detector/DetCRD/compact/CRD_common_v02/SIT_SimplePixel_v01_03.xml b/Detector/DetCRD/compact/CRD_common_v02/SIT_SimplePixel_v01_03.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ae750c99127d026d87a7edd4c09850b7c4b1eb2d
--- /dev/null
+++ b/Detector/DetCRD/compact/CRD_common_v02/SIT_SimplePixel_v01_03.xml
@@ -0,0 +1,51 @@
+<lccdd>
+  <define>
+    <!--0.17mm silicon + 1.0mm carbon -> 0.65% of X0-->
+    <constant name="SIT_sensitive_thickness" value="0.17*mm"/>
+    <constant name="SIT_support_thickness"   value="1*mm"/>
+    <constant name="SIT_sensor_length"       value="81*mm"/>
+    <!--constant name="SIT_inner_radius"   value="SIT1_inner_radius"/>
+    <constant name="SIT_inner_radius_1"   value="SIT_inner_radius + env_safety"/>
+    <constant name="SIT_outer_radius_1" value="SIT_inner_radius_1/cos(pi/8)"/>
+    <constant name="SIT_inner_radius_2" value="SIT2_inner_radius"/>
+    <constant name="SIT_outer_radius"   value="OuterTracker_inner_radius"/>
+    <constant name="SIT_half_length"    value="SIT2_half_length"/>
+    <constant name="SIT_half_length_1"  value="SIT1_half_length"/>
+    <constant name="SIT_layer_gap" value="2.5*mm"/-->
+  </define>
+
+  <detectors>
+    <detector id="DetID_SIT" name="SIT" type="SIT_Simple_Pixel" vis="SITVis" readout="SITCollection" insideTrackingVolume="true">
+      <envelope>
+	<shape type="Assembly"/>
+        <!--shape type="BooleanShape" operation="Union" material="Air" >
+          <shape type="Tube" rmin="SIT_inner_radius"   rmax="SIT_outer_radius_1" dz="SIT_half_length_1" />
+          <shape type="Tube" rmin="SIT_inner_radius_2" rmax="SIT_outer_radius"   dz="SIT_half_length" />
+        </shape-->
+      </envelope>
+
+      <type_flags type="DetType_TRACKER + DetType_BARREL + DetType_PIXEL "/>
+
+      <reconstruction strip_width="0." strip_length="0." strip_pitch="0." strip_angle="0*deg"  />
+
+      <global sensitive_thickness="SIT_sensitive_thickness" support_thickness="SIT_support_thickness" sensor_length="SIT_sensor_length"
+              sensitive_mat="G4_Si" support_mat="G4_C" sensitive_threshold_KeV="64*keV"  />
+      <display ladder="SeeThrough" support="SITSupportVis" sens_env="SeeThrough" sens="SITSensitiveVis" />
+
+      <layer layer_id="0" sensitive_radius="SIT1_inner_radius+0.5*SIT_sensitive_thickness" n_sensors_per_ladder="SIT1_half_length*2/SIT_sensor_length"
+	     n_ladders="2*pi*SIT1_inner_radius/SIT_sensor_length" ladder_clearance="0.1*mm" faces_IP="1" is_SIT1="1" is_SIT2="0"  />
+      <layer layer_id="1" sensitive_radius="SIT2_inner_radius+0.5*SIT_sensitive_thickness" n_sensors_per_ladder="SIT2_half_length*2/SIT_sensor_length"
+             n_ladders="2*pi*SIT2_inner_radius/SIT_sensor_length" ladder_clearance="0.1*mm" faces_IP="1" is_SIT1="0" is_SIT2="1"  />
+      <layer layer_id="2" sensitive_radius="SIT3_inner_radius+0.5*SIT_sensitive_thickness" n_sensors_per_ladder="SIT3_half_length*2/SIT_sensor_length"
+             n_ladders="2*pi*SIT3_inner_radius/SIT_sensor_length" ladder_clearance="0.1*mm" faces_IP="1" is_SIT1="0" is_SIT2="0"  />
+
+    </detector>
+  </detectors>
+
+  <readouts>
+    <readout name="SITCollection">
+      <id>system:5,side:-2,layer:9,module:8,sensor:8,barrelside:-2</id>
+    </readout>
+  </readouts>
+  
+</lccdd>
diff --git a/Detector/DetCRD/compact/CRD_common_v02/VXD_StaggeredLadder_v02_01.xml b/Detector/DetCRD/compact/CRD_common_v02/VXD_StaggeredLadder_v02_01.xml
index 85d76f19e2db9c085bf817a8b901fde2e13f1749..71d01cf684381e0e5348117ac56f57fb58541005 100644
--- a/Detector/DetCRD/compact/CRD_common_v02/VXD_StaggeredLadder_v02_01.xml
+++ b/Detector/DetCRD/compact/CRD_common_v02/VXD_StaggeredLadder_v02_01.xml
@@ -20,7 +20,7 @@
   <detectors>
     <detector id="DetID_VXD" name="VXD" type="SiTrackerStaggeredLadder_v01" vis="VXDVis" readout="VXDCollection" insideTrackingVolume="true">
       <envelope>
-	<shape type="BooleanShape" operation="Subtraction" material="Air" >
+	<!--shape type="BooleanShape" operation="Subtraction" material="Air" >
 	  <shape type="BooleanShape" operation="Subtraction" material="Air" >
             <shape type="Tube" rmin="VXD_inner_radius" rmax="VXD_outer_radius" dz="VXD_half_length" />
             <shape type="Cone" rmin1="0" rmax1="BeamPipe_VertexRegion_rmax" rmin2="0" rmax2="Vertex_Side_rmin" z="(VXD_half_length-BeamPipe_CentralAl_zmax)/2." />
@@ -29,7 +29,8 @@
 	  <shape type="Cone" rmin1="0" rmax1="BeamPipe_VertexRegion_rmax" rmin2="0" rmax2="Vertex_Side_rmin" z="(VXD_half_length-BeamPipe_CentralAl_zmax)/2." />
           <position x="0" y="0" z="-(VXD_half_length-(VXD_half_length-BeamPipe_CentralAl_zmax)/2.)"/>
           <rotation x="0" y="180.*deg" z="0" />
-	</shape>
+	</shape-->
+	<shape type="Assembly"/>
       </envelope>
 
       <type_flags type="DetType_TRACKER + DetType_BARREL + DetType_PIXEL "/>
diff --git a/Detector/DetCRD/compact/CRD_common_v02/materials.xml b/Detector/DetCRD/compact/CRD_common_v02/materials.xml
index 6c3d605e85e4ef749a742df4be2297d6b374c49f..0cb4540c9e4eef5802afbe8b026314927ad9b417 100644
--- a/Detector/DetCRD/compact/CRD_common_v02/materials.xml
+++ b/Detector/DetCRD/compact/CRD_common_v02/materials.xml
@@ -398,8 +398,9 @@
 -->
  
     <material name="TPC_endplate_mix" state="solid">
-      <MEE unit="eV" value="97.0754229107761"/>
+      <!--MEE unit="eV" value="97.0754229107761"/-->
       <D unit="g/cm3" value="0.5827515446"/>
+      <!--D unit="g/cm3" value="0.05827515446"/-->
       <fraction n="0.00953598760814401" ref="C"/>
       <fraction n="0.558898138898139" ref="N"/>
       <fraction n="0.226789772550668" ref="O"/>
@@ -613,6 +614,18 @@
      <fraction n="0.44" ref="Ti" />
    </material>
 
+   <material name="CrZrCu18150">
+     <D type="density" value="8.6" unit="g/cm3" />
+     <fraction n="0.01"  ref="Cr" />
+     <fraction n="0.001" ref="Zr" />
+     <fraction n="0.989" ref="Cu" />
+   </material>
+
+   <material name="lHe">
+     <D type="density" value="0.125" unit="g/cm3" />
+     <fraction n="1" ref="He" />
+   </material>
+
    <material name="lN2">
      <D type="density" value="0.807" unit="g/cm3" />
      <fraction n="1" ref="N" />
diff --git a/Detector/DetCRD/compact/TDR_o1_v01/TDR_Dimensions_v01_01.xml b/Detector/DetCRD/compact/TDR_o1_v01/TDR_Dimensions_v01_01.xml
index edb0c7c19d1ee60926c020e409f1d1aa3e7e35ce..ac6a3325e93620a7b447d54b79a6b3eb45b0e803 100644
--- a/Detector/DetCRD/compact/TDR_o1_v01/TDR_Dimensions_v01_01.xml
+++ b/Detector/DetCRD/compact/TDR_o1_v01/TDR_Dimensions_v01_01.xml
@@ -58,7 +58,8 @@
     <constant name="BeamPipe_Be_outer_thickness"   value="0.15*mm"/>
     <constant name="BeamPipe_Be_total_thickness"   value="BeamPipe_Be_inner_thickness+BeamPipe_Cooling_thickness+BeamPipe_Be_outer_thickness"/>
     <constant name="BeamPipe_Al_thickness"         value="BeamPipe_Be_total_thickness"/>
-    <constant name="BeamPipe_Cu_thickness"         value="1.0*mm"/>
+    <constant name="BeamPipe_ThinCu_thickness"     value="2.0*mm"/>
+    <constant name="BeamPipe_Cu_thickness"         value="3.0*mm"/>
 
     <constant name="BeamPipe_CentralBe_zmax"       value="85*mm"/>
     <constant name="BeamPipe_CentralAl_zmax"       value="180*mm"/>
@@ -70,7 +71,12 @@
     <constant name="BeamPipe_FirstSeparated_zmax"  value="1110*mm"/>
     <constant name="BeamPipe_Mask_zmin"            value="1210*mm"/>
     <constant name="BeamPipe_Mask_zmax"            value="1230*mm"/>
-    <constant name="BeamPipe_SecondSeparated_zmax" value="2200*mm"/>
+    <constant name="BeamPipe_Q1a_zmin"             value="1900*mm"/>
+    <constant name="BeamPipe_Q1a_zmax"             value="3110*mm"/>
+    <constant name="BeamPipe_Q1b_zmin"             value="3190*mm"/>
+    <constant name="BeamPipe_Q1b_zmax"             value="4400*mm"/>
+    <constant name="BeamPipe_QF1_zmin"             value="4700*mm"/>
+    <constant name="BeamPipe_QF1_zmax"             value="6200*mm"/>
     <constant name="BeamPipe_end_z"                value="7050*mm"/>
 
     <constant name="BeamPipe_Central_inner_radius"  value="10*mm"/>
@@ -78,97 +84,114 @@
     <constant name="BeamPipe_FirstExpand_width"     value="35*mm"/>
     <constant name="BeamPipe_SecondExpand_width"    value="39*mm"/>
     <constant name="BeamPipe_Mask_inner_radius"     value="6*mm"/>
+    <constant name="BeamPipe_Q1a_inner_radius"      value="BeamPipe_Fork_inner_radius"/>
+    <constant name="BeamPipe_Q1b_inner_radius"      value="11.5*mm"/>
+    <constant name="BeamPipe_QF1_inner_radius"      value="16*mm"/>
 
     <constant name="BeamPipe_FrontLinker_rmax"      value="BeamPipe_FirstExpand_width/2+BeamPipe_Al_thickness"/>
     <constant name="BeamPipe_ForwardRegion_rmax"    value="BeamPipe_SecondExpand_width/2+BeamPipe_Cu_thickness"/>
 
     <constant name="Vertex_inner_radius" value="BeamPipe_Central_inner_radius+BeamPipe_Be_total_thickness"/>
-    <constant name="Vertex_outer_radius" value="70*mm"/>
-    <constant name="Vertex_half_length"  value="430*mm"/>
+    <constant name="Vertex_outer_radius" value="72.5*mm"/>
+    <constant name="Vertex_half_length"  value="750*mm"/>
 
-    <constant name="BeamPipe_VertexRegion_rmax"     value="BeamPipe_Central_inner_radius+BeamPipe_Al_thickness
-	   +(BeamPipe_FirstExpand_width/2-BeamPipe_Central_inner_radius)/(BeamPipe_ExpandAl_zmax-BeamPipe_CentralAl_zmax)*(Vertex_half_length-BeamPipe_CentralAl_zmax)"/>
+    <!--constant name="BeamPipe_VertexRegion_rmax"     value="BeamPipe_Central_inner_radius+BeamPipe_Al_thickness
+	   +(BeamPipe_FirstExpand_width/2-BeamPipe_Central_inner_radius)/(BeamPipe_ExpandAl_zmax-BeamPipe_CentralAl_zmax)*(Vertex_half_length-BeamPipe_CentralAl_zmax)"/-->
+    <constant name="BeamPipe_VertexRegion_rmax"     value="BeamPipe_FirstExpand_width
+							   +(BeamPipe_SecondExpand_width-BeamPipe_FirstExpand_width)/(BeamPipe_Linker_zmax-BeamPipe_Linker_zmin)*(Vertex_half_length-BeamPipe_Linker_zmin)"/>
     <constant name="Vertex_Side_rmin"    value="BeamPipe_VertexRegion_rmax"/>
 
     <constant name="TPC_inner_radius" value="600*mm"/>
     <constant name="TPC_outer_radius" value="1800*mm"/>
-    <constant name="TPC_half_length"  value="2905*mm"/>
+    <constant name="TPC_half_length"  value="2900*mm"/>
     <constant name="OuterTracker_half_length" value="TPC_half_length"/>
 
     <constant name="SIT1_inner_radius"   value="150*mm"/>
-    <constant name="SIT2_inner_radius"   value="360*mm"/>
-    <constant name="SIT3_inner_radius"   value="580*mm"/>
-    <constant name="SIT1_half_length"    value="690*mm"/>
-    <constant name="SIT2_half_length"    value="1334*mm"/>
-    <constant name="SIT3_half_length"    value="1978*mm"/>
+    <constant name="SIT2_inner_radius"   value="250*mm"/>
+    <constant name="SIT3_inner_radius"   value="500*mm"/>
+    <constant name="SIT1_half_length"    value="243*mm"/>
+    <constant name="SIT2_half_length"    value="405*mm"/>
+    <constant name="SIT3_half_length"    value="810*mm"/>
 
-    <constant name="SET_inner_radius"    value="1815*mm"/>
+    <constant name="SET_inner_radius"    value="1800*mm"/>
 
+    <constant name="SiTracker_region1_costheta"   value="0.85"/>
+    <constant name="SiTracker_region2_costheta"   value="0.9"/>
+    <constant name="SiTracker_region3_costheta"   value="0.95"/>
     <constant name="SiTracker_endcap_barrel_zgap" value="5*mm"/>
     <constant name="SiTracker_endcap_barrel_rgap" value="10*mm"/>
-    <constant name="SiTracker_endcap_gas_zgap"    value="70*mm"/>
-    <constant name="SiTracker_endcap_gas_rgap"    value="50*mm"/>
-    <constant name="SiTracker_endcap_z1" value="SIT1_half_length+SiTracker_endcap_barrel_zgap"/>
-    <constant name="SiTracker_endcap_z2" value="SIT2_half_length+SiTracker_endcap_barrel_zgap"/>
-    <constant name="SiTracker_endcap_z3" value="SIT3_half_length+SiTracker_endcap_barrel_zgap"/>
-    <constant name="SiTracker_endcap_z4" value="TPC_half_length+SiTracker_endcap_gas_zgap"/>
-    <constant name="SiTracker_endcap_outer_radius1" value="SIT1_inner_radius+SiTracker_endcap_barrel_rgap"/>
-    <constant name="SiTracker_endcap_outer_radius2" value="SIT2_inner_radius+SiTracker_endcap_barrel_rgap"/>
+    <constant name="SiTracker_endcap_gas_zgap"    value="2*mm"/>
+    <constant name="SiTracker_endcap_gas_rgap"    value="20*mm"/>
+    <constant name="SiTracker_endcap_z1" value="Vertex_half_length"/>
+    <constant name="SiTracker_endcap_z2" value="SIT3_half_length/SiTracker_region1_costheta
+						*cos(acos(SiTracker_region1_costheta)-acos(Global_endcap_costheta))*Global_endcap_costheta"/>
+    <constant name="SiTracker_endcap_z3" value="TPC_inner_radius/sin(acos(SiTracker_region2_costheta))
+						*cos(acos(SiTracker_region2_costheta)-acos(Global_endcap_costheta))*Global_endcap_costheta"/>
+    <constant name="SiTracker_endcap_z4" value="TPC_inner_radius/sin(acos(SiTracker_region3_costheta))
+                                                *cos(acos(SiTracker_region3_costheta)-acos(Global_endcap_costheta))*Global_endcap_costheta"/>
+    <constant name="SiTracker_endcap_z5" value="TPC_half_length+SiTracker_endcap_gas_zgap"/>
+    <constant name="SiTracker_endcap_outer_radius1" value="SiTracker_endcap_z1/Global_endcap_costheta
+							   /cos(acos(SiTracker_region1_costheta)-acos(Global_endcap_costheta))
+							   *sin(acos(SiTracker_region1_costheta))"/>
+    <constant name="SiTracker_endcap_outer_radius2" value="SIT3_inner_radius"/>
     <constant name="SiTracker_endcap_outer_radius3" value="TPC_inner_radius-SiTracker_endcap_gas_rgap"/>
-    <constant name="SiTracker_endcap_outer_radius4" value="TPC_outer_radius+SiTracker_endcap_barrel_rgap*2"/>
+    <constant name="SiTracker_endcap_outer_radius4" value="TPC_inner_radius-SiTracker_endcap_gas_rgap"/>
+    <constant name="SiTracker_endcap_outer_radius5" value="TPC_outer_radius+SiTracker_endcap_barrel_rgap"/>
 
     <!--obseleted constance, used by old construct, should be removed while creating new constrcut-->
     <constant name="TPC_Ecal_Hcal_barrel_halfZ"   value="TPC_half_length"/>
 
-    <constant name="Ecal_barrel_inner_radius" value="1900*mm"/>
+    <constant name="Ecal_barrel_inner_radius" value="1830*mm"/>
     <constant name="Ecal_barrel_thickness"    value="300*mm"/>
     <constant name="Ecal_barrel_outer_radius" value="Ecal_barrel_inner_radius+Ecal_barrel_thickness"/>
-    <constant name="Ecal_barrel_half_length"  value="2950*mm"/>
+    <constant name="Ecal_barrel_half_length"  value="2900*mm"/>
     <constant name="Ecal_barrel_symmetry"     value="32"/>
     <constant name="Ecal_Tpc_gap"             value="Ecal_barrel_inner_radius-TPC_outer_radius"/>
 
-    <constant name="Ecal_endcap_inner_radius" value="350*mm"/>
+    <constant name="Ecal_endcap_inner_radius" value="400*mm"/>
     <constant name="Ecal_endcap_outer_radius" value="Ecal_barrel_outer_radius"/>
-    <constant name="Ecal_endcap_zmin"         value="3050*mm"/>
-    <constant name="Ecal_endcap_zmax"         value="3350*mm"/>
+    <constant name="Ecal_endcap_zmin"         value="2930*mm"/>
+    <constant name="Ecal_endcap_thickness"    value="Ecal_barrel_thickness"/>
+    <constant name="Ecal_endcap_zmax"         value="Ecal_endcap_zmin+Ecal_endcap_thickness"/>
     <constant name="Ecal_endcap_symmetry"     value="32"/>
 
-    <constant name="Hcal_barrel_inner_radius" value="2215*mm"/>
-    <constant name="Hcal_barrel_outer_radius" value="3685*mm"/>
-    <constant name="Hcal_barrel_half_length"  value="3340*mm"/>
+    <constant name="Hcal_barrel_inner_radius" value="2140*mm"/>
+    <constant name="Hcal_barrel_outer_radius" value="3455*mm"/>
+    <constant name="Hcal_barrel_half_length"  value="3230*mm"/>
     <constant name="Hcal_barrel_symmetry"    value="16"/>
     
-    <constant name="Hcal_endcap_inner_radius" value="400*mm"/>
+    <constant name="Hcal_endcap_inner_radius" value="450*mm"/>
     <constant name="Hcal_endcap_outer_radius" value="Hcal_barrel_outer_radius"/>
-    <constant name="Hcal_endcap_zmin" value="3360*mm"/>
-    <constant name="Hcal_endcap_zmax" value="4830*mm"/>
+    <constant name="Hcal_endcap_zmin" value="3260*mm"/>
+    <constant name="Hcal_endcap_thickness" value="Hcal_barrel_outer_radius-Hcal_barrel_inner_radius"/>
+    <constant name="Hcal_endcap_zmax" value="Hcal_endcap_zmin+Hcal_endcap_thickness"/>
     <constant name="Hcal_endcap_symmetry" value="16"/>
 
-    <constant name="Solenoid_inner_radius" value="3775*mm"/>
-    <constant name="Solenoid_outer_radius" value="4575*mm"/>
-    <constant name="Solenoid_half_length" value="4780*mm"/>
-    <constant name="SolenoidCoil_half_length" value="4167*mm"/>
-    <constant name="SolenoidCoil_radius" value="3905*mm"/>
+    <constant name="Solenoid_inner_radius" value="3535*mm"/>
+    <constant name="Solenoid_outer_radius" value="4235*mm"/>
+    <constant name="Solenoid_half_length" value="4575*mm"/>
+    <constant name="SolenoidCoil_half_length" value="4075*mm"/>
+    <constant name="SolenoidCoil_radius" value="3650*mm"/>
     <constant name="SolenoidCoil_center_radius" value="(Solenoid_inner_radius+Solenoid_outer_radius)/2"/>
         
-    <constant name="Yoke_barrel_inner_radius" value="4590*mm"/>
-    <constant name="Yoke_barrel_outer_radius" value="6340*mm"/>
-    <constant name="Yoke_barrel_half_length" value="4880*mm"/>
+    <constant name="Yoke_barrel_inner_radius" value="4235*mm"/>
+    <constant name="Yoke_barrel_outer_radius" value="5485*mm"/>
+    <constant name="Yoke_barrel_half_length" value="4525*mm"/>
     <constant name="Yoke_barrel_symmetry" value="12"/>
     
-    <constant name="Yoke_endcap_inner_radius" value="400*mm"/>
+    <constant name="Yoke_endcap_inner_radius" value="650*mm"/>
     <constant name="Yoke_endcap_outer_radius" value="Yoke_barrel_outer_radius"/>
-    <constant name="Yoke_endcap_zmin" value="5130*mm"/>
-    <constant name="Yoke_endcap_zmax" value="6880*mm"/>
+    <constant name="Yoke_endcap_zmin" value="4635*mm"/>
+    <constant name="Yoke_endcap_zmax" value="5875*mm"/>
     <constant name="Yoke_endcap_outer_symmetry" value="Yoke_barrel_symmetry"/>
     <constant name="Yoke_endcap_inner_symmetry" value="0"/>
 
     <!-- FIXME:need to check/--> 
-    <constant name="LumiCal_inner_radius" value="35.0*mm"/>
-    <constant name="LumiCal_outer_radius" value="100.0*mm"/>
-    <constant name="LumiCal_zmax" value="805*mm" />
-    <constant name="LumiCal_zmin" value="700*mm"/>
-    <constant name="LumiCal_thickness" value="(LumiCal_zmax-LumiCal_zmin)/2.0"/>
+    <constant name="Lumical_inner_radius" value="BeamPipe_Fork_inner_radius+BeamPipe_ThinCu_thickness"/>
+    <constant name="Lumical_outer_radius" value="100.0*mm"/>
+    <constant name="Lumical_zmax" value="BeamPipe_FirstSeparated_zmax" />
+    <constant name="Lumical_zmin" value="700*mm"/>
+    <constant name="Lumical_thickness" value="(Lumical_zmax-Lumical_zmin)/2.0"/>
         
     <constant name="tracker_region_zmax" value="Ecal_endcap_zmin"/>
     <constant name="tracker_region_rmax" value="Ecal_barrel_inner_radius"/>
@@ -179,7 +202,7 @@
     <limitset name="cal_limits">
       <limit name="step_length_max" particles="*" value="5.0" unit="mm" />
     </limitset>
-    <limitset name="dc_limits">
+    <limitset name="tpc_limits">
       <limit name="step_length_max" particles="*" value="10.0" unit="mm" />
     </limitset>
     <limitset name="tracker_limits">
@@ -191,6 +214,13 @@
     <limitset name="support_limits">
       <limit name="step_length_max" particles="*" value="10.0" unit="mm" />
     </limitset>
+    <limitset name="yoke_limits">
+      <limit name="step_length_max" particles="*" value="10.0" unit="mm" />
+      <!--limit name="track_length_max" particles="*" value="5.0" unit="mm" /-->
+      <!--limit name="time_max" particles="*" value="5.0" unit="ns" /-->
+      <limit name="ekin_min" particles="*" value="10" unit="MeV" />
+      <limit name="range_min" particles="*" value="10.0" unit="mm" />
+    </limitset>
   </limits>
 
   <regions>
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 67d3e526700aca63ecd776fbc95d1873dd12cf85..18e6abf042844778e86e79e1f2c412a87df7418d 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,12 +27,12 @@
 
   <include ref="./TDR_Dimensions_v01_01.xml"/>
 
-  <!--old version, should be check/-->
-  <include ref="../CRD_common_v01/Beampipe_v01_02.xml"/>
+  <!--TODO: vertex cooling-->
+  <include ref="../CRD_common_v02/Beampipe_v01_03.xml"/>
   <!--preliminary vertex and tracker, to update/-->
   <include ref="../CRD_common_v02/VXD_StaggeredLadder_v02_01.xml"/>
-  <include ref="../CRD_common_v01/FTD_SkewRing_v01_02.xml"/>
-  <include ref="../CRD_common_v01/SIT_SimplePixel_v01_02.xml"/>
+  <include ref="../CRD_common_v02/FTD_SkewRing_v01_05.xml"/>
+  <include ref="../CRD_common_v02/SIT_SimplePixel_v01_03.xml"/>
   <include ref="../CRD_common_v01/TPC_Simple_v10_02.xml"/>
   <include ref="../CRD_common_v01/SET_SimplePixel_v01_01.xml"/>
   
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 d0c1c15172e03f5a117a505dd3f51b8d67da1579..50e6fd84342ce19827ede5fe5de1f1fb6484cee7 100644
--- a/Detector/DetCRD/compact/TDR_o1_v01/TDR_o1_v01.xml
+++ b/Detector/DetCRD/compact/TDR_o1_v01/TDR_o1_v01.xml
@@ -27,19 +27,21 @@
 
   <include ref="./TDR_Dimensions_v01_01.xml"/>
 
-  <!--old version, should be check/-->
-  <include ref="../CRD_common_v01/Beampipe_v01_02.xml"/>
+  <!--TODO: vertex cooling-->
+  <include ref="../CRD_common_v02/Beampipe_v01_03.xml"/>
   <!--preliminary vertex and tracker, to update/-->
   <include ref="../CRD_common_v02/VXD_StaggeredLadder_v02_01.xml"/>
-  <include ref="../CRD_common_v01/FTD_SkewRing_v01_02.xml"/>
-  <include ref="../CRD_common_v01/SIT_SimplePixel_v01_02.xml"/>
+  <include ref="../CRD_common_v02/FTD_SkewRing_v01_05.xml"/>
+  <include ref="../CRD_common_v02/SIT_SimplePixel_v01_03.xml"/>
   <include ref="../CRD_common_v01/TPC_Simple_v10_02.xml"/>
   <include ref="../CRD_common_v01/SET_SimplePixel_v01_01.xml"/>
-  <!--TODO: Ecal and Hcal, Hcal outer raduis should be modified with 48 layers/-->
+
   <include ref="../CRD_common_v01/Ecal_Crystal_Barrel_v01_02.xml"/>
+  <!--preliminary EcalEndcaps/-->
   <include ref="../CRD_common_v02/EcalEndcaps_Polyhedra_v01_01.xml"/>
-  <!--include ref="../CRD_common_v01/SHcalGlass_Barrel_v04_01.xml"/-->
-  <!--include ref="../CRD_common_v02/HcalEndcaps_Polyhedra_v01_01.xml"/-->
+  <include ref="../CRD_common_v02/SHcalGlass_Barrel_v04_02.xml"/>
+  <!--preliminary HcalEndcaps/-->
+  <include ref="../CRD_common_v02/HcalEndcaps_Polyhedra_v01_01.xml"/>
 
   <!--Lumical,to update-->
   <include ref="../CRD_common_v01/Lumical_o1_v01.xml"/>
diff --git a/Detector/DetCRD/src/Calorimeter/LongCrystalBarBarrelCalorimeter32Polygon_v01.cpp b/Detector/DetCRD/src/Calorimeter/LongCrystalBarBarrelCalorimeter32Polygon_v01.cpp
index afd688810285a6e951c755ba97a125606952d77a..1391dc64337e71d46e887cc1109dfc956ebe820e 100755
--- a/Detector/DetCRD/src/Calorimeter/LongCrystalBarBarrelCalorimeter32Polygon_v01.cpp
+++ b/Detector/DetCRD/src/Calorimeter/LongCrystalBarBarrelCalorimeter32Polygon_v01.cpp
@@ -1177,14 +1177,14 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector,
     // ###########################
 
     for(int iz=0; iz<Nblock_z; iz=iz+1){  //1 Nblock_z
-        dd4hep::PlacedVolume plv = trap_positive_vol.placeVolume(subtrap_positive_vol, Position(0, 0.5*length_z-(2*iz-1)*pZ/2,0) );
+        dd4hep::PlacedVolume plv = trap_positive_vol.placeVolume(subtrap_positive_vol, Position(0, 0.5*length_z-(2*iz+1)*pZ/2,0) );
         plv.addPhysVolID("stave", iz);
         DetElement sd(stavedet, _toString(iz,"stave_posi_%3d"), detid);
         sd.setPlacement(plv);    
     }
 
     for(int iz=0; iz<Nblock_z; iz=iz+1){
-        dd4hep::PlacedVolume plv = trap_negative_vol.placeVolume(subtrap_negative_vol, Position(0, 0.5*length_z-(2*iz-1)*pZ/2,0) );
+        dd4hep::PlacedVolume plv = trap_negative_vol.placeVolume(subtrap_negative_vol, Position(0, 0.5*length_z-(2*iz+1)*pZ/2,0) );
         plv.addPhysVolID("stave", iz);
         DetElement sd(stavedet, _toString(iz,"stave_nega_%3d"), detid);
         sd.setPlacement(plv);    
diff --git a/Service/GearSvc/src/GearSvc.cpp b/Service/GearSvc/src/GearSvc.cpp
index 4d79865881b5224c6d6afab12f607a669f53b082..3facee7a602188035f4d96abe6d7dc5d9b27fe1f 100644
--- a/Service/GearSvc/src/GearSvc.cpp
+++ b/Service/GearSvc/src/GearSvc.cpp
@@ -807,6 +807,64 @@ StatusCode GearSvc::convertTPC(dd4hep::DetElement& tpc){
   tpcParameters->setDoubleVal( "tpcInnerWallThickness",  tpcData->innerWallThickness*CLHEP::cm ) ;
   tpcParameters->setDoubleVal( "tpcOuterWallThickness",  tpcData->outerWallThickness*CLHEP::cm ) ;
 
+  dd4hep::rec::ConicalSupportData* supportData = nullptr;
+  try{
+    supportData = tpc.extension<dd4hep::rec::ConicalSupportData>();
+  }
+  catch(std::runtime_error& e){
+    warning() << e.what() << " " << supportData << endmsg;
+    return StatusCode::FAILURE;
+  }
+  tpcParameters->setDoubleVal( "tpcReadoutInnerRadius",  supportData->sections[0].rInner*CLHEP::cm );
+  tpcParameters->setDoubleVal( "tpcReadoutOuterRadius",  supportData->sections[0].rOuter*CLHEP::cm );
+  tpcParameters->setDoubleVal( "tpcReadoutZmin",         supportData->sections[0].zPos*CLHEP::cm );
+  tpcParameters->setDoubleVal( "tpcReadoutZmax",         supportData->sections[1].zPos*CLHEP::cm );
+  tpcParameters->setDoubleVal( "tpcEndplateInnerRadius", supportData->sections[2].rInner*CLHEP::cm );
+  tpcParameters->setDoubleVal( "tpcEndplateOuterRadius", supportData->sections[2].rOuter*CLHEP::cm );
+  tpcParameters->setDoubleVal( "tpcEndplateZmin",        supportData->sections[1].zPos*CLHEP::cm + 1*CLHEP::um );
+  tpcParameters->setDoubleVal( "tpcEndplateZmax",        supportData->sections[2].zPos*CLHEP::cm );
+
+  dd4hep::rec::MaterialManager matMgr( dd4hep::Detector::getInstance().world().volume() );
+  double x = (supportData->sections[0].rInner + supportData->sections[0].rOuter)/2.;
+  // Readout
+  {
+    dd4hep::rec::Vector3D a(x, 0, supportData->sections[0].zPos);
+    dd4hep::rec::Vector3D b(x, 0, supportData->sections[1].zPos);
+    const dd4hep::rec::MaterialVec& materials = matMgr.materialsBetween(a, b);
+    dd4hep::rec::MaterialData mat = (materials.size()>1) ? matMgr.createAveragedMaterial(materials) : materials[0].first;
+
+    std::cout << " ####### found materials between points : " << a << " and " << b << " : " ;
+    for( unsigned i=0,n=materials.size();i<n;++i){
+      std::cout <<  materials[i].first.name() << "[" <<   materials[i].second << "], " ;
+    }
+    std::cout << std::endl ;
+    std::cout << "   averaged material : " << mat << std::endl ;
+    gear::SimpleMaterialImpl* TPCReadoutMaterial = new gear::SimpleMaterialImpl("TPCReadoutMaterial", mat.A(), mat.Z(),
+										mat.density()/(dd4hep::kg/(dd4hep::g*dd4hep::m3)),
+										mat.radiationLength()/dd4hep::mm,
+										mat.interactionLength()/dd4hep::mm);
+    m_gearMgr->registerSimpleMaterial(TPCReadoutMaterial);
+  }
+  // Endplate
+  {
+    dd4hep::rec::Vector3D a(x, 0, supportData->sections[1].zPos);
+    dd4hep::rec::Vector3D b(x, 0, supportData->sections[2].zPos);
+    const dd4hep::rec::MaterialVec& materials = matMgr.materialsBetween(a, b);
+    dd4hep::rec::MaterialData mat = (materials.size()>1) ? matMgr.createAveragedMaterial(materials) : materials[0].first;
+
+    std::cout << " ####### found materials between points : " << a << " and " << b << " : " ;
+    for( unsigned i=0,n=materials.size();i<n;++i){
+      std::cout <<  materials[i].first.name() << "[" <<   materials[i].second << "], " ;
+    }
+    std::cout << std::endl ;
+    std::cout << "   averaged material : " << mat << std::endl ;
+    gear::SimpleMaterialImpl* TPCEndplateMaterial = new gear::SimpleMaterialImpl("TPCEndplateMaterial", mat.A(), mat.Z(),
+										mat.density()/(dd4hep::kg/(dd4hep::g*dd4hep::m3)),
+										mat.radiationLength()/dd4hep::mm,
+										mat.interactionLength()/dd4hep::mm);
+    m_gearMgr->registerSimpleMaterial(TPCEndplateMaterial);
+  }
+
   m_gearMgr->setTPCParameters(tpcParameters);
 
   return StatusCode::SUCCESS;
diff --git a/Utilities/KalDet/src/ild/common/MaterialDataBase.cc b/Utilities/KalDet/src/ild/common/MaterialDataBase.cc
index 277f17aead1dc94636e271a6f88c55343a642830..abf8e4e43640bf986fa05f7ff99075e1ec107ea5 100644
--- a/Utilities/KalDet/src/ild/common/MaterialDataBase.cc
+++ b/Utilities/KalDet/src/ild/common/MaterialDataBase.cc
@@ -221,7 +221,11 @@ void MaterialDataBase::createMaterials(const gear::GearMgr& gearMgr, IGeomSvc* g
       name    = vxd_sup_mat.getName() ;
       TMaterial &vxdsupport = *new TMaterial(name.c_str(), "", A, Z, density, radlen, 0.);
       this->addMaterial(&vxdsupport, name);
-
+    }
+    catch( gear::UnknownParameterException& e){
+      std::cout << "Warning! cannot get material VXDSupportMaterial from GeomSvc! GearMgr=" << &gearMgr << std::endl;
+    }
+    try {
       const gear::SimpleMaterial& vxd_shell_mat = gearMgr.getSimpleMaterial("VXDShellMaterial");
       A       = vxd_shell_mat.getA();
       Z       = vxd_shell_mat.getZ();
@@ -232,7 +236,33 @@ void MaterialDataBase::createMaterials(const gear::GearMgr& gearMgr, IGeomSvc* g
       this->addMaterial(&vxdshell, name);
     }
     catch( gear::UnknownParameterException& e){   
-      std::cout << "Warning! cannot get material VXDSupportMaterial and VXDShellMaterial from GeomSvc! GearMgr=" << &gearMgr << std::endl;
+      std::cout << "Warning! cannot get material VXDShellMaterial from GeomSvc! GearMgr=" << &gearMgr << std::endl;
+    }
+    try {
+      const gear::SimpleMaterial& tpc_readout_mat = gearMgr.getSimpleMaterial("TPCReadoutMaterial");
+      A       = tpc_readout_mat.getA();
+      Z       = tpc_readout_mat.getZ();
+      density = tpc_readout_mat.getDensity() * (1000.0/ 1000000.0); // kg/m^3 -> g/cm^3
+      radlen  = tpc_readout_mat.getRadLength() / 10.0 ; // mm -> cm
+      name    = tpc_readout_mat.getName() ;
+      TMaterial &tpcreadout = *new TMaterial(name.c_str(), "", A, Z, density, radlen, 0.);
+      this->addMaterial(&tpcreadout, name);
+    }
+    catch( gear::UnknownParameterException& e){
+      std::cout << "Warning! cannot get material TPCReadoutMaterial from GeomSvc! GearMgr=" << &gearMgr << std::endl;
+    }
+    try {
+      const gear::SimpleMaterial& tpc_endplate_mat = gearMgr.getSimpleMaterial("TPCEndplateMaterial");
+      A       = tpc_endplate_mat.getA();
+      Z       = tpc_endplate_mat.getZ();
+      density = tpc_endplate_mat.getDensity() * (1000.0/ 1000000.0); // kg/m^3 -> g/cm^3
+      radlen  = tpc_endplate_mat.getRadLength() / 10.0 ; // mm -> cm
+      name    = tpc_endplate_mat.getName() ;
+      TMaterial &tpcendplate = *new TMaterial(name.c_str(), "", A, Z, density, radlen, 0.);
+      this->addMaterial(&tpcendplate, name);
+    }
+    catch( gear::UnknownParameterException& e){
+      std::cout << "Warning! cannot get material TPCEndplateMaterial from GeomSvc! GearMgr=" << &gearMgr << std::endl;
     }
   }
 }
diff --git a/Utilities/KalDet/src/ild/support/ILDSupportKalDetector.cc b/Utilities/KalDet/src/ild/support/ILDSupportKalDetector.cc
index 1376b4ad50f7c070ff503b8dffd07f8a863a6d8e..9db65dd2b2af4dca8e4021798c46262e16f4c21f 100644
--- a/Utilities/KalDet/src/ild/support/ILDSupportKalDetector.cc
+++ b/Utilities/KalDet/src/ild/support/ILDSupportKalDetector.cc
@@ -347,7 +347,7 @@ TVKalDetector(10)
   TVector3 front_face_normal_bwd(front_face_centre_bwd);
   front_face_normal_bwd.SetMag(1.0);
   
-  Add (new ILDDiscMeasLayer(air, air, front_face_centre_bwd,front_face_normal_bwd, bz, z_min_ecal_ecap+1.0e-06, 0., r_max_ecal_ecap/cos(M_PI/8.0), true, encoder.lowWord(),"ECalEndcapFace-Z"));
+  Add (new ILDDiscMeasLayer(air, air, front_face_centre_bwd,front_face_normal_bwd, bz, -z_min_ecal_ecap, 0., r_max_ecal_ecap/cos(M_PI/8.0), true, encoder.lowWord(),"ECalEndcapFace-Z"));
 
   // streamlog_out( DEBUG0 )   << " *** adding ECalEndcapFace-Z Measurement layer at Zmin = " << front_face_centre_bwd.z() << " and Rmax = " << r_max_ecal_ecap/cos(M_PI/8.0) << std::endl ;
   
diff --git a/Utilities/KalDet/src/ild/tpc/ILDTPCKalDetector.cc b/Utilities/KalDet/src/ild/tpc/ILDTPCKalDetector.cc
index 18aaa5934cbc2ce611c337c1df563c91a46340d4..ba1f21f85907432c10d1e51064f8b0905a360eca 100644
--- a/Utilities/KalDet/src/ild/tpc/ILDTPCKalDetector.cc
+++ b/Utilities/KalDet/src/ild/tpc/ILDTPCKalDetector.cc
@@ -2,6 +2,7 @@
 #include "ILDTPCKalDetector.h"
 #include "ILDCylinderMeasLayer.h"
 #include "ILDCylinderHit.h"
+#include "ILDDiscMeasLayer.h"
 
 #include "TMath.h"
 #include "TTUBE.h"
@@ -35,6 +36,8 @@ TVKalDetector(250) // SJA:FIXME initial size, 250 looks reasonable for ILD, thou
   Double_t bz;
   Int_t    nlayers;
   Double_t lhalf, rstep, rmin, rtub, outerr, inthick, outthick;
+  Double_t rminReadout, rmaxReadout, zminReadout, zmaxReadout;
+  Double_t rminEndplate, rmaxEndplate, zminEndplate, zmaxEndplate;
   // streamlog_out(DEBUG1) << "ILDTPCKalDetector building TPC detector using GEAR " << std::endl ;
   if(geoSvc){
     dd4hep::DetElement world = geoSvc->getDD4HepGeo();
@@ -63,6 +66,23 @@ TVKalDetector(250) // SJA:FIXME initial size, 250 looks reasonable for ILD, thou
     outerr = tpcData->rMax*CLHEP::cm;
     inthick = tpcData->innerWallThickness*CLHEP::cm;
     outthick = tpcData->outerWallThickness*CLHEP::cm;
+
+    dd4hep::rec::ConicalSupportData* supportData = nullptr;
+    try{
+      supportData = tpc.extension<dd4hep::rec::ConicalSupportData>();
+    }
+    catch(std::runtime_error& e){
+      std::cout << e.what() << " " << supportData << std::endl;
+      throw GaudiException(e.what(), "FATAL", StatusCode::FAILURE);
+    }
+    rminReadout = supportData->sections[0].rInner*CLHEP::cm;
+    rmaxReadout = supportData->sections[0].rOuter*CLHEP::cm;
+    zminReadout = supportData->sections[0].zPos*CLHEP::cm;
+    zmaxReadout = supportData->sections[1].zPos*CLHEP::cm;
+    rminEndplate = supportData->sections[2].rInner*CLHEP::cm;
+    rmaxEndplate = supportData->sections[2].rOuter*CLHEP::cm;
+    zminEndplate = supportData->sections[1].zPos*CLHEP::cm + 1*CLHEP::um;
+    zmaxEndplate = supportData->sections[2].zPos*CLHEP::cm;
     //std::cout << "TPC: " << nlayers << " " << lhalf << " " << rstep << " " << rmin << " " << rtub << " " << outerr << " " << inthick << " " << outthick << std::endl;
   }
   else{
@@ -88,6 +108,15 @@ TVKalDetector(250) // SJA:FIXME initial size, 250 looks reasonable for ILD, thou
     
     inthick   =  tpcParams.getDoubleVal("tpcInnerWallThickness")  ;   // thickness of inner shell
     outthick  =  tpcParams.getDoubleVal("tpcOuterWallThickness")  ;   // thickness of outer shell
+
+    rminReadout = tpcParams.getDoubleVal("tpcReadoutInnerRadius");
+    rmaxReadout = tpcParams.getDoubleVal("tpcReadoutOuterRadius");
+    zminReadout = tpcParams.getDoubleVal("tpcReadoutZmin");
+    zmaxReadout = tpcParams.getDoubleVal("tpcReadoutZmax");
+    rminEndplate = tpcParams.getDoubleVal("tpcEndplateInnerRadius");
+    rmaxEndplate = tpcParams.getDoubleVal("tpcEndplateOuterRadius");
+    zminEndplate = tpcParams.getDoubleVal("tpcEndplateZmin");
+    zmaxEndplate = tpcParams.getDoubleVal("tpcEndplateZmax");
     //std::cout << "TPC: " << nlayers << " " << lhalf << " " << rstep << " " << rmin << " " << rtub << " " << outerr << " " << inthick << " " << outthick << std::endl;
   }    
 
@@ -97,6 +126,8 @@ TVKalDetector(250) // SJA:FIXME initial size, 250 looks reasonable for ILD, thou
   //  TMaterial & aluminium    = *MaterialDataBase::Instance().getMaterial("aluminium");
   TMaterial & tpcinnerfieldcage = *MaterialDataBase::Instance().getMaterial("tpcinnerfieldcage");
   TMaterial & tpcouterfieldcage = *MaterialDataBase::Instance().getMaterial("tpcouterfieldcage");
+  TMaterial & tpcreadout   = *MaterialDataBase::Instance().getMaterial("TPCReadoutMaterial");
+  TMaterial & tpcendplate  = *MaterialDataBase::Instance().getMaterial("TPCEndplateMaterial");
   
   Bool_t active = true;
   Bool_t dummy  = false;
@@ -170,7 +201,16 @@ TVKalDetector(250) // SJA:FIXME initial size, 250 looks reasonable for ILD, thou
   // << std::endl ;  
   
   // streamlog_out( DEBUG0 )   << " *** Outer Field Cage =  " << int( (outthick/(tpcouterfieldcage.GetRadLength()*10.0) /*cm*/ )*1000) / 10.0  << "% of a radiation length " << std::endl ; 
-  
+
+  Add(new ILDDiscMeasLayer(tpcgas, tpcreadout, TVector3(0,0,zminReadout), TVector3(0,0,1), bz, zminReadout, rminReadout, rmaxReadout, dummy, -1, "TPCReadoutFace+Z1"));
+  Add(new ILDDiscMeasLayer(tpcreadout, air, TVector3(0,0,zmaxReadout), TVector3(0,0,1), bz, zmaxReadout, rminReadout, rmaxReadout, dummy, -1, "TPCReadoutFace+Z2"));
+  Add(new ILDDiscMeasLayer(air, tpcendplate, TVector3(0,0,zminEndplate), TVector3(0,0,1), bz, zminEndplate, rminEndplate, rmaxEndplate, dummy, -1,"EPCEndplateFace+Z1"));
+  Add(new ILDDiscMeasLayer(tpcendplate, air, TVector3(0,0,zmaxEndplate), TVector3(0,0,1), bz, zmaxEndplate, rminEndplate, rmaxEndplate, dummy, -1,"EPCEndplateFace+Z2"));
+
+  Add(new ILDDiscMeasLayer(tpcgas, tpcreadout, TVector3(0,0,-zminReadout), TVector3(0,0,-1), bz, -zminReadout, rminReadout, rmaxReadout, dummy, -1, "TPCReadoutFace-Z1"));
+  Add(new ILDDiscMeasLayer(tpcreadout, air, TVector3(0,0,-zmaxReadout), TVector3(0,0,-1), bz, -zmaxReadout, rminReadout, rmaxReadout, dummy, -1, "TPCReadoutFace-Z2"));
+  Add(new ILDDiscMeasLayer(air, tpcendplate, TVector3(0,0,-zminEndplate), TVector3(0,0,-1), bz, -zminEndplate, rminEndplate, rmaxEndplate, dummy, -1,"EPCEndplateFace-Z1"));
+  Add(new ILDDiscMeasLayer(tpcendplate, air, TVector3(0,0,-zmaxEndplate), TVector3(0,0,-1), bz, -zmaxEndplate, rminEndplate, rmaxEndplate, dummy, -1,"EPCEndplateFace-Z2"));
   
   SetOwner();
 }