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