diff --git a/Detector/DetCEPCv4/compact/FullDetGear.xml b/Detector/DetCEPCv4/compact/FullDetGear.xml
new file mode 100644
index 0000000000000000000000000000000000000000..00f51646ab7d08a72ee1f1d42d53d4f5dee70557
--- /dev/null
+++ b/Detector/DetCEPCv4/compact/FullDetGear.xml
@@ -0,0 +1,330 @@
+<gear>
+    <global detectorName="CEPC_v4" />
+    <!--Gear XML file automatically created with GearXML::createXMLFile ....-->
+    <BField type="ConstantBField" x="0.000000000e+00" y="0.000000000e+00" z="3.000000000e+00" />
+    <detectors>
+        <detector geartype="TPCParameters" name="TPC">
+            <maxDriftLength value="2.225000000e+03" />
+            <driftVelocity value="0.000000000e+00" />
+            <coordinateType value="polar" />
+            <modules>
+                <module>
+                    <moduleID value="0" />
+                    <readoutFrequency value="0.000000000e+00" />
+                    <PadRowLayout2D type="FixedPadSizeDiskLayout" rMin="3.840000000e+02" rMax="1.716000000e+03" padHeight="6.000000000e+00" padWidth="1.000000000e+00" maxRow="222" padGap="0.000000000e+00" phiMax="6.283185307e+00" />
+                    <offset x_r="0.000000000e+00" y_phi="0.000000000e+00" />
+                    <angle value="0.000000000e+00" />
+                    <enlargeActiveAreaBy value="0.000000000e+00" />
+                </module>
+            </modules>
+            <parameter name="TPCGasProperties_RadLen" type="double" value="1.155205461e+05" />
+            <parameter name="TPCGasProperties_dEdx" type="double" value="2.668179899e-07" />
+            <parameter name="TPCInnerWallProperties_RadLen" type="double" value="2.740688665e+03" />
+            <parameter name="TPCInnerWallProperties_dEdx" type="double" value="1.241647394e-05" />
+            <parameter name="TPCOuterWallProperties_RadLen" type="double" value="6.495646008e+03" />
+            <parameter name="TPCOuterWallProperties_dEdx" type="double" value="5.300932694e-06" />
+            <parameter name="TPCWallProperties_RadLen" type="double" value="2.740688665e+03" />
+            <parameter name="TPCWallProperties_dEdx" type="double" value="1.241647394e-05" />
+            <parameter name="tpcInnerRadius" type="double" value="3.290000000e+02" />
+            <parameter name="tpcInnerWallThickness" type="double" value="2.500000000e+01" />
+            <parameter name="tpcOuterRadius" type="double" value="1.808000000e+03" />
+            <parameter name="tpcOuterWallThickness" type="double" value="6.000000000e+01" />
+            <parameter name="tpcZAnode" type="double" value="4.600000000e+03" />
+        </detector>
+        <detector name="EcalBarrel" geartype="CalorimeterParameters">
+            <layout type="Barrel" symmetry="8" phi0="0.000000000e+00" />
+            <dimensions inner_r="1.847415655e+03" outer_z="2.350000000e+03" />
+            <layer repeat="19" thickness="5.250000000e+00" absorberThickness="2.100000000e+00" cellSize0="1.016666667e+01" cellSize1="1.016666667e+01" />
+            <layer repeat="1" thickness="6.300000000e+00" absorberThickness="2.100000000e+00" cellSize0="1.016666667e+01" cellSize1="1.016666667e+01" />
+            <layer repeat="9" thickness="7.350000000e+00" absorberThickness="4.200000000e+00" cellSize0="1.016666667e+01" cellSize1="1.016666667e+01" />
+        </detector>
+        <detector name="EcalEndcap" geartype="CalorimeterParameters">
+            <layout type="Endcap" symmetry="2" phi0="0.000000000e+00" />
+            <dimensions inner_r="4.000000000e+02" outer_r="2.088800000e+03" inner_z="2.450000000e+03" />
+            <layer repeat="19" thickness="5.250000000e+00" absorberThickness="2.100000000e+00" cellSize0="1.016666667e+01" cellSize1="1.016666667e+01" />
+            <layer repeat="1" thickness="6.300000000e+00" absorberThickness="2.100000000e+00" cellSize0="1.016666667e+01" cellSize1="1.016666667e+01" />
+            <layer repeat="9" thickness="7.350000000e+00" absorberThickness="4.200000000e+00" cellSize0="1.016666667e+01" cellSize1="1.016666667e+01" />
+        </detector>
+        <detector name="EcalPlug" geartype="CalorimeterParameters">
+            <layout type="Endcap" symmetry="2" phi0="0.000000000e+00" />
+            <dimensions inner_r="2.400000000e+02" outer_r="4.000000000e+02" inner_z="2.450000000e+03" />
+            <layer repeat="19" thickness="5.250000000e+00" absorberThickness="2.100000000e+00" cellSize0="1.016666667e+01" cellSize1="1.016666667e+01" />
+            <layer repeat="1" thickness="6.300000000e+00" absorberThickness="2.100000000e+00" cellSize0="1.016666667e+01" cellSize1="1.016666667e+01" />
+            <layer repeat="9" thickness="7.350000000e+00" absorberThickness="4.200000000e+00" cellSize0="1.016666667e+01" cellSize1="1.016666667e+01" />
+        </detector>
+        <detector name="YokeBarrel" geartype="CalorimeterParameters">
+            <layout type="Barrel" symmetry="12" phi0="0.000000000e+00" />
+            <dimensions inner_r="4.173929932e+03" outer_z="4.072000000e+03" />
+            <layer repeat="1" thickness="4.000000000e+01" absorberThickness="0.000000000e+00" cellSize0="3.000000000e+01" cellSize1="3.000000000e+01" />
+            <layer repeat="10" thickness="1.400000000e+02" absorberThickness="1.000000000e+02" cellSize0="3.000000000e+01" cellSize1="3.000000000e+01" />
+            <layer repeat="3" thickness="6.000000000e+02" absorberThickness="5.600000000e+02" cellSize0="3.000000000e+01" cellSize1="3.000000000e+01" />
+        </detector>
+        <detector name="YokeEndcap" geartype="CalorimeterParameters">
+            <layout type="Endcap" symmetry="2" phi0="0.000000000e+00" />
+            <dimensions inner_r="3.200000000e+02" outer_r="7.414929932e+03" inner_z="4.072000000e+03" />
+            <layer repeat="10" thickness="1.400000000e+02" absorberThickness="1.000000000e+02" cellSize0="3.000000000e+01" cellSize1="3.000000000e+01" />
+            <layer repeat="2" thickness="6.000000000e+02" absorberThickness="5.600000000e+02" cellSize0="3.000000000e+01" cellSize1="3.000000000e+01" />
+        </detector>
+        <detector name="YokePlug" geartype="CalorimeterParameters">
+            <layout type="Endcap" symmetry="2" phi0="0.000000000e+00" />
+            <dimensions inner_r="3.200000000e+02" outer_r="2.849254326e+03" inner_z="3.781430000e+03" />
+            <parameter name="YokePlugThickness" type="double" value="2.905700000e+02" />
+        </detector>
+        <detector name="HcalBarrel" geartype="CalorimeterParameters">
+            <layout type="Barrel" symmetry="8" phi0="1.570796327e+00" />
+            <dimensions inner_r="2.058000000e+03" outer_z="2.350000000e+03" />
+            <layer repeat="40" thickness="2.673000000e+01" absorberThickness="2.000000000e+01" cellSize0="1.000000000e+01" cellSize1="1.000000000e+01" />
+            <parameter name="Hcal_barrel_number_modules" type="int" value="5" />
+            <parameter name="N_cells_z" type="int" value="91" />
+            <parameter name="FrameWidth" type="double" value="1.000000000e+00" />
+            <parameter name="Hcal_lateral_structure_thickness" type="double" value="1.000000000e+01" />
+            <parameter name="Hcal_modules_gap" type="double" value="2.000000000e+00" />
+            <parameter name="Hcal_outer_radius" type="double" value="3.144432447e+03" />
+            <parameter name="Hcal_virtual_cell_size" type="double" value="1.000000000e+01" />
+            <parameter name="InnerOctoSize" type="double" value="1.704903012e+03" />
+            <parameter name="RPC_PadSeparation" type="double" value="0.000000000e+00" />
+            <parameter name="TPC_Ecal_Hcal_barrel_halfZ" type="double" value="2.350000000e+03" />
+        </detector>
+        <detector name="HcalEndcap" geartype="CalorimeterParameters">
+            <layout type="Endcap" symmetry="2" phi0="0.000000000e+00" />
+            <dimensions inner_r="3.500000000e+02" outer_r="3.144432447e+03" inner_z="2.650000000e+03" />
+            <layer repeat="40" thickness="2.673000000e+01" absorberThickness="2.000000000e+01" cellSize0="1.000000000e+01" cellSize1="1.000000000e+01" />
+            <parameter name="FrameWidth" type="double" value="0.000000000e+00" />
+            <parameter name="Hcal_virtual_cell_size" type="double" value="1.000000000e+01" />
+        </detector>
+        <detector name="HcalRing" geartype="CalorimeterParameters">
+            <layout type="Endcap" symmetry="2" phi0="0.000000000e+00" />
+            <dimensions inner_r="2.138800000e+03" outer_r="3.144432447e+03" inner_z="2.450000000e+03" />
+            <layer repeat="6" thickness="2.673000000e+01" absorberThickness="2.000000000e+01" cellSize0="1.000000000e+01" cellSize1="1.000000000e+01" />
+            <parameter name="FrameWidth" type="double" value="0.000000000e+00" />
+            <parameter name="Hcal_virtual_cell_size" type="double" value="1.000000000e+01" />
+        </detector>
+        <detector name="Lcal" geartype="CalorimeterParameters">
+            <layout type="Endcap" symmetry="1" phi0="0.000000000e+00" />
+            <dimensions inner_r="3.225828541e+01" outer_r="9.880000000e+01" inner_z="9.519000000e+02" />
+            <layer repeat="30" thickness="4.290000000e+00" absorberThickness="3.500000000e+00" cellSize0="1.039714290e+00" cellSize1="1.308996939e-01" />
+            <parameter name="beam_crossing_angle" type="double" value="0.000000000e+00" />
+        </detector>
+        <detector name="VXD" geartype="ZPlanarParameters">
+            <type technology="HYBRID" />
+            <shell halfLength="1.450000000e+02" gap="0.000000000e+00" innerRadius="6.500000000e+01" outerRadius="6.549392000e+01" radLength="3.527597571e+02" />
+            <layers>
+                <layer nLadders="10" phi0="-1.570796327e+00">
+                    <ladder distance="1.600000000e+01" thickness="1.000000000e+00" width="1.150000000e+01" length="6.250000000e+01" offset="-1.874869853e+00" radLength="1.014262421e+03" />
+                    <sensitive distance="1.595000000e+01" thickness="5.000000000e-02" width="1.100000000e+01" length="6.250000000e+01" offset="-1.624869853e+00" radLength="9.366070445e+01" />
+                </layer>
+                <layer nLadders="10" phi0="-1.570796327e+00">
+                    <ladder distance="1.700000000e+01" thickness="1.000000000e+00" width="1.150000000e+01" length="6.250000000e+01" offset="-1.874869853e+00" radLength="1.014262421e+03" />
+                    <sensitive distance="1.800000000e+01" thickness="5.000000000e-02" width="1.100000000e+01" length="6.250000000e+01" offset="-1.624869853e+00" radLength="9.366070445e+01" />
+                </layer>
+                <layer nLadders="11" phi0="-1.570796327e+00">
+                    <ladder distance="3.700000000e+01" thickness="1.000000000e+00" width="2.250000000e+01" length="1.250000000e+02" offset="-1.837940563e+00" radLength="1.014262421e+03" />
+                    <sensitive distance="3.695000000e+01" thickness="5.000000000e-02" width="2.200000000e+01" length="1.250000000e+02" offset="-1.587940563e+00" radLength="9.366070445e+01" />
+                </layer>
+                <layer nLadders="11" phi0="-1.570796327e+00">
+                    <ladder distance="3.800000000e+01" thickness="1.000000000e+00" width="2.250000000e+01" length="1.250000000e+02" offset="-1.837940563e+00" radLength="1.014262421e+03" />
+                    <sensitive distance="3.900000000e+01" thickness="5.000000000e-02" width="2.200000000e+01" length="1.250000000e+02" offset="-1.587940563e+00" radLength="9.366070445e+01" />
+                </layer>
+                <layer nLadders="17" phi0="-1.570796327e+00">
+                    <ladder distance="5.800000000e+01" thickness="1.000000000e+00" width="2.250000000e+01" length="1.250000000e+02" offset="-2.636744400e+00" radLength="1.014262421e+03" />
+                    <sensitive distance="5.795000000e+01" thickness="5.000000000e-02" width="2.200000000e+01" length="1.250000000e+02" offset="-2.386744400e+00" radLength="9.366070445e+01" />
+                </layer>
+                <layer nLadders="17" phi0="-1.570796327e+00">
+                    <ladder distance="5.900000000e+01" thickness="1.000000000e+00" width="2.250000000e+01" length="1.250000000e+02" offset="-2.636744400e+00" radLength="1.014262421e+03" />
+                    <sensitive distance="6.000000000e+01" thickness="5.000000000e-02" width="2.200000000e+01" length="1.250000000e+02" offset="-2.386744400e+00" radLength="9.366070445e+01" />
+                </layer>
+            </layers>
+        </detector>
+        <detector name="FTD" geartype="FTDParameters">
+            <layers>
+                <layer nPetals="16" nSensors="1" isDoubleSided="0" sensorType="PIXEL" petalOpenningAngle="1.963495408e-01" phi0="0.000000000e+00" alpha="0.000000000e+00" zoffset="1.500000000e+00" zsign0="-1.000000000e+00" zposition="2.200000000e+02">
+                    <support thickness="1.000000000e+00" width="1.180723890e+02" lengthMin="2.502788316e+01" lengthMax="7.200000000e+01" rInner="2.950000000e+01" radLength="2.860837413e+02" />
+                    <sensitive thickness="2.000000000e-02" width="1.180723890e+02" lengthMin="2.502788316e+01" lengthMax="7.200000000e+01" rInner="2.950000000e+01" radLength="9.366070445e+01" />
+                </layer>
+                <layer nPetals="16" nSensors="1" isDoubleSided="0" sensorType="PIXEL" petalOpenningAngle="1.963495408e-01" phi0="0.000000000e+00" alpha="0.000000000e+00" zoffset="1.500000000e+00" zsign0="-1.000000000e+00" zposition="3.713094000e+02">
+                    <support thickness="1.000000000e+00" width="1.170317258e+02" lengthMin="2.544188474e+01" lengthMax="7.200000000e+01" rInner="3.054066325e+01" radLength="2.860837413e+02" />
+                    <sensitive thickness="2.000000000e-02" width="1.170317258e+02" lengthMin="2.544188474e+01" lengthMax="7.200000000e+01" rInner="3.054066325e+01" radLength="9.366070445e+01" />
+                </layer>
+                <layer nPetals="16" nSensors="2" isDoubleSided="1" sensorType="STRIP" petalOpenningAngle="1.963495408e-01" phi0="0.000000000e+00" alpha="0.000000000e+00" zoffset="1.500000000e+00" zsign0="-1.000000000e+00" zposition="6.429059500e+02">
+                    <support thickness="2.000000000e+00" width="2.600401444e+02" lengthMin="1.903959852e+01" lengthMax="1.224900000e+02" rInner="3.251798652e+01" radLength="2.860837413e+02" />
+                    <sensitive thickness="2.000000000e-01" width="2.600401444e+02" lengthMin="1.903959852e+01" lengthMax="1.224900000e+02" rInner="3.251798652e+01" radLength="9.366070445e+01" />
+                </layer>
+                <layer nPetals="16" nSensors="2" isDoubleSided="1" sensorType="STRIP" petalOpenningAngle="1.963495408e-01" phi0="0.000000000e+00" alpha="0.000000000e+00" zoffset="1.500000000e+00" zsign0="-1.000000000e+00" zposition="8.440001500e+02">
+                    <support thickness="2.000000000e+00" width="2.688914284e+02" lengthMin="1.551833880e+01" lengthMax="1.224900000e+02" rInner="3.397826298e+01" radLength="2.860837413e+02" />
+                    <sensitive thickness="2.000000000e-01" width="2.688914284e+02" lengthMin="1.551833880e+01" lengthMax="1.224900000e+02" rInner="3.397826298e+01" radLength="9.366070445e+01" />
+                </layer>
+                <layer nPetals="16" nSensors="2" isDoubleSided="1" sensorType="STRIP" petalOpenningAngle="1.963495408e-01" phi0="0.000000000e+00" alpha="0.000000000e+00" zoffset="1.500000000e+00" zsign0="-1.000000000e+00" zposition="9.249600000e+02">
+                    <support thickness="2.000000000e+00" width="2.683035260e+02" lengthMin="1.575222092e+01" lengthMax="1.224900000e+02" rInner="3.456616538e+01" radLength="2.860837413e+02" />
+                    <sensitive thickness="2.000000000e-01" width="2.683035260e+02" lengthMin="1.575222092e+01" lengthMax="1.224900000e+02" rInner="3.456616538e+01" radLength="9.366070445e+01" />
+                </layer>
+            </layers>
+            <parameter name="strip_angle_deg" type="double" value="5.000000000e+00" />
+            <parameter name="strip_length_mm" type="double" value="2.500000000e+02" />
+            <parameter name="strip_pitch_mm" type="double" value="1.000000000e-02" />
+            <parameter name="strip_width_mm" type="double" value="1.000000000e-03" />
+        </detector>
+        <detector name="SIT" geartype="ZPlanarParameters">
+            <type technology="CCD" />
+            <shell halfLength="0.000000000e+00" gap="0.000000000e+00" innerRadius="0.000000000e+00" outerRadius="0.000000000e+00" radLength="0.000000000e+00" />
+            <layers>
+                <layer nLadders="10" phi0="0.000000000e+00">
+                    <ladder distance="1.531000000e+02" thickness="1.000000000e+00" width="9.916044311e+01" length="3.680000000e+02" offset="0.000000000e+00" radLength="2.134851878e+02" />
+                    <sensitive distance="1.529000000e+02" thickness="2.000000000e-01" width="9.916044311e+01" length="3.680000000e+02" offset="0.000000000e+00" radLength="9.366070445e+01" />
+                </layer>
+                <layer nLadders="10" phi0="0.000000000e+00">
+                    <ladder distance="1.544000000e+02" thickness="1.000000000e+00" width="1.001352022e+02" length="3.680000000e+02" offset="0.000000000e+00" radLength="2.134851878e+02" />
+                    <sensitive distance="1.554000000e+02" thickness="2.000000000e-01" width="1.001352022e+02" length="3.680000000e+02" offset="0.000000000e+00" radLength="9.366070445e+01" />
+                </layer>
+                <layer nLadders="19" phi0="0.000000000e+00">
+                    <ladder distance="3.001000000e+02" thickness="1.000000000e+00" width="9.988891763e+01" length="6.440000000e+02" offset="0.000000000e+00" radLength="2.134851878e+02" />
+                    <sensitive distance="2.999000000e+02" thickness="2.000000000e-01" width="9.988891763e+01" length="6.440000000e+02" offset="0.000000000e+00" radLength="9.366070445e+01" />
+                </layer>
+                <layer nLadders="19" phi0="0.000000000e+00">
+                    <ladder distance="3.014000000e+02" thickness="1.000000000e+00" width="1.003895291e+02" length="6.440000000e+02" offset="0.000000000e+00" radLength="2.134851878e+02" />
+                    <sensitive distance="3.024000000e+02" thickness="2.000000000e-01" width="1.003895291e+02" length="6.440000000e+02" offset="0.000000000e+00" radLength="9.366070445e+01" />
+                </layer>
+            </layers>
+            <parameter name="sensor_length_mm" type="double" value="9.200000000e+01" />
+            <parameter name="strip_angle_deg" type="double" value="7.000000000e+00" />
+            <parameter name="strip_length_mm" type="double" value="9.200000000e+01" />
+            <parameter name="strip_pitch_mm" type="double" value="5.000000000e-02" />
+            <parameter name="strip_width_mm" type="double" value="1.250000000e-02" />
+            <parameter name="n_sensors_per_ladder" type="IntVec" value="8 8 14 14" />
+        </detector>
+        <detector name="SET" geartype="ZPlanarParameters">
+            <type technology="CCD" />
+            <shell halfLength="0.000000000e+00" gap="0.000000000e+00" innerRadius="0.000000000e+00" outerRadius="0.000000000e+00" radLength="0.000000000e+00" />
+            <layers>
+                <layer nLadders="24" phi0="0.000000000e+00">
+                    <ladder distance="1.811100000e+03" thickness="1.000000000e+00" width="4.766190158e+02" length="2.300000000e+03" offset="0.000000000e+00" radLength="2.134851878e+02" />
+                    <sensitive distance="1.810900000e+03" thickness="2.000000000e-01" width="4.766190158e+02" length="2.300000000e+03" offset="0.000000000e+00" radLength="9.366070445e+01" />
+                </layer>
+                <layer nLadders="24" phi0="0.000000000e+00">
+                    <ladder distance="1.812400000e+03" thickness="1.000000000e+00" width="4.770139733e+02" length="2.300000000e+03" offset="0.000000000e+00" radLength="2.134851878e+02" />
+                    <sensitive distance="1.813400000e+03" thickness="2.000000000e-01" width="4.770139733e+02" length="2.300000000e+03" offset="0.000000000e+00" radLength="9.366070445e+01" />
+                </layer>
+            </layers>
+            <parameter name="sensor_length_mm" type="double" value="9.200000000e+01" />
+            <parameter name="strip_angle_deg" type="double" value="7.000000000e+00" />
+            <parameter name="strip_length_mm" type="double" value="9.200000000e+01" />
+            <parameter name="strip_pitch_mm" type="double" value="5.000000000e-02" />
+            <parameter name="strip_width_mm" type="double" value="1.250000000e-02" />
+            <parameter name="n_sensors_per_ladder" type="IntVec" value="50 50" />
+        </detector>
+        <detector name="BeamPipe" geartype="GearParameters">
+            <parameter name="BeamPipeHalfZ" type="double" value="7.300000000e+02" />
+            <parameter name="BeamPipeProperties_RadLen" type="double" value="3.527597571e+02" />
+            <parameter name="BeamPipeProperties_dEdx" type="double" value="2.941795296e-04" />
+            <parameter name="BeamPipeRadius" type="double" value="1.400000000e+01" />
+            <parameter name="BeamPipeThickness" type="double" value="5.000000000e-01" />
+            <parameter name="RInner" type="DoubleVec" value="1.400000000e+01 1.400000000e+01 2.500000000e+00 1.300000000e+01 1.300000000e+01 1.300000000e+01 1.550000000e+01 1.550000000e+01 1.900000000e+01 1.900000000e+01 2.500000000e+01 2.500000000e+01 1.300000000e+01 1.300000000e+01 2.050000000e+01 2.050000000e+01 2.300000000e+01 2.300000000e+01 2.600000000e+01 2.600000000e+01 3.200000000e+01 3.200000000e+01" />
+            <parameter name="ROuter" type="DoubleVec" value="1.450000000e+01 1.450000000e+01 1.800000000e+01 1.800000000e+01 1.550000000e+01 1.550000000e+01 1.900000000e+01 1.900000000e+01 2.500000000e+01 2.500000000e+01 3.300000000e+01 3.300000000e+01 1.550000000e+01 1.550000000e+01 2.300000000e+01 2.300000000e+01 2.600000000e+01 2.600000000e+01 3.200000000e+01 3.200000000e+01 4.000000000e+01 4.000000000e+01" />
+            <parameter name="Z" type="DoubleVec" value="0.000000000e+00 5.000000000e+02 7.000000000e+02 7.010000000e+02 2.200000000e+03 2.200000000e+03 2.200000000e+03 2.200000000e+03 2.200000000e+03 2.200000000e+03 2.200000000e+03 2.200000000e+03 3.950000000e+03 3.950000000e+03 4.450000000e+03 4.450000000e+03 4.450000000e+03 4.450000000e+03 4.450000000e+03 4.450000000e+03 4.450000000e+03 4.450000000e+03" />
+        </detector>
+        <detector name="CoilParameters" geartype="GearParameters">
+            <parameter name="Coil_cryostat_c_modules_half_z" type="double" value="1.224000000e+03" />
+            <parameter name="Coil_cryostat_c_modules_inner_radius" type="double" value="3.348930000e+03" />
+            <parameter name="Coil_cryostat_c_modules_outer_radius" type="double" value="3.733930000e+03" />
+            <parameter name="Coil_cryostat_half_z" type="double" value="3.872000000e+03" />
+            <parameter name="Coil_cryostat_inner_cyl_half_z" type="double" value="3.872000000e+03" />
+            <parameter name="Coil_cryostat_inner_cyl_inner_radius" type="double" value="3.173930000e+03" />
+            <parameter name="Coil_cryostat_inner_cyl_outer_radius" type="double" value="3.963930000e+03" />
+            <parameter name="Coil_cryostat_inner_radius" type="double" value="3.173930000e+03" />
+            <parameter name="Coil_cryostat_mandrel_half_z" type="double" value="3.675000000e+03" />
+            <parameter name="Coil_cryostat_mandrel_inner_radius" type="double" value="3.733930000e+03" />
+            <parameter name="Coil_cryostat_mandrel_outer_radius" type="double" value="3.808930000e+03" />
+            <parameter name="Coil_cryostat_modules_half_z" type="double" value="7.960000000e+02" />
+            <parameter name="Coil_cryostat_modules_inner_radius" type="double" value="3.348930000e+03" />
+            <parameter name="Coil_cryostat_modules_outer_radius" type="double" value="3.733930000e+03" />
+            <parameter name="Coil_cryostat_outer_cyl_half_z" type="double" value="3.872000000e+03" />
+            <parameter name="Coil_cryostat_outer_cyl_inner_radius" type="double" value="3.893930000e+03" />
+            <parameter name="Coil_cryostat_outer_cyl_outer_radius" type="double" value="3.923930000e+03" />
+            <parameter name="Coil_cryostat_outer_radius" type="double" value="3.923930000e+03" />
+            <parameter name="Coil_cryostat_scint1_inner_radius" type="double" value="3.263930000e+03" />
+            <parameter name="Coil_cryostat_scint1_outer_radius" type="double" value="3.273930000e+03" />
+            <parameter name="Coil_cryostat_scint1_zposend" type="double" value="3.972000000e+03" />
+            <parameter name="Coil_cryostat_scint1_zposin" type="double" value="3.772000000e+03" />
+            <parameter name="Coil_cryostat_scint2_inner_radius" type="double" value="3.278930000e+03" />
+            <parameter name="Coil_cryostat_scint2_outer_radius" type="double" value="3.288930000e+03" />
+            <parameter name="Coil_cryostat_scint2_zposend" type="double" value="3.972000000e+03" />
+            <parameter name="Coil_cryostat_scint2_zposin" type="double" value="3.772000000e+03" />
+            <parameter name="Coil_cryostat_scint3_inner_radius" type="double" value="3.833930000e+03" />
+            <parameter name="Coil_cryostat_scint3_outer_radius" type="double" value="3.843930000e+03" />
+            <parameter name="Coil_cryostat_scint3_zposend" type="double" value="3.972000000e+03" />
+            <parameter name="Coil_cryostat_scint3_zposin" type="double" value="3.772000000e+03" />
+            <parameter name="Coil_cryostat_scint4_inner_radius" type="double" value="3.818930000e+03" />
+            <parameter name="Coil_cryostat_scint4_outer_radius" type="double" value="3.828930000e+03" />
+            <parameter name="Coil_cryostat_scint4_zposend" type="double" value="3.972000000e+03" />
+            <parameter name="Coil_cryostat_scint4_zposin" type="double" value="3.772000000e+03" />
+            <parameter name="Coil_cryostat_side_l_half_z" type="double" value="2.500000000e+01" />
+            <parameter name="Coil_cryostat_side_l_inner_radius" type="double" value="3.213930000e+03" />
+            <parameter name="Coil_cryostat_side_l_outer_radius" type="double" value="3.893930000e+03" />
+            <parameter name="Coil_cryostat_side_r_half_z" type="double" value="2.500000000e+01" />
+            <parameter name="Coil_cryostat_side_r_inner_radius" type="double" value="3.213930000e+03" />
+            <parameter name="Coil_cryostat_side_r_outer_radius" type="double" value="3.893930000e+03" />
+            <parameter name="Coil_material_c_modules" type="string" value="aluminium" />
+            <parameter name="Coil_material_inner_cyl" type="string" value="aluminium" />
+            <parameter name="Coil_material_mandrel" type="string" value="aluminium" />
+            <parameter name="Coil_material_modules" type="string" value="aluminium" />
+            <parameter name="Coil_material_outer_cyl" type="string" value="aluminium" />
+            <parameter name="Coil_material_scint1" type="string" value="polystyrene" />
+            <parameter name="Coil_material_scint2" type="string" value="polystyrene" />
+            <parameter name="Coil_material_scint3" type="string" value="polystyrene" />
+            <parameter name="Coil_material_scint4" type="string" value="polystyrene" />
+            <parameter name="Coil_material_side_l" type="string" value="aluminium" />
+            <parameter name="Coil_material_side_r" type="string" value="aluminium" />
+        </detector>
+        <detector name="MokkaParameters" geartype="GearParameters">
+            <parameter name="Ecal_endcap_outer_radius" type="string" value="2088.8" />
+            <parameter name="Ecal_endcap_plug_rmin" type="string" value="240" />
+            <parameter name="Ecal_endcap_zmax" type="string" value="2635" />
+            <parameter name="Ecal_endcap_zmin" type="string" value="2450" />
+            <parameter name="Ecal_outer_radius" type="string" value="2028" />
+            <parameter name="Hcal_R_max" type="string" value="3144.43" />
+            <parameter name="Hcal_endcap_zmin" type="string" value="2650" />
+            <parameter name="Lcal_z_begin" type="string" value="951.9" />
+            <parameter name="Lcal_z_thickness" type="string" value="128.1" />
+            <parameter name="MokkaModel" type="string" value="CEPC_v4" />
+            <parameter name="MokkaVersion" type="string" value="void" />
+            <parameter name="SIT1_Half_Length_Z" type="string" value="368" />
+            <parameter name="SIT1_Radius" type="string" value="152.9" />
+            <parameter name="SIT2_Half_Length_Z" type="string" value="644" />
+            <parameter name="SIT2_Radius" type="string" value="299.9" />
+            <parameter name="TPC_Ecal_Hcal_barrel_halfZ" type="string" value="2350" />
+            <parameter name="Yoke_Z_start_endcaps" type="string" value="4072" />
+            <parameter name="Yoke_barrel_inner_radius" type="string" value="4173.92993164062" />
+            <parameter name="calorimeter_region_rmax" type="string" value="3144.43" />
+            <parameter name="calorimeter_region_zmax" type="string" value="3736.43" />
+            <parameter name="tracker_region_rmax" type="string" value="1842.9" />
+            <parameter name="tracker_region_zmax" type="string" value="2350" />
+            <parameter name="world_box_hx" type="string" value="" />
+            <parameter name="world_box_hy" type="string" value="" />
+            <parameter name="world_box_hz" type="string" value="" />
+        </detector>
+        <detector name="VXDInfra" geartype="GearParameters">
+            <parameter name="ActiveLayerProperties_dEdx" type="double" value="3.870163611e-04" />
+            <parameter name="BeSupportEndplateThickness" type="double" value="2.000000000e+00" />
+            <parameter name="BeSupport_dEdx" type="double" value="2.941795296e-04" />
+            <parameter name="CryostatAlHalfZ" type="double" value="1.766000000e+02" />
+            <parameter name="CryostatAlInnerR" type="double" value="2.420000000e+01" />
+            <parameter name="CryostatAlRadius" type="double" value="1.000000000e+02" />
+            <parameter name="CryostatAlThickness" type="double" value="5.000000000e-01" />
+            <parameter name="CryostatAlZEndCap" type="double" value="1.768500000e+02" />
+            <parameter name="CryostatFoamRadius" type="double" value="9.000000000e+01" />
+            <parameter name="CryostatFoamThickness" type="double" value="1.000000000e+01" />
+            <parameter name="Cryostat_RadLen" type="double" value="8.896317758e+01" />
+            <parameter name="Cryostat_dEdx" type="double" value="4.350185478e-04" />
+            <parameter name="ElectronicEndLength" type="double" value="1.000000000e+01" />
+            <parameter name="ElectronicEndThickness" type="double" value="1.000000000e-01" />
+            <parameter name="StripLineBeamPipeRadius" type="double" value="2.430000000e+01" />
+            <parameter name="VXDEndPlateInnerRadius" type="double" value="3.000000000e+01" />
+            <parameter name="VXDSupport_dEdx" type="double" value="5.431907412e-05" />
+            <parameter name="LadderGaps" type="DoubleVec" value="0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00 0.000000000e+00" />
+            <parameter name="StripLineFinalZ" type="DoubleVec" value="1.500000000e+02 1.500000000e+02 1.500000000e+02 1.500000000e+02 1.500000000e+02 1.500000000e+02" />
+        </detector>
+    </detectors>
+    <materials>
+        <material name="VXDFoamShellMaterial" A="1.043890843e+01" Z="5.612886646e+00" density="2.500000000e+01" radLength="1.751650267e+04" intLength="6.594366018e+01" />
+        <material name="VXDSupportMaterial" A="2.075865162e+01" Z="1.039383117e+01" density="2.765900000e+02" radLength="1.014262421e+03" intLength="1.206635688e+02" />
+    </materials>
+</gear>
diff --git a/Detector/DetEcalMatrix/compact/det.xml b/Detector/DetEcalMatrix/compact/det.xml
index 462dbf7af0bd26384def4b8d9645386e71c2026c..2cd46f4fe3081ca4bb416e503022108b450466a9 100644
--- a/Detector/DetEcalMatrix/compact/det.xml
+++ b/Detector/DetEcalMatrix/compact/det.xml
@@ -32,6 +32,7 @@
 
   <detectors>
     <detector id="1" name="CaloDetector" type="EcalMatrix" readout="CaloHitsCollection" vis="VisibleGreen" sensitive="true">
