diff --git a/compact/allsilicon_simplified.xml b/compact/allsilicon_simplified.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9c6501a2c7abbaea13d7cc5dd68f386a598b9f01
--- /dev/null
+++ b/compact/allsilicon_simplified.xml
@@ -0,0 +1,247 @@
+<lccdd>
+
+  <comment> Simplified All Silicon Tracker based on:
+    https://github.com/reynier0611/g4lblvtx/blob/master/macros/auxiliary_studies/simplified_geometry/Fun4All_G4_simplified_v2.C
+    With some added info on ITS3 chip from
+    https://indico.bnl.gov/event/10677/contributions/45591/attachments/33204/53254/20210318-IR2%40EIC-SVT.pdf
+    To be used as standin until we get more detailed specs from the working group on the tracker.
+    Note that most details are replaced with 
+
+    Note: initial implementation with hard-coded values,
+          TODO: add parametrization
+  </comment>
+
+  <define>
+    <constant name="ITS3Thickness"              value=".03*mm"/>
+
+    <constant name="VtxRadius1"                 value="3.3*cm"/>
+    <constant name="VtxRadius2"                 value="5.7*cm"/>
+    <constant name="VtxLength"                  value="30*cm"/>
+    <constant name="VtxThickness"               value="0.05/100*9.37*cm"/>
+    <constant name="VtxServiceThickness"        value="VtxThickness-ITS3Thickness"/>
+
+    <constant name="TrkBarrelThickness"         value="0.55/100*9.37*cm"/>
+    <constant name="TrkBarrelServiceThickness"  value="TrkBarrelThickness-ITS3Thickness"/>
+      
+    <constant name="TrkBarrel1Radius1"          value="21.0*cm"/>
+    <constant name="TrkBarrel1Radius2"          value="22.68*cm"/>
+    <constant name="TrkBarrel1Length1"          value="54.0*cm"/>
+    <constant name="TrkBarrel1Length2"          value="60.0*cm"/>
+
+    <constant name="TrkBarrel2Radius1"          value="39.3*cm"/>
+    <constant name="TrkBarrel2Radius2"          value="43.23*cm"/>
+    <constant name="TrkBarrel2Length1"          value="105.0*cm"/>
+    <constant name="TrkBarrel2Length2"          value="114.0*cm"/>
+
+    <constant name="TrkDiskThickness"           value="0.25/100*9.37*cm"/>
+    <constant name="TrkDiskServiceThickness"    value="TrkDiskThickness-ITS3Thickness"/>
+    <constant name="TrkNumOuterDisks"           value="3"/>
+    <constant name="TrkInnerDisk1_z"            value="25.0*cm"/>
+    <constant name="TrkInnerDisk2_z"            value="49.0*cm"/>
+    <constant name="TrkOuterDisk_zmin"          value="73.0*cm"/>
+    <constant name="TrkOuterDisk_zmax"          value="121.0*cm"/>
+    <constant name="TrkOuterDisk_deltaz"        value="(TrkOuterDisk_zmax-TrkOuterDisk_zmin)/(TrkNumOuterDisks-1)" />
+
+    <constant name="TrkInnerDisk1_rmin"         value="0.05025461*TrkInnerDisk1_z-0.180808*cm"/>
+    <constant name="TrkInnerDisk2_rmin"         value="0.05025461*TrkInnerDisk2_z-0.180808*cm"/>
+    <constant name="TrkOuterDisk_rmin"          value="3.18*cm"/>
+
+    <constant name="TrkInnerDisk1_rmax"         value="18.5*TrkInnerDisk1_z/TrkInnerDisk1_z*cm"/>
+    <constant name="TrkInnerDisk2_rmax"         value="18.5*TrkInnerDisk2_z/TrkInnerDisk1_z*cm"/>
+    <constant name="TrkOuterDisk_rmax"          value="43.23*cm"/>
+  </define>
+
+  <limits>
+  </limits>
+
+  <regions>
+  </regions>
+
+  <display>
+  </display>
+
+  <detectors>
+    <detector id="AllSiliconVtx_ID" name="AllSiliconVtx" type="refdet_CylinderTrackerBarrel" readout="ITS3Hits">
+      <module name="Module1" vis="AnlGreen">
+        <module_envelope rmin="VtxRadius1" thickness="VtxThickness" length="VtxLength" phi="360*degree" />
+        <module_component rmin="VtxRadius1" thickness="ITS3Thickness" material="Silicon" name="ITS3" sensitive="true" />
+        <module_component rmin="VtxRadius1 + ITS3Thickness" thickness="VtxServiceThickness" material="Silicon" name="VtxServices" />
+      </module>
+      <module name="Module2" vis="AnlGreen">
+        <module_envelope rmin="VtxRadius2" thickness="VtxThickness" length="VtxLength" phi="360*degree" />
+        <module_component rmin="VtxRadius2" thickness="ITS3Thickness" material="Silicon" name="ITS3" sensitive="true" />
+        <module_component rmin="VtxRadius2 + ITS3Thickness" thickness="VtxServiceThickness" material="Silicon" name="VtxServices" />
+      </module>
+      <layer module="Module1" id="1" vis="AnlGreen">
+        <barrel_envelope inner_r="VtxRadius1" outer_r="VtxRadius1 + VtxThickness" z_length="VtxLength" />
+        <rphi_layout phi_tilt="0.0" nphi="1" phi0="0.0" rc="VtxRadius1" dr="0.0*mm" />
+        <z_layout dr="0.0*mm" z0="0" nz="1" />
+      </layer>
+      <layer module="Module2" id="AllSiliconVtx_ID" vis="AnlGreen">
+        <barrel_envelope inner_r="VtxRadius2" outer_r="VtxRadius2 + VtxThickness" z_length="VtxLength" />
+        <rphi_layout phi_tilt="0.0" nphi="1" phi0="0.0" rc="VtxRadius2" dr="0.0*mm" />
+        <z_layout dr="0.0*mm" z0="0" nz="1" />
+      </layer>
+    </detector>
+
+    <detector id="AllSiliconTrk1Assembly_ID" name="AllSiliconTrkAssembly1" type="DD4hep_SubdetectorAssembly" vis="AnlGreen">
+      <composite name="AllSiliconTrkDisk1N" />
+      <composite name="AllSiliconTrkDisk1P" />
+      <composite name="AllSiliconBarrel1" />
+    </detector>
+    <detector id="AllSiliconTrkBarrel1_ID" name="AllSiliconTrkBarrel1" type="refdet_CylinderTrackerBarrel" readout="ITS3Hits">
+      <module name="Module1" id="1" vis="AnlGreen">
+        <module_envelope rmin="TrkBarrel1Radius1" thickness="TrkBarrelThickness" length="TrkBarrel1Length1" phi="360*degree" />
+        <module_component rmin="TrkBarrel1Radius1" thickness="ITS3Thickness" material="Silicon" name="ITS3" sensitive="true" />
+        <module_component rmin="TrkBarrel1Radius1 + ITS3Thickness" thickness="TrkBarrelServiceThickness" material="Silicon" name="TrkBarrel1Services" />
+      </module>
+      <module name="Module2" id="2" vis="AnlGreen">
+        <module_envelope rmin="TrkBarrel1Radius2" thickness="TrkBarrelThickness" length="TrkBarrel1Length2" phi="360*degree" />
+        <module_component rmin="TrkBarrel1Radius2" thickness="ITS3Thickness" material="Silicon" name="ITS3" sensitive="true" />
+        <module_component rmin="TrkBarrel1Radius2 + ITS3Thickness" thickness="TrkBarrelServiceThickness" material="Silicon" name="TrkBarrel1Services" />
+      </module>
+      <layer module="Module1" id="1" vis="AnlGreen">
+        <barrel_envelope inner_r="TrkBarrel1Radius1" outer_r="TrkBarrel1Radius1 + TrkBarrelThickness" z_length="TrkBarrel1Length1" />
+        <rphi_layout phi_tilt="0.0" nphi="1" phi0="0.0" rc="TrkBarrel1Radius1" dr="0.0*mm" />
+        <z_layout dr="0.0*mm" z0="0" nz="1" />
+      </layer>
+      <layer module="Module2" id="2" vis="AnlGreen">
+        <barrel_envelope inner_r="TrkBarrel1Radius2" outer_r="TrkBarrel1Radius2 + TrkBarrelThickness" z_length="TrkBarrel1Length2" />
+        <rphi_layout phi_tilt="0.0" nphi="1" phi0="0.0" rc="TrkBarrel1Radius2" dr="0.0*mm" />
+        <z_layout dr="0.0*mm" z0="0" nz="1" />
+      </layer>
+    </detector>
+    <detector id="AllSiliconTrkDisk1N_ID" name="AllSiliconTrkDisk1N" type="ref_DiskTracker" insideTrackingVolume="true" reflect="true" vis="kAnlGreen">
+        <position x="0" y="0" z="0"/>
+        <layer id="1" vis="AnlGreen"
+          inner_z="TrkInnerDisk1_z"
+          inner_r="TrkInnerDisk1_rmin"
+          outer_r="TrkInnerDisk1_rmax">
+          <slice material="Silicon" thickness="TrkDiskThickness" vis="AnlGreen" />
+        </layer>
+    </detector>
+    <detector id="AllSiliconTrkDisk1P_ID" name="AllSiliconTrkDisk1P" type="ref_DiskTracker" insideTrackingVolume="true" reflect="false" vis="kAnlGreen">
+        <position x="0" y="0" z="0"/>
+        <layer id="1" vis="AnlGreen"
+          inner_z="TrkInnerDisk1_z"
+          inner_r="TrkInnerDisk1_rmin"
+          outer_r="TrkInnerDisk1_rmax">
+          <slice material="Silicon" thickness="TrkDiskThickness" vis="AnlGreen" />
+        </layer>
+    </detector>
+
+    <detector id="AllSiliconTrk2Assembly_ID" name="AllSiliconTrkAssembly2" type="DD4hep_SubdetectorAssembly" vis="AnlGreen">
+      <composite name="AllSiliconTrkDisk2N" />
+      <composite name="AllSiliconTrkDisk2P" />
+      <composite name="AllSiliconBarrel2" />
+    </detector>
+    <detector id="AllSiliconTrkBarrel2_ID" name="AllSiliconTrkBarrel2" type="refdet_CylinderTrackerBarrel" readout="ITS3Hits">
+      <module name="Module1" id="1" vis="AnlGreen">
+        <module_envelope rmin="TrkBarrel2Radius1" thickness="TrkBarrelThickness" length="TrkBarrel2Length1" phi="360*degree" />
+        <module_component rmin="TrkBarrel2Radius1" thickness="ITS3Thickness" material="Silicon" name="ITS3" sensitive="true" />
+        <module_component rmin="TrkBarrel2Radius1 + ITS3Thickness" thickness="TrkBarrelServiceThickness" material="Silicon" name="TrkBarrel2Services" />
+      </module>
+      <module name="Module2" id="2" vis="AnlGreen">
+        <module_envelope rmin="TrkBarrel2Radius2" thickness="TrkBarrelThickness" length="TrkBarrel2Length2" phi="360*degree" />
+        <module_component rmin="TrkBarrel2Radius2" thickness="ITS3Thickness" material="Silicon" name="ITS3" sensitive="true" />
+        <module_component rmin="TrkBarrel2Radius2 + ITS3Thickness" thickness="TrkBarrelServiceThickness" material="Silicon" name="TrkBarrel2Services" />
+      </module>
+      <layer module="Module1" id="1" vis="AnlGreen">
+        <barrel_envelope inner_r="TrkBarrel2Radius1" outer_r="TrkBarrel2Radius1 + TrkBarrelThickness" z_length="TrkBarrel2Length1" />
+        <rphi_layout phi_tilt="0.0" nphi="1" phi0="0.0" rc="TrkBarrel2Radius1" dr="0.0*mm" />
+        <z_layout dr="0.0*mm" z0="0" nz="1" />
+      </layer>
+      <layer module="Module2" id="2" vis="AnlGreen">
+        <barrel_envelope inner_r="TrkBarrel2Radius2" outer_r="TrkBarrel2Radius2 + TrkBarrelThickness" z_length="TrkBarrel2Length2" />
+        <rphi_layout phi_tilt="0.0" nphi="1" phi0="0.0" rc="TrkBarrel2Radius2" dr="0.0*mm" />
+        <z_layout dr="0.0*mm" z0="0" nz="1" />
+      </layer>
+    </detector>
+    <detector id="AllSiliconTrkDisk2N_ID" name="AllSiliconTrkDisk2N" type="ref_DiskTracker" insideTrackingVolume="true" reflect="true" vis="kAnlGreen">
+        <position x="0" y="0" z="0"/>
+        <layer id="1" vis="AnlGreen"
+          inner_z="TrkInnerDisk2_z"
+          inner_r="TrkInnerDisk2_rmin"
+          outer_r="TrkInnerDisk2_rmax">
+          <!--slice material="Silicon" thickness="ITS3Thickness" vis="AnlGreen" sensitive="true"/-->
+          <!--slice material="Silicon" thickness="TrkDiskServiceThickness" vis="AnlGreen" /-->
+          <slice material="Silicon" thickness="TrkDiskThickness" vis="AnlGreen" />
+        </layer>
+    </detector>
+    <detector id="AllSiliconTrkDisk2P_ID" name="AllSiliconTrkDisk2P" type="ref_DiskTracker" insideTrackingVolume="true" reflect="false" vis="kAnlGreen">
+        <position x="0" y="0" z="0"/>
+        <layer id="1" vis="AnlGreen"
+          inner_z="TrkInnerDisk2_z"
+          inner_r="TrkInnerDisk2_rmin"
+          outer_r="TrkInnerDisk2_rmax">
+          <!--slice material="Silicon" thickness="ITS3Thickness" vis="AnlGreen" sensitive="true"/-->
+          <!--slice material="Silicon" thickness="TrkDiskServiceThickness" vis="AnlGreen" /-->
+          <slice material="Silicon" thickness="TrkDiskThickness" vis="AnlGreen" />
+        </layer>
+    </detector>
+    <detector id="AllSiliconTrkOuterN_ID" name="AllSiliconTrkOuterN" type="ref_DiskTracker" insideTrackingVolume="true" reflect="true" vis="kAnlGreen">
+        <position x="0" y="0" z="0"/>
+
+        <layer id="1" vis="AnlGreen"
+          inner_z="TrkOuterDisk_zmin"
+          inner_r="TrkOuterDisk_rmin"
+          outer_r="TrkOuterDisk_rmax">
+          <slice material="Silicon" thickness="TrkDiskThickness" vis="AnlGreen" />
+        </layer>
+        <layer id="2" vis="AnlGreen"
+          inner_z="TrkOuterDisk_zmin + 1 * TrkOuterDisk_deltaz"
+          inner_r="TrkOuterDisk_rmin"
+          outer_r="TrkOuterDisk_rmax">
+          <!--slice material="Silicon" thickness="ITS3Thickness" vis="AnlGreen" sensitive="true"/-->
+          <!--slice material="Silicon" thickness="TrkDiskServiceThickness" vis="AnlGreen" /-->
+          <slice material="Silicon" thickness="TrkDiskThickness" vis="AnlGreen" />
+        </layer>
+        <layer id="3" vis="AnlGreen"
+          inner_z="TrkOuterDisk_zmin + 2 * TrkOuterDisk_deltaz"
+          inner_r="TrkOuterDisk_rmin"
+          outer_r="TrkOuterDisk_rmax">
+          <!--slice material="Silicon" thickness="ITS3Thickness" vis="AnlGreen" sensitive="true"/-->
+          <!--slice material="Silicon" thickness="TrkDiskServiceThickness" vis="AnlGreen" /-->
+          <slice material="Silicon" thickness="TrkDiskThickness" vis="AnlGreen" />
+        </layer>
+    </detector>
+    <detector id="AllSiliconTrkOuterP_ID" name="AllSiliconTrkOuterP" type="ref_DiskTracker" insideTrackingVolume="true" reflect="false" vis="kAnlGreen">
+        <position x="0" y="0" z="0"/>
+        <layer id="1" vis="AnlGreen"
+          inner_z="TrkOuterDisk_zmin"
+          inner_r="TrkOuterDisk_rmin"
+          outer_r="TrkOuterDisk_rmax">
+          <slice material="Silicon" thickness="TrkDiskThickness" vis="AnlGreen" />
+        </layer>
+        <layer id="2" vis="AnlGreen"
+          inner_z="TrkOuterDisk_zmin + 1 * TrkOuterDisk_deltaz"
+          inner_r="TrkOuterDisk_rmin"
+          outer_r="TrkOuterDisk_rmax">
+          <!--slice material="Silicon" thickness="ITS3Thickness" vis="AnlGreen" sensitive="true"/-->
+          <!--slice material="Silicon" thickness="TrkDiskServiceThickness" vis="AnlGreen" /-->
+          <slice material="Silicon" thickness="TrkDiskThickness" vis="AnlGreen" />
+        </layer>
+        <layer id="3" vis="AnlGreen"
+          inner_z="TrkOuterDisk_zmin + 2 * TrkOuterDisk_deltaz"
+          inner_r="TrkOuterDisk_rmin"
+          outer_r="TrkOuterDisk_rmax">
+          <!--slice material="Silicon" thickness="ITS3Thickness" vis="AnlGreen" sensitive="true"/-->
+          <!--slice material="Silicon" thickness="TrkDiskServiceThickness" vis="AnlGreen" /-->
+          <slice material="Silicon" thickness="TrkDiskThickness" vis="AnlGreen" />
+        </layer>
+      </detector>
+    </detectors>
+
+  <readouts>
+    <readout name="ITS3Hits">
+      <segmentation type="CartesianGridXY" grid_size_x="0.010*mm" grid_size_y="0.010*mm" />
+      <id>system:8,barrel:3,layer:4,module:7,sensor:2,x:32:-16,y:-16</id>  
+    </readout>
+  </readouts>
+
+  <plugins>
+  </plugins>
+
+  <fields>
+  </fields>
+</lccdd>
diff --git a/compact/definitions.xml b/compact/definitions.xml
index a2c03999bfc848cf46581140d16751b47205d5eb..d8dac0d6ad99793791c0f5cd0b34c20371ad463d 100644
--- a/compact/definitions.xml
+++ b/compact/definitions.xml
@@ -73,6 +73,7 @@
     <constant name="SiVertexSubAssembly_ID" value="26"/>
     <constant name="SiVertexEndcapP_ID" value="30"/>
     <constant name="SiVertexEndcapN_ID" value="40"/>
