diff --git a/Detector/DetCEPCv4/compact/SEcal05_siw_Barrel.xml b/Detector/DetCEPCv4/compact/SEcal05_siw_Barrel.xml
index a1cb5b4ea23fabf1a1f1a5aa07d2c2d15a29b2ae..519cc8a4b533631c443bf912ce36edf58bd19dd8 100644
--- a/Detector/DetCEPCv4/compact/SEcal05_siw_Barrel.xml
+++ b/Detector/DetCEPCv4/compact/SEcal05_siw_Barrel.xml
@@ -23,23 +23,29 @@
         <slice material = "G4_AIR"         thickness = "Ecal_Alveolus_Air_Gap/2."   vis="Invisible" />
 	<slice material = "G4_Al"          thickness = "Ecal_Slab_shielding"        vis="Invisible" />
 	<slice material = "G4_Cu"          thickness = "Ecal_Slab_copper_thickness" vis="Invisible" />
-	<slice material = "G4_AIR"         thickness = "Ecal_Slab_ASIC_thickness"   vis="Invisible"/>
+	<!--slice material = "G4_AIR"         thickness = "Ecal_Slab_ASIC_thickness"   vis="Invisible"/-->
 	<slice material = "PCB"            thickness = "Ecal_Slab_PCB_thickness"    vis="Invisible"/>
+	<!--slice material = "G4_AIR"         thickness = "2e-9*mm"                      vis="Invisible" /-->
         <slice material = "G4_AIR"         thickness = "Ecal_Slab_glue_gap"         vis="Invisible" />
+	<!--slice material = "G4_AIR"         thickness = "2e-9*mm"                      vis="Invisible" /-->
         <slice material = "Si"             thickness = "Ecal_Si_thickness" sensitive = "yes"     vis="Invisible"    />
         <!--slice material = "G4_AIR"         thickness = "2e-9*mm"                      vis="Invisible" /-->
         <slice material = "GroundOrHVMix"  thickness = "Ecal_Slab_ground_thickness"              vis="Invisible" />
 	<!--slice material = "G4_AIR"         thickness = "1e-9*mm"                      vis="Invisible" /-->
-        <slice material = "CarbonFiber"    thickness = "Ecal_fiber_thickness_slabAbs"                    vis="Invisible" />
+        <!--slice material = "CarbonFiber"    thickness = "Ecal_fiber_thickness_slabAbs"                    vis="Invisible" /-->
+	<slice material = "g10"            thickness = "Ecal_fiber_thickness_slabAbs"                    vis="Invisible" />
         <slice material = "G4_W"           thickness = "Ecal_radiator_layers_set1_thickness"   vis="BlueVis"   radiator="yes"/>
-        <slice material = "CarbonFiber"    thickness = "Ecal_fiber_thickness_slabAbs"                    vis="Invisible" />
+        <!--slice material = "CarbonFiber"    thickness = "Ecal_fiber_thickness_slabAbs"                    vis="Invisible" /-->
+	<slice material = "g10"            thickness = "Ecal_fiber_thickness_slabAbs"                    vis="Invisible" />
 	<!--slice material = "G4_AIR"         thickness = "1e-9*mm"                      vis="Invisible" /-->
         <slice material = "GroundOrHVMix"  thickness = "Ecal_Slab_ground_thickness"              vis="Invisible" />
         <!--slice material = "G4_AIR"         thickness = "2e-9*mm"                      vis="Invisible" /-->
         <slice material = "Si"             thickness = "Ecal_Si_thickness" sensitive = "yes"     vis="Invisible"    />
+	<!--slice material = "G4_AIR"         thickness = "2e-9*mm"                      vis="Invisible" /-->
         <slice material = "G4_AIR"         thickness = "Ecal_Slab_glue_gap"                      vis="Invisible" />
+	<!--slice material = "G4_AIR"         thickness = "2e-9*mm"                      vis="Invisible" /-->
 	<slice material = "PCB"            thickness = "Ecal_Slab_PCB_thickness"    vis="Invisible"/>
-	<slice material = "G4_AIR"         thickness = "Ecal_Slab_ASIC_thickness"   vis="Invisible"/>
+	<!--slice material = "G4_AIR"         thickness = "Ecal_Slab_ASIC_thickness"   vis="Invisible"/-->
 	<slice material = "G4_Cu"          thickness = "Ecal_Slab_copper_thickness"        vis="Invisible" />
 	<slice material = "G4_Al"          thickness = "Ecal_Slab_shielding"        vis="Invisible" />
         <slice material = "G4_AIR"         thickness = "Ecal_Alveolus_Air_Gap/2."                vis="Invisible" />
@@ -49,23 +55,29 @@
         <slice material = "G4_AIR"         thickness = "Ecal_Alveolus_Air_Gap/2."                vis="Invisible" />
 	<slice material = "G4_Al"          thickness = "Ecal_Slab_shielding"        vis="Invisible" />
 	<slice material = "G4_Cu"          thickness = "Ecal_Slab_copper_thickness"        vis="Invisible" />
-	<slice material = "G4_AIR"         thickness = "Ecal_Slab_ASIC_thickness"   vis="Invisible"/>
+	<!--slice material = "G4_AIR"         thickness = "Ecal_Slab_ASIC_thickness"   vis="Invisible"/-->
 	<slice material = "PCB"            thickness = "Ecal_Slab_PCB_thickness"    vis="Invisible"/>
+	<!--slice material = "G4_AIR"         thickness = "2e-9*mm"                      vis="Invisible" /-->
         <slice material = "G4_AIR"         thickness = "Ecal_Slab_glue_gap"                      vis="Invisible" />
+	<!--slice material = "G4_AIR"         thickness = "2e-9*mm"                      vis="Invisible" /-->
         <slice material = "Si"             thickness = "Ecal_Si_thickness" sensitive = "yes"     vis="Invisible"    />
         <!--slice material = "G4_AIR"         thickness = "2e-9*mm"                      vis="Invisible" /-->
         <slice material = "GroundOrHVMix"  thickness = "Ecal_Slab_ground_thickness"              vis="Invisible" />
 	<!--slice material = "G4_AIR"         thickness = "1e-9*mm"                      vis="Invisible" /-->
-        <slice material = "CarbonFiber"    thickness = "Ecal_fiber_thickness_slabAbs"                    vis="Invisible" />
+        <!--slice material = "CarbonFiber"    thickness = "Ecal_fiber_thickness_slabAbs"                    vis="Invisible" /-->
+	<slice material = "g10"            thickness = "Ecal_fiber_thickness_slabAbs"                    vis="Invisible" />
         <slice material = "G4_W"           thickness = "Ecal_radiator_layers_set2_thickness"   vis="BlueVis"   radiator="yes"/>
