Skip to content
Snippets Groups Projects
Forked from EIC / detectors / athena
42 commits behind the upstream repository.
ecal_barrel_interlayers.xml 7.76 KiB
<lccdd>

    <display>
    </display>
  <define>
    <comment>
      ---------------------------------------
      EM Calorimeter Parameters with AstroPix
      ---------------------------------------
    </comment>
    <comment>
      To change the number of imaging layers from, e.g., 9 to 6,
      change EcalBarrelImagingLayers_nMax variable
    </comment>
    <constant name="EcalBarrelImagingLayers_nMax"  value="9"/>

    <constant name="EcalBarrel_Support_thickness"    value="5*cm"/>
    <constant name="EcalBarrel_SiliconThickness"     value="500*um"/>
    <constant name="EcalBarrel_ElectronicsThickness" value="150*um"/>
    <constant name="EcalBarrel_CopperThickness"      value="100*um"/>
    <constant name="EcalBarrel_KaptonThickness"      value="200*um"/>
    <constant name="EcalBarrel_EpoxyThickness"       value="100*um"/>
    <constant name="EcalBarrel_CarbonThickness"      value="0.5*mm"/>
    <constant name="EcalBarrel_CarbonSpacerWidth"    value="4*mm"/>
    <constant name="EcalBarrel_LayerSpacing"         value="10.0*mm"/>
    <constant name="EcalBarrel_FiberRadius"          value="0.5*mm"/>
    <constant name="EcalBarrel_FiberXSpacing"        value="1.34*mm"/>
    <constant name="EcalBarrel_FiberZSpacing"        value="1.22*mm"/>
    <constant name="EcalBarrel_SpaceBetween"         value="0.1*mm"/>
    <comment>
      For Pb/SiFi (GlueX):  X0 ~ 1.45 cm
      For W/SiFi (sPHENIX): X0 ~ 0.7 cm (but different fiber orientation)
    </comment>
    <constant name="EcalBarrel_RadiatorThickness"    value="EcalBarrel_FiberZSpacing*13"/>
    <constant name="EcalBarrel_ModRepeat"            value="CaloSides"/>
    <constant name="EcalBarrel_ModLength"            value="0.5*m"/>
    <constant name="EcalBarrel_ModWidth"             value="0.5*m"/>
    <constant name="EcalBarrel_AvailThickness"       value="EcalBarrelRegion_thickness-EcalBarrel_Support_thickness"/>

    <constant name="EcalBarrel_ImagingLayerThickness"
      value="EcalBarrel_SiliconThickness
      + EcalBarrel_ElectronicsThickness
      + EcalBarrel_CopperThickness
      + EcalBarrel_KaptonThickness
      + EcalBarrel_EpoxyThickness
      + EcalBarrel_CarbonThickness"/>
    <constant name="EcalBarrel_ScFiLayerThickness"
      value="EcalBarrel_RadiatorThickness
      + EcalBarrel_CarbonThickness
      + EcalBarrel_LayerSpacing"/>

    <constant name="EcalBarrelImagingLayers_num"
        value="min(EcalBarrelImagingLayers_nMax,
               floor((EcalBarrel_AvailThickness-EcalBarrel_ImagingLayerThickness)/
                     (EcalBarrel_ImagingLayerThickness + EcalBarrel_ScFiLayerThickness +
                      EcalBarrel_SpaceBetween)))"/>
    <comment>
      Adjusting size of the ScFi back chunk to match number of imiaging layers
      and 20 radiation lengths in total 
    </comment>               
    <constant name="EcalBarrel_FiberChunkLayers_num" value = "20-EcalBarrelImagingLayers_num+1"/>

    <constant name="EcalBarrel_ImagingPartThickness"
        value="(EcalBarrelImagingLayers_num-1)*(EcalBarrel_ImagingLayerThickness + EcalBarrel_ScFiLayerThickness + EcalBarrel_SpaceBetween)
              + EcalBarrel_ImagingLayerThickness + EcalBarrel_SpaceBetween"/>
    <constant name="EcalBarrel_ScFiPartThickness_max"
        value="max(0, EcalBarrel_AvailThickness-EcalBarrel_ImagingPartThickness)"/>
    <constant name="EcalBarrel_ScFiPartThickness"
        value="min(EcalBarrel_ScFiPartThickness_max,
         EcalBarrel_FiberZSpacing*13*EcalBarrel_FiberChunkLayers_num)"/>
    <constant name="EcalBarrel_SensitiveLayers_rmax"
        value="EcalBarrel_rmin + EcalBarrel_ImagingPartThickness + EcalBarrel_ScFiPartThickness"/>
  </define>

  <limits>
  </limits>

  <regions>
  </regions>

  <display>
  </display>

  <detectors>

    <comment>
      ---------------------------------------
      Imaging Layers of Barrel EM Calorimeter
      ---------------------------------------
      Silicon (Astropix) readout layers for imaging 3d showers
    </comment>
    <detector
      id="ECalBarrel_ID"
      name="EcalBarrelImaging"
      type="athena_EcalBarrelInterlayers"
      readout="EcalBarrelHits"
      calorimeterType="EM_BARREL"
      vis="EcalBarrelEnvelopeVis"
      offset="EcalBarrel_offset">
      <dimensions numsides="EcalBarrel_ModRepeat"
        rmin="EcalBarrel_rmin"
        z="EcalBarrel_length"/>
      <layer repeat="EcalBarrelImagingLayers_num" vis="EcalBarrelLayerVis"
        space_between="EcalBarrel_ScFiLayerThickness + EcalBarrel_SpaceBetween"
        space_before="0.*cm">
        <slice material="Silicon" thickness="EcalBarrel_SiliconThickness" sensitive="yes" limits="cal_limits" vis="EcalBarrelSliceVis"/>
        <slice material="Silicon" thickness="EcalBarrel_ElectronicsThickness" vis="EcalBarrelSliceVis"/>
        <slice material="Copper" thickness="EcalBarrel_CopperThickness"       vis="EcalBarrelSliceVis"/>
        <slice material="Kapton" thickness="EcalBarrel_KaptonThickness"       vis="EcalBarrelSliceVis"/>
        <slice material="Epoxy" thickness="EcalBarrel_EpoxyThickness"         vis="EcalBarrelSliceVis"/>
        <slice material="CarbonFiber" thickness="EcalBarrel_CarbonThickness"  vis="EcalBarrelSliceVis"/>
      </layer>
    </detector>

    <comment>
      ---------------------------------------
      Pb/ScFi Layers of Barrel EM Calorimeter
      ---------------------------------------
    </comment>
    <detector
      id="ECalBarrel2_ID"
      name="EcalBarrelScFi"
      type="athena_EcalBarrelInterlayers"
      readout="EcalBarrelScFiHits"
      calorimeterType="EM_BARREL"
      vis="EcalBarrelEnvelopeVis"
      offset="EcalBarrel_offset">
      <dimensions numsides="EcalBarrel_ModRepeat"
        rmin="EcalBarrel_rmin"
        z="EcalBarrel_length"/>
      <staves vis="EcalBarrelStaveVis">
        <support material="Steel235" vis="EcalBarrelSupportVis" n_beams="3" grid_size="25.0*cm"
          thickness="EcalBarrel_Support_thickness" beam_thickness="EcalBarrel_Support_thickness/4" >
        </support>
      </staves>
      <layer repeat="EcalBarrelImagingLayers_num-1" vis="EcalBarrelLayerVis"
       space_between="EcalBarrel_ImagingLayerThickness + EcalBarrel_SpaceBetween"
       space_before="EcalBarrel_ImagingLayerThickness + EcalBarrel_SpaceBetween/2.">
        <slice material="Lead" thickness="EcalBarrel_RadiatorThickness" vis="EcalBarrelFiberLayerVis">
          <fiber material="PlasticScint"
            sensitive="yes"
            radius="EcalBarrel_FiberRadius"
            spacing_x="EcalBarrel_FiberXSpacing"
            spacing_z="EcalBarrel_FiberZSpacing"
            vis="EcalBarrelFiberLayerVis">
          </fiber>
        </slice>
        <slice material="CarbonFiber" thickness="EcalBarrel_CarbonThickness" vis="EcalBarrelSliceVis"/>
        <slice material="Air" thickness="EcalBarrel_LayerSpacing " vis="EcalBarrelSliceVis"/>
      </layer>
      <layer repeat="EcalBarrel_FiberChunkLayers_num" vis="EcalBarrelLayerVis"
          space_before="EcalBarrel_ImagingLayerThickness + EcalBarrel_SpaceBetween">
        <slice material="Lead"
          thickness="EcalBarrel_ScFiPartThickness/EcalBarrel_FiberChunkLayers_num"
          vis="EcalBarrelFiberLayerVis">
          <fiber material="PlasticScint"
            sensitive="yes"
            radius="EcalBarrel_FiberRadius"
            spacing_x="EcalBarrel_FiberXSpacing"
            spacing_z="EcalBarrel_FiberZSpacing"
            vis="EcalBarrelFiberLayerVis">
          </fiber>
        </slice>
      </layer>
    </detector>
  </detectors>

  <readouts>
    <readout name="EcalBarrelHits">
      <segmentation type="CartesianGridXY" grid_size_x="0.5 * mm" grid_size_y="0.5 * mm"/>
      <id>system:8,module:8,layer:8,slice:8,x:32:-16,y:-16</id>
    </readout>
    <readout name="EcalBarrelScFiHits">
      <segmentation type="NoSegmentation"/>
      <id>system:8,module:8,layer:8,slice:8,grid:16,fiber:16</id>
    </readout>
  </readouts>

</lccdd>