Skip to content
Snippets Groups Projects
vertex_tracker.xml 15.81 KiB
<?xml version="1.0" encoding="UTF-8"?>
<lccdd>
  <define>
    <comment>
      THis value probably can live in the file that includes this one.
    </comment>
    <constant name="ITS3Thickness"       value="40*um"/>
   <constant name="TrackerCarbon_thickness"         value="0.12*mm"/> 
    <constant name="TrackerEndcapAluminum_thickness" value="0.15*mm"/> 

    <documentation>
      #### Vertex Tracker Barrel Parameters

- The sensor modules are 2 half-cylinders.
- There are 2 sensitive layers
- Each sensor has a thickness is 40um
- There is an outer shell for structural support 300um thick.
- The ID of this shell is set (arbitrarily) to 10 cm.

      ##### Sensor layers

Currently there are 2 sensor layers. Each is composed of 2 half-cylinders modules with only 40um of silicon thickness.

      ##### Support shell

Simple carbon fiber support shell.

    </documentation>

    <constant name="VertexBarrel_length"            value="VertexTrackerBarrel_length"/>
    <constant name="VertexBarrelLayer_length"       value="VertexBarrel_length - 1*mm"/>
    <constant name="VertexBarrelMod_length"         value="VertexBarrel_length - 2*mm"/>

    <constant name="VertexBarrelSensor_thickness"   value="ITS3Thickness"/>
    <constant name="VertexBarrelLayer_thickness"    value="0.2*cm"/>
    <constant name="VertexBarrelMod_thickness"      value="0.1*cm"/>
    <constant name="VertexBarrelMod1_rmin"          value="3.4*cm"/>
    <constant name="VertexBarrelMod2_rmin"          value="5.7*cm"/>
    <constant name="VertexBarrelLayer_rmin1"        value="VertexBarrelMod1_rmin - VertexBarrelLayer_thickness/2.0"/>
    <constant name="VertexBarrelLayer_rmin2"        value="VertexBarrelMod2_rmin - VertexBarrelLayer_thickness/2.0"/>
    <constant name="VertexBarrelLayer_rmax1"        value="VertexBarrelLayer_rmin1 + VertexBarrelLayer_thickness"/>
    <constant name="VertexBarrelLayer_rmax2"        value="VertexBarrelLayer_rmin2 + VertexBarrelLayer_thickness"/>

    <comment> 
      "Support" is to "shell" like "layer" is to "module", and is need for the flat stave barrel implementation.
    </comment>
    <constant name="VertexBarrelShell_rmin"         value="10.0*cm"/>
    <constant name="VertexBarrelShell_thickness"    value="300*um"/>
    <constant name="VertexBarrelShell_rmax"         value="VertexBarrelShell_rmin + VertexBarrelShell_thickness"/>
    <constant name="VertexBarrelShell_length"       value="VertexBarrelLayer_length-VertexBarrelShell_thickness"/>

    <constant name="VertexBarrelSupport_thickness"  value="1.0*cm"/>
    <constant name="VertexBarrelSupport_rmin"       value="VertexBarrelShell_rmin-VertexBarrelSupport_thickness/2.0"/>
    <constant name="VertexBarrelSupport_rmax"       value="VertexBarrelSupport_rmin + VertexBarrelSupport_thickness"/>
    <constant name="VertexBarrelSupport_length"     value="VertexBarrelLayer_length"/>

    <constant name="VertexTrackerEndcapN_zmin"      value="25*cm"/>
    <constant name="VertexTrackerEndcapP_zmin"      value="25*cm"/>

    <constant name="VertexEndcap_NLayers"           value="1"/>
    <constant name="VertexTrackerEndcap_delta"      value="(VertexTrackerEndcapP_zmax - VertexTrackerEndcapP_zmin)/VertexEndcap_NLayers"/>
    <constant name="VertexEndcapLayer_dz"           value="2*cm"/>
    <constant name="VertexEndcapLayer_thickness"    value="min(3*cm,VertexEndcapLayer_dz-0.5*cm)"/>

    <constant name="VertexEndcap_NModules" value="12"/>
    <constant name="VertexEndcapModOpeningAngle"    value="360.0/VertexEndcap_NModules*degree"/>
    <constant name="VertexEndcapMod1_x1"            value="2.0*VertexTrackerEndcapP_rmin*sin(VertexEndcapModOpeningAngle/2.0)"/>
    <constant name="VertexEndcapMod1_x2"            value="2.0*VertexTrackerEndcapP_rmax*sin(VertexEndcapModOpeningAngle/2.0)"/>
    <constant name="VertexEndcapMod1_y"             value="VertexTrackerEndcapP_rmax*cos(VertexEndcapModOpeningAngle/2.0) - VertexTrackerEndcapP_rmin"/>
    <comment> cone connecting vertex barrel to endcap </comment>
    <!-- <constant name="VertexEndcapCone_zmax"       value="VertexEndcapShell_zmin-0.2*cm"/> -->
    <constant name="VertexSupportCarbon_thickness"       value="2*mm"/>

    <constant name="VertexEndcapCone_zmin"       value="VertexBarrelLayer_length/2.0 + 0.1*cm"/>
    <constant name="VertexEndcapCone_zmax"       value="VertexTrackerEndcapN_zmin    - 0.1*cm"/>
    <constant name="VertexEndcapCone_rmin1"      value="VertexEndcapCone_zmin * 36.26/49"/>
    <!-- <constant name="VertexEndcapCone_rmin1"      value="TrackerEndcapInner_rmax1"/> -->
    <constant name="VertexEndcapCone_rmin2"      value="VertexTrackerEndcapP_rmax"/>
    <constant name="VertexEndcapConeService_rmin1"      value="VertexEndcapCone_rmin1+VertexSupportCarbon_thickness+0.1*mm"/>
    <constant name="VertexEndcapConeService_rmin2"      value="VertexEndcapCone_rmin2+VertexSupportCarbon_thickness+0.1*mm"/>
    <constant name="VertexEndcapConeService_thickness"      value="0.6*mm"/>
    <constant name="VertexEndcapCone_length"     value="VertexEndcapCone_zmax - VertexEndcapCone_zmin"/>


    <comment>
      Extra parameters to approximate a cylinder as a set of skinny staves
      due to ACTS limitations.
    </comment>
      <constant name="VertexBarrelStave_count"       value="128"/>
      <constant name="VertexBarrelStave1_width"      value="2*VertexBarrelMod1_rmin * tan(180*degree/VertexBarrelStave_count)"/>
      <constant name="VertexBarrelStave2_width"      value="2*VertexBarrelMod2_rmin * tan(180*degree/VertexBarrelStave_count)"/>
      <constant name="VertexBarrelShellStave_width"  value="2*VertexBarrelShell_rmin * tan(180*degree/VertexBarrelStave_count)"/>
  </define>

  <display>
  </display>

  <detectors>
    <detector
      id="VertexBarrel_ID"
      name="VertexBarrel"
      type="athena_VertexBarrel"
      readout="VertexBarrelHits"
      insideTrackingVolume="true">
      <dimensions
        rmin="VertexBarrelLayer_rmin1"
        rmax="VertexBarrelSupport_rmax"
        length="VertexBarrel_length" />
      <comment>Vertex Barrel Modules</comment>
      <module name="Module1" vis="VertexLayerVis">
        <module_component name="ITS3"
                          material="Silicon" 
                          sensitive="true"
                          width="VertexBarrelStave1_width" 
                          length="VertexBarrelMod_length"
                          thickness="VertexBarrelSensor_thickness" 
                          vis="VertexLayerVis" />
      </module>
      <module name="Module2" vis="VertexLayerVis">
        <module_component name="ITS3"
                          material="Silicon" 
                          sensitive="true"
                          width="VertexBarrelStave2_width" 
                          length="VertexBarrelMod_length"
                          thickness="VertexBarrelSensor_thickness" 
                          vis="VertexLayerVis" />
      </module>
      <module name="SupportShell" vis="VertexSupportVis">
        <module_component name="CF Shell"
                          material="CarbonFiber" 
                          sensitive="true"
                          width="VertexBarrelShellStave_width" 
                          length="VertexBarrelShell_length"
                          thickness="VertexBarrelShell_thickness" 
                          vis="VertexSupportVis" />
      </module>
      <comment> Layers composed of many arrayed modules  </comment>
      <layer module="Module1" id="1" vis="VertexLayerVis">
        <barrel_envelope
          inner_r="VertexBarrelLayer_rmin1"
          outer_r="VertexBarrelLayer_rmax1"
          z_length="VertexBarrelLayer_length" />
        <comment>
          phi0     : Starting phi of first module.
          phi_tilt : Phi tilt of a module.
          rc       : Radius of the module center.
          nphi     : Number of modules in phi.
          rphi_dr  : The delta radius of every other module.
          z0       : Z position of first module in phi.
          nz       : Number of modules to place in z.
          dr       : Radial displacement parameter, of every other module.
        </comment>
        <rphi_layout phi_tilt="0.0*degree" nphi="VertexBarrelStave_count" phi0="0.0" rc="VertexBarrelMod1_rmin" dr="0.0 * mm"/>
        <z_layout dr="0.0 * mm" z0="0.0 * mm" nz="1"/>
      </layer>
      <layer module="Module2" id="2" vis="VertexLayerVis">
        <barrel_envelope
          inner_r="VertexBarrelLayer_rmin2"
          outer_r="VertexBarrelLayer_rmax2"
          z_length="VertexBarrelLayer_length" />
        <rphi_layout phi_tilt="0.0*degree" nphi="VertexBarrelStave_count" phi0="0.0" rc="VertexBarrelMod2_rmin" dr="0.0 * mm"/>
        <z_layout dr="0.0 * mm" z0="0.0 * mm" nz="1"/>
      </layer>
      <layer module="SupportShell" id="3" vis="VertexSupportVis">
        <barrel_envelope
          inner_r="VertexBarrelSupport_rmin"
          outer_r="VertexBarrelSupport_rmax"
          z_length="VertexBarrelSupport_length" />
        <rphi_layout phi_tilt="0.0*degree" nphi="VertexBarrelStave_count" phi0="0.0" rc="VertexBarrelShell_rmin" dr="0.0 * mm"/>
        <z_layout dr="0.0 * mm" z0="0.0 * mm" nz="1"/>
      </layer>
    </detector>

    <detector
      id="VertexEndcapP_ID"
      name="VertexEndcapP"
      type="athena_TrapEndcapTracker"
      readout="VertexEndcapHits"
      vis="TrackerVis"
      reflect="false">

      <support  material="CarbonFiber" name="sup_cone" vis="TrackerSupportVis">
        <shape type="Cone" 
          rmin1="VertexEndcapCone_rmin1" rmax1="VertexEndcapCone_rmin1+VertexSupportCarbon_thickness"
          rmin2="VertexEndcapCone_rmin2" rmax2="VertexEndcapCone_rmin2+VertexSupportCarbon_thickness" z="VertexEndcapCone_length/2.0"/>
        <position x="0*cm"  y="0*cm"   z="(VertexEndcapCone_zmin+VertexEndcapCone_zmax)/2.0"/>
      </support>
      <support  material="Aluminum" name="sup_cone_service" vis="TrackerSupportVis">
        <shape type="Cone" 
          rmin1="VertexEndcapConeService_rmin1" rmax1="VertexEndcapConeService_rmin1+VertexEndcapConeService_thickness"
          rmin2="VertexEndcapConeService_rmin2" rmax2="VertexEndcapConeService_rmin2+VertexEndcapConeService_thickness" z="VertexEndcapCone_length/2.0"/>
        <position x="0*cm"  y="0*cm"   z="(VertexEndcapCone_zmin+VertexEndcapCone_zmax)/2.0"/>
      </support>


      <module name="Module1" vis="AnlProcess_Blue">
        <trd x1="VertexEndcapMod1_x1/2.0" x2="VertexEndcapMod1_x2/2.0" z="VertexEndcapMod1_y/2"/>
        <module_component thickness="ITS3Thickness" material="Silicon" sensitive="true"/>
       <module_component thickness="TrackerEndcapAluminum_thickness"  material="Aluminum"/>
        <module_component thickness="TrackerCarbon_thickness"          material="CarbonFiber"/>
      </module>
      <layer id="1">
        <envelope  vis="TrackerVis"
          rmin="VertexTrackerEndcapP_rmin"
          rmax="VertexTrackerEndcapP_rmax"
          length="VertexEndcapLayer_thickness"
          zstart="VertexTrackerEndcapP_zmin + VertexEndcapLayer_dz/2.0" />
        <ring vis="TrackerVis"
          r="VertexTrackerEndcapP_rmin+VertexEndcapMod1_y/2.0"
          zstart="0.0"
          nmodules="12" dz="2.5 * mm" module="Module1" />
      </layer>
    </detector>


    <detector
      id="VertexEndcapN_ID"
      name="VertexEndcapN"
      type="athena_TrapEndcapTracker"
      readout="VertexEndcapHits"
      vis="TrackerVis"
      reflect="true">

      <support  material="CarbonFiber" name="sup_cone" vis="TrackerSupportVis">
        <shape type="Cone" 
          rmin2="VertexEndcapCone_rmin1" rmax2="VertexEndcapCone_rmin1+VertexSupportCarbon_thickness"
          rmin1="VertexEndcapCone_rmin2" rmax1="VertexEndcapCone_rmin2+VertexSupportCarbon_thickness" z="VertexEndcapCone_length/2.0"/>
        <position x="0*cm"  y="0*cm"   z="-1.0*(VertexEndcapCone_zmin+VertexEndcapCone_zmax)/2.0"/>
      </support>
      <support  material="Aluminum" name="sup_cone_service" vis="TrackerSupportVis">
        <shape type="Cone" 
          rmin2="VertexEndcapConeService_rmin1" rmax2="VertexEndcapConeService_rmin1+VertexEndcapConeService_thickness"
          rmin1="VertexEndcapConeService_rmin2" rmax1="VertexEndcapConeService_rmin2+VertexEndcapConeService_thickness" z="VertexEndcapCone_length/2.0"/>
        <position x="0*cm"  y="0*cm"   z="-1.0*(VertexEndcapCone_zmin+VertexEndcapCone_zmax)/2.0"/>
      </support>

      <module name="Module1" vis="AnlProcess_Blue">
        <trd x1="VertexEndcapMod1_x1/2.0" x2="VertexEndcapMod1_x2/2.0" z="VertexEndcapMod1_y/2"/>
        <module_component thickness="ITS3Thickness" material="Silicon" sensitive="true"/>
       <module_component thickness="TrackerEndcapAluminum_thickness"  material="Aluminum"/>
        <module_component thickness="TrackerCarbon_thickness"          material="CarbonFiber"/>
      </module>
      <layer id="1">
        <envelope  vis="TrackerVis"
          rmin="VertexTrackerEndcapN_rmin"
          rmax="VertexTrackerEndcapN_rmax"
          length="VertexEndcapLayer_thickness"
          zstart="VertexTrackerEndcapN_zmin + VertexEndcapLayer_dz/2.0" />
        <ring vis="TrackerVis"
          r="VertexTrackerEndcapN_rmin+VertexEndcapMod1_y/2.0"
          zstart="0.0"
          nmodules="12" dz="2.5 * mm" module="Module1" />
      </layer>
    </detector>


    <!--
    <detector id="VertexEndcapP_ID" 
      name="VertexEndcapP" 
      type="athena_SimpleDiskTracker"
      readout="VertexEndcapHits"
      insideTrackingVolume="true" 
      reflect="false" vis="TrackerVis">
      <position x="0" y="0" z="0.0*mm"/>
      <layer id="1" vis="AnlOrange"
        inner_z="VertexTrackerEndcapP_zmin + 0.5*VertexTrackerEndcap_delta" 
        inner_r="VertexTrackerEndcapP_rmin-3*mm" 
        outer_r="VertexTrackerEndcapP_rmax">
        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
        <slice material="Silicon" thickness="1.0*mm" vis="AnlOrange"  sensitive="true"/>
        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
      </layer>
      <layer id="2" vis="AnlOrange"
        inner_z="VertexTrackerEndcapP_zmin + 1.5*VertexTrackerEndcap_delta" 
        inner_r="VertexTrackerEndcapP_rmin" 
        outer_r="VertexTrackerEndcapP_rmax">
        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
        <slice material="Silicon" thickness="1.0*mm" vis="AnlOrange"  sensitive="true"/>
        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
      </layer>
    </detector>

    <detector id="VertexEndcapN_ID" 
      name="VertexEndcapN" 
      type="athena_SimpleDiskTracker"
      readout="VertexEndcapHits"
      insideTrackingVolume="true"
      reflect="true" vis="TrackerVis">
      <position x="0" y="0" z="-0.0*mm-1.0e-9*mm"/>
      <layer id="1" vis="AnlOrange"
        inner_z="VertexTrackerEndcapN_zmin + 0.5*VertexTrackerEndcap_delta" 
        inner_r="VertexTrackerEndcapN_rmin" 
        outer_r="VertexTrackerEndcapN_rmax">
        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
        <slice material="Silicon" thickness="1.0*mm" vis="AnlOrange"  sensitive="true"/>
        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
      </layer>
      <layer id="2" vis="AnlOrange"
        inner_z="VertexTrackerEndcapN_zmin + 1.5*VertexTrackerEndcap_delta" 
        inner_r="VertexTrackerEndcapN_rmin" 
        outer_r="VertexTrackerEndcapN_rmax">
        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
        <slice material="Silicon" thickness="1.0*mm" vis="AnlOrange"  sensitive="true"/>
        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
      </layer>
    </detector>
    -->
  </detectors>

  <readouts>
    <readout name="VertexBarrelHits">
      <segmentation type="CartesianGridXY" grid_size_x="0.010*mm" grid_size_y="0.010*mm" />
      <id>system:8,barrel:2,layer:4,module:12,sensor:2,x:32:-16,y:-16</id>
    </readout>
    <readout name="VertexEndcapHits">
      <segmentation type="CartesianGridXZ" grid_size_x="0.20*mm" grid_size_z="0.20*mm" />
      <id>system:8,barrel:2,layer:4,module:12,sensor:2,x:32:-16,z:-16</id>
    </readout>
  </readouts>


</lccdd>