-        <slice material = "CarbonFiber"    thickness = "Ecal_fiber_thickness_slabAbs"                    vis="Invisible" />
+        <!--slice material = "CarbonFiber"    thickness = "Ecal_fiber_thickness_slabAbs"                    vis="Invisible" /-->
+	<slice material = "g10"            thickness = "Ecal_fiber_thickness_slabAbs"                    vis="Invisible" />
 	<!--slice material = "G4_AIR"         thickness = "1e-9*mm"                      vis="Invisible" /-->
         <slice material = "GroundOrHVMix"  thickness = "Ecal_Slab_ground_thickness"              vis="Invisible" />
         <!--slice material = "G4_AIR"         thickness = "2e-9*mm"                      vis="Invisible" /-->
         <slice material = "Si"             thickness = "Ecal_Si_thickness" sensitive = "yes"     vis="Invisible"    />
+	<!--slice material = "G4_AIR"         thickness = "2e-9*mm"                      vis="Invisible" /-->
         <slice material = "G4_AIR"         thickness = "Ecal_Slab_glue_gap"                      vis="Invisible" />
+	<!--slice material = "G4_AIR"         thickness = "2e-9*mm"                      vis="Invisible" /-->
 	<slice material = "PCB"            thickness = "Ecal_Slab_PCB_thickness"    vis="Invisible"/>
-	<slice material = "G4_AIR"         thickness = "Ecal_Slab_ASIC_thickness"   vis="Invisible"/>
+	<!--slice material = "G4_AIR"         thickness = "Ecal_Slab_ASIC_thickness"   vis="Invisible"/-->
 	<slice material = "G4_Cu"          thickness = "Ecal_Slab_copper_thickness"        vis="Invisible" />
 	<slice material = "G4_Al"          thickness = "Ecal_Slab_shielding"        vis="Invisible" />
         <slice material = "G4_AIR"         thickness = "Ecal_Alveolus_Air_Gap/2."                vis="Invisible" />
@@ -76,7 +88,8 @@
 
   <readouts>
     <readout name="EcalBarrelCollection">
-      <segmentation type="MegatileLayerGridXY"/>
+      <segmentation type="MegatileLayerGridXY" grid_size_x="10.1667*mm" grid_size_y="10.1667*mm"/>
+      <!--segmentation type="WaferGridXY" grid_size_x="10.1667*mm" grid_size_y="10.1667*mm"/-->
       <id>system:5,module:3,stave:4,tower:5,layer:6,wafer:6,cellX:32:-16,cellY:-16</id>
     </readout>
   </readouts>
diff --git a/Detector/DetCEPCv4/compact/SEcal05_siw_ECRing.xml b/Detector/DetCEPCv4/compact/SEcal05_siw_ECRing.xml
index d4cde98f4497ecd9081e48bb2bdccf0dda972360..80b21fe4ef424e540376f273f796a7b91f0cd4bc 100644
--- a/Detector/DetCEPCv4/compact/SEcal05_siw_ECRing.xml
+++ b/Detector/DetCEPCv4/compact/SEcal05_siw_ECRing.xml
@@ -11,7 +11,7 @@
                    dz="EcalEndcapRing_max_z + env_safety"/>
             <shape type="Tube" rmin="0" rmax="EcalEndcapRing_inner_radius - env_safety" dz="2.0*EcalEndcapRing_max_z + env_safety"/>
 
-            <position x="0.5*(EcalEndcapRing_min_z + EcalEndcapRing_max_z)*tan(CepC_Main_Crossing_Angle/2)" y="0" z="0"/>
+            <position x="0.5*(EcalEndcapRing_min_z + EcalEndcapRing_max_z)*tan(Ecal_ECRing_Crossing_Angle/2)" y="0" z="0"/>
             <!-- position x="0" y="0" z="0"/ -->
 
           </shape>
@@ -25,54 +25,26 @@
       <staves  material = "G4_W"  vis="GreenVis"/>
 
       <layer repeat="Ecal_nlayers1/2" vis="SeeThrough" >
-        <slice material = "G4_AIR"         thickness = "Ecal_Alveolus_Air_Gap/2."                vis="Invisible" />
-	<slice material = "G4_Al"          thickness = "Ecal_Slab_shielding"        vis="Invisible" />
-	<slice material = "G4_Cu"          thickness = "Ecal_Slab_copper_thickness"        vis="Invisible" />
-	<slice material = "G4_AIR"         thickness = "Ecal_Slab_ASIC_thickness"   vis="Invisible"/>
-	<slice material = "PCB"            thickness = "Ecal_Slab_PCB_thickness"    vis="Invisible"/>
-        <slice material = "G4_AIR"         thickness = "Ecal_Slab_glue_gap"                      vis="Invisible" />
-        <slice material = "Si"             thickness = "Ecal_Si_thickness" sensitive = "yes"     limits="cal_limits" vis="RedVis"    />
-        <!--slice material = "G4_AIR"         thickness = "2e-9*mm"                      vis="Invisible" /-->
-        <slice material = "GroundOrHVMix"  thickness = "Ecal_Slab_ground_thickness"              vis="Invisible" />
-	<!--slice material = "G4_AIR"         thickness = "1e-9*mm"                      vis="Invisible" /-->
-        <slice material = "CarbonFiber"         thickness = "Ecal_fiber_thickness_slabAbs"                    vis="Invisible" />
-        <slice material = "G4_W"   thickness = "Ecal_radiator_layers_set1_thickness"   vis="GreenVis"   />
-        <slice material = "CarbonFiber"         thickness = "Ecal_fiber_thickness_slabAbs"                    vis="Invisible" />
-	<!--slice material = "G4_AIR"         thickness = "1e-9*mm"                      vis="Invisible" /-->
-        <slice material = "GroundOrHVMix"  thickness = "Ecal_Slab_ground_thickness"              vis="Invisible" />
-        <!--slice material = "G4_AIR"         thickness = "2e-9*mm"                      vis="Invisible" /-->
-        <slice material = "Si"             thickness = "Ecal_Si_thickness" sensitive = "yes"     limits="cal_limits" vis="RedVis"    />
-        <slice material = "G4_AIR"         thickness = "Ecal_Slab_glue_gap"                      vis="Invisible" />
-	<slice material = "PCB"            thickness = "Ecal_Slab_PCB_thickness"    vis="Invisible"/>
-	<slice material = "G4_AIR"         thickness = "Ecal_Slab_ASIC_thickness"   vis="Invisible"/>
-	<slice material = "G4_Cu"          thickness = "Ecal_Slab_copper_thickness"        vis="Invisible" />
-	<slice material = "G4_Al"          thickness = "Ecal_Slab_shielding"        vis="Invisible" />
-        <slice material = "G4_AIR"         thickness = "Ecal_Alveolus_Air_Gap/2."                vis="Invisible" />
+	<slice material = "g10"         thickness = "Ecal_ECRing_structure_thickness"                    vis="Invisible" />
+        <slice material = "Si"          thickness = "Ecal_Si_thickness" sensitive = "yes"     limits="cal_limits" vis="RedVis"    />
+        <slice material = "g10"         thickness = "Ecal_ECRing_structure_thickness"                    vis="Invisible" />
+	<slice material = "g10"         thickness = "Ecal_fiber_thickness_slabAbs"                    vis="Invisible" />
+        <slice material = "G4_W"        thickness = "Ecal_radiator_layers_set1_thickness"   vis="GreenVis"   />
+	<slice material = "g10"         thickness = "Ecal_fiber_thickness_slabAbs"                    vis="Invisible" />
+        <slice material = "g10"         thickness = "Ecal_ECRing_structure_thickness"                    vis="Invisible" />
+	<slice material = "Si"          thickness = "Ecal_Si_thickness" sensitive = "yes"     limits="cal_limits" vis="RedVis"    />
+	<slice material = "g10"         thickness = "Ecal_ECRing_structure_thickness"                    vis="Invisible" />
       </layer>
       <layer repeat="(Ecal_nlayers2+1)/2" vis="SeeThrough">
