Select Git revision
Chao Peng authored
LGC.xml 8.99 KiB
<lccdd>
<info name="LGC" title="Light Gas Cherenkov"
author="Chao Peng"
url="https://eicweb.phy.anl.gov/EIC/detectors/solid/-/blob/master/compact/LGC.xml"
status="development"
version="$Id: compact/LGC.xml v1.0 2024-05-18$">
<comment>SoLID Light Gas Cherenkov Detector</comment>
</info>
<readouts>
<readout name="LightGasCherenkovHits">
<segmentation type="CartesianGridXY" grid_size_x="3*mm" grid_size_y="3*mm" />
<id>system:6,sector:12,module:14,x:32:-16,y:-16</id>
</readout>
</readouts>
<define>
<comment>
start ppint of LGC
</comment>
<constant name="LGC_x" value="0" />
<constant name="LGC_y" value="0" />
<constant name="LGC_z" value="97.0*cm" />
<comment>
tank geometry constants
</comment>
<constant name="LGC_seg1_length" value="97*cm" />
<constant name="LGC_seg1_rmin1" value="48.7*cm" />
<constant name="LGC_seg1_rmax1" value="120.*cm" />
<constant name="LGC_seg1_rmin2" value="59.7*cm" />
<constant name="LGC_seg1_rmax2" value="130.*cm" />
<constant name="LGC_seg2_length" value="16*cm" />
<constant name="LGC_seg2_rmin1" value="59.7*cm" />
<constant name="LGC_seg2_rmax1" value="130.*cm" />
<constant name="LGC_seg2_rmin2" value="61.5*cm" />
<constant name="LGC_seg2_rmax2" value="145.*cm" />
<constant name="LGC_seg3_length" value="22*cm" />
<constant name="LGC_seg3_rmin1" value="61.5*cm" />
<constant name="LGC_seg3_rmax1" value="145.*cm" />
<constant name="LGC_seg3_rmin2" value="63.4*cm" />
<constant name="LGC_seg3_rmax2" value="163.*cm" />
<constant name="LGC_seg4_length" value="80*cm" />
<constant name="LGC_seg4_rmin1" value="63.4*cm" />
<constant name="LGC_seg4_rmax1" value="263.*cm" />
<constant name="LGC_seg4_rmin2" value="73.2*cm" />
<constant name="LGC_seg4_rmax2" value="263.*cm" />
<constant name="LGC_wall" value="6*mm" />
<constant name="LGC_entrance" value="4*mm" />
<constant name="LGC_exit" value="4*mm" />
<comment>
mirror geometry constants: the mirror is built by intersection between a spherical shell and a trapezoid (wedge)
note these coordinates are in world volume, the geometry plugin is supposed to transform them to the Cherenkov volume coordinates
</comment>
<constant name="LGC_inner_shell_rmin" value="299.15*cm" />
<constant name="LGC_inner_shell_rmax" value="299.45*cm" />
<constant name="LGC_inner_shell_x" value="0.*cm" />
<constant name="LGC_inner_shell_y" value="274.7*cm" />
<constant name="LGC_inner_shell_z" value="24.9*cm" />
<constant name="LGC_outer_shell_rmin" value="160.09*cm" />
<constant name="LGC_outer_shell_rmax" value="160.39*cm" />
<constant name="LGC_outer_shell_x" value="0.*cm" />
<constant name="LGC_outer_shell_y" value="200.86*cm" />
<constant name="LGC_outer_shell_z" value="143.06*cm" />
<comment>
wedge corner coordinates
</comment>
<constant name="LGC_inner_wedge_P2_x" value="18.23*cm"/>
<constant name="LGC_inner_wedge_P2_y" value="173.43*cm"/>
<constant name="LGC_inner_wedge_P2_z" value="305.82*cm"/>
<constant name="LGC_inner_wedge_P4_x" value="7.57*cm"/>
<constant name="LGC_inner_wedge_P4_y" value="72.02*cm"/>
<constant name="LGC_inner_wedge_P4_z" value="244.82*cm"/>
<constant name="LGC_outer_wedge_P2_x" value="21.76*cm"/>
<constant name="LGC_outer_wedge_P2_y" value="207.05*cm"/>
<constant name="LGC_outer_wedge_P2_z" value="301.54*cm"/>
<constant name="LGC_outer_wedge_P4_x" value="19.03*cm"/>
<constant name="LGC_outer_wedge_P4_y" value="181.06*cm"/>
<constant name="LGC_outer_wedge_P4_z" value="300.77*cm"/>
<comment>
dimension calculations (position is relative to the shell)
</comment>
<constant name="LGC_inner_wedge_dx1" value="abs(LGC_inner_wedge_P4_x)" />
<constant name="LGC_inner_wedge_dx2" value="abs(LGC_inner_wedge_P2_x)" />
<constant name="LGC_inner_wedge_dy" value="abs(LGC_inner_wedge_P2_y - LGC_inner_wedge_P4_y)/2." />
<constant name="LGC_inner_wedge_dz" value="abs(LGC_inner_wedge_P2_z - LGC_inner_wedge_P4_z)/2. + 10*cm" />
<constant name="LGC_inner_wedge_x" value="0. - LGC_inner_shell_x" />
<constant name="LGC_inner_wedge_y" value="(LGC_inner_wedge_P2_y + LGC_inner_wedge_P4_y)/2. - LGC_inner_shell_y"/>
<constant name="LGC_inner_wedge_z" value="(LGC_inner_wedge_P2_z + LGC_inner_wedge_P4_z)/2. - LGC_inner_shell_z"/>
<constant name="LGC_outer_wedge_dx1" value="abs(LGC_outer_wedge_P4_x)" />
<constant name="LGC_outer_wedge_dx2" value="abs(LGC_outer_wedge_P2_x)" />
<constant name="LGC_outer_wedge_dy" value="abs(LGC_outer_wedge_P2_y - LGC_outer_wedge_P4_y)/2." />
<constant name="LGC_outer_wedge_dz" value="abs(LGC_outer_wedge_P2_z - LGC_outer_wedge_P4_z)/2. + 10*cm" />
<constant name="LGC_outer_wedge_x" value="0. - LGC_outer_shell_x" />
<constant name="LGC_outer_wedge_y" value="(LGC_outer_wedge_P2_y + LGC_outer_wedge_P4_y)/2. - LGC_outer_shell_y"/>
<constant name="LGC_outer_wedge_z" value="(LGC_outer_wedge_P2_z + LGC_outer_wedge_P4_z)/2. - LGC_outer_shell_z"/>
</define>
<detectors>
<comment>
Light Gas Cherenkov Detector: Begin
</comment>
<detector
id="7"
name="LightGasCherenkov"
type="SoLID_GasCherenkov"
readout="LightGasCherenkovHits"
numsides="30">
<placement x="LGC_x" y="LGC_y" z0="LGC_z" />
<tank material="Kapton" vis="LGC_TankVis">
<segment length="LGC_seg1_length"
rmin1="LGC_seg1_rmin1" rmax1="LGC_seg1_rmax1"
rmin2="LGC_seg1_rmin2" rmax2="LGC_seg1_rmax2" />
<segment length="LGC_seg2_length"
rmin1="LGC_seg2_rmin1" rmax1="LGC_seg2_rmax1"
rmin2="LGC_seg2_rmin2" rmax2="LGC_seg2_rmax2" />
<segment length="LGC_seg3_length"
rmin1="LGC_seg3_rmin1" rmax1="LGC_seg3_rmax1"
rmin2="LGC_seg3_rmin2" rmax2="LGC_seg3_rmax2" />
<segment length="LGC_seg4_length"
rmin1="LGC_seg4_rmin1" rmax1="LGC_seg4_rmax1"
rmin2="LGC_seg4_rmin2" rmax2="LGC_seg4_rmax2" />
<radiator material="CO2Optical" vis="LGC_GasVis">
<comment>
radiator is the daugter of tank, using the same segments but with wall thickness
</comment>
<placement x="0." y="0." z="LGC_entrance/2." />
<segment length="LGC_seg1_length - LGC_entrance"
rmin1="LGC_seg1_rmin1 + LGC_wall" rmax1="LGC_seg1_rmax1 - LGC_wall"
rmin2="LGC_seg1_rmin2 + LGC_wall" rmax2="LGC_seg1_rmax2 - LGC_wall" />
<segment length="LGC_seg2_length"
rmin1="LGC_seg2_rmin1 + LGC_wall" rmax1="LGC_seg2_rmax1 - LGC_wall"
rmin2="LGC_seg2_rmin2 + LGC_wall" rmax2="LGC_seg2_rmax2 - LGC_wall" />
<segment length="LGC_seg3_length + LGC_exit"
rmin1="LGC_seg3_rmin1 + LGC_wall" rmax1="LGC_seg3_rmax1 - LGC_wall"
rmin2="LGC_seg3_rmin2 + LGC_wall" rmax2="LGC_seg3_rmax2 - LGC_wall" />
<segment length="LGC_seg4_length - 2*LGC_exit"
rmin1="LGC_seg4_rmin1 + LGC_wall" rmax1="LGC_seg4_rmax1 - LGC_wall"
rmin2="LGC_seg4_rmin2 + LGC_wall" rmax2="LGC_seg4_rmax2 - LGC_wall" />
</radiator>
</tank>
<comment>
mirrors placement
mirror is the intersection between two spherical shell
</comment>
<mirrors>
<piece id="1" material="PyrexGlassOptical" surface="MirrorOpticalSurface" vis="LGC_MirrorVis">
<placement x="LGC_inner_shell_x" y="LGC_inner_shell_y" z="LGC_inner_shell_z - LGC_z"/>
<shell rmin="LGC_inner_shell_rmin" rmax="LGC_inner_shell_rmax"
theta0="0*degree" dtheta="90*degree" phi0="180*degree" dphi="180*degree"/>
<comment> dz, dy are swapped because of x rotation </comment>
<wedge dx1="LGC_inner_wedge_dx1" dx2="LGC_inner_wedge_dx2"
dy="LGC_inner_wedge_dz" dz="LGC_inner_wedge_dy"
x="LGC_inner_wedge_x" y="LGC_inner_wedge_y" z="LGC_inner_wedge_z"
rotx="-90*degree" roty="0" rotz="0"/>
</piece>
<piece id="2" material="PyrexGlassOptical" surface="MirrorOpticalSurface" vis="LGC_MirrorVis">
<placement x="LGC_outer_shell_x" y="LGC_outer_shell_y" z="LGC_outer_shell_z - LGC_z"/>
<shell rmin="LGC_outer_shell_rmin" rmax="LGC_outer_shell_rmax"
theta0="0*degree" dtheta="60*degree" phi0="0*degree" dphi="360*degree"/>
<comment> dz, dy are swapped because of x rotation </comment>
<wedge dx1="LGC_outer_wedge_dx1" dx2="LGC_outer_wedge_dx2"
dy="LGC_outer_wedge_dz" dz="LGC_outer_wedge_dy"
x="LGC_outer_wedge_x" y="LGC_outer_wedge_y" z="LGC_outer_wedge_z"
rotx="-90*degree" roty="0" rotz="0"/>
</piece>
</mirrors>
<comment>
Light Gas Cherenkov: Winston cones
</comment>
<winston_cone material="PyrexGlassOptical" surface="MirrorOpticalSurface">
<placement x="0*cm" y="240*cm" z="245*cm - LGC_z" />
<rotation x="65*degree" y="0" z="0" />
<comment> TODO: implement PMT material layers </comment>
<pmt_array dx="16*cm" dy="16*cm" sensitive="yes" vis="LGC_PMTVis" />
<cone shape="cone" thickness="4*mm" rmin="7.0*cm" rmax="21.5*cm" length="30.*cm" vis="LGC_ConeVis" />
<shield material="Lead" thickness="1.*cm" radius="11.53*cm" length="8.*cm"
shift_z="1.5*cm" vis="LGC_ShieldVis" />
</winston_cone>
</detector>
<comment>
Light Gas Cherenkov Detector: End
</comment>
</detectors>
</lccdd>