diff --git a/athena.xml b/athena.xml
index a4c3f87d95a196b3cd7c96d8c10d2e6820426ecf..25eff83ad9b360d30c06ee4fd18d639859677211 100644
--- a/athena.xml
+++ b/athena.xml
@@ -192,8 +192,9 @@
   <!--include ref="compact/rwell_tracker_barrel.xml"/-->
   <include ref="compact/cb_DIRC.xml"/>
 
-
+  <!-- When changing magnet, also select dimensions in definitions.xml. -->
   <include ref="compact/solenoid.xml"/>
+
   <include ref="compact/ecal.xml"/>
   <include ref="compact/hcal.xml"/>
   <!--include ref="compact/ce_GEM.xml"/-->
diff --git a/compact/definitions.xml b/compact/definitions.xml
index 38960a5901ea9f4e6140dece1a590d8ab7aac2f7..829c323624190c5074824133f0cfc6f5dff15ec4 100644
--- a/compact/definitions.xml
+++ b/compact/definitions.xml
@@ -309,13 +309,23 @@
       ==========================
       Solenoid Magnet Parameters
       ==========================
+      When changing here, also change the include file in athena.xml.
     </comment>
 
+    <comment>Solenoid option</comment>
     <constant name="Solenoid_length"           value="3840.0*mm"/>
     <constant name="Solenoid_rmin"             value="1600.0*mm"/>
     <constant name="Solenoid_thickness"        value="640*mm"/>
     <constant name="Solenoid_offset"           value="10*mm"/>
 
+    <comment>Helmholtz option</comment>
+    <comment>
+    <constant name="Solenoid_length"           value="3840.0*mm"/>
+    <constant name="Solenoid_rmin"             value="1665.0*mm"/> <!-- Larger inner bore radius -->
+    <constant name="Solenoid_thickness"        value="640*mm"/>
+    <constant name="Solenoid_offset"           value="10*mm"/>
+    </comment>
+
     <constant name="Solenoid_rmax"             value="Solenoid_rmin + Solenoid_thickness"/>
     <constant name="SolenoidBarrel_rmin"       value="Solenoid_rmin"/>
     <constant name="SolenoidBarrel_length"     value="Solenoid_length"/>
