Skip to content
Snippets Groups Projects
Select Git revision
  • master
  • main default protected
2 results

LGC.xml

Blame
  • 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>