-        <slice material = "G4_AIR"         thickness = "Ecal_Alveolus_Air_Gap/2."                vis="Invisible" />
-	<slice material = "G4_Al"          thickness = "Ecal_Slab_shielding"        vis="Invisible" />
-	<slice material = "G4_Cu"          thickness = "Ecal_Slab_copper_thickness"        vis="Invisible" />
-	<slice material = "G4_AIR"         thickness = "Ecal_Slab_ASIC_thickness"   vis="Invisible"/>
-	<slice material = "PCB"            thickness = "Ecal_Slab_PCB_thickness"    vis="Invisible"/>
-        <slice material = "G4_AIR"         thickness = "Ecal_Slab_glue_gap"                      vis="Invisible" />
-        <slice material = "Si"             thickness = "Ecal_Si_thickness" sensitive = "yes"     limits="cal_limits" vis="RedVis"    />
-        <!--slice material = "G4_AIR"         thickness = "2e-9*mm"                      vis="Invisible" /-->
-        <slice material = "GroundOrHVMix"  thickness = "Ecal_Slab_ground_thickness"              vis="Invisible" />
-	<!--slice material = "G4_AIR"         thickness = "1e-9*mm"                      vis="Invisible" /-->
-        <slice material = "CarbonFiber"         thickness = "Ecal_fiber_thickness_slabAbs"                    vis="Invisible" />
-        <slice material = "G4_W"   thickness = "Ecal_radiator_layers_set2_thickness"   vis="GreenVis"   />
-        <slice material = "CarbonFiber"         thickness = "Ecal_fiber_thickness_slabAbs"                    vis="Invisible" />
-	<!--slice material = "G4_AIR"         thickness = "1e-9*mm"                      vis="Invisible" /-->
-        <slice material = "GroundOrHVMix"  thickness = "Ecal_Slab_ground_thickness"              vis="Invisible" />
-        <!--slice material = "G4_AIR"         thickness = "2e-9*mm"                      vis="Invisible" /-->
-        <slice material = "Si"             thickness = "Ecal_Si_thickness" sensitive = "yes"     limits="cal_limits" vis="RedVis"    />
-        <slice material = "G4_AIR"         thickness = "Ecal_Slab_glue_gap"                      vis="Invisible" />
-	<slice material = "PCB"            thickness = "Ecal_Slab_PCB_thickness"    vis="Invisible"/>
-	<slice material = "G4_AIR"         thickness = "Ecal_Slab_ASIC_thickness"   vis="Invisible"/>
-	<slice material = "G4_Cu"          thickness = "Ecal_Slab_copper_thickness"        vis="Invisible" />
-	<slice material = "G4_Al"          thickness = "Ecal_Slab_shielding"        vis="Invisible" />
-        <slice material = "G4_AIR"         thickness = "Ecal_Alveolus_Air_Gap/2."                vis="Invisible" />
+	<slice material = "g10"         thickness = "Ecal_ECRing_structure_thickness"                    vis="Invisible" />
+        <slice material = "Si"          thickness = "Ecal_Si_thickness" sensitive = "yes"     limits="cal_limits" vis="RedVis"    />
+	<slice material = "g10"         thickness = "Ecal_ECRing_structure_thickness"                    vis="Invisible" />
+        <slice material = "g10"         thickness = "Ecal_fiber_thickness_slabAbs"                    vis="Invisible" />
+        <slice material = "G4_W"        thickness = "Ecal_radiator_layers_set2_thickness"   vis="GreenVis"   />
+	<slice material = "g10"         thickness = "Ecal_fiber_thickness_slabAbs"                    vis="Invisible" />
+	<slice material = "g10"         thickness = "Ecal_ECRing_structure_thickness"                    vis="Invisible" />
+        <slice material = "Si"          thickness = "Ecal_Si_thickness" sensitive = "yes"     limits="cal_limits" vis="RedVis"    />
+	<slice material = "g10"         thickness = "Ecal_ECRing_structure_thickness"                    vis="Invisible" />
       </layer>
     </detector>
   </detectors>
diff --git a/Detector/DetCEPCv4/compact/SEcal05_siw_Endcaps.xml b/Detector/DetCEPCv4/compact/SEcal05_siw_Endcaps.xml
index 58931301fe84f2cff3bca62594778d319b46422f..f2763e65e070bfdf6b2da6eb7c9b6452dad3276a 100644
--- a/Detector/DetCEPCv4/compact/SEcal05_siw_Endcaps.xml
+++ b/Detector/DetCEPCv4/compact/SEcal05_siw_Endcaps.xml
@@ -27,16 +27,16 @@
         <slice material = "G4_AIR"         thickness = "Ecal_Alveolus_Air_Gap/2."                vis="Invisible" />
 	<slice material = "G4_Al"          thickness = "Ecal_Slab_shielding"        vis="Invisible" />
 	<slice material = "G4_Cu"          thickness = "Ecal_Slab_copper_thickness"        vis="Invisible" />
-	<slice material = "G4_AIR"         thickness = "Ecal_Slab_ASIC_thickness"   vis="Invisible"/>
+	<!--slice material = "G4_AIR"         thickness = "Ecal_Slab_ASIC_thickness"   vis="Invisible"/-->
 	<slice material = "PCB"            thickness = "Ecal_Slab_PCB_thickness"    vis="Invisible"/>
         <slice material = "G4_AIR"         thickness = "Ecal_Slab_glue_gap"                      vis="Invisible" />
         <slice material = "Si"             thickness = "Ecal_Si_thickness" sensitive = "yes"     vis="RedVis"    />
         <!--slice material = "G4_AIR"         thickness = "2e-9*mm"                      vis="Invisible" /-->
         <slice material = "GroundOrHVMix"  thickness = "Ecal_Slab_ground_thickness"              vis="Invisible" />
 	<!--slice material = "G4_AIR"         thickness = "1e-9*mm"                      vis="Invisible" /-->