diff --git a/compact/helmholtz.xml b/compact/helmholtz.xml
new file mode 100644
index 0000000000000000000000000000000000000000..91afb0facee0d9b5a21b808da42dfa4d54627ac7
--- /dev/null
+++ b/compact/helmholtz.xml
@@ -0,0 +1,337 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<lccdd>
+  <define>
+    <comment>
+      --------------------------
+      Solenoid Magnet Parameters
+      --------------------------
+    </comment>
+    <comment>Solenoid Barrel Parameters</comment>
+    <constant name="SolenoidBarrelInnerVacuumVesselThickness"   value=" 20.0 * mm"/>
+    <constant name="SolenoidBarrelInnerSecondMLILayerThickness" value=" 20.0 * mm"/>
+    <constant name="SolenoidBarrelInnerThermalShieldThickness"  value=" 10.0 * mm"/>
+    <constant name="SolenoidBarrelInnerFirstMLILayerThickness"  value=" 15.0 * mm"/>
+    <constant name="SolenoidBarrelInnerHeliumVesselThickness"   value=" 20.0 * mm"/>
+    <constant name="SolenoidBarrelInnerHeliumThickness"         value="  0.0 * mm"/> <!-- modification -->
+    <constant name="SolenoidBarrelCoilFormerThickness"          value=" 50.0 * mm"/>
+    <constant name="SolenoidBarrelCoilThickness"                value="210.0 * mm"/> <!-- modification -->
+    <constant name="SolenoidBarrelBlockThickness"               value="210.0 * mm"/> <!-- addition -->
+    <constant name="SolenoidBarrelCoilOverbindThickness"        value="200.0 * mm"/>
+    <constant name="SolenoidBarrelOuterHeliumThickness"         value=" 15.0 * mm"/>
+    <constant name="SolenoidBarrelOuterHeliumVesselThickness"   value=" 10.0 * mm"/>
+    <constant name="SolenoidBarrelOuterFirstMLILayerThickness"  value=" 15.0 * mm"/>
+    <constant name="SolenoidBarrelOuterThermalShieldThickness"  value=" 10.0 * mm"/>
+    <constant name="SolenoidBarrelOuterSecondMLILayerThickness" value=" 20.0 * mm"/>
+    <constant name="SolenoidBarrelOuterVacuumVesselThickness"   value=" 25.0 * mm"/>
+
+    <constant name="SolenoidBarrelInnerVacuumVessel_zmax"   value="1920.0 * mm"/>
+    <constant name="SolenoidBarrelInnerSecondMLILayer_zmax" value="1895.0 * mm"/>
+    <constant name="SolenoidBarrelInnerThermalShield_zmax"  value="1875.0 * mm"/>
+    <constant name="SolenoidBarrelInnerFirstMLILayer_zmax"  value="1855.0 * mm"/>
+    <constant name="SolenoidBarrelInnerHeliumVessel_zmax"   value="1840.0 * mm"/>
+    <constant name="SolenoidBarrelInnerHelium_zmax"         value="1820.0 * mm"/>
+    <constant name="SolenoidBarrelCoilFormer_zmax"          value="1800.0 * mm"/>
+    <constant name="SolenoidBarrelCoil_zmax"                value="1800.0 * mm"/>
+    <constant name="SolenoidBarrelBlock_zmax"               value=" 545.0 * mm"/> <!-- addition -->
+    <constant name="SolenoidBarrelCoilOverbind_zmax"        value="1800.0 * mm"/>
+    <constant name="SolenoidBarrelOuterHelium_zmax"         value="1820.0 * mm"/>
+    <constant name="SolenoidBarrelOuterHeliumVessel_zmax"   value="1840.0 * mm"/>
+    <constant name="SolenoidBarrelOuterFirstMLILayer_zmax"  value="1855.0 * mm"/>
+    <constant name="SolenoidBarrelOuterThermalShield_zmax"  value="1875.0 * mm"/>
+    <constant name="SolenoidBarrelOuterSecondMLILayer_zmax" value="1895.0 * mm"/>
+    <constant name="SolenoidBarrelOuterVacuumVessel_zmax"   value="1920.0 * mm"/>
+
+    <constant name="SolenoidBarrelInnerVacuumVessel_rmin"    value="SolenoidBarrel_rmin"/>
+    <constant name="SolenoidBarrelInnerVacuumVessel_rmax"    value="SolenoidBarrelInnerVacuumVessel_rmin + SolenoidBarrelInnerVacuumVesselThickness"/>
+    <constant name="SolenoidBarrelInnerSecondMLILayer_rmin"  value="SolenoidBarrelInnerVacuumVessel_rmax"/>
+    <constant name="SolenoidBarrelInnerSecondMLILayer_rmax"  value="SolenoidBarrelInnerSecondMLILayer_rmin + SolenoidBarrelInnerSecondMLILayerThickness"/>
+    <constant name="SolenoidBarrelInnerThermalShield_rmin"   value="SolenoidBarrelInnerSecondMLILayer_rmax"/>
+    <constant name="SolenoidBarrelInnerThermalShield_rmax"   value="SolenoidBarrelInnerThermalShield_rmin + SolenoidBarrelInnerThermalShieldThickness"/>
+    <constant name="SolenoidBarrelInnerFirstMLILayer_rmin"   value="SolenoidBarrelInnerThermalShield_rmax"/>
+    <constant name="SolenoidBarrelInnerFirstMLILayer_rmax"   value="SolenoidBarrelInnerFirstMLILayer_rmin + SolenoidBarrelInnerFirstMLILayerThickness"/>
+    <constant name="SolenoidBarrelInnerHeliumVessel_rmin"    value="SolenoidBarrelInnerFirstMLILayer_rmax"/>
+    <constant name="SolenoidBarrelInnerHeliumVessel_rmax"    value="SolenoidBarrelInnerHeliumVessel_rmin + SolenoidBarrelInnerHeliumVesselThickness"/>
+    <constant name="SolenoidBarrelInnerHelium_rmin"          value="SolenoidBarrelInnerHeliumVessel_rmax"/>
+    <constant name="SolenoidBarrelInnerHelium_rmax"          value="SolenoidBarrelInnerHelium_rmin + SolenoidBarrelInnerHeliumThickness"/>
+    <constant name="SolenoidBarrelCoilFormer_rmin"           value="SolenoidBarrelInnerHelium_rmax"/>
+    <constant name="SolenoidBarrelCoilFormer_rmax"           value="SolenoidBarrelCoilFormer_rmin + SolenoidBarrelCoilFormerThickness"/>
+    <constant name="SolenoidBarrelCoil_rmin"                 value="SolenoidBarrelCoilFormer_rmax"/>
+    <constant name="SolenoidBarrelCoil_rmax"                 value="SolenoidBarrelCoil_rmin + SolenoidBarrelCoilThickness"/>
+    <constant name="SolenoidBarrelBlock_rmin"                value="SolenoidBarrelCoilFormer_rmax"/> <!-- addition -->
+    <constant name="SolenoidBarrelBlock_rmax"                value="SolenoidBarrelBlock_rmin + SolenoidBarrelBlockThickness"/> <!-- addition -->
+    <constant name="SolenoidBarrelCoilOverbind_rmin"         value="max(SolenoidBarrelCoil_rmax,SolenoidBarrelBlock_rmax)"/> <!-- modification -->
+    <constant name="SolenoidBarrelCoilOverbind_rmax"         value="SolenoidBarrelCoilOverbind_rmin + SolenoidBarrelCoilOverbindThickness"/>
+    <constant name="SolenoidBarrelOuterHelium_rmin"          value="SolenoidBarrelCoilOverbind_rmax"/>
+    <constant name="SolenoidBarrelOuterHelium_rmax"          value="SolenoidBarrelOuterHelium_rmin + SolenoidBarrelOuterHeliumThickness"/>
+    <constant name="SolenoidBarrelOuterHeliumVessel_rmin"    value="SolenoidBarrelOuterHelium_rmax"/>
+    <constant name="SolenoidBarrelOuterHeliumVessel_rmax"    value="SolenoidBarrelOuterHeliumVessel_rmin + SolenoidBarrelOuterHeliumVesselThickness"/>
+    <constant name="SolenoidBarrelOuterFirstMLILayer_rmin"   value="SolenoidBarrelOuterHeliumVessel_rmax"/>
+    <constant name="SolenoidBarrelOuterFirstMLILayer_rmax"   value="SolenoidBarrelOuterFirstMLILayer_rmin + SolenoidBarrelOuterFirstMLILayerThickness"/>
+    <constant name="SolenoidBarrelOuterThermalShield_rmin"   value="SolenoidBarrelOuterFirstMLILayer_rmax"/>
+    <constant name="SolenoidBarrelOuterThermalShield_rmax"   value="SolenoidBarrelOuterThermalShield_rmin + SolenoidBarrelOuterThermalShieldThickness"/>
+    <constant name="SolenoidBarrelOuterSecondMLILayer_rmin"  value="SolenoidBarrelOuterThermalShield_rmax"/>
+    <constant name="SolenoidBarrelOuterSecondMLILayer_rmax"  value="SolenoidBarrelOuterSecondMLILayer_rmin + SolenoidBarrelOuterSecondMLILayerThickness"/>
+    <constant name="SolenoidBarrelOuterVacuumVessel_rmin"    value="SolenoidBarrelOuterSecondMLILayer_rmax"/>
+    <constant name="SolenoidBarrelOuterVacuumVessel_rmax"    value="SolenoidBarrelOuterVacuumVessel_rmin + SolenoidBarrelOuterVacuumVesselThickness"/>
+
+    <constant name="SolenoidalFieldRadius" 
+              value="(SolenoidBarrelCoil_rmin + SolenoidBarrelCoil_rmax) / 2.0"/>
+
+    <comment> Solenoid Endcap </comment>
+    <comment>At the center, the end caps are outside the barrels</comment>
+    <constant name="SolenoidEndcapCoilEndSupport_rmin" value="SolenoidBarrelCoilFormer_rmin"/>
+    <constant name="SolenoidEndcapCoilEndSupport_rmax" value="SolenoidBarrelCoilOverbind_rmax"/>
+    <constant name="SolenoidEndcapHelium_rmin"         value="SolenoidBarrelInnerHelium_rmin"/>
+    <constant name="SolenoidEndcapHelium_rmax"         value="SolenoidBarrelOuterHelium_rmax"/>
+    <constant name="SolenoidEndcapHeliumVessel_rmin"   value="SolenoidBarrelInnerHeliumVessel_rmin"/>
+    <constant name="SolenoidEndcapHeliumVessel_rmax"   value="SolenoidBarrelOuterHeliumVessel_rmax"/>
+    <constant name="SolenoidEndcapFirstMLILayer_rmin"  value="SolenoidBarrelInnerFirstMLILayer_rmin"/>
+    <constant name="SolenoidEndcapFirstMLILayer_rmax"  value="SolenoidBarrelOuterFirstMLILayer_rmax"/>
+    <comment>Below here, the end caps are inside the barrels</comment>
+    <constant name="SolenoidEndcapThermalShield_rmin"  value="SolenoidBarrelInnerThermalShield_rmax"/>
+    <constant name="SolenoidEndcapThermalShield_rmax"  value="SolenoidBarrelOuterThermalShield_rmin"/>
+    <constant name="SolenoidEndcapSecondMLILayer_rmin" value="SolenoidBarrelInnerSecondMLILayer_rmax"/>
+    <constant name="SolenoidEndcapSecondMLILayer_rmax" value="SolenoidBarrelOuterSecondMLILayer_rmin"/>
+    <constant name="SolenoidEndcapVacuumVessel_rmin"   value="SolenoidBarrelInnerVacuumVessel_rmax"/>
+    <constant name="SolenoidEndcapVacuumVessel_rmax"   value="SolenoidBarrelOuterVacuumVessel_rmin"/>
+
+    <constant name="SolenoidEndcapCoilEndSupport_zmin"     value="1800.0 * mm"/>
+    <constant name="SolenoidEndcapHelium_zmin"             value="1820.0 * mm"/>
+    <constant name="SolenoidEndcapHeliumVessel_zmin"       value="1840.0 * mm"/>
+    <constant name="SolenoidEndcapFirstMLILayer_zmin"      value="1855.0 * mm"/>
+    <constant name="SolenoidEndcapThermalShield_zmin"      value="1865.0 * mm"/>
+    <constant name="SolenoidEndcapSecondMLILayer_zmin"     value="1875.0 * mm"/>
+    <constant name="SolenoidEndcapVacuumVessel_zmin"       value="1895.0 * mm"/>
+    <constant name="SolenoidEndcapCoilEndSupportThickness" value="20.0 * mm"/>
+    <constant name="SolenoidEndcapHeliumThickness"         value="20.0 * mm"/>
+    <constant name="SolenoidEndcapHeliumVesselThickness"   value="10.0 * mm"/>
+    <constant name="SolenoidEndcapFirstMLILayerThickness"  value="10.0 * mm"/>
+    <constant name="SolenoidEndcapThermalShieldThickness"  value="10.0 * mm"/>
+    <constant name="SolenoidEndcapSecondMLILayerThickness" value="20.0 * mm"/>
+    <constant name="SolenoidEndcapVacuumVesselThickness"   value="25.0 * mm"/>
+  </define>
+
+  <detectors>
+    <comment>
+      ---------------
+      Solenoid Magnet
+      ---------------
+      The solenoid superconducting magnet and surrounding cryostat and
+      yoke endcaps.
+    </comment>
+    <detector 
+      id="Solenoid_ID"
+      name="SolenoidCoilBarrel" 
+      type="refdet_SolenoidCoil" 
+      insideTrackingVolume="false">
+      <position x="0" y="0" z="Solenoid_offset"/>
+      <layer id="1" 
+        inner_r="SolenoidBarrelInnerVacuumVessel_rmin" 
+        outer_z="SolenoidBarrelInnerVacuumVessel_zmax" 
+        vis="SolenoidCryostatVis">
+        <slice material="Steel235" thickness="SolenoidBarrelInnerVacuumVesselThickness"/>
+      </layer>
+      <layer id="2" 
+        inner_r="SolenoidBarrelInnerSecondMLILayer_rmin" 
+        outer_z="SolenoidBarrelInnerSecondMLILayer_zmax" 
+        vis="SolenoidCryostatVis">
+        <slice material="Vacuum" thickness="SolenoidBarrelInnerSecondMLILayerThickness"/>
+      </layer>
+      <layer id="3" 
+        inner_r="SolenoidBarrelInnerThermalShield_rmin" 
+        outer_z="SolenoidBarrelInnerThermalShield_zmax" 
+        vis="SolenoidCryostatVis">
+        <slice material="Copper" thickness="SolenoidBarrelInnerThermalShieldThickness"/>
+      </layer>
+      <layer id="4" 
+        inner_r="SolenoidBarrelInnerFirstMLILayer_rmin" 
+        outer_z="SolenoidBarrelInnerFirstMLILayer_zmax" 
+        vis="SolenoidCryostatVis">
+        <slice material="Vacuum" thickness="SolenoidBarrelInnerFirstMLILayerThickness"/>
+      </layer>
+      <layer id="5" 
+        inner_r="SolenoidBarrelInnerHeliumVessel_rmin" 
+        outer_z="SolenoidBarrelInnerHeliumVessel_zmax" 
+        vis="SolenoidCryostatVis">
+        <slice material="Steel235" thickness="SolenoidBarrelInnerHeliumVesselThickness"/>
+      </layer>
+
+      <layer id="6" 
+        inner_r="SolenoidBarrelInnerHelium_rmin" 
+        outer_z="SolenoidBarrelInnerHelium_zmax" 
+        vis="SolenoidCryostatVis">
+        <slice material="Helium" thickness="SolenoidBarrelInnerHeliumThickness"/>
+      </layer>
+
+      <layer id="7" 
+        inner_r="SolenoidBarrelCoilFormer_rmin" 
+        outer_z="SolenoidBarrelCoilFormer_zmax" 
+        vis="SolenoidCryostatVis">
+        <slice material="Steel235" thickness="SolenoidBarrelCoilFormerThickness"/>
+      </layer>
+      <layer id="8" 
+        inner_r="SolenoidBarrelCoil_rmin" 
+        outer_z="max(SolenoidBarrelCoil_zmax,SolenoidBarrelBlock_zmax)" 
+        vis="SolenoidCryostatVis">
+        <slice material="Copper"   thickness="SolenoidBarrelCoilThickness"  outer_z="SolenoidBarrelCoil_zmax" inner_z="SolenoidBarrelBlock_zmax"/>
+        <slice material="Steel235" thickness="SolenoidBarrelBlockThickness" outer_z="SolenoidBarrelBlock_zmax"/>
+      </layer>
+      <layer id="9" 
+        inner_r="SolenoidBarrelCoilOverbind_rmin" 
+        outer_z="SolenoidBarrelCoilOverbind_zmax" 
+        vis="SolenoidCryostatVis">
+        <slice material="Steel235" thickness="SolenoidBarrelCoilOverbindThickness"/>
+      </layer>
+
+      <layer id="10" 
+        inner_r="SolenoidBarrelOuterHelium_rmin" 
+        outer_z="SolenoidBarrelOuterHelium_zmax" 
+        vis="SolenoidCryostatVis">
+        <slice material="Helium" thickness="SolenoidBarrelOuterHeliumThickness"/>
+      </layer>
+
+      <layer id="11" 
+        inner_r="SolenoidBarrelOuterHeliumVessel_rmin" 
+        outer_z="SolenoidBarrelOuterHeliumVessel_zmax" 
+        vis="SolenoidCryostatVis">
+        <slice material="Steel235" thickness="SolenoidBarrelOuterHeliumVesselThickness"/>
+      </layer>
+      <layer id="12" 
+        inner_r="SolenoidBarrelOuterFirstMLILayer_rmin" 
+        outer_z="SolenoidBarrelOuterFirstMLILayer_zmax" 
+        vis="SolenoidCryostatVis">
+        <slice material="Vacuum" thickness="SolenoidBarrelOuterFirstMLILayerThickness"/>
+      </layer>
+      <layer id="13" 
+        inner_r="SolenoidBarrelOuterThermalShield_rmin" 
+        outer_z="SolenoidBarrelOuterThermalShield_zmax" 
+        vis="SolenoidCryostatVis">
+        <slice material="Copper" thickness="SolenoidBarrelOuterThermalShieldThickness"/>
+      </layer>
+      <layer id="14" 
+        inner_r="SolenoidBarrelOuterSecondMLILayer_rmin" 
+        outer_z="SolenoidBarrelOuterSecondMLILayer_zmax" 
+        vis="SolenoidCryostatVis">
+        <slice material="Vacuum" thickness="SolenoidBarrelOuterSecondMLILayerThickness"/>
+      </layer>
+      <layer id="15" 
+        inner_r="SolenoidBarrelOuterVacuumVessel_rmin" 
+        outer_z="SolenoidBarrelOuterVacuumVessel_zmax" 
+        vis="SolenoidCryostatVis">
+        <slice material="Steel235" thickness="SolenoidBarrelOuterVacuumVesselThickness"/>
+      </layer>
+    </detector>
+
+    <detector 
+      id="Solenoid_ID"
+      name="SolenoidCoilEndcapP"
+      type="ref_SolenoidEndcap"
+      insideTrackingVolume="false"
+      reflect="false"
+      vis="SolenoidCryostatVis">
+      <position x="0" y="0" z="Solenoid_offset"/>
+      <layer id="1" 
+        inner_z="SolenoidEndcapCoilEndSupport_zmin" 
+        inner_r="SolenoidEndcapCoilEndSupport_rmin" 
+        outer_r="SolenoidEndcapCoilEndSupport_rmax">
+        <slice material="Steel235" thickness="SolenoidEndcapCoilEndSupportThickness"/>
+      </layer>
+      <layer id="2" 
+        inner_z="SolenoidEndcapHelium_zmin" 
+        inner_r="SolenoidEndcapHelium_rmin" 
+        outer_r="SolenoidEndcapHelium_rmax">
+        <slice material="Helium" thickness="SolenoidEndcapHeliumThickness"/>
+      </layer>
+      <layer id="3" 
+        inner_z="SolenoidEndcapHeliumVessel_zmin" 
+        inner_r="SolenoidEndcapHeliumVessel_rmin" 
+        outer_r="SolenoidEndcapHeliumVessel_rmax">
+        <slice material="Steel235" thickness="SolenoidEndcapHeliumVesselThickness"/>
+      </layer>
+      <layer id="4" 
+        inner_z="SolenoidEndcapFirstMLILayer_zmin" 
+        inner_r="SolenoidEndcapFirstMLILayer_rmin" 
+        outer_r="SolenoidEndcapFirstMLILayer_rmax">
+        <slice material="Vacuum" thickness="SolenoidEndcapFirstMLILayerThickness"/>
+      </layer>
+      <layer id="5" 
+        inner_z="SolenoidEndcapThermalShield_zmin" 
+        inner_r="SolenoidEndcapThermalShield_rmin" 
+        outer_r="SolenoidEndcapThermalShield_rmax">
+        <slice material="Copper" thickness="SolenoidEndcapThermalShieldThickness"/>
+      </layer>
+      <layer id="6" 
+        inner_z="SolenoidEndcapSecondMLILayer_zmin" 
+        inner_r="SolenoidEndcapSecondMLILayer_rmin" 
+        outer_r="SolenoidEndcapSecondMLILayer_rmax">
+        <slice material="Vacuum" thickness="SolenoidEndcapSecondMLILayerThickness"/>
+      </layer>
+      <layer id="7" 
+        inner_z="SolenoidEndcapVacuumVessel_zmin" 
+        inner_r="SolenoidEndcapVacuumVessel_rmin" 
+        outer_r="SolenoidEndcapVacuumVessel_rmax">
+        <slice material="Steel235" thickness="SolenoidEndcapVacuumVesselThickness"/>
+      </layer>
+    </detector>
+
+    <detector 
+      id="Solenoid_ID"
+      name="SolenoidCoilEndcapN"
+      type="ref_SolenoidEndcap"
+      insideTrackingVolume="false"
+      reflect="true"
+      vis="SolenoidCryostatVis">
+      <position x="0" y="0" z="Solenoid_offset"/>
+      <layer id="1" 
+        inner_z="SolenoidEndcapCoilEndSupport_zmin" 
+        inner_r="SolenoidEndcapCoilEndSupport_rmin" 
+        outer_r="SolenoidEndcapCoilEndSupport_rmax">
+        <slice material="Steel235" thickness="SolenoidEndcapCoilEndSupportThickness"/>
+      </layer>
+      <layer id="2" 
+        inner_z="SolenoidEndcapHelium_zmin" 
+        inner_r="SolenoidEndcapHelium_rmin" 
+        outer_r="SolenoidEndcapHelium_rmax">
+        <slice material="Helium" thickness="SolenoidEndcapHeliumThickness"/>
+      </layer>
+      <layer id="3" 
+        inner_z="SolenoidEndcapHeliumVessel_zmin" 
+        inner_r="SolenoidEndcapHeliumVessel_rmin" 
+        outer_r="SolenoidEndcapHeliumVessel_rmax">
+        <slice material="Steel235" thickness="SolenoidEndcapHeliumVesselThickness"/>
+      </layer>
+      <layer id="4" 
+        inner_z="SolenoidEndcapFirstMLILayer_zmin" 
+        inner_r="SolenoidEndcapFirstMLILayer_rmin" 
+        outer_r="SolenoidEndcapFirstMLILayer_rmax">
+        <slice material="Vacuum" thickness="SolenoidEndcapFirstMLILayerThickness"/>
+      </layer>
+      <layer id="5" 
+        inner_z="SolenoidEndcapThermalShield_zmin" 
+        inner_r="SolenoidEndcapThermalShield_rmin" 
+        outer_r="SolenoidEndcapThermalShield_rmax">
+        <slice material="Copper" thickness="SolenoidEndcapThermalShieldThickness"/>
+      </layer>
+      <layer id="6" 
+        inner_z="SolenoidEndcapSecondMLILayer_zmin" 
+        inner_r="SolenoidEndcapSecondMLILayer_rmin" 
+        outer_r="SolenoidEndcapSecondMLILayer_rmax">
+        <slice material="Vacuum" thickness="SolenoidEndcapSecondMLILayerThickness"/>
+      </layer>
+      <layer id="7" 
+        inner_z="SolenoidEndcapVacuumVessel_zmin" 
+        inner_r="SolenoidEndcapVacuumVessel_rmin" 
+        outer_r="SolenoidEndcapVacuumVessel_rmax">
+        <slice material="Steel235" thickness="SolenoidEndcapVacuumVesselThickness"/>
+      </layer>
+    </detector>
+
+  </detectors>
+
+  <fields>
+    <field type="solenoid" name="GlobalSolenoid" inner_field="3.0 * tesla" outer_field="0.5*tesla" 
+           zmin="-SolenoidBarrelCoil_zmax" zmax="SolenoidBarrelCoil_zmax" 
+           inner_radius="SolenoidalFieldRadius" outer_radius="SolenoidalFieldRadius+20*cm"/>
+  </fields>
+
+</lccdd>
diff --git a/src/ref_SolenoidCoil_geo.cpp b/src/ref_SolenoidCoil_geo.cpp
index d4cdb6ddba7d6da4edc60fe7ebd976ece64d4550..91b94a2b9b6968390ad837b96de5fbca32bd5586 100644
--- a/src/ref_SolenoidCoil_geo.cpp
+++ b/src/ref_SolenoidCoil_geo.cpp
@@ -33,34 +33,45 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
   for(xml_coll_t i(x_det,_U(layer)); i; ++i, ++n)  {
     xml_comp_t x_layer = i;
     string  l_name = det_name+_toString(n,"_layer%d");
-    double  z    = x_layer.outer_z();
+    double  outer_z = x_layer.outer_z();
     double  rmin = x_layer.inner_r();
     double  r    = rmin;
     DetElement layer(sdet,_toString(n,"layer%d"),x_layer.id());
-    Tube    l_tub (rmin,2*rmin,z);
+    Tube    l_tub (rmin,2*rmin,outer_z);
     Volume  l_vol(l_name,l_tub,air);
     int im = 0;
 
     for(xml_coll_t j(x_layer,_U(slice)); j; ++j, ++im)  {
+      // If slices are only given a thickness attribute, they are radially concentric slices
+      // If slices are given an inner_z attribute, they are longitudinal slices with equal rmin
       xml_comp_t x_slice = j;
       Material mat = description.material(x_slice.materialStr());
       string s_name= l_name+_toString(im,"_slice%d");
       double thickness = x_slice.thickness();
-      Tube   s_tub(r,r+thickness,z,2*M_PI);
+      double s_outer_z = dd4hep::getAttrOrDefault(x_slice, _Unicode(outer_z), outer_z);
+      double s_inner_z = dd4hep::getAttrOrDefault(x_slice, _Unicode(inner_z), 0.0*dd4hep::cm);
+      Tube   s_tub(r,r+thickness,(s_inner_z > 0? 0.5*(s_outer_z-s_inner_z): s_outer_z),2*M_PI);
       Volume s_vol(s_name, s_tub, mat);
 
-      r += thickness;
       if ( x_slice.isSensitive() ) {
         sens.setType("tracker");
         s_vol.setSensitiveDetector(sens);
       }
       // Set Attributes
       s_vol.setAttributes(description,x_slice.regionStr(),x_slice.limitsStr(),x_slice.visStr());
-      pv = l_vol.placeVolume(s_vol);
+      if (s_inner_z > 0) {
+        // Place off-center volumes twice
+        Position s_pos(0, 0, 0.5*(s_outer_z+s_inner_z));
+        pv = l_vol.placeVolume(s_vol, -s_pos);
+        pv = l_vol.placeVolume(s_vol, +s_pos);
+      } else {
+        r += thickness;
+        pv = l_vol.placeVolume(s_vol);
+      }
       // Slices have no extra id. Take the ID of the layer!
       pv.addPhysVolID("slice",im);
     }
-    l_tub.setDimensions(rmin,r,z);
+    l_tub.setDimensions(rmin,r,outer_z);
     //cout << l_name << " " << rmin << " " << r << " " << z << endl;
     l_vol.setVisAttributes(description,x_layer.visStr());