+      <!-- Use cm as unit if you want to use Pandora for reconstruction -->
       <position x="200*cm"  y="0"  z="0"/>
       <dimensions dx="30*cm"  dy="30*cm"  dz="30*cm"/>
     </detector>
diff --git a/Detector/DetEcalMatrix/src/calorimeter/EcalMatrix.cpp b/Detector/DetEcalMatrix/src/calorimeter/EcalMatrix.cpp
index b835f023b3a84e9efd832207624dc33d691a5e70..f12972c81dcdbc647b9112324e7d16b59e746ad8 100644
--- a/Detector/DetEcalMatrix/src/calorimeter/EcalMatrix.cpp
+++ b/Detector/DetEcalMatrix/src/calorimeter/EcalMatrix.cpp
@@ -69,23 +69,23 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector,
               << std::endl;
 
 
-    // double cellSize_x = ::atof( seg.segmentation()->parameter("grid_size_x")->value().c_str() ) * 10;// from cm to mm
-    // double cellSize_y = ::atof( seg.segmentation()->parameter("grid_size_y")->value().c_str() ) * 10;// from cm to mm
-    // double cellSize_z = ::atof( seg.segmentation()->parameter("grid_size_z")->value().c_str() ) * 10;// from cm to mm
-    // int n_layer = int(2*dim.dx()*10/cellSize_x) ; // here the calorimeter is placed in barrel, so x direaction is layer direction
-    // std::cout<<"cellx="<<cellSize_x<<",celly="<<cellSize_y<<",cellz="<<cellSize_z<<",dx="<<dim.dx()*10<<"mm,n_layer="<<n_layer<<std::endl;
-    // for(int i=1 ; i <= n_layer; i++)
-    // {
-    //     LayeredCalorimeterData::Layer caloLayer ;
-    //     caloLayer.distance = caloData->extent[0] + (i-0.5)*cellSize_x; //NEED TO START FROM ORIGIN, to mm
-    //     caloLayer.sensitive_thickness = cellSize_x ;
-    //     caloLayer.inner_thickness = cellSize_x ;
-    //     caloLayer.outer_thickness = cellSize_x ;
-    //     caloLayer.absorberThickness = cellSize_x;
-    //     caloLayer.cellSize0 = cellSize_y;
-    //     caloLayer.cellSize1 = cellSize_z;
-    //     caloData->layers.push_back(caloLayer); 
-    // }
+    double cellSize_x = ::atof( seg.segmentation()->parameter("grid_size_x")->value().c_str() ) * 10;// from cm to mm
+    double cellSize_y = ::atof( seg.segmentation()->parameter("grid_size_y")->value().c_str() ) * 10;// from cm to mm
+    double cellSize_z = ::atof( seg.segmentation()->parameter("grid_size_z")->value().c_str() ) * 10;// from cm to mm
+    int n_layer = int(2*dim.dx()*10/cellSize_x) ; // here the calorimeter is placed in barrel, so x direaction is layer direction
+    std::cout<<"cellx="<<cellSize_x<<",celly="<<cellSize_y<<",cellz="<<cellSize_z<<",dx="<<dim.dx()*10<<"mm,n_layer="<<n_layer<<std::endl;
+    for(int i=1 ; i <= n_layer; i++)
+    {
+        LayeredCalorimeterData::Layer caloLayer ;
+        caloLayer.distance = caloData->extent[0] + (i-0.5)*cellSize_x; //NEED TO START FROM ORIGIN, to mm
+        caloLayer.sensitive_thickness = cellSize_x ;
+        caloLayer.inner_thickness = cellSize_x ;
+        caloLayer.outer_thickness = cellSize_x ;
+        caloLayer.absorberThickness = cellSize_x;
+        caloLayer.cellSize0 = cellSize_y;
+        caloLayer.cellSize1 = cellSize_z;
+        caloData->layers.push_back(caloLayer); 
+    }
 
     if ( x_det.isSensitive() )   {
         dd4hep::SensitiveDetector sd = sens;
@@ -96,7 +96,7 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector,
         phv.addPhysVolID("system",x_det.id());
     }
     sdet.setPlacement(phv);