+    <constant name="AllSiliconVtx_ID" value="41"/>
     
     <comment>
       Unused values reserved for vertex:
@@ -130,6 +131,21 @@
 
     <constant name="cb_CTD_Si_ID"                   value="74"/>
 
+    <comment>
+      Start over the IDs for all-silicon, as these are mutually exclusive detectors
+    </comment>
+    <constant name="AllSiliconTrk1Assembly_ID"  value="50"/>
+    <constant name="AllSiliconTrkBarrel1_ID"    value="51"/>
+    <constant name="AllSiliconTrkDisk1N_ID"     value="52"/>
+    <constant name="AllSiliconTrkDisk1P_ID"     value="53"/>
+    <constant name="AllSiliconTrk2Assembly_ID"  value="54"/>
+    <constant name="AllSiliconTrkBarrel2_ID"    value="55"/>
+    <constant name="AllSiliconTrkDisk2N_ID"     value="56"/>
+    <constant name="AllSiliconTrkDisk2P_ID"     value="57"/>
+    <constant name="AllSiliconTrkOuterN_ID"     value="58"/>
+    <constant name="AllSiliconTrkOuterP_ID"     value="59"/>
+    <constant name="AllSiliconSupport_ID"     value="60"/>
+
     <comment>
     ===================
     (75-84) Barrel Tracker IDs
