diff --git a/compact/definitions.xml b/compact/definitions.xml
new file mode 100644
index 0000000000000000000000000000000000000000..67b8717c096197450ca6764abbd43bd9f2bddb0d
--- /dev/null
+++ b/compact/definitions.xml
@@ -0,0 +1,451 @@
+  <define>
+    <comment>Although not explicit in the design study, the eRHIC crossing angle is not symmetric.</comment>
+    <constant name="CrossingAngle" value="0.025"/>
+    <constant name="ionCrossingAngle" value="0.0166667"/>
+    <constant name="electronCrossingAngle" value="0.00833333"/>
+    <constant name="CrossingSlope" value="0.0166682"/>
+
+    <constant name="Pi" value="3.14159265359"/>
+    <constant name="world_side" value="30*m"/>
+    <constant name="world_x" value="world_side"/>
+    <constant name="world_y" value="world_side"/>
+    <constant name="world_z" value="100*m"/>
+
+    <constant name="mil" value="0.0254*mm"/>
+
+    <comment>
+      ------------
+      Detector IDs
+      ------------
+
+      Note about ACTS tracking geometry construction
+      ----------------------------------------------
+
+      The tracking surfaces need to be structured in a barrel + endcapP + endcapN where 
+      endcapP/endcapN are the endcaps at positive/negative z values. 
+      See https://acts.readthedocs.io/en/latest/plugins/dd4hep.html for more details.
+
+      The tracking geometry needs to beconstructed from cylinders from the inside out. For this reason
+      each layer needs its own subsystem assembly. This increases the number of top level system IDs. 
+      For example the silicon tracker needs 3 IDs for each area (endcap+barrel+endcap) and a subassembly for each
+      layer. Therefore it needs a minimum of 20 IDs. Therefore we will allocate blocks of ~25 for each major subsystem.
+      Note, future improvements will likely include a more sophisticated ACTS-dd4hep plugin, 
+      eliminating the need for so many system IDs at construction time.
+
+      This barrel/endcap structure needs IDs to be in increasing order going outward. 
+      The space of IDs for the subassemblies starts at (Subassembly_ID*10+101).
+
+      The unused IDs below are saved for future use.
+    </comment>
+
+
+    <comment> 
+      ===================
+      (1-9) Reserved IDs
+      ===================
+      Unused IDs: 1-9 
+
+      ====================================
+      (10-24) Interaction region beamline 
+      ====================================
+
+      Beampipe ID : 10
+      Unused   IDs: 11-24
+
+    </comment> 
+    <constant name="BeamPipe_ID" value="10"/>
+
+
+    <comment> 
+      ===============================
+      (25-49) Silicon Vertex Tracker
+      ===============================
+      SiVertex subsystem  ID: 25 
+      Layer 1 subassembly ID: 26
+      Layer 2 subassembly ID: 27
+      Layer 3 subassembly ID: 28
+      Layer 4 subassembly ID: 29
+      Layer 5 subassembly ID: 30
+    </comment>
+    <constant name="SiVertexSubAssembly_ID" value="25"/>
+    <comment>
+      Unused values reserved for vertex:
+      constant name="SiVertexSubAssemblyLayer1_ID" value="121"
+      constant name="SiVertexSubAssemblyLayer2_ID" value="122"
+      constant name="SiVertexSubAssemblyLayer3_ID" value="123"
+      constant name="SiVertexSubAssemblyLayer4_ID" value="124"
+      constant name="SiVertexSubAssemblyLayer5_ID" value="125"
+    </comment>
+
+    <comment>
+      ===============================
+      (50-74) Silicon Tracker System
+      ===============================
+
+      SiTracker subsystem  ID: 50
+      Layer 1 subassembly  ID: 51      
+      Layer 2 subassembly  ID: 52      
+      Layer 3 subassembly  ID: 53
+      Layer 4 subassembly  ID: 54
+      Layer 5 subassembly  ID: 55
+
+      (56-70) etc...
+
+      Unused IDs: 71-74
+
+    </comment>
+
+    <constant name="SiTrackerSubAssembly_ID" value="50"/>
+    <constant name="SiTrackerSubAssemblyLayer1_ID" value="51"/>
+    <constant name="SiTrackerSubAssemblyLayer2_ID" value="52"/>
+    <constant name="SiTrackerSubAssemblyLayer3_ID" value="53"/>
+    <constant name="SiTrackerSubAssemblyLayer4_ID" value="54"/>
+    <constant name="SiTrackerSubAssemblyLayer5_ID" value="55"/>
+
+    <constant name="SiTrackerBarrel_Layer1_ID"      value="56"/>
+    <constant name="SiTrackerEndcapP_Layer1_ID"     value="57"/>
+    <constant name="SiTrackerEndcapN_Layer1_ID"     value="58"/>
+
+    <constant name="SiTrackerBarrel_Layer2_ID"      value="59"/>
+    <constant name="SiTrackerEndcapP_Layer2_ID"     value="60"/>
+    <constant name="SiTrackerEndcapN_Layer2_ID"     value="61"/>
+
+    <constant name="SiTrackerBarrel_Layer3_ID"      value="62"/>
+    <constant name="SiTrackerEndcapP_Layer3_ID"     value="63"/>
+    <constant name="SiTrackerEndcapN_Layer3_ID"     value="64"/>
+
+    <constant name="SiTrackerBarrel_Layer4_ID"      value="65"/>
+    <constant name="SiTrackerEndcapP_Layer4_ID"     value="66"/>
+    <constant name="SiTrackerEndcapN_Layer4_ID"     value="67"/>
+
+    <constant name="SiTrackerBarrel_Layer5_ID"      value="68"/>
+    <constant name="SiTrackerEndcapP_Layer5_ID"     value="69"/>
+    <constant name="SiTrackerEndcapN_Layer5_ID"     value="70"/>
+
+    <comment> 
+    ===================
+    (75-99 Reserved IDs
+    ===================
+
+    Unused IDs: 75-99 
+    TBD 
+    </comment>
+
+    <comment> 
+      =====================================
+      (100-109) Electromagnetic Calorimeter
+      =====================================
+
+      ECal     subsystem  ID:  100
+      Barrel   subassembly ID: 101
+      EndcapP  subassembly ID: 102
+      EndcapN  subassembly ID: 103
+      Crystal  subassembly ID: 104
+
+      Unused IDs: 105-109
+
+    </comment>
+    <constant name="ECalSubAssembly_ID" value="100"/>
+    <constant name="ECalBarrel_ID"      value="101"/>
+    <constant name="ECalEndcapP_ID"     value="102"/>
+    <constant name="ECalEndcapN_ID"     value="103"/>
+    <constant name="CrystalEndcap_ID"   value="104"/>
+
+    <comment> 
+      =====================================
+      (110-119Hadronic Calorimeter
+      =====================================
+
+      HCal     subsystem  ID:  110
+      Barrel   subassembly ID: 111
+      EndcapP  subassembly ID: 112
+      EndcapN  subassembly ID: 113
+
+      Unused IDs: 114-119
+    </comment>
+    <constant name="HCalSubAssembly_ID" value="110"/>
+    <constant name="HCalBarrel_ID"      value="111"/>
+    <constant name="HCalEndcapP_ID"     value="112"/>
+    <constant name="HCalEndcapN_ID"     value="113"/>
+
+    <comment> 
+      =====================================
+      (120-129) (near) Forward reserved
+      =====================================
+
+      Forwardtracking ID: 120
+      Forward RICH    ID: 121
+
+      Unused IDs: 122-129
+    </comment>
+    <constant name="ForwardTracking_ID" value="120"/>
+    <constant name="ForwardRICH_ID"     value="121"/>
+
+    <comment> 
+      =====================================
+      (130-139) Backward reserved
+      =====================================
+
+      TBD
+
+    </comment>
+
+    <comment> 
+      =====================================
+      (140-149) Central Magnet
+      =====================================
+
+      Solenoid         ID: 140
+      Solenoid support ID: 141
+      Solenoid Yoke    ID: 142
+
+      Unused IDs: 143-149
+
+    </comment>
+    <constant name="Solenoid_ID"             value="140"/>
+    <constant name="SolenoidSupport_ID"      value="141"/>
+    <constant name="SolenoidYoke_ID"         value="142"/>
+
+    <comment> 
+      =====================================
+      (150-169) Far Forward  Detectors
+      =====================================
+
+      Forward Roman Pot ID: 150
+      Zero Degree Cal.  ID: 160
+
+    </comment>
+    <constant name="ForwardRomanPot_ID" value="150"/>
+    <constant name="ZDC_ID"             value="160"/>
+
+    <comment> 
+      =====================================
+      (170-189) Forward Beamline Magnets
+      =====================================
+    </comment>
+
+    <comment> 
+      =====================================
+      (190-199) Backward Beamline Magnets
+      =====================================
+    </comment>
+
+    <comment>
+      --------------------------
+      Solenoid Magnet Parameters
+      --------------------------
+    </comment>
+    <constant name="Solenoid_thickness"      value="400*mm"/>
+    <constant name="Solenoid_rmin"           value="2000.0*mm"/>
+    <constant name="Solenoid_rmax"           value="Solenoid_rmin + Solenoid_thickness"/>
+    <constant name="SolenoidLength"          value="4050.0*mm"/>
+
+    <constant name="SolenoidBarrelCryostatThickness"      value=" 1.0 * cm"/>
+    <constant name="SolenoidBarrelGapThickness"           value=" 3.3 * cm"/>
+    <constant name="SolenoidBarrelAlConductorThickness"   value="12.0 * cm"/>
+    <constant name="SolenoidBarrelQuenchbackThickness"    value=" 1.5 * cm"/>
+    <constant name="SolenoidBarrelOuterGapThickness"      value=" 5.6 * cm"/>
+    <constant name="SolenoidBarrelOuterCryostatThickness" value=" 1.2 * cm"/>
+
+    <constant name="SolenoidEndPlateGapThickness"           value=" 5.7 * cm"/>
+    <constant name="SolenoidEndPlateCryostatThickness"      value=" 1.5 * cm"/>
+
+    <constant name="SolenoidBarrel_rmin"     value="Solenoid_rmin"/>
+    <constant name="SolenoidBarrelLenth"     value="SolenoidLength"/>
+    <constant name="SolenoidBarrel_zmax"     value="SolenoidBarrelLenth/2.0"/>
+
+    <constant name="SolenoidCoilConductor_rmin" 
+              value="SolenoidBarrel_rmin + SolenoidBarrelCryostatThickness + SolenoidBarrelGapThickness"/>
+    <constant name="SolenoidCoilConductor_rmax" 
+              value="SolenoidCoilConductor_rmin + SolenoidBarrelAlConductorThickness + SolenoidBarrelQuenchbackThickness"/>
+    <constant name="SolenoidBarrel_rmax" 
+              value="SolenoidCoilConductor_rmax + SolenoidBarrelOuterGapThickness + SolenoidBarrelOuterCryostatThickness"/>
+
+    <constant name="SolenoidCoil_zmax" 
+              value="SolenoidBarrel_zmax - SolenoidEndPlateCryostatThickness - SolenoidEndPlateGapThickness"/>
+
+    <constant name="SolenoidalFieldRadius" 
+              value="SolenoidCoilConductor_rmin + SolenoidBarrelAlConductorThickness / 2.0"/>
+
+    <constant name="SolenoidCoilLength" value="SolenoidCoil_zmax*2.0"/>
+
+    <constant name="SolenoidThickness"           value="Solenoid_rmax - Solenoid_rmin"/>
+
+    <constant name="SolenoidYokeEndcapP_rmin"     value="800*mm"/>
+    <constant name="SolenoidYokeEndcapN_rmin"     value="800*mm"/>
+    <constant name="SolenoidYokeEndcapThickness"  value="0.2 * m"/>
+    <constant name="SolenoidYokeEndcap_zmin"      value="SolenoidBarrel_zmax"/>
+    <constant name="SolenoidYokeEndcap_zmax"      value="SolenoidYokeEndcap_zmin + SolenoidYokeEndcapThickness"/>
+
+    <constant name="SolenoidYokeChamferAngle"    value="0.2"/>
+
+    <comment>
+      ============================
+      Tracking Parameters
+      ============================
+    </comment>
+    <constant name="tracker_region_rmax"            value="Solenoid_rmax/2.0"/>
+    <constant name="tracker_region_zmax"            value="SolenoidLength/2.0"/>
+
+    <comment>
+      -------------------------
+      Vertex Tracker Parameters
+      -------------------------
+    </comment>
+    <constant name="VertexTrackerInnerRadius"       value="30.0*mm"/>
+    <constant name="VertexTrackerOuterRadius"       value="Solenoid_rmin/2.0"/>
+    <constant name="VertexTrackerOuterBarrelLength" value="300.0*mm"/>
+
+
+    <comment>
+      --------------------------
+      Silicon Tracker Parameters
+      --------------------------
+    </comment>
+    <constant name="SiliconTrackerInnerRadius"       value="95.0*mm"/>
+    <constant name="SiliconTrackerInnerBarrelLength" value="400.0*mm"/>
+    <constant name="SiliconTrackerOuterRadius"       value="Solenoid_rmax/2.0"/>
+    <constant name="SiliconTrackerOuterBarrelLength" value="SolenoidLength/2.0"/>
+
+    <comment>
+      ------------
+      Calorimeters
+      ------------
+    </comment>
+    <constant name="EcalBarrel_rmin"                       value="SiliconTrackerOuterRadius + 3.0 * cm"/>
+    <constant name="HcalBarrel_rmax"                       value="Solenoid_rmin - 5.0 *cm "/>
+    <constant name="AvailTotalBarrelCalorimetryThickness"  value="HcalBarrel_rmax - EcalBarrel_rmin"/>
+    <constant name="CalBarrelDivider"                      value="0.5"/> <comment> Ecal and Hcal have the same thickness </comment>
+    <constant name="EcalBarrelAvailTotalThickness"         value="AvailTotalBarrelCalorimetryThickness * CalBarrelDivider"/>
+    <constant name="HcalBarrelAvailTotalThickness"         value="AvailTotalBarrelCalorimetryThickness * (1.0 - CalBarrelDivider)"/>
+
+    <constant name="EcalBarrelLength"                      value="SiliconTrackerOuterBarrelLength+50.0*cm"/>
+    <constant name="EcalEndcap_zmin"                       value="EcalBarrelLength/2.0"/>
+
+    <constant name="AvailTotalEndcapCalorimetryThickness"  value="(SolenoidYokeEndcap_zmin - 10.0 * mm) - (EcalEndcap_zmin + 10.0 * mm)"/>
+    <constant name="CalEndcapDivider"                      value="0.5"/> <comment> Ecal and Hcal have the same thickness </comment>
+    <constant name="EcalEndcapAvailTotalThickness"         value="AvailTotalEndcapCalorimetryThickness * CalEndcapDivider"/>
+    <constant name="HcalEndcapAvailTotalThickness"         value="AvailTotalEndcapCalorimetryThickness * (1.0 - CalEndcapDivider)"/>
+
+    <comment> These need to be set in sync with the forward and backward  detectors </comment>
+    <constant name="EcalEndcapP_rmin"                      value="250.0*mm"/>
+    <constant name="EcalEndcapN_rmin"                      value="350.0*mm"/>
+
+    <constant name="HcalEndcapP_rmin"                      value="250.0 * mm"/>
+    <constant name="HcalEndcapN_rmin"                      value="350.0 * mm"/>
+
+    <comment>
+      -------------------------
+      EM Calorimeter Parameters
+      -------------------------
+    </comment>
+    <constant name="CaloSides"                  value="12"/>
+	    
+    <comment>Material Thickness</comment>
+    <constant name="EcalSiliconThickness"       value="9.00 * mm"/>
+    <constant name="EcalCopperThickness"        value="0.05 * mm"/>
+    <constant name="EcalKaptonThickness"        value="0.30 * mm"/>
+    <constant name="EcalAir1Thickness"          value="0.33 * mm"/>
+    <constant name="EcalAir2Thickness"          value="0.25 * mm"/>
+    <constant name="EcalThinTungstenThickness"  value="2.50 * mm"/>
+    <constant name="EcalThickTungstenThickness" value="5.00 * mm"/>
+	    
+    <comment> Layer Thickness  </comment>
+    <constant name="EcalFirstLayerThickness"
+	    value="EcalSiliconThickness + EcalCopperThickness + EcalKaptonThickness + EcalAir1Thickness"/>
+    <constant name="EcalThinOneLayerThickness"   
+	    value="EcalThinTungstenThickness + EcalAir2Thickness + EcalSiliconThickness + EcalCopperThickness + EcalKaptonThickness + EcalAir1Thickness"/>
+    <constant name="EcalThickOneLayerThickness"   
+	    value="EcalThickTungstenThickness + EcalAir2Thickness + EcalSiliconThickness + EcalCopperThickness + EcalKaptonThickness + EcalAir1Thickness"/>
+	    
+    <comment> EM Barrel N Layer; same number of layers for EcalThin and EcalThick</comment>
+    <constant name="EcalBarrelLayers" 
+	    value="floor((EcalBarrelAvailTotalThickness - EcalFirstLayerThickness) / (EcalThinOneLayerThickness + EcalThickOneLayerThickness))"/>
+    <constant name="EcalBarrelThinLayers"       value="EcalBarrelLayers"/>
+    <constant name="EcalBarrelThickLayers"      value="EcalBarrelLayers"/>
+    <comment> EM Barrel Thickness </comment>
+    <constant name="EcalBarrelThickness"
+	    value="EcalFirstLayerThickness + (EcalBarrelThinLayers * EcalThinOneLayerThickness) + (EcalBarrelThickLayers * EcalThickOneLayerThickness)"/>
+    <constant name="EcalBarrel_rmax"            value="EcalBarrel_rmin + EcalBarrelThickness"/>
+
+    <comment> EM Endcap N Layer; same number of layers for EcalThin and EcalThick </comment>
+    <constant name="EcalEndcapLayers" 
+	    value="floor((EcalEndcapAvailTotalThickness - EcalFirstLayerThickness) / (EcalThinOneLayerThickness + EcalThickOneLayerThickness))"/>
+    <constant name="EcalEndcapThinLayers"       value="EcalEndcapLayers"/>
+    <constant name="EcalEndcapThickLayers"      value="EcalEndcapLayers"/>
+    <comment> EM Endcap Thickness </comment>
+    <constant name="EcalEndcapThickness"        
+	    value="EcalFirstLayerThickness + (EcalEndcapThinLayers * EcalThinOneLayerThickness) + (EcalEndcapThickLayers * EcalThickOneLayerThickness)"/>
+
+    <comment>
+      -------------------------------
+      Hadronic Calorimeter Parameters
+      -------------------------------
+    </comment>
+    <constant name="HcalBarrel_rmin"          value="EcalBarrel_rmax+10.0*mm"/>
+    <constant name="HcalBarrelAvailThickness" value="HcalBarrel_rmax - HcalBarrel_rmin"/>
+    <constant name="HcalBarrelLength"         value="EcalBarrelLength+2.0*EcalEndcapThickness + 10.0*mm "/>
+    <constant name="HcalEndcap_zmin"          value="HcalBarrelLength/2.0"/>
+    <constant name="HcalEndcapAvailThickness" value="(SolenoidYokeEndcap_zmin - 10.0 * mm) - HcalEndcap_zmin"/>
+
+    <comment> Material Thickness </comment>
+    <constant name="HcalSteelThickness"       value="1.89 * cm"/>
+    <constant name="HcalPyrexThickness"       value="1.10 * mm"/>
+    <constant name="HcalRPCGasThickness"      value="1.20 * mm"/>
+    <constant name="HcalG10Thickness"         value="3.00 * mm"/>
+    <constant name="HcalAirThickness"         value="1.60 * mm"/>
+
+    <comment> Layer Thickness </comment>
+    <constant name="HcalOneLayerThickness"
+	    value="HcalSteelThickness + (2 * HcalPyrexThickness) + HcalRPCGasThickness + HcalG10Thickness + HcalAirThickness"/>
+	    
+    <comment> H Barrel Layers and Thickness </comment>
+    <constant name="HcalBarrelLayers" value="floor(HcalBarrelAvailThickness / HcalOneLayerThickness)"/>
+    <constant name="HcalBarrelThickness" value="HcalBarrelLayers * HcalOneLayerThickness"/>
+
+    <comment> H Endcap Layers and Thickness </comment>
+    <constant name="HcalEndcapLayers" value="floor(HcalEndcapAvailThickness / HcalOneLayerThickness)"/>
+    <constant name="HcalEndcapThickness" value="HcalEndcapLayers * HcalOneLayerThickness"/>
+
+    <comment>
+      -----------------------
+      Gaseous RICH Parameters
+      -----------------------
+    </comment>
+    <constant name="RICHZMin" value="SolenoidYokeEndcap_zmin + 1 * cm"/>
+    <constant name="RICHRMin" value="15 * cm"/>
+    <constant name="RICHDepth" value="1 * m"/>
+
+
+    <comment>
+      --------------------------
+      Forward Tracker Parameters
+      --------------------------
+    </comment>
+    <constant name="TempForwardTrackerSpace" value="1.5 * m"/>
+    <constant name="ForwardEcalZMin" value="RICHZMin + RICHDepth + TempForwardTrackerSpace"/>
+    <constant name="ForwardCaloAngle" value="2 * SolenoidYokeChamferAngle"/>
+    <constant name="ForwardEcalRInner" value="10 * cm"/>
+    <constant name="ForwardEcalROuter" value="EcalBarrel_rmin + tan(SolenoidYokeChamferAngle) * (RICHDepth) + tan(ForwardCaloAngle) * (ForwardEcalZMin - RICHZMin - RICHDepth)"/>
+    <constant name="ForwardHcalZMin" value="RICHZMin + RICHDepth + TempForwardTrackerSpace + EcalEndcapThickness + 1 * mm"/>
+    <constant name="ForwardHcalAngle" value="ForwardCaloAngle"/>
+    <constant name="ForwardHcalRInner" value="10 * cm"/>
+    <constant name="ForwardHcalROuter" value="ForwardEcalROuter + tan(ForwardCaloAngle) * (ForwardHcalZMin - ForwardEcalZMin)"/>
+
+    <comment>
+      --------------------------
+      Forward ECal Parameters
+      --------------------------
+    </comment>
+
+    <comment>
+      --------------------------
+      Forward HCal Parameters
+      --------------------------
+    </comment>
+
+
+
+
+  </define>
+