<lccdd>

    <display>
    <vis name="EcalBarrelEnvelope_vis"   alpha="0.9" r="0.99" g="0.5" b="0" showDaughters="true" visible="false" />
    <vis name="EcalBarrelStave_vis"      alpha="0.9" r="0.99" g="0.5" b="0" showDaughters="true" visible="false" />
    <vis name="EcalBarrelFiberLayer_vis" alpha="0.9" r="0.1" g="0.5" b="0.5" showDaughters="false" visible="true" />
    </display>
  <define>
    <comment>
      ---------------------------------------
      EM Calorimeter Parameters with AstroPix
      ---------------------------------------
    </comment>
    <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"/>
    <constant name="EcalBarrel_FiberChunkLayers_num" value = "15"/>
    <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="EcalBarrel_TotalThickness-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_nMax"  value="6"/>
    <constant name="EcalBarrelImagingLayers_num"
        value="min(EcalBarrelImagingLayers_nMax,
               floor(EcalBarrel_AvailThickness/
                     (EcalBarrel_ImagingLayerThickness+EcalBarrel_RadiatorThickness+EcalBarrel_SpaceBetween)))"/>
    <constant name="EcalBarrel_FiberLayerThickness_max"
        value="max(0, EcalBarrel_AvailThickness-
               (EcalBarrelImagingLayers_num*EcalBarrel_ImagingLayerThickness))"/>
    <constant name="EcalBarrel_FiberLayerThickness"
        value="min(EcalBarrel_FiberLayerThickness_max, EcalBarrel_FiberZSpacing*13*15)"/>
  </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="EcalBarrelEnvelope_vis"
      offset="EcalBarrel_offset">
      <dimensions numsides="EcalBarrel_ModRepeat"
        rmin="EcalBarrel_rmin"
        z="EcalBarrel_length"/>
      <layer repeat="EcalBarrelImagingLayers_num" vis="AnlBlue"
        space_between="EcalBarrel_ScFiLayerThickness + EcalBarrel_SpaceBetween"
        space_before="0.*cm">
        <slice material="Silicon" thickness="EcalBarrel_SiliconThickness" sensitive="yes" limits="cal_limits" vis="AnlGray"/>
        <slice material="Silicon" thickness="EcalBarrel_ElectronicsThickness" vis="AnlGold"/>
        <slice material="Copper" thickness="EcalBarrel_CopperThickness" vis="AnlGray"/>
        <slice material="Kapton" thickness="EcalBarrel_KaptonThickness" vis="AnlGold"/>
        <slice material="Epoxy" thickness="EcalBarrel_EpoxyThickness" vis="AnlGray"/>
        <slice material="CarbonFiber" thickness="EcalBarrel_CarbonThickness" vis="AnlGold"/>
      </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="EcalBarrelEnvelope_vis"
      offset="EcalBarrel_offset">
      <dimensions numsides="EcalBarrel_ModRepeat"
        rmin="EcalBarrel_rmin"
        z="EcalBarrel_length"/>
      <staves vis="EcalBarrelStave_vis">
        <support material="Steel235" vis="AnlOrange" 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="AnlBlue"
       space_between="EcalBarrel_ImagingLayerThickness + EcalBarrel_SpaceBetween"
       space_before="EcalBarrel_ImagingLayerThickness + EcalBarrel_SpaceBetween/2.">
        <slice material="Lead" thickness="EcalBarrel_RadiatorThickness" vis="EcalBarrelFiberLayer_vis">
          <fiber material="PlasticScint"
            sensitive="yes"
            radius="EcalBarrel_FiberRadius"
            spacing_x="EcalBarrel_FiberXSpacing"
            spacing_z="EcalBarrel_FiberZSpacing"/>
        </slice>
        <slice material="CarbonFiber" thickness="EcalBarrel_CarbonThickness" vis="AnlGold"/>
        <slice material="Air" thickness="EcalBarrel_LayerSpacing " vis="AnlGold"/>
      </layer>
      <layer repeat="EcalBarrel_FiberChunkLayers_num" vis="AnlBlue"
          space_before="EcalBarrel_ImagingLayerThickness + EcalBarrel_SpaceBetween">
        <slice material="Lead"
          thickness="EcalBarrel_FiberLayerThickness/EcalBarrel_FiberChunkLayers_num"
          vis="EcalBarrelFiberLayer_vis">
          <fiber material="PlasticScint"
            sensitive="yes"
            radius="EcalBarrel_FiberRadius"
            spacing_x="EcalBarrel_FiberXSpacing"
            spacing_z="EcalBarrel_FiberZSpacing"/>
        </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>