diff --git a/gem_tracker.xml b/gem_tracker.xml
new file mode 100644
index 0000000000000000000000000000000000000000..cfc4938d9a58c953160aa927729c9c58ea354214
--- /dev/null
+++ b/gem_tracker.xml
@@ -0,0 +1,192 @@
+<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">
+
+  <info name="beam_pipe" title="Beam pipe test"
+        author="Whitney Armstrong"
+        url="https://eicweb.phy.anl.gov/EIC/NPDet"
+        status="development"
+        version="">
+    <comment>EIC Beam Pipe</comment>        
+  </info>
+
+  <includes>
+    <gdmlFile  ref="elements.xml"/>
+    <gdmlFile  ref="materials.xml"/>
+  </includes>
+  
+  <define>
+    <constant name="world_side" value="10*m"/>
+    <constant name="world_x" value="world_side"/>
+    <constant name="world_y" value="world_side"/>
+    <constant name="world_z" value="10*world_side"/>
+    
+    <constant name="tracker_region_rmax" value="2.0*m" />
+    <constant name="tracker_region_zmax" value="4.0*m" />
+
+    <constant name="CrossingAngle" value="0.020*rad"/>
+
+    <constant name="CentralBeamPipe_length"     value="50.0*cm"/>
+    <constant name="CentralBeamPipe_thickness"  value="0.1*mm"/>
+    <constant name="CentralBeamPipe_radius"     value="3.5*cm"/>
+    <constant name="CentralBeamPipe_z"          value="0.0*cm"/>
+
+    <constant name="UpStreamBeamPipe_length"    value="150.0*cm"/>
+    <constant name="UpStreamBeamPipe_thickness" value="0.1*mm"/>
+    <constant name="UpStreamBeamPipe_radius"    value="5*cm"/>
+    <constant name="UpStreamBeamPipe_z"          value="-1.0*(CentralBeamPipe_length+UpStreamBeamPipe_length)/2.0"/>
+
+    <constant name="DownStreamBeamPipe_length"      value="250.0*cm"/>
+    <constant name="DownStreamBeamPipe_thickness"   value="0.1*mm"/>
+    <constant name="DownStreamBeamPipe_radius"      value="5*cm"/>
+    <constant name="DownStreamBeamPipe_z"          value="1.0*(CentralBeamPipe_length+DownStreamBeamPipe_length)/2.0"/>
+    
+    <!--
+    <constant name="CentralBeamPipe_rmax" value="VertexBarrel_r1 - 0.2*cm"/>
+    <constant name="CentralBeamPipe_thickness" value="CentralBeamPipe_rmax * 0.02"/>
+    <constant name="CentralBeamPipe_rmin" value="CentralBeamPipe_rmax - CentralBeamPipe_thickness"/>
+    <constant name="BeamPipe_thickness" value="0.4*cm"/>
+    <constant name="BeamPipe_endThickness" value="0.1*cm"/>
+    <constant name="BeamPipe_zmax" value="LumiCal_zmin - 0.5*cm"/>
+    <constant name="BeamPipe_rmax" value="19.0*cm"/>
+    <constant name="BeamPipe_rmin" value="BeamPipe_rmax - BeamPipe_thickness"/>
+    <constant name="bp_cone_slope" value="(BeamPipe_rmax-CentralBeamPipe_rmax)/(tracking_region_zmax-CentralBeamPipe_zmax)"/>
+    <constant name="BeamPipe_zmin" value="CentralBeamPipe_zmax + (BeamPipe_thickness - CentralBeamPipe_thickness)/bp_cone_slope"/>
+    <constant name="BeamPipeLiner_thickness" value="0.0*cm"/>
+
+
+    <constant name="BeamCal_rmax" value="13.0*cm"/>
+    <constant name="BeamCal_zmin" value="ForwardMask_zmin + ForwardMask_thickness"/>
+
+    <constant name="IncomingBP_radius" value="0.25*cm"/>
+    <constant name="IncomingBP_thickness" value="0.05*cm"/>
+    <constant name="OutgoingBP_radius" value="tan(CrossingAngle/2/rad)*BeamCal_zmin"/>
+    <constant name="OutgoingBP_thickness" value="0.1*cm"/>    
+
+    <constant name="BeamCal_crossingAngle" value="CrossingAngle"/>    
+    <constant name="BeamCal_outgoing_r" value="OutgoingBP_radius + 0.05*cm"/>    
+    <constant name="BeamCal_incoming_r" value="IncomingBP_radius + 0.05*cm"/>    
+    -->
+
+    <constant name="Place_Center" value="0*cm"/>
+
+    <constant name="ForwardTrackerPlane_z0" value="400*cm"/>
+
+  </define>
+
+  <limits>
+    <limitset name="cal_limits">
+      <limit name="step_length_max" particles="*" value="5.0" unit="mm" />
+    </limitset>
+    <limitset name="GemTrackerDiscRegionLimitSet">
+      <limit name="step_length_max" particles="*" value="5.0" unit="mm" />
+      <limit name="track_length_max" particles="*" value="5.0" unit="mm" />
+      <limit name="time_max" particles="*" value="5.0" unit="ns" />
+      <limit name="ekin_min" particles="*" value="0.01" unit="MeV" />
+      <limit name="range_min" particles="*" value="5.0" unit="mm" />
+    </limitset>
+  </limits>
+  <regions>
+    <region name="GemTrackerDiscRegion" eunit="MeV" lunit="mm" cut="0.001" threshold="0.001">
+      <limitsetref name="GemTrackerDiscRegionLimitSet"/>
+    </region>
+  </regions>
+
+    <limits>
+      <limitset name="Tracker_limits">
+        <limit name="step_length_max" particles="*" value="5.0" unit="mm" />
+      </limitset>
+    </limits>
+
+  <comment>Common Generic visualization attributes</comment>
+  <display>
+    <vis name="InvisibleNoDaughters"      showDaughters="false" visible="false"/>
+    <vis name="InvisibleWithDaughters"    showDaughters="true" visible="false"/>
+    <vis name="GreenVis"       alpha="0.5"  r= "0.0" g="1.0" b="0.0" showDaughters="true" visible="true"/>
+    <vis name="RedVis"         alpha="0.5"  r= "1.0" g="0.0" b="0.0" showDaughters="true" visible="true"/>
+    <vis name="BlueVis"        alpha="0.5"  r= "0.0" g="0.0" b="1.0" showDaughters="true" visible="true"/>
+    <vis name="OrangeVis"      alpha="0.5"  r= "1.0" g="0.45" b="0.0" showDaughters="true" visible="true"/>
+    <vis name="RedGreenVis"    alpha="0.5"  r= "1.0" g="1.0" b="0.0" showDaughters="true" visible="true"/>
+    <vis name="BlueGreenVis"   alpha="0.5"  r= "0.0" g="1.0" b="1.0" showDaughters="true" visible="true"/>
+    <vis name="PurpleVis"      alpha="0.5"  r= "1.0" g="0.0" b="1.0" showDaughters="true" visible="true"/>
+    <vis name="DoubleRedG"     alpha="0.5"  r= "2.0" g=".10" b="0.0" showDaughters="true" visible="true"/>
+    <vis name="RBG015"         alpha="0.5"  r= "0.0" g=".2"  b="1.0" showDaughters="true" visible="true"/>
+    <vis name="RBG510"         alpha="0.5"  r= "1.0" g=".2"  b="0.0" showDaughters="true" visible="true"/>
+    <vis name="RBG"            alpha="0.5"  r= "1.0" g="1.0" b="1.0" showDaughters="true" visible="true"/>
+    <vis name="GrayVis"        alpha="1.0"  r= "0.75" g="0.75" b="0.75" showDaughters="true" visible="true"/>
+  </display>
+
+
+  <detectors>
+    <!--
+    <detector id="1" name="GEMTracker_PVDIS" vis="RedVis" type="GEMTrackerDiscSOLID" readout="GEMTrackerHits" > 
+      <layer id="1" z="157.5*cm" inner_r="48.0*cm"  outer_r="122.0*cm" phi0_offset=" 0.5*deg" />
+      <layer id="2" z="185.5*cm" inner_r="59.0*cm"  outer_r="143.0*cm" phi0_offset=" 0.0*deg" />
+      <layer id="3" z="190  *cm" inner_r="65.0*cm"  outer_r="143.0*cm" phi0_offset=" 0.0*deg" />
+      <layer id="4" z="306  *cm" inner_r="105.0*cm" outer_r="230.0*cm" phi0_offset="-0.5*deg" />
+      <layer id="5" z="315  *cm" inner_r="109.0*cm" outer_r="237.0*cm" phi0_offset="-0.5*deg" />
+    </detector>
+    -->
+    <detector id="2" name="GEMTracker_SIDIS" vis="RedVis" type="GEMTrackerDisc" readout="GEMTrackerHits" > 
+      <layer id="1" z="-175 *cm" inner_r="36*cm"  outer_r="87.0*cm"  phi0_offset="0.0*deg" />
+      <layer id="2" z="-150 *cm" inner_r="21*cm"  outer_r="98.0*cm"  phi0_offset="0.0*deg" />
+      <layer id="3" z="-119 *cm" inner_r="25*cm"  outer_r="112.0*cm" phi0_offset="0.0*deg" />
+      <layer id="4" z="-68  *cm" inner_r="32*cm"  outer_r="135.0*cm" phi0_offset="0.0*deg" />
+      <layer id="5" z="-5   *cm" inner_r="42*cm"  outer_r="100.0*cm" phi0_offset="0.0*deg" />
+      <layer id="6" z="5    *cm" inner_r="42*cm"  outer_r="100.0*cm" phi0_offset="0.0*deg" />
+      <layer id="7" z="30   *cm" inner_r="42*cm"  outer_r="123.0*cm" phi0_offset="0.0*deg" />
+      <layer id="8" z="60   *cm" inner_r="42*cm"  outer_r="123.0*cm" phi0_offset="0.0*deg" />
+      <layer id="9" z="92   *cm" inner_r="55*cm"  outer_r="123.0*cm" phi0_offset="0.0*deg" />
+    </detector>
+
+    <detector id="102" name="GEMTracker_assembly" type="DD4hep_SubdetectorAssembly" vis="BlueVis">
+      <composite name="GEMTracker_SIDIS"/>
+    </detector>
+
+  </detectors>
+
+  <readouts>
+    <readout name="TPCollection">
+      <segmentation type="CartesianGridXY" grid_size_x="10.0*cm" grid_size_y="10.0*cm" />
+      <id>system:5,layer:9,module:8,x:32:-16,y:-16</id>
+    </readout>
+    <!--
+         <readout name="SiVertexBarrelHits">
+      <id>system:8,barrel:3,layer:4,module:14,sensor:2,side:32:-2,strip:24</id>
+    </readout>
+-->
+    <readout name="GEMTrackerHits">
+      <segmentation type="PolarGridRPhi" grid_size_phi="1.0*degree" grid_size_r="1.0*cm"/>
+      <id>system:5,barrel:3,layer:4,module:5,r:32:-16,phi:-16</id>
+      </readout>
+    <!--
+    <readout name="SiTrackerEndcapHits">
+      <id>system:8,barrel:3,layer:4,module:14,sensor:2,side:32:-2,strip:24</id>
+    </readout>
+    <readout name="SiVertexEndcapHits">
+      <id>system:8,barrel:3,layer:4,wedge:6,module:6,sensor:1,side:32:-2,strip:26</id>
+    </readout>
+-->
+  </readouts>
+
+   <plugins>
+       <plugin name="DD4hep_GenericSurfaceInstallerPlugin">
+           <argument value="GEMTracker_SIDIS"/>
+           <argument value="dimension=2"/>
+           <argument value="u_x=-1."/>
+           <argument value="v_y=-1."/>
+           <argument value="n_z=1."/>
+       </plugin>	
+       <plugin name="InstallSurfaceManager"/>
+   </plugins>
+
+
+  <fields>
+    <field name="GlobalSolenoid" type="solenoid" 
+	   inner_field="10.0*tesla"
+	   outer_field="-0.5*tesla" 
+	   zmax="4.0*m"
+	   outer_radius="2.0*m">
+    </field>
+  </fields>
+</lccdd>