@@ -327,10 +343,10 @@
 
     <constant name="ForwardRICH_length"       value="1.1*m"/>
     <constant name="ForwardTRD_length"        value="10.0*cm"/>
-    <constant name="ForwardTOF_length"        value="5.0*cm"/>
+    <constant name="ForwardTOF_length"        value="3.0*cm"/>
     
-    <constant name="BackwardCherenkov_length"   value="20.0*cm"/>
-    <constant name="BackwardTOF_length"         value="10.0*cm"/>
+    <constant name="BackwardCherenkov_length"   value="15.0*cm"/>
+    <constant name="BackwardTOF_length"         value="3.0*cm"/>
 
     <comment> Total length of PID detectors above</comment>
     <constant name="ForwardPIDLength"    value="ForwardRICH_length + ForwardTRD_length + ForwardTOF_length"/>
@@ -355,8 +371,8 @@
       ============================
     </comment>
 
-    <constant name="ForwardTracking_length" value="6.0*cm"/>
-    <constant name="BackwardTracking_length" value="6.0*cm"/>
+    <constant name="ForwardTracking_length" value="0.0*cm"/>
+    <constant name="BackwardTracking_length" value="0.0*cm"/>
 
     <comment>
       -------------------------
@@ -402,7 +418,7 @@
     <constant name="TrackerBarrel_rmin"        value="VertexTrackerBarrel_rmax"/>
     <comment> This is just inside of the potential uRWEL detector hugging the DIRC from the inside </comment>
     <constant name="TrackerBarrel_rmax"        value="78*cm"/>