-        <slice material = "CarbonFiber"         thickness = "Ecal_fiber_thickness_slabAbs"                    vis="Invisible" />
-        <slice material = "G4_W"   thickness = "Ecal_radiator_layers_set1_thickness"   vis="BlueVis"   />
-        <slice material = "CarbonFiber"         thickness = "Ecal_fiber_thickness_slabAbs"                    vis="Invisible" />
+        <slice material = "g10"            thickness = "Ecal_fiber_thickness_slabAbs"                    vis="Invisible" />
+        <slice material = "G4_W"           thickness = "Ecal_radiator_layers_set1_thickness"   vis="BlueVis"   />
+        <slice material = "g10"            thickness = "Ecal_fiber_thickness_slabAbs"                    vis="Invisible" />
 	<!--slice material = "G4_AIR"         thickness = "1e-9*mm"                      vis="Invisible" /-->
         <slice material = "GroundOrHVMix"  thickness = "Ecal_Slab_ground_thickness"              vis="Invisible" />
         <!--slice material = "G4_AIR"         thickness = "2e-9*mm"                      vis="Invisible" /-->
@@ -53,16 +53,16 @@
         <slice material = "G4_AIR"         thickness = "Ecal_Alveolus_Air_Gap/2."                vis="Invisible" />
 	<slice material = "G4_Al"          thickness = "Ecal_Slab_shielding"        vis="Invisible" />
 	<slice material = "G4_Cu"          thickness = "Ecal_Slab_copper_thickness"        vis="Invisible" />
-	<slice material = "G4_AIR"         thickness = "Ecal_Slab_ASIC_thickness"   vis="Invisible"/>
+	<!--slice material = "G4_AIR"         thickness = "Ecal_Slab_ASIC_thickness"   vis="Invisible"/-->
 	<slice material = "PCB"            thickness = "Ecal_Slab_PCB_thickness"    vis="Invisible"/>
         <slice material = "G4_AIR"         thickness = "Ecal_Slab_glue_gap"                      vis="Invisible" />
         <slice material = "Si"             thickness = "Ecal_Si_thickness" sensitive = "yes"     vis="RedVis"    />
         <!--slice material = "G4_AIR"         thickness = "2e-9*mm"                      vis="Invisible" /-->
         <slice material = "GroundOrHVMix"  thickness = "Ecal_Slab_ground_thickness"              vis="Invisible" />
 	<!--slice material = "G4_AIR"         thickness = "1e-9*mm"                      vis="Invisible" /-->
-        <slice material = "CarbonFiber"         thickness = "Ecal_fiber_thickness_slabAbs"                    vis="Invisible" />
-        <slice material = "G4_W"   thickness = "Ecal_radiator_layers_set2_thickness"   vis="BlueVis"   />
-        <slice material = "CarbonFiber"         thickness = "Ecal_fiber_thickness_slabAbs"                    vis="Invisible" />
+        <slice material = "g10"            thickness = "Ecal_fiber_thickness_slabAbs"                    vis="Invisible" />
+        <slice material = "G4_W"           thickness = "Ecal_radiator_layers_set2_thickness"   vis="BlueVis"   />
+        <slice material = "g10"            thickness = "Ecal_fiber_thickness_slabAbs"                    vis="Invisible" />
 	<!--slice material = "G4_AIR"         thickness = "1e-9*mm"                      vis="Invisible" /-->
         <slice material = "GroundOrHVMix"  thickness = "Ecal_Slab_ground_thickness"              vis="Invisible" />
         <!--slice material = "G4_AIR"         thickness = "2e-9*mm"                      vis="Invisible" /-->
@@ -80,7 +80,7 @@
 
   <readouts>
     <readout name="EcalEndcapsCollection">
-      <segmentation type="MegatileLayerGridXY"/>
+      <segmentation type="MegatileLayerGridXY" grid_size_x="10.1667*mm" grid_size_y="10.1667*mm"/>
       <id>system:5,module:3,stave:4,tower:5,layer:6,wafer:6,cellX:32:-16,cellY:-16</id>
     </readout>
   </readouts>
diff --git a/Detector/DetCEPCv4/compact/ecal_defs.xml b/Detector/DetCEPCv4/compact/ecal_defs.xml
index 53243de3a495a5fa877c67a56ec0f3f370ad3203..7cf7aaf375bf734656fbf7ad08b878fb3d778008 100644
--- a/Detector/DetCEPCv4/compact/ecal_defs.xml
+++ b/Detector/DetCEPCv4/compact/ecal_defs.xml
@@ -3,7 +3,7 @@
   <constant name="Ecal_Barrel_halfZ" value="TPC_Ecal_Hcal_barrel_halfZ"/>
 
   <constant name="Ecal_nlayers1" value="20"/>
-  <constant name="Ecal_nlayers2" value="10"/>
+  <constant name="Ecal_nlayers2" value="9"/>
   <constant name="Ecal_nlayers3" value="0"/>
   <constant name="Ecal_radiator_layers_set1_thickness" value="2.1*mm"/>
   <constant name="Ecal_radiator_layers_set2_thickness" value="4.2*mm"/>
@@ -11,14 +11,20 @@
 
   <constant name="Ecal_barrel_number_of_towers" value="5"/>
 
-  <constant name="Ecal_fiber_thickness_structure" value="0.42*mm"/> <!-- 0.5*(3.82 - 2.1 - 2*0.44)=  -->
-  <constant name="Ecal_fiber_thickness_alveolus" value="0.44*mm"/> <!--  0.88 / 2 -->
+  <!--constant name="Ecal_fiber_thickness_structure" value="0.42*mm"/--> <!-- 0.5*(3.82 - 2.1 - 2*0.44)=  -->
+  <constant name="Ecal_fiber_thickness_structure" value="0.3*mm"/>
+  <!--constant name="Ecal_fiber_thickness_alveolus" value="0.44*mm"/--> <!--  0.88 / 2 -->
+  <constant name="Ecal_fiber_thickness_alveolus" value="0.45*mm"/>
   <constant name="Ecal_fiber_thickness_slabAbs" value="0.15*mm"/>
 
-  <constant name="Ecal_front_face_thickness" value="0.66*mm"/> <!-- 4.04 - 2.1 - 0.44 - 2*0.42  = 0.66 -->
-  <constant name="Ecal_support_thickness" value="14.49*mm"/> <!-- 14.93 - 0.44 -->
+  <!--constant name="Ecal_front_face_thickness" value="0.66*mm"/--> <!-- 4.04 - 2.1 - 0.44 - 2*0.42  = 0.66 -->
+  <constant name="Ecal_front_face_thickness" value="2.0*mm"/>
+  <!--constant name="Ecal_support_thickness" value="14.49*mm"/--> <!-- 14.93 - 0.44 -->
+  <constant name="Ecal_support_thickness" value="9.3*mm"/>
+  <constant name="Ecal_support_material" type="string" value="g10"/>
 
