<lccdd xmlns:compact="http://www.lcsim.org/schemas/compact/1.0"
       xmlns:xs="http://www.w3.org/2001/XMLSchema"
       xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/compact/1.0/compact.xsd">

       <debug>
         <type name="surface"       value="1"/>
         <type name="material"       value="1"/>
         <type name="readout"       value="1"/>
         <type name="segmentation"  value="1"/>
         <type name="limits"        value="1"/>
         <type name="region"        value="1"/>
         <type name="includes"      value="1"/>
       </debug>

  <documentation level="-1">
  # Athena Detector 
  - https://eicweb.phy.anl.gov/EIC/detectors/athena.git 
  - https://eicweb.phy.anl.gov/EIC/detectors/ip6.git
  </documentation>

  <!-- Some information about detector  -->
  <info name="Athena Detector" title="Athena Detector"
        author="Athena Collaboration"
	url="https://eicweb.phy.anl.gov/EIC/detectors/athena.git"
	status="development"
	version="v1 2021-03-16">
  <comment> Athena </comment>
  </info>
  <define>
  <documentation level="2">
      ## Main Constant Definitions

      The ip6 (or other ip) defines should be included first.
      These files have only a define tags.
  </documentation>
    <include ref="ip6/ip6_defs.xml" /> 
    <include ref="compact/definitions.xml" />
  </define>

  <includes>
    <gdmlFile ref="compact/elements.xml"/>
    <gdmlFile ref="compact/materials.xml"/>
    <file     ref="compact/optical_materials.xml"/>
  </includes>

  <limits>
    <limitset name="EICBeamlineLimits">
      <limit name="step_length_max" particles="*" value="1.0" unit="mm" />
      <limit name="track_length_max" particles="*" value="1.0" unit="mm" />
      <limit name="time_max" particles="*" value="0.1" unit="ns" />
      <limit name="ekin_min" particles="*" value="0.001" unit="MeV" />
      <limit name="range_min" particles="*" value="0.1" unit="mm" />
    </limitset>
    <limitset name="cal_limits">
      <limit name="step_length_max" particles="*" value="5.0" unit="mm"/>
    </limitset>
  </limits>

  <display>
  <include ref="compact/display.xml" />
  </display>

  <documentation level="0">
    ## Detector Subsystems

    ### IP Subsystems

    The interaction point subsystems are included before the central detector subsystems.
    This is becuase the IP subsystems, for exmaple the beampipe, will define paramters
    which are subsquently used in the central detector construction -- e.g. the vertex tracker
    uses the beampipe OD to help define its placement. 

    The IP subsystems include the Far forward and backward regions. The list of subsystem includes:
     - Interaction region beampipe 
     - B0 tracker
     - Off-momentum tracker
     - Far forward roman pots
     - Zero Degree Calorimeter
     - Beam line magnets.
     - and more...
  </documentation>

  <comment>
      Beamline elements
      -----------------
  </comment>
  <include ref="ip6/forward_ion_beamline.xml"/>
  <include ref="ip6/beampipe_hadron_B0.xml" />
  <include ref="ip6/beampipe.xml" />

  <comment>
      Main magnet
      -----------
      Note: When changing magnet, also select dimensions in definitions.xml.
  </comment>
  <include ref="compact/solenoid.xml"/>

  <comment>
      Tracker subassemblies for ACTS
      ------------------------------
  </comment>
  <detectors>
    <detector id="VertexBarrelSubAssembly_ID"
      name="VertexBarrelSubAssembly"
      type="DD4hep_SubdetectorAssembly"
      vis="TrackerSubAssemblyVis">
      <composite name="VertexBarrel" />
    </detector>
    <detector id="VertexEndcapSubAssembly_ID"
      name="VertexEndcapSubAssembly"
      type="DD4hep_SubdetectorAssembly"
      vis="TrackerSubAssemblyVis">
      <composite name="VertexEndcapN" />
      <composite name="VertexEndcapP" />
    </detector>

    <detector id="TrackerBarrelSubAssembly_Inner_ID"
      name="TrackerBarrelSubAssembly_Inner"
      type="DD4hep_SubdetectorAssembly"
      vis="TrackerSubAssemblyVis">
      <composite name="TrackerBarrel_Inner"/>
    </detector>
    <detector id="TrackerEndcapSubAssembly_Inner_ID"
      name="TrackerEndcapSubAssembly_Inner"
      type="DD4hep_SubdetectorAssembly"
      vis="TrackerSubAssemblyVis">
      <composite name="TrackerEndcapN_Inner"/>
      <composite name="TrackerEndcapP_Inner"/>
    </detector>

    <detector id="TrackerBarrelSubAssembly_Outer_ID"
      name="TrackerSubAssembly_Outer"
      type="DD4hep_SubdetectorAssembly"
      vis="TrackerSubAssemblyVis">
      <composite name="TrackerBarrel_Outer"/>
      <composite name="TrackerEndcapP_Outer"/>
      <composite name="TrackerEndcapN_Outer"/>
    </detector>

    <detector id="TOFSubAssembly_ID"
      name="TOFSubAssembly"
      type="DD4hep_SubdetectorAssembly"
      vis="TOFSubAssemblyVis">
      <composite name="BarrelTOF"/>
      <composite name="ForwardTOF"/>
      <composite name="BackwardTOF"/>
    </detector>

  </detectors>

  <comment>
      Central tracking detectors
      --------------------------
  </comment>
  <include ref="compact/vertex_tracker.xml"/>
  <include ref="compact/central_tracker.xml"/>

  <include ref="compact/tof_barrel.xml"/>
  <include ref="compact/tof_endcap.xml"/>
  <!--include ref="compact/rwell_tracker_barrel.xml"-->
  <!--include ref="compact/ce_GEM.xml"/-->
  <!--include ref="compact/mm_tracker_barrel.xml"/-->
  <!--include ref="compact/cb_VTX_Barrel.xml"/-->
  <!--include ref="compact/gem_tracker_endcap.xml"/-->

  <comment>
      PID detectors
      -------------
  </comment>
  <!--include ref="compact/dirc.xml"/-->
  <!--include ref="compact/mrich.xml"/-->
  <include ref="compact/forward_trd.xml"/>
  <include ref="compact/gaseous_rich.xml"/>

  <comment>
      Central calorimetry
      -------------------
  </comment>
  <include ref="compact/ci_ecal.xml"/>
  <!--<include ref="compact/ci_ecal_shashlik.xml"/>-->
  <!--<include ref="compact/ce_ecal.xml"/>-->
  <include ref="compact/ce_ecal_crystal_glass.xml"/>
  <!-- <include ref="compact/ecal_barrel.xml"/> -->
  <!-- <include ref="compact/ecal_barrel_hybrid.xml"/> -->
  <include ref="compact/ecal_barrel_interlayers.xml"/>

  <include ref="compact/hcal.xml"/>


  <comment>
      FF elements
      -----------
  </comment>
  <include ref="ip6/B0_tracker.xml"/>
  <include ref="ip6/B0_preshower.xml"/>
  <include ref="ip6/far_forward_offM_tracker.xml"/>
  <include ref="ip6/far_forward_detectors.xml"/>
  <include ref="ip6/roman_pots_eRD24_design.xml"/>

  <fields>
    <field name="B0PF_Magnet" type="MultipoleMagnet">
      <position x="B0PF_XPosition" y="0" z="B0PF_CenterPosition"/>
      <rotation x="0" y="B0PF_RotationAngle" z="0"/>
      <shape type="Tube" rmin="0.0" rmax="B0PF_InnerRadius" dz="B0PF_Length*0.5"/>
      <coefficient coefficient="B0PF_Bmax" skew="0.0*tesla"/>
      <!--<coefficient coefficient="2.0*tesla/cm" skew="0.2*tesla/cm"/> -->
    </field>
    <field name="B0APF_Magnet" type="MultipoleMagnet">
      <position x="B0APF_XPosition" y="0" z="B0APF_CenterPosition"/>
      <rotation x="0" y="B0APF_RotationAngle" z="0"/>
      <shape type="Tube" rmin="0.0" rmax="B0APF_InnerRadius" dz="B0APF_Length*0.5"/>
      <coefficient coefficient="B0APF_Bmax" skew="0.0*tesla"/>
      <!--<coefficient coefficient="2.0*tesla/cm" skew="0.2*tesla/cm"/> -->
    </field>
    <field name="Q1APF_Magnet" type="MultipoleMagnet">
      <position x="Q1APF_XPosition" y="0" z="Q1APF_CenterPosition"/>
      <rotation x="0" y="Q1APF_RotationAngle" z="0"/>
      <shape type="Tube" rmin="0.0" rmax="Q1APF_InnerRadius" dz="Q1APF_Length*0.5"/>
      <coefficient coefficient="Q1APF_Bmax" skew="0.0*tesla"/>
      <coefficient coefficient="Q1APF_GradientMax" skew="0.0*tesla/cm"/>
    </field>
    <field name="Q1BPF_Magnet" type="MultipoleMagnet">
      <position x="Q1BPF_XPosition" y="0" z="Q1BPF_CenterPosition"/>
      <rotation x="0" y="Q1BPF_RotationAngle" z="0"/>
      <shape type="Tube" rmin="0.0" rmax="Q1BPF_InnerRadius" dz="Q1BPF_Length*0.5"/>
      <coefficient coefficient="Q1BPF_Bmax" skew="0.0*tesla"/>
      <coefficient coefficient="Q1BPF_GradientMax" skew="0.0*tesla/cm"/>
    </field>
    <field name="Q2PF_Magnet" type="MultipoleMagnet">
      <position x="Q2PF_XPosition" y="0" z="Q2PF_CenterPosition"/>
      <rotation x="0" y="Q2PF_RotationAngle" z="pi/2.0"/>
      <shape type="Tube" rmin="0.0" rmax="Q2PF_InnerRadius" dz="Q2PF_Length*0.5"/>
      <coefficient coefficient="Q2PF_Bmax" skew="0.0*tesla"/>
      <coefficient coefficient="Q2PF_GradientMax" skew="0.0*tesla/cm"/>
    </field>
    <field name="B1PF_Magnet" type="MultipoleMagnet">
      <position x="B1PF_XPosition" y="0" z="B1PF_CenterPosition"/>
      <rotation x="0" y="B1PF_RotationAngle" z="0"/>
      <shape type="Tube" rmin="0.0" rmax="B1PF_InnerRadius" dz="B1PF_Length*0.5"/>
      <coefficient coefficient="B1PF_Bmax" skew="0.0*tesla"/>
      <coefficient coefficient="B1PF_GradientMax" skew="0.0*tesla/cm"/>
    </field>
    <field name="B1APF_Magnet" type="MultipoleMagnet">
      <position x="B1APF_XPosition" y="0" z="B1APF_CenterPosition"/>
      <rotation x="0" y="B1APF_RotationAngle" z="0"/>
      <shape type="Tube" rmin="0.0" rmax="B1APF_InnerRadius" dz="B1APF_Length*0.5"/>
      <coefficient coefficient="B1APF_Bmax" skew="0.0*tesla"/>
      <coefficient coefficient="B1APF_GradientMax" skew="0.0*tesla/cm"/>
    </field>
    <field name="B2PF_Magnet" type="MultipoleMagnet">
      <position x="B2PF_XPosition" y="0" z="B2PF_CenterPosition"/>
      <rotation x="0" y="B2PF_RotationAngle" z="0"/>
      <shape type="Tube" rmin="0.0" rmax="B2PF_InnerRadius" dz="B2PF_Length*0.5"/>
      <coefficient coefficient="B2PF_Bmax" skew="0.0*tesla"/>
      <coefficient coefficient="B2PF_GradientMax" skew="0.0*tesla/cm"/>
    </field>
  </fields>

  <comment>
      FB elements
      -----------
      None (TODO)
  </comment>

  <readouts>
  </readouts>

</lccdd>