From 297b2a708f75d302b3ff6c895d09caa2b4b8f8d0 Mon Sep 17 00:00:00 2001 From: Chengdong Fu <fucd@ihep.ac.cn> Date: Mon, 31 May 2021 11:10:01 +0800 Subject: [PATCH] update dimensions --- .../CRD_common_v01/DC_Simple_v01_01.xml | 10 +- .../Ecal_Crystal_Barrel_v01_01.xml | 2 + .../CRD_o1_v01/CRD_Dimensions_v01_01.xml | 111 +++++++++++------- .../CRD_o1_v01/CRD_o1_v01-onlyTracker.xml | 54 +++++++++ .../DetCRD/compact/CRD_o1_v01/CRD_o1_v01.xml | 17 ++- .../CRD_o1_v02/CRD_Dimensions_v01_02.xml | 110 ++++++++++------- .../CRD_o1_v02/CRD_o1_v02-onlyTracker.xml | 54 +++++++++ .../DetCRD/compact/CRD_o1_v02/CRD_o1_v02.xml | 15 ++- Detector/DetCRD/compact/README.md | 20 ++-- Detector/DetCRD/scripts/CRD_o1_v01-SimRec.py | 84 ++++++------- Detector/DetCRD/scripts/CRD_o1_v02-SimRec.py | 48 +++++--- .../Tracking/src/Clupatra/ClupatraAlg.cpp | 22 ++-- .../Tracking/src/Clupatra/clupatra_new.cpp | 37 +++--- 13 files changed, 380 insertions(+), 204 deletions(-) create mode 100644 Detector/DetCRD/compact/CRD_o1_v01/CRD_o1_v01-onlyTracker.xml create mode 100644 Detector/DetCRD/compact/CRD_o1_v02/CRD_o1_v02-onlyTracker.xml diff --git a/Detector/DetCRD/compact/CRD_common_v01/DC_Simple_v01_01.xml b/Detector/DetCRD/compact/CRD_common_v01/DC_Simple_v01_01.xml index e6e7e8b8..d810f8d3 100644 --- a/Detector/DetCRD/compact/CRD_common_v01/DC_Simple_v01_01.xml +++ b/Detector/DetCRD/compact/CRD_common_v01/DC_Simple_v01_01.xml @@ -13,10 +13,6 @@ </info> <define> - <constant name="world_size" value="2226*mm"/> - <constant name="world_x" value="world_size"/> - <constant name="world_y" value="world_size"/> - <constant name="world_z" value="world_size"/> <!-- SDT --> <constant name="SDT_radius_min" value="DC_inner_radius"/> @@ -56,7 +52,7 @@ </regions> <detectors> - <detector id="DetID_DC" name="DriftChamber" type="DriftChamber" readout="DriftChamberHitsCollection" vis="VisibleBlue" sensitive="true" region="DriftChamberRegion" limits="DC_limits"> + <detector id="DetID_DC" name="DriftChamber" type="DriftChamber" readout="DriftChamberHitsCollection" vis="DCVis" sensitive="true" region="DriftChamberRegion" limits="DC_limits"> <chamber id="0"/> <envelope vis="SeeThrough"> <shape type="BooleanShape" operation="Union" material="Air"> @@ -64,12 +60,12 @@ </shape> </envelope> - <module id="0" name="SignalWire" type="Tube" rmin="0*mm" rmax="0.01*mm" vis="VisibleRed"> + <module id="0" name="SignalWire" type="Tube" rmin="0*mm" rmax="0.01*mm" vis="RedVis"> <tubs name="W" type="Tube" rmin="0*mm" rmax="0.007*mm" material="Tungsten"/> <tubs name="Au" type="Tube" rmin="0.007*mm" rmax="0.01*mm" material="Gold"/> </module> - <module id="1" name="FieldWire" type="Tube" rmin="0*mm" rmax="0.02*mm" vis="VisibleGreen"> + <module id="1" name="FieldWire" type="Tube" rmin="0*mm" rmax="0.02*mm" vis="GreenVis"> <tubs name="Al" type="Tube" rmin="0*mm" rmax="0.017*mm" material="Aluminum"/> <tubs name="Ag" type="Tube" rmin="0.017*mm" rmax="0.02*mm" material="Silver"/> </module> diff --git a/Detector/DetCRD/compact/CRD_common_v01/Ecal_Crystal_Barrel_v01_01.xml b/Detector/DetCRD/compact/CRD_common_v01/Ecal_Crystal_Barrel_v01_01.xml index 99930c35..e439461d 100644 --- a/Detector/DetCRD/compact/CRD_common_v01/Ecal_Crystal_Barrel_v01_01.xml +++ b/Detector/DetCRD/compact/CRD_common_v01/Ecal_Crystal_Barrel_v01_01.xml @@ -4,6 +4,8 @@ <constant name="ecalbarrel_inner_radius" value="Ecal_barrel_inner_radius"/> <constant name="ecalbarrel_thickness" value="Ecal_barrel_thickness"/> <!--Must be n*10*mm! --> <constant name="ecalbarrel_zlength" value="Ecal_barrel_half_length*2"/> <!--Must be n*10*mm! --> + <constant name="bar_x" value="1*cm"/> + <constant name="bar_y" value="1*cm"/> </define> <regions> diff --git a/Detector/DetCRD/compact/CRD_o1_v01/CRD_Dimensions_v01_01.xml b/Detector/DetCRD/compact/CRD_o1_v01/CRD_Dimensions_v01_01.xml index 9a368f4e..5d5689be 100644 --- a/Detector/DetCRD/compact/CRD_o1_v01/CRD_Dimensions_v01_01.xml +++ b/Detector/DetCRD/compact/CRD_o1_v01/CRD_Dimensions_v01_01.xml @@ -17,6 +17,8 @@ <define> <constant name="CrossingAngle" value="0.033*rad"/> + <constant name="Global_endcap_costheta" value="0.99"/> + <constant name="GlobalTrackerReadoutID_DCH" type="string" value="system:8,chamber:1,layer:7,phi:16"/> <constant name="GlobalTrackerReadoutID" type="string" value="system:5,side:-2,layer:9,module:8,sensor:8,barrelside:-2"/> @@ -32,7 +34,7 @@ <constant name="DetID_TPC" value=" 4"/> <constant name="DetID_SET" value=" 5"/> <constant name="DetID_ETD" value=" 6"/> - <constant name="DetID_DC" value=" 7"/> + <constant name="DetID_DC" value=" 4"/> <!--in order to cheat Clupatra, same as TPC--> <constant name="DetID_ECAL" value=" 20"/> <constant name="DetID_ECAL_PLUG" value=" 21"/> @@ -82,12 +84,13 @@ <constant name="Vertex_half_length" value="200*mm"/> <constant name="DC_Endcap_dz" value="0.1*mm"/> - <constant name="DC_half_length" value="2225*mm" /> + <constant name="DC_half_length" value="2980*mm" /> <constant name="DC_safe_distance" value="0.02*mm"/> <constant name="SDT_inner_wall_thickness" value="0.2*mm"/> <constant name="SDT_outer_wall_thickness" value="2.8*mm"/> <constant name="MainTracker_half_length" value="DC_half_length+DC_Endcap_dz" /> + <!--obselete for single drift chamber--> <constant name="InnerTracker_half_length" value="DC_half_length" /> <constant name="InnerTracker_inner_radius" value="234*mm"/> <constant name="InnerTracker_outer_radius" value="909*mm"/> @@ -102,11 +105,30 @@ <constant name="DC_inner_radius" value="DC_chamber_layer_rbegin-SDT_inner_wall_thickness-DC_safe_distance"/> <constant name="DC_outer_radius" value="DC_chamber_layer_rend+SDT_outer_wall_thickness+DC_safe_distance"/> - <constant name="SIT1_inner_radius" value="152.90*mm"/> - <constant name="SIT1_half_length" value="368.00*mm"/> - <constant name="SIT2_inner_radius" value="InnerTracker_outer_radius + env_safety"/> - <constant name="SIT2_half_length" value="DC_half_length"/> + <constant name="SIT1_inner_radius" value="230*mm"/> + <constant name="SIT2_inner_radius" value="410*mm"/> + <constant name="SIT3_inner_radius" value="590*mm"/> + <constant name="SIT4_inner_radius" value="770*mm"/> + <constant name="SIT1_half_length" value="461*mm"/> + <constant name="SIT2_half_length" value="691*mm"/> + <constant name="SIT3_half_length" value="1013*mm"/> + <constant name="SIT4_half_length" value="1335*mm"/> + + <constant name="SET_inner_radius" value="1815*mm"/> + <constant name="SiTracker_barrel_endcap_gap" value="5*mm"/> + <constant name="SiTracker_DC_endcap_gap" value="10*mm"/> + <constant name="SiTracker_endcap_z1" value="SIT1_half_length+SiTracker_barrel_endcap_gap"/> + <constant name="SiTracker_endcap_z2" value="SIT2_half_length+SiTracker_barrel_endcap_gap"/> + <constant name="SiTracker_endcap_z3" value="SIT3_half_length+SiTracker_barrel_endcap_gap"/> + <constant name="SiTracker_endcap_z4" value="SIT4_half_length+SiTracker_barrel_endcap_gap"/> + <constant name="SiTracker_endcap_z5" value="MainTracker_half_length+SiTracker_DC_endcap_gap"/> + <constant name="SiTracker_endcap_outer_radius1" value="SIT1_inner_radius+SiTracker_barrel_endcap_gap"/> + <constant name="SiTracker_endcap_outer_radius2" value="SIT2_inner_radius+SiTracker_barrel_endcap_gap"/> + <constant name="SiTracker_endcap_outer_radius3" value="SIT3_inner_radius+SiTracker_barrel_endcap_gap"/> + <constant name="SiTracker_endcap_outer_radius4" value="SIT4_inner_radius+SiTracker_barrel_endcap_gap"/> + <constant name="SiTracker_endcap_outer_radius5" value="SET_inner_radius+SiTracker_barrel_endcap_gap"/> + <!--obseleted --> <constant name="FTD_BeamPipe_cable_clearance" value="10*mm"/> <constant name="FTD_BeamPipe_gap" value="15*mm"/> <constant name="FTD_InnerTracker_gap" value="5*mm"/> @@ -123,69 +145,69 @@ <constant name="TUBE_IPOuterTube_end_radius" value="BeamPipe_Central_inner_radius+BeamPipe_Al_thickness"/> <constant name="TUBE_IPOuterBulge_end_z" value="BeamPipe_Crotch_zmax"/><!--"BeamPipe_ConeAl_zmax"/--> <constant name="TUBE_IPOuterBulge_end_radius" value="BeamPipe_Crotch_zmax*tan(CrossingAngle/2)+BeamPipe_Dnstream_inner_radius+BeamPipe_Cu_thickness"/> - <!--"BeamPipe_Expanded_inner_radius+BeamPipe_Al_thickness+5*mm"/--> + <!--"BeamPipe_Expanded_inner_radius+BeamPipe_Al_thickness+5*mm"/--> - <constant name="Ecal_barrel_inner_radius" value="1800*mm"/> + <constant name="Ecal_barrel_inner_radius" value="1900*mm"/> <constant name="Ecal_barrel_thickness" value="280*mm"/> <constant name="Ecal_barrel_outer_radius" value="(Ecal_barrel_inner_radius+Ecal_barrel_thickness)/cos(pi/8)"/> - <constant name="Ecal_barrel_half_length" value="2300*mm"/> + <constant name="Ecal_barrel_half_length" value="3350*mm"/> <constant name="Ecal_barrel_symmetry" value="8"/> - - <constant name="Ecal_endcap_inner_radius" value="340*mm"/> - <constant name="Ecal_endcap_outer_radius" value="Ecal_barrel_outer_radius"/> - <constant name="Ecal_endcap_zmin" value="2260*mm"/> - <constant name="Ecal_endcap_zmax" value="2540*mm"/> + + <constant name="Ecal_endcap_inner_radius" value="350*mm"/> + <constant name="Ecal_endcap_outer_radius" value="Ecal_barrel_inner_radius+Ecal_barrel_thickness"/> + <constant name="Ecal_endcap_zmin" value="3050*mm"/> + <constant name="Ecal_endcap_zmax" value="3350*mm"/> <constant name="Ecal_endcap_symmetry" value="8"/> <!--obseleted constance, used by old construct, should be removed while creating new constrcut--> <constant name="EcalEndcap_outer_radius" value="Ecal_barrel_outer_radius"/> - <constant name="Solenoid_inner_radius" value="2260*mm"/> - <constant name="Solenoid_outer_radius" value="2560*mm"/> - <constant name="Solenoid_half_length" value="3000*mm"/> - <constant name="SolenoidCoil_half_length" value="2900*mm"/> - <constant name="SolenoidCoil_radius" value="2300*mm"/> + <constant name="Solenoid_inner_radius" value="2330*mm"/> + <constant name="Solenoid_outer_radius" value="2480*mm"/> + <constant name="Solenoid_half_length" value="3830*mm"/> + <constant name="SolenoidCoil_half_length" value="3800*mm"/> + <constant name="SolenoidCoil_radius" value="2351*mm"/> <constant name="SolenoidCoil_center_radius" value="(Solenoid_inner_radius+Solenoid_outer_radius)/2"/> - <constant name="Hcal_barrel_inner_radius" value="2600*mm"/> - <constant name="Hcal_barrel_outer_radius" value="3670.6805372782*mm"/> - <constant name="Hcal_barrel_half_length" value="3000*mm"/> + <constant name="Hcal_barrel_inner_radius" value="2530*mm"/> + <constant name="Hcal_barrel_outer_radius" value="3610*mm"/> + <constant name="Hcal_barrel_half_length" value="4480*mm"/> <constant name="Hcal_barrel_symmetry" value="8"/> - <constant name="Hcal_endcap_inner_radius" value="340*mm"/> + <constant name="Hcal_endcap_inner_radius" value="400*mm"/> <constant name="Hcal_endcap_outer_radius" value="Hcal_barrel_outer_radius"/> - <constant name="Hcal_endcap_zmin" value="3010*mm"/> - <constant name="Hcal_endcap_zmax" value="4094.2*mm"/> + <constant name="Hcal_endcap_zmin" value="3400*mm"/> + <constant name="Hcal_endcap_zmax" value="4480*mm"/> <constant name="Hcal_endcap_symmetry" value="8"/> <!--obseleted constance, used by old construct, should be removed while creating new constrcut--> <constant name="HcalEndcap_max_z" value="Hcal_endcap_zmax"/> <constant name="Hcal_endcap_outer_symmetry" value="Hcal_endcap_symmetry"/> <constant name="Hcal_outer_radius" value="Hcal_barrel_outer_radius"/> - <constant name="Hcal_ring_inner_radius" value="Hcal_endcap_inner_radius"/> + <!--constant name="Hcal_ring_inner_radius" value="Hcal_endcap_inner_radius"/> <constant name="Hcal_ring_outer_radius" value="Solenoid_inner_radius"/> <constant name="Hcal_ring_zmin" value="2600*mm"/> <constant name="Hcal_ring_zmax" value="Hcal_endcap_zmin-10*mm"/> - <constant name="Hcal_ring_symmetry" value="8"/> + <constant name="Hcal_ring_symmetry" value="8"/--> - <constant name="Yoke_barrel_inner_radius" value="3710*mm"/> - <constant name="Yoke_barrel_outer_radius" value="6951*mm"/> + <constant name="Yoke_barrel_inner_radius" value="3660*mm"/> + <constant name="Yoke_barrel_outer_radius" value="4260*mm"/> <constant name="Yoke_barrel_half_length" value="Hcal_endcap_zmax"/> <constant name="Yoke_barrel_symmetry" value="8"/> <constant name="Yoke_endcap_inner_radius" value="400*mm"/> <constant name="Yoke_endcap_outer_radius" value="Yoke_barrel_outer_radius"/> - <constant name="Yoke_endcap_zmin" value="Yoke_barrel_half_length+25*mm"/> - <constant name="Yoke_endcap_zmax" value="6750*mm"/> + <constant name="Yoke_endcap_zmin" value="4660*mm"/> + <constant name="Yoke_endcap_zmax" value="5460*mm"/> <constant name="Yoke_endcap_outer_symmetry" value="8"/> <constant name="Yoke_endcap_inner_symmetry" value="0"/> <!--obseleted constance, used by old construct, should be removed while creating new constrcut--> <constant name="Yoke_Z_start_endcaps" value="Yoke_endcap_zmin"/> - <constant name="LumiCal_zmax" value="805*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="35.0*mm"/> - <constant name="LumiCal_outer_radius" value="100.0*mm- env_safety"/> + <constant name="LumiCal_outer_radius" value="100.0*mm- env_safety"/--> <constant name="tracker_region_zmax" value="OuterTracker_half_length"/> <constant name="tracker_region_rmax" value="OuterTracker_outer_radius"/> @@ -214,17 +236,24 @@ <vis name="VXDVis" alpha="0.1" r="0.1" g=".5" b=".5" showDaughters="true" visible="true"/> <vis name="VXDLayerVis" alpha="1.0" r="0.1" g=".5" b=".5" showDaughters="true" visible="true"/> <vis name="VXDSupportVis" alpha="1.0" r="0.0" g="1.0" b="0.0" showDaughters="true" visible="true"/> - <vis name="FTDVis" alpha="1.0" r="0.0" g="0.1" b="0.0" showDaughters="true" visible="false"/> - <vis name="FTDSensitiveVis" alpha="1.0" r="1.0" g="1.0" b="0.45" showDaughters="true" visible="true"/> - <vis name="FTDSupportVis" alpha="1.0" r="1.0" g="0.5" b="0.5" showDaughters="true" visible="true"/> - <vis name="SITVis" alpha="1.0" r="0.54" g="0.43" b="0.04" showDaughters="true" visible="true"/> - <vis name="SETVis" alpha="1.0" r="0.8" g="0.8" b="0.4" showDaughters="true" visible="false"/> + <vis name="FTDVis" alpha="1.0" r="0.5" g="0.87" b="0.11" showDaughters="true" visible="true"/> + <vis name="FTDSupportVis" alpha="1.0" r="0.3" g="0.3" b="1.0" showDaughters="true" visible="true"/> + <vis name="FTDSensitiveVis" alpha="1.0" r="0.3" g="0.5" b="1.0" showDaughters="true" visible="true"/> + <vis name="DCVis" alpha="1.0" r="0.96" g="0.64" b="0.90" showDaughters="true" visible="true"/> + <vis name="DCLayerVis" alpha="1.0" r="0.96" g="0.64" b="0.90" showDaughters="false" visible="true"/> + <vis name="SITVis" alpha="0.0" r="0.54" g="0.59" b="0.93" showDaughters="true" visible="false"/> + <vis name="SITSupportVis" alpha="1.0" r="0.0" g="0.0" b="1.0" showDaughters="false" visible="true"/> + <vis name="SITSensitiveVis" alpha="1.0" r="0.67" g="0.99" b="0.78" showDaughters="false" visible="true"/> + <vis name="SETVis" alpha="0.0" r="0.8" g="0.8" b="0.4" showDaughters="true" visible="false"/> + <vis name="SETSupportVis" alpha="1.0" r="1.0" g="0.0" b="0.0" showDaughters="true" visible="true"/> + <vis name="SETSensitiveVis" alpha="1.0" r="0.0" g="0.0" b="1.0" showDaughters="true" visible="true"/> <vis name="ECALVis" alpha="1.0" r="0.2" g="0.6" b="0" showDaughters="true" visible="true"/> - <vis name="HCALVis" alpha="1.0" r="0.078" g="0.01176" b="0.588" showDaughters="true" visible="true"/> + <vis name="HCALVis" alpha="1.0" r="0.95" g="0.78" b="0.69" showDaughters="true" visible="true"/> <vis name="SOLVis" alpha="1.0" r="0.4" g="0.4" b="0.4" showDaughters="true" visible="true"/> - <vis name="YOKEVis" alpha="1.0" r="0.6" g="0.0" b="0.0" showDaughters="true" visible="true"/> + <vis name="YOKEVis" alpha="1.0" r="0.64" g="0.75" b="0.99" showDaughters="false" visible="true"/> <vis name="LCALVis" alpha="1.0" r="0.25" g="0.88" b="0.81" showDaughters="true" visible="true"/> - <vis name="SupportVis" alpha="1.0" r="0.2" g="0.2" b="0.2" showDaughters="true" visible="true"/> + <vis name="SupportVis" alpha="1.0" r="0.2" g="0.2" b="0.2" showDaughters="true" visible="true"/> + <vis name="ShellVis" alpha="1.0" r="0.83" g="0.55" b="0.89" showDaughters="false" visible="true"/> <vis name="WhiteVis" alpha="0.0" r=".96" g=".96" b=".96" showDaughters="true" visible="true"/> <vis name="LightGrayVis" alpha="0.0" r=".75" g=".75" b=".75" showDaughters="true" visible="true"/> diff --git a/Detector/DetCRD/compact/CRD_o1_v01/CRD_o1_v01-onlyTracker.xml b/Detector/DetCRD/compact/CRD_o1_v01/CRD_o1_v01-onlyTracker.xml new file mode 100644 index 00000000..a3930554 --- /dev/null +++ b/Detector/DetCRD/compact/CRD_o1_v01/CRD_o1_v01-onlyTracker.xml @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="UTF-8"?> +<lccdd xmlns:compact="http://www.lcsim.org/schemas/compact/1.0" + xmlns:xs="http://www.w3.org/2001/XMLSchema" + xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/compact/1.0/compact.xsd"> + <info name="CRD_o1_v01" + title="CepC reference detctor with coil inside Hcal, pixel SIT/SET" + author="C.D.Fu, " + url="http://cepc.ihep.ac.cn" + status="developing" + version="v01"> + <comment>CepC reference detector simulation models used for detector study </comment> + </info> + + <includes> + <gdmlFile ref="${DD4hepINSTALL}/DDDetectors/compact/elements.xml"/> + <gdmlFile ref="../CRD_common_v01/materials.xml"/> + </includes> + + <define> + <constant name="world_size" value="25*m"/> + <constant name="world_x" value="world_size"/> + <constant name="world_y" value="world_size"/> + <constant name="world_z" value="world_size"/> + + <include ref="${DD4hepINSTALL}/DDDetectors/compact/detector_types.xml"/> + </define> + + <include ref="./CRD_Dimensions_v01_01.xml"/> + + <include ref="../CRD_common_v01/Beampipe_v01_01.xml"/> + <include ref="../CRD_common_v01/VXD_v01_01.xml"/> + <include ref="../CRD_common_v01/FTD_SkewRing_v01_01.xml"/> + <include ref="../CRD_common_v01/SIT_SimplePixel_v01_01.xml"/> + <include ref="../CRD_common_v01/DC_Simple_v01_01.xml"/> + <include ref="../CRD_common_v01/SET_SimplePixel_v01_01.xml"/> + + <fields> + <field name="InnerSolenoid" type="solenoid" + inner_field="Field_nominal_value" + outer_field="0" + zmax="SolenoidCoil_half_length" + inner_radius="SolenoidCoil_center_radius" + outer_radius="Solenoid_outer_radius"> + </field> + <field name="OuterSolenoid" type="solenoid" + inner_field="0" + outer_field="Field_outer_nominal_value" + zmax="SolenoidCoil_half_length" + inner_radius="Solenoid_outer_radius" + outer_radius="Yoke_barrel_inner_radius"> + </field> + </fields> + +</lccdd> diff --git a/Detector/DetCRD/compact/CRD_o1_v01/CRD_o1_v01.xml b/Detector/DetCRD/compact/CRD_o1_v01/CRD_o1_v01.xml index 5989f64d..f100e6f6 100644 --- a/Detector/DetCRD/compact/CRD_o1_v01/CRD_o1_v01.xml +++ b/Detector/DetCRD/compact/CRD_o1_v01/CRD_o1_v01.xml @@ -3,7 +3,7 @@ xmlns:xs="http://www.w3.org/2001/XMLSchema" xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/compact/1.0/compact.xsd"> <info name="CRD_o1_v01" - title="CepC reference detctor with coil inside Hcal, strip SIT" + title="CepC reference detctor with coil inside Hcal, pixel SIT/SET" author="C.D.Fu, " url="http://cepc.ihep.ac.cn" status="developing" @@ -29,20 +29,19 @@ <include ref="../CRD_common_v01/Beampipe_v01_01.xml"/> <include ref="../CRD_common_v01/VXD_v01_01.xml"/> - <include ref="../CRD_common_v01/FTD_SimpleStaggered_v01_01.xml"/> - <!--<include ref="../CRD_common_v01/SIT_SimplePlanar_v01_01.xml"/> --> + <include ref="../CRD_common_v01/FTD_SkewRing_v01_01.xml"/> + <include ref="../CRD_common_v01/SIT_SimplePixel_v01_01.xml"/> <include ref="../CRD_common_v01/DC_Simple_v01_01.xml"/> -<!-- <include ref="../CRD_common_v01/SET_SimplePlanar_v01_01.xml"/> --> -<!-- <include ref="../CRD_common_v01/Ecal_Crystal_Barrel_v01_01.xml"/> --> + <include ref="../CRD_common_v01/SET_SimplePixel_v01_01.xml"/> + <include ref="../CRD_common_v01/Ecal_Crystal_Barrel_v01_01.xml"/> <!--include ref="../CRD_common_v01/Ecal_Crystal_Endcap_v01_01.xml"/--> - <include ref="../CRD_common_v01/Coil_Simple_v01_01.xml"/> + <!--include ref="../CRD_common_v01/Coil_Simple_v01_01.xml"/> <include ref="../CRD_common_v01/Hcal_Rpc_Barrel_v01_01.xml"/> <include ref="../CRD_common_v01/Hcal_Rpc_Endcaps_v01_01.xml"/> - <!--include ref="../CRD_common_v01/Hcal_Rpc_EndcapRing_v01_01.xml"/--> <include ref="../CRD_common_v01/Yoke_Barrel_v01_01.xml"/> - <include ref="../CRD_common_v01/Yoke_Endcaps_v01_01.xml"/> + <include ref="../CRD_common_v01/Yoke_Endcaps_v01_01.xml"/--> <!--include ref="../CRD_common_v01/Lcal_v01_01.xml"/--> - + <fields> <field name="InnerSolenoid" type="solenoid" inner_field="Field_nominal_value" diff --git a/Detector/DetCRD/compact/CRD_o1_v02/CRD_Dimensions_v01_02.xml b/Detector/DetCRD/compact/CRD_o1_v02/CRD_Dimensions_v01_02.xml index 3b8f76a1..5d5689be 100644 --- a/Detector/DetCRD/compact/CRD_o1_v02/CRD_Dimensions_v01_02.xml +++ b/Detector/DetCRD/compact/CRD_o1_v02/CRD_Dimensions_v01_02.xml @@ -17,6 +17,8 @@ <define> <constant name="CrossingAngle" value="0.033*rad"/> + <constant name="Global_endcap_costheta" value="0.99"/> + <constant name="GlobalTrackerReadoutID_DCH" type="string" value="system:8,chamber:1,layer:7,phi:16"/> <constant name="GlobalTrackerReadoutID" type="string" value="system:5,side:-2,layer:9,module:8,sensor:8,barrelside:-2"/> @@ -32,7 +34,7 @@ <constant name="DetID_TPC" value=" 4"/> <constant name="DetID_SET" value=" 5"/> <constant name="DetID_ETD" value=" 6"/> - <constant name="DetID_DC" value=" 7"/> + <constant name="DetID_DC" value=" 4"/> <!--in order to cheat Clupatra, same as TPC--> <constant name="DetID_ECAL" value=" 20"/> <constant name="DetID_ECAL_PLUG" value=" 21"/> @@ -82,12 +84,13 @@ <constant name="Vertex_half_length" value="200*mm"/> <constant name="DC_Endcap_dz" value="0.1*mm"/> - <constant name="DC_half_length" value="2225*mm" /> + <constant name="DC_half_length" value="2980*mm" /> <constant name="DC_safe_distance" value="0.02*mm"/> <constant name="SDT_inner_wall_thickness" value="0.2*mm"/> <constant name="SDT_outer_wall_thickness" value="2.8*mm"/> <constant name="MainTracker_half_length" value="DC_half_length+DC_Endcap_dz" /> + <!--obselete for single drift chamber--> <constant name="InnerTracker_half_length" value="DC_half_length" /> <constant name="InnerTracker_inner_radius" value="234*mm"/> <constant name="InnerTracker_outer_radius" value="909*mm"/> @@ -102,12 +105,30 @@ <constant name="DC_inner_radius" value="DC_chamber_layer_rbegin-SDT_inner_wall_thickness-DC_safe_distance"/> <constant name="DC_outer_radius" value="DC_chamber_layer_rend+SDT_outer_wall_thickness+DC_safe_distance"/> + <constant name="SIT1_inner_radius" value="230*mm"/> + <constant name="SIT2_inner_radius" value="410*mm"/> + <constant name="SIT3_inner_radius" value="590*mm"/> + <constant name="SIT4_inner_radius" value="770*mm"/> + <constant name="SIT1_half_length" value="461*mm"/> + <constant name="SIT2_half_length" value="691*mm"/> + <constant name="SIT3_half_length" value="1013*mm"/> + <constant name="SIT4_half_length" value="1335*mm"/> - <constant name="SIT1_inner_radius" value="140*mm"/> - <constant name="SIT1_half_length" value="368.00*mm"/> - <constant name="SIT2_inner_radius" value="225*mm"/> - <constant name="SIT2_half_length" value="InnerTracker_half_length"/> + <constant name="SET_inner_radius" value="1815*mm"/> + <constant name="SiTracker_barrel_endcap_gap" value="5*mm"/> + <constant name="SiTracker_DC_endcap_gap" value="10*mm"/> + <constant name="SiTracker_endcap_z1" value="SIT1_half_length+SiTracker_barrel_endcap_gap"/> + <constant name="SiTracker_endcap_z2" value="SIT2_half_length+SiTracker_barrel_endcap_gap"/> + <constant name="SiTracker_endcap_z3" value="SIT3_half_length+SiTracker_barrel_endcap_gap"/> + <constant name="SiTracker_endcap_z4" value="SIT4_half_length+SiTracker_barrel_endcap_gap"/> + <constant name="SiTracker_endcap_z5" value="MainTracker_half_length+SiTracker_DC_endcap_gap"/> + <constant name="SiTracker_endcap_outer_radius1" value="SIT1_inner_radius+SiTracker_barrel_endcap_gap"/> + <constant name="SiTracker_endcap_outer_radius2" value="SIT2_inner_radius+SiTracker_barrel_endcap_gap"/> + <constant name="SiTracker_endcap_outer_radius3" value="SIT3_inner_radius+SiTracker_barrel_endcap_gap"/> + <constant name="SiTracker_endcap_outer_radius4" value="SIT4_inner_radius+SiTracker_barrel_endcap_gap"/> + <constant name="SiTracker_endcap_outer_radius5" value="SET_inner_radius+SiTracker_barrel_endcap_gap"/> + <!--obseleted --> <constant name="FTD_BeamPipe_cable_clearance" value="10*mm"/> <constant name="FTD_BeamPipe_gap" value="15*mm"/> <constant name="FTD_InnerTracker_gap" value="5*mm"/> @@ -124,69 +145,69 @@ <constant name="TUBE_IPOuterTube_end_radius" value="BeamPipe_Central_inner_radius+BeamPipe_Al_thickness"/> <constant name="TUBE_IPOuterBulge_end_z" value="BeamPipe_Crotch_zmax"/><!--"BeamPipe_ConeAl_zmax"/--> <constant name="TUBE_IPOuterBulge_end_radius" value="BeamPipe_Crotch_zmax*tan(CrossingAngle/2)+BeamPipe_Dnstream_inner_radius+BeamPipe_Cu_thickness"/> - <!--"BeamPipe_Expanded_inner_radius+BeamPipe_Al_thickness+5*mm"/--> + <!--"BeamPipe_Expanded_inner_radius+BeamPipe_Al_thickness+5*mm"/--> - <constant name="Ecal_barrel_inner_radius" value="1800*mm"/> + <constant name="Ecal_barrel_inner_radius" value="1900*mm"/> <constant name="Ecal_barrel_thickness" value="280*mm"/> <constant name="Ecal_barrel_outer_radius" value="(Ecal_barrel_inner_radius+Ecal_barrel_thickness)/cos(pi/8)"/> - <constant name="Ecal_barrel_half_length" value="2300*mm"/> + <constant name="Ecal_barrel_half_length" value="3350*mm"/> <constant name="Ecal_barrel_symmetry" value="8"/> - - <constant name="Ecal_endcap_inner_radius" value="340*mm"/> - <constant name="Ecal_endcap_outer_radius" value="Ecal_barrel_outer_radius"/> - <constant name="Ecal_endcap_zmin" value="2260*mm"/> - <constant name="Ecal_endcap_zmax" value="2540*mm"/> + + <constant name="Ecal_endcap_inner_radius" value="350*mm"/> + <constant name="Ecal_endcap_outer_radius" value="Ecal_barrel_inner_radius+Ecal_barrel_thickness"/> + <constant name="Ecal_endcap_zmin" value="3050*mm"/> + <constant name="Ecal_endcap_zmax" value="3350*mm"/> <constant name="Ecal_endcap_symmetry" value="8"/> <!--obseleted constance, used by old construct, should be removed while creating new constrcut--> <constant name="EcalEndcap_outer_radius" value="Ecal_barrel_outer_radius"/> - <constant name="Solenoid_inner_radius" value="2260*mm"/> - <constant name="Solenoid_outer_radius" value="2560*mm"/> - <constant name="Solenoid_half_length" value="3000*mm"/> - <constant name="SolenoidCoil_half_length" value="2900*mm"/> - <constant name="SolenoidCoil_radius" value="2300*mm"/> + <constant name="Solenoid_inner_radius" value="2330*mm"/> + <constant name="Solenoid_outer_radius" value="2480*mm"/> + <constant name="Solenoid_half_length" value="3830*mm"/> + <constant name="SolenoidCoil_half_length" value="3800*mm"/> + <constant name="SolenoidCoil_radius" value="2351*mm"/> <constant name="SolenoidCoil_center_radius" value="(Solenoid_inner_radius+Solenoid_outer_radius)/2"/> - <constant name="Hcal_barrel_inner_radius" value="2600*mm"/> - <constant name="Hcal_barrel_outer_radius" value="3670.6805372782*mm"/> - <constant name="Hcal_barrel_half_length" value="3000*mm"/> + <constant name="Hcal_barrel_inner_radius" value="2530*mm"/> + <constant name="Hcal_barrel_outer_radius" value="3610*mm"/> + <constant name="Hcal_barrel_half_length" value="4480*mm"/> <constant name="Hcal_barrel_symmetry" value="8"/> - <constant name="Hcal_endcap_inner_radius" value="340*mm"/> + <constant name="Hcal_endcap_inner_radius" value="400*mm"/> <constant name="Hcal_endcap_outer_radius" value="Hcal_barrel_outer_radius"/> - <constant name="Hcal_endcap_zmin" value="3010*mm"/> - <constant name="Hcal_endcap_zmax" value="4094.2*mm"/> + <constant name="Hcal_endcap_zmin" value="3400*mm"/> + <constant name="Hcal_endcap_zmax" value="4480*mm"/> <constant name="Hcal_endcap_symmetry" value="8"/> <!--obseleted constance, used by old construct, should be removed while creating new constrcut--> <constant name="HcalEndcap_max_z" value="Hcal_endcap_zmax"/> <constant name="Hcal_endcap_outer_symmetry" value="Hcal_endcap_symmetry"/> <constant name="Hcal_outer_radius" value="Hcal_barrel_outer_radius"/> - <constant name="Hcal_ring_inner_radius" value="Hcal_endcap_inner_radius"/> + <!--constant name="Hcal_ring_inner_radius" value="Hcal_endcap_inner_radius"/> <constant name="Hcal_ring_outer_radius" value="Solenoid_inner_radius"/> <constant name="Hcal_ring_zmin" value="2600*mm"/> <constant name="Hcal_ring_zmax" value="Hcal_endcap_zmin-10*mm"/> - <constant name="Hcal_ring_symmetry" value="8"/> + <constant name="Hcal_ring_symmetry" value="8"/--> - <constant name="Yoke_barrel_inner_radius" value="3710*mm"/> - <constant name="Yoke_barrel_outer_radius" value="6951*mm"/> + <constant name="Yoke_barrel_inner_radius" value="3660*mm"/> + <constant name="Yoke_barrel_outer_radius" value="4260*mm"/> <constant name="Yoke_barrel_half_length" value="Hcal_endcap_zmax"/> <constant name="Yoke_barrel_symmetry" value="8"/> <constant name="Yoke_endcap_inner_radius" value="400*mm"/> <constant name="Yoke_endcap_outer_radius" value="Yoke_barrel_outer_radius"/> - <constant name="Yoke_endcap_zmin" value="Yoke_barrel_half_length+25*mm"/> - <constant name="Yoke_endcap_zmax" value="6750*mm"/> + <constant name="Yoke_endcap_zmin" value="4660*mm"/> + <constant name="Yoke_endcap_zmax" value="5460*mm"/> <constant name="Yoke_endcap_outer_symmetry" value="8"/> <constant name="Yoke_endcap_inner_symmetry" value="0"/> <!--obseleted constance, used by old construct, should be removed while creating new constrcut--> <constant name="Yoke_Z_start_endcaps" value="Yoke_endcap_zmin"/> - <constant name="LumiCal_zmax" value="805*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="35.0*mm"/> - <constant name="LumiCal_outer_radius" value="100.0*mm- env_safety"/> + <constant name="LumiCal_outer_radius" value="100.0*mm- env_safety"/--> <constant name="tracker_region_zmax" value="OuterTracker_half_length"/> <constant name="tracker_region_rmax" value="OuterTracker_outer_radius"/> @@ -215,17 +236,24 @@ <vis name="VXDVis" alpha="0.1" r="0.1" g=".5" b=".5" showDaughters="true" visible="true"/> <vis name="VXDLayerVis" alpha="1.0" r="0.1" g=".5" b=".5" showDaughters="true" visible="true"/> <vis name="VXDSupportVis" alpha="1.0" r="0.0" g="1.0" b="0.0" showDaughters="true" visible="true"/> - <vis name="FTDVis" alpha="1.0" r="0.0" g="0.1" b="0.0" showDaughters="true" visible="false"/> - <vis name="FTDSensitiveVis" alpha="1.0" r="1.0" g="1.0" b="0.45" showDaughters="true" visible="true"/> - <vis name="FTDSupportVis" alpha="1.0" r="1.0" g="0.5" b="0.5" showDaughters="true" visible="true"/> - <vis name="SITVis" alpha="1.0" r="0.54" g="0.43" b="0.04" showDaughters="true" visible="true"/> - <vis name="SETVis" alpha="1.0" r="0.8" g="0.8" b="0.4" showDaughters="true" visible="false"/> + <vis name="FTDVis" alpha="1.0" r="0.5" g="0.87" b="0.11" showDaughters="true" visible="true"/> + <vis name="FTDSupportVis" alpha="1.0" r="0.3" g="0.3" b="1.0" showDaughters="true" visible="true"/> + <vis name="FTDSensitiveVis" alpha="1.0" r="0.3" g="0.5" b="1.0" showDaughters="true" visible="true"/> + <vis name="DCVis" alpha="1.0" r="0.96" g="0.64" b="0.90" showDaughters="true" visible="true"/> + <vis name="DCLayerVis" alpha="1.0" r="0.96" g="0.64" b="0.90" showDaughters="false" visible="true"/> + <vis name="SITVis" alpha="0.0" r="0.54" g="0.59" b="0.93" showDaughters="true" visible="false"/> + <vis name="SITSupportVis" alpha="1.0" r="0.0" g="0.0" b="1.0" showDaughters="false" visible="true"/> + <vis name="SITSensitiveVis" alpha="1.0" r="0.67" g="0.99" b="0.78" showDaughters="false" visible="true"/> + <vis name="SETVis" alpha="0.0" r="0.8" g="0.8" b="0.4" showDaughters="true" visible="false"/> + <vis name="SETSupportVis" alpha="1.0" r="1.0" g="0.0" b="0.0" showDaughters="true" visible="true"/> + <vis name="SETSensitiveVis" alpha="1.0" r="0.0" g="0.0" b="1.0" showDaughters="true" visible="true"/> <vis name="ECALVis" alpha="1.0" r="0.2" g="0.6" b="0" showDaughters="true" visible="true"/> - <vis name="HCALVis" alpha="1.0" r="0.078" g="0.01176" b="0.588" showDaughters="true" visible="true"/> + <vis name="HCALVis" alpha="1.0" r="0.95" g="0.78" b="0.69" showDaughters="true" visible="true"/> <vis name="SOLVis" alpha="1.0" r="0.4" g="0.4" b="0.4" showDaughters="true" visible="true"/> - <vis name="YOKEVis" alpha="1.0" r="0.6" g="0.0" b="0.0" showDaughters="true" visible="true"/> + <vis name="YOKEVis" alpha="1.0" r="0.64" g="0.75" b="0.99" showDaughters="false" visible="true"/> <vis name="LCALVis" alpha="1.0" r="0.25" g="0.88" b="0.81" showDaughters="true" visible="true"/> - <vis name="SupportVis" alpha="1.0" r="0.2" g="0.2" b="0.2" showDaughters="true" visible="true"/> + <vis name="SupportVis" alpha="1.0" r="0.2" g="0.2" b="0.2" showDaughters="true" visible="true"/> + <vis name="ShellVis" alpha="1.0" r="0.83" g="0.55" b="0.89" showDaughters="false" visible="true"/> <vis name="WhiteVis" alpha="0.0" r=".96" g=".96" b=".96" showDaughters="true" visible="true"/> <vis name="LightGrayVis" alpha="0.0" r=".75" g=".75" b=".75" showDaughters="true" visible="true"/> diff --git a/Detector/DetCRD/compact/CRD_o1_v02/CRD_o1_v02-onlyTracker.xml b/Detector/DetCRD/compact/CRD_o1_v02/CRD_o1_v02-onlyTracker.xml new file mode 100644 index 00000000..2397761d --- /dev/null +++ b/Detector/DetCRD/compact/CRD_o1_v02/CRD_o1_v02-onlyTracker.xml @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="UTF-8"?> +<lccdd xmlns:compact="http://www.lcsim.org/schemas/compact/1.0" + xmlns:xs="http://www.w3.org/2001/XMLSchema" + xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/compact/1.0/compact.xsd"> + <info name="CRD_o1_v02" + title="CepC reference detctor with coil inside Hcal, pixel SIT and strip SET" + author="C.D.Fu, " + url="http://cepc.ihep.ac.cn" + status="developing" + version="v02"> + <comment>CepC reference detector simulation models used for detector study </comment> + </info> + + <includes> + <gdmlFile ref="${DD4hepINSTALL}/DDDetectors/compact/elements.xml"/> + <gdmlFile ref="../CRD_common_v01/materials.xml"/> + </includes> + + <define> + <constant name="world_size" value="25*m"/> + <constant name="world_x" value="world_size"/> + <constant name="world_y" value="world_size"/> + <constant name="world_z" value="world_size"/> + + <include ref="${DD4hepINSTALL}/DDDetectors/compact/detector_types.xml"/> + </define> + + <include ref="./CRD_Dimensions_v01_02.xml"/> + + <include ref="../CRD_common_v01/Beampipe_v01_01.xml"/> + <include ref="../CRD_common_v01/VXD_v01_01.xml"/> + <include ref="../CRD_common_v01/FTD_SkewRing_v01_01.xml"/> + <include ref="../CRD_common_v01/SIT_SimplePixel_v01_01.xml"/> + <include ref="../CRD_common_v01/DC_Simple_v01_01.xml"/> + <include ref="../CRD_common_v01/SET_SimplePlanar_v01_01.xml"/> + + <fields> + <field name="InnerSolenoid" type="solenoid" + inner_field="Field_nominal_value" + outer_field="0" + zmax="SolenoidCoil_half_length" + inner_radius="SolenoidCoil_center_radius" + outer_radius="Solenoid_outer_radius"> + </field> + <field name="OuterSolenoid" type="solenoid" + inner_field="0" + outer_field="Field_outer_nominal_value" + zmax="SolenoidCoil_half_length" + inner_radius="Solenoid_outer_radius" + outer_radius="Yoke_barrel_inner_radius"> + </field> + </fields> + +</lccdd> diff --git a/Detector/DetCRD/compact/CRD_o1_v02/CRD_o1_v02.xml b/Detector/DetCRD/compact/CRD_o1_v02/CRD_o1_v02.xml index 4d34ec72..efa213d6 100644 --- a/Detector/DetCRD/compact/CRD_o1_v02/CRD_o1_v02.xml +++ b/Detector/DetCRD/compact/CRD_o1_v02/CRD_o1_v02.xml @@ -3,7 +3,7 @@ xmlns:xs="http://www.w3.org/2001/XMLSchema" xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/compact/1.0/compact.xsd"> <info name="CRD_o1_v02" - title="CepC reference detctor with coil inside Hcal, pixel SIT" + title="CepC reference detctor with coil inside Hcal, pixel SIT and strip SET" author="C.D.Fu, " url="http://cepc.ihep.ac.cn" status="developing" @@ -29,18 +29,17 @@ <include ref="../CRD_common_v01/Beampipe_v01_01.xml"/> <include ref="../CRD_common_v01/VXD_v01_01.xml"/> - <include ref="../CRD_common_v01/FTD_SimpleStaggered_v01_02.xml"/> -<!-- <include ref="../CRD_common_v01/SIT_SimplePixel_v01_01.xml"/> --> + <include ref="../CRD_common_v01/FTD_SkewRing_v01_01.xml"/> + <include ref="../CRD_common_v01/SIT_SimplePixel_v01_01.xml"/> <include ref="../CRD_common_v01/DC_Simple_v01_01.xml"/> -<!-- <include ref="../CRD_common_v01/SET_SimplePlanar_v01_02.xml"/> --> -<!-- <include ref="../CRD_common_v01/Ecal_Crystal_Barrel_v01_01.xml"/> --> + <include ref="../CRD_common_v01/SET_SimplePlanar_v01_01.xml"/> + <include ref="../CRD_common_v01/Ecal_Crystal_Barrel_v01_01.xml"/> <!--include ref="../CRD_common_v01/Ecal_Crystal_Endcap_v01_01.xml"/--> - <include ref="../CRD_common_v01/Coil_Simple_v01_01.xml"/> + <!--include ref="../CRD_common_v01/Coil_Simple_v01_01.xml"/> <include ref="../CRD_common_v01/Hcal_Rpc_Barrel_v01_01.xml"/> <include ref="../CRD_common_v01/Hcal_Rpc_Endcaps_v01_01.xml"/> - <!--include ref="../CRD_common_v01/Hcal_Rpc_EndcapRing_v01_01.xml"/--> <include ref="../CRD_common_v01/Yoke_Barrel_v01_01.xml"/> - <include ref="../CRD_common_v01/Yoke_Endcaps_v01_01.xml"/> + <include ref="../CRD_common_v01/Yoke_Endcaps_v01_01.xml"/--> <!--include ref="../CRD_common_v01/Lcal_v01_01.xml"/--> <fields> diff --git a/Detector/DetCRD/compact/README.md b/Detector/DetCRD/compact/README.md index e28392fe..0d1511b8 100644 --- a/Detector/DetCRD/compact/README.md +++ b/Detector/DetCRD/compact/README.md @@ -4,8 +4,8 @@ The following CRD detector models are available in CEPCSW | Model | Description | MainTracker | Ecal | Hcal | Status | | ------------- | -----------------------------|------------ |---------|------|----------------| -| CRD_o1_v01 | coil inside simulation model | DC | crystal | RPC | developing | -| CRD_o1_v02 | pixel SIT | DC | crystal | RPC | developing | +| CRD_o1_v01 | coil inside simulation model | SIT+DC+SET | crystal | RPC | developing | +| CRD_o1_v02 | pixel SET | SIT+DC+SET | crystal | RPC | developing | | ------------- | -----------------------------|-------------|---------|------|----------------| ## Details @@ -20,13 +20,13 @@ The following CRD detector models are available in CEPCSW - Detector/DetCEPCv4/src/tracker/VXD04_geo.cpp - Detector/DetCEPCv4/src/tracker/SIT_Simple_Planar_geo.cpp - MainTracker - - with Dirft Chamber + silicon layer between inner and outer chambers (DC + SIT34 + SET) - - DC_outer_radius = 1716*mm + - with Dirft Chamber + pixel silicon layer between inner and outer chambers (SIT1234 + DC + SET) + - DC_outer_radius = 1800*mm for maximum sensitive gas - Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp - - Detector/DetCEPCv4/src/tracker/SET_Simple_Planar_geo.cpp + - Detector/DetCEPCv4/src/tracker/SIT_Simple_Pixel_geo.cpp - EndcapTracker - - with silicon pestals (FTDPixel + FTDStrip) - - Detector/DetCEPCv4/src/tracker/FTD_Simple_Staggered_geo.cpp + - with silicon pestals (FTDPixel) + - Detector/DetCRD/src/Tracker/SiTrackerSkewRing_v01_geo.cpp - Ecal - with crystal - Detector/DetCRD/src/Calorimeter/CRDEcal.cpp @@ -43,10 +43,6 @@ The following CRD detector models are available in CEPCSW ### CRD_o1_v02 (to update) - based on CRD_o1_v01 - - SIT: strip -> pixel - - SIT12->SIT1: r = 152.90 -> 140.00 mm (pixel SIT1) - - SIT34->SIT2: between DCs -> 225.00 mm (pixel SIT2) - - SET12: outside DC -> between DCs - - SET34: outside DC (added) + - strip SET: double layers - compact files: - [./CRD_o1_v02/CRD_o1_v02.xml](./CRD_o1_v02/CRD_o1_v02.xml) diff --git a/Detector/DetCRD/scripts/CRD_o1_v01-SimRec.py b/Detector/DetCRD/scripts/CRD_o1_v01-SimRec.py index cc2e5095..1810a574 100644 --- a/Detector/DetCRD/scripts/CRD_o1_v01-SimRec.py +++ b/Detector/DetCRD/scripts/CRD_o1_v01-SimRec.py @@ -14,7 +14,9 @@ rndmengine.Seeds = seed rndmgensvc = RndmGenSvc("RndmGenSvc") rndmgensvc.Engine = rndmengine.name() -geometry_option = "CRD_o1_v01/CRD_o1_v01.xml" +# option for standalone tracker study +geometry_option = "CRD_o1_v01/CRD_o1_v01-onlyTracker.xml" +#geometry_option = "CRD_o1_v01/CRD_o1_v01.xml" if not os.getenv("DETCRDROOT"): print("Can't find the geometry. Please setup envvar DETCRDROOT." ) @@ -42,8 +44,8 @@ gun = GtGunTool("GtGunTool") gun.Particles = ["mu-"] gun.EnergyMins = [100.] # GeV gun.EnergyMaxs = [100.] # GeV -gun.ThetaMins = [0] # deg -gun.ThetaMaxs = [180] # deg +gun.ThetaMins = [85] # deg +gun.ThetaMaxs = [85] # deg gun.PhiMins = [0] # deg gun.PhiMaxs = [360] # deg # stdheprdr = StdHepRdr("StdHepRdr") @@ -91,14 +93,14 @@ gearsvc = GearSvc("GearSvc") from Configurables import TrackSystemSvc tracksystemsvc = TrackSystemSvc("TrackSystemSvc") +# digitization vxdhitname = "VXDTrackerHits" sithitname = "SITTrackerHits" -sitspname = "SITSpacePoints" -tpchitname = "TPCTrackerHits" +dchitname = "DCTrackerHits" sethitname = "SETTrackerHits" setspname = "SETSpacePoints" -ftdspname = "FTDSpacePoints" ftdhitname = "FTDTrackerHits" +ftdspname = "FTDSpacePoints" from Configurables import PlanarDigiAlg digiVXD = PlanarDigiAlg("VXDDigi") digiVXD.SimTrackHitCollection = "VXDCollection" @@ -109,49 +111,42 @@ digiVXD.UsePlanarTag = True #digiVXD.OutputLevel = DEBUG digiSIT = PlanarDigiAlg("SITDigi") -digiSIT.IsStrip = True +digiSIT.IsStrip = False digiSIT.SimTrackHitCollection = "SITCollection" digiSIT.TrackerHitCollection = sithitname digiSIT.TrackerHitAssociationCollection = "SITTrackerHitAssociation" -digiSIT.ResolutionU = [0.007] -digiSIT.ResolutionV = [0.000] +digiSIT.ResolutionU = [0.0072] +digiSIT.ResolutionV = [0.086] digiSIT.UsePlanarTag = True #digiSIT.OutputLevel = DEBUG digiSET = PlanarDigiAlg("SETDigi") -digiSET.IsStrip = True +digiSET.IsStrip = False digiSET.SimTrackHitCollection = "SETCollection" digiSET.TrackerHitCollection = sethitname digiSET.TrackerHitAssociationCollection = "SETTrackerHitAssociation" -digiSET.ResolutionU = [0.007] -digiSET.ResolutionV = [0.000] +digiSET.ResolutionU = [0.0072] +digiSET.ResolutionV = [0.086] digiSET.UsePlanarTag = True #digiSET.OutputLevel = DEBUG digiFTD = PlanarDigiAlg("FTDDigi") +digiFTD.IsStrip = False digiFTD.SimTrackHitCollection = "FTDCollection" digiFTD.TrackerHitCollection = ftdhitname digiFTD.TrackerHitAssociationCollection = "FTDTrackerHitAssociation" -digiFTD.ResolutionU = [0.003, 0.003, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007] -digiFTD.ResolutionV = [0.003, 0.003, 0, 0, 0, 0, 0, 0 ] +digiFTD.ResolutionU = [0.003, 0.003, 0.0072, 0.0072, 0.0072, 0.0072, 0.0072] +digiFTD.ResolutionV = [0.003, 0.003, 0.0072, 0.0072, 0.0072, 0.0072, 0.0072] digiFTD.UsePlanarTag = True #digiFTD.OutputLevel = DEBUG -from Configurables import SpacePointBuilderAlg -spSIT = SpacePointBuilderAlg("SITBuilder") -spSIT.TrackerHitCollection = sithitname -spSIT.TrackerHitAssociationCollection = "SITTrackerHitAssociation" -spSIT.SpacePointCollection = sitspname -spSIT.SpacePointAssociationCollection = "SITSpacePointAssociation" -#spSIT.OutputLevel = DEBUG - -spSET = SpacePointBuilderAlg("SETBuilder") -spSET.TrackerHitCollection = sethitname -spSET.TrackerHitAssociationCollection = "SETTrackerHitAssociation" -spSET.SpacePointCollection = setspname -spSET.SpacePointAssociationCollection = "SETSpacePointAssociation" -#spSET.OutputLevel = DEBUG +from Configurables import DCHDigiAlg +digiDC = DCHDigiAlg("DCHDigi") +digiDC.DigiDCHitCollection = dchitname +#digiDC.OutputLevel = DEBUG +# two strip tracker hits -> one space point +from Configurables import SpacePointBuilderAlg spFTD = SpacePointBuilderAlg("FTDBuilder") spFTD.TrackerHitCollection = ftdhitname spFTD.TrackerHitAssociationCollection = "FTDTrackerHitAssociation" @@ -159,14 +154,15 @@ spFTD.SpacePointCollection = ftdspname spFTD.SpacePointAssociationCollection = "FTDSpacePointAssociation" #spFTD.OutputLevel = DEBUG +# tracking from Configurables import SiliconTrackingAlg tracking = SiliconTrackingAlg("SiliconTracking") tracking.HeaderCol = "EventHeader" tracking.VTXHitCollection = vxdhitname -tracking.SITHitCollection = sitspname +tracking.SITHitCollection = sithitname tracking.FTDPixelHitCollection = ftdhitname tracking.FTDSpacePointCollection = ftdspname -tracking.SITRawHitCollection = sithitname +tracking.SITRawHitCollection = "NotNeedForPixelSIT" tracking.FTDRawHitCollection = ftdhitname tracking.UseSIT = True tracking.SmoothOn = False @@ -189,31 +185,38 @@ forward.CriteriaMax = [30, 1.02, 10, 1.015, 20, 1.3, 1.0, 150, 1.08, 99999999, from Configurables import TrackSubsetAlg subset = TrackSubsetAlg("TrackSubset") subset.TrackInputCollections = ["ForwardTracks", "SiTracks"] -subset.RawTrackerHitCollections = [vxdhitname, sithitname, ftdhitname, sitspname, ftdspname] +subset.RawTrackerHitCollections = [vxdhitname, sithitname, ftdhitname, ftdspname] subset.TrackSubsetCollection = "SubsetTracks" #subset.OutputLevel = DEBUG -#TODO: DC reconstruction +#TODO: DC reconstruction, as preliminary, use Clupatra like as TPC +from Configurables import ClupatraAlg +clupatra = ClupatraAlg("Clupatra") +clupatra.TPCHitCollection = dchitname +clupatra.DistanceCut = 100. +clupatra.MaxDeltaChi2 = 100. +clupatra.Chi2Cut = 150. +#clupatra.OutputLevel = DEBUG from Configurables import FullLDCTrackingAlg full = FullLDCTrackingAlg("FullTracking") full.VTXTrackerHits = vxdhitname -full.SITTrackerHits = sitspname -full.TPCTrackerHits = "NULL" # add TPC or DC tracker hit here, if TPC or DC track is set by full.TPCTracks -full.SETTrackerHits = setspname +full.SITTrackerHits = sithitname +full.TPCTrackerHits = dchitname # add TPC or DC tracker hit here, if TPC or DC track is set by full.TPCTracks +full.SETTrackerHits = sethitname full.FTDPixelTrackerHits = ftdhitname full.FTDSpacePoints = ftdspname -full.SITRawHits = sithitname -full.SETRawHits = sethitname +full.SITRawHits = "NotNeedForPixelSIT" +full.SETRawHits = "NotNeedForPixelSET" full.FTDRawHits = ftdhitname -full.TPCTracks = "NULL" # add standalone TPC or DC track here +full.TPCTracks = "ClupatraTracks" # add standalone TPC or DC track here full.SiTracks = "SubsetTracks" full.OutputTracks = "MarlinTrkTracks" full.SITHitToTrackDistance = 3. full.SETHitToTrackDistance = 5. #full.OutputLevel = DEBUG -#TODO: more reconstruction, PFA etc. +#TODO: more reconstruction, PFA etc. # output from Configurables import PodioOutput @@ -224,7 +227,8 @@ out.outputCommands = ["keep *"] # ApplicationMgr from Configurables import ApplicationMgr ApplicationMgr( - TopAlg = [genalg, detsimalg, digiVXD, digiSIT, digiSET, digiFTD, spSIT, spSET, spFTD, tracking, forward, subset, full, out], + #TopAlg = [genalg, detsimalg, digiVXD, digiSIT, digiSET, digiFTD, spFTD, digiDC, tracking, forward, subset, clupatra, full, out], + TopAlg = [genalg, detsimalg, digiVXD, digiSIT, digiSET, digiFTD, spFTD, digiDC, tracking, forward, subset, full, out], EvtSel = 'NONE', EvtMax = 10, ExtSvc = [rndmengine, rndmgensvc, dsvc, evtseeder, geosvc, gearsvc, tracksystemsvc], diff --git a/Detector/DetCRD/scripts/CRD_o1_v02-SimRec.py b/Detector/DetCRD/scripts/CRD_o1_v02-SimRec.py index ad3425d0..acee999d 100644 --- a/Detector/DetCRD/scripts/CRD_o1_v02-SimRec.py +++ b/Detector/DetCRD/scripts/CRD_o1_v02-SimRec.py @@ -14,7 +14,9 @@ rndmengine.Seeds = seed rndmgensvc = RndmGenSvc("RndmGenSvc") rndmgensvc.Engine = rndmengine.name() -geometry_option = "CRD_o1_v02/CRD_o1_v02.xml" +# option for standalone tracker study +geometry_option = "CRD_o1_v02/CRD_o1_v02-onlyTracker.xml" +#geometry_option = "CRD_o1_v02/CRD_o1_v02.xml" if not os.getenv("DETCRDROOT"): print("Can't find the geometry. Please setup envvar DETCRDROOT." ) @@ -42,8 +44,8 @@ gun = GtGunTool("GtGunTool") gun.Particles = ["mu-"] gun.EnergyMins = [100.] # GeV gun.EnergyMaxs = [100.] # GeV -gun.ThetaMins = [0] # deg -gun.ThetaMaxs = [180] # deg +gun.ThetaMins = [85] # deg +gun.ThetaMaxs = [85] # deg gun.PhiMins = [0] # deg gun.PhiMaxs = [360] # deg # stdheprdr = StdHepRdr("StdHepRdr") @@ -94,6 +96,7 @@ tracksystemsvc = TrackSystemSvc("TrackSystemSvc") # digitization vxdhitname = "VXDTrackerHits" sithitname = "SITTrackerHits" +dchitname = "DCTrackerHits" sethitname = "SETTrackerHits" setspname = "SETSpacePoints" ftdhitname = "FTDTrackerHits" @@ -112,8 +115,8 @@ digiSIT.IsStrip = False digiSIT.SimTrackHitCollection = "SITCollection" digiSIT.TrackerHitCollection = sithitname digiSIT.TrackerHitAssociationCollection = "SITTrackerHitAssociation" -digiSIT.ResolutionU = [0.007] -digiSIT.ResolutionV = [0.050] +digiSIT.ResolutionU = [0.0072] +digiSIT.ResolutionV = [0.086] digiSIT.UsePlanarTag = True #digiSIT.OutputLevel = DEBUG @@ -122,21 +125,27 @@ digiSET.IsStrip = True digiSET.SimTrackHitCollection = "SETCollection" digiSET.TrackerHitCollection = sethitname digiSET.TrackerHitAssociationCollection = "SETTrackerHitAssociation" -digiSET.ResolutionU = [0.007] +digiSET.ResolutionU = [0.0072] digiSET.ResolutionV = [0.000] digiSET.UsePlanarTag = True #digiSET.OutputLevel = DEBUG digiFTD = PlanarDigiAlg("FTDDigi") +digiFTD.IsStrip = False digiFTD.SimTrackHitCollection = "FTDCollection" digiFTD.TrackerHitCollection = ftdhitname digiFTD.TrackerHitAssociationCollection = "FTDTrackerHitAssociation" -digiFTD.ResolutionU = [0.003, 0.003, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007] -digiFTD.ResolutionV = [0.003, 0.003, 0, 0, 0, 0, 0, 0 ] +digiFTD.ResolutionU = [0.003, 0.003, 0.0072, 0.0072, 0.0072, 0.0072, 0.0072] +digiFTD.ResolutionV = [0.003, 0.003, 0.0072, 0.0072, 0.0072, 0.0072, 0.0072] digiFTD.UsePlanarTag = True #digiFTD.OutputLevel = DEBUG -# two strip tracker hits -> one space point +from Configurables import DCHDigiAlg +digiDC = DCHDigiAlg("DCHDigi") +digiDC.DigiDCHitCollection = dchitname +#digiDC.OutputLevel = DEBUG + +# two strip tracker hits -> one space point from Configurables import SpacePointBuilderAlg spSET = SpacePointBuilderAlg("SETBuilder") spSET.TrackerHitCollection = sethitname @@ -162,8 +171,6 @@ tracking.FTDPixelHitCollection = ftdhitname tracking.FTDSpacePointCollection = ftdspname tracking.SITRawHitCollection = "NotNeedForPixelSIT" tracking.FTDRawHitCollection = ftdhitname -tracking.LayerCombinations = [7,6,5, 7,6,4, 7,6,3, 7,6,2, 7,5,3, 7,5,2, 7,4,3, 7,4,2, 6,5,3, 6,5,2, 6,4,3, 6,4,2, 6,3,1, 6,3,0, 6,2,1, 6,2,0, - 5,3,1, 5,3,0, 5,2,1, 5,2,0, 4,3,1, 4,3,0, 4,2,1, 4,2,0] tracking.UseSIT = True tracking.SmoothOn = False #tracking.OutputLevel = DEBUG @@ -189,22 +196,30 @@ subset.RawTrackerHitCollections = [vxdhitname, sithitname, ftdhitname, ftdspname subset.TrackSubsetCollection = "SubsetTracks" #subset.OutputLevel = DEBUG -#TODO: DC reconstruction +#TODO: DC reconstruction, as preliminary, use Clupatra like as TPC +from Configurables import ClupatraAlg +clupatra = ClupatraAlg("Clupatra") +clupatra.TPCHitCollection = dchitname +clupatra.DistanceCut = 100. +clupatra.MaxDeltaChi2 = 100. +clupatra.Chi2Cut = 150. +#clupatra.OutputLevel = DEBUG from Configurables import FullLDCTrackingAlg full = FullLDCTrackingAlg("FullTracking") full.VTXTrackerHits = vxdhitname full.SITTrackerHits = sithitname -full.TPCTrackerHits = "NULL" # add TPC or DC tracker hit here, if TPC or DC track is set by full.TPCTracks +full.TPCTrackerHits = dchitname # add TPC or DC tracker hit here, if TPC or DC track is set by full.TPCTracks full.SETTrackerHits = setspname full.FTDPixelTrackerHits = ftdhitname full.FTDSpacePoints = ftdspname -full.SITRawHits = sithitname +full.SITRawHits = "NotNeedForPixelSIT" full.SETRawHits = sethitname full.FTDRawHits = ftdhitname -full.TPCTracks = "NULL" # add standalone TPC or DC track here +full.TPCTracks = "ClupatraTracks" # add standalone TPC or DC track here full.SiTracks = "SubsetTracks" full.OutputTracks = "MarlinTrkTracks" +full.SITHitToTrackDistance = 3. full.SETHitToTrackDistance = 5. #full.OutputLevel = DEBUG @@ -219,7 +234,8 @@ out.outputCommands = ["keep *"] # ApplicationMgr from Configurables import ApplicationMgr ApplicationMgr( - TopAlg = [genalg, detsimalg, digiVXD, digiSIT, digiSET, digiFTD, spSET, spFTD, tracking, forward, subset, full, out], + #TopAlg = [genalg, detsimalg, digiVXD, digiSIT, digiSET, digiFTD, spSET, spFTD, digiDC, tracking, forward, subset, clupatra, full, out], + TopAlg = [genalg, detsimalg, digiVXD, digiSIT, digiSET, digiFTD, spSET, spFTD, digiDC, tracking, forward, subset, full, out], EvtSel = 'NONE', EvtMax = 10, ExtSvc = [rndmengine, rndmgensvc, dsvc, evtseeder, geosvc, gearsvc, tracksystemsvc], diff --git a/Reconstruction/Tracking/src/Clupatra/ClupatraAlg.cpp b/Reconstruction/Tracking/src/Clupatra/ClupatraAlg.cpp index 5c14a0fb..ed76016f 100644 --- a/Reconstruction/Tracking/src/Clupatra/ClupatraAlg.cpp +++ b/Reconstruction/Tracking/src/Clupatra/ClupatraAlg.cpp @@ -458,7 +458,7 @@ StatusCode ClupatraAlg::execute() { sclu.setOwner() ; // FIXME Mingrui - //streamlog_out( DEBUG2 ) << " call cluster_sorted with " << hits.size() << " hits " << std::endl ; + debug() << " call cluster_sorted with " << hits.size() << " hits " << endmsg; nncl.cluster_sorted( hits.begin(), hits.end() , std::back_inserter( sclu ), dist , _minCluSize ) ; @@ -491,7 +491,7 @@ StatusCode ClupatraAlg::execute() { } //------------------------------------------------------------------------------------------ // FIXME Mingrui - // debug() << " found " << sclu.size() << " clusters " << std::endl ; + debug() << " found " << sclu.size() << " clusters " << endmsg; // try to split up clusters according to multiplicity int layerWithMultiplicity = _padRowRange - 2 ; // fixme: make parameter @@ -534,15 +534,15 @@ StatusCode ClupatraAlg::execute() { int nHitsAdded = 0 ; - // debug() << " call fitter for seed cluster with " << (*icv)->size() << " hits " << endmsg; - // int counter = 0; - // for( Clusterer::cluster_type::iterator ci=(*icv)->begin(), end= (*icv)->end() ; ci!=end; ++ci ) { - // debug() << counter++ << " " << *((*ci)->first->edm4hepHit) << " \nlayer " << (*ci)->first->layer << endmsg; - // } + debug() << " call fitter for seed cluster with " << (*icv)->size() << " hits " << endmsg; + int counter = 0; + for( Clusterer::cluster_type::iterator ci=(*icv)->begin(), end= (*icv)->end() ; ci!=end; ++ci ) { + debug() << counter++ << " " << (*ci)->first->edm4hepHit << " \nlayer " << (*ci)->first->layer << endmsg; + } MarlinTrk::IMarlinTrack* mTrk = fitter( *icv ) ; - + debug() << "before add hits and filter" << endmsg; // std::vector<std::pair<edm4hep::ConstTrackerHit, double> > hitsInFit ; // mTrk->getHitsInFit( hitsInFit ) ; // for (auto hit : hitsInFit) std::cout << hit.first << std::endl; @@ -556,15 +556,15 @@ StatusCode ClupatraAlg::execute() { // drop seed clusters with no hits added - but not in the very forward region... - // debug() << "Goes here" << endmsg; + debug() << "Goes here" << endmsg; if( nHitsAdded < 1 && outerRow > 2*_padRowRange ){ //FIXME: make parameter ? ConstTrack edm4hepTrk( converter( *icv ) ) ; // debug() << "Goes goes here" << endmsg; // FIXME Mingrui - //streamlog_out( DEBUG2) << "============= poor seed cluster - no hits added - started from row " << outerRow << "\n" - //<< *edm4hepTrk << std::endl ; + debug() << "============= poor seed cluster - no hits added - started from row " << outerRow << "\n" + << edm4hepTrk << endmsg; for( Clusterer::cluster_type::iterator ci=(*icv)->begin(), end= (*icv)->end() ; ci!=end; ++ci ) { diff --git a/Reconstruction/Tracking/src/Clupatra/clupatra_new.cpp b/Reconstruction/Tracking/src/Clupatra/clupatra_new.cpp index d4d58ade..400774f2 100644 --- a/Reconstruction/Tracking/src/Clupatra/clupatra_new.cpp +++ b/Reconstruction/Tracking/src/Clupatra/clupatra_new.cpp @@ -1240,27 +1240,26 @@ start: unsigned nHit = 0 ; if( reverse_order ){ - // std::cout << "It is true order" << std::endl; - for( CluTrack::reverse_iterator it=clu->rbegin() ; it != clu->rend() ; ++it){ - edm4hep::ConstTrackerHit ph = (*it)->first->edm4hepHit; - trk->addHit(ph) ; - ++nHit ; - // std::cout << " hit added " << (*it)->first->edm4hepHit << std::endl ; - } - - trk->initialise( MarlinTrk::IMarlinTrack::forward ) ; + //std::cout << "It is true order" << std::endl; + for( CluTrack::reverse_iterator it=clu->rbegin() ; it != clu->rend() ; ++it){ + edm4hep::ConstTrackerHit ph = (*it)->first->edm4hepHit; + trk->addHit(ph) ; + ++nHit ; + //std::cout << " hit added " << (*it)->first->edm4hepHit << std::endl ; + } + + trk->initialise( MarlinTrk::IMarlinTrack::forward ) ; } else { - - // std::cout << "It is reverse order" << std::endl; - for( CluTrack::iterator it=clu->begin() ; it != clu->end() ; ++it){ - edm4hep::ConstTrackerHit ph = (*it)->first->edm4hepHit; - trk->addHit(ph) ; - ++nHit ; - // std::cout << " hit added "<< (*it)->first->edm4hepHit << std::endl ; - } - - trk->initialise( MarlinTrk::IMarlinTrack::backward ) ; + //std::cout << "It is reverse order" << std::endl; + for( CluTrack::iterator it=clu->begin() ; it != clu->end() ; ++it){ + edm4hep::ConstTrackerHit ph = (*it)->first->edm4hepHit; + trk->addHit(ph) ; + ++nHit ; + //std::cout << " hit added "<< (*it)->first->edm4hepHit << std::endl ; + } + + trk->initialise( MarlinTrk::IMarlinTrack::backward ) ; } int code = trk->fit( maxChi2 ) ; -- GitLab