Skip to content
Snippets Groups Projects
dirc.xml 7.64 KiB
<lccdd>

  <comment>
    DIRC consists of 16 (default) identical modules making a barrel.
    Each DIRC module consists of:
    _______
    [  |   \
    [  |    \
    [FD|Prizm|Lens|--------bars+glue-----|mirror]

    Main constants to control DIRC global geometry:
      - DIRC_length
      - DIRC_offset
      - DIRC_rmin
      - DIRCBox_count  (16 full dirc, 1 - a single module)
      - DIRC_rotation  (allows to flip the DIRC)

    When DIRC_length is set, it affects bars length (all other lengths are fixed)
    The width of each DIRC module is derived from DIRCPrism_width

  </comment>

  <define>
    <constant name="DIRCFake_rmin"             value="BarrelTracking_rmax-11*cm"/>
    <constant name="DIRC_rotation"         value="pi" comment="Allows DIRC flip"/>
    <!-- <constant name="cb_DIRC_length"    value="DIRCLength"/> -->
    <!-- CLEANUP THIS if not sure. This is from the initial implementation
    <constant name="DIRC_length"            value="285.500*cm"/>
    <constant name="DIRCFake_rmin"              value="82.00*cm"/>-->

    <!-- Prism -->
    <constant name="DIRCPrism_width"        value="360*mm"/>
    <constant name="DIRCPrism_length"       value="300*mm"/>
    <constant name="DIRCPrism_short_edge"   value="50*mm"/>
    <constant name="DIRCPrism_angle"        value="32*deg"/>
    <constant name="DIRCPrism_long_edge"    value="DIRCPrism_short_edge + DIRCPrism_length * tan(DIRCPrism_angle)"/>
    <constant name="DIRCPrism_height"       value="DIRCPrism_long_edge"/>

    <!-- DIRC length -->
    <constant name="DIRCMain_length"           value="DIRC_length"/>
    <constant name="DIRCFake_offset"           value="DIRC_offset+15*cm"/>

    <!-- Box - main DIRC modules -->
    <constant name="DIRCBox_count"          value="16"  comment="Number of DIRC boxes per... DIRC. 16 - default"/>
    <constant name="DIRCBox_width"          value="DIRCPrism_width"/>

    <!-- Mirror -->
    <constant name="DIRCMirror_height"      value="20 * mm"/>
    <constant name="DIRCMirror_width"       value="DIRCPrism_width"/>
    <constant name="DIRCMirror_thickness"   value="1 * mm"/>

    <!-- Lens -->
    <constant name="DIRCLens_height"        value="DIRCPrism_long_edge"/>
    <constant name="DIRCLens_width"         value="DIRCPrism_width"/>
    <constant name="DIRCLens_thickness"     value="12 * mm"/>
    <constant name="DIRCLens_r1"            value="33 * mm"/>
    <constant name="DIRCLens_r2"            value="24 * mm"/>
    <constant name="DIRCLens_shight"        value="25 * mm" comment="Is 'shight' from UK urban dictionary???"/>

    <!-- FD (Foto detectors?) -->
    <constant name="DIRCFd_height"          value="DIRCPrism_height"/>
    <constant name="DIRCFd_width"           value="DIRCPrism_width"/>
    <constant name="DIRCFd_thickness"       value="1*mm"/>

    <!-- Bar - Each DIRC box consists of N "bars" -->
    <!-- BarAssembly - Bars + Glue -->
    <constant name="DIRCBarAssm_length"     value="DIRCMain_length - DIRCPrism_length - DIRCMirror_thickness - DIRCLens_thickness - DIRCFd_thickness" comment="Length of bars+glue assembly"/>
    <constant name="DIRCBar_count"          value="11" comment="Number of bars per box"/>
    <constant name="DIRCBar_gap"            value="0.15 * mm"/>
    <constant name="DIRCBar_height"         value="17 * mm"/>
    <constant name="DIRCBar_width"          value="(DIRCPrism_width - (DIRCBar_count - 1) * DIRCBar_gap) / DIRCBar_count"/>
    <constant name="DIRCGlue_thickness"     value="0.05 * mm"/>
    <constant name="DIRCBar_length"         value="(DIRCBarAssm_length-4*DIRCGlue_thickness)/4"/>

    <!-- dirc outer volume -->
    <comment>
      RMax is calculated according to "rectangle inside ring" problem solution
      https://math.stackexchange.com/questions/4222684/calculate-rectangle-inside-ring-parameters/4222691#4222691
    </comment>
    <constant name="DIRCFake_rmax"              value="sqrt( (DIRCFake_rmin+DIRCPrism_height)^2 + 0.25*(DIRCPrism_height)^2 )"/>
  </define>

  <materials>
    <comment>
      Only non optical material variants are here.
      See optical_materials.xml for optical ones
      -
    </comment>

    <material name="Epotek">
      <D type="density" value="1.2" unit="g/cm3"/>
      <composite n="5" ref="H"/>
      <composite n="3" ref="C"/>
      <composite n="2" ref="O"/>
    </material>
    <material name="Nlak33a">
      <D type="density" value="4.220" unit="g/cm3"/>
      <composite n="1" ref="Si"/>
      <composite n="2" ref="O"/>
    </material>
  </materials>

  <limits>
  </limits>

  <regions>
  </regions>

  <display>
    <vis name="DIRCTube"   ref="AnlTeal" alpha="0.1" visible="true"  showDaughters="true"   lineStyle="solid" drawingStyle="solid" />
    <vis name="DIRCBox"    ref="AnlLight_Gray" alpha="0.1" visible="true"  showDaughters="true"   lineStyle="solid" drawingStyle="solid" />
    <vis name="DIRCLens1"  ref="AnlProcess_Blue" visible="true"  showDaughters="false"  lineStyle="solid" drawingStyle="solid" />
    <vis name="DIRCLens2"  ref="AnlProcess_Blue" visible="true"  showDaughters="false"  lineStyle="solid" drawingStyle="solid" />
    <vis name="DIRCLens3"  ref="AnlTeal" visible="true"  showDaughters="false"  lineStyle="solid" drawingStyle="solid" />
    <vis name="DIRCBar"    ref="AnlTeal" visible="true"  showDaughters="false"  lineStyle="solid" drawingStyle="solid" />
    <vis name="DIRCGlue"   ref="AnlViolet" visible="true"  showDaughters="false"  lineStyle="solid" drawingStyle="solid" />
    <vis name="DIRCMirror" ref="AnlGray" visible="true"  showDaughters="false"  lineStyle="solid" drawingStyle="solid" />
    <vis name="DIRCPrism"  ref="AnlTeal" visible="true"  showDaughters="false"  lineStyle="solid" drawingStyle="solid" />
    <vis name="DIRCFd"     ref="AnlRed" visible="true"  showDaughters="false" />
  </display>

  <detectors>
    <detector id="BarrelDIRC_ID" name="cb_DIRC" type="cb_DIRC" readout="DIRCBarHits" vis="DIRCTube">
      <dimensions rmin="DIRCFake_rmin" rmax="DIRCFake_rmax" length="DIRCMain_length" radius="DIRCRadius" dx="DIRCBars_DX" dy="DIRCBars_DY" number="DIRCNum" deltaphi="DIRCDPhi"/>
      <position x="0" y="0" z="DIRCFake_offset"/>
      <rotation theta="DIRC_rotation"/>
      <module name="DircBox" R="DIRCRadius" repeat="DIRCBox_count" width="DIRCPrism_width + 1*mm" height="DIRCPrism_height*2" length="DIRCBarAssm_length + 550*mm" vis="DIRCBox">
        <!-- Mirror (at the end of the module) -->
        <mirror
          height="DIRCMirror_height"
          width="DIRCMirror_width"
          thickness="DIRCMirror_thickness"
          material="Aluminum"
          vis="DIRCMirror"
        />

        <!-- DIRC Bar -->
        <!-- TODO parametrize as bar+glue assembly with layers -->
        <bar
          height="DIRCBar_height"
          width="DIRCBar_width"
          length="DIRCBar_length"
          repeat="DIRCBar_count"
          gap="DIRCBar_gap"
          material="Quartz"
          vis="DIRCBar"
        />

        <glue thickness="DIRCGlue_thickness" material="Epotek" vis="DIRCGlue"/>

        <!-- lens -->
        <lens
          height="DIRCLens_height"
          width="DIRCLens_width"
          thickness="DIRCLens_thickness"
          r1="DIRCLens_r1"
          r2="DIRCLens_r2"
        />

        <prism/> <!-- TODO parametrize here -->

        <fd
          height="DIRCFd_height"
          width="DIRCFd_width"
          thickness="DIRCFd_thickness"
          vis="DIRCFd"
          material="Quartz"
        />
      </module>
    </detector>
  </detectors>

  <readouts>
    <readout name="DIRCBarHits">
      <segmentation type="CartesianGridXY" grid_size_x="3.0*mm" grid_size_y="3.0*mm" />
      <id>system:8,module:8,section:8,bar:8,x:32:-16,y:-16</id>
    </readout>
  </readouts>

  <plugins>
  </plugins>

  <fields>
  </fields>
</lccdd>