-    <constant name="TrackerBarrelOuter_length" value="2000.0*mm"/>
+    <constant name="TrackerBarrelOuter_length" value="2600.0*mm"/>
     <constant name="TrackerBarrelInner_length" value="VertexTrackingRegion_length"/>
     <constant name="TrackerBarrelInner_zmax"   value="TrackerBarrelInner_length/2.0"/>
     <constant name="TrackerBarrelOuter_zmax"   value="TrackerBarrelOuter_length/2.0"/>
@@ -458,7 +474,7 @@
 
     <comment> these offesets could be implemented differently for clarity. </comment>
     <constant name="EcalEndcapPSolenoid_offset" value="800.0*mm" />
-    <constant name="EcalEndcapNSolenoid_offset" value="0.0*mm" />
+    <constant name="EcalEndcapNSolenoid_offset" value="-100.0*mm" />
 
     <constant name="HcalEndcapPExtra_length"    value="40.0*cm"/>
     <constant name="HcalEndcapNExtra_length"    value="0.0*cm"/>
@@ -470,12 +486,7 @@
     <constant name="Barrel_rmax"                value="Solenoid_rmin - 1.0 *cm "/>
     <constant name="Barrel_TotalCalThickness"   value="Barrel_rmax - EcalBarrel_rmin"/>
 