-    // sdet.addExtension< LayeredCalorimeterData >(caloData) ; 
+    sdet.addExtension< LayeredCalorimeterData >(caloData) ; 
     MYDEBUG("create_detector DONE. ");
     return sdet;
 }
diff --git a/Examples/options/tut_detsim_pan_matrix.py b/Examples/options/tut_detsim_pan_matrix.py
index 50fdf5baf8f51b52cea54cfe642a3cfac92766b3..d5fabde3075bdba7ef1caae6a4f53ce18e84bea0 100644
--- a/Examples/options/tut_detsim_pan_matrix.py
+++ b/Examples/options/tut_detsim_pan_matrix.py
@@ -130,7 +130,8 @@ example_CaloDigiAlg.CaloHitCollection    = "ECALBarrel"
 ##############################################################################
 from Configurables import GearSvc
 gearSvc  = GearSvc("GearSvc")
-gearSvc.GearXMLFile = "/junofs/users/wxfang/CEPC/CEPCOFF/doSim/fullDet/GearOutput.xml"
+#gearSvc.GearXMLFile = "/junofs/users/wxfang/CEPC/CEPCOFF/doSim/fullDet/GearOutput.xml"
+gearSvc.GearXMLFile = "../Detector/DetCEPCv4/compact/FullDetGear.xml"
 ##############################################################################
 #from Configurables import PandoraPFAlg
 from Configurables import PandoraMatrixAlg
