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(); }