diff --git a/DDExamples/ILDExDet/compact/Tesla.xml b/DDExamples/ILDExDet/compact/Tesla.xml index e2c9ae84a92751ea6e1e88d0c1b29627e83c13c3..f4e10a1473c4ab6482e21a66a7220d2a8ea93d91 100644 --- a/DDExamples/ILDExDet/compact/Tesla.xml +++ b/DDExamples/ILDExDet/compact/Tesla.xml @@ -50,6 +50,7 @@ <constant name="Hcal_R_max" value="3000*mm"/> <constant name="Hcal_Ecal_gap" value="26*mm"/> <constant name="Yoke_barrel_inner_radius" value="4450*mm"/> + <constant name="Yoke_symmetry" value="8"/> <!-- VXD03 parameters --> @@ -68,7 +69,7 @@ <constant name="VXD_support_ladder_thickness" value="0.134*mm"/> <constant name="VXD_support_structure_thickness" value="VXD_support_ladder_thickness/2."/> <constant name="VXD_support_endplate_half_z" value="VXD_shell_half_z"/> - <constant name="VXD_support_endplate_inner_radius" value="VXD_radius_r5+VXD_layer_gap+5.0*mm"/> + <constant name="VXD_support_endplate_inner_radius" value="23.2*mm"/> <constant name="VXD_support_endplate_inner_radius_L1" value="VXD_inner_radius-0.3*mm"/> <constant name="VXD_support_endplate_outer_radius_L1" value="VXD_inner_radius+VXD_layer_gap+2.0*mm"/> <constant name="VXD_side_band_electronics_width" value="0.5*mm"/> @@ -111,13 +112,14 @@ <constant name="Ecal_Si_thickness" value="0.5*mm"/> <constant name="Ecal_EC_ring_gap" value="10*mm"/> + <constant name="Ecal_cables_gap" value="100*mm"/> <constant name="Ecal_Barrel_halfZ" value="2350*mm"/> - <constant name="Ecal_barrel_number_of_towers" value="5"/> + <constant name="Ecal_barrel_number_of_towers" value="7"/> <constant name="Ecal_endcap_extra_size" value="60.8*mm"/> - <constant name="Ecal_endcap_center_box_size" value="800*mm"/> + <constant name="Ecal_endcap_center_box_size" value="600*mm"/> <constant name="Ecal_H_fiber_thickness" value="0.30*mm"/> - <constant name="Ecal_cells_size" value="4.9*mm"/> + <constant name="Ecal_cells_size" value="10*mm"/> <constant name="Ecal_endcap_zmax" value="1825*mm"/> <constant name="Ecal_endcap_zmin" value="2329*mm"/> <constant name="Ecal_nlayers1" value="20"/> @@ -127,25 +129,63 @@ <constant name="Ecal_radiator_layers_set2_thickness" value="4.2*mm"/> <constant name="Ecal_radiator_layers_set3_thickness" value="0*mm"/> + <!-- hcal04 parameters --> + <constant name="Hcal_radiator_thickness" value="20*mm"/> + <constant name="Hcal_stave_gaps" value="3*mm"/> + <constant name="Hcal_back_plate_thickness" value="30*mm"/> + <constant name="Hcal_barrel_end_module_type" value="2"/> + <constant name="Hcal_endcap_cables_gap" value="214*mm"/> + <constant name="Hcal_endcap_center_box_size" value="600*mm"/> + <constant name="Hcal_endcap_module_dim_z" value="1010*mm"/> + + <constant name="Hcal_lateral_structure_thickness" value="10*mm"/> + <constant name="Hcal_lateral_plate_thickness" value="Hcal_lateral_structure_thickness"/> + <constant name="Hcal_nlayers" value="8"/> + <constant name="Hcal_outer_radius" value="3000*mm"/> + <constant name="Hcal_modules_gap" value="2*mm"/> + <constant name="Hcal_fiber_gap" value="1.5*mm"/> + <constant name="Hcal_cells_size" value="10*mm"/> + + <constant name="Hcal_chamber_thickness" value="6.5*mm"/> + <constant name="Hcal_total_z_size" value="140*mm + 2*TPC_Ecal_Hcal_barrel_halfZ"/> + <constant name="Hcal_normal_dim_z" value="Hcal_total_z_size/5*1080/1120"/> + <constant name="Hcal_top_end_dim_z" value="(Hcal_total_z_size-3*Hcal_normal_dim_z)/2"/> + <constant name="Hcal_start_z" value="1.5*Hcal_normal_dim_z + Hcal_top_end_dim_z + 2*Hcal_modules_gap + Hcal_endcap_cables_gap"/> + <constant name="Hcal_total_dim_y" value="Hcal_nlayers*(Hcal_radiator_thickness+Hcal_chamber_thickness) + Hcal_back_plate_thickness"/> + <constant name="Hcal_inner_radius" value="Ecal_outer_radius + Hcal_Ecal_gap"/> + <constant name="Hcal_module_radius" value="Hcal_inner_radius+Hcal_total_dim_y"/> + + <constant name="Hcal_y_dim2_for_x" value="Hcal_module_radius*(1-cos(pi/8)) - Hcal_stave_gaps"/> + <constant name="Hcal_y_dim1_for_x" value="Hcal_total_dim_y - Hcal_y_dim2_for_x"/> + <constant name="Hcal_bottom_dim_x" value="2*Hcal_y_dim1_for_x*tan(pi/8) - Hcal_stave_gaps"/> + <constant name="Hcal_middle_dim_x" value="Hcal_bottom_dim_x+2*Hcal_y_dim1_for_x*tan(pi/8)"/> + <constant name="Hcal_top_dim_x" value="Hcal_middle_dim_x-2*Hcal_y_dim2_for_x/tan(pi/8)"/> + + <constant name="Hcal_y_dim1_for_z" value="134.8"/> + <constant name="Hcal_y_dim2_for_z" value="(Hcal_top_end_dim_z-Hcal_normal_dim_z)*tan(39.28/2/pi)"/> + <constant name="Hcal_y_dim3_for_z" value="Hcal_total_dim_y-Hcal_y_dim1_for_z-Hcal_y_dim2_for_z"/> + <constant name="Hcal_regular_chamber_dim_z" value="Hcal_normal_dim_z - 2*(Hcal_lateral_plate_thickness)"/> + + <!-- Tube01 parameters --> - <constant name="Tube_central_thickness" value="0.5*mm"/> - <constant name="Tube_central_zhalf" value="61*mm"/> - <constant name="Tube_central_inner_radius" value="10*mm"/> - <constant name="Tube_ends_thickness" value="1*mm"/> - <constant name="Tube_ends_start" value="233.372*mm"/> - <constant name="Tube_ends_end" value="3550*mm"/> - <constant name="Tube_strips_gap" value="1*mm"/> - <constant name="Tube_strips_tickness" value="0.755*mm"/> - <constant name="Tube_lateral_start" value="150*mm"/> - <constant name="Tube_lateral_radius" value="20*mm"/> - <constant name="Tube_lateral_tickness" value="1*mm"/> - <constant name="Tube_lateral_z1" value="2850*mm"/> - <constant name="Tube_lateral_z2" value="3040*mm"/> - <constant name="Tube_lateral_z3" value="3620*mm"/> - <constant name="Tube_lateral_z4" value="7000*mm"/> - <constant name="Tube_lateral_r1" value="244.245*mm"/> - <constant name="Tube_lateral_r2" value="70*mm"/> - <constant name="Tube_lateral_r3" value="12*mm"/> + <constant name="TUBE_central_thickness" value="0.5*mm"/> + <constant name="TUBE_central_zhalf" value="61*mm"/> + <constant name="TUBE_central_inner_radius" value="10*mm"/> + <constant name="TUBE_ends_thickness" value="1*mm"/> + <constant name="TUBE_ends_start" value="233.372*mm"/> + <constant name="TUBE_ends_end" value="3550*mm"/> + <constant name="TUBE_strips_gap" value="1*mm"/> + <constant name="TUBE_strips_tickness" value="0.755*mm"/> + <constant name="TUBE_lateral_start" value="150*mm"/> + <constant name="TUBE_lateral_radius" value="20*mm"/> + <constant name="TUBE_lateral_tickness" value="1*mm"/> + <constant name="TUBE_lateral_z1" value="2850*mm"/> + <constant name="TUBE_lateral_z2" value="3040*mm"/> + <constant name="TUBE_lateral_z3" value="3620*mm"/> + <constant name="TUBE_lateral_z4" value="7000*mm"/> + <constant name="TUBE_lateral_r1" value="244.245*mm"/> + <constant name="TUBE_lateral_r2" value="70*mm"/> + <constant name="TUBE_lateral_r3" value="12*mm"/> <!-- SIT parameters --> <constant name="Sit_layer1_inner_radius" value="160*mm"/> @@ -190,7 +230,6 @@ <constant name="Yoke_barrel_inner_radius" value="4450*mm"/> <constant name="Yoke_thickness" value="2000*mm"/> <constant name="Yoke_endcap_inner_radius" value="240.50*mm"/> - <constant name="Yoke_symmetry" value="8"/> <constant name="Yoke_Barrel_Half_Z" value="TPC_Ecal_Hcal_barrel_halfZ+Coil_extra_size+Yoke_thickness+20*mm"/> </define> @@ -242,6 +281,12 @@ <limit name="step_length_max" particles="*" value="5.0" unit="mm" /> </limitset> + <limitset name="HcalLimits"> + <limit name="step_length_max" particles="*" + value="min(Hcal_cells_size,Hcal_regular_chamber_dim_z/floor(Hcal_regular_chamber_dim_z/Hcal_cells_size))" + unit="mm" /> + </limitset> + </limits> <display> @@ -262,17 +307,24 @@ <vis name="LcalAbsorberVis" alpha="1.0" r="0" g="0" b="1" drawingStyle="solid" showDaughters="true" visible="true"/> <vis name="LcalActiveVis" alpha="1.0" r="1" g="0" b="0" drawingStyle="wireframe" showDaughters="true" visible="true"/> - <vis name="EcalEndcapVis" alpha="1.0" r="0" g="1" b="0" drawingStyle="wireframe" showDaughters="true" visible="false"/> - <vis name="EcalLayerVis" alpha="1.0" r="1" g="0" b="0" drawingStyle="solid" showDaughters="true" visible="false"/> - <vis name="EcalPCBVis" alpha="1.0" r="0.5" g="0.5" b="0" drawingStyle="wireframe" showDaughters="true" visible="true"/> - <vis name="EcalRadiatorVis" alpha="1.0" r="0" g="1" b="0" drawingStyle="solid" showDaughters="true" visible="true"/> - <vis name="EcalTowerVis" alpha="1.0" r="0" g="0.1" b="0.9" drawingStyle="solid" showDaughters="true" visible="true"/> - <vis name="EcalRingVis" alpha="1.0" r="0" g="0" b="1" drawingStyle="solid" showDaughters="true" visible="true"/> - <vis name="EcalWaferVis" alpha="1.0" r=".7" g=".7" b=".7" drawingStyle="solid" visible="true"/> - <vis name="EcalSlabVis" alpha="1.0" r="1" g="1" b="1" drawingStyle="wireframe" showDaughters="true" visible="true"/> - <vis name="EcalSlabGroundVis" alpha="1.0" r="0" g="0" b="1" drawingStyle="wireframe" visible="true"/> - <vis name="EcalSlabSensitiveVis" alpha="1.0" r=".5" g=".5" b=".5" drawingStyle="wireframe" visible="false"/> - + <vis name="EcalVis" alpha="1.0" r="0.8" g="0.4" b="0" drawingStyle="solid" showDaughters="true" visible="true"/> + <vis name="EcalPCBVis" alpha="1.0" r="0.5" g="0.5" b="0" drawingStyle="wireframe" showDaughters="true" visible="true"/> + <vis name="EcalRadiatorVis" alpha="1.0" r="0.2" g="0.5" b="0.2" drawingStyle="solid" showDaughters="true" visible="true"/> + <vis name="EcalTowerVis" alpha="1.0" r="0" g="0.1" b="0.9" drawingStyle="solid" showDaughters="true" visible="true"/> + <vis name="EcalRingVis" alpha="1.0" r="0" g="0" b="1" drawingStyle="solid" showDaughters="true" visible="true"/> + <vis name="EcalWaferVis" alpha="1.0" r=".7" g=".7" b=".7" drawingStyle="solid" visible="false"/> + <vis name="EcalSlabVis" alpha="1.0" r="1" g="1" b="1" drawingStyle="solid" showDaughters="true" visible="true"/> + <vis name="EcalSlabGroundVis" alpha="1.0" r="0" g="0" b="1" drawingStyle="wireframe" showDaughters="true" visible="true"/> + <vis name="EcalSlabSensitiveVis" alpha="1.0" r="0.5" g="0.5" b="0.5" drawingStyle="solid" showDaughters="true" visible="true"/> + + <vis name="HcalVis" alpha="1.0" r="0.8" g="0.8" b="0.2" drawingStyle="solid" showDaughters="true" visible="true"/> + <vis name="HcalChamberVis" alpha="1.0" r="0" g="1" b="0.2" drawingStyle="solid" showDaughters="true" visible="true"/> + <vis name="HcalModuleVis" alpha="1.0" r="0" g="0.6" b="0.6" drawingStyle="solid" showDaughters="true" visible="true"/> + <vis name="HcalEndModuleVis" alpha="1.0" r="1" g="0" b="0.5" drawingStyle="solid" showDaughters="true" visible="true"/> + <vis name="HcalRpcGasVis" alpha="1.0" r="0.1" g="0" b="0.8" drawingStyle="solid" showDaughters="true" visible="true"/> + <vis name="HcalRpcGlassVis" alpha="1.0" r="0.8" g="0" b="0" drawingStyle="solid" showDaughters="true" visible="true"/> + <vis name="HcalRpcSpacerVis" alpha="1.0" r="1" g="1" b="1" drawingStyle="solid" showDaughters="true" visible="true"/> + <vis name="HcalScintillatorVis" alpha="1.0" r="0.8" g="0.8" b="0.2" drawingStyle="solid" showDaughters="true" visible="true"/> <vis name="TubeCentralVis" alpha="1.0" r="0.0" g="0.75" b="0.5" drawingStyle="solid" showDaughters="true" visible="true"/> <vis name="TubeConeVis" alpha="1.0" r="0.0" g="0.6" b="0.0" drawingStyle="solid" showDaughters="true" visible="true"/> @@ -311,36 +363,36 @@ <!-- tube01 parameters --> <detector id="1" name="Beampipe" type="Tesla_tube01" material="Beryllium" vis="TubeBeampipeVis"> - <central_tube id="0" thickness="Tube_central_thickness" - zhalf="Tube_central_zhalf" - inner_r="Tube_central_inner_radius" + <central_tube id="0" thickness="TUBE_central_thickness" + zhalf="TUBE_central_zhalf" + inner_r="TUBE_central_inner_radius" vis="TubeCentralVis"/> - <ends thickness="Tube_ends_thickness" zmin="Tube_ends_start" zmax="Tube_ends_end" vis="TubeConeVis"/> - <strips gap="Tube_strips_gap" - thickness="Tube_strips_tickness" + <ends thickness="TUBE_ends_thickness" zmin="TUBE_ends_start" zmax="TUBE_ends_end" vis="TubeConeVis"/> + <strips gap="TUBE_strips_gap" + thickness="TUBE_strips_tickness" material="Kapton" vis="TubeStripsVis"/> <vacuum vis="TubeVacuumVis"/> - <lateral_tubes thickness="Tube_lateral_tickness" - dz="(Tube_lateral_z1-Tube_lateral_r3+Tube_ends_thickness)/2.0" - zmin="Tube_lateral_start" - inner_r="Tube_lateral_radius"> - <cone id="1" z="(Tube_lateral_z2 - Tube_lateral_z1)/2.0" - rmin="Tube_lateral_r1" - rmax="Tube_lateral_r1+Tube_ends_thickness"/> - <cone id="2" z="Tube_ends_thickness/2.0" - rmin="Tube_lateral_r2" - rmax="Tube_lateral_r1+Tube_ends_thickness"/> - <cone id="3" z="(Tube_lateral_z3-Tube_lateral_z2)/2.0" - rmin="Tube_lateral_r2" - rmax="Tube_lateral_r2+Tube_ends_thickness"/> - <cone id="4" z="Tube_ends_thickness/2.0" - rmin="Tube_lateral_r3" - rmax="Tube_lateral_r2+Tube_ends_thickness"/> - <cone id="5" z="(Tube_lateral_z4-Tube_lateral_z3)/2.0" - rmin="Tube_lateral_r3" - rmax="Tube_lateral_r3+Tube_ends_thickness"/> + <lateral_tubes thickness="TUBE_lateral_tickness" + dz="(TUBE_lateral_z1-TUBE_lateral_r3+TUBE_ends_thickness)/2.0" + zmin="TUBE_lateral_start" + inner_r="TUBE_lateral_radius"> + <cone id="1" z="(TUBE_lateral_z2 - TUBE_lateral_z1)/2.0" + rmin="TUBE_lateral_r1" + rmax="TUBE_lateral_r1+TUBE_ends_thickness"/> + <cone id="2" z="TUBE_ends_thickness/2.0" + rmin="TUBE_lateral_r2" + rmax="TUBE_lateral_r1+TUBE_ends_thickness"/> + <cone id="3" z="(TUBE_lateral_z3-TUBE_lateral_z2)/2.0" + rmin="TUBE_lateral_r2" + rmax="TUBE_lateral_r2+TUBE_ends_thickness"/> + <cone id="4" z="TUBE_ends_thickness/2.0" + rmin="TUBE_lateral_r3" + rmax="TUBE_lateral_r2+TUBE_ends_thickness"/> + <cone id="5" z="(TUBE_lateral_z4-TUBE_lateral_z3)/2.0" + rmin="TUBE_lateral_r3" + rmax="TUBE_lateral_r3+TUBE_ends_thickness"/> </lateral_tubes> </detector> <!-- @@ -395,7 +447,7 @@ --> <!-- sit00 parameters --> - <detector id="3" name="SIT" type="Tesla_sit00" vis="SitVis"> + <detector id="3" name="SIT" type="Tesla_sit00" readout="FTDHits" vis="SitVis"> <layer id="1" inner_r="Sit_layer1_inner_radius" zhalf="Sit_layer1_zhalf" thickness="Sit_layer1_thickness" @@ -411,7 +463,7 @@ --> <!-- ftd01 parameters --> - <detector id="4" name="FTD" type="Tesla_ftd01"> + <detector id="4" name="FTD" type="Tesla_ftd01" readout="FTDHits"> <cylinder thickness="Ftd_total_cylinder_thickness" material="Kapton" vis="FtdCylinderVis"/> @@ -486,11 +538,13 @@ outer_r="TPC_outer_radius-TPC_sensitive_outer_gap" number="(int)((TPC_outer_radius-TPC_sensitive_outer_gap - TPC_inner_radius+TPC_sensitive_inner_gap + 1*mm) / 6.2*mm)" material="Argon" + readout="TPCHits" vis="TPCChamberVis"/> <fch inner_r="TPC_inner_radius" outer_r="TPC_outer_radius-90*mm" thickness="TPC_fch_thickness" material="silicon_2.33gccm" + readout="TPCfchHits" vis="TPCFchVis"/> </detector> @@ -523,23 +577,33 @@ <!-- SEcal03 parameters --> -<!-- - <detector id="10" name="ECAL" type="Tesla_SEcal03" - inner_r="TPC_outer_radius+Ecal_TPC_gap" - lateral_face_thickness="Ecal_lateral_face_thickness" - fiber_thickness="Ecal_fiber_thickness" - guard_ring_size="Ecal_guard_ring_size" - cell_size="Ecal_cell_size" - alveolus_gap="Ecal_Alveolus_Air_Gap" - > - <support thickness="Ecal_support_thickness"/> - <front thickness="Ecal_front_face_thickness"/> + + <detector id="10" name="ECAL" type="Tesla_SEcal03" limits="EcalLimits" vis="EcalVis"> + <param lateral_face_thickness="Ecal_lateral_face_thickness" + fiber_thickness="Ecal_fiber_thickness" + guard_ring_size="Ecal_guard_ring_size" + cell_size="Ecal_cell_size" + alveolus_gap="Ecal_Alveolus_Air_Gap" + crossing_angle="ILC_Main_Crossing_Angle" + cables_gap="Ecal_cables_gap" + front_face_thickness="Ecal_front_face_thickness" + support_thickness="Ecal_support_thickness" + /> <pcbshield thickness="Ecal_Slab_PCB_thickness + Ecal_Slab_copper_thickness + Ecal_Slab_shield_thickness" vis="EcalPCBVis" material="G10"/> - <barrel zhalf="Ecal_Barrel_halfZ" towers="Ecal_barrel_number_of_towers"/> + <barrel inner_r="TPC_outer_radius+TPC_Ecal_gap" + zhalf="Ecal_Barrel_halfZ" + towers="Ecal_barrel_number_of_towers" + radiatorMaterial="tungsten_19.3gccm" + material="G10" + readout="EcalBarrelHits" + vis="EcalVis"/> <endcap inner_r="Lcal_outer_radius + Ecal_Lcal_ring_gap" ring_gap="Ecal_EC_ring_gap" extra_size="Ecal_endcap_extra_size" - center_box_size="Ecal_endcap_center_box_size"/> + center_box_size="Ecal_endcap_center_box_size" + readout="EcalEndcapHits" + ring_readout="EcalEndcapRingHits" + vis="EcalVis"/> <layer id="1" repeat="Ecal_nlayers1" thickness="Ecal_radiator_layers_set1_thickness" material="tungsten_19.3gccm"/> <layer id="2" repeat="Ecal_nlayers2" thickness="Ecal_radiator_layers_set2_thickness" material="tungsten_19.3gccm"/> @@ -553,7 +617,208 @@ </slab> </detector> ---> + + <!-- Hcal04 description + --> + + <detector id="9" name="Hcal" type="Tesla_hcal04" limits="HcalLimits" vis="HcalVis"> + <param radiator_thickness="Hcal_radiator_thickness" + radiator_material="Iron" + sensitive_model="scintillator" + fiber_gap="Hcal_fiber_gap" + chamber_vis="HcalChamberVis" + /> + <rpc cables_gap="Hcal_endcap_cables_gap"> + <radiator thickness="" material="G10"/> + <gas thickness="" material="RPCGAS1" vis="HcalRpcGasVis"/> + <glass thickness="" material="pyrex" vis="HcalRpcGlassVis"/> + </rpc> + <scintillator material="Polystyrene" vis="HcalScintillatorVis"/> + + <barrel end_module_type="Hcal_barrel_end_module_type" + center_box_size="Hcal_endcap_center_box_size" + num_layer="Hcal_nlayers" + chamber_thickness="Hcal_chamber_thickness" + inner_r="Hcal_inner_radius" + > + <module dim_z="1080*mm" + chamber_dim_z="1060*mm" + module_y_offset="2415.0*mm" + middle_dim_x="2238.81*mm" + bottom_dim_x="1579.3*mm" + top_dim_x="1206.01*mm" + y_dim1_for_x="796.1*mm" + y_dim2_for_x="213.9*mm" + cell_dim_x="Hcal_cells_size" + cell_dim_z="Hcal_regular_chamber_dim_z / floor(Hcal_regular_chamber_dim_z/Hcal_cells_size)" + readout="HcalRegularHits" + vis="HcalModuleVis"/> + <end_module y_dim3_for_z="793.409" + y_dim2_for_z="81.7908" + y_dim1_for_z="134.8" + top_end_dim_z="1180.0" + readout="HcalEndModuleHits" + vis="HcalModuleVis"/> + <layers> + <layer id="1" y_offset="-483.75" dim_x="1590.0"/> + <layer id="2" y_offset="-459.25" dim_x="1610.0"/> + <layer id="3" y_offset="-434.75" dim_x="1630.0"/> + <layer id="4" y_offset="-410.25" dim_x="1650.0"/> + <layer id="5" y_offset="-385.75" dim_x="1670.0"/> + <layer id="6" y_offset="-361.25" dim_x="1690.0"/> + <layer id="7" y_offset="-336.75" dim_x="1710.0"/> + <layer id="8" y_offset="-312.25" dim_x="1730.0"/> + <layer id="9" y_offset="-287.75" dim_x="1750.0"/> + <layer id="10" y_offset="-263.25" dim_x="1770.0"/> + <layer id="11" y_offset="-238.75" dim_x="1790.0"/> + <layer id="12" y_offset="-214.25" dim_x="1810.0"/> + <layer id="13" y_offset="-189.75" dim_x="1830.0"/> + <layer id="14" y_offset="-165.25" dim_x="1850.0"/> + <layer id="15" y_offset="-140.75" dim_x="1870.0"/> + <layer id="16" y_offset="-116.25" dim_x="1890.0"/> + <layer id="17" y_offset="-91.75" dim_x="1910.0"/> + <layer id="18" y_offset="-67.25" dim_x="1930.0"/> + <layer id="19" y_offset="-42.75" dim_x="1950.0"/> + <layer id="20" y_offset="-18.25" dim_x="1970.0"/> + <layer id="21" y_offset="6.25" dim_x="2000.0"/> + <layer id="22" y_offset="30.75" dim_x="2020.0"/> + <layer id="23" y_offset="55.25" dim_x="2040.0"/> + <layer id="24" y_offset="79.75" dim_x="2060.0"/> + <layer id="25" y_offset="104.25" dim_x="2080.0"/> + <layer id="26" y_offset="128.75" dim_x="2100.0"/> + <layer id="27" y_offset="153.25" dim_x="2120.0"/> + <layer id="28" y_offset="177.75" dim_x="2140.0"/> + <layer id="29" y_offset="202.25" dim_x="2160.0"/> + <layer id="30" y_offset="226.75" dim_x="2180.0"/> + <layer id="31" y_offset="251.25" dim_x="2200.0"/> + <layer id="32" y_offset="275.75" dim_x="2220.0"/> + <layer id="33" y_offset="300.25" dim_x="2110.0"/> + <layer id="34" y_offset="324.75" dim_x="2000.0"/> + <layer id="35" y_offset="349.25" dim_x="1880.0"/> + <layer id="36" y_offset="373.75" dim_x="1760.0"/> + <layer id="37" y_offset="398.25" dim_x="1640.0"/> + <layer id="38" y_offset="422.75" dim_x="1520.0"/> + <layer id="39" y_offset="447.25" dim_x="1400.0"/> + <layer id="40" y_offset="471.75" dim_x="1290.0"/> + </layers> + <end_layers> + <end_layer z_offset="0.0" id="1" dim_z="1060.0"/> + <end_layer z_offset="0.0" id="2" dim_z="1060.0"/> + <end_layer z_offset="0.0" id="3" dim_z="1060.0"/> + <end_layer z_offset="0.0" id="4" dim_z="1060.0"/> + <end_layer z_offset="0.0" id="5" dim_z="1060.0"/> + <end_layer z_offset="0.0" id="6" dim_z="1060.0"/> + <end_layer z_offset="15.0" id="7" dim_z="1090.0"/> + <end_layer z_offset="30.0" id="8" dim_z="1120.0"/> + <end_layer z_offset="50.0" id="9" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="10" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="11" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="12" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="13" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="14" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="15" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="16" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="17" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="18" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="19" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="20" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="21" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="22" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="23" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="24" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="25" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="26" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="27" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="28" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="29" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="30" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="31" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="32" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="33" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="34" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="35" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="36" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="37" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="38" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="39" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="40" dim_z="1160.0"/> + </end_layers> + <staves> + <stave phi="0.0/180*pi" id="1"/> + <stave phi="45.0/180*pi" id="2"/> + <stave phi="90.0/180*pi" id="3"/> + <stave phi="135.0/180*pi" id="4"/> + <stave phi="180.0/180*pi" id="5"/> + <stave phi="225.0/180*pi" id="6"/> + <stave phi="270.0/180*pi" id="7"/> + <stave phi="315.0/180*pi" id="8"/> + </staves> + <modules> + <module z_offset="-2164.0" id="1" type="2"/> + <module z_offset="-1082.0" id="2" type="1"/> + <module z_offset="0.0" id="3" type="1"/> + <module z_offset="1082.0" id="4" type="1"/> + <module z_offset="2164.0" id="5" type="2"/> + </modules> + </barrel> + <endcap readout_plus="HcalEncapPlusHits" + readout_minus="HcalEncapMinusHits" + > + <module + rmin="Hcal_endcap_center_box_size/2" + rmax="Hcal_module_radius" + dz="Hcal_endcap_module_dim_z/2" + readout="HcalEndcapHits" + vis="HcalModuleVis" + /> + <layers> + <layer id="1" z_offset="-483.75"/> + <layer id="2" z_offset="-459.25"/> + <layer id="3" z_offset="-434.75"/> + <layer id="4" z_offset="-410.25"/> + <layer id="5" z_offset="-385.75"/> + <layer id="6" z_offset="-361.25"/> + <layer id="7" z_offset="-336.75"/> + <layer id="8" z_offset="-312.25"/> + <layer id="9" z_offset="-287.75"/> + <layer id="10" z_offset="-263.25"/> + <layer id="11" z_offset="-238.75"/> + <layer id="12" z_offset="-214.25"/> + <layer id="13" z_offset="-189.75"/> + <layer id="14" z_offset="-165.25"/> + <layer id="15" z_offset="-140.75"/> + <layer id="16" z_offset="-116.25"/> + <layer id="17" z_offset="-91.75"/> + <layer id="18" z_offset="-67.25"/> + <layer id="19" z_offset="-42.75"/> + <layer id="20" z_offset="-18.25"/> + <layer id="21" z_offset="6.25"/> + <layer id="22" z_offset="30.75"/> + <layer id="23" z_offset="55.25"/> + <layer id="24" z_offset="79.75"/> + <layer id="25" z_offset="104.25"/> + <layer id="26" z_offset="128.75"/> + <layer id="27" z_offset="153.25"/> + <layer id="28" z_offset="177.75"/> + <layer id="29" z_offset="202.25"/> + <layer id="30" z_offset="226.75"/> + <layer id="31" z_offset="251.25"/> + <layer id="32" z_offset="275.75"/> + <layer id="33" z_offset="300.25"/> + <layer id="34" z_offset="324.75"/> + <layer id="35" z_offset="349.25"/> + <layer id="36" z_offset="373.75"/> + <layer id="37" z_offset="398.25"/> + <layer id="38" z_offset="422.75"/> + <layer id="39" z_offset="447.25"/> + <layer id="40" z_offset="471.75"/> + </layers> + <positions> + <position phi="0.0" id="1" x="0" y="0" z="3523*mm"/> + <position phi="0.0" id="2" x="0" y="0" z="-3523*mm"/> + </positions> + </endcap> + </detector> </detectors> @@ -568,9 +833,33 @@ <readout name="SITHits"> <id>system:6,barrel:3,layer:4,module:16,sensor:1,side:32:-2,strip:20</id> </readout> + <readout name="FTDHits"> + <id>system:6,barrel:3,layer:4,module:16,sensor:1,side:32:-2,strip:20</id> + </readout> <readout name="TPCHits"> <id>system:6,barrel:3,layer:4,module:16,sensor:1,side:32:-2,strip:20</id> </readout> + <readout name="TPCfchHits"> + <id>system:6,barrel:3,layer:4,module:16,sensor:1,side:32:-2,strip:20</id> + </readout> + <readout name="EcalBarrelHits"> + <id>system:6,barrel:3,layer:4,module:16</id> + </readout> + <readout name="EcalEndcapHits"> + <id>system:6,barrel:3,layer:4,module:16</id> + </readout> + <readout name="EcalEndcapRingHits"> + <id>system:6,barrel:3,layer:4,module:16</id> + </readout> + <readout name="HcalRegularHits"> + <id>system:6,barrel:3,layer:4,module:16</id> + </readout> + <readout name="HcalEndModuleHits"> + <id>system:6,barrel:3,layer:4,module:16</id> + </readout> + <readout name="HcalEndcapHits"> + <id>system:6,barrel:3,layer:4,module:16</id> + </readout> </readouts> <fields> diff --git a/DDExamples/ILDExDet/compact/test.xml b/DDExamples/ILDExDet/compact/test.xml index 7c465de04dc8d7d404e167fc72e377e9d5f6b515..1694bdaadeabecbab3d00d54a48090a6542de2fa 100644 --- a/DDExamples/ILDExDet/compact/test.xml +++ b/DDExamples/ILDExDet/compact/test.xml @@ -133,6 +133,46 @@ <constant name="Ecal_radiator_layers_set1_thickness" value="2.1*mm"/> <constant name="Ecal_radiator_layers_set2_thickness" value="4.2*mm"/> <constant name="Ecal_radiator_layers_set3_thickness" value="0*mm"/> + + + <constant name="Yoke_symmetry" value="8"/> + <constant name="Yoke_symmetry" value="8"/> + <constant name="Hcal_radiator_thickness" value="20*mm"/> + <constant name="Hcal_stave_gaps" value="3*mm"/> + <constant name="Hcal_back_plate_thickness" value="30*mm"/> + <constant name="Hcal_barrel_end_module_type" value="2"/> + <constant name="Hcal_endcap_cables_gap" value="214*mm"/> + <constant name="Hcal_endcap_center_box_size" value="600*mm"/> + <constant name="Hcal_endcap_module_dim_z" value="1010*mm"/> + + <constant name="Hcal_lateral_structure_thickness" value="10*mm"/> + <constant name="Hcal_lateral_plate_thickness" value="Hcal_lateral_structure_thickness"/> + <constant name="Hcal_nlayers" value="8"/> + <constant name="Hcal_outer_radius" value="3000*mm"/> + <constant name="Hcal_modules_gap" value="2*mm"/> + <constant name="Hcal_fiber_gap" value="1.5*mm"/> + <constant name="Hcal_cells_size" value="10*mm"/> + + <constant name="Hcal_chamber_thickness" value="6.5*mm"/> + <constant name="Hcal_total_z_size" value="140*mm + 2*TPC_Ecal_Hcal_barrel_halfZ"/> + <constant name="Hcal_normal_dim_z" value="Hcal_total_z_size/5*1080/1120"/> + <constant name="Hcal_top_end_dim_z" value="(Hcal_total_z_size-3*Hcal_normal_dim_z)/2"/> + <constant name="Hcal_start_z" value="1.5*Hcal_normal_dim_z + Hcal_top_end_dim_z + 2*Hcal_modules_gap + Hcal_endcap_cables_gap"/> + <constant name="Hcal_total_dim_y" value="Hcal_nlayers*(Hcal_radiator_thickness+Hcal_chamber_thickness) + Hcal_back_plate_thickness"/> + <constant name="Hcal_inner_radius" value="Ecal_outer_radius + Hcal_Ecal_gap"/> + <constant name="Hcal_module_radius" value="Hcal_inner_radius+Hcal_total_dim_y"/> + + <constant name="Hcal_y_dim2_for_x" value="Hcal_module_radius*(1-cos(pi/8)) - Hcal_stave_gaps"/> + <constant name="Hcal_y_dim1_for_x" value="Hcal_total_dim_y - Hcal_y_dim2_for_x"/> + <constant name="Hcal_bottom_dim_x" value="2*Hcal_y_dim1_for_x*tan(pi/8) - Hcal_stave_gaps"/> + <constant name="Hcal_middle_dim_x" value="Hcal_bottom_dim_x+2*Hcal_y_dim1_for_x*tan(pi/8)"/> + <constant name="Hcal_top_dim_x" value="Hcal_middle_dim_x-2*Hcal_y_dim2_for_x/tan(pi/8)"/> + + <constant name="Hcal_y_dim1_for_z" value="134.8"/> + <constant name="Hcal_y_dim2_for_z" value="(Hcal_top_end_dim_z-Hcal_normal_dim_z)*tan(39.28/2/pi)"/> + <constant name="Hcal_y_dim3_for_z" value="Hcal_total_dim_y-Hcal_y_dim1_for_z-Hcal_y_dim2_for_z"/> + <constant name="Hcal_regular_chamber_dim_z" value="Hcal_normal_dim_z - 2*(Hcal_lateral_plate_thickness)"/> + </define> <materials> @@ -177,6 +217,12 @@ <limit name="step_length_max" particles="*" value="5.0" unit="mm" /> </limitset> + <limitset name="HcalLimits"> + <limit name="step_length_max" particles="*" + value="min(Hcal_cells_size,Hcal_regular_chamber_dim_z/floor(Hcal_regular_chamber_dim_z/Hcal_cells_size))" + unit="mm" /> + </limitset> + <limitset name="EcalLimits"> <limit name="step_length_max" particles="*" value="5.0" unit="mm" /> </limitset> @@ -205,49 +251,55 @@ <vis name="CoilVis" alpha="1.0" r="0.0" g="0.0" b="0.7" drawingStyle="wireframe" showDaughters="true" visible="true"/> <vis name="YokeVis" alpha="1.0" r="0.1" g="0.8" b="0.8" drawingStyle="wireframe" showDaughters="true" visible="true"/> - <vis name="EcalVis" alpha="1.0" r="1" g="0" b="0" drawingStyle="solid" showDaughters="true" visible="true"/> - <vis name="EcalPCBVis" alpha="1.0" r="0.5" g="0.5" b="0" drawingStyle="wireframe" showDaughters="true" visible="true"/> - <vis name="EcalRadiatorVis" alpha="1.0" r="0" g="1" b="0" drawingStyle="solid" showDaughters="true" visible="true"/> - <vis name="EcalTowerVis" alpha="1.0" r="0" g="0.1" b="0.9" drawingStyle="solid" showDaughters="true" visible="true"/> - <vis name="EcalRingVis" alpha="1.0" r="0" g="0" b="1" drawingStyle="solid" showDaughters="true" visible="true"/> - <vis name="EcalWaferVis" alpha="1.0" r=".7" g=".7" b=".7" drawingStyle="solid" visible="false"/> - <vis name="EcalSlabVis" alpha="1.0" r="1" g="1" b="1" drawingStyle="solid" showDaughters="true" visible="true"/> - <vis name="EcalSlabGroundVis" alpha="1.0" r="0" g="0" b="1" drawingStyle="wireframe" visible="true"/> - <vis name="EcalSlabSensitiveVis" alpha="1.0" r=".5" g=".5" b=".5" drawingStyle="solid" visible="true"/> - - <vis name="HcalVis" alpha="1.0" r="0.8" g="0.8" b="0.2" drawingStyle="solid" showDaughters="true" visible="true"/> - <vis name="HcalChamberVis" alpha="1.0" r="0.2" g="0.8" b="0.2" drawingStyle="solid" showDaughters="true" visible="true"/> - <vis name="HcalRpcGasVis" alpha="1.0" r="0.1" g="0" b="0.8" drawingStyle="solid" showDaughters="true" visible="true"/> - <vis name="HcalRpcGlassVis" alpha="1.0" r="0.8" g="0" b="0" drawingStyle="solid" showDaughters="true" visible="true"/> - <vis name="HcalRpcSpacerVis" alpha="1.0" r="1" g="1" b="1" drawingStyle="solid" showDaughters="true" visible="true"/> + <vis name="EcalVis" alpha="1.0" r="0.8" g="0.4" b="0" drawingStyle="solid" showDaughters="true" visible="true"/> + <vis name="EcalPCBVis" alpha="1.0" r="0.5" g="0.5" b="0" drawingStyle="wireframe" showDaughters="true" visible="true"/> + <vis name="EcalRadiatorVis" alpha="1.0" r="0.2" g="0.5" b="0.2" drawingStyle="solid" showDaughters="true" visible="true"/> + <vis name="EcalTowerVis" alpha="1.0" r="0" g="0.1" b="0.9" drawingStyle="solid" showDaughters="true" visible="true"/> + <vis name="EcalRingVis" alpha="1.0" r="0" g="0" b="1" drawingStyle="solid" showDaughters="true" visible="true"/> + <vis name="EcalWaferVis" alpha="1.0" r=".7" g=".7" b=".7" drawingStyle="solid" visible="false"/> + <vis name="EcalSlabVis" alpha="1.0" r="1" g="1" b="1" drawingStyle="solid" showDaughters="true" visible="true"/> + <vis name="EcalSlabGroundVis" alpha="1.0" r="0" g="0" b="1" drawingStyle="wireframe" showDaughters="true" visible="true"/> + <vis name="EcalSlabSensitiveVis" alpha="1.0" r="0.5" g="0.5" b="0.5" drawingStyle="solid" showDaughters="true" visible="true"/> + <vis name="HcalVis" alpha="1.0" r="0.8" g="0.8" b="0.2" drawingStyle="solid" showDaughters="true" visible="true"/> + <vis name="HcalChamberVis" alpha="1.0" r="0" g="1" b="0.2" drawingStyle="solid" showDaughters="true" visible="true"/> + <vis name="HcalModuleVis" alpha="1.0" r="0" g="0.6" b="0.6" drawingStyle="solid" showDaughters="true" visible="true"/> + <vis name="HcalEndModuleVis" alpha="1.0" r="1" g="0" b="0.5" drawingStyle="solid" showDaughters="true" visible="true"/> + <vis name="HcalRpcGasVis" alpha="1.0" r="0.1" g="0" b="0.8" drawingStyle="solid" showDaughters="true" visible="true"/> + <vis name="HcalRpcGlassVis" alpha="1.0" r="0.8" g="0" b="0" drawingStyle="solid" showDaughters="true" visible="true"/> + <vis name="HcalRpcSpacerVis" alpha="1.0" r="1" g="1" b="1" drawingStyle="solid" showDaughters="true" visible="true"/> + <vis name="HcalScintillatorVis" alpha="1.0" r="0.8" g="0.8" b="0.2" drawingStyle="solid" showDaughters="true" visible="true"/> </display> <detectors> <comment>Trackers</comment> - - <detector id="10" name="ECAL" type="Tesla_SEcal03" - lateral_face_thickness="Ecal_lateral_face_thickness" - fiber_thickness="Ecal_fiber_thickness" - guard_ring_size="Ecal_guard_ring_size" - cell_size="Ecal_cell_size" - alveolus_gap="Ecal_Alveolus_Air_Gap" - crossing_angle="ILC_Main_Crossing_Angle" - cables_gap="Ecal_cables_gap" - > - <support thickness="Ecal_support_thickness"/> - <front thickness="Ecal_front_face_thickness"/> +<!-- +--> + <detector id="10" name="ECAL" type="Tesla_SEcal03" limits="EcalLimits" vis="EcalVis"> + <param lateral_face_thickness="Ecal_lateral_face_thickness" + fiber_thickness="Ecal_fiber_thickness" + guard_ring_size="Ecal_guard_ring_size" + cell_size="Ecal_cell_size" + alveolus_gap="Ecal_Alveolus_Air_Gap" + crossing_angle="ILC_Main_Crossing_Angle" + cables_gap="Ecal_cables_gap" + front_face_thickness="Ecal_front_face_thickness" + support_thickness="Ecal_support_thickness" + /> <pcbshield thickness="Ecal_Slab_PCB_thickness + Ecal_Slab_copper_thickness + Ecal_Slab_shield_thickness" vis="EcalPCBVis" material="G10"/> <barrel inner_r="TPC_outer_radius+TPC_Ecal_gap" zhalf="Ecal_Barrel_halfZ" towers="Ecal_barrel_number_of_towers" radiatorMaterial="tungsten_19.3gccm" material="G10" + readout="EcalBarrelHits" vis="EcalVis"/> <endcap inner_r="Lcal_outer_radius + Ecal_Lcal_ring_gap" ring_gap="Ecal_EC_ring_gap" extra_size="Ecal_endcap_extra_size" - center_box_size="Ecal_endcap_center_box_size"/> + center_box_size="Ecal_endcap_center_box_size" + readout="EcalEndcapHits" + vis="EcalVis"/> <layer id="1" repeat="Ecal_nlayers1" thickness="Ecal_radiator_layers_set1_thickness" material="tungsten_19.3gccm"/> <layer id="2" repeat="Ecal_nlayers2" thickness="Ecal_radiator_layers_set2_thickness" material="tungsten_19.3gccm"/> @@ -260,94 +312,207 @@ <sensitive thickness="Ecal_Si_thickness" material="silicon_2.33gccm"/> </slab> </detector> - <!-- Hcal04 description --> -<!-- - <constant name="Yoke_symmetry" value="8"/> - <constant name="Hcal_radiator_thickness" value="20*mm"/> - <constant name="Hcal_stave_gaps" value="3*mm"/> - <constant name="Hcal_back_plate_thickness" value="30*mm"/> - <constant name="Hcal_barrel_end_module_type" value="2"/> - <constant name="Hcal_endcap_cables_gap" value="214*mm"/> - <constant name="Hcal_endcap_center_box_size" value="600*mm"/> - <constant name="Hcal_lateral_structure_thickness" value="10*mm"/> - <constant name="Hcal_nlayers" value="8"/> - <constant name="Hcal_outer_radius" value="3000*mm"/> - <constant name="Hcal_modules_gap" value="2*mm"/> - <constant name="Hcal_fiber_gap" value="1.5*mm"/> - <constant name="Hcal_cells_size" value="*mm"/> - - <constant name="Hcal_chamber_thickness" value="6.5*mm"/> - <constant name="Hcal_total_z_size" value="140*mm + 2*TPC_Ecal_Hcal_barrel_halfZ"/> - <constant name="Hcal_normal_dim_z" value="Hcal_total_z_size/5*1080/1120"/> - <constant name="Hcal_top_end_dim_z" value="(Hcal_total_z_size-3*Hcal_normal_dim_z)/2"/> - <constant name="Hcal_start_z" value="1.5*Hcal_normal_dim_z + Hcal_top_end_dim_z + 2*Hcal_modules_gap + Hcal_cables_gap"/> - <constant name="Hcal_total_dim_y" value="Hcal_nlayers*(Hcal_radiator_thickness+Hcal_chamber_tickness) + Hcal_back_plate_thickness"/> - <constant name="Hcal_inner_radius" value="Ecal_outer_radius + Hcal_Ecal_gap"/> - <constant name="Hcal_module_radius" value="Hcal_inner_radius+Hcal_total_dim_y"/> - <constant name="Hcal_y_dim2_for_x" value="Hcal_module_radius*(1-cos(3.141/8) - Hcal_stave_gaps"/> - <constant name="Hcal_y_dim1_for_x" value="Hcal_total_dim_y - Hcal_y_dim2_for_x"/> - <constant name="Hcal_bottom_dim_x" value="2*Hcal_y_dim1_for_x*tan(3.141/8) - Hcal_stave_gaps"/> - <constant name="Hcal_middle_dim_x" value="Hcal_bottom_dim_x+2*Hcal_y_dim1_for_x*tan(3.141/8)"/> - <constant name="Hcal_top_dim_x" value="Hcal_middle_dim_x-2*Hcal_y_dim2_for_x/tan(3.141/8)"/> - - <constant name="Hcal_y_dim1_for_z" value="134.8"/> - <constant name="Hcal_y_dim2_for_z" value="(Hcal_top_end_dim_z-Hcal_normal_dim_z)*tan(39.28/2/3.141)"/> - <constant name="Hcal_y_dim3_for_z" value="Hcal_total_dim_y-Hcal_y_dim1_for_z-Hcal_y_dim2_for_z"/> - <constant name="Hcal_regular_chamber_dim_z" value="Hcal_normal_dim_z - 2*(Hcal_lateral_plate_thickness)"/> - <constant name="Hcal_cell_dim_z" value="Hcal_regular_chamber_dim_z / FLOOR(Hcal_regular_chamber_dim_z/Hcal_cell_dim_x)"/> - - <vis name="HcalModuleVis" alpha="1.0" r="0.8" g="0.8" b="0.2" drawingStyle="solid" showDaughters="true" visible="true"/> - <vis name="HcalChamberVis" alpha="1.0" r="0.2" g="0.8" b="0.2" drawingStyle="solid" showDaughters="true" visible="true"/> - <vis name="Hcal" alpha="1.0" r="1.0" g="0.5" b="0.5" drawingStyle="solid" showDaughters="true" visible="true"/> - <detector id="9" name="Hcal" type="Tesla_hcal04" vis="HcalVis"> - <params - radiator_thickness="Hcal_radiator_thickness" + <detector id="9" name="Hcal" type="Tesla_hcal04" limits="HcalLimits" vis="HcalVis"> + <param radiator_thickness="Hcal_radiator_thickness" radiator_material="Iron" sensitive_model="scintillator" - back_plate_thickness="Hcal_back_plate_thickness" - staves_gap="Hcal_stave_gaps" - modules_gap="Hcal_modules_gap" - nlayers="Hcal_nlayers" - barrel_end_module_type="Hcal_barrel_end_module_type" fiber_gap="Hcal_fiber_gap" - chamber_thickness="Hcal_chamber_thickness" - inner_radius="Hcal_inner_radius" - cables_gap="Hcal_endcap_cables_gap" - normal_dim_z="Hcal_normal_dim_z" - top_end_dim_z="Hcal_top_end_dim_z" - start_z="Hcal_start_z" - lateral_plate_thickness="Hcal_lateral_plate_thickness" - cell_dim_x="Hcal_cell_dim_x" - endcap_center_box_size="Hcal_endcap_center_box_size" - total_dim_y="Hcal_total_dim_y" - module_radius="Hcal_module_radius" - y_dim2_for_x="Hcal_y_dim2_for_x" - - + chamber_vis="HcalChamberVis" /> - <radiator thickness="Hcal_radiator_thickness" material="Iron"/> - <sensitive model="scintillator"/> - <barrel end_module_type="Hcal_barrel_end_module_type" - cell_dim_x="Hcal_cells_size" - center_box_size="Hcal_endcap_center_box_size"/> - <stave gap="Hcal_stave_gaps"/> - <modules gap="Hcal_modules_gap"/> - <fibers gap="Hcal_fiber_gap"/> - <backplate thickness="Hcal_back_plate_thickness"/> - <lateral_structure thickness="Hcal_lateral_structure_thickness"/> - <rpc chamber_thickness="6.5*mm" - inner_r="Ecal_outer_radius+Hcal_Ecal_gap" - cables_gap="Hcal_endcap_cables_gap" - /> + <rpc cables_gap="Hcal_endcap_cables_gap"> + <radiator thickness="" material="G10"/> + <gas thickness="" material="RPCGAS1" vis="HcalRpcGasVis"/> + <glass thickness="" material="pyrex" vis="HcalRpcGlassVis"/> </rpc> - <cell x="Hcal_cells_size"> + <scintillator material="Polystyrene" vis="HcalScintillatorVis"/> + <barrel end_module_type="Hcal_barrel_end_module_type" + center_box_size="Hcal_endcap_center_box_size" + num_layer="Hcal_nlayers" + chamber_thickness="Hcal_chamber_thickness" + inner_r="Hcal_inner_radius" + > + <module dim_z="1080*mm" + chamber_dim_z="1060*mm" + module_y_offset="2415.0*mm" + middle_dim_x="2238.81*mm" + bottom_dim_x="1579.3*mm" + top_dim_x="1206.01*mm" + y_dim1_for_x="796.1*mm" + y_dim2_for_x="213.9*mm" + cell_dim_x="Hcal_cells_size" + cell_dim_z="Hcal_regular_chamber_dim_z / floor(Hcal_regular_chamber_dim_z/Hcal_cells_size)" + readout="HcalRegularHits" + vis="HcalModuleVis"/> + <end_module y_dim3_for_z="793.409" + y_dim2_for_z="81.7908" + y_dim1_for_z="134.8" + top_end_dim_z="1180.0" + readout="HcalEndModuleHits" + vis="HcalModuleVis"/> + <layers> + <layer id="1" y_offset="-483.75" dim_x="1590.0"/> + <layer id="2" y_offset="-459.25" dim_x="1610.0"/> + <layer id="3" y_offset="-434.75" dim_x="1630.0"/> + <layer id="4" y_offset="-410.25" dim_x="1650.0"/> + <layer id="5" y_offset="-385.75" dim_x="1670.0"/> + <layer id="6" y_offset="-361.25" dim_x="1690.0"/> + <layer id="7" y_offset="-336.75" dim_x="1710.0"/> + <layer id="8" y_offset="-312.25" dim_x="1730.0"/> + <layer id="9" y_offset="-287.75" dim_x="1750.0"/> + <layer id="10" y_offset="-263.25" dim_x="1770.0"/> + <layer id="11" y_offset="-238.75" dim_x="1790.0"/> + <layer id="12" y_offset="-214.25" dim_x="1810.0"/> + <layer id="13" y_offset="-189.75" dim_x="1830.0"/> + <layer id="14" y_offset="-165.25" dim_x="1850.0"/> + <layer id="15" y_offset="-140.75" dim_x="1870.0"/> + <layer id="16" y_offset="-116.25" dim_x="1890.0"/> + <layer id="17" y_offset="-91.75" dim_x="1910.0"/> + <layer id="18" y_offset="-67.25" dim_x="1930.0"/> + <layer id="19" y_offset="-42.75" dim_x="1950.0"/> + <layer id="20" y_offset="-18.25" dim_x="1970.0"/> + <layer id="21" y_offset="6.25" dim_x="2000.0"/> + <layer id="22" y_offset="30.75" dim_x="2020.0"/> + <layer id="23" y_offset="55.25" dim_x="2040.0"/> + <layer id="24" y_offset="79.75" dim_x="2060.0"/> + <layer id="25" y_offset="104.25" dim_x="2080.0"/> + <layer id="26" y_offset="128.75" dim_x="2100.0"/> + <layer id="27" y_offset="153.25" dim_x="2120.0"/> + <layer id="28" y_offset="177.75" dim_x="2140.0"/> + <layer id="29" y_offset="202.25" dim_x="2160.0"/> + <layer id="30" y_offset="226.75" dim_x="2180.0"/> + <layer id="31" y_offset="251.25" dim_x="2200.0"/> + <layer id="32" y_offset="275.75" dim_x="2220.0"/> + <layer id="33" y_offset="300.25" dim_x="2110.0"/> + <layer id="34" y_offset="324.75" dim_x="2000.0"/> + <layer id="35" y_offset="349.25" dim_x="1880.0"/> + <layer id="36" y_offset="373.75" dim_x="1760.0"/> + <layer id="37" y_offset="398.25" dim_x="1640.0"/> + <layer id="38" y_offset="422.75" dim_x="1520.0"/> + <layer id="39" y_offset="447.25" dim_x="1400.0"/> + <layer id="40" y_offset="471.75" dim_x="1290.0"/> + </layers> + <end_layers> + <end_layer z_offset="0.0" id="1" dim_z="1060.0"/> + <end_layer z_offset="0.0" id="2" dim_z="1060.0"/> + <end_layer z_offset="0.0" id="3" dim_z="1060.0"/> + <end_layer z_offset="0.0" id="4" dim_z="1060.0"/> + <end_layer z_offset="0.0" id="5" dim_z="1060.0"/> + <end_layer z_offset="0.0" id="6" dim_z="1060.0"/> + <end_layer z_offset="15.0" id="7" dim_z="1090.0"/> + <end_layer z_offset="30.0" id="8" dim_z="1120.0"/> + <end_layer z_offset="50.0" id="9" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="10" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="11" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="12" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="13" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="14" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="15" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="16" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="17" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="18" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="19" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="20" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="21" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="22" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="23" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="24" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="25" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="26" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="27" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="28" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="29" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="30" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="31" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="32" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="33" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="34" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="35" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="36" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="37" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="38" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="39" dim_z="1160.0"/> + <end_layer z_offset="50.0" id="40" dim_z="1160.0"/> + </end_layers> + <staves> + <stave phi="0.0/180*pi" id="1"/> + <stave phi="45.0/180*pi" id="2"/> + <stave phi="90.0/180*pi" id="3"/> + <stave phi="135.0/180*pi" id="4"/> + <stave phi="180.0/180*pi" id="5"/> + <stave phi="225.0/180*pi" id="6"/> + <stave phi="270.0/180*pi" id="7"/> + <stave phi="315.0/180*pi" id="8"/> + </staves> + <modules> + <module z_offset="-2164.0" id="1" type="2"/> + <module z_offset="-1082.0" id="2" type="1"/> + <module z_offset="0.0" id="3" type="1"/> + <module z_offset="1082.0" id="4" type="1"/> + <module z_offset="2164.0" id="5" type="2"/> + </modules> + </barrel> + <endcap readout_plus="HcalEncapPlusHits" + readout_minus="HcalEncapMinusHits" + > + <module + rmin="Hcal_endcap_center_box_size/2" + rmax="Hcal_module_radius" + dz="Hcal_endcap_module_dim_z/2" + readout="HcalEndcapHits" + vis="HcalModuleVis" + /> + <layers> + <layer id="1" z_offset="-483.75"/> + <layer id="2" z_offset="-459.25"/> + <layer id="3" z_offset="-434.75"/> + <layer id="4" z_offset="-410.25"/> + <layer id="5" z_offset="-385.75"/> + <layer id="6" z_offset="-361.25"/> + <layer id="7" z_offset="-336.75"/> + <layer id="8" z_offset="-312.25"/> + <layer id="9" z_offset="-287.75"/> + <layer id="10" z_offset="-263.25"/> + <layer id="11" z_offset="-238.75"/> + <layer id="12" z_offset="-214.25"/> + <layer id="13" z_offset="-189.75"/> + <layer id="14" z_offset="-165.25"/> + <layer id="15" z_offset="-140.75"/> + <layer id="16" z_offset="-116.25"/> + <layer id="17" z_offset="-91.75"/> + <layer id="18" z_offset="-67.25"/> + <layer id="19" z_offset="-42.75"/> + <layer id="20" z_offset="-18.25"/> + <layer id="21" z_offset="6.25"/> + <layer id="22" z_offset="30.75"/> + <layer id="23" z_offset="55.25"/> + <layer id="24" z_offset="79.75"/> + <layer id="25" z_offset="104.25"/> + <layer id="26" z_offset="128.75"/> + <layer id="27" z_offset="153.25"/> + <layer id="28" z_offset="177.75"/> + <layer id="29" z_offset="202.25"/> + <layer id="30" z_offset="226.75"/> + <layer id="31" z_offset="251.25"/> + <layer id="32" z_offset="275.75"/> + <layer id="33" z_offset="300.25"/> + <layer id="34" z_offset="324.75"/> + <layer id="35" z_offset="349.25"/> + <layer id="36" z_offset="373.75"/> + <layer id="37" z_offset="398.25"/> + <layer id="38" z_offset="422.75"/> + <layer id="39" z_offset="447.25"/> + <layer id="40" z_offset="471.75"/> + </layers> + <positions> + <position phi="0.0" id="1" x="0" y="0" z="3523*mm"/> + <position phi="0.0" id="2" x="0" y="0" z="-3523*mm"/> + </positions> + </endcap> </detector> ---> - </detectors> @@ -365,6 +530,21 @@ <readout name="TPCHits"> <id>system:6,barrel:3,layer:4,module:16,sensor:1,side:32:-2,strip:20</id> </readout> + <readout name="EcalBarrelHits"> + <id>system:6,barrel:3,layer:4,module:16</id> + </readout> + <readout name="EcalEndcapHits"> + <id>system:6,barrel:3,layer:4,module:16</id> + </readout> + <readout name="HcalRegularHits"> + <id>system:6,barrel:3,layer:4,module:16</id> + </readout> + <readout name="HcalEndModuleHits"> + <id>system:6,barrel:3,layer:4,module:16</id> + </readout> + <readout name="HcalEndcapHits"> + <id>system:6,barrel:3,layer:4,module:16</id> + </readout> </readouts> <fields> diff --git a/DDG4/include/DDG4/Geant4Converter.h b/DDG4/include/DDG4/Geant4Converter.h index c86ed4d01ca42329ef3cc181e15c99879c743de0..0ccc723c30ba752d6e7c2ba4bc75085963ec5554 100644 --- a/DDG4/include/DDG4/Geant4Converter.h +++ b/DDG4/include/DDG4/Geant4Converter.h @@ -34,6 +34,7 @@ class G4Region; class G4Field; class G4FieldManager; class G4UserLimits; +class G4VisAttributes; /* * DD4hep namespace declaration @@ -64,7 +65,7 @@ namespace DD4hep { typedef std::map<const TNamed*, Geant4SensitiveDetector*> SensDetMap; typedef std::map<const TGeoVolume*, G4LogicalVolume*> VolumeMap; typedef std::map<const TGeoShape*, G4VSolid*> SolidMap; - + typedef std::map<const TNamed*, G4VisAttributes*> VisMap; struct G4GeometryInfo : public GeometryInfo { ElementMap g4Elements; MaterialMap g4Materials; @@ -72,6 +73,7 @@ namespace DD4hep { VolumeMap g4Volumes; PlacementMap g4Placements; RegionMap g4Regions; + VisMap g4Vis; LimitMap g4Limits; SensDetMap g4SensDets; @@ -100,8 +102,10 @@ namespace DD4hep { /// Convert the geometry type material into the corresponding Geant4 object(s). virtual void* handleMaterial(const std::string& name, const TGeoMedium* medium) const; + /// Convert the geometry type element into the corresponding Geant4 object(s). virtual void* handleElement(const std::string& name, const TGeoElement* element) const; + /// Convert the geometry type solid into the corresponding Geant4 object(s). virtual void* handleSolid(const std::string& name, const TGeoShape* volume) const; @@ -117,10 +121,16 @@ namespace DD4hep { /// Convert the geometry type region into the corresponding Geant4 object(s). virtual void* handleRegion(const TNamed* region, const std::set<const TGeoVolume*>& volumes) const; + + /// Convert the geometry visualisation attributes to the corresponding Geant4 object(s). + virtual void* handleVis(const std::string& name, const TNamed* vis) const; + /// Convert the geometry type LimitSet into the corresponding Geant4 object(s). virtual void* handleLimitSet(const TNamed* limitset, const std::set<const TGeoVolume*>& volumes) const; + /// Convert the geometry type SensitiveDetector into the corresponding Geant4 object(s). virtual void* handleSensitive(const TNamed* sens_det, const std::set<const TGeoVolume*>& volumes) const; + /// Handle the geant 4 specific properties void handleProperties(LCDD::Properties& prp) const; diff --git a/DDG4/src/Geant4Converter.cpp b/DDG4/src/Geant4Converter.cpp index ca141091dec4041d8f27d6ce142b4e4e8ec1c897..e931825b55bc90c0c4d69402f8e24eafefaf7244 100644 --- a/DDG4/src/Geant4Converter.cpp +++ b/DDG4/src/Geant4Converter.cpp @@ -37,6 +37,7 @@ #include <iostream> #include <iomanip> +#include "G4VisAttributes.hh" #include "G4ProductionCuts.hh" #include "G4VUserRegionInformation.hh" // Geant4 include files @@ -338,12 +339,12 @@ void* Geant4Converter::handleVolume(const string& name, const TGeoVolume* volume if ( !vol ) { const TGeoVolume* v = volume; Volume _v = Ref_t(v); - string n = v->GetName(); - TGeoMedium* m = v->GetMedium(); - TGeoShape* s = v->GetShape(); - G4VSolid* solid = (G4VSolid*)handleSolid(s->GetName(),s); - G4Material* medium = (G4Material*)handleMaterial(m->GetName(),m); - + VisAttr vis = _v.visAttributes(); + string n = v->GetName(); + TGeoMedium* m = v->GetMedium(); + TGeoShape* s = v->GetShape(); + G4VSolid* solid = (G4VSolid*)handleSolid(s->GetName(),s); + G4Material* medium = (G4Material*)handleMaterial(m->GetName(),m); if ( !solid ) { throw runtime_error("G4Converter: No Geant4 Solid present for volume:"+n); } @@ -371,6 +372,10 @@ void* Geant4Converter::handleVolume(const string& name, const TGeoVolume* volume } } vol = new G4LogicalVolume(solid,medium,n,0,sd,l); + if ( vis.isValid() ) { + G4VisAttributes* attr = (G4VisAttributes*)handleVis(vis.name(),vis.ptr()); + if ( attr ) vol->SetVisAttributes(attr); + } info.g4Volumes[v] = vol; if ( sd ) { cout << "G4Cnv::volume: + " << name << " <> " << vol->GetName() @@ -550,6 +555,33 @@ void* Geant4Converter::handleSensitive(const TNamed* sens_det, const set<const T return g4; } +/// Convert the geometry visualisation attributes to the corresponding Geant4 object(s). +void* Geant4Converter::handleVis(const string& name, const TNamed* vis) const { + G4GeometryInfo& info = data(); + G4VisAttributes* g4 = info.g4Vis[vis]; + if ( !g4 ) { + float r=0, g=0, b=0; + VisAttr attr = Ref_t(vis); + int style = attr.lineStyle(); + attr.rgb(r,g,b); + g4 = new G4VisAttributes(attr.visible(),G4Colour(r,g,b,attr.alpha())); + //g4->SetLineWidth(attr->GetLineWidth()); + g4->SetDaughtersInvisible(attr.showDaughters()); + if ( style == VisAttr::SOLID ) { + g4->SetLineStyle(G4VisAttributes::unbroken); + g4->SetForceWireframe(false); + g4->SetForceSolid(true); + } + else if ( style == VisAttr::WIREFRAME || style == VisAttr::DASHED ) { + g4->SetLineStyle(G4VisAttributes::dashed); + g4->SetForceSolid(false); + g4->SetForceWireframe(true); + } + info.g4Vis[vis] = g4; + } + return g4; +} + /// Handle the geant 4 specific properties void Geant4Converter::handleProperties(LCDD::Properties& prp) const { map<string,string> processors; @@ -707,6 +739,9 @@ void Geant4Converter::create(DetElement top) { handle(this, geo.solids, &Geant4Converter::handleSolid); cout << "++ Handled " << geo.solids.size() << " solids." << endl; + handle(this, geo.vis, &Geant4Converter::handleVis); + cout << "++ Handled " << geo.solids.size() << " visualization attributes." << endl; + handleMap(this, geo.sensitives, &Geant4Converter::handleSensitive); cout << "++ Handled " << geo.sensitives.size() << " sensitive detectors." << endl;