diff --git a/Reconstruction/Digi_Calo/src/CaloDigiAlg.cpp b/Reconstruction/Digi_Calo/src/CaloDigiAlg.cpp
index 1370dda825fdc9dbb36499516f70a62d5c0364cb..723e0e2117d6e4f683e8e203298f8a78838312d5 100644
--- a/Reconstruction/Digi_Calo/src/CaloDigiAlg.cpp
+++ b/Reconstruction/Digi_Calo/src/CaloDigiAlg.cpp
@@ -8,8 +8,6 @@
 
 #include "DD4hep/Detector.h"
 #include <DD4hep/Objects.h>
-#include <DDRec/DetectorData.h>
-#include <DDRec/CellIDPositionConverter.h>
 
 
 #include <math.h>
@@ -41,77 +39,45 @@ StatusCode CaloDigiAlg::initialize()
   dd4hep::Detector* m_dd4hep = m_geosvc->lcdd();
   if ( !m_dd4hep )  throw "CaloDigiAlg :Failed to get dd4hep::Detector ...";
   m_cellIDConverter = new dd4hep::rec::CellIDPositionConverter(*m_dd4hep);
-  try{
-      const dd4hep::DetElement &detElement = m_dd4hep->detector("CaloDetector");
-      dd4hep::rec::LayeredCalorimeterData* Data = detElement.extension<dd4hep::rec::LayeredCalorimeterData>() ;
-      const std::vector<dd4hep::rec::LayeredCalorimeterData::Layer>& layerLayout = Data->layers;
-      assert(layerLayout.size()>=1);
-      m_layerLayout = &layerLayout;
-      std::cout<<"saved m_layerLayout"<<std::endl;
-  }
-  catch(...) 
-  {
-      throw "CaloDigiAlg :Failed to get LayeredCalorimeterData ...";
-  }
   return GaudiAlgorithm::initialize();
 }
 
 StatusCode CaloDigiAlg::execute()
 {
-  std::map<std::string, std::vector<edm4hep::SimCalorimeterHit> > id_vhit_map;
+  std::map<unsigned long long, edm4hep::SimCalorimeterHit> id_hit_map;
+  std::map<unsigned long long, int > test_map;
   edm4hep::CalorimeterHitCollection* caloVec   = w_DigiCaloCol.createAndPut();
   const edm4hep::SimCalorimeterHitCollection* SimHitCol =  r_SimCaloCol.get();
+  double tot_e = 0 ;
   if(SimHitCol == 0) 
   {
      std::cout<<"not found SimCalorimeterHitCollection"<< std::endl;
      return StatusCode::SUCCESS;
   }
   std::cout<<"digi, input sim hit size="<< SimHitCol->size() <<std::endl;
-  float tot_sim_en = 0;
   for( int i = 0; i < SimHitCol->size(); i++ ) 
   {
       edm4hep::SimCalorimeterHit SimHit = SimHitCol->at(i);
+      unsigned long long id = SimHit.getCellID();
       float en = SimHit.getEnergy();
-      tot_sim_en += en;
-      std::string id = GetCode(&SimHit);
-      //std::cout<<"sim i ="<< i<<",id="<< id<<",x="<<SimHit.getPosition().x<<",y="<<SimHit.getPosition().y<<",z="<<SimHit.getPosition().z <<std::endl;
-      if(id_vhit_map.find(id) != id_vhit_map.end()) id_vhit_map[id].push_back(SimHit);
-      else
-      {
-          std::vector<edm4hep::SimCalorimeterHit> vect;
-          vect.push_back(SimHit);
-          id_vhit_map[id] = vect;
-      }
+      tot_e += en;
+      test_map[id] = 1;
+      if ( id_hit_map.find(id) != id_hit_map.end()) id_hit_map[id].setEnergy(id_hit_map[id].getEnergy() + en);
+      else id_hit_map[id] = SimHit ;
   }
-  float tot_en = 0;
-  for(std::map<std::string, std::vector <edm4hep::SimCalorimeterHit> >::iterator iter = id_vhit_map.begin(); iter != id_vhit_map.end(); iter++)
+  for(std::map<unsigned long long, edm4hep::SimCalorimeterHit>::iterator iter = id_hit_map.begin(); iter != id_hit_map.end(); iter++)
   {
-    float energy = 0;
-    float x0 = 0;
-    float y0 = 0;
-    float z0 = 0;
-    for(int j=0; j < iter->second.size(); j++)
-    {
-        float hit_en = iter->second.at(j).getEnergy();
-        energy += hit_en;
-        x0     += hit_en*iter->second.at(j).getPosition().x ;
-        y0     += hit_en*iter->second.at(j).getPosition().y ;
-        z0     += hit_en*iter->second.at(j).getPosition().z ;
-    }
-    x0 = x0/energy;
-    y0 = y0/energy;
-    z0 = z0/energy;
-    edm4hep::Vector3f pos(x0, y0, z0);
-    energy = energy*m_scale;
     auto caloHit = caloVec->create();
-    //caloHit.setCellID  (iter->second.getCellID());
-    caloHit.setEnergy  (energy);
-    caloHit.setPosition(pos);
-    tot_en += caloHit.getEnergy();
+    caloHit.setCellID((iter->second).getCellID());
+    caloHit.setEnergy((iter->second).getEnergy()*m_scale);
+    dd4hep::Position position = m_cellIDConverter->position(caloHit.getCellID());
+    edm4hep::Vector3f vpos(position.x()*10, position.y()*10, position.z()*10);// cm to mm
+    caloHit.setPosition(vpos);
+    //std::cout << "sim hit id =" << caloHit.getCellID() <<",x="<<position.x()<<",y="<<position.y()<<",z="<<position.z() <<",real x="<<(iter->second).getPosition().x <<",y="<<(iter->second).getPosition().y<<",z="<<(iter->second).getPosition().z<< std::endl;
   }
     
-  std::cout<<"total sim e ="<< tot_sim_en <<std::endl;
-  std::cout<<"digi, output digi hit size="<< caloVec->size()<<",tot_en="<<tot_en <<std::endl;
+  std::cout<<"total sim e ="<< tot_e <<std::endl;
+  std::cout<<"digi, output digi hit size="<< caloVec->size() <<std::endl;
   _nEvt ++ ;
 
   return StatusCode::SUCCESS;
@@ -122,30 +88,3 @@ StatusCode CaloDigiAlg::finalize()
   info() << "Processed " << _nEvt << " events " << endmsg;
   return GaudiAlgorithm::finalize();
 }