-    <constant name="CalBarrelDivider"           value="0.8"/>
-    <comment> Leave room for TRD </comment>
-
-    <constant name="EcalBarrel_TotalThickness"  value="Barrel_TotalCalThickness * CalBarrelDivider"/>
-    <constant name="HcalBarrel_TotalThickness"  value="Barrel_TotalCalThickness * (1.0 - CalBarrelDivider)"/>
-
+    <constant name="EcalBarrel_TotalThickness"  value="40.0*cm"/>
 
     <constant name="EcalEndcapP_zmin"           value="CentralTracking_length/2.0 + ForwardPIDLength"/>
     <constant name="EcalEndcapN_zmin"           value="CentralTracking_length/2.0 + BackwardPIDLength"/>
@@ -494,7 +505,8 @@
     <constant name="EndcapN_CalDivide"          value="1.0"/> <comment> 0.5 means Ecal and Hcal have the same thickness </comment>
 
     <constant name="EcalEndcapP_length" value="EndcapPTotalCal_length * EndcapP_CalDivide"/>
-    <constant name="EcalEndcapN_length" value="EndcapNTotalCal_length * EndcapN_CalDivide"/>
+    <!--constant name="EcalEndcapN_length" value="EndcapNTotalCal_length * EndcapN_CalDivide"/-->
+    <constant name="EcalEndcapN_length" value="40*cm"/>
 
 
     <comment> These need to be set in sync with the forward and backward  detectors </comment>
