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