-  <constant name="Ecal_lateral_face_thickness" value="(1.10+0.5)*mm"/> <!-- 1.54 - 0.44  --> <!-- 0.5 for the 1mm tolerance between modules -->
+  <!--constant name="Ecal_lateral_face_thickness" value="(1.10+0.5)*mm"/--> <!-- 1.54 - 0.44  --> <!-- 0.5 for the 1mm tolerance between modules -->
+  <constant name="Ecal_lateral_face_thickness" value="2.0*mm"/>
 
   <constant name="Ecal_Alveolus_Air_Gap" value="0.5*mm"/>
   <constant name="Ecal_Si_thickness" value=".5*mm"/>
@@ -34,24 +40,26 @@
   <constant name="Ecal_n_wafers_per_tower" value="2"/>
 
   <constant name="Ecal_barrel_z_modules" value="5"/>
-  <constant name="Ecal_Barrel_Preshower" value="0"/>
+  <constant name="Ecal_Barrel_Preshower" value="1"/>
   <constant name="Ecal_layer_pattern" type="string" value="0"/>
   <constant name="Ecal_end_of_slab_strategy" value="1"/>
   <constant name="Ecal_cells_across_megatile" value="18"/>
   <constant name="Ecal_strips_across_megatile" value="1"/>
   <constant name="Ecal_strips_along_megatile" value="1"/>
-  <constant name="Ecal_Endcap_Preshower" value="0"/>
+  <constant name="Ecal_Endcap_Preshower" value="1"/>
 
   <!-- constant name="Ecal_cables_gap" value="100.*mm"/ -->
   <constant name="Ecal_cables_gap" value="Ecal_endcap_zmin-TPC_Ecal_Hcal_barrel_halfZ"/>
 
-  <constant name="Ecal_Slab_Plug_length" value="8*mm"/>
-
+  <!--constant name="Ecal_Slab_Plug_length" value="8*mm"/-->
+  <constant name="Ecal_Slab_Plug_length" value="0*mm"/>
+  
   <!-- needed only for ecal ring driver... -->
   <constant name="Ecal_cells_size" value="10.*mm"/>
   <constant name="Ecal_Sc_reflector_thickness" value="0.057*mm"/>
   <constant name="Ecal_Sc_thickness" value="2.0*mm"/>
   <constant name="Ecal_Slab_Sc_PCB_thickness" value="0.8*mm"/>
-
+  <constant name="Ecal_ECRing_Crossing_Angle" value="0"/>
+  <constant name="Ecal_ECRing_structure_thickness" value="0.875*mm"/>
 </define>
 
diff --git a/Detector/DetCEPCv4/compact/top_defs.xml b/Detector/DetCEPCv4/compact/top_defs.xml
index 51652c84dc740e7388887e89c99378b169b86efd..8516b3a129614567b22deb7163e22f09b69dd8b1 100644
--- a/Detector/DetCEPCv4/compact/top_defs.xml
+++ b/Detector/DetCEPCv4/compact/top_defs.xml
@@ -44,7 +44,8 @@
   <constant name="Ecal_Tpc_gap" value="35*mm"/>
   <constant name="Ecal_Hcal_symmetry"   value="8"/>
 
-  <constant name="Ecal_barrel_thickness" value="196.96*mm"/>
+  <!--constant name="Ecal_barrel_thickness" value="196.96*mm"/-->
+  <constant name="Ecal_barrel_thickness" value="185.*mm"/>
 
   <constant name="Hcal_Ecal_gap" value="30*mm"/>
 
diff --git a/Detector/DetCEPCv4/compact/top_defs_CepC_v04.xml b/Detector/DetCEPCv4/compact/top_defs_CepC_v04.xml
index 9ad0a0233586cf356feb6692d423d11cd6fb8323..fd5f85b245d0bab1093693ebd7c3e961dd549ec5 100644
--- a/Detector/DetCEPCv4/compact/top_defs_CepC_v04.xml
+++ b/Detector/DetCEPCv4/compact/top_defs_CepC_v04.xml
@@ -6,7 +6,7 @@ all hardcoded overall dimensions which differ between large and small models
 
   <constant name="Field_nominal_value" value="3.0*tesla"/>
   <constant name="top_TPC_outer_radius"    value="1808*mm"/>
-  <constant name="Ecal_endcap_extra_size" value="52.68*mm"/>
+  <constant name="Ecal_endcap_extra_size" value="60.8*mm"/>
   <constant name="Ecal_endcap_number_of_towers" type="string" value="4 5"/>
 
 </define>