-
-
-std::string CaloDigiAlg::GetCode(const edm4hep::SimCalorimeterHit *const pHit) const
-{
-    int layer = -1 ;   
-    for (unsigned int i = 0, iMax = m_layerLayout->size(); i < iMax; ++i)
-    {
-        const float distance(m_layerLayout->at(i).distance);
-        const float sensitive_thickness(m_layerLayout->at(i).sensitive_thickness);
-        if( (distance - 0.5*sensitive_thickness) <= pHit->getPosition().x && pHit->getPosition().x <= (distance + 0.5*sensitive_thickness)) {layer = i ; break;}
-    }
-    if(layer==-1)
-    {
-        int lmax = m_layerLayout->size()-1;
-        std::cout<<"Error BarrelLayer, set to default 1, Hit.x="<<pHit->getPosition().x<<", min_x="<<m_layerLayout->at(0).distance-0.5*m_layerLayout->at(0).sensitive_thickness<<", max_x="<<m_layerLayout->at(lmax).distance+0.5*m_layerLayout->at(lmax).sensitive_thickness<<std::endl;
-        layer = 0;
-    }
-    float cellSize0     = m_layerLayout->at(layer).cellSize0;
-    float cellSize1     = m_layerLayout->at(layer).cellSize1;
-    int cell0 = floor((pHit->getPosition().y+0.5*cellSize0)/cellSize0);
-    int cell1 = floor((pHit->getPosition().z+0.5*cellSize1)/cellSize1);
-    std::string sl = std::to_string(layer);
-    std::string s0 = std::to_string(cell0);
-    std::string s1 = std::to_string(cell1);
-    std::string id = sl+"_"+s0+"_"+s1 ;
-    return id;
-}
diff --git a/Reconstruction/Digi_Calo/src/CaloDigiAlg.cpp_id b/Reconstruction/Digi_Calo/src/CaloDigiAlg.cpp_id
deleted file mode 100644
index e25ad95b5fc877a77772984e5ea60154294aa0b2..0000000000000000000000000000000000000000
--- a/Reconstruction/Digi_Calo/src/CaloDigiAlg.cpp_id
+++ /dev/null
@@ -1,91 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-#include "CaloDigiAlg.h"
-
-
-#include "edm4hep/SimCalorimeterHit.h"
-#include "edm4hep/CalorimeterHit.h"
-
-#include "DD4hep/Detector.h"
-#include <DD4hep/Objects.h>
-
-#include <cmath>
-#include <algorithm>
-
-DECLARE_COMPONENT( CaloDigiAlg )
-
-CaloDigiAlg::CaloDigiAlg(const std::string& name, ISvcLocator* svcLoc)
-  : GaudiAlgorithm(name, svcLoc),
-    _nEvt(0)
-{
-  
-  // Input collections
-  declareProperty("SimCaloHitCollection", r_SimCaloCol, "Handle of the Input SimCaloHit collection");
-  
-  // Output collections
-  declareProperty("CaloHitCollection", w_DigiCaloCol, "Handle of Digi CaloHit collection");
-  
-   
-}
-
-StatusCode CaloDigiAlg::initialize()
-{
-
-  m_geosvc = service<IGeoSvc>("GeoSvc");
-  if ( !m_geosvc )  throw "CaloDigiAlg :Failed to find GeoSvc ...";
-  dd4hep::Detector* m_dd4hep = m_geosvc->lcdd();
-  m_cellIDConverter = new dd4hep::rec::CellIDPositionConverter(*m_dd4hep);
-
-  std::cout<<"m_scale="<<m_scale<<std::endl;
-
-  return GaudiAlgorithm::initialize();
-}
-
-StatusCode CaloDigiAlg::execute()
-{
-  std::map<unsigned long long, edm4hep::SimCalorimeterHit> id_hit_map;
-  std::map<unsigned long long, int > test_map;
-  edm4hep::CalorimeterHitCollection* caloVec   = w_DigiCaloCol.createAndPut();
-  const edm4hep::SimCalorimeterHitCollection* SimHitCol =  r_SimCaloCol.get();
-  double tot_e = 0 ;
-  if(SimHitCol == 0) 
-  {
-     std::cout<<"not found SimCalorimeterHitCollection"<< std::endl;
-     return StatusCode::SUCCESS;
-  }
-  std::cout<<"digi, input sim hit size="<< SimHitCol->size() <<std::endl;
-  for( int i = 0; i < SimHitCol->size(); i++ ) 
-  {
-      edm4hep::SimCalorimeterHit SimHit = SimHitCol->at(i);
-      unsigned long long id = SimHit.getCellID();
-      /*
-      dd4hep::Position gpos(SimHit.getPosition().x, SimHit.getPosition().y, SimHit.getPosition().z);
-      long long int cell_id = m_cellIDConverter->cellID(gpos); 
-      signed long long id2 = (signed long long) SimHit.getCellID();
-      std::cout<<"sim gpos x="<<gpos.x()<<",y="<<gpos.y()<<",z="<<gpos.z()<<",id0="<<id<<",id1="<<cell_id<<",id2="<<id2<<std::endl;
-      */   
-      float en = SimHit.getEnergy();
-      tot_e += en;
-      test_map[id] = 1;
-      if ( id_hit_map.find(id) != id_hit_map.end()) id_hit_map[id].setEnergy(id_hit_map[id].getEnergy() + en);
-      else id_hit_map[id] = SimHit ;
-  }
-  for(std::map<unsigned long long, edm4hep::SimCalorimeterHit>::iterator iter = id_hit_map.begin(); iter != id_hit_map.end(); iter++)
-  {
-    auto caloHit = caloVec->create();
-    caloHit.setCellID((iter->second).getCellID());
-    caloHit.setEnergy((iter->second).getEnergy()*m_scale);
-    caloHit.setPosition((iter->second).getPosition());
-  }
-    
-  std::cout<<"total sim e ="<< tot_e <<std::endl;
-  std::cout<<"digi, output digi hit size="<< caloVec->size() <<std::endl;
-  _nEvt ++ ;
-
-  return StatusCode::SUCCESS;
-}
-
-StatusCode CaloDigiAlg::finalize()
-{
-  info() << "Processed " << _nEvt << " events " << endmsg;
-  return GaudiAlgorithm::finalize();
-}
diff --git a/Reconstruction/Digi_Calo/src/CaloDigiAlg.cpp_v1 b/Reconstruction/Digi_Calo/src/CaloDigiAlg.cpp_v1
deleted file mode 100644
index d1d19a494ae3341a4ea1d228219ea799405bf783..0000000000000000000000000000000000000000
--- a/Reconstruction/Digi_Calo/src/CaloDigiAlg.cpp_v1
+++ /dev/null
@@ -1,131 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-#include "CaloDigiAlg.h"
-
-
-#include "edm4hep/SimCalorimeterHit.h"
-#include "edm4hep/CalorimeterHit.h"
-#include "edm4hep/Vector3f.h"
-
-#include "DD4hep/Detector.h"
-#include <DD4hep/Objects.h>
-#include <DDRec/DetectorData.h>
-#include <DDRec/CellIDPositionConverter.h>
-
-
-#include <cmath>
-#include <algorithm>
-
-DECLARE_COMPONENT( CaloDigiAlg )
-
-CaloDigiAlg::CaloDigiAlg(const std::string& name, ISvcLocator* svcLoc)
-  : GaudiAlgorithm(name, svcLoc),
-    _nEvt(0)
-{
-  
-  // Input collections
-  declareProperty("SimCaloHitCollection", r_SimCaloCol, "Handle of the Input SimCaloHit collection");
-  
-  // Output collections
-  declareProperty("CaloHitCollection", w_DigiCaloCol, "Handle of Digi CaloHit collection");
-  
-   
-}
-
-StatusCode CaloDigiAlg::initialize()
-{
-
-  std::cout<<"CaloDigiAlg::m_scale="<<m_scale<<std::endl;
-  m_geosvc = service<IGeoSvc>("GeoSvc");
-  if ( !m_geosvc )  throw "CaloDigiAlg :Failed to find GeoSvc ...";
-  dd4hep::Detector* m_dd4hep = m_geosvc->lcdd();
-  if ( !m_dd4hep )  throw "CaloDigiAlg :Failed to get dd4hep::Detector ...";
-  m_cellIDConverter = new dd4hep::rec::CellIDPositionConverter(*m_dd4hep);
-  try{
-      const dd4hep::DetElement &detElement = m_dd4hep->detector("CaloDetector");
-      dd4hep::rec::LayeredCalorimeterData* Data = detElement.extension<dd4hep::rec::LayeredCalorimeterData>() ;
-      const std::vector<dd4hep::rec::LayeredCalorimeterData::Layer>& layerLayout = Data->layers;
-      assert(layerLayout.size()>=1);
-      float cellSize0     = layerLayout.at(0).cellSize0;
-      float cellSize1     = layerLayout.at(0).cellSize1;
-      float cellThickness = layerLayout.at(0).sensitive_thickness;
-      m_length = sqrt(cellSize0*cellSize0 + cellSize1*cellSize1 + cellThickness*cellThickness);
-      std::cout<<"CaloDigiAlg::cellSize0="<<cellSize0<<",cellSize1="<<cellSize1<<",cellThickness="<<cellThickness<<",m_length="<<m_length<<std::endl;
-  }
-  catch(...) 
-  {
-      throw "CaloDigiAlg :Failed to get LayeredCalorimeterData ...";
-  }
-  return GaudiAlgorithm::initialize();
-}
-
-StatusCode CaloDigiAlg::execute()
-{
-  std::vector< edm4hep::SimCalorimeterHit > sim_vec;
-  std::map<unsigned long long, edm4hep::SimCalorimeterHit> id_hit_map;
-  std::map<unsigned long long, int > test_map;
-  edm4hep::CalorimeterHitCollection* caloVec   = w_DigiCaloCol.createAndPut();
-  const edm4hep::SimCalorimeterHitCollection* SimHitCol =  r_SimCaloCol.get();
-  if(SimHitCol == 0) 
-  {
-     std::cout<<"not found SimCalorimeterHitCollection"<< std::endl;
-     return StatusCode::SUCCESS;
-  }
-  std::cout<<"digi, input sim hit size="<< SimHitCol->size() <<std::endl;
-  float tot_sim_en = 0;
-  for( int i = 0; i < SimHitCol->size(); i++ ) 
-  {
-      int index = -1;
-      float dis_min = m_length;//10mm*10mm*10mm
-      bool found = false;
-      edm4hep::SimCalorimeterHit SimHit = SimHitCol->at(i);
-      float en = SimHit.getEnergy();
-      tot_sim_en += en;
-      float x0 = SimHit.getPosition().x ;
-      float y0 = SimHit.getPosition().y ;
-      float z0 = SimHit.getPosition().z ;
-      //std::cout<<"x0="<<x0<<",y0="<<y0<<",z0="<<z0<<std::endl;
-      for(int j=0; j<sim_vec.size(); j++)
-      {
-          float x = sim_vec.at(j).getPosition().x ;
-          float y = sim_vec.at(j).getPosition().y ;
-          float z = sim_vec.at(j).getPosition().z ;
-          float dist  = sqrt( (x-x0)*(x-x0) + (y-y0)*(y-y0) + (z-z0)*(z-z0) );
-          if( dist < dis_min ){ dis_min = dist; index = j ; }
-      }
-      if(index==-1) sim_vec.push_back(SimHit);
-      else  
-      {   
-          float en_ori = sim_vec.at(index).getEnergy();
-          float sum_en = en + en_ori ;          
-          sim_vec.at(index).setEnergy(sum_en);
-          //std::cout<<"ori_x="<<sim_vec.at(index).getPosition().x<<",ori_y="<<sim_vec.at(index).getPosition().y<<",ori_z="<<sim_vec.at(index).getPosition().z<<std::endl;
-          float new_x = sim_vec.at(index).getPosition().x * en_ori/sum_en + SimHit.getPosition().x * en/sum_en;
-          float new_y = sim_vec.at(index).getPosition().y * en_ori/sum_en + SimHit.getPosition().y * en/sum_en;
-          float new_z = sim_vec.at(index).getPosition().z * en_ori/sum_en + SimHit.getPosition().z * en/sum_en;
-          edm4hep::Vector3f pos(new_x, new_y, new_z);
-          sim_vec.at(index).setPosition(pos);
-          //std::cout<<"new_x="<<sim_vec.at(index).getPosition().x<<",new_y="<<sim_vec.at(index).getPosition().y<<",new_z="<<sim_vec.at(index).getPosition().z<<std::endl;
-      }
-  }
-  float tot_en = 0;
-  for(std::vector< edm4hep::SimCalorimeterHit >::iterator iter = sim_vec.begin(); iter != sim_vec.end(); iter++)
-  {
-    auto caloHit = caloVec->create();
-    caloHit.setCellID  (iter->getCellID());
-    caloHit.setEnergy  (iter->getEnergy()*m_scale);
-    caloHit.setPosition(iter->getPosition());
-    tot_en += caloHit.getEnergy();
-  }
-    
-  std::cout<<"total sim e ="<< tot_sim_en <<std::endl;
-  std::cout<<"digi, output digi hit size="<< caloVec->size()<<",tot_en="<<tot_en <<std::endl;
-  _nEvt ++ ;
-
-  return StatusCode::SUCCESS;
-}
-
-StatusCode CaloDigiAlg::finalize()
-{
-  info() << "Processed " << _nEvt << " events " << endmsg;
-  return GaudiAlgorithm::finalize();
-}
diff --git a/Reconstruction/Digi_Calo/src/CaloDigiAlg.h b/Reconstruction/Digi_Calo/src/CaloDigiAlg.h
index 5ecc0f68960684808570a51bec49ce9b1564ee18..050ffe7b6b8932ee181f9a9555a1e118fc9cea5b 100644
--- a/Reconstruction/Digi_Calo/src/CaloDigiAlg.h
+++ b/Reconstruction/Digi_Calo/src/CaloDigiAlg.h
@@ -13,34 +13,6 @@
 #include <DDRec/CellIDPositionConverter.h>
 #include "DetInterface/IGeoSvc.h"
 