@@ -575,9 +587,9 @@
       -------------------------------
     </comment>
 
-    <constant name="HcalEndcapP_length" value="50.0*cm"/>
-    <constant name="HcalEndcapN_length" value="50.0*cm"/>
-    <constant name="HcalBarrel_thickness" value="50.0*cm "/>
+    <constant name="HcalEndcapP_length" value="100.0*cm"/>
+    <constant name="HcalEndcapN_length" value="75.0*cm"/>
+    <constant name="HcalBarrel_thickness" value="100.0*cm "/>
 
     <constant name="HcalBarrel_rmin"          value="Solenoid_rmax"/>
     <constant name="HcalBarrel_rmax"          value="HcalBarrel_rmin + HcalBarrel_thickness"/>
diff --git a/compact/materials.xml b/compact/materials.xml
index fb0f49a65634a011cef179420687f8d268a96fa5..6de9ac5ef7d12506389ecee65f88434bf7069cfd 100644
--- a/compact/materials.xml
+++ b/compact/materials.xml
@@ -221,5 +221,9 @@
     <composite n="6" ref="H"/>
     <composite n="1" ref="O"/>
   </material>
+  <material name="Graphite">
+    <D type="density" value="2.21" unit="g/cm3"/>
+    <composite n="1" ref="C"/>
+  </material>
 
 </materials>