diff --git a/Detector/DetCEPCv4/src/calorimeter/SEcal05_Barrel.cpp b/Detector/DetCEPCv4/src/calorimeter/SEcal05_Barrel.cpp
index a0329b4e2e351969fa8e0f5b4e2ceed47a1f5f8e..11104445600631b3e42ada1907e76389e1e3bfb0 100644
--- a/Detector/DetCEPCv4/src/calorimeter/SEcal05_Barrel.cpp
+++ b/Detector/DetCEPCv4/src/calorimeter/SEcal05_Barrel.cpp
@@ -136,8 +136,6 @@ static Ref_t create_detector(Detector& theDetector, xml_h element, SensitiveDete
   string        det_name  = x_det.nameStr();
   Layering      layering (element);
 
-  Material      carbon_fibre = theDetector.material("CarbonFiber");
-
   int           det_id    = x_det.id();
   DetElement    sdet      (det_name,det_id);
 
@@ -193,6 +191,7 @@ static Ref_t create_detector(Detector& theDetector, xml_h element, SensitiveDete
   double Ecal_radiator_thickness3           = theDetector.constant<double>("Ecal_radiator_layers_set3_thickness");
 
   // CF support dimensions
+  std::string Ecal_support_material         = theDetector.constant<string>("Ecal_support_material");
   double Ecal_support_thickness             = theDetector.constant<double>("Ecal_support_thickness");
   double Ecal_front_face_thickness          = theDetector.constant<double>("Ecal_front_face_thickness");
   double Ecal_lateral_face_thickness        = theDetector.constant<double>("Ecal_lateral_face_thickness");
@@ -231,6 +230,7 @@ static Ref_t create_detector(Detector& theDetector, xml_h element, SensitiveDete
   }
 
   //---------------------------------
+  Material      carbon_fibre = theDetector.material(Ecal_support_material);
 
   // set up the helper, which will make a module for us
 
@@ -258,7 +258,12 @@ static Ref_t create_detector(Detector& theDetector, xml_h element, SensitiveDete
 			 Ecal_fiber_thickness_alveolus,   //     N_FIBERS_ALVEOLUS*Ecal_fiber_thickness,
                          Ecal_front_face_thickness,
                          Ecal_support_thickness);
-
+  cout << "SEcal05_Barrel: CF "
+       << Ecal_fiber_thickness_structure/dd4hep::mm << " mm "
+       << Ecal_fiber_thickness_alveolus/dd4hep::mm << " mm "
+       << Ecal_front_face_thickness/dd4hep::mm << " mm "
+       << Ecal_support_thickness/dd4hep::mm << " mm " << endl;
+    
   helper.setPlugLength( Ecal_plugLength );
 
   // check resulting thickness is consistent with what's in compact description
@@ -320,7 +325,8 @@ static Ref_t create_detector(Detector& theDetector, xml_h element, SensitiveDete
   //  double min_dim_x = max_dim_x - 2*module_thickness; // shorter one (assumes octagon)
 
   //  double max_dim_x    = 2. * tan(M_PI/nsides) * Ecal_inner_radius + module_thickness_noSupport / tan( 2*M_PI/nsides );  // longest side 
-  double max_dim_x    = 2. * tan(M_PI/nsides) * Ecal_inner_radius + module_thickness_noSupport / sin( 2*M_PI/nsides );  // longest side : fix DJeans 03/2017
+  //double max_dim_x    = 2. * tan(M_PI/nsides) * Ecal_inner_radius + module_thickness_noSupport / sin( 2*M_PI/nsides );  // longest side : fix DJeans 03/2017
+  double max_dim_x    = 2. * tan(M_PI/nsides) * Ecal_inner_radius + module_thickness / sin( 2*M_PI/nsides );  // in order to same as MokkaC's CEPC_v4, fucd 
   double min_dim_x = max_dim_x - 2*module_thickness/tan( 2*M_PI/nsides ) ; // shorter one
 
   if ( min_dim_x<0 || max_dim_x<0 ) {
@@ -388,7 +394,8 @@ static Ref_t create_detector(Detector& theDetector, xml_h element, SensitiveDete
   // altered to get alignment as in ECAL interface design doc fig10
   //   end of slabs aligned to inner face of support plate in next stave (not the outer surface)
   // double Y = (module_thickness/2.) / sin(M_PI/4.);
-  double Y = (module_thickness_noSupport/2.) / sin(2.*M_PI/nsides);
+  // double Y = (module_thickness_noSupport/2.) / sin(2.*M_PI/nsides);
+  double Y = (module_thickness/2.) / sin(2.*M_PI/nsides);
 
   // stave numbering from 1->8
   //   stave = 1 is in +ve x direction
diff --git a/Detector/DetCEPCv4/src/calorimeter/SEcal05_ECRing.cpp b/Detector/DetCEPCv4/src/calorimeter/SEcal05_ECRing.cpp
index 9499c1facf20346c61a4a6058ad21b28316f2e13..8a99826d1cf63683d84232e3b988a2e67727e233 100644
--- a/Detector/DetCEPCv4/src/calorimeter/SEcal05_ECRing.cpp
+++ b/Detector/DetCEPCv4/src/calorimeter/SEcal05_ECRing.cpp
@@ -121,7 +121,6 @@ static Ref_t create_detector(Detector& theDetector, xml_h element, SensitiveDete
   Layering      layering (element);
 
   Material      air       = theDetector.air();
-  Material      CF        = theDetector.material("CarbonFiber");
 
   int           det_id    = x_det.id();
   xml_comp_t    x_staves  = x_det.staves();
@@ -164,6 +163,7 @@ static Ref_t create_detector(Detector& theDetector, xml_h element, SensitiveDete
   double Ecal_radiator_thickness3           = theDetector.constant<double>("Ecal_radiator_layers_set3_thickness");
   double Ecal_Barrel_halfZ                  = theDetector.constant<double>("Ecal_Barrel_halfZ");
 
+  std::string Ecal_support_material         = theDetector.constant<string>("Ecal_support_material");
   double Ecal_support_thickness             = theDetector.constant<double>("Ecal_support_thickness");
   double Ecal_front_face_thickness          = theDetector.constant<double>("Ecal_front_face_thickness");
   double Ecal_lateral_face_thickness        = theDetector.constant<double>("Ecal_lateral_face_thickness");
@@ -185,11 +185,15 @@ static Ref_t create_detector(Detector& theDetector, xml_h element, SensitiveDete
   double      EcalEndcapRing_max_z          = theDetector.constant<double>("EcalEndcapRing_max_z");
 
 
-  double      crossing_angle = theDetector.constant<double>("CepC_Main_Crossing_Angle");
+  //double      crossing_angle = theDetector.constant<double>("CepC_Main_Crossing_Angle");
+  double      crossing_angle = theDetector.constant<double>("Ecal_ECRing_Crossing_Angle");
+
   bool        Ecal_Barrel_PreshowerLayer         = theDetector.constant<int>("Ecal_Barrel_Preshower") > 0;
 
   double      Ecal_barrel_thickness         = theDetector.constant<double>("Ecal_barrel_thickness");
 
+  Material      CF        = theDetector.material(Ecal_support_material);
+
   //========== fill data for reconstruction ============================
   dd4hep::rec::LayeredCalorimeterData* caloData = new dd4hep::rec::LayeredCalorimeterData ;
   caloData->layoutType = dd4hep::rec::LayeredCalorimeterData::EndcapLayout ;
@@ -257,7 +261,6 @@ static Ref_t create_detector(Detector& theDetector, xml_h element, SensitiveDete
   std::cout << " module_thickness = " << module_thickness  << std::endl;
 #endif
 
-
   double ECRingSiplateSize = Ecal_endcap_center_box_size
     - 2 * Ecal_EC_Ring_gap
     - 2 * Ecal_lateral_face_thickness;
@@ -295,7 +298,7 @@ static Ref_t create_detector(Detector& theDetector, xml_h element, SensitiveDete
     SubtractionSolid ECRingSolid( CenterECBox, CenterECTub, hole_position);
 
     //  Volume EnvLogECRing("ECRing",ECRingSolid,theDetector.material("g10"));
-    Volume EnvLogECRing("ECRing",ECRingSolid,theDetector.material("CarbonFiber")); // DJeans 5-sep-2016
+    Volume EnvLogECRing("ECRing",ECRingSolid,theDetector.material(Ecal_support_material)); // DJeans 5-sep-2016
 
     //==============================================================
     // build the layer and place into the ECRing
@@ -401,7 +404,7 @@ static Ref_t create_detector(Detector& theDetector, xml_h element, SensitiveDete
         // #########################
 
         Tube CenterECTubForSi(0.,
-                              Lcal_outer_radius + Ecal_Lcal_ring_gap + 0.001, // + tolerance,
+                              Lcal_outer_radius + Ecal_Lcal_ring_gap + 1e-9*dd4hep::mm, //0.001, // + tolerance,
                               module_thickness,
                               0.,
                               2 * M_PI);
diff --git a/Detector/DetCEPCv4/src/calorimeter/SEcal05_Endcaps.cpp b/Detector/DetCEPCv4/src/calorimeter/SEcal05_Endcaps.cpp
index a0f4c69ab8d19f05f2380a693f4549bbcf8dc8f5..34b93710ce20ca0d03b8972a4798e052c6d51943 100644
--- a/Detector/DetCEPCv4/src/calorimeter/SEcal05_Endcaps.cpp
+++ b/Detector/DetCEPCv4/src/calorimeter/SEcal05_Endcaps.cpp
@@ -130,7 +130,8 @@ static Ref_t create_detector(Detector& theDetector, xml_h element, SensitiveDete
   double Ecal_Barrel_halfZ                  = theDetector.constant<double>("Ecal_Barrel_halfZ");
 
   int    Ecal_barrel_number_of_towers       = theDetector.constant<int>("Ecal_barrel_number_of_towers");
-  
+
+  std::string Ecal_support_material         = theDetector.constant<string>("Ecal_support_material");
   double Ecal_support_thickness             = theDetector.constant<double>("Ecal_support_thickness");
   double Ecal_front_face_thickness          = theDetector.constant<double>("Ecal_front_face_thickness");
   double Ecal_lateral_face_thickness        = theDetector.constant<double>("Ecal_lateral_face_thickness");
@@ -248,12 +249,24 @@ static Ref_t create_detector(Detector& theDetector, xml_h element, SensitiveDete
   // check that resulting quadrant size is consistent with compact description
   // here we assume that the width of an alveolus in the endcaps is the same as that in the barrel.
   double barrel_alv_width    = ( Ecal_Barrel_halfZ*2./Ecal_barrel_z_modules - 2.*Ecal_lateral_face_thickness ) / Ecal_barrel_number_of_towers;
+  /*
   double calc_endcap_rout(EcalEndcap_inner_radius);
   for (size_t i=0; i<ntowers.size(); i++) {
     calc_endcap_rout+=ntowers[i]*barrel_alv_width + 2.*Ecal_lateral_face_thickness;
   }
 
   cout << "alveolus width = " << barrel_alv_width << endl;
+  */
+  // varied endcap alveolus same as MokkaC's CEPC_v4, fucd
+  // alveolus_dim_z in order to match, in fact, barrel_alv_width is okay.
+  double alveolus_dim_z = barrel_alv_width - 2 * Ecal_fiber_thickness_alveolus - 2 * Ecal_Slab_H_fiber_thickness - 2 * Ecal_Slab_shielding;
+  double calc_endcap_rout = EcalBarrel_inner_radius + module_thickness + Ecal_endcap_extra_size;
+  double endcap_y_botton      = EcalEndcap_inner_radius + Ecal_lateral_face_thickness;
+  double endcap_y_top         = calc_endcap_rout - Ecal_lateral_face_thickness;
+  double endcap_y_height      = endcap_y_top - endcap_y_botton;
+  double endcap_alv_n     = int((endcap_y_height/alveolus_dim_z) + 0.5);
+  //double endcap_alv_width = endcap_y_height/endcap_alv_n - 2 * Ecal_fiber_thickness_alveolus - 2 * Ecal_Slab_H_fiber_thickness - 2 * Ecal_Slab_shielding;
+  double endcap_alv_width = endcap_y_height/endcap_alv_n;
 
   //  compare calculated size vs that in compact description
   if ( fabs( calc_endcap_rout - EcalEndcap_outer_radius ) > 0.1*dd4hep::mm ) {
@@ -266,9 +279,9 @@ static Ref_t create_detector(Detector& theDetector, xml_h element, SensitiveDete
 
 
   helper.setTowersUnits( ntowers,
-			 barrel_alv_width,
+			 endcap_alv_width, //barrel_alv_width,
 			 Ecal_n_wafers_per_tower,
-			 Ecal_lateral_face_thickness,
+			 0, //Ecal_lateral_face_thickness,
                          Ecal_fiber_thickness_alveolus + Ecal_Slab_H_fiber_thickness + Ecal_Slab_shielding,
 			 Ecal_guard_ring_size );
 
@@ -288,14 +301,16 @@ static Ref_t create_detector(Detector& theDetector, xml_h element, SensitiveDete
   PolyhedraRegular ECPolyHedra(8, M_PI/8., 0., calc_endcap_rout, module_thickness);
 
   // take just one quadrant of the octagon, and remove the centre box
+  
   double quadr = calc_endcap_rout; // anything which is big enough
   Box quadrant( quadr, quadr , module_thickness);
+
   IntersectionSolid EndCapSolid( ECPolyHedra, 
 				 quadrant,
 				 Position( quadr - EcalEndcap_inner_radius, 
 					   quadr + EcalEndcap_inner_radius, 0 ) );
-
-  Volume EnvLogEndCap("EcalEndcapQuadrant",EndCapSolid,theDetector.material("CarbonFiber"));
+  
+  Volume EnvLogEndCap("EcalEndcapQuadrant",EndCapSolid,theDetector.material(Ecal_support_material));
 
   // kink position wrt bottom of quadrant (inside the lateral support)
   // Y==0 is defined as outer edge of lateral face of inner module of quadrant
@@ -303,11 +318,11 @@ static Ref_t create_detector(Detector& theDetector, xml_h element, SensitiveDete
 
   helper.setModuleDimensions(1, // xytype
 			     0, // xztype
-			     calc_endcap_rout + EcalEndcap_inner_radius, // dxMax
+			     calc_endcap_rout + EcalEndcap_inner_radius - 2*Ecal_lateral_face_thickness, // dxMax
 			     kink_y
 			     );
   
-  helper.setTranslation ( Position ( -EcalEndcap_inner_radius , EcalEndcap_inner_radius, -module_thickness/2. ) );
+  helper.setTranslation ( Position ( -EcalEndcap_inner_radius , EcalEndcap_inner_radius + Ecal_lateral_face_thickness, -module_thickness/2. ) );
 
   // make the module
 
@@ -315,13 +330,13 @@ static Ref_t create_detector(Detector& theDetector, xml_h element, SensitiveDete
   caloData->layoutType = LayeredCalorimeterData::EndcapLayout ;
 
   DetElement mod_det ("quad0",det_id);
-
+  
   helper.makeModule( EnvLogEndCap, 
 		     mod_det,
 		     *caloData,
 		     theDetector, 
 		     sens );
-
+  
   for (size_t i=0; i<caloData->layers.size(); i++) {
     caloData->layers[i].distance += Ecal_Barrel_halfZ + Ecal_cables_gap; // add IP->front face distance
   }
diff --git a/Detector/DetCEPCv4/src/calorimeter/SEcal05_Helpers.cpp b/Detector/DetCEPCv4/src/calorimeter/SEcal05_Helpers.cpp
index f5b57dcf0a37225ae152b788954ac4664967712a..bdb35c8da69378e12bf53d86e307684d0c12703c 100644
--- a/Detector/DetCEPCv4/src/calorimeter/SEcal05_Helpers.cpp
+++ b/Detector/DetCEPCv4/src/calorimeter/SEcal05_Helpers.cpp
@@ -149,6 +149,7 @@ std::vector <SEcal05_Helpers::dimposXYStruct> SEcal05_Helpers::getAbsPlateXYDime
     ss.posY = _module_dY_total/2.;
     absorbersheets.push_back(ss);
   }
+
   return absorbersheets;
 }
 
@@ -205,8 +206,7 @@ std::vector <SEcal05_Helpers::dimposXYStruct> SEcal05_Helpers::getSlabXYDimensio
           ss.posX = ss.sizeX/2.; // this aligns the -X end of slab
 
 	  ss.sizeX -=  _plugLength;  // DANIELHACK
-	  ss.posX  +=  _plugLength/2.;  // DANIELHACK      
-
+	  ss.posX  +=  _plugLength/2.;  // DANIELHACK
         } else {
 	  cout << " SEcal05_Helpers ERROR _module_XYtype = " << _module_XYtype << "!!!" << endl;
 	  assert(0);
@@ -409,7 +409,7 @@ void SEcal05_Helpers::makeModule( dd4hep::Volume & mod_vol,  // the volume we'll
   int det_id           = _x_det->id();
   xml_comp_t x_staves  = _x_det->staves();
 
-  _carbon_fibre_material = theDetector.material("CarbonFiber");
+  _carbon_fibre_material = theDetector.material(theDetector.constant<std::string>("Ecal_support_material"));
   _radiator_material     = theDetector.material(x_staves.materialStr());
   _air_material          = theDetector.air();
 
@@ -511,7 +511,6 @@ void SEcal05_Helpers::makeModule( dd4hep::Volume & mod_vol,  // the volume we'll
           // Position the layer.
           dd4hep::Position      bsl_pos = getTranslatedPosition(plSize.posX, plSize.posY, currentLayerBase_pos_Z + rad_pos_Z );
 
-	  //          dd4hep::PlacedVolume  barrelStructureLayer_phv = 
 	  mod_vol.placeVolume(barrelStructureLayer_vol, bsl_pos);
 
         } // loop over sheets
@@ -580,11 +579,9 @@ void SEcal05_Helpers::makeModule( dd4hep::Volume & mod_vol,  // the volume we'll
       for (size_t islab = 0; islab<slabDims.size(); islab++) {
         myLayerNumTemp = myLayerNum;
         double slab_dim_X  = slabDims[islab].sizeX;
-
+	double slab_dim_Y  = slabDims[islab].sizeY - 2.*_towerGap; //fucd
         // make an air volume for the alveolus
-        dd4hep::Box        l_box( slab_dim_X/2. ,
-                                            slabDims[islab].sizeY/2. - _CF_alvWall,
-                                            slab_dim_Z/2. );
+        dd4hep::Box        l_box( slab_dim_X/2., slab_dim_Y/2, slab_dim_Z/2. );
 
         dd4hep::Volume     l_vol( _det_name+"_alveolus_"+l_name, l_box, _air_material);
 	l_vol.setVisAttributes(theDetector.visAttributes( "GrayVis" ) );
@@ -607,10 +604,10 @@ void SEcal05_Helpers::makeModule( dd4hep::Volume & mod_vol,  // the volume we'll
           dd4hep::Material slice_material  = theDetector.material( x_slice.materialStr() );
 
 	  std::string vis_str = x_slice.visStr();
-
+	  
 	  if ( !x_slice.isSensitive() ) { // not the sensitive slice: just a layer of stuff
 
-	    dd4hep::Box      s_box( slab_dim_X/2. , slabDims[islab].sizeY/2. - _CF_alvWall, s_thick/2. );
+	    dd4hep::Box      s_box( slab_dim_X/2. , slab_dim_Y/2, s_thick/2. );
 	    dd4hep::Volume   s_vol(_det_name+"_"+l_name+"_"+s_name, s_box, slice_material);
 	    s_vol.setVisAttributes(theDetector.visAttributes( vis_str ));
 
@@ -619,12 +616,16 @@ void SEcal05_Helpers::makeModule( dd4hep::Volume & mod_vol,  // the volume we'll
 	    l_vol.placeVolume(s_vol, s_pos );
 
 	  } else { // sensitive slice
+	    dd4hep::Box      s_box( slab_dim_X/2. , slab_dim_Y/2, s_thick/2. );
+	    dd4hep::Volume   s_vol(_det_name+"_"+l_name+"_"+s_name, s_box, slice_material);
+            s_vol.setVisAttributes(theDetector.visAttributes( vis_str ));
 
+	    dd4hep::Position s_pos( 0, 0, s_pos_Z + s_thick/2. );
+	    l_vol.placeVolume(s_vol, s_pos );
             // Normal squared wafers - this is just the sensitive part
             // square piece of silicon, not including guard ring. guard ring material is not included
 
             dd4hep::Box WaferSiSolid( unit_sensitive_dim_Y/2., unit_sensitive_dim_Y/2., s_thick/2.);
-
 	    // get the standard cell size in X for this layer
 	    double cell_size_x = waferSeg ? waferSeg->cellDimensions(0)[0] : megatileSeg->cellDimensions(myLayerNumTemp, 0)[0];
 	    double cell_size_y = waferSeg ? waferSeg->cellDimensions(0)[1] : megatileSeg->cellDimensions(myLayerNumTemp, 0)[1];
@@ -682,8 +683,10 @@ void SEcal05_Helpers::makeModule( dd4hep::Volume & mod_vol,  // the volume we'll
 		WaferSiLog.setVisAttributes(theDetector.visAttributes( wafer_vis_str ));	  
                 WaferSiLog.setSensitiveDetector(sens);
 
-                dd4hep::Position w_pos(wafer_pos_X + megatile_size_x/2., wafer_pos_Y, s_pos_Z + s_thick/2. );
-                dd4hep::PlacedVolume wafer_phv = l_vol.placeVolume(WaferSiLog, w_pos );
+                //dd4hep::Position w_pos(wafer_pos_X + megatile_size_x/2., wafer_pos_Y, s_pos_Z + s_thick/2. );
+                //dd4hep::PlacedVolume wafer_phv = l_vol.placeVolume(WaferSiLog, w_pos );
+		dd4hep::Position w_pos(wafer_pos_X + megatile_size_x/2., wafer_pos_Y, 0);
+		dd4hep::PlacedVolume wafer_phv = s_vol.placeVolume(WaferSiLog, w_pos );
                 wafer_phv.addPhysVolID("wafer", wafer_num);
 		wafer_phv.addPhysVolID("layer", myLayerNumTemp );