-/** ======= PlanarDigiProcessor / CaloDigiAlg ========== <br>
- * Creates TrackerHits from SimTrackerHits, smearing them according to the input parameters. 
- * The SimTrackerHits should come from a planar detector like VXD, SIT, SET or FTD.
- * 
- * WARNING: this processor depends on correctly set CellID0s and is NOT backwards compatible to 
- * SimTrackerHit output with wrong CellID0s!!!
- * 
- * The positions of "digitized" TrackerHits are obtained by gaussian smearing positions
- * of SimTrackerHits in u and v direction. 
- * <h4>Input collections and prerequisites</h4> 
- * Processor requires a collection of SimTrackerHits <br>
- * <h4>Output</h4>
- * Processor produces collection of smeared TrackerHits<br>
- * @param SimTrackHitCollectionName The name of input collection of SimTrackerHits <br>
- * (default name VXDCollection) <br>
- * @param TrackerHitCollectionName The name of output collection of smeared TrackerHits <br>
- * (default name VTXTrackerHits) <br>
- * @param SimTrkHitRelCollection The name of the TrackerHit SimTrackerHit relation collection <br>
- * (default name VTXTrackerHitRelations) <br>
- * @param ResolutionU resolution in direction of u (in mm) <br>
- * (default value 0.004) <br>
- * @param ResolutionV Resolution in direction of v (in mm) <br>
- * (default value 0.004) <br>
- * @param IsStrip whether the hits are 1 dimensional strip measurements <br>
- * (default value false)<br>
- * <br>
- * 
- */
 
 
 
@@ -64,12 +36,8 @@ public:
    */
   virtual StatusCode finalize() ;
  
-  std::string GetCode(const edm4hep::SimCalorimeterHit *const pHit) const;
- 
 protected:
 
-  const std::vector<dd4hep::rec::LayeredCalorimeterData::Layer>* m_layerLayout;
- 
   SmartIF<IGeoSvc> m_geosvc;
   typedef std::vector<float> FloatVec;