diff --git a/reference_detector.xml b/reference_detector.xml
index 5faa21c83937cf43977b8354ba359f859a5c01f4..ad2034f6cb71f971d0fcd4d8b3be8273fca28c7f 100644
--- a/reference_detector.xml
+++ b/reference_detector.xml
@@ -118,8 +118,9 @@
   <include ref="compact/ecal.xml"/>
   <include ref="compact/hcal.xml"/>
   <!--include ref="compact/ce_GEM.xml"/-->
-  <include ref="compact/vertex_tracker.xml"/>
-  <include ref="compact/gem_tracker_endcap.xml"/>
+  <!--include ref="compact/vertex_tracker.xml"/-->
+  <include ref="compact/allsilicon_simplified.xml"/>
+  <!--include ref="compact/gem_tracker_endcap.xml"/-->
   <include ref="compact/ce_mrich.xml"/>
   <include ref="compact/tof_endcap.xml"/>
   <include ref="compact/forward_trd.xml"/>
diff --git a/src/allsilicon_support.cpp b/src/allsilicon_support.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..7d38f6290f951efa214302fe1184f071c1175b02
--- /dev/null
+++ b/src/allsilicon_support.cpp
@@ -0,0 +1,81 @@
+#include "DD4hep/DetFactoryHelper.h"
+#include "DD4hep/OpticalSurfaces.h"
+#include "DD4hep/Printout.h"
+#include "DDRec/DetectorData.h"
+#include "DDRec/Surface.h"
+#include <XML/Helper.h>
+//////////////////////////////////
+// Support structure for ALl-silicon
+//////////////////////////////////
+
+using namespace std;
+using namespace dd4hep;
+
+// Info from
+// https://github.com/reynier0611/g4lblvtx/blob/master/source/AllSi_vtx_serv_2lyr_Detector.cc
+// TODO: this is quite incomplete, should probably wait for official word
+//       from he tracking WG
+
+static Ref_t createDetector(Detector& desc, xml_h e, SensitiveDetector sens)
+{
+  xml_det_t x_det   = e;
+  string    detName = x_det.nameStr();
+  int       detID   = x_det.id();
+  bool      reflect = x_det.reflect();
+  const int sign    = reflect ? -1 : 1;
+
+  // second vertexing layer
+  std::vector<double> z_det   = {15 * cm, 20 * cm};
+  std::vector<double> rin_l2  = {5.48 * cm, 14.8 * cm};
+  std::vector<double> rout_l2 = {0, 0};
+
+  // first vertexing layer
+  std::vector<double> rin_l1  = {3.30 * cm, 14.36 * cm};
+  std::vector<double> rout_l1 = {0, 0};
+
+  const int nzplanes_l2 = z_det.size();
+  const int nzplanes_l1 = z_det.size();
+
+  for (int i = 0; i < nzplanes_l2; i++) {
+    rout_l2[i] = rin_l2[i] + 0.44;
+    z_det[i] *= sign / abs(sign);
+  }
+  for (int i = 0; i < nzplanes_l1; i++) {
+    rout_l1[i] = rin_l1[i] + 0.44;
+    z_det[i] *= sign / abs(sign);
+  }
+  // mother volume
+  std::vector<double> rin_mo  = rin_l1;
+  std::vector<double> rout_mo = rout_l2;
+
+  DetElement det(detName, detID);
+  Material   Vacuum = desc.material("Vacuum");
+  Polycone   empty_cone("empty_cone", 0.0, 360 * degree, z_det, rin_mo, rout_mo);
+  Volume     detVol("empty_cone", empty_cone, Vacuum);
+  detVol.setVisAttributes(desc.invisible());
+
+  Volume       motherVol = desc.pickMotherVolume(det);
+  Transform3D  tr(RotationZYX(0.0, 0.0, 0.0), Position(0.0, 0.0, 0.));
+  PlacedVolume detPV = motherVol.placeVolume(detVol, tr);
+  detPV.addPhysVolID("system", detID);
+  detPV.addPhysVolID("barrel", 1);
+  det.setPlacement(detPV);
+
+  Material Al       = desc.material("Al");
+  Material Graphite = desc.material("Graphite");
+
+  // cb_DIRC_bars_Logic.setVisAttributes(desc.visAttributes(x_det.visStr()));
+
+  Polycone polycone_l2("polycone_l2", 0, 360 * degree, z_det, rin_l2, rout_l2);
+  Volume   logical_l2("polycone_l2_logic", polycone_l2, Al);
+  logical_l2.setVisAttributes(desc.visAttributes(x_det.visStr()));
+  detVol.placeVolume(logical_l2, tr);
+  Polycone polycone_l1("polycone_l1", 0, 360 * degree, z_det, rin_l1, rout_l1);
+  Volume   logical_l1("polycone_l1_logic", polycone_l1, Al);
+  logical_l1.setVisAttributes(desc.visAttributes(x_det.visStr()));
+  detVol.placeVolume(logical_l1, tr);
+
+  return det;
+}
+
+DECLARE_DETELEMENT(allsilicon_support, createDetector)