diff --git a/DDDetectors/CMakeLists.txt b/DDDetectors/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7fb544c08072f309887b09a79345b652b74cdf69
--- /dev/null
+++ b/DDDetectors/CMakeLists.txt
@@ -0,0 +1,36 @@
+#-----------------------------------------------------------------------------------
+#  DDDetectors
+#
+#  Author:  M.Frank
+#  Date:    13/11/2014
+#
+#-----------------------------------------------------------------------------------
+#
+#---Find ROOT-----------------------------------------------------------------------
+find_package( ROOT REQUIRED COMPONENTS Geom Reflex )
+#
+#---Includedirs---------------------------------------------------------------------
+include_directories(${CMAKE_SOURCE_DIR}/DDCore/include
+	            ${CMAKE_SOURCE_DIR}/DDRec/include	
+	            ${CMAKE_SOURCE_DIR}/DDSegmentation/include	
+                    ${ROOT_INCLUDE_DIR} )
+#
+#---Add Library---------------------------------------------------------------------
+file(GLOB sources src/*.cpp )
+include(DD4hep_XML_setup)
+
+add_library( DD4hepDetectors SHARED ${sources})
+target_link_libraries( DD4hepDetectors DD4hepCore DD4hepRec ${ROOT_LIBRARIES} Reflex )
+#
+#---Rootmap generation--------------------------------------------------------------
+dd4hep_generate_rootmap( DD4hepDetectors )
+#
+#--- install target-----------------------------------------------------------------
+install( TARGETS DD4hepDetectors LIBRARY DESTINATION lib )
+
+install( DIRECTORY compact
+  DESTINATION DDDetectors
+  PATTERN ".svn" EXCLUDE )
+
+# to do: add corresponding uninstall...
+#-----------------------------------------------------------------------------------
diff --git a/DDDetectors/compact/SiD.xml b/DDDetectors/compact/SiD.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9d65c60260afc34814feead8f79eb3f61424f566
--- /dev/null
+++ b/DDDetectors/compact/SiD.xml
@@ -0,0 +1,228 @@
+<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="clic_sid_cdr"
+        title="CLIC Silicon Detector CDR"
+        author="Christian Grefe"
+        url="https://twiki.cern.ch/twiki/bin/view/CLIC/ClicSidCdr"
+        status="development"
+        version="$Id: compact.xml 1374 2014-11-05 10:49:55Z markus.frank@cern.ch $">
+    <comment>The compact format for the CLIC Silicon Detector used for the conceptual design report</comment>        
+  </info>
+
+  <includes>
+    <gdmlFile  ref="elements.xml"/>
+    <gdmlFile  ref="materials.xml"/>
+    <pyBuilder ref="../drivers"/>
+  </includes>
+  
+  <define>
+    <constant name="world_side" value="30000*mm"/>
+    <constant name="world_x" value="world_side"/>
+    <constant name="world_y" value="world_side"/>
+    <constant name="world_z" value="world_side"/>
+    
+    <constant name="CrossingAngle" value="0.020*rad"/>
+    
+    <constant name="CaloSides" value="12"/>
+    <constant name="MuonSides" value="8"/>
+    
+    <constant name="EcalBarrel_ID" value="6"/>
+    <constant name="EcalBarrel_rmin" value="126.50*cm + world_side - world_side"/>
+    <constant name="EcalBarrel_rmin" value="126.50*cm"/>
+    <constant name="EcalBarrel_zmax" value="176.50*cm"/>
+
+    <constant name="EcalEndcap_ID" value="7"/>
+    <constant name="EcalEndcap_rmin" value="21.0*cm"/>
+    <!-- Correction from going from inner circle to outer circle -->
+    <constant name="EcalEndcap_rmax" value="(EcalBarrel_rmin - 1.5*cm) / (cos(pi/CaloSides))"/> 
+    <constant name="EcalEndcap_zmin" value="165.70*cm"/>
+    
+    <constant name="HcalBarrel_ID" value="8"/>
+    <constant name="HcalBarrel_rmin" value="141.90*cm"/>
+    <constant name="HcalBarrel_layers" value="(int) 75"/>
+    <constant name="HcalBarrel_layer_thickness" value="1.0*cm + 0.65*cm"/>
+
+    <constant name="HcalEndcap_ID" value="9"/>
+    <constant name="HcalEndcap_zmin" value="EcalBarrel_zmax + 4.0*cm"/> <!-- Gap for cables -->
+    <constant name="HcalEndcap_rmin" value="50.0*cm"/>
+    <!-- Correction from going from inner circle to outer circle -->
+    <constant name="HcalEndcap_rmax" value="(HcalBarrel_rmin + HcalBarrel_layers * HcalBarrel_layer_thickness) / (cos(pi/CaloSides))"/>
+    <constant name="HcalEndcap_layers" value="60"/>
+    <constant name="HcalEndcap_layer_thickness" value="2.0*cm + 0.65*cm"/>
+    <constant name="HcalEndcap_zmax" value="HcalEndcap_zmin + HcalEndcap_layers * HcalEndcap_layer_thickness"/>
+
+    <constant name="HcalPlug_ID" value="10"/>
+
+    
+    <constant name="tracking_region_radius" value="EcalBarrel_rmin - 1.0*mm"/>
+    <constant name="tracking_region_zmax" value="EcalEndcap_zmin - 1.0*mm"/>
+    <constant name="VXD_CF_sensor" value="0.026*cm"/>
+    <constant name="VXD_CF_support" value="0.05*cm"/>
+    
+    <constant name="SolenoidBarrelInnerRadius" value="HcalEndcap_rmax + 2.0*cm"/>
+    <constant name="SolenoidCoilOuterZ" value="HcalEndcap_zmax"/> <!-- Aligned with HCAL endcap -->
+    <constant name="SolenoidBarrelInnerCryostatThickness" value="3.0*cm"/>
+    <constant name="SolenoidBarrelInnerAirgapThickness" value="11.0*cm"/>
+    <constant name="SolenoidBarrelAlConductorThickness" value="38.4*cm"/>
+    <constant name="SolenoidBarrelQuenchbackThickness" value="5.0*cm"/>
+    <constant name="SolenoidBarrelOuterAirgapThickness" value="18.7*cm"/>
+    <constant name="SolenoidBarrelOuterCryostatThickness" value="4.0*cm"/>
+    <constant name="SolenoidEndcapCryostatThickness" value="6.0*cm"/>
+    <constant name="SolenoidEndcapAirgapThickness" value="12.0*cm"/>
+    <constant name="SolenoidBarrelOuterZ" value="SolenoidCoilOuterZ+SolenoidEndcapAirgapThickness"/>
+    <constant name="SolenoidBarrelConductorInnerRadius" value="SolenoidBarrelInnerRadius + SolenoidBarrelInnerCryostatThickness + SolenoidBarrelInnerAirgapThickness"/>
+    <constant name="SolenoidBarrelOuterCryostatInnerRadius" value="SolenoidBarrelConductorInnerRadius + SolenoidBarrelAlConductorThickness + SolenoidBarrelQuenchbackThickness"/>
+    <constant name="SolenoidBarrelOuterRadius" value="SolenoidBarrelOuterCryostatInnerRadius + SolenoidBarrelOuterAirgapThickness + SolenoidBarrelOuterCryostatThickness"/>
+    <constant name="SolenoidalFieldRadius" value="(SolenoidBarrelConductorInnerRadius + SolenoidBarrelAlConductorThickness / 2.0)"/>
+    
+
+    <constant name="MuonBarrel_ID" value="11"/>
+    <constant name="MuonBarrel_rmin" value="SolenoidBarrelOuterRadius + 1.0*cm"/>
+    <constant name="MuonBarrel_zmax" value="SolenoidBarrelOuterZ + SolenoidEndcapCryostatThickness"/>
+    <constant name="MuonBarrel_layers" value="15"/>
+    <constant name="MuonBarrel_layer_thickness" value="10.0*cm + 4.0*cm"/>
+
+    <constant name="MuonEndcap_ID" value="12"/>
+    <constant name="MuonEndcap_zmin" value="MuonBarrel_zmax + 10.0*cm"/> <!-- Space for cables etc. -->
+    <constant name="MuonEndcap_rmin" value="69.0*cm"/> <!-- Space for QD0 and anti-solenoid-->
+    <!-- Correction from going from inner circle to outer circle -->
+    <constant name="MuonEndcap_rmax" value="(MuonBarrel_rmin + 57.0*cm + MuonBarrel_layers*MuonBarrel_layer_thickness) / (cos(pi/MuonSides))"/> 
+    <constant name="MuonEndcap_layers" value="18"/>
+    <constant name="MuonEndcap_layer_thickness" value="10.0*cm + 4.0*cm"/>
+    <constant name="MuonEndcap_zmax" value="MuonEndcap_zmin + MuonEndcap_layers * MuonEndcap_layer_thickness"/>
+    
+    <constant name="LumiCal_rmin" value="6.4*cm"/>
+    <constant name="LumiCal_rmax" value="EcalEndcap_rmin + 3.0*cm"/>
+    <constant name="LumiCal_zmin" value="HcalEndcap_zmin"/>
+    <constant name="LumiCal_thickness" value="20*0.371*cm + 15*0.643*cm"/>
+    <constant name="LumiCal_zmax" value="LumiCal_zmin + LumiCal_thickness"/>
+    <constant name="LumiCalElectronics_rmax" value="LumiCal_rmax+5.0*cm"/>
+    
+    <constant name="SupportTube_thickness" value="1.0*cm"/>
+    <constant name="ForwardVacuumValve_thickness" value="36.0*cm"/>
+    <constant name="ForwardShielding_thickness" value="5.0*cm"/>
+    <constant name="ForwardMask_thickness" value="10.0*cm"/>
+    <constant name="ForwardMask_zmin" value="LumiCal_zmax + ForwardShielding_thickness + ForwardVacuumValve_thickness"/>
+    
+    <constant name="VertexSupport_r1" value="16.87*cm"/>
+    <constant name="VertexSupport_r2" value="18.42*cm"/>
+    <constant name="VertexSupport_zmax" value="89.48*cm"/>
+    
+
+    <constant name="VertexBarrel_ID" value="1"/>
+    <constant name="VertexBarrel_zmax" value="10.0*cm"/>
+    <constant name="VertexBarrel_r1" value="2.7*cm"/>
+    <constant name="VertexBarrel_r2" value="3.8*cm"/>
+    <constant name="VertexBarrel_r3" value="5.1*cm"/>
+    <constant name="VertexBarrel_r4" value="6.4*cm"/>
+    <constant name="VertexBarrel_r5" value="7.7*cm"/>
+
+    
+    <constant name="CentralBeamPipe_zmax" value="23.0*cm"/>
+    <constant name="CentralBeamPipe_rmax" value="VertexBarrel_r1 - 0.2*cm"/>
+    <constant name="CentralBeamPipe_thickness" value="CentralBeamPipe_rmax * 0.02"/> <!-- 1% of the diameter -->
+    <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="VertexEndcap_ID" value="2"/>
+    <constant name="VertexEndcap_rmax" value="11.5*cm"/>
+    <constant name="VertexEndcap_z1" value="12.0*cm"/>
+    <constant name="VertexEndcap_z2" value="16.0*cm"/>
+    <constant name="VertexEndcap_z3" value="20.0*cm"/>
+    <constant name="VertexEndcap_z4" value="24.0*cm"/>
+    <constant name="VertexEndcap_offset" value="0.2*cm"/>
+    <constant name="VertexEndcapModules" value="16"/>
+    <constant name="VertexEndcap_rmin1" value="CentralBeamPipe_rmax + VertexEndcap_offset"/>
+    <constant name="VertexEndcap_rmin2" value="CentralBeamPipe_rmax + VertexEndcap_offset"/>
+    <constant name="VertexEndcap_rmin3" value="CentralBeamPipe_rmax + VertexEndcap_offset"/>
+    <constant name="VertexEndcap_rmin4" value="(VertexEndcap_z4 - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexEndcap_offset"/>
+    
+    <constant name="SiTrackerBarrel_ID" value="3"/>
+    <constant name="SiTrackerEndcap_ID" value="4"/>
+
+    <constant name="ForwardTracker_ID" value="5"/>
+    <constant name="ForwardTrackerModules" value="16"/>
+    <constant name="ForwardTracker_rmax" value="16.87*cm"/>
+    <constant name="ForwardTracker_z1" value="28.0*cm"/>
+    <constant name="ForwardTracker_z2" value="50.0*cm"/>
+    <constant name="ForwardTracker_z3" value="83.0*cm"/>
+    <constant name="ForwardTracker_offset" value="0.2*cm"/>
+    <constant name="ForwardTracker_rmin1" value="(ForwardTracker_z1 - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + ForwardTracker_offset"/>
+    <constant name="ForwardTracker_rmin2" value="(ForwardTracker_z2 - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + ForwardTracker_offset"/>
+    <constant name="ForwardTracker_rmin3" value="(ForwardTracker_z3 - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + ForwardTracker_offset"/>
+    
+    <constant name="VertexService_zmin" value="ForwardTracker_z1 + 1.0*cm"/>
+    <constant name="VertexService_zmax" value="VertexService_zmin + 2.0*cm"/>
+    <constant name="VertexServiceThickness" value="0.3*cm"/>
+    <constant name="VertexCableThickness" value="0.005*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"/>    
+
+  </define>
+
+
+  <limits>
+    <limitset name="cal_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="1" r="0.0" g="1.0" b="0.0" showDaughters="true" visible="true"/>
+    <vis name="RedVis"     alpha="1" r="1.0" g="0.0" b="0.0" showDaughters="true" visible="true"/>
+    <vis name="BlueVis"    alpha="1" r="0.0" g="0.0" b="1.0" showDaughters="true" visible="true"/>
+  </display>
+
+  <comment>Additional design specific material definitions</comment>
+  <include ref="SiD/SiD_Materials.xml"/>
+
+  <comment>Tracking detectors</comment>
+  <include ref="SiD/SiD_Vertex.xml"/>
+  <include ref="SiD/SiD_Tracker.xml"/>
+
+  <comment>Calorimeters</comment>
+  <include ref="SiD/SiD_Ecal.xml"/>
+  <include ref="SiD/SiD_Hcal.xml"/>
+  <include ref="SiD/SiD_Muon.xml"/>
+  <include ref="SiD/SiD_Lumical.xml"/>
+  <include ref="SiD/SiD_Beamcal.xml"/>
+
+  <comment>Dead material and supports</comment>
+  <include ref="SiD/SiD_Solenoid.xml"/>
+  <include ref="SiD/SiD_Shields.xml"/>
+
+  <comment>Beampipe</comment>
+  <include ref="SiD/SiD_Beampipe.xml"/>
+  
+  <fields>
+    <field name="GlobalSolenoid" type="solenoid" 
+	   inner_field="5.0*tesla"
+	   outer_field="-1.5*tesla" 
+	   zmax="SolenoidCoilOuterZ"
+	   outer_radius="SolenoidalFieldRadius">
+    </field>
+  </fields>
+</lccdd>
diff --git a/DDDetectors/compact/SiD/SiD_Beamcal.xml b/DDDetectors/compact/SiD/SiD_Beamcal.xml
new file mode 100644
index 0000000000000000000000000000000000000000..11e9ca2129a2f22a4376568a2472d40895807503
--- /dev/null
+++ b/DDDetectors/compact/SiD/SiD_Beamcal.xml
@@ -0,0 +1,56 @@
+<!-- ====================================================================== -->
+<!--                                                                        -->
+<!--    XML description of the complete SiD tracker detector                -->
+<!--    of the SiD linear collider detector design.                         -->
+<!--                                                                        -->
+<!--    Contained are the required                                          -->
+<!--      ++ global constants used uniquely by this module                  -->
+<!--      ++ visualization attributes                                       -->
+<!--      ++ the definition of the readout structure and the                -->
+<!--         readout segmentation (if necessary)                            -->
+<!--      ++ the include statements for the sensitive detectors and         -->
+<!--         the corresponding support structure(s)                         -->
+<!--                                                                        -->
+<!--                                                                        -->
+<!--   @author  M.Frank                                                     -->
+<!--   @date    14/11/2014                                                  -->
+<!--                                                                        -->
+<!-- ====================================================================== -->
+
+<lccdd>
+  <!--  Definition of global dictionary constants          -->
+  <define>
+  </define>
+
+  <!--  Definition of the used visualization attributes    -->
+  <display>
+    <vis name="BeamCalVis" alpha="1" r="0.0" g="0.0" b="1.0" showDaughters="false" visible="true"/>
+  </display>
+
+  <!--  Definition of the readout segmentation/definition  -->
+  <readouts>
+    <readout name="BeamCalHits">
+      <segmentation type="CartesianGridXY" grid_size_x="0.35*cm" grid_size_y="0.35*cm" />
+      <id>system:8,layer:8,barrel:3,layer:8,slice:5,x:32:-16,y:-16</id>
+    </readout>
+  </readouts>
+  
+  <!--  Includes for sensitives and support                -->
+  <detectors>
+    <detector id="14" name="BeamCal" reflect="true" type="DD4hep_ForwardDetector" readout="BeamCalHits" vis="BeamCalVis" calorimeterType="BEAM">
+
+      <comment>Beam Calorimeter</comment>
+
+      <dimensions outer_r="BeamCal_rmax" inner_r="0.0*cm" inner_z="BeamCal_zmin" />
+      <beampipe crossing_angle="BeamCal_crossingAngle" outgoing_r="BeamCal_outgoing_r" incoming_r="BeamCal_incoming_r" />
+      <layer repeat="50">
+	<slice material="TungstenDens24" thickness="0.271*cm" />
+	<slice material="Silicon" thickness="0.032*cm" sensitive="yes" />
+	<slice material="Copper" thickness="0.005*cm" />
+	<slice material="Kapton" thickness="0.030*cm" />
+	<slice material="Air" thickness="0.033*cm" />
+      </layer>
+    </detector>
+
+  </detectors>
+</lccdd>
diff --git a/DDDetectors/compact/SiD/SiD_Beampipe.xml b/DDDetectors/compact/SiD/SiD_Beampipe.xml
new file mode 100644
index 0000000000000000000000000000000000000000..08cb8a97d9ce02db24721c96399429eacae57036
--- /dev/null
+++ b/DDDetectors/compact/SiD/SiD_Beampipe.xml
@@ -0,0 +1,205 @@
+<!-- ====================================================================== -->
+<!--                                                                        -->
+<!--    XML description of the complete SiD beampipe                        -->
+<!--    of the SiD linear collider detector design.                         -->
+<!--                                                                        -->
+<!--    Contained are the required                                          -->
+<!--      ++ global constants used uniquely by this module                  -->
+<!--      ++ visualization attributes                                       -->
+<!--      ++ the definition of the readout structure and the                -->
+<!--         readout segmentation (if necessary)                            -->
+<!--      ++ the include statements for the sensitive detectors and         -->
+<!--         the corresponding support structure(s)                         -->
+<!--                                                                        -->
+<!--                                                                        -->
+<!--   @author  M.Frank                                                     -->
+<!--   @date    14/11/2014                                                  -->
+<!--                                                                        -->
+<!-- ====================================================================== -->
+
+<lccdd>
+  <!--  Definition of global dictionary constants          -->
+  <define>
+  </define>
+
+  <!--  Definition of the used visualization attributes    -->
+  <display>
+    <vis name="BeamPipeVis" r="0.0" g="0.99" b="0.0" showDaughters="false" visible="true"/>
+  </display>
+
+  <detectors>
+    <comment>Beampipe</comment> 
+
+    <detector name="Beampipe" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="BeamPipeVis">
+
+      <comment>Central Be Beampipe</comment>
+
+      <material name="Beryllium"/>
+      <zplane rmin="CentralBeamPipe_rmin" rmax="CentralBeamPipe_rmax" z="-CentralBeamPipe_zmax"/>
+      <zplane rmin="CentralBeamPipe_rmin" rmax="CentralBeamPipe_rmax" z="CentralBeamPipe_zmax" />
+    </detector>
+
+    <detector name="SteelConeZbackward" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="BeamPipeVis">
+      <material name="Iron"/>            
+      <zplane rmin="BeamPipe_rmax - BeamPipe_thickness"
+	      rmax="BeamPipe_rmax"
+	      z="-tracking_region_zmax" /> 
+      <zplane rmin="CentralBeamPipe_rmin"
+	      rmax="(BeamPipe_zmin - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
+	      z="-BeamPipe_zmin" />
+      <zplane rmin="CentralBeamPipe_rmin"
+	      rmax="CentralBeamPipe_rmax"
+	      z="-CentralBeamPipe_zmax"/>
+    </detector>
+
+    <detector name="SteelConeZbackward2" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="BeamPipeVis">
+      <material name="Iron"/>            
+      <zplane rmin="BeamPipe_rmax - BeamPipe_thickness"
+	      rmax="BeamPipe_rmax"
+	      z="-(tracking_region_zmax + 0.01*cm)" /> 
+      <zplane rmin="BeamPipe_rmax - BeamPipe_thickness"
+	      rmax="BeamPipe_rmax"
+	      z="- BeamPipe_zmax" />
+      <zplane rmin="LumiCal_rmin - 2*BeamPipe_endThickness"
+	      rmax="BeamPipe_rmax"
+	      z="- (LumiCal_zmin - 2*BeamPipe_endThickness)" />
+      <zplane rmin="LumiCal_rmin - 2*BeamPipe_endThickness"
+	      rmax="LumiCal_rmin - BeamPipe_endThickness"
+	      z="- (LumiCal_zmin - BeamPipe_endThickness)" />
+      <zplane rmin="LumiCal_rmin - 2*BeamPipe_endThickness"
+	      rmax="LumiCal_rmin - BeamPipe_endThickness"
+	      z="- (ForwardMask_zmin - BeamPipe_endThickness)" />
+    </detector>
+
+    <detector name="SteelConeZforward" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="BeamPipeVis">
+      <material name="Iron"/>
+      <zplane rmin="CentralBeamPipe_rmin"
+	      rmax="CentralBeamPipe_rmax"
+	      z="CentralBeamPipe_zmax"/>            
+      <zplane rmin="CentralBeamPipe_rmin"
+	      rmax="(BeamPipe_zmin - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
+	      z="BeamPipe_zmin" /> 
+      <zplane rmin="BeamPipe_rmax - BeamPipe_thickness"
+	      rmax="BeamPipe_rmax"
+	      z="tracking_region_zmax" />
+    </detector>
+
+    <detector name="SteelConeZforward2" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="BeamPipeVis">
+      <material name="Iron"/>            
+      <zplane rmin="BeamPipe_rmax - BeamPipe_thickness"
+	      rmax="BeamPipe_rmax"
+	      z="tracking_region_zmax + 0.01*cm" /> 
+      <zplane rmin="BeamPipe_rmax - BeamPipe_thickness"
+	      rmax="BeamPipe_rmax"
+	      z="BeamPipe_zmax" />
+      <zplane rmin="LumiCal_rmin - 2*BeamPipe_endThickness"
+	      rmax="BeamPipe_rmax"
+	      z="LumiCal_zmin - 2*BeamPipe_endThickness" />
+      <zplane rmin="LumiCal_rmin - 2*BeamPipe_endThickness"
+	      rmax="LumiCal_rmin - BeamPipe_endThickness"
+	      z="LumiCal_zmin - BeamPipe_endThickness" />
+      <zplane rmin="LumiCal_rmin - 2*BeamPipe_endThickness"
+	      rmax="LumiCal_rmin - BeamPipe_endThickness"
+	      z="ForwardMask_zmin - BeamPipe_endThickness" />
+    </detector>
+
+    <detector name="NorthIncomingBeampipe" type="DD4hep_TubeSegment" vis="BeamPipeVis">
+      <material name="Iron" />
+      <tubs rmin="IncomingBP_radius - IncomingBP_thickness" rmax="IncomingBP_radius" zhalf="(MuonEndcap_zmax - ForwardMask_zmin)/2.0" />
+      <position x="-((ForwardMask_zmin + MuonEndcap_zmax)/2.0*tan(CrossingAngle/rad)/2.0)" y="0" z="(ForwardMask_zmin + MuonEndcap_zmax)/2.0" />
+      <rotation x="0.0" y="CrossingAngle/2.0/rad" z="0.0" />
+    </detector>
+
+
+    <detector name="SouthIncomingBeampipe" type="DD4hep_TubeSegment" vis="BeamPipeVis">
+      <material name="Iron" />
+      <tubs rmin="IncomingBP_radius - IncomingBP_thickness" rmax="IncomingBP_radius" zhalf="(MuonEndcap_zmax - ForwardMask_zmin)/2.0" />
+      <position x="-((ForwardMask_zmin + MuonEndcap_zmax)/2.0*tan(CrossingAngle/rad)/2.0)" y="0" z="- (ForwardMask_zmin + MuonEndcap_zmax)/2.0" />
+      <rotation x="0.0" y="-CrossingAngle/2.0/rad" z="0.0" />
+    </detector>
+
+    <detector name="NorthOutgoingBeampipe" type="DD4hep_TubeSegment" vis="BeamPipeVis">
+      <material name="Iron" />
+      <tubs rmin="OutgoingBP_radius - OutgoingBP_thickness" rmax="OutgoingBP_radius" zhalf="(MuonEndcap_zmax - ForwardMask_zmin)/2.0" />
+      <position x="((ForwardMask_zmin + MuonEndcap_zmax)/2.0*tan(CrossingAngle/rad)/2.0)" y="0" z="(ForwardMask_zmin + MuonEndcap_zmax)/2.0" />
+      <rotation x="0.0" y="-CrossingAngle/2.0/rad" z="0.0" />
+    </detector>
+
+    <detector name="SouthOutgoingBeampipe" type="DD4hep_TubeSegment" vis="BeamPipeVis">
+      <material name="Iron" />
+      <tubs rmin="OutgoingBP_radius - OutgoingBP_thickness" rmax="OutgoingBP_radius" zhalf="(MuonEndcap_zmax - ForwardMask_zmin)/2.0" />
+      <position x="((ForwardMask_zmin + MuonEndcap_zmax)/2.0*tan(CrossingAngle/rad)/2.0)" y="0" z="- (ForwardMask_zmin + MuonEndcap_zmax)/2.0" />
+      <rotation x="0.0" y="CrossingAngle/2.0/rad" z="0.0" />
+    </detector>
+
+    <!-- Beam pipe liner is not needed, use thicker conical steel pipe instead
+	 <detector name="BeamPipeLiner" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="InvisibleNoDaughters">
+	 <comment>BeamPipe Liner to shield bremsstrahlung photons</comment>
+	 <material name="Titanium"/>
+	 <zplane rmin="(tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax - BeamPipe_thickness - BeamPipeLiner_thickness" rmax="(tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax - BeamPipe_thickness" z="-tracking_region_zmax" />
+	 <zplane rmin="CentralBeamPipe_rmax - BeamPipe_thickness - BeamPipeLiner_thickness" rmax="CentralBeamPipe_rmax - BeamPipe_thickness"  z="-(CentralBeamPipe_zmax + 0.01*cm)"/>
+	 <zplane rmin="CentralBeamPipe_rmin - BeamPipeLiner_thickness" rmax="CentralBeamPipe_rmin" z="-CentralBeamPipe_zmax"  />
+	 <zplane rmin="CentralBeamPipe_rmin - BeamPipeLiner_thickness" rmax="CentralBeamPipe_rmin" z="CentralBeamPipe_zmax" />
+	 <zplane rmin="CentralBeamPipe_rmax - BeamPipe_thickness - BeamPipeLiner_thickness" rmax="CentralBeamPipe_rmax - BeamPipe_thickness" z="CentralBeamPipe_zmax + 0.01*cm" />
+	 <zplane rmin="(tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax - BeamPipe_thickness - BeamPipeLiner_thickness" rmax="(tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax - BeamPipe_thickness" z="tracking_region_zmax" />
+	 </detector>
+    -->
+
+    <detector name="BeamPipeVacuum" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="InvisibleNoDaughters">
+
+      <comment>Vacuum inside beampipe</comment>
+
+      <material name="Vacuum"/>
+      <zplane rmin="0.*cm"
+	      rmax="BeamPipe_rmax - BeamPipe_thickness - BeamPipeLiner_thickness"
+	      z="-tracking_region_zmax" />
+      <zplane rmin="0.*cm"
+	      rmax="CentralBeamPipe_rmin - BeamPipeLiner_thickness"
+	      z="-BeamPipe_zmin"  />
+      <zplane rmin="0.*cm"
+	      rmax="CentralBeamPipe_rmin - BeamPipeLiner_thickness"
+	      z="BeamPipe_zmin" />
+      <zplane rmin="0.*cm"
+	      rmax="BeamPipe_rmax - BeamPipe_thickness - BeamPipeLiner_thickness"
+	      z="tracking_region_zmax" />
+    </detector>
+
+    <detector name="ForwardVacuum" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="InvisibleNoDaughters">
+      <material name="Vacuum"/>
+      <zplane rmin="0.*cm"
+	      rmax="BeamPipe_rmax - BeamPipe_thickness"
+	      z="tracking_region_zmax + 0.01*cm" /> 
+      <zplane rmin="0.*cm"
+	      rmax="BeamPipe_rmax - BeamPipe_thickness"
+	      z="BeamPipe_zmax" />
+      <zplane rmin="0.*cm"
+	      rmax="LumiCal_rmin - 2*BeamPipe_endThickness"
+	      z="LumiCal_zmin - 2*BeamPipe_endThickness" />
+      <zplane rmin="0.*cm"
+	      rmax="LumiCal_rmin - 2*BeamPipe_endThickness"
+	      z="LumiCal_zmin - BeamPipe_endThickness" />
+      <zplane rmin="0.*cm"
+	      rmax="LumiCal_rmin - 2*BeamPipe_endThickness"
+	      z="ForwardMask_zmin - BeamPipe_endThickness" />
+    </detector> 
+
+    <detector name="BackwardVacuum" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="InvisibleNoDaughters">
+      <material name="Vacuum"/>
+      <zplane rmin="0.*cm"
+	      rmax="BeamPipe_rmax - BeamPipe_thickness"
+	      z="- (tracking_region_zmax + 0.01*cm)" /> 
+      <zplane rmin="0.*cm"
+	      rmax="BeamPipe_rmax - BeamPipe_thickness"
+	      z="- BeamPipe_zmax" />
+      <zplane rmin="0.*cm"
+	      rmax="LumiCal_rmin - 2*BeamPipe_endThickness"
+	      z="- (LumiCal_zmin - 2*BeamPipe_endThickness)" />
+      <zplane rmin="0.*cm"
+	      rmax="LumiCal_rmin - 2*BeamPipe_endThickness"
+	      z="- (LumiCal_zmin - BeamPipe_endThickness)" />
+      <zplane rmin="0.*cm"
+	      rmax="LumiCal_rmin - 2*BeamPipe_endThickness"
+	      z="- (ForwardMask_zmin - BeamPipe_endThickness)" />
+    </detector>
+  </detectors>
+</lccdd>
\ No newline at end of file
diff --git a/DDDetectors/compact/SiD/SiD_Ecal.xml b/DDDetectors/compact/SiD/SiD_Ecal.xml
new file mode 100644
index 0000000000000000000000000000000000000000..681be63d635964e5fa0838d19fc7065d1c500496
--- /dev/null
+++ b/DDDetectors/compact/SiD/SiD_Ecal.xml
@@ -0,0 +1,49 @@
+<!-- ====================================================================== -->
+<!--                                                                        -->
+<!--    XML description of the complete SiD tracker detector                -->
+<!--    of the SiD linear collider detector design.                         -->
+<!--                                                                        -->
+<!--    Contained are the required                                          -->
+<!--      ++ global constants used uniquely by this module                  -->
+<!--      ++ visualization attributes                                       -->
+<!--      ++ the definition of the readout structure and the                -->
+<!--         readout segmentation (if necessary)                            -->
+<!--      ++ the include statements for the sensitive detectors and         -->
+<!--         the corresponding support structure(s)                         -->
+<!--                                                                        -->
+<!--                                                                        -->
+<!--   @author  M.Frank                                                     -->
+<!--   @date    14/11/2014                                                  -->
+<!--                                                                        -->
+<!-- ====================================================================== -->
+
+<lccdd>
+  <!--  Definition of global dictionary constants          -->
+  <define>
+  </define>
+
+  <!--  Definition of the used visualization attributes    -->
+  <display>
+    <vis name="EcalBarrelVis"       alpha="1.0" r="0" g="0" b="0.3" showDaughters="true" visible="true"/>
+    <vis name="EcalBarrelStaveVis"  alpha="1.0" r="1" g="0.9" b="0.5" showDaughters="false" visible="true"/>
+
+    <vis name="EcalEndcapVis"       alpha="1" r="0.77" g="0.74" b="0.86" showDaughters="false" visible="true"/>
+  </display>
+
+  <!--  Definition of the readout segmentation/definition  -->
+  <readouts>
+    <readout name="EcalBarrelHits">
+      <segmentation type="CartesianGridXY" grid_size_x="3.5" grid_size_y="3.5" />
+      <id>system:8,barrel:3,module:4,layer:6,slice:5,x:32:-16,y:-16</id>
+    </readout>        
+    <readout name="EcalEndcapHits">
+      <segmentation type="CartesianGridXY" grid_size_x="3.5" grid_size_y="3.5" />
+      <id>system:8,barrel:3,module:4,layer:6,slice:5,x:32:-16,y:-16</id>
+    </readout>
+  </readouts>
+
+  <!--  Includes for sensitives and support                -->
+  <include ref="SiD_EcalBarrel.xml"/>
+  <include ref="SiD_EcalEndcap.xml"/>
+
+</lccdd>
diff --git a/DDDetectors/compact/SiD/SiD_EcalBarrel.xml b/DDDetectors/compact/SiD/SiD_EcalBarrel.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e9aa6a737e4d35bdc9e80ce8598dbe692ced1403
--- /dev/null
+++ b/DDDetectors/compact/SiD/SiD_EcalBarrel.xml
@@ -0,0 +1,38 @@
+<!-- ====================================================================== -->
+<!--                                                                        -->
+<!--    XML description of the electromagnetic calorimeter barrel detector  -->
+<!--    of the SiD linear collider detector design.                         -->
+<!--                                                                        -->
+<!-- ====================================================================== -->
+
+<detectors>
+  <detector id="EcalBarrel_ID" name="EcalBarrel" type="DD4hep_EcalBarrel" readout="EcalBarrelHits" vis="EcalBarrelVis" calorimeterType="EM_BARREL">
+
+    <comment>Electromagnetic Calorimeter Barrel</comment>
+
+    <dimensions numsides="(int) CaloSides" rmin="EcalBarrel_rmin" z="EcalBarrel_zmax*2" />
+    <staves vis="EcalBarrelStaveVis"/>
+    <layer repeat="1">
+      <slice material = "Silicon" thickness = "0.032*cm" sensitive = "yes" limits="cal_limits" />
+      <slice material = "Copper"  thickness = "0.005*cm" />
+      <slice material = "Kapton"  thickness = "0.030*cm" />
+      <slice material = "Air"     thickness = "0.033*cm" />
+    </layer>      
+    <layer repeat="20">
+      <slice material = "TungstenDens24" thickness = "0.25*cm" />
+      <slice material = "Air"     thickness = "0.025*cm" />
+      <slice material = "Silicon" thickness = "0.032*cm" sensitive = "yes" limits="cal_limits" />
+      <slice material = "Copper"  thickness = "0.005*cm" />
+      <slice material = "Kapton"  thickness = "0.030*cm" />
+      <slice material = "Air"     thickness = "0.033*cm" />
+    </layer>
+    <layer repeat="10">
+      <slice material = "TungstenDens24" thickness = "0.5*cm" />
+      <slice material = "Air"     thickness = "0.025*cm" />
+      <slice material = "Silicon" thickness = "0.032*cm" sensitive = "yes" limits="cal_limits" />
+      <slice material = "Copper"  thickness = "0.005*cm" />
+      <slice material = "Kapton"  thickness = "0.030*cm" />
+      <slice material = "Air"     thickness = "0.033*cm" />
+    </layer>
+  </detector>
+</detectors>
diff --git a/DDDetectors/compact/SiD/SiD_EcalEndcap.xml b/DDDetectors/compact/SiD/SiD_EcalEndcap.xml
new file mode 100644
index 0000000000000000000000000000000000000000..12597ade0a92fe7ea36717b84e1b9967d461b8f8
--- /dev/null
+++ b/DDDetectors/compact/SiD/SiD_EcalEndcap.xml
@@ -0,0 +1,37 @@
+<!-- ====================================================================== -->
+<!--                                                                        -->
+<!--    XML description of the electromagnetic calorimeter endcap detector  -->
+<!--    of the SiD linear collider detector design.                         -->
+<!--                                                                        -->
+<!-- ====================================================================== -->
+
+<detectors>
+  <detector id="EcalEndcap_ID" name="EcalEndcap" type="DD4hep_PolyhedraEndcapCalorimeter2" reflect="true" readout="EcalEndcapHits" vis="EcalEndcapVis" calorimeterType="EM_ENDCAP">
+
+    <comment>Electromagnetic Calorimeter Endcaps</comment>
+
+    <dimensions numsides="(int) CaloSides" zmin="EcalEndcap_zmin" rmin="EcalEndcap_rmin" rmax="EcalEndcap_rmax" />
+    <layer repeat="1">
+      <slice material = "Silicon" thickness = "0.032*cm" sensitive = "yes" limits="cal_limits" />
+      <slice material = "Copper"  thickness = "0.005*cm" />
+      <slice material = "Kapton"  thickness = "0.030*cm" />
+      <slice material = "Air"     thickness = "0.033*cm" />
+    </layer>       
+    <layer repeat="20">
+      <slice material = "TungstenDens24" thickness = "0.25*cm" />
+      <slice material = "Air"     thickness = "0.025*cm" />
+      <slice material = "Silicon" thickness = "0.032*cm" sensitive = "yes" limits="cal_limits" />
+      <slice material = "Copper"  thickness = "0.005*cm" />
+      <slice material = "Kapton"  thickness = "0.030*cm" />
+      <slice material = "Air"     thickness = "0.033*cm" />
+    </layer>
+    <layer repeat="10">
+      <slice material = "TungstenDens24" thickness = "0.5*cm" />
+      <slice material = "Air"     thickness = "0.025*cm" />
+      <slice material = "Silicon" thickness = "0.032*cm" sensitive = "yes" limits="cal_limits" />
+      <slice material = "Copper"  thickness = "0.005*cm" />
+      <slice material = "Kapton"  thickness = "0.030*cm" />
+      <slice material = "Air"     thickness = "0.033*cm" />
+    </layer>
+  </detector>
+</detectors>
diff --git a/DDDetectors/compact/SiD/SiD_Hcal.xml b/DDDetectors/compact/SiD/SiD_Hcal.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2dee1d988c5228d5972f7a11ea2216443a6ca5b8
--- /dev/null
+++ b/DDDetectors/compact/SiD/SiD_Hcal.xml
@@ -0,0 +1,56 @@
+<!-- ====================================================================== -->
+<!--                                                                        -->
+<!--    XML description of the complete SiD tracker detector                -->
+<!--    of the SiD linear collider detector design.                         -->
+<!--                                                                        -->
+<!--    Contained are the required                                          -->
+<!--      ++ global constants used uniquely by this module                  -->
+<!--      ++ visualization attributes                                       -->
+<!--      ++ the definition of the readout structure and the                -->
+<!--         readout segmentation (if necessary)                            -->
+<!--      ++ the include statements for the sensitive detectors and         -->
+<!--         the corresponding support structure(s)                         -->
+<!--                                                                        -->
+<!--                                                                        -->
+<!--   @author  M.Frank                                                     -->
+<!--   @date    14/11/2014                                                  -->
+<!--                                                                        -->
+<!-- ====================================================================== -->
+
+<lccdd>
+  <!--  Definition of global dictionary constants          -->
+  <define>
+  </define>
+
+  <!--  Definition of the used visualization attributes    -->
+  <display>
+    <vis name="HcalBarrelVis"          alpha="1" r="1"    g="1"    b="0.1" showDaughters="true" visible="true"/>
+    <vis name="HcalBarrelStavesVis"    alpha="1" r="1"    g="0"    b="0.3" showDaughters="true" visible="true"/>
+    <vis name="HcalBarrelLayerVis"     alpha="1" r="1"    g="0"    b="0.5" showDaughters="true" visible="true"/>
+    <vis name="HcalBarrelSensorVis"    alpha="1" r="1"    g="1"    b="0.7" showDaughters="true" visible="true"/>
+
+    <vis name="HcalEndcapVis"          alpha="1" r="1"    g="1"    b="0.1" showDaughters="false" visible="true"/>
+    <vis name="HcalEndcapLayerVis"     alpha="1" r="1"    g="0"    b="0.5" showDaughters="false" visible="true"/>
+  </display>
+  
+  <!--  Definition of the readout segmentation/definition  -->
+  <readouts>
+    <readout name="HcalBarrelHits">
+      <segmentation type="CartesianGridXY" grid_size_x="3.0*cm" grid_size_y="3.0*cm" />
+      <id>system:8,barrel:3,module:6,layer:8,slice:5,x:32:-16,y:-16</id>
+    </readout>
+    <readout name="HcalEndcapHits">
+      <segmentation type="CartesianGridXY" grid_size_x="3.0*cm" grid_size_y="3.0*cm" />
+      <id>system:8,barrel:3,module:4,layer:8,slice:5,x:32:-16,y:-16</id>
+    </readout>
+    <readout name="HcalPlugHits">
+      <segmentation type="CartesianGridXY" grid_size_x="3.0*cm" grid_size_y="3.0*cm" />
+      <id>system:8,barrel:3,module:4,layer:8,slice:5,x:32:-16,y:-16</id>
+    </readout>
+  </readouts>
+
+  <!--  Includes for sensitives and support                -->
+  <include ref="SiD_HcalBarrel.xml"/>
+  <include ref="SiD_HcalEndcap.xml"/>
+
+</lccdd>
diff --git a/DDDetectors/compact/SiD/SiD_HcalBarrel.xml b/DDDetectors/compact/SiD/SiD_HcalBarrel.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f115bc44b57f58c7104bde3d1f6c2257e1021b4a
--- /dev/null
+++ b/DDDetectors/compact/SiD/SiD_HcalBarrel.xml
@@ -0,0 +1,21 @@
+<!-- ====================================================================== -->
+<!--                                                                        -->
+<!--    XML description of the hadronic calorimeter barrel detector (HCAL)  -->
+<!--    of the SiD linear collider detector design.                         -->
+<!--                                                                        -->
+<!-- ====================================================================== -->
+
+<detectors>
+  <detector id="HcalBarrel_ID" name="HcalBarrel" type="DD4hep_PolyhedraBarrelCalorimeter2" readout="HcalBarrelHits" vis="HcalBarrelVis" calorimeterType="HAD_BARREL" gap="0.*cm" material="Steel235">
+
+    <comment>Hadron Calorimeter Barrel</comment>
+
+    <dimensions numsides="(int) CaloSides" rmin="HcalBarrel_rmin" z="EcalBarrel_zmax*2"/>
+    <staves vis="HcalBarrelStavesVis"/>
+    <layer repeat="(int) HcalBarrel_layers">
+      <slice material = "TungstenDens24" thickness = "1.00*cm" />
+      <slice material = "Polystyrene" thickness = "0.50*cm" sensitive = "yes" limits="cal_limits" vis="HcalBarrelSensorVis"/>       
+      <slice material = "Air" thickness = "0.15*cm" />
+    </layer>
+  </detector>
+</detectors>
diff --git a/DDDetectors/compact/SiD/SiD_HcalEndcap.xml b/DDDetectors/compact/SiD/SiD_HcalEndcap.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ec64195ee377d6b98f41e614f1269bc0073a9c4a
--- /dev/null
+++ b/DDDetectors/compact/SiD/SiD_HcalEndcap.xml
@@ -0,0 +1,21 @@
+<!-- ====================================================================== -->
+<!--                                                                        -->
+<!--    XML description of the hadronic calorimeter endcap detector (HCAL)  -->
+<!--    of the SiD linear collider detector design.                         -->
+<!--                                                                        -->
+<!-- ====================================================================== -->
+
+<detectors>
+  <detector id="9" name="HcalEndcap" type="DD4hep_PolyhedraEndcapCalorimeter2" readout="HcalEndcapHits" vis="HcalEndcapVis" calorimeterType="HAD_ENDCAP">
+
+    <comment>Hadron Calorimeter Endcaps</comment>
+
+    <dimensions numsides="(int) CaloSides" zmin="HcalEndcap_zmin" rmin="HcalEndcap_rmin" rmax="HcalEndcap_rmax" />
+    <layer repeat="(int) HcalEndcap_layers">
+      <slice material = "Steel235" thickness = "2.0*cm" />
+      <slice material = "Polystyrene" thickness = "0.50*cm" sensitive = "yes" limits="cal_limits" />        
+      <slice material = "Air" thickness = "0.15*cm" />
+    </layer>
+  </detector>
+
+</detectors>
diff --git a/DDDetectors/compact/SiD/SiD_HcalPlug.xml b/DDDetectors/compact/SiD/SiD_HcalPlug.xml
new file mode 100644
index 0000000000000000000000000000000000000000..02378e4e0870580d139733bf94c7f49831ab861f
--- /dev/null
+++ b/DDDetectors/compact/SiD/SiD_HcalPlug.xml
@@ -0,0 +1,34 @@
+<!-- ====================================================================== -->
+<!--                                                                        -->
+<!--    XML description of the hadronic calorimeter okug detector (HCAL)    -->
+<!--    of the SiD linear collider detector design.                         -->
+<!--                                                                        -->
+<!-- ====================================================================== -->
+
+<detectors>
+  <detector id="HcalPlug_ID" name="HcalPlug" type="DD4hep_PolyhedraEndcapCalorimeter2" readout="HcalPlugHits" vis="MuonEndcapVis">
+
+    <comment>Hadron Calorimeter Plug</comment>
+
+    <dimensions numsides="(int) CaloSides" zmin="SolenoidCoilOuterZ" rmin="MuonEndcap_rmin" rmax="HcalEndcap_rmax" />
+    <layer repeat="1" vis="MuonEndcapLayerVis">
+      <slice material="Iron" thickness="15.0*cm"  vis="MuonEndcapAbsorberVis"/>
+      <slice material="Aluminum" thickness="0.1*cm" />
+      <slice material="Air" thickness="0.35*cm" />
+      <slice material="PyrexGlass" thickness="0.2*cm" />
+      <slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes"  vis="MuonEndcapSensorVis"/>
+      <slice material="PyrexGlass" thickness="0.2*cm" />
+      <slice material="Air" thickness="0.35*cm" />
+      <slice material="Aluminum" thickness="0.1*cm" />
+      <slice material="Aluminum" thickness="0.1*cm" />
+      <slice material="Air" thickness="0.35*cm" />
+      <slice material="PyrexGlass" thickness="0.2*cm" />
+      <slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes"  vis="MuonEndcapSensorVis"/>
+      <slice material="PyrexGlass" thickness="0.2*cm" />
+      <slice material="Air" thickness="0.35*cm" />
+      <slice material="Aluminum" thickness="0.1*cm" />
+      <slice material="Air" thickness="1.0*cm" />
+      <slice material="Iron" thickness="9.0*cm"  vis="MuonEndcapAbsorberVis"/>
+    </layer>
+  </detector>
+</detectors>
diff --git a/DDDetectors/compact/SiD/SiD_Lumical.xml b/DDDetectors/compact/SiD/SiD_Lumical.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a295fd404d55e68dfb36ecd4320ee3d0e9f30dd2
--- /dev/null
+++ b/DDDetectors/compact/SiD/SiD_Lumical.xml
@@ -0,0 +1,76 @@
+<!-- ====================================================================== -->
+<!--                                                                        -->
+<!--    XML description of the complete SiD tracker detector                -->
+<!--    of the SiD linear collider detector design.                         -->
+<!--                                                                        -->
+<!--    Contained are the required                                          -->
+<!--      ++ global constants used uniquely by this module                  -->
+<!--      ++ visualization attributes                                       -->
+<!--      ++ the definition of the readout structure and the                -->
+<!--         readout segmentation (if necessary)                            -->
+<!--      ++ the include statements for the sensitive detectors and         -->
+<!--         the corresponding support structure(s)                         -->
+<!--                                                                        -->
+<!--                                                                        -->
+<!--   @author  M.Frank                                                     -->
+<!--   @date    14/11/2014                                                  -->
+<!--                                                                        -->
+<!-- ====================================================================== -->
+
+<lccdd>
+  <!--  Definition of global dictionary constants          -->
+  <define>
+  </define>
+
+  <!--  Definition of the used visualization attributes    -->
+  <display>
+    <vis name="LumiCalVis" alpha="1" r="0.0" g="0.0" b="1.0" showDaughters="false" visible="true"/>
+  </display>
+
+  <!--  Definition of the readout segmentation/definition  -->
+  <readouts>
+    <readout name="LumiCalHits">
+      <segmentation type="CartesianGridXY" grid_size_x="0.35*cm" grid_size_y="0.35*cm" />
+      <id>system:8,barrel:3,layer:8,slice:8,x:32:-16,y:-16</id>
+    </readout>
+  </readouts>
+  
+  <!--  Includes for sensitives and support                -->
+  <detectors>
+    <detector id="13" name="LumiCal" reflect="true" type="DD4hep_CylindricalEndcapCalorimeter" readout="LumiCalHits" vis="LumiCalVis" calorimeterType="LUMI">
+
+      <comment>Luminosity Calorimeter</comment>
+
+      <dimensions inner_r = "LumiCal_rmin" inner_z = "LumiCal_zmin" outer_r = "LumiCal_rmax" />
+      <layer repeat="20" >
+	<slice material = "TungstenDens24" thickness = "0.271*cm" />
+	<slice material = "Silicon" thickness = "0.032*cm" sensitive = "yes" />
+	<slice material = "Copper"  thickness = "0.005*cm" />
+	<slice material = "Kapton"  thickness = "0.030*cm" />
+	<slice material = "Air"     thickness = "0.033*cm" />
+      </layer>
+      <layer repeat="15" >
+	<slice material = "TungstenDens24" thickness = "0.543*cm" />
+	<slice material = "Silicon" thickness = "0.032*cm" sensitive = "yes" />
+	<slice material = "Copper"  thickness = "0.005*cm" />
+	<slice material = "Kapton"  thickness = "0.030*cm" />
+	<slice material = "Air"     thickness = "0.033*cm" />
+      </layer>
+    </detector>
+
+    <detector name="LumiReadout_Forward" type="DD4hep_PolyconeSupport" vis="LumiCalVis">
+      <comment>Readout for Luminosity Calorimeter</comment>
+      <material name="G10"/>
+      <zplane rmin="LumiCal_rmax" rmax="LumiCalElectronics_rmax" z="LumiCal_zmin"/>
+      <zplane rmin="LumiCal_rmax" rmax="LumiCalElectronics_rmax" z="LumiCal_zmin+LumiCal_thickness"/>
+    </detector>
+    
+    <detector name="LumiReadout_Backward" type="DD4hep_PolyconeSupport" vis="LumiCalVis">
+      <comment>Readout for Luminosity Calorimeter</comment>
+      <material name="G10"/>
+      <zplane rmin="LumiCal_rmax" rmax="LumiCalElectronics_rmax" z="-LumiCal_zmin"/>
+      <zplane rmin="LumiCal_rmax" rmax="LumiCalElectronics_rmax" z="-(LumiCal_zmin+LumiCal_thickness)"/>
+    </detector>
+    
+  </detectors>
+</lccdd>
diff --git a/DDDetectors/compact/SiD/SiD_Materials.xml b/DDDetectors/compact/SiD/SiD_Materials.xml
new file mode 100644
index 0000000000000000000000000000000000000000..658a0a76e1bc1367dce4987299b91da6135af03f
--- /dev/null
+++ b/DDDetectors/compact/SiD/SiD_Materials.xml
@@ -0,0 +1,58 @@
+<lccdd>
+  <materials>
+    <material name="TungstenDens23">
+      <D value="17.7" unit="g/cm3"/>
+      <fraction n="0.925" ref="W"/>
+      <fraction n="0.066" ref="Ni"/>
+      <fraction n="0.009" ref="Fe"/>
+    </material>
+    <material name="TungstenDens24">
+      <D value="17.8" unit="g/cm3"/>
+      <fraction n="0.93" ref="W"/>
+      <fraction n="0.061" ref="Ni"/>
+      <fraction n="0.009" ref="Fe"/>
+    </material>
+    <material name="TungstenDens25">
+      <D value="18.2" unit="g/cm3"/>
+      <fraction n="0.950" ref="W"/>
+      <fraction n="0.044" ref="Ni"/>
+      <fraction n="0.006" ref="Fe"/>
+    </material>
+    <material name="CarbonFiber_25percent">
+      <D type="density" value="0.375" unit="g/cm3"/>
+      <fraction n="1.0" ref="CarbonFiber"/>
+    </material>
+    <material name="CarbonFiber_15percent">
+      <D type="density" value="0.225" unit="g/cm3"/>
+      <fraction n="1.0" ref="CarbonFiber"/>
+    </material>
+    <material name="Rohacell31_50percent">
+      <D type="density" value="0.016" unit="g/cm3"/>
+      <fraction n="1.0" ref="Rohacell31"/>
+    </material>
+    <material name="Rohacell31_15percent">
+      <D type="density" value="0.0048" unit="g/cm3"/>
+      <fraction n="1.0" ref="Rohacell31"/>
+    </material>
+    <material name="BoratedPolyethylene5">
+      <D value="0.93" unit="g/cm3"/>
+      <fraction n="0.612" ref="C"/>
+      <fraction n="0.222" ref="O"/>
+      <fraction n="0.116" ref="H"/>
+      <fraction n="0.050" ref="B"/>
+    </material>
+    <material name="SiliconCarbide">
+      <D value="3.1" unit="g/cm3"/>
+      <composite n="1" ref="Si"/>
+      <composite n="1" ref="C"/>
+    </material> 
+    <material name="SiliconCarbide_6percent">
+      <D value="0.186" unit="g/cm3"/>
+      <fraction n="1.0" ref="SiliconCarbide"/>
+    </material>
+    <material name="Graphite">
+      <D value="1.7" unit="g/cm3"/>
+      <composite n="1" ref="C"/>
+    </material>      
+  </materials>
+</lccdd>
diff --git a/DDDetectors/compact/SiD/SiD_Muon.xml b/DDDetectors/compact/SiD/SiD_Muon.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fca11e51b7215d45c43c2d6d0134349fbfaa9793
--- /dev/null
+++ b/DDDetectors/compact/SiD/SiD_Muon.xml
@@ -0,0 +1,55 @@
+<!-- ====================================================================== -->
+<!--                                                                        -->
+<!--    XML description of the complete SiD tracker detector                -->
+<!--    of the SiD linear collider detector design.                         -->
+<!--                                                                        -->
+<!--    Contained are the required                                          -->
+<!--      ++ global constants used uniquely by this module                  -->
+<!--      ++ visualization attributes                                       -->
+<!--      ++ the definition of the readout structure and the                -->
+<!--         readout segmentation (if necessary)                            -->
+<!--      ++ the include statements for the sensitive detectors and         -->
+<!--         the corresponding support structure(s)                         -->
+<!--                                                                        -->
+<!--                                                                        -->
+<!--   @author  M.Frank                                                     -->
+<!--   @date    14/11/2014                                                  -->
+<!--                                                                        -->
+<!-- ====================================================================== -->
+
+<lccdd>
+  <!--  Definition of global dictionary constants          -->
+  <define>
+  </define>
+
+  <!--  Definition of the used visualization attributes    -->
+  <display>
+    <vis name="MuonBarrelVis"          alpha="1" r="1"    g="0.4"  b="0.62" showDaughters="true" visible="true"/>
+    <vis name="MuonBarrelStavesVis"    alpha="1" r="0"    g="0.7"  b="0.3" showDaughters="true" visible="true"/>
+    <vis name="MuonBarrelLayerVis"     alpha="1" r="0"    g="1"    b="0.3" showDaughters="true" visible="true"/>
+    <vis name="MuonBarrelSensorVis"    alpha="1" r="0.54" g="0.4"  b="0.41" visible="true"/>
+    <vis name="MuonBarrelAbsorberVis"  alpha="1" r="0.28" g="0.4"  b="0.62" visible="true"/>        
+
+    <vis name="MuonEndcapVis"          alpha="1" r="1"    g="0.4"  b="0.62" showDaughters="true" visible="true"/>
+    <vis name="MuonEndcapLayerVis"     alpha="1" r="0"    g="1"    b="0.3"  showDaughters="true" visible="true"/>
+    <vis name="MuonEndcapSensorVis"    alpha="1" r="0.54" g="0.4"  b="0.41" visible="true"/>
+    <vis name="MuonEndcapAbsorberVis"  alpha="1" r="0.28" g="0.4"  b="0.62" visible="true"/>        
+  </display>
+
+  <!--  Definition of the readout segmentation/definition  -->
+  <readouts>
+    <readout name="MuonBarrelHits">
+      <segmentation type="CartesianGridXY" grid_size_x="3.0*cm" grid_size_y="3.0*cm" />
+      <id>system:8,barrel:3,module:4,layer:8,slice:5,x:32:-16,y:-16</id>
+    </readout>
+    <readout name="MuonEndcapHits">
+      <segmentation type="CartesianGridXY" grid_size_x="3.0*cm" grid_size_y="3.0*cm" />
+      <id>system:8,barrel:3,module:4,layer:8,slice:5,x:32:-16,y:-16</id>
+    </readout>
+  </readouts>
+
+  <!--  Includes for sensitives and support                -->
+  <include ref="SiD_MuonBarrel.xml"/>
+  <include ref="SiD_MuonEndcap.xml"/>
+
+</lccdd>
diff --git a/DDDetectors/compact/SiD/SiD_MuonBarrel.xml b/DDDetectors/compact/SiD/SiD_MuonBarrel.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c12e86fddf89ae79f9ca4526802d82819d63b0d2
--- /dev/null
+++ b/DDDetectors/compact/SiD/SiD_MuonBarrel.xml
@@ -0,0 +1,90 @@
+<!-- ====================================================================== -->
+<!--                                                                        -->
+<!--    XML description of the muon barrel calorimeter detector             -->
+<!--    of the SiD linear collider detector design.                         -->
+<!--                                                                        -->
+<!-- ====================================================================== -->
+
+<detectors>
+  <detector id="MuonBarrel_ID" name="MuonBarrel" type="DD4hep_PolyhedraBarrelCalorimeter2" readout="MuonBarrelHits" vis="MuonBarrelVis" calorimeterType="MUON_BARREL" gap="0.*cm" material="Steel235">
+
+    <comment>Muon Calorimeter Barrel</comment>
+
+    <dimensions numsides="(int) MuonSides" rmin="MuonBarrel_rmin" z="MuonBarrel_zmax * 2"/>
+    <staves vis="MuonBarrelStavesVis"/>
+
+    <layer repeat="1" vis="MuonBarrelLayerVis">
+      <slice material="Aluminum" thickness="0.1*cm" />
+      <slice material="Air" thickness="0.35*cm" />
+      <slice material="PyrexGlass" thickness="0.2*cm" />
+      <slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes" vis="MuonBarrelSensorVis"/>
+      <slice material="PyrexGlass" thickness="0.2*cm" />
+      <slice material="Air" thickness="0.35*cm" />
+      <slice material="Aluminum" thickness="0.1*cm" />
+      <slice material="Aluminum" thickness="0.1*cm" />
+      <slice material="Air" thickness="0.35*cm" />
+      <slice material="PyrexGlass" thickness="0.2*cm" />
+      <slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes" vis="MuonBarrelSensorVis"/>
+      <slice material="PyrexGlass" thickness="0.2*cm" />
+      <slice material="Air" thickness="0.35*cm" />
+      <slice material="Aluminum" thickness="0.1*cm" />
+      <slice material="Air" thickness="1.0*cm" />
+      <slice material="Iron" thickness="5.0*cm" vis="MuonBarrelAbsorberVis"/>
+    </layer>
+    <layer repeat="1" vis="MuonBarrelLayerVis">
+      <slice material="Aluminum" thickness="0.1*cm" />
+      <slice material="Air" thickness="0.35*cm" />
+      <slice material="PyrexGlass" thickness="0.2*cm" />
+      <slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes" vis="MuonBarrelSensorVis"/>
+      <slice material="PyrexGlass" thickness="0.2*cm" />
+      <slice material="Air" thickness="0.35*cm" />
+      <slice material="Aluminum" thickness="0.1*cm" />
+      <slice material="Aluminum" thickness="0.1*cm" />
+      <slice material="Air" thickness="0.35*cm" />
+      <slice material="PyrexGlass" thickness="0.2*cm" />
+      <slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes" vis="MuonBarrelSensorVis"/>
+      <slice material="PyrexGlass" thickness="0.2*cm" />
+      <slice material="Air" thickness="0.35*cm" />
+      <slice material="Aluminum" thickness="0.1*cm" />
+      <slice material="Air" thickness="1.0*cm" />
+      <slice material="Iron" thickness="20.0*cm" vis="MuonBarrelAbsorberVis"/>
+    </layer>
+    <layer repeat="(int) MuonBarrel_layers" vis="MuonBarrelLayerVis">
+      <slice material="Aluminum" thickness="0.1*cm" />
+      <slice material="Air" thickness="0.35*cm" />
+      <slice material="PyrexGlass" thickness="0.2*cm" />
+      <slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes" vis="MuonBarrelSensorVis"/>
+      <slice material="PyrexGlass" thickness="0.2*cm" />
+      <slice material="Air" thickness="0.35*cm" />
+      <slice material="Aluminum" thickness="0.1*cm" />
+      <slice material="Aluminum" thickness="0.1*cm" />
+      <slice material="Air" thickness="0.35*cm" />
+      <slice material="PyrexGlass" thickness="0.2*cm" />
+      <slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes" vis="MuonBarrelSensorVis"/>
+      <slice material="PyrexGlass" thickness="0.2*cm" />
+      <slice material="Air" thickness="0.35*cm" />
+      <slice material="Aluminum" thickness="0.1*cm" />
+      <slice material="Air" thickness="1.0*cm" />
+      <slice material="Iron" thickness="10.0*cm" vis="MuonBarrelAbsorberVis"/>
+    </layer>
+
+    <layer repeat="1" vis="MuonBarrelLayerVis">
+      <slice material="Aluminum" thickness="0.1*cm" />
+      <slice material="Air" thickness="0.35*cm" />
+      <slice material="PyrexGlass" thickness="0.2*cm" />
+      <slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes" vis="MuonBarrelSensorVis"/>
+      <slice material="PyrexGlass" thickness="0.2*cm" />
+      <slice material="Air" thickness="0.35*cm" />
+      <slice material="Aluminum" thickness="0.1*cm" />
+      <slice material="Aluminum" thickness="0.1*cm" />
+      <slice material="Air" thickness="0.35*cm" />
+      <slice material="PyrexGlass" thickness="0.2*cm" />
+      <slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes" vis="MuonBarrelSensorVis"/>
+      <slice material="PyrexGlass" thickness="0.2*cm" />
+      <slice material="Air" thickness="0.35*cm" />
+      <slice material="Aluminum" thickness="0.1*cm" />
+      <slice material="Air" thickness="1.0*cm" />
+      <slice material="Iron" thickness="20.0*cm" vis="MuonBarrelAbsorberVis"/>
+    </layer>
+  </detector>
+</detectors>
diff --git a/DDDetectors/compact/SiD/SiD_MuonEndcap.xml b/DDDetectors/compact/SiD/SiD_MuonEndcap.xml
new file mode 100644
index 0000000000000000000000000000000000000000..73baced9cd520b6e963083f12307a7f176938d41
--- /dev/null
+++ b/DDDetectors/compact/SiD/SiD_MuonEndcap.xml
@@ -0,0 +1,33 @@
+<!-- ====================================================================== -->
+<!--                                                                        -->
+<!--    XML description of the muon endcap calorimeter detector             -->
+<!--    of the SiD linear collider detector design.                         -->
+<!--                                                                        -->
+<!-- ====================================================================== -->
+
+<detectors>
+  <detector id="MuonEndcap_ID" name="MuonEndcap" type="DD4hep_PolyhedraEndcapCalorimeter2" readout="MuonEndcapHits" reflect="true" vis="MuonEndcapVis" calorimeterType="MUON_ENDCAP">
+
+    <comment>Muon Calorimeter Endcaps</comment>
+
+    <dimensions numsides="(int) MuonSides" zmin="MuonEndcap_zmin" rmin="MuonEndcap_rmin" rmax="MuonEndcap_rmax" />
+    <layer repeat="(int) MuonEndcap_layers" vis="MuonEndcapLayerVis">
+      <slice material="Iron" thickness="10.0*cm"  vis="MuonEndcapAbsorberVis"/>
+      <slice material="Aluminum" thickness="0.1*cm" />
+      <slice material="Air" thickness="0.35*cm" />
+      <slice material="PyrexGlass" thickness="0.2*cm" />
+      <slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes"  vis="MuonEndcapSensorVis"/>
+      <slice material="PyrexGlass" thickness="0.2*cm" />
+      <slice material="Air" thickness="0.35*cm" />
+      <slice material="Aluminum" thickness="0.1*cm" />
+      <slice material="Aluminum" thickness="0.1*cm" />
+      <slice material="Air" thickness="0.35*cm" />
+      <slice material="PyrexGlass" thickness="0.2*cm" />
+      <slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes"  vis="MuonEndcapSensorVis"/>
+      <slice material="PyrexGlass" thickness="0.2*cm" />
+      <slice material="Air" thickness="0.35*cm" />
+      <slice material="Aluminum" thickness="0.1*cm" />
+      <slice material="Air" thickness="1.0*cm" />
+    </layer>
+  </detector>
+</detectors>
diff --git a/DDDetectors/compact/SiD/SiD_Shields.xml b/DDDetectors/compact/SiD/SiD_Shields.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c7a7c9fc0eeccd32428801aedb1e22cb5e9fb908
--- /dev/null
+++ b/DDDetectors/compact/SiD/SiD_Shields.xml
@@ -0,0 +1,106 @@
+<!-- ====================================================================== -->
+<!--                                                                        -->
+<!--    XML description of the complete SiD tracker detector                -->
+<!--    of the SiD linear collider detector design.                         -->
+<!--                                                                        -->
+<!--    Contained are the required                                          -->
+<!--      ++ global constants used uniquely by this module                  -->
+<!--      ++ visualization attributes                                       -->
+<!--      ++ the definition of the readout structure and the                -->
+<!--         readout segmentation (if necessary)                            -->
+<!--      ++ the include statements for the sensitive detectors and         -->
+<!--         the corresponding support structure(s)                         -->
+<!--                                                                        -->
+<!--                                                                        -->
+<!--   @author  M.Frank                                                     -->
+<!--   @date    14/11/2014                                                  -->
+<!--                                                                        -->
+<!-- ====================================================================== -->
+
+<lccdd>
+
+  <!--  Definition of the used visualization attributes    -->
+  <display>
+    <vis name="CableVis" showDaughters="false" visible="true"/>    
+    <vis name="SupportVis" alpha="1" r="0.8" g="0.8" b="0" showDaughters="false" visible="true"/>
+    <vis name="SupportTubeVis" r="0.1" g="0.1" b="0.99" showDaughters="false" visible="true"/>
+    <vis name="TungstenShieldingVis" r="0.99" g="0.1" b="0.2" showDaughters="false" visible="true"/>
+  </display>
+
+  <!--  Includes for sensitives and support                -->
+  <detectors>
+
+    <comment>Masks and Shielding</comment>
+
+    <detector name="LumiShielding_Forward" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="TungstenShieldingVis">
+      <material name="TungstenDens24" />
+      <zplane rmin="LumiCal_rmin" rmax="LumiCalElectronics_rmax" z="LumiCal_zmax"/>
+      <zplane rmin="LumiCal_rmin" rmax="LumiCalElectronics_rmax" z="LumiCal_zmax+ForwardShielding_thickness"/>
+    </detector>
+    <detector name="LumiShielding_Backward" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="TungstenShieldingVis">
+      <material name="TungstenDens24" />
+      <zplane rmin="LumiCal_rmin" rmax="LumiCalElectronics_rmax" z="-LumiCal_zmax"/>
+      <zplane rmin="LumiCal_rmin" rmax="LumiCalElectronics_rmax" z="-(LumiCal_zmax+ForwardShielding_thickness)"/>
+    </detector>
+    <detector name="ECalShielding_Forward" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="TungstenShieldingVis">
+      <material name="TungstenDens24" />
+      <zplane rmin="LumiCalElectronics_rmax" rmax="HcalEndcap_rmin-SupportTube_thickness-1.0*cm" z="HcalEndcap_zmin"/>
+      <zplane rmin="LumiCalElectronics_rmax" rmax="HcalEndcap_rmin-SupportTube_thickness-1.0*cm" z="HcalEndcap_zmin+ForwardShielding_thickness"/>
+    </detector>
+    <detector name="ECalShielding_Backward" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="TungstenShieldingVis">
+      <material name="TungstenDens24" />
+      <zplane rmin="LumiCalElectronics_rmax" rmax="HcalEndcap_rmin-SupportTube_thickness-1.0*cm" z="-HcalEndcap_zmin"/>
+      <zplane rmin="LumiCalElectronics_rmax" rmax="HcalEndcap_rmin-SupportTube_thickness-1.0*cm" z="-(HcalEndcap_zmin+ForwardShielding_thickness)"/>
+    </detector>
+
+    <detector name="ShieldingTube_Forward" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="TungstenShieldingVis">
+      <material name="TungstenDens24" />
+      <zplane rmin="HcalEndcap_rmin - SupportTube_thickness - ForwardShielding_thickness - 1.0*cm"
+	      rmax="HcalEndcap_rmin - SupportTube_thickness - 1.0*cm"
+	      z="HcalEndcap_zmin + ForwardShielding_thickness"/>
+      <zplane rmin="HcalEndcap_rmin - SupportTube_thickness - ForwardShielding_thickness - 1.0*cm"
+	      rmax="HcalEndcap_rmin - SupportTube_thickness - 1.0*cm"
+	      z="HcalEndcap_zmax"/>
+    </detector>
+
+    <detector name="ShieldingTube_Backward" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="TungstenShieldingVis">
+      <material name="TungstenDens24" />
+      <zplane rmin="HcalEndcap_rmin - SupportTube_thickness - ForwardShielding_thickness - 1.0*cm"
+	      rmax="HcalEndcap_rmin - SupportTube_thickness - 1.0*cm"
+	      z="-(HcalEndcap_zmin + ForwardShielding_thickness)"/>
+      <zplane rmin="HcalEndcap_rmin - SupportTube_thickness - ForwardShielding_thickness - 1.0*cm"
+	      rmax="HcalEndcap_rmin - SupportTube_thickness - 1.0*cm"
+	      z="-HcalEndcap_zmax"/>
+    </detector>
+
+    <detector name="SupportTube_Forward" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="SupportTubeVis">
+      <material name="Steel235" />
+      <zplane rmin="HcalEndcap_rmin - 2*SupportTube_thickness"
+	      rmax="HcalEndcap_rmin - SupportTube_thickness"
+	      z="HcalEndcap_zmin"/>
+      <zplane rmin="HcalEndcap_rmin - 2*SupportTube_thickness"
+	      rmax="HcalEndcap_rmin - SupportTube_thickness"
+	      z="MuonEndcap_zmax"/>
+    </detector>
+
+    <detector name="SupportTube_Backward" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="SupportTubeVis">
+      <material name="Steel235" />
+      <zplane rmin="HcalEndcap_rmin - 2*SupportTube_thickness"
+	      rmax="HcalEndcap_rmin - SupportTube_thickness"
+	      z="-HcalEndcap_zmin"/>
+      <zplane rmin="HcalEndcap_rmin - 2*SupportTube_thickness"
+	      rmax="HcalEndcap_rmin - SupportTube_thickness"
+	      z="-MuonEndcap_zmax"/>
+    </detector>
+
+    <detector name="ForwardLowZ" type="DD4hep_ForwardDetector" vis="TungstenShieldingVis" reflect="true">
+      <dimensions outer_r="BeamCal_rmax" inner_r="0.0*cm" inner_z="ForwardMask_zmin" />
+      <beampipe crossing_angle="CrossingAngle" outgoing_r="OutgoingBP_radius + 0.05*cm" incoming_r="IncomingBP_radius + 0.05*cm" />
+      <layer repeat="1">
+	<slice material = "Graphite" thickness = "ForwardMask_thickness" sensitive = "no" />
+      </layer>
+
+    </detector>
+  </detectors>
+
+</lccdd>
diff --git a/DDDetectors/compact/SiD/SiD_Solenoid.xml b/DDDetectors/compact/SiD/SiD_Solenoid.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a83610865d93297d44248698acc4e23ed9c15935
--- /dev/null
+++ b/DDDetectors/compact/SiD/SiD_Solenoid.xml
@@ -0,0 +1,75 @@
+<!-- ====================================================================== -->
+<!--                                                                        -->
+<!--    XML description of the complete SiD tracker detector                -->
+<!--    of the SiD linear collider detector design.                         -->
+<!--                                                                        -->
+<!--    Contained are the required                                          -->
+<!--      ++ global constants used uniquely by this module                  -->
+<!--      ++ visualization attributes                                       -->
+<!--      ++ the definition of the readout structure and the                -->
+<!--         readout segmentation (if necessary)                            -->
+<!--      ++ the include statements for the sensitive detectors and         -->
+<!--         the corresponding support structure(s)                         -->
+<!--                                                                        -->
+<!--                                                                        -->
+<!--   @author  M.Frank                                                     -->
+<!--   @date    14/11/2014                                                  -->
+<!--                                                                        -->
+<!-- ====================================================================== -->
+
+<lccdd>
+
+  <!--  Definition of the used visualization attributes    -->
+  <display>
+    <vis name="SolenoidBarrelLayerVis" alpha="1" r="0"    g="0.3"  b="0.3" showDaughters="false" visible="true"/>
+    <vis name="SolenoidCoilEndsVis"    alpha="1" r="0"    g="0.9"  b="0.9" showDaughters="false" visible="true"/>
+    <vis name="AntiSolenoidVis"        alpha="1" r="0.3"  g="1"    b="1"   showDaughters="false" visible="true"/>
+  </display>
+
+  <!--  Includes for sensitives and support                -->
+  <detectors>
+
+    <comment>Solenoid</comment>
+
+    <detector name="SolenoidCoilBarrel" type="DD4hep_MultiLayerTracker" insideTrackingVolume="false" reflect="true">
+      <layer id="1" inner_r="SolenoidBarrelInnerRadius" outer_z="SolenoidBarrelOuterZ" vis="SolenoidBarrelLayerVis">
+	<slice material="Steel235" thickness="SolenoidBarrelInnerCryostatThickness" />
+	<slice material="Vacuum"   thickness="SolenoidBarrelInnerAirgapThickness" />
+      </layer>
+      <layer id="2" inner_r="SolenoidBarrelConductorInnerRadius" outer_z="SolenoidCoilOuterZ" vis="SolenoidBarrelLayerVis">
+	<slice material="Aluminum" thickness="SolenoidBarrelAlConductorThickness" />
+	<slice material="Aluminum" thickness="SolenoidBarrelQuenchbackThickness" />
+      </layer>
+      <layer id="3" inner_r="SolenoidBarrelOuterCryostatInnerRadius" outer_z="SolenoidBarrelOuterZ" vis="SolenoidBarrelLayerVis">
+	<slice material="Vacuum"   thickness="SolenoidBarrelOuterAirgapThickness" />
+	<slice material="Steel235" thickness="SolenoidBarrelOuterCryostatThickness" />
+      </layer>
+    </detector>
+
+    <detector name="SolenoidCoilEnds" type="DD4hep_DiskTracker" reflect="true" insideTrackingVolume="false">
+      <layer id="1" inner_r="SolenoidBarrelInnerRadius" inner_z="SolenoidBarrelOuterZ" outer_r="SolenoidBarrelOuterRadius" vis="SolenoidCoilEndsVis">
+	<slice material="Steel235" thickness="SolenoidEndcapCryostatThickness" />
+      </layer>
+    </detector>
+
+    <detector name="AntiSolenoid_Forward" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="AntiSolenoidVis">
+      <material name="Steel235" />
+      <zplane rmin="HcalEndcap_rmin + 1.0*cm"
+	      rmax="MuonEndcap_rmin - 1.0*cm"
+	      z="HcalEndcap_zmax + 1.0*cm"/>
+      <zplane rmin="HcalEndcap_rmin + 1.0*cm"
+	      rmax="MuonEndcap_rmin - 1.0*cm"
+	      z="MuonEndcap_zmax"/>
+    </detector>
+    <detector name="AntiSolenoid_Backward" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="AntiSolenoidVis">
+      <material name="Steel235" />
+      <zplane rmin="HcalEndcap_rmin + 1.0*cm"
+	      rmax="MuonEndcap_rmin - 1.0*cm"
+	      z="-(HcalEndcap_zmax + 1.0*cm)"/>
+      <zplane rmin="HcalEndcap_rmin + 1.0*cm"
+	      rmax="MuonEndcap_rmin - 1.0*cm"
+	      z="-MuonEndcap_zmax"/>
+    </detector>
+  </detectors>
+
+</lccdd>
diff --git a/DDDetectors/compact/SiD/SiD_Tracker.xml b/DDDetectors/compact/SiD/SiD_Tracker.xml
new file mode 100644
index 0000000000000000000000000000000000000000..00d6b2becc1b479b90e0de5643042a768e8968c7
--- /dev/null
+++ b/DDDetectors/compact/SiD/SiD_Tracker.xml
@@ -0,0 +1,51 @@
+<!-- ====================================================================== -->
+<!--                                                                        -->
+<!--    XML description of the complete SiD tracker detector                -->
+<!--    of the SiD linear collider detector design.                         -->
+<!--                                                                        -->
+<!--    Contained are the required                                          -->
+<!--      ++ global constants used uniquely by this module                  -->
+<!--      ++ visualization attributes                                       -->
+<!--      ++ the definition of the readout structure and the                -->
+<!--         readout segmentation (if necessary)                            -->
+<!--      ++ the include statements for the sensitive detectors and         -->
+<!--         the corresponding support structure(s)                         -->
+<!--                                                                        -->
+<!--                                                                        -->
+<!--   @author  M.Frank                                                     -->
+<!--   @date    14/11/2014                                                  -->
+<!--                                                                        -->
+<!-- ====================================================================== -->
+
+<lccdd>
+  <!--  Definition of global dictionary constants          -->
+  <define>
+  </define>
+
+  <!--  Definition of the used visualization attributes    -->
+  <display>
+    <vis name="SiTrackerLayerVis"   alpha="1.0" r="1.0" g="1.0" b="0.6" showDaughters="true" visible="true"/>
+    <vis name="SiTrackerModuleVis"  alpha="0.1" r="0.0" g="1.0" b="0.6" showDaughters="false" visible="true"/>
+    <vis name="SiTrackerForwardVis" alpha="1.0" r="0.8" g="0.1" b="0.1" showDaughters="false" visible="true"/>
+  </display>
+
+  <!--  Definition of the readout segmentation/definition  -->
+  <readouts>
+    <readout name="SiTrackerEndcapHits">
+      <id>system:8,barrel:3,layer:4,module:14,sensor:2,side:32:-2,strip:20</id>
+    </readout>        
+    <readout name="SiTrackerBarrelHits">
+      <id>system:8,barrel:3,layer:4,module:14,sensor:2,side:32:-2,strip:20</id>
+    </readout>
+    <readout name="SiTrackerForwardHits">
+      <id>system:8,barrel:3,layer:4,wedge:6,module:6,sensor:1,side:32:-2,strip:28</id>
+    </readout>
+  </readouts>
+  
+  <!--  Includes for sensitives and support                -->
+  <include ref="SiD_TrackerEndcap.xml"/>
+  <include ref="SiD_TrackerBarrel.xml"/>
+  <include ref="SiD_TrackerForward.xml"/>
+  <include ref="SiD_TrackerSupport.xml"/>
+
+</lccdd>
diff --git a/DDDetectors/compact/SiD/SiD_TrackerBarrel.xml b/DDDetectors/compact/SiD/SiD_TrackerBarrel.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ff6fdabddea84eab5a9002fdf3db16fbb8ec7c11
--- /dev/null
+++ b/DDDetectors/compact/SiD/SiD_TrackerBarrel.xml
@@ -0,0 +1,189 @@
+<!-- ==================================================================== -->
+<!--                                                                      -->
+<!--    XML description of the Silicon tracker barrel detector            -->
+<!--    of the SiD linear collider detector design.                       -->
+<!--                                                                      -->
+<!-- ==================================================================== -->
+
+<detectors>
+  <detector id="SiTrackerBarrel_ID" name="SiTrackerBarrel" type="DD4hep_SiTrackerBarrel" readout="SiTrackerBarrelHits">
+
+    <comment>Silicon Outer Tracker Barrel</comment>
+
+    <module name="SiTrackerModule_Layer1" vis="SiTrackerModuleVis">                
+      <module_envelope width="97.79*mm" length="97.79*mm" thickness="0.3*cm"/>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.02*cm" material="PEEK" sensitive="false">
+	<position z="-0.14*cm" />
+      </module_component>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false">
+	<position z="-0.122*cm" />
+      </module_component>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.18*cm" material="Rohacell31_50D" sensitive="false">
+	<position z="-0.024*cm" />
+      </module_component>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.0175*cm" material="Epoxy" sensitive="false">
+	<position z="0.07475*cm" />
+      </module_component>
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false">
+	<position z="0.0915*cm" />
+      </module_component>                
+      <module_component width="92.031*mm" length="92.031*mm" thickness="0.03*cm" material="Silicon" sensitive="true">
+	<position z="0.1145*cm"/>
+      </module_component>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.00048*cm" material="Silicon" sensitive="false">
+	<position z="0.12974*cm"/>
+      </module_component>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.0038*cm" material="Kapton" sensitive="false">
+	<position z="0.1375*cm"/>
+      </module_component>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.00038*cm" material="Copper" sensitive="false">
+	<position z="0.146*cm"/>
+      </module_component>                
+    </module>
+    <module name="SiTrackerModule_Layer2" vis="SiTrackerModuleVis">                
+      <module_envelope width="97.79*mm" length="97.79*mm" thickness="0.3*cm"/>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.02*cm" material="PEEK" sensitive="false">
+	<position z="-0.14*cm" />
+      </module_component>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false">
+	<position z="-0.122*cm" />
+      </module_component>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.18*cm" material="Rohacell31_50D" sensitive="false">
+	<position z="-0.024*cm" />
+      </module_component>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.0175*cm" material="Epoxy" sensitive="false">
+	<position z="0.07475*cm" />
+      </module_component>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false">
+	<position z="0.0915*cm" />
+      </module_component>                
+      <module_component width="92.031*mm" length="92.031*mm" thickness="0.03*cm" material="Silicon" sensitive="true">
+	<position z="0.1145*cm"/>
+      </module_component>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.00048*cm" material="Silicon" sensitive="false">
+	<position z="0.12974*cm"/>
+      </module_component>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.0051*cm" material="Kapton" sensitive="false">
+	<position z="0.1375*cm"/>
+      </module_component>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.00052*cm" material="Copper" sensitive="false">
+	<position z="0.146*cm"/>
+      </module_component>                
+    </module>
+    <module name="SiTrackerModule_Layer3" vis="SiTrackerModuleVis">                
+      <module_envelope width="97.79*mm" length="97.79*mm" thickness="0.3*cm"/>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.02*cm" material="PEEK" sensitive="false">
+	<position z="-0.14*cm" />
+      </module_component>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false">
+	<position z="-0.122*cm" />
+      </module_component>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.18*cm" material="Rohacell31_50D" sensitive="false">
+	<position z="-0.024*cm" />
+      </module_component>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.0175*cm" material="Epoxy" sensitive="false">
+	<position z="0.07475*cm" />
+      </module_component>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false">
+	<position z="0.0915*cm" />
+      </module_component>                
+      <module_component width="92.031*mm" length="92.031*mm" thickness="0.03*cm" material="Silicon" sensitive="true">
+	<position z="0.1145*cm"/>
+      </module_component>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.00048*cm" material="Silicon" sensitive="false">
+	<position z="0.12974*cm"/>
+      </module_component>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.0064*cm" material="Kapton" sensitive="false">
+	<position z="0.1375*cm"/>
+      </module_component>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.00065*cm" material="Copper" sensitive="false">
+	<position z="0.146*cm"/>
+      </module_component>                
+    </module>
+    <module name="SiTrackerModule_Layer4" vis="SiTrackerModuleVis">                
+      <module_envelope width="97.79*mm" length="97.79*mm" thickness="0.3*cm"/>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.02*cm" material="PEEK" sensitive="false">
+	<position z="-0.14*cm" />
+      </module_component>               
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false">
+	<position z="-0.122*cm" />
+      </module_component>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.18*cm" material="Rohacell31_50D" sensitive="false">
+	<position z="-0.024*cm" />
+      </module_component>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.0175*cm" material="Epoxy" sensitive="false">
+	<position z="0.07475*cm" />
+      </module_component>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false">
+	<position z="0.0915*cm" />
+      </module_component>                
+      <module_component width="92.031*mm" length="92.031*mm" thickness="0.03*cm" material="Silicon" sensitive="true">
+	<position z="0.1145*cm"/>
+      </module_component>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.00048*cm" material="Silicon" sensitive="false">
+	<position z="0.12974*cm"/>
+      </module_component>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.0078*cm" material="Kapton" sensitive="false">
+	<position z="0.1375*cm"/>
+      </module_component>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.00079*cm" material="Copper" sensitive="false">
+	<position z="0.146*cm"/>
+      </module_component>                
+    </module>
+    <module name="SiTrackerModule_Layer5" vis="SiTrackerModuleVis">                
+      <module_envelope width="97.79*mm" length="97.79*mm" thickness="0.3*cm"/>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.02*cm" material="PEEK" sensitive="false">
+	<position z="-0.14*cm" />
+      </module_component>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false">
+	<position z="-0.122*cm" />
+      </module_component>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.18*cm" material="Rohacell31_50D" sensitive="false">
+	<position z="-0.024*cm" />
+      </module_component>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.0175*cm" material="Epoxy" sensitive="false">
+	<position z="0.07475*cm" />
+      </module_component>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false">
+	<position z="0.0915*cm" />
+      </module_component>                
+      <module_component width="92.031*mm" length="92.031*mm" thickness="0.03*cm" material="Silicon" sensitive="true">
+	<position z="0.1145*cm"/>
+      </module_component>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.00048*cm" material="Silicon" sensitive="false">
+	<position z="0.12974*cm"/>
+      </module_component>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.0091*cm" material="Kapton" sensitive="false">
+	<position z="0.1375*cm"/>
+      </module_component>                
+      <module_component width="97.79*mm" length="97.79*mm" thickness="0.00093*cm" material="Copper" sensitive="false">
+	<position z="0.146*cm"/>
+      </module_component>                
+    </module>
+    <layer module="SiTrackerModule_Layer1" id="1" vis="SiTrackerLayerVis">
+      <barrel_envelope inner_r="215.075*mm" outer_r="245.0*mm" z_length="578 * 2*mm"/>
+      <rphi_layout phi_tilt="0.17506*rad" nphi="20" phi0="0." rc="(216.355 + 5.0)*mm" dr="0.0"/>
+      <z_layout dr="4.0*mm" z0="512.128*mm" nz="13"/>
+    </layer>                
+    <layer module="SiTrackerModule_Layer2" id="2" vis="SiTrackerLayerVis">
+      <barrel_envelope inner_r="465.075*mm" outer_r="501.0*mm" z_length="749.8 * 2*mm"/>
+      <rphi_layout phi_tilt="0.12217*rad" nphi="38" phi0="0.087*rad" rc="(466.355 + 5.0)*mm" dr="0.0"/>
+      <z_layout dr="4.0*mm" z0="690.605*mm" nz="17"/>
+    </layer>
+    <layer module="SiTrackerModule_Layer3" id="3" vis="SiTrackerLayerVis">
+      <barrel_envelope inner_r="715.075*mm" outer_r="756.0*mm" z_length="1013.9 * 2*mm"/>
+      <rphi_layout phi_tilt="0.11493*rad" nphi="58" phi0="0.058*rad" rc="(716.355 + 5.0)*mm" dr="0.0"/>
+      <z_layout dr="4.0*mm" z0="954.625*mm" nz="23"/>
+    </layer>            
+    <layer module="SiTrackerModule_Layer4" id="4" vis="SiTrackerLayerVis">
+      <barrel_envelope inner_r="965.075*mm" outer_r="1012.0*mm" z_length="1272.3 * 2*mm"/>
+      <rphi_layout phi_tilt="0.11502*rad" nphi="80" phi0="0.0436*rad" rc="(966.355 + 5.0)*mm" dr="0.0"/>
+      <z_layout dr="4.0*mm" z0="1213.073*mm" nz="29"/>
+    </layer>                        
+    <layer module="SiTrackerModule_Layer5" id="5" vis="SiTrackerLayerVis">
+      <barrel_envelope inner_r="1215.075*mm" outer_r="1263.0*mm" z_length="1535.7 * 2*mm"/>
+      <rphi_layout phi_tilt="0.11467*rad" nphi="102" phi0="0.01745*rad" rc="(1216.355 + 5.0)*mm" dr="0.0"/>
+      <z_layout dr="4.0*mm" z0="1476.497*mm" nz="35"/>
+    </layer>
+  </detector>
+</detectors>
diff --git a/DDDetectors/compact/SiD/SiD_TrackerEndcap.xml b/DDDetectors/compact/SiD/SiD_TrackerEndcap.xml
new file mode 100644
index 0000000000000000000000000000000000000000..14a5138e5b2f7ed89b50a474070e0010b24e4fc9
--- /dev/null
+++ b/DDDetectors/compact/SiD/SiD_TrackerEndcap.xml
@@ -0,0 +1,82 @@
+<!-- ==================================================================== -->
+<!--                                                                      -->
+<!--    XML description of the Silicon tracker endcap detector            -->
+<!--    of the SiD linear collider detector design.                       -->
+<!--                                                                      -->
+<!-- ==================================================================== -->
+
+<detectors>
+  <detector id="SiTrackerEndcap_ID" name="SiTrackerEndcap" type="DD4hep_SiTrackerEndcap2" readout="SiTrackerEndcapHits" reflect="true">
+
+    <comment>Silicon Outer Tracker Endcaps</comment>
+
+    <module name="Module1" vis="SiTrackerModuleVis">
+      <trd x1="36.112*mm" x2="46.635*mm" z="100.114/2*mm" />
+      <module_component thickness="0.00052*cm"   material="Copper" />
+      <module_component thickness="0.0051*cm"   material="Kapton" />
+      <module_component thickness="0.00048*cm" material="Silicon" />
+      <module_component thickness="0.03*cm"   material="Silicon" sensitive="true" />
+      <module_component thickness="0.016*cm" material="CarbonFiber_50D" />
+      <module_component thickness="0.18*cm" material="Rohacell31_50D" />
+      <module_component thickness="0.016*cm" material="CarbonFiber_50D" />
+      <module_component thickness="0.0175*cm" material="Epoxy" />
+      <module_component thickness="0.03*cm"   material="Silicon" sensitive="true" />
+      <module_component thickness="0.00048*cm" material="Silicon" />
+      <module_component thickness="0.0051*cm"   material="Kapton" />
+      <module_component thickness="0.00052*cm"   material="Copper" />
+    </module> 
+    <module name="Module2" vis="SiTrackerModuleVis">
+      <trd x1="45.245*mm" x2="54.680*mm" z="89.773/2*mm" />
+      <module_component thickness="0.00079*cm"   material="Copper" />
+      <module_component thickness="0.0078*cm"   material="Kapton" />
+      <module_component thickness="0.00048*cm" material="Silicon" />
+      <module_component thickness="0.03*cm"   material="Silicon" sensitive="true" />
+      <module_component thickness="0.016*cm" material="CarbonFiber_50D" />
+      <module_component thickness="0.18*cm" material="Rohacell31_50D" />
+      <module_component thickness="0.016*cm" material="CarbonFiber_50D" />
+      <module_component thickness="0.0175*cm" material="Epoxy" />
+      <module_component thickness="0.03*cm"   material="Silicon" sensitive="true" />
+      <module_component thickness="0.00048*cm" material="Silicon" />
+      <module_component thickness="0.0078*cm"   material="Kapton" />
+      <module_component thickness="0.00079*cm"   material="Copper" />
+    </module>
+    <layer id="1">
+      <ring r="256.716*mm" zstart="(787.105+1.75)*mm" nmodules="24" dz="1.75*mm" module="Module1"/>
+      <ring r="353.991*mm" zstart="(778.776+1.75)*mm" nmodules="32" dz="1.75*mm" module="Module1"/>
+      <ring r="449.180*mm" zstart="(770.544+1.75)*mm" nmodules="40" dz="1.75*mm" module="Module1"/>
+    </layer>
+    <layer id="2">
+      <ring r="256.716*mm" zstart="(1073.293+1.75)*mm" nmodules="24" dz="1.75*mm" module="Module1"/>
+      <ring r="353.991*mm" zstart="(1064.966+1.75)*mm" nmodules="32" dz="1.75*mm" module="Module1"/>
+      <ring r="449.180*mm" zstart="(1056.734+1.75)*mm" nmodules="40" dz="1.75*mm" module="Module1"/>
+      <ring r="538.520*mm" zstart="(1048.466+1.75)*mm" nmodules="40" dz="1.75*mm" module="Module2"/>
+      <ring r="625.654*mm" zstart="(1041.067+1.75)*mm" nmodules="48" dz="1.75*mm" module="Module2"/>
+      <ring r="703.666*mm" zstart="(1033.725+1.75)*mm" nmodules="54" dz="1.75*mm" module="Module2" phi0="pi/54"/>
+    </layer>
+    <layer id="3">
+      <ring r="256.716*mm" zstart="(1353.786+1.75)*mm" nmodules="24" dz="1.75*mm" module="Module1"/>
+      <ring r="353.991*mm" zstart="(1345.457+1.75)*mm" nmodules="32" dz="1.75*mm" module="Module1"/>
+      <ring r="449.180*mm" zstart="(1337.225+1.75)*mm" nmodules="40" dz="1.75*mm" module="Module1"/>
+      <ring r="538.520*mm" zstart="(1328.957+1.75)*mm" nmodules="40" dz="1.75*mm" module="Module2"/>
+      <ring r="625.654*mm" zstart="(1321.558+1.75)*mm" nmodules="48" dz="1.75*mm" module="Module2"/>
+      <ring r="703.666*mm" zstart="(1314.217+1.75)*mm" nmodules="54" dz="1.75*mm" module="Module2" phi0="pi/54"/>
+      <ring r="793.448*mm" zstart="(1306.828+1.75)*mm" nmodules="58" dz="1.75*mm" module="Module2" phi0="pi/58"/>
+      <ring r="874.239*mm" zstart="(1299.486+1.75)*mm" nmodules="64" dz="1.75*mm" module="Module2"/>
+      <ring r="958.364*mm" zstart="(1292.189+1.75)*mm" nmodules="68" dz="1.75*mm" module="Module2"/>
+    </layer>
+    <layer id="4">
+      <ring r="256.716*mm" zstart="(1639.164+1.75)*mm" nmodules="24" dz="1.75*mm" module="Module1"/>
+      <ring r="353.991*mm" zstart="(1630.835+1.75)*mm" nmodules="32" dz="1.75*mm" module="Module1"/>
+      <ring r="449.180*mm" zstart="(1622.603+1.75)*mm" nmodules="40" dz="1.75*mm" module="Module1"/>
+      <ring r="538.520*mm" zstart="(1614.335+1.75)*mm" nmodules="40" dz="1.75*mm" module="Module2"/>
+      <ring r="625.654*mm" zstart="(1606.936+1.75)*mm" nmodules="48" dz="1.75*mm" module="Module2"/>
+      <ring r="703.666*mm" zstart="(1599.595+1.75)*mm" nmodules="54" dz="1.75*mm" module="Module2" phi0="pi/54"/>
+      <ring r="793.448*mm" zstart="(1592.206+1.75)*mm" nmodules="58" dz="1.75*mm" module="Module2" phi0="pi/58"/>
+      <ring r="874.239*mm" zstart="(1584.864+1.75)*mm" nmodules="64" dz="1.75*mm" module="Module2"/>
+      <ring r="958.364*mm" zstart="(1577.567+1.75)*mm" nmodules="68" dz="1.75*mm" module="Module2"/>
+      <ring r="1040.970*mm" zstart="(1570.222+1.75)*mm" nmodules="72" dz="1.75*mm" module="Module2"/>
+      <ring r="1124.167*mm" zstart="(1562.916+1.75)*mm" nmodules="78" dz="1.75*mm" module="Module2" phi0="pi/78"/>
+      <ring r="1206.937*mm" zstart="(1555.647+1.75)*mm" nmodules="84" dz="1.75*mm" module="Module2"/>
+    </layer>
+  </detector>
+</detectors>
diff --git a/DDDetectors/compact/SiD/SiD_TrackerForward.xml b/DDDetectors/compact/SiD/SiD_TrackerForward.xml
new file mode 100644
index 0000000000000000000000000000000000000000..69620ed60fb89f139f273bd5203980c584267e74
--- /dev/null
+++ b/DDDetectors/compact/SiD/SiD_TrackerForward.xml
@@ -0,0 +1,38 @@
+<!-- ==================================================================== -->
+<!--                                                                      -->
+<!--    XML description of the silicon forward tracking detector          -->
+<!--    of the SiD linear collider detector design.                       -->
+<!--                                                                      -->
+<!-- ==================================================================== -->
+
+<detectors>
+  <detector id="ForwardTracker_ID" name="SiTrackerForward" type="DD4hep_SiTrackerEndcap2" readout="SiTrackerForwardHits">    
+
+    <comment>Forward Tracker inside Vertex Support Barrel</comment>
+
+    <module name="SiTrackerForwardModule1">
+      <trd x1="ForwardTracker_rmin1 * tan(pi/(ForwardTrackerModules-0.1))" x2="ForwardTracker_rmax * sin(pi/(ForwardTrackerModules-0.1))" z="(ForwardTracker_rmax - ForwardTracker_rmin1) / 2" />
+      <module_component thickness="0.005*cm" material="Silicon" sensitive="true" />
+      <module_component thickness="0.013*cm"   material="Carbon" />
+    </module>
+    <module name="SiTrackerForwardModule2">
+      <trd x1="ForwardTracker_rmin2 * tan(pi/(ForwardTrackerModules-0.1))" x2="ForwardTracker_rmax * sin(pi/(ForwardTrackerModules-0.1))" z="(ForwardTracker_rmax - ForwardTracker_rmin2) / 2" />
+      <module_component thickness="0.005*cm" material="Silicon" sensitive="true" />
+      <module_component thickness="0.013*cm"   material="Carbon" />
+    </module>
+    <module name="SiTrackerForwardModule3">
+      <trd x1="ForwardTracker_rmin3 * tan(pi/(ForwardTrackerModules-0.1))" x2="ForwardTracker_rmax * sin(pi/(ForwardTrackerModules-0.1))" z="(ForwardTracker_rmax - ForwardTracker_rmin3) / 2" />
+      <module_component thickness="0.005*cm" material="Silicon" sensitive="true" />
+      <module_component thickness="0.013*cm"   material="Carbon" />
+    </module>
+    <layer id="1">
+      <ring r="(ForwardTracker_rmax + ForwardTracker_rmin1) / 2" zstart="ForwardTracker_z1" nmodules="(int) ForwardTrackerModules" dz="0.011*mm" module="SiTrackerForwardModule1"/>
+    </layer>
+    <layer id="2">
+      <ring r="(ForwardTracker_rmax + ForwardTracker_rmin2) / 2" zstart="ForwardTracker_z2" nmodules="(int) ForwardTrackerModules" dz="0.011*mm" module="SiTrackerForwardModule2"/>
+    </layer>
+    <layer id="3">
+      <ring r="(ForwardTracker_rmax + ForwardTracker_rmin3) / 2" zstart="ForwardTracker_z3" nmodules="(int) ForwardTrackerModules" dz="0.011*mm" module="SiTrackerForwardModule3"/>
+    </layer>
+  </detector>
+</detectors>
diff --git a/DDDetectors/compact/SiD/SiD_TrackerSupport.xml b/DDDetectors/compact/SiD/SiD_TrackerSupport.xml
new file mode 100644
index 0000000000000000000000000000000000000000..61e92105873f67bd3f43c9cee0ad16569a105a9e
--- /dev/null
+++ b/DDDetectors/compact/SiD/SiD_TrackerSupport.xml
@@ -0,0 +1,240 @@
+<!-- ==================================================================== -->
+<!--                                                                      -->
+<!--    XML description of the Silicon vertex barrel detector             -->
+<!--    of the SiD linear collider detector design.                       -->
+<!--                                                                      -->
+<!-- ==================================================================== -->
+
+<detectors>
+
+  <comment>Outer Tracker Supports and Readout</comment>
+
+  <detector name="TrackerBarrelSupports" type="DD4hep_MultiLayerTracker" reflect="true">
+
+    <comment>Barrels</comment>
+
+    <layer id="1" inner_r="206.0*mm" outer_z="577.328*mm">
+      <slice material="CarbonFiber" thickness="0.05*cm" />
+      <slice material="Rohacell31_15percent" thickness="0.8075*cm" />
+      <slice material="CarbonFiber" thickness="0.05*cm" />
+    </layer>
+    <layer id="2" inner_r="456.0*mm" outer_z="749.781*mm">
+      <slice material="CarbonFiber" thickness="0.05*cm" />
+      <slice material="Rohacell31_15percent" thickness="0.8075*cm" />
+      <slice material="CarbonFiber" thickness="0.05*cm" />
+    </layer>
+    <layer id="3" inner_r="706.0*mm" outer_z="1013.802*mm">
+      <slice material= "CarbonFiber" thickness = "0.05*cm" />
+      <slice material= "Rohacell31_15percent" thickness="0.8075*cm" />
+      <slice material= "CarbonFiber" thickness="0.05*cm" />
+    </layer>
+    <layer id="4" inner_r="956.0*mm" outer_z="1272.251*mm">
+      <slice material="CarbonFiber" thickness="0.05*cm" />
+      <slice material="Rohacell31_15percent" thickness="0.8075*cm" />
+      <slice material="CarbonFiber" thickness="0.05*cm" />
+    </layer>
+    <layer id="5" inner_r="1206.0*mm" outer_z="1535.676*mm">
+      <slice material="CarbonFiber" thickness="0.05*cm" />
+      <slice material="Rohacell31_15percent" thickness="0.8075*cm" />
+      <slice material="CarbonFiber" thickness="0.05*cm" />
+    </layer>
+  </detector>
+
+  <comment>Dished endcap disks</comment>
+
+  <detector name="SiTrackerEndcapSupport1" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
+    <material name="CarbonFiber"/>
+    <zplane rmin="510.448*mm" rmax="510.448*mm" z="(750.417-0.001)*mm" />
+    <zplane rmin="504.711*mm" rmax="510.448*mm" z="(750.919-0.001)*mm" />
+    <zplane rmin="206.234*mm" rmax="211.970*mm" z="(777.034-0.001)*mm" />
+    <zplane rmin="206.234*mm" rmax="206.234*mm" z="(777.535-0.001)*mm" />
+  </detector>
+  <detector name="SiTrackerEndcapSupport2" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
+    <material name="Rohacell31"/>
+    <zplane rmin="510.448*mm" rmax="510.448*mm" z="750.919*mm" />
+    <zplane rmin="438.449*mm" rmax="510.448*mm" z="757.218*mm" />
+    <zplane rmin="206.234*mm" rmax="278.187*mm" z="777.535*mm" />
+    <zplane rmin="206.234*mm" rmax="206.234*mm" z="783.834*mm" />
+  </detector>
+  <detector name="SiTrackerEndcapSupport3" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
+    <material name="CarbonFiber"/>
+    <zplane rmin="510.448*mm" rmax="510.448*mm" z="(757.218+0.001)*mm" />
+    <zplane rmin="504.711*mm" rmax="510.448*mm" z="(757.720+0.001)*mm" />
+    <zplane rmin="206.234*mm" rmax="211.970*mm" z="(783.834+0.001)*mm" />
+    <zplane rmin="206.234*mm" rmax="206.234*mm" z="(784.336+0.001)*mm" />
+  </detector>
+  <detector name="SiTrackerEndcapSupport4" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
+    <material name="CarbonFiber"/>
+    <zplane rmin="763.796*mm" rmax="763.796*mm" z="(1014.437-0.001)*mm" />
+    <zplane rmin="758.059*mm" rmax="763.796*mm" z="(1014.939-0.001)*mm" />
+    <zplane rmin="206.234*mm" rmax="211.970*mm" z="(1063.219-0.001)*mm" />
+    <zplane rmin="206.234*mm" rmax="206.234*mm" z="(1063.721-0.001)*mm" />
+  </detector>
+  <detector name="SiTrackerEndcapSupport5" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
+    <material name="Rohacell31"/>
+    <zplane rmin="763.796*mm" rmax="763.796*mm" z="1014.939*mm" />
+    <zplane rmin="691.797*mm" rmax="763.796*mm" z="1021.238*mm" />
+    <zplane rmin="206.234*mm" rmax="278.187*mm" z="1063.721*mm" />
+    <zplane rmin="206.234*mm" rmax="206.234*mm" z="1070.020*mm" />
+  </detector>
+  <detector name="SiTrackerEndcapSupport6" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
+    <material name="CarbonFiber"/>
+    <zplane rmin="763.796*mm" rmax="763.796*mm" z="(1021.238+0.001)*mm" />
+    <zplane rmin="758.059*mm" rmax="763.796*mm" z="(1021.740+0.001)*mm" />
+    <zplane rmin="206.234*mm" rmax="211.970*mm" z="(1070.020+0.001)*mm" />
+    <zplane rmin="206.234*mm" rmax="206.234*mm" z="(1070.522+0.001)*mm" />
+  </detector>
+  <detector name="SiTrackerEndcapSupport7" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
+    <material name="CarbonFiber"/>
+    <zplane rmin="1015.748*mm" rmax="1015.748*mm" z="(1272.885-0.001)*mm" />
+    <zplane rmin="1010.011*mm" rmax="1015.748*mm" z="(1273.387-0.001)*mm" />
+    <zplane rmin="206.234*mm" rmax="211.970*mm" z="(1343.711-0.001)*mm" />
+    <zplane rmin="206.234*mm" rmax="206.234*mm" z="(1344.213-0.001)*mm" />
+  </detector>
+  <detector name="SiTrackerEndcapSupport8" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
+    <material name="Rohacell31"/>
+    <zplane rmin="1015.748*mm" rmax="1015.748*mm" z="1273.387*mm" />
+    <zplane rmin="943.753*mm" rmax="1015.748*mm" z="1279.686*mm" />
+    <zplane rmin="206.234*mm" rmax="278.187*mm" z="1344.213*mm" />
+    <zplane rmin="206.234*mm" rmax="206.234*mm" z="1350.512*mm" />
+  </detector>
+  <detector name="SiTrackerEndcapSupport9" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
+    <material name="CarbonFiber"/>
+    <zplane rmin="1015.748*mm" rmax="1015.748*mm" z="(1279.686+0.001)*mm" />
+    <zplane rmin="1010.011*mm" rmax="1015.748*mm" z="(1280.188+0.001)*mm" />
+    <zplane rmin="206.234*mm" rmax="211.970*mm" z="(1350.512+0.001)*mm" />
+    <zplane rmin="206.234*mm" rmax="206.234*mm" z="(1351.014+0.001)*mm" />
+  </detector>
+  <detector name="SiTrackerEndcapSupport10" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
+    <material name="CarbonFiber"/>
+    <zplane rmin="1263.808*mm" rmax="1263.808*mm" z="(1536.560-0.001)*mm" />
+    <zplane rmin="1258.071*mm" rmax="1263.808*mm" z="(1537.062-0.001)*mm" />
+    <zplane rmin="206.234*mm" rmax="211.970*mm" z="(1629.089-0.001)*mm" />
+    <zplane rmin="206.234*mm" rmax="206.234*mm" z="(1629.591-0.001)*mm" />
+  </detector>
+  <detector name="SiTrackerEndcapSupport11" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
+    <material name="Rohacell31"/>
+    <zplane rmin="1263.808*mm" rmax="1263.808*mm" z="1537.062*mm" />
+    <zplane rmin="1191.810*mm" rmax="1263.808*mm" z="1543.361*mm" />
+    <zplane rmin="206.234*mm" rmax="278.187*mm" z="1629.591*mm" />
+    <zplane rmin="206.234*mm" rmax="206.234*mm" z="1635.890*mm" />
+  </detector>
+  <detector name="SiTrackerEndcapSupport12" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
+    <material name="CarbonFiber"/>
+    <zplane rmin="1263.808*mm" rmax="1263.808*mm" z="(1543.361+0.001)*mm" />
+    <zplane rmin="1258.071*mm" rmax="1263.808*mm" z="(1543.863+0.001)*mm" />
+    <zplane rmin="206.234*mm" rmax="211.970*mm" z="(1635.890+0.001)*mm" />
+    <zplane rmin="206.234*mm" rmax="206.234*mm" z="(1636.392+0.001)*mm" />
+  </detector>
+  <detector name="SiTrackerEndcapSupport1Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
+    <material name="CarbonFiber"/>
+    <zplane rmin="510.448*mm" rmax="510.448*mm" z="(-750.417+0.001)*mm" />
+    <zplane rmin="504.711*mm" rmax="510.448*mm" z="(-750.919+0.001)*mm" />
+    <zplane rmin="206.234*mm" rmax="211.970*mm" z="(-777.034+0.001)*mm" />
+    <zplane rmin="206.234*mm" rmax="206.234*mm" z="(-777.535+0.001)*mm" />
+  </detector>
+  <detector name="SiTrackerEndcapSupport2Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
+    <material name="Rohacell31"/>
+    <zplane rmin="510.448*mm" rmax="510.448*mm" z="-750.919*mm" />
+    <zplane rmin="438.449*mm" rmax="510.448*mm" z="-757.218*mm" />
+    <zplane rmin="206.234*mm" rmax="278.187*mm" z="-777.535*mm" />
+    <zplane rmin="206.234*mm" rmax="206.234*mm" z="-783.834*mm" />
+  </detector>
+  <detector name="SiTrackerEndcapSupport3Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
+    <material name="CarbonFiber"/>
+    <zplane rmin="510.448*mm" rmax="510.448*mm" z="(-757.218-0.001)*mm" />
+    <zplane rmin="504.711*mm" rmax="510.448*mm" z="(-757.720-0.001)*mm" />
+    <zplane rmin="206.234*mm" rmax="211.970*mm" z="(-783.834-0.001)*mm" />
+    <zplane rmin="206.234*mm" rmax="206.234*mm" z="(-784.336-0.001)*mm" />
+  </detector>
+  <detector name="SiTrackerEndcapSupport4Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
+    <material name="CarbonFiber"/>
+    <zplane rmin="763.796*mm" rmax="763.796*mm" z="(-1014.437+0.001)*mm" />
+    <zplane rmin="758.059*mm" rmax="763.796*mm" z="(-1014.939+0.001)*mm" />
+    <zplane rmin="206.234*mm" rmax="211.970*mm" z="(-1063.219+0.001)*mm" />
+    <zplane rmin="206.234*mm" rmax="206.234*mm" z="(-1063.721+0.001)*mm" />
+  </detector>
+  <detector name="SiTrackerEndcapSupport5Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
+    <material name="Rohacell31"/>
+    <zplane rmin="763.796*mm" rmax="763.796*mm" z="-1014.939*mm" />
+    <zplane rmin="691.797*mm" rmax="763.796*mm" z="-1021.238*mm" />
+    <zplane rmin="206.234*mm" rmax="278.187*mm" z="-1063.721*mm" />
+    <zplane rmin="206.234*mm" rmax="206.234*mm" z="-1070.020*mm" />
+  </detector>
+  <detector name="SiTrackerEndcapSupport6Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
+    <material name="CarbonFiber"/>
+    <zplane rmin="763.796*mm" rmax="763.796*mm" z="(-1021.238-0.001)*mm" />
+    <zplane rmin="758.059*mm" rmax="763.796*mm" z="(-1021.740-0.001)*mm" />
+    <zplane rmin="206.234*mm" rmax="211.970*mm" z="(-1070.020-0.001)*mm" />
+    <zplane rmin="206.234*mm" rmax="206.234*mm" z="(-1070.522-0.001)*mm" />
+  </detector>
+  <detector name="SiTrackerEndcapSupport7Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
+    <material name="CarbonFiber"/>
+    <zplane rmin="1015.748*mm" rmax="1015.748*mm" z="(-1272.885+0.001)*mm" />
+    <zplane rmin="1010.011*mm" rmax="1015.748*mm" z="(-1273.387+0.001)*mm" />
+    <zplane rmin="206.234*mm" rmax="211.970*mm" z="(-1343.711+0.001)*mm" />
+    <zplane rmin="206.234*mm" rmax="206.234*mm" z="(-1344.213+0.001)*mm" />
+  </detector>
+  <detector name="SiTrackerEndcapSupport8Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
+    <material name="Rohacell31"/>
+    <zplane rmin="1015.748*mm" rmax="1015.748*mm" z="-1273.387*mm" />
+    <zplane rmin="943.753*mm" rmax="1015.748*mm" z="-1279.686*mm" />
+    <zplane rmin="206.234*mm" rmax="278.187*mm" z="-1344.213*mm" />
+    <zplane rmin="206.234*mm" rmax="206.234*mm" z="-1350.512*mm" />
+  </detector>
+  <detector name="SiTrackerEndcapSupport9Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
+    <material name="CarbonFiber"/>
+    <zplane rmin="1015.748*mm" rmax="1015.748*mm" z="(-1279.686-0.001)*mm" />
+    <zplane rmin="1010.011*mm" rmax="1015.748*mm" z="(-1280.188-0.001)*mm" />
+    <zplane rmin="206.234*mm" rmax="211.970*mm" z="(-1350.512-0.001)*mm" />
+    <zplane rmin="206.234*mm" rmax="206.234*mm" z="(-1351.014-0.001)*mm" />
+  </detector>
+  <detector name="SiTrackerEndcapSupport10Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
+    <material name="CarbonFiber"/>
+    <zplane rmin="1263.808*mm" rmax="1263.808*mm" z="(-1536.560+0.001)*mm" />
+    <zplane rmin="1258.071*mm" rmax="1263.808*mm" z="(-1537.062+0.001)*mm" />
+    <zplane rmin="206.234*mm" rmax="211.970*mm" z="(-1629.089+0.001)*mm" />
+    <zplane rmin="206.234*mm" rmax="206.234*mm" z="(-1629.591+0.001)*mm" />
+  </detector>
+  <detector name="SiTrackerEndcapSupport11Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
+    <material name="Rohacell31"/>
+    <zplane rmin="1263.808*mm" rmax="1263.808*mm" z="-1537.062*mm" />
+    <zplane rmin="1191.810*mm" rmax="1263.808*mm" z="-1543.361*mm" />
+    <zplane rmin="206.234*mm" rmax="278.187*mm" z="-1629.591*mm" />
+    <zplane rmin="206.234*mm" rmax="206.234*mm" z="-1635.890*mm" />
+  </detector>
+  <detector name="SiTrackerEndcapSupport12Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
+    <material name="CarbonFiber"/>
+    <zplane rmin="1263.808*mm" rmax="1263.808*mm" z="(-1543.361-0.001)*mm" />
+    <zplane rmin="1258.071*mm" rmax="1263.808*mm" z="(-1543.863-0.001)*mm" />
+    <zplane rmin="206.234*mm" rmax="211.970*mm" z="(-1635.890-0.001)*mm" />
+    <zplane rmin="206.234*mm" rmax="206.234*mm" z="(-1636.392-0.001)*mm" />
+  </detector>        
+
+  <detector name="TrackerReadout" type="DD4hep_DiskTracker" reflect="true" vis="GreenVis">
+
+    <comment>Readouts</comment>
+
+    <layer id="1" inner_r="25.7*cm" inner_z="590.402*mm" outer_r="45.6*cm">
+      <slice material="G10" thickness="0.057*cm" />
+      <slice material="Copper" thickness="0.0038*cm" />
+    </layer>
+    <layer id="2" inner_r="51.0*cm" inner_z="762.854*mm" outer_r="70.6*cm">
+      <slice material = "G10" thickness="0.102*cm" />
+      <slice material = "Copper" thickness="0.0068*cm" />
+    </layer>
+    <layer id="3" inner_r="76.3*cm" inner_z="1026.874*mm" outer_r="95.6*cm">
+      <slice material="G10" thickness="0.108*cm" />
+      <slice material="Copper" thickness="0.0072*cm" />
+    </layer>
+    <layer id="4" inner_r="101.3*cm" inner_z="1285.322*mm" outer_r="120.6*cm">
+      <slice material="G10" thickness="0.186*cm" />
+      <slice material="Copper" thickness="0.0124*cm" />
+    </layer>
+    <layer id="5" inner_r= "101.3*cm" inner_z="1610.0*mm" outer_r="120.6*cm">
+      <slice material="G10" thickness="0.246*cm" />
+      <slice material="Copper" thickness="0.0164*cm" />
+    </layer>
+  </detector>
+
+</detectors>
diff --git a/DDDetectors/compact/SiD/SiD_Vertex.xml b/DDDetectors/compact/SiD/SiD_Vertex.xml
new file mode 100644
index 0000000000000000000000000000000000000000..dd65f30275feb35c324df8ef4050a496638f3ffa
--- /dev/null
+++ b/DDDetectors/compact/SiD/SiD_Vertex.xml
@@ -0,0 +1,47 @@
+<!-- ====================================================================== -->
+<!--                                                                        -->
+<!--    XML description of the complete vertex detector                     -->
+<!--    of the SiD linear collider detector design.                         -->
+<!--                                                                        -->
+<!--    Contained are the required                                          -->
+<!--      ++ global constants used uniquely by this module                  -->
+<!--      ++ visualization attributes                                       -->
+<!--      ++ the definition of the readout structure and the                -->
+<!--         readout segmentation (if necessary)                            -->
+<!--      ++ the include statements for the sensitive detectors and         -->
+<!--         the corresponding support structure(s)                         -->
+<!--                                                                        -->
+<!--                                                                        -->
+<!--   @author  M.Frank                                                     -->
+<!--   @date    14/11/2014                                                  -->
+<!--                                                                        -->
+<!-- ====================================================================== -->
+
+<lccdd>
+  <!--  Definition of global dictionary constants          -->
+  <define>
+  </define>
+
+  <!--  Definition of the used visualization attributes    -->
+  <display>
+    <vis name="SiVertexModuleVis"    alpha="1.0" r="1" g="1"    b="0.6" drawingStyle="wireframe" showDaughters="true"  visible="true"/>
+    <vis name="SiVertexSensitiveVis" alpha="1.0" r="1" g="0.2"  b="0.2" drawingStyle="solid"     showDaughters="true"  visible="true"/>
+    <vis name="SiVertexPassiveVis"   alpha="1.0" r="0" g="0.2"  b="1"   drawingStyle="solid"     showDaughters="true"  visible="true"/>
+    <vis name="SiVertexLayerVis"     alpha="1.0" r="1" g="0.75" b="0"                            showDaughters="false" visible="true"/>
+  </display>
+
+  <!--  Definition of the readout segmentation/definition  -->
+  <readouts>
+    <readout name="SiVertexBarrelHits">
+      <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>
+  
+  <!--  Includes for sensitives and support                -->
+  <include ref="SiD_VertexBarrel.xml"/>
+  <include ref="SiD_VertexEndcap.xml"/>
+  <include ref="SiD_VertexSupport.xml"/>
+</lccdd>
diff --git a/DDDetectors/compact/SiD/SiD_VertexBarrel.xml b/DDDetectors/compact/SiD/SiD_VertexBarrel.xml
new file mode 100644
index 0000000000000000000000000000000000000000..eb04a92d2d1e78adeb9047da3681ac446b561b07
--- /dev/null
+++ b/DDDetectors/compact/SiD/SiD_VertexBarrel.xml
@@ -0,0 +1,82 @@
+<!-- ==================================================================== -->
+<!--                                                                      -->
+<!--    XML description of the Silicon vertex barrel detector             -->
+<!--    of the SiD linear collider detector design.                       -->
+<!--                                                                      -->
+<!--    External definitions used:                                        -->
+<!--    ++++++++++++++++++++++++++                                        -->
+<!--                                                                      -->
+<!--    Required parameters:                                              -->
+<!--      VertexBarrel_ID          Subdetector identifier                 -->
+<!--      VertexBarrel_zmax        Max. dimension in Z                    -->
+<!--      VertexBarrel_r1          Radius of first module layer           -->
+<!--      VertexBarrel_r2          Radius of 2nd.  module layer           -->
+<!--      VertexBarrel_r3          Radius of 3rd.  module layer           -->
+<!--      VertexBarrel_r4          Radius of 4th.  module layer           -->
+<!--      VertexBarrel_r5          Radius of 5th.  module layer           -->
+<!--    NOTE:                                                             -->
+<!--      The driver supports any number of layers.                       -->
+<!--      Only this design has 5 layers!                                  -->
+<!--                                                                      -->
+<!--    Readout definition:                                               -->
+<!--      SiVertexBarrelHits                                              -->
+<!--                                                                      -->
+<!--    Visualization definitions:                                        -->
+<!--      SiVertexModuleVis                                               -->
+<!--      SiVertexLayerVis                                                -->
+<!--      SiVertexPassiveVis                                              -->
+<!--      SiVertexSensitiveVis                                            -->
+<!--                                                                      -->
+<!-- ==================================================================== -->
+
+<detectors>
+  <detector id="VertexBarrel_ID" name="SiVertexBarrel" type="DD4hep_SiTrackerBarrel" readout="SiVertexBarrelHits" insideTrackingVolume="true">
+
+    <comment>Vertex Detector Barrel</comment>
+
+    <module name="VtxBarrelModuleInner" vis="SiVertexModuleVis">
+      <module_envelope width="10.0*mm" length="(VertexBarrel_zmax - 0.1*cm) * 2" thickness="0.6*mm"/>
+      <module_component width="7.8*mm" length="(VertexBarrel_zmax - 0.15*cm) * 2" thickness="0.0130*cm" material="Carbon" sensitive="false" vis="SiVertexPassiveVis">
+	<position z="-0.12*mm"/>
+      </module_component>
+      <module_component width="9.8*mm" length="(VertexBarrel_zmax - 0.15*cm) * 2" thickness="0.005*cm" material="Silicon" sensitive="true" vis="SiVertexSensitiveVis">
+	<position z="0.225*mm"/>
+      </module_component>
+    </module>
+    <module name="VtxBarrelModuleOuter" vis="SiVertexModuleVis">
+      <module_envelope width="14.0*mm" length="(VertexBarrel_zmax - 0.1*cm) * 2" thickness="0.6*mm"/>
+      <module_component width="11.6*mm" length="(VertexBarrel_zmax - 0.15*cm) * 2" thickness="0.0130*cm" material="Carbon" sensitive="false" vis="SiVertexPassiveVis">
+	<position z="-0.12*mm"/>
+      </module_component>
+      <module_component width="13.8*mm" length="(VertexBarrel_zmax - 0.15*cm) * 2" thickness="0.005*cm" material="Silicon" sensitive="true" vis="SiVertexSensitiveVis">
+	<position z="0.210*mm"/>
+      </module_component>
+    </module>
+    <layer module="VtxBarrelModuleInner" id="1" vis="SiVertexLayerVis">
+      <barrel_envelope inner_r="VertexBarrel_r1 - 0.2*cm" outer_r="VertexBarrel_r1 + 0.2*cm" z_length="VertexBarrel_zmax * 2"/>
+      <rphi_layout phi_tilt="0.0*rad" nphi="18" phi0="0.2618*rad" rc="VertexBarrel_r1" dr="-1.15*mm"/>
+      <z_layout dr="0.0*mm" z0="0.0*mm" nz="1"/>
+    </layer>
+    <layer module="VtxBarrelModuleOuter" id="2" vis="SiVertexLayerVis">
+      <barrel_envelope inner_r="VertexBarrel_r2 - 0.2*cm" outer_r="VertexBarrel_r2 + 0.2*cm" z_length="VertexBarrel_zmax * 2"/>
+      <rphi_layout phi_tilt="0.0*rad" nphi="18" phi0="0.2618*rad" rc="VertexBarrel_r2" dr="-1.13*mm"/>
+      <z_layout dr="0.0*mm" z0="0.0*mm" nz="1"/>
+    </layer>
+    <layer module="VtxBarrelModuleOuter" id="3" vis="SiVertexLayerVis">
+      <barrel_envelope inner_r="VertexBarrel_r3 - 0.2*cm" outer_r="VertexBarrel_r3 + 0.2*cm" z_length="VertexBarrel_zmax * 2"/>
+      <rphi_layout phi_tilt="0.0*rad" nphi="24" phi0="0.0*rad" rc="VertexBarrel_r3" dr="-0.89*mm"/>
+      <z_layout dr="0.0*mm" z0="0.0*mm" nz="1"/>
+    </layer>
+    <layer module="VtxBarrelModuleOuter" id="4" vis="SiVertexLayerVis">
+      <barrel_envelope inner_r="VertexBarrel_r4 - 0.2*cm" outer_r="VertexBarrel_r4 + 0.2*cm" z_length="VertexBarrel_zmax * 2"/>
+      <rphi_layout phi_tilt="0.0*rad" nphi="30" phi0="0.1309*rad" rc="VertexBarrel_r4" dr="0.81*mm"/>
+      <z_layout dr="0.0*mm" z0="0.0*mm" nz="1"/>
+    </layer>
+    <layer module="VtxBarrelModuleOuter" id="5" vis="SiVertexLayerVis">
+      <barrel_envelope inner_r="VertexBarrel_r5 - 0.2*cm" outer_r="VertexBarrel_r5 + 0.2*cm" z_length="VertexBarrel_zmax * 2"/>
+      <rphi_layout phi_tilt="0.0*rad" nphi="36" phi0="0.0*rad" rc="VertexBarrel_r5" dr="0.77*mm"/>
+      <z_layout dr="0.0*mm" z0="0.0*mm" nz="1"/>
+    </layer>
+  </detector>
+
+</detectors>
diff --git a/DDDetectors/compact/SiD/SiD_VertexEndcap.xml b/DDDetectors/compact/SiD/SiD_VertexEndcap.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0b4bce07522ff9c62d89113a11b0887ebd980ebe
--- /dev/null
+++ b/DDDetectors/compact/SiD/SiD_VertexEndcap.xml
@@ -0,0 +1,75 @@
+<!-- ==================================================================== -->
+<!--                                                                      -->
+<!--    XML description of the Silicon vertex endcap detector             -->
+<!--    of the SiD linear collider detector design.                       -->
+<!--                                                                      -->
+<!--    External definitions used:                                        -->
+<!--    ++++++++++++++++++++++++++                                        -->
+<!--                                                                      -->
+<!--    Required parameters:                                              -->
+<!--      VertexEndcap_ID          Subdetector identifier                 -->
+<!--      VertexEndcapModules      # of modules in the endcap             -->
+<!--      VertexEndcap_rmax        Max. dimension in R                    -->
+<!--      VertexEndcap_rmin1       Radius of first module                 -->
+<!--      VertexEndcap_rmin2       Radius of 2nd.  module                 -->
+<!--      VertexEndcap_rmin3       Radius of 3rd.  module                 -->
+<!--      VertexEndcap_rmin4       Radius of 4th.  module                 -->
+<!--      VertexEndcap_rmin5       Radius of 5th.  module                 -->
+<!--      VertexEndcap_z1          Starting point of the first layer in Z -->
+<!--      VertexEndcap_z2          Starting point of the 2nd.  layer in Z -->
+<!--      VertexEndcap_z3          Starting point of the 3rd.  layer in Z -->
+<!--      VertexEndcap_z4          Starting point of the 4th.  layer in Z -->
+<!--    NOTE:                                                             -->
+<!--      The driver supports any number of layers.                       -->
+<!--      Only this design has 5 layers!                                  -->
+<!--                                                                      -->
+<!--    Readout definition:                                               -->
+<!--      SiVertexEndcapHits                                              -->
+<!--                                                                      -->
+<!--    Visualization definitions:                                        -->
+<!--      SiVertexModuleVis                                               -->
+<!--      SiVertexLayerVis                                                -->
+<!--      SiVertexPassiveVis                                              -->
+<!--      SiVertexSensitiveVis                                            -->
+<!--                                                                      -->
+<!-- ==================================================================== -->
+
+<detectors>
+
+  <comment>Vertex Detector Endcaps</comment>
+
+  <detector id="2" name="SiVertexEndcap" type="DD4hep_SiTrackerEndcap2" readout="SiVertexEndcapHits" reflect="true">    
+    <module name="SiVertexEndcapModule1">
+      <trd x1="VertexEndcap_rmin1 * tan(pi/(VertexEndcapModules-0.1))" x2="VertexEndcap_rmax * sin(pi/(VertexEndcapModules-0.1*cm))" z="(VertexEndcap_rmax - VertexEndcap_rmin1) / 2" />
+      <module_component thickness="0.005*cm" material="Silicon" sensitive="true"  vis="SiVertexSensitiveVis"/>
+      <module_component thickness="0.013*cm" material="Carbon" vis="SiVertexPassiveVis" />
+    </module>
+    <module name="SiVertexEndcapModule2">
+      <trd x1="VertexEndcap_rmin2 * tan(pi/(VertexEndcapModules-0.1))" x2="VertexEndcap_rmax * sin(pi/(VertexEndcapModules-0.1*cm))" z="(VertexEndcap_rmax - VertexEndcap_rmin2) / 2" />
+      <module_component thickness="0.005*cm" material="Silicon" sensitive="true"  vis="SiVertexSensitiveVis"/>
+      <module_component thickness="0.013*cm" material="Carbon" vis="SiVertexPassiveVis" />
+    </module>
+    <module name="SiVertexEndcapModule3">
+      <trd x1="VertexEndcap_rmin3 * tan(pi/(VertexEndcapModules-0.1))" x2="VertexEndcap_rmax * sin(pi/(VertexEndcapModules-0.1*cm))" z="(VertexEndcap_rmax - VertexEndcap_rmin3) / 2" />
+      <module_component thickness="0.005*cm" material="Silicon" sensitive="true"  vis="SiVertexSensitiveVis"/>
+      <module_component thickness="0.013*cm" material="Carbon" vis="SiVertexPassiveVis" />
+    </module>
+    <module name="SiVertexEndcapModule4">
+      <trd x1="VertexEndcap_rmin4 * tan(pi/(VertexEndcapModules-0.1))" x2="VertexEndcap_rmax * sin(pi/(VertexEndcapModules-0.1*cm))" z="(VertexEndcap_rmax - VertexEndcap_rmin4) / 2" />
+      <module_component thickness="0.005*cm" material="Silicon" sensitive="true"  vis="SiVertexSensitiveVis"/>
+      <module_component thickness="0.013*cm" material="Carbon"  vis="SiVertexPassiveVis"/>
+    </module>
+    <layer id="1"  vis="SiVertexLayerVis">
+      <ring r="(VertexEndcap_rmax + VertexEndcap_rmin1) / 2" zstart="VertexEndcap_z1" nmodules="(int) VertexEndcapModules" dz="0.011*cm" module="SiVertexEndcapModule1"/>
+    </layer>
+    <layer id="2"  vis="SiVertexLayerVis">
+      <ring r="(VertexEndcap_rmax + VertexEndcap_rmin2) / 2" zstart="VertexEndcap_z2" nmodules="(int) VertexEndcapModules" dz="0.011*cm" module="SiVertexEndcapModule2"/>
+    </layer>
+    <layer id="3"  vis="SiVertexLayerVis">
+      <ring r="(VertexEndcap_rmax + VertexEndcap_rmin3) / 2" zstart="VertexEndcap_z3" nmodules="(int) VertexEndcapModules" dz="0.011*cm" module="SiVertexEndcapModule3"/>
+    </layer>
+    <layer id="4"  vis="SiVertexLayerVis">
+      <ring r="(VertexEndcap_rmax + VertexEndcap_rmin4) / 2" zstart="VertexEndcap_z4" nmodules="(int) VertexEndcapModules" dz="0.011*cm" module="SiVertexEndcapModule4"/>
+    </layer>
+  </detector> 
+</detectors>
diff --git a/DDDetectors/compact/SiD/SiD_VertexSupport.xml b/DDDetectors/compact/SiD/SiD_VertexSupport.xml
new file mode 100644
index 0000000000000000000000000000000000000000..512b2c492001c5b949f2ca256d56dc7a4676e7e1
--- /dev/null
+++ b/DDDetectors/compact/SiD/SiD_VertexSupport.xml
@@ -0,0 +1,169 @@
+<!-- ==================================================================== -->
+<!--                                                                      -->
+<!--    XML description of the Silicon vertex barrel detector             -->
+<!--    of the SiD linear collider detector design.                       -->
+<!--                                                                      -->
+<!-- ==================================================================== -->
+
+<detectors>
+
+    <comment>Vertex Detector Supports and Readout</comment>
+
+    <detector name="VertexBarrelSupports" type="DD4hep_MultiLayerTracker" vis="SupportVis" reflect="true">
+
+      <comment>Double-walled Carbon Fiber support tube</comment>
+
+      <layer id="6" inner_r = "16.87*cm" outer_z = "89.48*cm">
+	<slice material = "CarbonFiber" thickness ="VXD_CF_support"/>
+      </layer>
+      <layer id="7" inner_r = "18.42*cm" outer_z = "89.48*cm">
+	<slice material = "CarbonFiber" thickness ="VXD_CF_support"/>
+      </layer>
+    </detector>
+    <detector name="VertexEndSupports" type="DD4hep_DiskTracker" reflect="true" vis="SupportVis">    
+      <layer id="7" inner_r = "(86.88*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexEndcap_offset" inner_z = "86.88*cm" outer_r = "16.87*cm">
+	<slice material = "CarbonFiber" thickness = "VXD_CF_support" />
+      </layer>
+      <layer id="8" inner_r = "(89.43*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexEndcap_offset" inner_z = "89.43*cm" outer_r = "16.87*cm">
+	<slice material = "CarbonFiber" thickness = "VXD_CF_support" />
+      </layer>
+    </detector>
+
+    <detector name="VertexReadout" type="DD4hep_DiskTracker" reflect="true" vis="CableVis">
+
+      <comment>Readout and Cabling</comment>
+
+      <layer id="1" inner_r = "VertexBarrel_r1" outer_r="VertexBarrel_r1 + 0.02*cm"  inner_z= "VertexBarrel_zmax + 0.1*cm" vis="GreenVis">
+	<slice material = "G10" thickness ="0.5*cm"/>
+      </layer>
+      <layer id="2" inner_r = "VertexBarrel_r2" outer_r="VertexBarrel_r2 + 0.02*cm" inner_z="VertexBarrel_zmax + 0.1*cm" vis = "BlueVis">
+	<slice material = "G10" thickness ="0.5*cm"/>
+      </layer>
+      <layer id="3" inner_r = "VertexBarrel_r3" outer_r="VertexBarrel_r3 + 0.02*cm"  inner_z="VertexBarrel_zmax + 0.1*cm" vis="RedVis">
+	<slice material = "G10" thickness ="0.5*cm"/>
+      </layer>
+      <layer id="4" inner_r = "VertexBarrel_r4" outer_r = "VertexBarrel_r4 + 0.02*cm"  inner_z= "VertexBarrel_zmax + 0.1*cm">
+	<slice material = "G10" thickness ="0.5*cm"/>
+      </layer>
+      <layer id="5" inner_r = "VertexBarrel_r5" outer_r = "VertexBarrel_r5 + 0.02*cm"  inner_z= "VertexBarrel_zmax + 0.1*cm">
+	<slice material = "G10" thickness ="0.5*cm"/>
+      </layer>
+      <layer id="6" inner_r = "VertexBarrel_r1 - 0.1*cm" outer_r = "VertexBarrel_r2"  inner_z= "VertexBarrel_zmax + 0.6*cm">
+	<slice material = "Copper" thickness ="0.0057*cm"/>
+      </layer>
+      <layer id="7" inner_r = "VertexBarrel_r2 - 0.01*cm" outer_r = "VertexBarrel_r3"  inner_z= "VertexBarrel_zmax + 0.6*cm">
+	<slice material = "Copper" thickness ="0.0031*cm"/>
+      </layer>
+      <layer id="8" inner_r = "VertexBarrel_r3 - 0.01*cm" outer_r = "VertexBarrel_r4"  inner_z= "VertexBarrel_zmax + 0.6*cm">
+	<slice material = "Copper" thickness ="0.0016*cm"/>
+      </layer>
+      <layer id="9" inner_r = "VertexBarrel_r4 - 0.01*cm" outer_r = "VertexBarrel_r5"  inner_z= "VertexBarrel_zmax + 0.6*cm">
+	<slice material = "Copper" thickness ="0.0007*cm"/>
+      </layer>
+      <layer id="10" inner_r = "VertexEndcap_rmin1 - 0.1*cm"  outer_r = "VertexEndcap_rmin1 - 0.01*cm" inner_z = "VertexEndcap_z1 - 0.1*cm">
+	<slice material = "G10" thickness = "0.02*cm" />
+      </layer>
+      <layer id="11" inner_r = "VertexEndcap_rmin2 - 0.1*cm"  outer_r = "VertexEndcap_rmin2 - 0.01*cm" inner_z = "VertexEndcap_z2 - 0.1*cm">
+	<slice material = "G10" thickness = "0.02*cm" />
+      </layer>
+      <layer id="12" inner_r = "VertexEndcap_rmin3 - 0.1*cm"  outer_r = "VertexEndcap_rmin3 - 0.01*cm" inner_z = "VertexEndcap_z3 - 0.1*cm">
+	<slice material = "G10" thickness = "0.02*cm" />
+      </layer>
+      <layer id="13" inner_r = "VertexEndcap_rmin4 - 0.1*cm"  outer_r = "VertexEndcap_rmin4 - 0.01*cm" inner_z = "VertexEndcap_z4 - 0.1*cm">
+	<slice material = "G10" thickness = "0.02*cm" />
+      </layer>
+      <layer id="14" inner_r = "VertexEndcap_rmax + 0.01*cm"  outer_r = "VertexEndcap_rmax + 0.5*cm" inner_z = "VertexEndcap_z1 - 0.1*cm">
+	<slice material = "G10" thickness = "0.02*cm" />
+      </layer>
+      <layer id="15" inner_r = "VertexEndcap_rmax + 0.01*cm"  outer_r = "VertexEndcap_rmax + 0.5*cm" inner_z = "VertexEndcap_z2 - 0.1*cm">
+	<slice material = "G10" thickness = "0.02*cm" />
+      </layer>
+      <layer id="16" inner_r = "VertexEndcap_rmax + 0.01*cm"  outer_r = "VertexEndcap_rmax + 0.5*cm" inner_z = "VertexEndcap_z3 - 0.1*cm">
+	<slice material = "G10" thickness = "0.02*cm" />
+      </layer>
+      <layer id="17" inner_r = "VertexEndcap_rmax + 0.01*cm"  outer_r = "VertexEndcap_rmax + 0.5*cm" inner_z = "VertexEndcap_z4 - 0.1*cm">
+	<slice material = "G10" thickness = "0.02*cm" />
+      </layer>
+    </detector>
+
+    <detector name="VXDcableZforwardBarrel" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="CableVis">
+      <material name="Copper"/>
+      <zplane rmin = "(CentralBeamPipe_rmax)"
+	      rmax = "(CentralBeamPipe_rmax + VertexCableThickness)"
+	      z="VertexBarrel_zmax + 0.61*cm"/>
+      <zplane rmin = "(CentralBeamPipe_rmax)"
+	      rmax = "(CentralBeamPipe_rmax + VertexCableThickness)"
+	      z="CentralBeamPipe_zmax"/>
+    </detector>
+
+    <detector name="VXDcableZbackwardBarrel" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="CableVis">
+      <material name="Copper"/>
+      <zplane rmin = "(CentralBeamPipe_rmax)"
+	      rmax = "(CentralBeamPipe_rmax + VertexCableThickness)"
+	      z="-(VertexBarrel_zmax + 0.61*cm)"/>
+      <zplane rmin = "(CentralBeamPipe_rmax)"
+	      rmax = "(CentralBeamPipe_rmax + VertexCableThickness)"
+	      z="-CentralBeamPipe_zmax"/>
+    </detector> 
+
+    <detector name="VXDcableZbackwardOuter" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="CableVis">
+      <material name="Copper"/>
+      <zplane rmin = "((tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax)" 
+	      rmax = "((tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + 0.004*cm)" 
+	      z="-tracking_region_zmax" />
+      <zplane rmin="(VertexService_zmax + 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
+	      rmax="(VertexService_zmax + 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + 0.01*cm"
+	      z="-(VertexService_zmax + 0.01*cm)"/>
+    </detector>
+
+    <detector name="VXDcableZbackwardInner" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="CableVis">
+      <material name="Copper"/>
+      <zplane rmin="CentralBeamPipe_rmax"
+	      rmax="CentralBeamPipe_rmax + VertexCableThickness"
+	      z="-(CentralBeamPipe_zmax)"/>
+      <zplane rmin="(VertexService_zmin - 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
+	      rmax="(VertexService_zmin - 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexCableThickness"
+	      z="-(VertexService_zmin - 0.01*cm)"/>
+    </detector>
+
+    <detector name="VXDcableZforwardOuter" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="CableVis">
+      <material name="Copper"/>
+      <zplane rmin = "((tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax)" 
+	      rmax = "((tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + 0.004*cm)" 
+	      z="tracking_region_zmax" />
+      <zplane rmin="(VertexService_zmax + 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
+	      rmax="(VertexService_zmax + 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + 0.01*cm"
+	      z="VertexService_zmax + 0.01*cm"/>
+    </detector>
+
+    <detector name="VXDcableZforwardInner" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="CableVis">
+      <material name="Copper"/>
+      <zplane rmin="(VertexService_zmin - 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
+	      rmax="(VertexService_zmin - 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexCableThickness"
+	      z="VertexService_zmin - 0.01*cm"/>
+      <zplane rmin="CentralBeamPipe_rmax"
+	      rmax="CentralBeamPipe_rmax + VertexCableThickness"
+	      z="CentralBeamPipe_zmax"/>
+    </detector>
+
+    <detector name="VXDserviceZbackward" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="CableVis">
+      <material name="G10"/>
+      <zplane rmin = "(VertexService_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
+	      rmax="(VertexService_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexServiceThickness"
+	      z="-VertexService_zmax"/>
+      <zplane rmin = "(VertexService_zmin - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
+	      rmax="(VertexService_zmin - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexServiceThickness"
+	      z="-VertexService_zmin"/>
+    </detector>
+
+    <detector name="VXDserviceZforward" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="CableVis">
+      <material name="G10"/>
+      <zplane rmin = "(VertexService_zmin - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
+	      rmax="(VertexService_zmin - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexServiceThickness"
+	      z="VertexService_zmin"/>
+      <zplane rmin = "(VertexService_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
+	      rmax="(VertexService_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexServiceThickness"
+	      z="VertexService_zmax"/>
+    </detector>
+
+</detectors>
diff --git a/DDDetectors/compact/elements.xml b/DDDetectors/compact/elements.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e714c3a5cd544e748dd2941967cff515c0b77efc
--- /dev/null
+++ b/DDDetectors/compact/elements.xml
@@ -0,0 +1,884 @@
+<materials>
+ <element Z="89" formula="Ac" name="Ac" >
+  <atom type="A" unit="g/mol" value="227.028" />
+ </element>
+ <material formula="Ac" name="Actinium" state="solid" >
+  <RL type="X0" unit="cm" value="0.601558" />
+  <NIL type="lambda" unit="cm" value="21.2048" />
+  <D type="density" unit="g/cm3" value="10.07" />
+  <composite n="1" ref="Ac" />
+ </material>
+ <element Z="47" formula="Ag" name="Ag" >
+  <atom type="A" unit="g/mol" value="107.868" />
+ </element>
+ <material formula="Ag" name="Silver" state="solid" >
+  <RL type="X0" unit="cm" value="0.854292" />
+  <NIL type="lambda" unit="cm" value="15.8546" />
+  <D type="density" unit="g/cm3" value="10.5" />
+  <composite n="1" ref="Ag" />
+ </material>
+ <element Z="13" formula="Al" name="Al" >
+  <atom type="A" unit="g/mol" value="26.9815" />
+ </element>
+ <material formula="Al" name="Aluminum" state="solid" >
+  <RL type="X0" unit="cm" value="8.89632" />
+  <NIL type="lambda" unit="cm" value="38.8766" />
+  <D type="density" unit="g/cm3" value="2.699" />
+  <composite n="1" ref="Al" />
+ </material>
+ <element Z="95" formula="Am" name="Am" >
+  <atom type="A" unit="g/mol" value="243.061" />
+ </element>
+ <material formula="Am" name="Americium" state="solid" >
+  <RL type="X0" unit="cm" value="0.42431" />
+  <NIL type="lambda" unit="cm" value="15.9812" />
+  <D type="density" unit="g/cm3" value="13.67" />
+  <composite n="1" ref="Am" />
+ </material>
+ <element Z="18" formula="Ar" name="Ar" >
+  <atom type="A" unit="g/mol" value="39.9477" />
+ </element>
+ <material formula="Ar" name="Argon" state="gas" >
+  <RL type="X0" unit="cm" value="11762.1" />
+  <NIL type="lambda" unit="cm" value="71926" />
+  <D type="density" unit="g/cm3" value="0.00166201" />
+  <composite n="1" ref="Ar" />
+ </material>
+ <element Z="33" formula="As" name="As" >
+  <atom type="A" unit="g/mol" value="74.9216" />
+ </element>
+ <material formula="As" name="Arsenic" state="solid" >
+  <RL type="X0" unit="cm" value="2.0838" />
+  <NIL type="lambda" unit="cm" value="25.7324" />
+  <D type="density" unit="g/cm3" value="5.73" />
+  <composite n="1" ref="As" />
+ </material>
+ <element Z="85" formula="At" name="At" >
+  <atom type="A" unit="g/mol" value="209.987" />
+ </element>
+ <material formula="At" name="Astatine" state="solid" >
+  <RL type="X0" unit="cm" value="0.650799" />
+  <NIL type="lambda" unit="cm" value="22.3202" />
+  <D type="density" unit="g/cm3" value="9.32" />
+  <composite n="1" ref="At" />
+ </material>
+ <element Z="79" formula="Au" name="Au" >
+  <atom type="A" unit="g/mol" value="196.967" />
+ </element>
+ <material formula="Au" name="Gold" state="solid" >
+  <RL type="X0" unit="cm" value="0.334436" />
+  <NIL type="lambda" unit="cm" value="10.5393" />
+  <D type="density" unit="g/cm3" value="19.32" />
+  <composite n="1" ref="Au" />
+ </material>
+ <element Z="5" formula="B" name="B" >
+  <atom type="A" unit="g/mol" value="10.811" />
+ </element>
+ <material formula="B" name="Boron" state="solid" >
+  <RL type="X0" unit="cm" value="22.2307" />
+  <NIL type="lambda" unit="cm" value="32.2793" />
+  <D type="density" unit="g/cm3" value="2.37" />
+  <composite n="1" ref="B" />
+ </material>
+ <element Z="56" formula="Ba" name="Ba" >
+  <atom type="A" unit="g/mol" value="137.327" />
+ </element>
+ <material formula="Ba" name="Barium" state="solid" >
+  <RL type="X0" unit="cm" value="2.37332" />
+  <NIL type="lambda" unit="cm" value="51.6743" />
+  <D type="density" unit="g/cm3" value="3.5" />
+  <composite n="1" ref="Ba" />
+ </material>
+ <element Z="4" formula="Be" name="Be" >
+  <atom type="A" unit="g/mol" value="9.01218" />
+ </element>
+ <material formula="Be" name="Beryllium" state="solid" >
+  <RL type="X0" unit="cm" value="35.276" />
+  <NIL type="lambda" unit="cm" value="39.4488" />
+  <D type="density" unit="g/cm3" value="1.848" />
+  <composite n="1" ref="Be" />
+ </material>
+ <element Z="83" formula="Bi" name="Bi" >
+  <atom type="A" unit="g/mol" value="208.98" />
+ </element>
+ <material formula="Bi" name="Bismuth" state="solid" >
+  <RL type="X0" unit="cm" value="0.645388" />
+  <NIL type="lambda" unit="cm" value="21.3078" />
+  <D type="density" unit="g/cm3" value="9.747" />
+  <composite n="1" ref="Bi" />
+ </material>
+ <element Z="97" formula="Bk" name="Bk" >
+  <atom type="A" unit="g/mol" value="247.07" />
+ </element>
+ <material formula="Bk" name="Berkelium" state="solid" >
+  <RL type="X0" unit="cm" value="0.406479" />
+  <NIL type="lambda" unit="cm" value="15.6902" />
+  <D type="density" unit="g/cm3" value="14" />
+  <composite n="1" ref="Bk" />
+ </material>
+ <element Z="35" formula="Br" name="Br" >
+  <atom type="A" unit="g/mol" value="79.9035" />
+ </element>
+ <material formula="Br" name="Bromine" state="gas" >
+  <RL type="X0" unit="cm" value="1615.12" />
+  <NIL type="lambda" unit="cm" value="21299" />
+  <D type="density" unit="g/cm3" value="0.0070721" />
+  <composite n="1" ref="Br" />
+ </material>
+ <element Z="6" formula="C" name="C" >
+  <atom type="A" unit="g/mol" value="12.0107" />
+ </element>
+ <material formula="C" name="Carbon" state="solid" >
+  <RL type="X0" unit="cm" value="21.3485" />
+  <NIL type="lambda" unit="cm" value="40.1008" />
+  <D type="density" unit="g/cm3" value="2" />
+  <composite n="1" ref="C" />
+ </material>
+ <element Z="20" formula="Ca" name="Ca" >
+  <atom type="A" unit="g/mol" value="40.078" />
+ </element>
+ <material formula="Ca" name="Calcium" state="solid" >
+  <RL type="X0" unit="cm" value="10.4151" />
+  <NIL type="lambda" unit="cm" value="77.3754" />
+  <D type="density" unit="g/cm3" value="1.55" />
+  <composite n="1" ref="Ca" />
+ </material>
+ <element Z="48" formula="Cd" name="Cd" >
+  <atom type="A" unit="g/mol" value="112.411" />
+ </element>
+ <material formula="Cd" name="Cadmium" state="solid" >
+  <RL type="X0" unit="cm" value="1.03994" />
+  <NIL type="lambda" unit="cm" value="19.46" />
+  <D type="density" unit="g/cm3" value="8.65" />
+  <composite n="1" ref="Cd" />
+ </material>
+ <element Z="58" formula="Ce" name="Ce" >
+  <atom type="A" unit="g/mol" value="140.115" />
+ </element>
+ <material formula="Ce" name="Cerium" state="solid" >
+  <RL type="X0" unit="cm" value="1.19506" />
+  <NIL type="lambda" unit="cm" value="27.3227" />
+  <D type="density" unit="g/cm3" value="6.657" />
+  <composite n="1" ref="Ce" />
+ </material>
+ <element Z="98" formula="Cf" name="Cf" >
+  <atom type="A" unit="g/mol" value="251.08" />
+ </element>
+ <material formula="Cf" name="Californium" state="solid" >
+  <RL type="X0" unit="cm" value="0.568328" />
+  <NIL type="lambda" unit="cm" value="22.085" />
+  <D type="density" unit="g/cm3" value="10" />
+  <composite n="1" ref="Cf" />
+ </material>
+ <element Z="17" formula="Cl" name="Cl" >
+  <atom type="A" unit="g/mol" value="35.4526" />
+ </element>
+ <material formula="Cl" name="Chlorine" state="gas" >
+  <RL type="X0" unit="cm" value="6437.34" />
+  <NIL type="lambda" unit="cm" value="38723.9" />
+  <D type="density" unit="g/cm3" value="0.00299473" />
+  <composite n="1" ref="Cl" />
+ </material>
+ <element Z="96" formula="Cm" name="Cm" >
+  <atom type="A" unit="g/mol" value="247.07" />
+ </element>
+ <material formula="Cm" name="Curium" state="solid" >
+  <RL type="X0" unit="cm" value="0.428706" />
+  <NIL type="lambda" unit="cm" value="16.2593" />
+  <D type="density" unit="g/cm3" value="13.51" />
+  <composite n="1" ref="Cm" />
+ </material>
+ <element Z="27" formula="Co" name="Co" >
+  <atom type="A" unit="g/mol" value="58.9332" />
+ </element>
+ <material formula="Co" name="Cobalt" state="solid" >
+  <RL type="X0" unit="cm" value="1.53005" />
+  <NIL type="lambda" unit="cm" value="15.2922" />
+  <D type="density" unit="g/cm3" value="8.9" />
+  <composite n="1" ref="Co" />
+ </material>
+ <element Z="24" formula="Cr" name="Cr" >
+  <atom type="A" unit="g/mol" value="51.9961" />
+ </element>
+ <material formula="Cr" name="Chromium" state="solid" >
+  <RL type="X0" unit="cm" value="2.0814" />
+  <NIL type="lambda" unit="cm" value="18.1933" />
+  <D type="density" unit="g/cm3" value="7.18" />
+  <composite n="1" ref="Cr" />
+ </material>
+ <element Z="55" formula="Cs" name="Cs" >
+  <atom type="A" unit="g/mol" value="132.905" />
+ </element>
+ <material formula="Cs" name="Cesium" state="solid" >
+  <RL type="X0" unit="cm" value="4.4342" />
+  <NIL type="lambda" unit="cm" value="95.317" />
+  <D type="density" unit="g/cm3" value="1.873" />
+  <composite n="1" ref="Cs" />
+ </material>
+ <element Z="29" formula="Cu" name="Cu" >
+  <atom type="A" unit="g/mol" value="63.5456" />
+ </element>
+ <material formula="Cu" name="Copper" state="solid" >
+  <RL type="X0" unit="cm" value="1.43558" />
+  <NIL type="lambda" unit="cm" value="15.5141" />
+  <D type="density" unit="g/cm3" value="8.96" />
+  <composite n="1" ref="Cu" />
+ </material>
+ <element Z="66" formula="Dy" name="Dy" >
+  <atom type="A" unit="g/mol" value="162.497" />
+ </element>
+ <material formula="Dy" name="Dysprosium" state="solid" >
+  <RL type="X0" unit="cm" value="0.85614" />
+  <NIL type="lambda" unit="cm" value="22.2923" />
+  <D type="density" unit="g/cm3" value="8.55" />
+  <composite n="1" ref="Dy" />
+ </material>
+ <element Z="68" formula="Er" name="Er" >
+  <atom type="A" unit="g/mol" value="167.256" />
+ </element>
+ <material formula="Er" name="Erbium" state="solid" >
+  <RL type="X0" unit="cm" value="0.788094" />
+  <NIL type="lambda" unit="cm" value="21.2923" />
+  <D type="density" unit="g/cm3" value="9.066" />
+  <composite n="1" ref="Er" />
+ </material>
+ <element Z="63" formula="Eu" name="Eu" >
+  <atom type="A" unit="g/mol" value="151.964" />
+ </element>
+ <material formula="Eu" name="Europium" state="solid" >
+  <RL type="X0" unit="cm" value="1.41868" />
+  <NIL type="lambda" unit="cm" value="35.6178" />
+  <D type="density" unit="g/cm3" value="5.243" />
+  <composite n="1" ref="Eu" />
+ </material>
+ <element Z="9" formula="F" name="F" >
+  <atom type="A" unit="g/mol" value="18.9984" />
+ </element>
+ <material formula="F" name="Fluorine" state="gas" >
+  <RL type="X0" unit="cm" value="20838.2" />
+  <NIL type="lambda" unit="cm" value="59094.3" />
+  <D type="density" unit="g/cm3" value="0.00158029" />
+  <composite n="1" ref="F" />
+ </material>
+ <element Z="26" formula="Fe" name="Fe" >
+  <atom type="A" unit="g/mol" value="55.8451" />
+ </element>
+ <material formula="Fe" name="Iron" state="solid" >
+  <RL type="X0" unit="cm" value="1.75749" />
+  <NIL type="lambda" unit="cm" value="16.959" />
+  <D type="density" unit="g/cm3" value="7.874" />
+  <composite n="1" ref="Fe" />
+ </material>
+ <element Z="87" formula="Fr" name="Fr" >
+  <atom type="A" unit="g/mol" value="223.02" />
+ </element>
+ <material formula="Fr" name="Francium" state="solid" >
+  <RL type="X0" unit="cm" value="6.18826" />
+  <NIL type="lambda" unit="cm" value="212.263" />
+  <D type="density" unit="g/cm3" value="1" />
+  <composite n="1" ref="Fr" />
+ </material>
+ <element Z="31" formula="Ga" name="Ga" >
+  <atom type="A" unit="g/mol" value="69.7231" />
+ </element>
+ <material formula="Ga" name="Gallium" state="solid" >
+  <RL type="X0" unit="cm" value="2.1128" />
+  <NIL type="lambda" unit="cm" value="24.3351" />
+  <D type="density" unit="g/cm3" value="5.904" />
+  <composite n="1" ref="Ga" />
+ </material>
+ <element Z="64" formula="Gd" name="Gd" >
+  <atom type="A" unit="g/mol" value="157.252" />
+ </element>
+ <material formula="Gd" name="Gadolinium" state="solid" >
+  <RL type="X0" unit="cm" value="0.947208" />
+  <NIL type="lambda" unit="cm" value="23.9377" />
+  <D type="density" unit="g/cm3" value="7.9004" />
+  <composite n="1" ref="Gd" />
+ </material>
+ <element Z="32" formula="Ge" name="Ge" >
+  <atom type="A" unit="g/mol" value="72.6128" />
+ </element>
+ <material formula="Ge" name="Germanium" state="solid" >
+  <RL type="X0" unit="cm" value="2.3013" />
+  <NIL type="lambda" unit="cm" value="27.3344" />
+  <D type="density" unit="g/cm3" value="5.323" />
+  <composite n="1" ref="Ge" />
+ </material>
+ <element Z="1" formula="H" name="H" >
+  <atom type="A" unit="g/mol" value="1.00794" />
+ </element>
+ <material formula="H" name="Hydrogen" state="gas" >
+  <RL type="X0" unit="cm" value="752776" />
+  <NIL type="lambda" unit="cm" value="421239" />
+  <D type="density" unit="g/cm3" value="8.3748e-05" />
+  <composite n="1" ref="H" />
+ </material>
+ <element Z="2" formula="He" name="He" >
+  <atom type="A" unit="g/mol" value="4.00264" />
+ </element>
+ <material formula="He" name="Helium" state="gas" >
+  <RL type="X0" unit="cm" value="567113" />
+  <NIL type="lambda" unit="cm" value="334266" />
+  <D type="density" unit="g/cm3" value="0.000166322" />
+  <composite n="1" ref="He" />
+ </material>
+ <element Z="72" formula="Hf" name="Hf" >
+  <atom type="A" unit="g/mol" value="178.485" />
+ </element>
+ <material formula="Hf" name="Hafnium" state="solid" >
+  <RL type="X0" unit="cm" value="0.517717" />
+  <NIL type="lambda" unit="cm" value="14.7771" />
+  <D type="density" unit="g/cm3" value="13.31" />
+  <composite n="1" ref="Hf" />
+ </material>
+ <element Z="80" formula="Hg" name="Hg" >
+  <atom type="A" unit="g/mol" value="200.599" />
+ </element>
+ <material formula="Hg" name="Mercury" state="solid" >
+  <RL type="X0" unit="cm" value="0.475241" />
+  <NIL type="lambda" unit="cm" value="15.105" />
+  <D type="density" unit="g/cm3" value="13.546" />
+  <composite n="1" ref="Hg" />
+ </material>
+ <element Z="67" formula="Ho" name="Ho" >
+  <atom type="A" unit="g/mol" value="164.93" />
+ </element>
+ <material formula="Ho" name="Holmium" state="solid" >
+  <RL type="X0" unit="cm" value="0.822447" />
+  <NIL type="lambda" unit="cm" value="21.8177" />
+  <D type="density" unit="g/cm3" value="8.795" />
+  <composite n="1" ref="Ho" />
+ </material>
+ <element Z="53" formula="I" name="I" >
+  <atom type="A" unit="g/mol" value="126.904" />
+ </element>
+ <material formula="I" name="Iodine" state="solid" >
+  <RL type="X0" unit="cm" value="1.72016" />
+  <NIL type="lambda" unit="cm" value="35.6583" />
+  <D type="density" unit="g/cm3" value="4.93" />
+  <composite n="1" ref="I" />
+ </material>
+ <element Z="49" formula="In" name="In" >
+  <atom type="A" unit="g/mol" value="114.818" />
+ </element>
+ <material formula="In" name="Indium" state="solid" >
+  <RL type="X0" unit="cm" value="1.21055" />
+  <NIL type="lambda" unit="cm" value="23.2468" />
+  <D type="density" unit="g/cm3" value="7.31" />
+  <composite n="1" ref="In" />
+ </material>
+ <element Z="77" formula="Ir" name="Ir" >
+  <atom type="A" unit="g/mol" value="192.216" />
+ </element>
+ <material formula="Ir" name="Iridium" state="solid" >
+  <RL type="X0" unit="cm" value="0.294142" />
+  <NIL type="lambda" unit="cm" value="9.01616" />
+  <D type="density" unit="g/cm3" value="22.42" />
+  <composite n="1" ref="Ir" />
+ </material>
+ <element Z="19" formula="K" name="K" >
+  <atom type="A" unit="g/mol" value="39.0983" />
+ </element>
+ <material formula="K" name="Potassium" state="solid" >
+  <RL type="X0" unit="cm" value="20.0871" />
+  <NIL type="lambda" unit="cm" value="138.041" />
+  <D type="density" unit="g/cm3" value="0.862" />
+  <composite n="1" ref="K" />
+ </material>
+ <element Z="36" formula="Kr" name="Kr" >
+  <atom type="A" unit="g/mol" value="83.7993" />
+ </element>
+ <material formula="Kr" name="Krypton" state="gas" >
+  <RL type="X0" unit="cm" value="3269.44" />
+  <NIL type="lambda" unit="cm" value="43962.9" />
+  <D type="density" unit="g/cm3" value="0.00347832" />
+  <composite n="1" ref="Kr" />
+ </material>
+ <element Z="57" formula="La" name="La" >
+  <atom type="A" unit="g/mol" value="138.905" />
+ </element>
+ <material formula="La" name="Lanthanum" state="solid" >
+  <RL type="X0" unit="cm" value="1.32238" />
+  <NIL type="lambda" unit="cm" value="29.441" />
+  <D type="density" unit="g/cm3" value="6.154" />
+  <composite n="1" ref="La" />
+ </material>
+ <element Z="3" formula="Li" name="Li" >
+  <atom type="A" unit="g/mol" value="6.94003" />
+ </element>
+ <material formula="Li" name="Lithium" state="solid" >
+  <RL type="X0" unit="cm" value="154.997" />
+  <NIL type="lambda" unit="cm" value="124.305" />
+  <D type="density" unit="g/cm3" value="0.534" />
+  <composite n="1" ref="Li" />
+ </material>
+ <element Z="71" formula="Lu" name="Lu" >
+  <atom type="A" unit="g/mol" value="174.967" />
+ </element>
+ <material formula="Lu" name="Lutetium" state="solid" >
+  <RL type="X0" unit="cm" value="0.703651" />
+  <NIL type="lambda" unit="cm" value="19.8916" />
+  <D type="density" unit="g/cm3" value="9.84" />
+  <composite n="1" ref="Lu" />
+ </material>
+ <element Z="12" formula="Mg" name="Mg" >
+  <atom type="A" unit="g/mol" value="24.305" />
+ </element>
+ <material formula="Mg" name="Magnesium" state="solid" >
+  <RL type="X0" unit="cm" value="14.3859" />
+  <NIL type="lambda" unit="cm" value="58.7589" />
+  <D type="density" unit="g/cm3" value="1.74" />
+  <composite n="1" ref="Mg" />
+ </material>
+ <element Z="25" formula="Mn" name="Mn" >
+  <atom type="A" unit="g/mol" value="54.938" />
+ </element>
+ <material formula="Mn" name="Manganese" state="solid" >
+  <RL type="X0" unit="cm" value="1.96772" />
+  <NIL type="lambda" unit="cm" value="17.8701" />
+  <D type="density" unit="g/cm3" value="7.44" />
+  <composite n="1" ref="Mn" />
+ </material>
+ <element Z="42" formula="Mo" name="Mo" >
+  <atom type="A" unit="g/mol" value="95.9313" />
+ </element>
+ <material formula="Mo" name="Molybdenum" state="solid" >
+  <RL type="X0" unit="cm" value="0.959107" />
+  <NIL type="lambda" unit="cm" value="15.6698" />
+  <D type="density" unit="g/cm3" value="10.22" />
+  <composite n="1" ref="Mo" />
+ </material>
+ <element Z="7" formula="N" name="N" >
+  <atom type="A" unit="g/mol" value="14.0068" />
+ </element>
+ <material formula="N" name="Nitrogen" state="gas" >
+  <RL type="X0" unit="cm" value="32602.2" />
+  <NIL type="lambda" unit="cm" value="72430.3" />
+  <D type="density" unit="g/cm3" value="0.0011652" />
+  <composite n="1" ref="N" />
+ </material>
+ <element Z="11" formula="Na" name="Na" >
+  <atom type="A" unit="g/mol" value="22.9898" />
+ </element>
+ <material formula="Na" name="Sodium" state="solid" >
+  <RL type="X0" unit="cm" value="28.5646" />
+  <NIL type="lambda" unit="cm" value="102.463" />
+  <D type="density" unit="g/cm3" value="0.971" />
+  <composite n="1" ref="Na" />
+ </material>
+ <element Z="41" formula="Nb" name="Nb" >
+  <atom type="A" unit="g/mol" value="92.9064" />
+ </element>
+ <material formula="Nb" name="Niobium" state="solid" >
+  <RL type="X0" unit="cm" value="1.15783" />
+  <NIL type="lambda" unit="cm" value="18.4846" />
+  <D type="density" unit="g/cm3" value="8.57" />
+  <composite n="1" ref="Nb" />
+ </material>
+ <element Z="60" formula="Nd" name="Nd" >
+  <atom type="A" unit="g/mol" value="144.236" />
+ </element>
+ <material formula="Nd" name="Neodymium" state="solid" >
+  <RL type="X0" unit="cm" value="1.11667" />
+  <NIL type="lambda" unit="cm" value="26.6308" />
+  <D type="density" unit="g/cm3" value="6.9" />
+  <composite n="1" ref="Nd" />
+ </material>
+ <element Z="10" formula="Ne" name="Ne" >
+  <atom type="A" unit="g/mol" value="20.18" />
+ </element>
+ <material formula="Ne" name="Neon" state="gas" >
+  <RL type="X0" unit="cm" value="34504.8" />
+  <NIL type="lambda" unit="cm" value="114322" />
+  <D type="density" unit="g/cm3" value="0.000838505" />
+  <composite n="1" ref="Ne" />
+ </material>
+ <element Z="28" formula="Ni" name="Ni" >
+  <atom type="A" unit="g/mol" value="58.6933" />
+ </element>
+ <material formula="Ni" name="Nickel" state="solid" >
+  <RL type="X0" unit="cm" value="1.42422" />
+  <NIL type="lambda" unit="cm" value="15.2265" />
+  <D type="density" unit="g/cm3" value="8.902" />
+  <composite n="1" ref="Ni" />
+ </material>
+ <element Z="93" formula="Np" name="Np" >
+  <atom type="A" unit="g/mol" value="237.048" />
+ </element>
+ <material formula="Np" name="Neptunium" state="solid" >
+  <RL type="X0" unit="cm" value="0.289676" />
+  <NIL type="lambda" unit="cm" value="10.6983" />
+  <D type="density" unit="g/cm3" value="20.25" />
+  <composite n="1" ref="Np" />
+ </material>
+ <element Z="8" formula="O" name="O" >
+  <atom type="A" unit="g/mol" value="15.9994" />
+ </element>
+ <material formula="O" name="Oxygen" state="gas" >
+  <RL type="X0" unit="cm" value="25713.8" />
+  <NIL type="lambda" unit="cm" value="66233.9" />
+  <D type="density" unit="g/cm3" value="0.00133151" />
+  <composite n="1" ref="O" />
+ </material>
+ <element Z="76" formula="Os" name="Os" >
+  <atom type="A" unit="g/mol" value="190.225" />
+ </element>
+ <material formula="Os" name="Osmium" state="solid" >
+  <RL type="X0" unit="cm" value="0.295861" />
+  <NIL type="lambda" unit="cm" value="8.92553" />
+  <D type="density" unit="g/cm3" value="22.57" />
+  <composite n="1" ref="Os" />
+ </material>
+ <element Z="15" formula="P" name="P" >
+  <atom type="A" unit="g/mol" value="30.9738" />
+ </element>
+ <material formula="P" name="Phosphorus" state="solid" >
+  <RL type="X0" unit="cm" value="9.63879" />
+  <NIL type="lambda" unit="cm" value="49.9343" />
+  <D type="density" unit="g/cm3" value="2.2" />
+  <composite n="1" ref="P" />
+ </material>
+ <element Z="91" formula="Pa" name="Pa" >
+  <atom type="A" unit="g/mol" value="231.036" />
+ </element>
+ <material formula="Pa" name="Protactinium" state="solid" >
+  <RL type="X0" unit="cm" value="0.38607" />
+  <NIL type="lambda" unit="cm" value="13.9744" />
+  <D type="density" unit="g/cm3" value="15.37" />
+  <composite n="1" ref="Pa" />
+ </material>
+ <element Z="82" formula="Pb" name="Pb" >
+  <atom type="A" unit="g/mol" value="207.217" />
+ </element>
+ <material formula="Pb" name="Lead" state="solid" >
+  <RL type="X0" unit="cm" value="0.561253" />
+  <NIL type="lambda" unit="cm" value="18.2607" />
+  <D type="density" unit="g/cm3" value="11.35" />
+  <composite n="1" ref="Pb" />
+ </material>
+ <element Z="46" formula="Pd" name="Pd" >
+  <atom type="A" unit="g/mol" value="106.415" />
+ </element>
+ <material formula="Pd" name="Palladium" state="solid" >
+  <RL type="X0" unit="cm" value="0.765717" />
+  <NIL type="lambda" unit="cm" value="13.7482" />
+  <D type="density" unit="g/cm3" value="12.02" />
+  <composite n="1" ref="Pd" />
+ </material>
+ <element Z="61" formula="Pm" name="Pm" >
+  <atom type="A" unit="g/mol" value="144.913" />
+ </element>
+ <material formula="Pm" name="Promethium" state="solid" >
+  <RL type="X0" unit="cm" value="1.04085" />
+  <NIL type="lambda" unit="cm" value="25.4523" />
+  <D type="density" unit="g/cm3" value="7.22" />
+  <composite n="1" ref="Pm" />
+ </material>
+ <element Z="84" formula="Po" name="Po" >
+  <atom type="A" unit="g/mol" value="208.982" />
+ </element>
+ <material formula="Po" name="Polonium" state="solid" >
+  <RL type="X0" unit="cm" value="0.661092" />
+  <NIL type="lambda" unit="cm" value="22.2842" />
+  <D type="density" unit="g/cm3" value="9.32" />
+  <composite n="1" ref="Po" />
+ </material>
+ <element Z="59" formula="Pr" name="Pr" >
+  <atom type="A" unit="g/mol" value="140.908" />
+ </element>
+ <material formula="Pr" name="Praseodymium" state="solid" >
+  <RL type="X0" unit="cm" value="1.1562" />
+  <NIL type="lambda" unit="cm" value="27.1312" />
+  <D type="density" unit="g/cm3" value="6.71" />
+  <composite n="1" ref="Pr" />
+ </material>
+ <element Z="78" formula="Pt" name="Pt" >
+  <atom type="A" unit="g/mol" value="195.078" />
+ </element>
+ <material formula="Pt" name="Platinum" state="solid" >
+  <RL type="X0" unit="cm" value="0.305053" />
+  <NIL type="lambda" unit="cm" value="9.46584" />
+  <D type="density" unit="g/cm3" value="21.45" />
+  <composite n="1" ref="Pt" />
+ </material>
+ <element Z="94" formula="Pu" name="Pu" >
+  <atom type="A" unit="g/mol" value="244.064" />
+ </element>
+ <material formula="Pu" name="Plutonium" state="solid" >
+  <RL type="X0" unit="cm" value="0.298905" />
+  <NIL type="lambda" unit="cm" value="11.0265" />
+  <D type="density" unit="g/cm3" value="19.84" />
+  <composite n="1" ref="Pu" />
+ </material>
+ <element Z="88" formula="Ra" name="Ra" >
+  <atom type="A" unit="g/mol" value="226.025" />
+ </element>
+ <material formula="Ra" name="Radium" state="solid" >
+  <RL type="X0" unit="cm" value="1.22987" />
+  <NIL type="lambda" unit="cm" value="42.6431" />
+  <D type="density" unit="g/cm3" value="5" />
+  <composite n="1" ref="Ra" />
+ </material>
+ <element Z="37" formula="Rb" name="Rb" >
+  <atom type="A" unit="g/mol" value="85.4677" />
+ </element>
+ <material formula="Rb" name="Rubidium" state="solid" >
+  <RL type="X0" unit="cm" value="7.19774" />
+  <NIL type="lambda" unit="cm" value="100.218" />
+  <D type="density" unit="g/cm3" value="1.532" />
+  <composite n="1" ref="Rb" />
+ </material>
+ <element Z="75" formula="Re" name="Re" >
+  <atom type="A" unit="g/mol" value="186.207" />
+ </element>
+ <material formula="Re" name="Rhenium" state="solid" >
+  <RL type="X0" unit="cm" value="0.318283" />
+  <NIL type="lambda" unit="cm" value="9.5153" />
+  <D type="density" unit="g/cm3" value="21.02" />
+  <composite n="1" ref="Re" />
+ </material>
+ <element Z="45" formula="Rh" name="Rh" >
+  <atom type="A" unit="g/mol" value="102.906" />
+ </element>
+ <material formula="Rh" name="Rhodium" state="solid" >
+  <RL type="X0" unit="cm" value="0.746619" />
+  <NIL type="lambda" unit="cm" value="13.2083" />
+  <D type="density" unit="g/cm3" value="12.41" />
+  <composite n="1" ref="Rh" />
+ </material>
+ <element Z="86" formula="Rn" name="Rn" >
+  <atom type="A" unit="g/mol" value="222.018" />
+ </element>
+ <material formula="Rn" name="Radon" state="gas" >
+  <RL type="X0" unit="cm" value="697.777" />
+  <NIL type="lambda" unit="cm" value="23532" />
+  <D type="density" unit="g/cm3" value="0.00900662" />
+  <composite n="1" ref="Rn" />
+ </material>
+ <element Z="44" formula="Ru" name="Ru" >
+  <atom type="A" unit="g/mol" value="101.065" />
+ </element>
+ <material formula="Ru" name="Ruthenium" state="solid" >
+  <RL type="X0" unit="cm" value="0.764067" />
+  <NIL type="lambda" unit="cm" value="13.1426" />
+  <D type="density" unit="g/cm3" value="12.41" />
+  <composite n="1" ref="Ru" />
+ </material>
+ <element Z="16" formula="S" name="S" >
+  <atom type="A" unit="g/mol" value="32.0661" />
+ </element>
+ <material formula="S" name="Sulfur" state="solid" >
+  <RL type="X0" unit="cm" value="9.74829" />
+  <NIL type="lambda" unit="cm" value="55.6738" />
+  <D type="density" unit="g/cm3" value="2" />
+  <composite n="1" ref="S" />
+ </material>
+ <element Z="51" formula="Sb" name="Sb" >
+  <atom type="A" unit="g/mol" value="121.76" />
+ </element>
+ <material formula="Sb" name="Antimony" state="solid" >
+  <RL type="X0" unit="cm" value="1.30401" />
+  <NIL type="lambda" unit="cm" value="25.8925" />
+  <D type="density" unit="g/cm3" value="6.691" />
+  <composite n="1" ref="Sb" />
+ </material>
+ <element Z="21" formula="Sc" name="Sc" >
+  <atom type="A" unit="g/mol" value="44.9559" />
+ </element>
+ <material formula="Sc" name="Scandium" state="solid" >
+  <RL type="X0" unit="cm" value="5.53545" />
+  <NIL type="lambda" unit="cm" value="41.609" />
+  <D type="density" unit="g/cm3" value="2.989" />
+  <composite n="1" ref="Sc" />
+ </material>
+ <element Z="34" formula="Se" name="Se" >
+  <atom type="A" unit="g/mol" value="78.9594" />
+ </element>
+ <material formula="Se" name="Selenium" state="solid" >
+  <RL type="X0" unit="cm" value="2.64625" />
+  <NIL type="lambda" unit="cm" value="33.356" />
+  <D type="density" unit="g/cm3" value="4.5" />
+  <composite n="1" ref="Se" />
+ </material>
+ <element Z="14" formula="Si" name="Si" >
+  <atom type="A" unit="g/mol" value="28.0854" />
+ </element>
+ <material formula="Si" name="Silicon" state="solid" >
+  <RL type="X0" unit="cm" value="9.36607" />
+  <NIL type="lambda" unit="cm" value="45.7531" />
+  <D type="density" unit="g/cm3" value="2.33" />
+  <composite n="1" ref="Si" />
+ </material>
+ <element Z="62" formula="Sm" name="Sm" >
+  <atom type="A" unit="g/mol" value="150.366" />
+ </element>
+ <material formula="Sm" name="Samarium" state="solid" >
+  <RL type="X0" unit="cm" value="1.01524" />
+  <NIL type="lambda" unit="cm" value="24.9892" />
+  <D type="density" unit="g/cm3" value="7.46" />
+  <composite n="1" ref="Sm" />
+ </material>
+ <element Z="50" formula="Sn" name="Sn" >
+  <atom type="A" unit="g/mol" value="118.71" />
+ </element>
+ <material formula="Sn" name="Tin" state="solid" >
+  <RL type="X0" unit="cm" value="1.20637" />
+  <NIL type="lambda" unit="cm" value="23.4931" />
+  <D type="density" unit="g/cm3" value="7.31" />
+  <composite n="1" ref="Sn" />
+ </material>
+ <element Z="38" formula="Sr" name="Sr" >
+  <atom type="A" unit="g/mol" value="87.6166" />
+ </element>
+ <material formula="Sr" name="Strontium" state="solid" >
+  <RL type="X0" unit="cm" value="4.237" />
+  <NIL type="lambda" unit="cm" value="61.0238" />
+  <D type="density" unit="g/cm3" value="2.54" />
+  <composite n="1" ref="Sr" />
+ </material>
+ <element Z="73" formula="Ta" name="Ta" >
+  <atom type="A" unit="g/mol" value="180.948" />
+ </element>
+ <material formula="Ta" name="Tantalum" state="solid" >
+  <RL type="X0" unit="cm" value="0.409392" />
+  <NIL type="lambda" unit="cm" value="11.8846" />
+  <D type="density" unit="g/cm3" value="16.654" />
+  <composite n="1" ref="Ta" />
+ </material>
+ <element Z="65" formula="Tb" name="Tb" >
+  <atom type="A" unit="g/mol" value="158.925" />
+ </element>
+ <material formula="Tb" name="Terbium" state="solid" >
+  <RL type="X0" unit="cm" value="0.893977" />
+  <NIL type="lambda" unit="cm" value="23.0311" />
+  <D type="density" unit="g/cm3" value="8.229" />
+  <composite n="1" ref="Tb" />
+ </material>
+ <element Z="43" formula="Tc" name="Tc" >
+  <atom type="A" unit="g/mol" value="97.9072" />
+ </element>
+ <material formula="Tc" name="Technetium" state="solid" >
+  <RL type="X0" unit="cm" value="0.833149" />
+  <NIL type="lambda" unit="cm" value="14.0185" />
+  <D type="density" unit="g/cm3" value="11.5" />
+  <composite n="1" ref="Tc" />
+ </material>
+ <element Z="52" formula="Te" name="Te" >
+  <atom type="A" unit="g/mol" value="127.603" />
+ </element>
+ <material formula="Te" name="Tellurium" state="solid" >
+  <RL type="X0" unit="cm" value="1.41457" />
+  <NIL type="lambda" unit="cm" value="28.1797" />
+  <D type="density" unit="g/cm3" value="6.24" />
+  <composite n="1" ref="Te" />
+ </material>
+ <element Z="90" formula="Th" name="Th" >
+  <atom type="A" unit="g/mol" value="232.038" />
+ </element>
+ <material formula="Th" name="Thorium" state="solid" >
+  <RL type="X0" unit="cm" value="0.51823" />
+  <NIL type="lambda" unit="cm" value="18.353" />
+  <D type="density" unit="g/cm3" value="11.72" />
+  <composite n="1" ref="Th" />
+ </material>
+ <element Z="22" formula="Ti" name="Ti" >
+  <atom type="A" unit="g/mol" value="47.8667" />
+ </element>
+ <material formula="Ti" name="Titanium" state="solid" >
+  <RL type="X0" unit="cm" value="3.5602" />
+  <NIL type="lambda" unit="cm" value="27.9395" />
+  <D type="density" unit="g/cm3" value="4.54" />
+  <composite n="1" ref="Ti" />
+ </material>
+ <element Z="81" formula="Tl" name="Tl" >
+  <atom type="A" unit="g/mol" value="204.383" />
+ </element>
+ <material formula="Tl" name="Thallium" state="solid" >
+  <RL type="X0" unit="cm" value="0.547665" />
+  <NIL type="lambda" unit="cm" value="17.6129" />
+  <D type="density" unit="g/cm3" value="11.72" />
+  <composite n="1" ref="Tl" />
+ </material>
+ <element Z="69" formula="Tm" name="Tm" >
+  <atom type="A" unit="g/mol" value="168.934" />
+ </element>
+ <material formula="Tm" name="Thulium" state="solid" >
+  <RL type="X0" unit="cm" value="0.754428" />
+  <NIL type="lambda" unit="cm" value="20.7522" />
+  <D type="density" unit="g/cm3" value="9.321" />
+  <composite n="1" ref="Tm" />
+ </material>
+ <element Z="92" formula="U" name="U" >
+  <atom type="A" unit="g/mol" value="238.029" />
+ </element>
+ <material formula="U" name="Uranium" state="solid" >
+  <RL type="X0" unit="cm" value="0.31663" />
+  <NIL type="lambda" unit="cm" value="11.4473" />
+  <D type="density" unit="g/cm3" value="18.95" />
+  <composite n="1" ref="U" />
+ </material>
+ <element Z="23" formula="V" name="V" >
+  <atom type="A" unit="g/mol" value="50.9415" />
+ </element>
+ <material formula="V" name="Vanadium" state="solid" >
+  <RL type="X0" unit="cm" value="2.59285" />
+  <NIL type="lambda" unit="cm" value="21.2187" />
+  <D type="density" unit="g/cm3" value="6.11" />
+  <composite n="1" ref="V" />
+ </material>
+ <element Z="74" formula="W" name="W" >
+  <atom type="A" unit="g/mol" value="183.842" />
+ </element>
+ <material formula="W" name="Tungsten" state="solid" >
+  <RL type="X0" unit="cm" value="0.350418" />
+  <NIL type="lambda" unit="cm" value="10.3057" />
+  <D type="density" unit="g/cm3" value="19.3" />
+  <composite n="1" ref="W" />
+ </material>
+ <element Z="54" formula="Xe" name="Xe" >
+  <atom type="A" unit="g/mol" value="131.292" />
+ </element>
+ <material formula="Xe" name="Xenon" state="gas" >
+  <RL type="X0" unit="cm" value="1546.2" />
+  <NIL type="lambda" unit="cm" value="32477.9" />
+  <D type="density" unit="g/cm3" value="0.00548536" />
+  <composite n="1" ref="Xe" />
+ </material>
+ <element Z="39" formula="Y" name="Y" >
+  <atom type="A" unit="g/mol" value="88.9058" />
+ </element>
+ <material formula="Y" name="Yttrium" state="solid" >
+  <RL type="X0" unit="cm" value="2.32943" />
+  <NIL type="lambda" unit="cm" value="34.9297" />
+  <D type="density" unit="g/cm3" value="4.469" />
+  <composite n="1" ref="Y" />
+ </material>
+ <element Z="70" formula="Yb" name="Yb" >
+  <atom type="A" unit="g/mol" value="173.038" />
+ </element>
+ <material formula="Yb" name="Ytterbium" state="solid" >
+  <RL type="X0" unit="cm" value="1.04332" />
+  <NIL type="lambda" unit="cm" value="28.9843" />
+  <D type="density" unit="g/cm3" value="6.73" />
+  <composite n="1" ref="Yb" />
+ </material>
+ <element Z="30" formula="Zn" name="Zn" >
+  <atom type="A" unit="g/mol" value="65.3955" />
+ </element>
+ <material formula="Zn" name="Zinc" state="solid" >
+  <RL type="X0" unit="cm" value="1.74286" />
+  <NIL type="lambda" unit="cm" value="19.8488" />
+  <D type="density" unit="g/cm3" value="7.133" />
+  <composite n="1" ref="Zn" />
+ </material>
+ <element Z="40" formula="Zr" name="Zr" >
+  <atom type="A" unit="g/mol" value="91.2236" />
+ </element>
+ <material formula="Zr" name="Zirconium" state="solid" >
+  <RL type="X0" unit="cm" value="1.56707" />
+  <NIL type="lambda" unit="cm" value="24.2568" />
+  <D type="density" unit="g/cm3" value="6.506" />
+  <composite n="1" ref="Zr" />
+ </material>
+</materials>
\ No newline at end of file
diff --git a/DDDetectors/compact/materials.xml b/DDDetectors/compact/materials.xml
new file mode 100644
index 0000000000000000000000000000000000000000..cb555a1860b8add9657234aa211d99cdaf3e5768
--- /dev/null
+++ b/DDDetectors/compact/materials.xml
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<materials>
+
+  <!--
+       Air by weight from
+
+       http://www.engineeringtoolbox.com/air-composition-24_212.html
+  -->
+  <material name="Air">
+    <D type="density" unit="g/cm3" value="0.0012"/>
+    <fraction n="0.754" ref="N"/>
+    <fraction n="0.234" ref="O"/>
+    <fraction n="0.012" ref="Ar"/>
+  </material>
+  
+  <!-- We model vakuum just as very thin air -->
+  <material name="Vacuum">  
+    <D type="density" unit="g/cm3" value="0.0000000001" />
+    <fraction n="0.754" ref="N"/>
+    <fraction n="0.234" ref="O"/>
+    <fraction n="0.012" ref="Ar"/>
+  </material>
+
+  <material name="Epoxy">
+    <D type="density" value="1.3" unit="g/cm3"/>
+    <composite n="44" ref="H"/>
+    <composite n="15" ref="C"/>
+    <composite n="7" ref="O"/>
+  </material>
+
+  <material name="Quartz">
+    <D type="density" value="2.2" unit="g/cm3"/>
+    <composite n="1" ref="Si"/>
+    <composite n="2" ref="O"/>
+  </material>
+
+  <material name="G10">
+    <D type="density" value="1.7" unit="g/cm3"/>
+    <fraction n="0.08" ref="Cl"/>
+    <fraction n="0.773" ref="Quartz"/>
+    <fraction n="0.147" ref="Epoxy"/>
+  </material>
+
+  <material name="Polystyrene">
+    <D value="1.032" unit="g/cm3"/>
+    <composite n="19" ref="C"/>
+    <composite n="21" ref="H"/>
+  </material>
+
+  <material name="Steel235">
+    <D value="7.85" unit="g/cm3"/>
+    <fraction n="0.998" ref="Fe"/>
+    <fraction n=".002" ref="C"/>
+  </material>
+
+  <material name="SiliconOxide">
+    <D type="density" value="2.65" unit="g/cm3"/>
+    <composite n="1" ref="Si"/>
+    <composite n="2" ref="O"/>
+  </material>
+
+  <material name="BoronOxide">
+    <D type="density" value="2.46" unit="g/cm3"/>
+    <composite n="2" ref="B"/>
+    <composite n="3" ref="O"/>
+  </material>
+
+  <material name="SodiumOxide">
+    <D type="density" value="2.65" unit="g/cm3"/>
+    <composite n="2" ref="Na"/>
+    <composite n="1" ref="O"/>
+  </material>
+
+  <material name="AluminumOxide">
+    <D type="density" value="3.89" unit="g/cm3"/>
+    <composite n="2" ref="Al"/>
+    <composite n="3" ref="O"/>
+  </material>
+
+  <material name="PyrexGlass">
+    <D type="density" value="2.23" unit="g/cm3"/>
+    <fraction n="0.806" ref="SiliconOxide"/>
+    <fraction n="0.130" ref="BoronOxide"/>
+    <fraction n="0.040" ref="SodiumOxide"/>
+    <fraction n="0.023" ref="AluminumOxide"/>
+  </material>
+
+  <material name="CarbonFiber">
+    <D type="density" value="1.5" unit="g/cm3"/>
+    <fraction n="0.65" ref="C"/>
+    <fraction n="0.35" ref="Epoxy"/>
+  </material>
+  
+  <material name="CarbonFiber_50D">
+    <D type="density" value="0.75" unit="g/cm3"/>
+    <fraction n="0.65" ref="C"/>
+    <fraction n="0.35" ref="Epoxy"/>
+  </material>  
+
+  <material name="Rohacell31">
+    <D type="density" value="0.032" unit="g/cm3"/>
+    <composite n="9" ref="C"/>
+    <composite n="13" ref="H"/>
+    <composite n="2" ref="O"/>
+    <composite n="1" ref="N"/>
+  </material>
+  
+  <material name="Rohacell31_50D">
+    <D type="density" value="0.016" unit="g/cm3"/>
+    <composite n="9" ref="C"/>
+    <composite n="13" ref="H"/>
+    <composite n="2" ref="O"/>
+    <composite n="1" ref="N"/>
+  </material>  
+
+  <material name="RPCGasDefault" state="gas">
+    <D type="density" value="0.0037" unit="g/cm3"/>
+    <composite n="209" ref="C"/>
+    <composite n="239" ref="H"/>
+    <composite n="381" ref="F"/>
+  </material>
+
+  <material name="PolystyreneFoam">
+    <D type="density" value="0.0056" unit="g/cm3"/>
+    <fraction n="1.0" ref="Polystyrene"/>
+  </material>
+
+  <material name="Kapton">
+    <D value="1.43" unit="g/cm3" />
+    <composite n="22" ref="C"/>
+    <composite n="10" ref="H" />
+    <composite n="2" ref="N" />
+    <composite n="5" ref="O" />
+  </material>
+
+  <material name="PEEK">
+    <D value="1.37" unit="g/cm3" />
+    <composite n="19" ref="C"/>
+    <composite n="12" ref="H" />
+    <composite n="3" ref="O" />
+  </material>
+
+</materials>
diff --git a/DDDetectors/doc/README.SiD b/DDDetectors/doc/README.SiD
new file mode 100644
index 0000000000000000000000000000000000000000..16d8cdf3e0fed4f7d2891a04c1a7b7e805916c7c
--- /dev/null
+++ b/DDDetectors/doc/README.SiD
@@ -0,0 +1,42 @@
+
+Describing the SiD detector concept using the standard detector palette
+=======================================================================
+
+
+This XML description mimics the SiD detector concept using the 
+standard DD4hep supplied detector palette.
+
+System	Subdetector		Palette Type				Sensitive type
+---------------------------------------------------------------------------------------
+Vertex:	SiVertexBarrel		DD4hep_SiTrackerBarrel			[tracker]
+	SiVertexEndcap		DD4hep_SiTrackerEndcap2 		[tracker]
+	SUPPORTS of type:	DD4hep_MultiLayerTracker 
+				DD4hep_DiskTracker 
+				DD4hep_PolyconeSupport 
+Tracker:SiTrackerEndcap		DD4hep_SiTrackerEndcap2			[tracker]
+	SiTrackerBarrel		DD4hep_SiTrackerBarrel 			[tracker]
+	SiTrackerForward	DD4hep_SiTrackerEndcap2 		[tracker]
+	SUPPORTS of type:	DD4hep_MultiLayerTracker 
+				DD4hep_PolyconeSupport 
+				DD4hep_DiskTracker 
+Ecal:	EcalBarrel		DD4hep_EcalBarrel			[calorimeter]
+	EcalEndcap		DD4hep_PolyhedraEndcapCalorimeter2 	[calorimeter]
+Hcal:	HcalBarrel		DD4hep_PolyhedraBarrelCalorimeter2 	[calorimeter]
+	HcalEndcap		DD4hep_PolyhedraEndcapCalorimeter2 	[calorimeter]
+Muon:	MuonBarrel		DD4hep_PolyhedraBarrelCalorimeter2 	[calorimeter]
+	MuonEndcap		DD4hep_PolyhedraEndcapCalorimeter2 	[calorimeter]
+LumiCal:LumiCal			DD4hep_CylindricalEndcapCalorimeter 	[calorimeter]
+	SUPPORTS of type:	DD4hep_PolyconeSupport 
+BeamCal:BeamCal			DD4hep_ForwardDetector			[calorimeter]
+Magnet:	SolenoidCoilBarrel	DD4hep_MultiLayerTracker 
+	SolenoidCoilEnds	DD4hep_DiskTracker 
+	AntiSolenoid_Forward	DD4hep_PolyconeSupport 
+	AntiSolenoid_Backward	DD4hep_PolyconeSupport 
+
+Shields and dead material:	DD4hep_PolyconeSupport 
+		(all SUPPORTS)	DD4hep_ForwardDetector 
+				DD4hep_TubeSegment 
+
+Note:
+The palette drivers allow for many other designs. This explicit design is only an example
+how to use the palette.
\ No newline at end of file
diff --git a/DDDetectors/src/BoxSegment_geo.cpp b/DDDetectors/src/BoxSegment_geo.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e27a0dc0495344a2bbcfe95c352724ae7f095f16
--- /dev/null
+++ b/DDDetectors/src/BoxSegment_geo.cpp
@@ -0,0 +1,35 @@
+// $Id: BoxDetector_geo.cpp 633 2013-06-21 13:50:50Z markus.frank $
+//====================================================================
+//  AIDA Detector description implementation for LCD
+//--------------------------------------------------------------------
+//
+//  Author     : M.Frank
+//
+//====================================================================
+#include "DD4hep/DetFactoryHelper.h"
+
+using namespace std;
+using namespace DD4hep;
+using namespace DD4hep::Geometry;
+
+static Ref_t create_element(LCDD& lcdd, xml_h e, Ref_t)  {
+  xml_det_t   x_det = e;
+  string      name  = x_det.nameStr();
+  xml_comp_t  box    (x_det.child(_U(box)));
+  xml_dim_t   pos    (x_det.child(_U(position)));
+  xml_dim_t   rot    (x_det.child(_U(rotation)));
+  Material    mat    (lcdd.material(x_det.materialStr()));
+  DetElement  det    (name,x_det.id());
+  Volume      det_vol(name+"_vol",Box(box.x(),box.y(),box.z()), mat);
+  Volume      mother = lcdd.pickMotherVolume(det);
+  Transform3D transform(Rotation3D(RotationZYX(rot.z(),rot.y(),rot.x())),Position(pos.x(),pos.y(),pos.z()));
+  det_vol.setVisAttributes(lcdd, x_det.visStr());
+  PlacedVolume phv = mother.placeVolume(det_vol,transform);
+  phv.addPhysVolID("id",x_det.id());
+  det.setPlacement(phv);
+  return det;
+}
+
+// first argument is the type from the xml file
+DECLARE_DETELEMENT(DD4hep_BoxSegment,create_element)
+DECLARE_DEPRECATED_DETELEMENT(BoxSegment,create_element)
diff --git a/DDDetectors/src/CylindricalBarrelCalorimeter_geo.cpp b/DDDetectors/src/CylindricalBarrelCalorimeter_geo.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..d5faddfc3505fd90494ed115db171fc57ddf5d94
--- /dev/null
+++ b/DDDetectors/src/CylindricalBarrelCalorimeter_geo.cpp
@@ -0,0 +1,72 @@
+// $Id: CylindricalBarrelCalorimeter_geo.cpp 1306 2014-08-22 12:29:38Z markus.frank@cern.ch $
+//====================================================================
+//  AIDA Detector description implementation for LCD
+//--------------------------------------------------------------------
+//
+//  Author     : M.Frank
+//
+//====================================================================
+#include "DD4hep/DetFactoryHelper.h"
+
+using namespace std;
+using namespace DD4hep;
+using namespace DD4hep::Geometry;
+
+static Ref_t create_detector(LCDD& lcdd, xml_h e, SensitiveDetector sens)   {
+  xml_det_t  x_det     = e;
+  xml_dim_t  dim       = x_det.dimensions();
+  Material   air       = lcdd.air();
+  string     det_name  = x_det.nameStr();
+  DetElement sdet       (det_name,x_det.id());
+  double     z         = dim.outer_z();
+  double     rmin      = dim.inner_r();
+  double     r         = rmin;
+  int        n         = 0;
+  Tube       envelope(rmin,2*rmin,2*z);
+  Volume     envelopeVol(det_name+"_envelope",envelope,air);
+    
+  for(xml_coll_t c(x_det,_U(layer)); c; ++c)  {
+    xml_comp_t x_layer = c;
+    for(int i=0, m=0, repeat=x_layer.repeat(); i<repeat; ++i, m=0)  {
+      string layer_name = det_name + _toString(n,"_layer%d");
+      double rlayer = r;
+      Tube   layer_tub(rmin,rlayer,2*z);
+      Volume layer_vol(layer_name,layer_tub,air);
+        
+      for(xml_coll_t l(x_layer,_U(slice)); l; ++l, ++m)  {
+	xml_comp_t x_slice = l;
+	double     router = r + x_slice.thickness();
+	Material   slice_mat  = lcdd.material(x_slice.materialStr());
+	string     slice_name = layer_name + _toString(m,"slice%d");
+	Tube       slice_tube(r,router,z*2);
+	Volume     slice_vol (slice_name,slice_tube,slice_mat);
+          
+	if ( x_slice.isSensitive() ) {
+	  sens.setType("calorimeter");
+	  slice_vol.setSensitiveDetector(sens);
+	}
+	r = router;
+	slice_vol.setAttributes(lcdd,x_slice.regionStr(),x_slice.limitsStr(),x_slice.visStr());
+	// Instantiate physical volume
+	layer_vol.placeVolume(slice_vol);
+      }
+      layer_vol.setVisAttributes(lcdd,x_layer.visStr());
+      layer_tub.setDimensions(rlayer,r,z*2,0,2*M_PI);
+        
+      PlacedVolume layer_physvol = envelopeVol.placeVolume(layer_vol);
+      layer_physvol.addPhysVolID("layer",n);
+      ++n;
+    }
+  }
+  envelope.setDimensions(rmin,r,2*z);
+  // Set region of slice
+  envelopeVol.setAttributes(lcdd,x_det.regionStr(),x_det.limitsStr(),x_det.visStr());
+    
+  PlacedVolume physvol = lcdd.pickMotherVolume(sdet).placeVolume(envelopeVol);
+  physvol.addPhysVolID("system",sdet.id()).addPhysVolID(_U(barrel),0);
+  sdet.setPlacement(physvol);
+  return sdet;
+}
+
+DECLARE_DETELEMENT(DD4hep_CylindricalBarrelCalorimeter,create_detector)
+DECLARE_DEPRECATED_DETELEMENT(CylindricalBarrelCalorimeter,create_detector)
diff --git a/DDDetectors/src/CylindricalEndcapCalorimeter_geo.cpp b/DDDetectors/src/CylindricalEndcapCalorimeter_geo.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..0387d11ddda7181dcb43c1d6010da7fe27d3c190
--- /dev/null
+++ b/DDDetectors/src/CylindricalEndcapCalorimeter_geo.cpp
@@ -0,0 +1,94 @@
+// $Id: CylindricalEndcapCalorimeter_geo.cpp 1306 2014-08-22 12:29:38Z markus.frank@cern.ch $
+//====================================================================
+//  AIDA Detector description implementation for LCD
+//--------------------------------------------------------------------
+//
+//  Author     : M.Frank
+//
+//====================================================================
+#include "DD4hep/DetFactoryHelper.h"
+#include "XML/Layering.h"
+
+using namespace std;
+using namespace DD4hep;
+using namespace DD4hep::Geometry;
+
+static Ref_t create_detector(LCDD& lcdd, xml_h e, SensitiveDetector sens)  {
+  xml_det_t  x_det     = e;
+  xml_dim_t  dim       = x_det.dimensions();
+  Material   air       = lcdd.air();
+  string     det_name  = x_det.nameStr();
+  bool       reflect   = x_det.reflect();
+  double     zmin      = dim.inner_z();
+  double     rmin      = dim.inner_r();
+  double     rmax      = dim.outer_r();
+  double     totWidth  = Layering(x_det).totalThickness();
+  double     z         = zmin;
+  Tube       envelope   (rmin,rmax,totWidth/2);
+  Volume     envelopeVol(det_name+"_envelope",envelope,air);
+  int        layer_num = 1;
+  PlacedVolume pv;
+
+  // Set attributes of slice
+  for(xml_coll_t c(x_det,_U(layer)); c; ++c)  {
+    xml_comp_t x_layer = c;
+    double layerWidth = 0;
+    for(xml_coll_t l(x_layer,_U(slice)); l; ++l)
+      layerWidth += xml_comp_t(l).thickness();
+    for(int i=0, m=0, repeat=x_layer.repeat(); i<repeat; ++i)  {
+      double     zlayer = z;
+      string     layer_name = det_name + _toString(layer_num,"_layer%d");
+      Volume     layer_vol(layer_name,Tube(rmin,rmax,layerWidth),air);
+
+      for(xml_coll_t l(x_layer,_U(slice)); l; ++l, ++m)  {
+	xml_comp_t x_slice = l;
+	double     w = x_slice.thickness();
+	string     slice_name = layer_name + _toString(m+1,"slice%d");
+	Material   slice_mat  = lcdd.material(x_slice.materialStr());
+	Volume     slice_vol (slice_name,Tube(rmin,rmax,w),slice_mat);
+
+	if ( x_slice.isSensitive() )  {
+	  sens.setType("calorimeter");
+	  slice_vol.setSensitiveDetector(sens);
+	}
+	slice_vol.setAttributes(lcdd,x_slice.regionStr(),x_slice.limitsStr(),x_slice.visStr());
+	pv = layer_vol.placeVolume(slice_vol,Position(0,0,z-zlayer-layerWidth/2+w/2));
+	pv.addPhysVolID("slice",m+1);
+	z += w;
+      }
+      layer_vol.setVisAttributes(lcdd,x_layer.visStr());
+
+      Position layer_pos(0,0,zlayer-zmin-totWidth/2+layerWidth/2);
+      pv = envelopeVol.placeVolume(layer_vol,layer_pos);
+      pv.addPhysVolID("layer",layer_num);
+      ++layer_num;
+    }
+  }
+  envelope.setDimensions(rmin,rmax,totWidth/2);
+  // Set attributes of slice
+  envelopeVol.setAttributes(lcdd,x_det.regionStr(),x_det.limitsStr(),x_det.visStr());
+
+  DetElement   sdet(det_name,x_det.id());
+  Assembly     assembly(det_name+"_assembly");
+  Volume       motherVol = lcdd.pickMotherVolume(sdet);
+  PlacedVolume phv = motherVol.placeVolume(assembly);
+  phv.addPhysVolID("system",sdet.id());
+  sdet.setPlacement(phv);
+
+  DetElement   sdetA(sdet,det_name+(reflect ? "_A" : ""),x_det.id());
+  phv = assembly.placeVolume(envelopeVol,Position(0,0,zmin+totWidth/2));
+  phv.addPhysVolID("barrel",1);
+  sdetA.setPlacement(phv);
+
+  if ( reflect )   {
+    phv=assembly.placeVolume(envelopeVol,Transform3D(RotationZ(M_PI),Position(0,0,-zmin-totWidth/2)));
+    phv.addPhysVolID("barrel",2);
+    /// Create the detector element for the opposite side....
+    DetElement   sdetB(sdet,det_name+"_B",x_det.id());
+    sdetB.setPlacement(phv);
+  }
+  return sdet;
+}
+
+DECLARE_DETELEMENT(DD4hep_CylindricalEndcapCalorimeter,create_detector)
+DECLARE_DEPRECATED_DETELEMENT(CylindricalEndcapCalorimeter,create_detector)
diff --git a/DDDetectors/src/DiskTracker_geo.cpp b/DDDetectors/src/DiskTracker_geo.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..fe97527c6b01e14514264096a6b3e3b35663be11
--- /dev/null
+++ b/DDDetectors/src/DiskTracker_geo.cpp
@@ -0,0 +1,80 @@
+// $Id: DiskTracker_geo.cpp 1306 2014-08-22 12:29:38Z markus.frank@cern.ch $
+//====================================================================
+//  AIDA Detector description implementation for LCD
+//--------------------------------------------------------------------
+//
+//  Author     : M.Frank
+//
+//====================================================================
+#include "DD4hep/DetFactoryHelper.h"
+
+using namespace std;
+using namespace DD4hep;
+using namespace DD4hep::Geometry;
+
+static Ref_t create_detector(LCDD& lcdd, xml_h e, SensitiveDetector sens)  {
+  xml_det_t  x_det     = e;
+  Material   air       = lcdd.air();
+  string     det_name  = x_det.nameStr();
+  bool       reflect   = x_det.reflect();
+  DetElement sdet(det_name,x_det.id());
+  Assembly   assembly(det_name);
+  PlacedVolume pv;
+  int l_num = 0;
+    
+  for(xml_coll_t i(x_det,_U(layer)); i; ++i, ++l_num)  {
+    xml_comp_t x_layer = i;
+    string l_nam = det_name+_toString(l_num,"_layer%d");
+    double  zmin = x_layer.inner_z();
+    double  rmin = x_layer.inner_r();
+    double  rmax = x_layer.outer_r();
+    double  z    = zmin, layerWidth = 0.;
+    int     s_num = 0;
+      
+    for(xml_coll_t j(x_layer,_U(slice)); j; ++j)  {
+      double thickness = xml_comp_t(j).thickness();
+      layerWidth += thickness;
+    }
+    Tube    l_tub(rmin,rmax,layerWidth,2*M_PI);
+    Volume  l_vol(l_nam,l_tub,air);
+    l_vol.setVisAttributes(lcdd,x_layer.visStr());
+    for(xml_coll_t j(x_layer,_U(slice)); j; ++j, ++s_num)  {
+      xml_comp_t x_slice = j;
+      double thick = x_slice.thickness();
+      Material mat = lcdd.material(x_slice.materialStr());
+      string s_nam = l_nam+_toString(s_num,"_slice%d");
+      Volume s_vol(s_nam, Tube(rmin,rmax,thick), mat);
+        
+      if ( x_slice.isSensitive() ) {
+	sens.setType("tracker");
+	s_vol.setSensitiveDetector(sens);
+      }
+      s_vol.setAttributes(lcdd,x_slice.regionStr(),x_slice.limitsStr(),x_slice.visStr());
+      pv = l_vol.placeVolume(s_vol,Position(0,0,z-zmin-layerWidth/2+thick/2));
+      pv.addPhysVolID("slice",s_num);
+    }
+
+    DetElement layer(sdet,l_nam+"_pos",l_num);
+    pv = assembly.placeVolume(l_vol,Position(0,0,zmin+layerWidth/2.));
+    pv.addPhysVolID("layer",l_num);
+    pv.addPhysVolID("barrel",1);
+    layer.setPlacement(pv);
+    if ( reflect )  {
+      pv = assembly.placeVolume(l_vol,Transform3D(RotationY(M_PI),Position(0,0,-zmin-layerWidth/2)));
+      pv.addPhysVolID("layer",l_num);
+      pv.addPhysVolID("barrel",2);
+      DetElement layerR = layer.clone(l_nam+"_neg");
+      sdet.add(layerR.setPlacement(pv));
+    }
+  }
+  if ( x_det.hasAttr(_U(combineHits)) ) {
+    sdet.setCombineHits(x_det.attr<bool>(_U(combineHits)),sens);
+  }
+  pv = lcdd.pickMotherVolume(sdet).placeVolume(assembly);
+  pv.addPhysVolID("system", x_det.id());      // Set the subdetector system ID.
+  sdet.setPlacement(pv);
+  return sdet;
+}
+
+DECLARE_DETELEMENT(DD4hep_DiskTracker,create_detector)
+DECLARE_DEPRECATED_DETELEMENT(DiskTracker,create_detector)
diff --git a/DDDetectors/src/EcalBarrel_geo.cpp b/DDDetectors/src/EcalBarrel_geo.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..8e55650c28ee7328e61e50189808aa3c7ab7ae5e
--- /dev/null
+++ b/DDDetectors/src/EcalBarrel_geo.cpp
@@ -0,0 +1,161 @@
+// $Id: EcalBarrel_geo.cpp 1306 2014-08-22 12:29:38Z markus.frank@cern.ch $
+//====================================================================
+//  AIDA Detector description implementation for LCD
+//--------------------------------------------------------------------
+//
+//  Author     : M.Frank
+//
+//====================================================================
+#include "DD4hep/DetFactoryHelper.h"
+#include "XML/Layering.h"
+#include "TGeoTrd2.h"
+
+using namespace std;
+using namespace DD4hep;
+using namespace DD4hep::Geometry;
+
+static Ref_t create_detector(LCDD& lcdd, xml_h e, SensitiveDetector sens)  {
+  static double tolerance = 0e0;
+  Layering      layering (e);
+  xml_det_t     x_det     = e;
+  Material      air       = lcdd.air();
+  int           det_id    = x_det.id();
+  string        det_name  = x_det.nameStr();
+  xml_comp_t    x_staves  = x_det.staves();
+  xml_comp_t    x_dim     = x_det.dimensions();
+  int           nsides    = x_dim.numsides();
+  double        inner_r   = x_dim.rmin();
+  double        dphi      = (2*M_PI/nsides);
+  double        hphi      = dphi/2;
+  double        mod_z     = layering.totalThickness();
+  double        outer_r   = inner_r + mod_z;
+  double        totThick  = mod_z;
+  DetElement    sdet      (det_name,det_id);
+  Volume        motherVol = lcdd.pickMotherVolume(sdet);
+  PolyhedraRegular hedra  (nsides,inner_r,inner_r+totThick+tolerance*2e0,x_dim.z());
+  Volume        envelope  (det_name+"_envelope",hedra,air);
+  PlacedVolume  env_phv   = motherVol.placeVolume(envelope,RotationZYX(0,0,M_PI/nsides));
+
+  env_phv.addPhysVolID("system",det_id);
+  env_phv.addPhysVolID("barrel",0);
+  sdet.setPlacement(env_phv);
+
+  DetElement    stave_det("stave0",det_id);
+  double dx = mod_z / std::sin(dphi); // dx per layer
+  dx = 0;
+    
+  // Compute the top and bottom face measurements.
+  double trd_x2 = (2 * std::tan(hphi) * outer_r - dx)/2 - tolerance;
+  double trd_x1 = (2 * std::tan(hphi) * inner_r + dx)/2 - tolerance;
+  double trd_y1 = x_dim.z()/2 - tolerance;
+  double trd_y2 = trd_y1;
+  double trd_z  = mod_z/2 - tolerance;
+		
+  // Create the trapezoid for the stave.
+  Trapezoid trd(trd_x1, // Outer side, i.e. the "short" X side.
+		trd_x2, // Inner side, i.e. the "long"  X side.
+		trd_y1, // Corresponds to subdetector (or module) Z.
+		trd_y2, //
+		trd_z); // Thickness, in Y for top stave, when rotated.
+
+  Volume mod_vol(det_name+"_module",trd,air);
+
+  sens.setType("calorimeter");
+  { // =====  buildBarrelStave(lcdd, sens, module_volume) =====
+    // Parameters for computing the layer X dimension:
+    double stave_z  = trd_y1/2;
+    double l_dim_x  = trd_x1/2;                            // Starting X dimension for the layer.
+    double adj      = (l_dim_x-trd_x2/2)/2;                // Adjacent angle of triangle.
+    double hyp      = std::sqrt(trd_z*trd_z/4 + adj*adj);  // Hypotenuse of triangle.
+    double beta     = std::acos(adj / hyp);                // Lower-right angle of triangle.
+    double tan_beta = std::tan(beta);                      // Primary coefficient for figuring X.
+    double l_pos_z  = -(layering.totalThickness() / 2);
+
+    // Loop over the sets of layer elements in the detector.
+    int l_num = 1;
+    for(xml_coll_t li(x_det,_U(layer)); li; ++li)  {
+      xml_comp_t x_layer = li;
+      int repeat = x_layer.repeat();
+      // Loop over number of repeats for this layer.
+      for (int j=0; j<repeat; j++)    {
+	string l_name = _toString(l_num,"layer%d");
+	double l_thickness = layering.layer(l_num-1)->thickness();  // Layer's thickness.
+	double xcut = (l_thickness / tan_beta);                     // X dimension for this layer.
+	l_dim_x -= xcut/2;
+
+	Position   l_pos(0,0,l_pos_z+l_thickness/2);      // Position of the layer.
+	Box        l_box(l_dim_x*2-tolerance,stave_z*2-tolerance,l_thickness-tolerance);
+	Volume     l_vol(det_name+"_"+l_name,l_box,air);
+	DetElement layer(stave_det, l_name, det_id);
+
+	// Loop over the sublayers or slices for this layer.
+	int s_num = 1;
+	double s_pos_z = -(l_thickness / 2);
+	for(xml_coll_t si(x_layer,_U(slice)); si; ++si)  {
+	  xml_comp_t x_slice = si;
+	  string     s_name  =  _toString(s_num,"slice%d");
+	  double     s_thick = x_slice.thickness();
+	  Box        s_box(l_dim_x*2-tolerance,stave_z*2-tolerance,s_thick-tolerance);
+	  Volume     s_vol(det_name+"_"+l_name+"_"+s_name,s_box,lcdd.material(x_slice.materialStr()));
+          DetElement slice(layer,s_name,det_id);
+
+          if ( x_slice.isSensitive() ) {
+	    s_vol.setSensitiveDetector(sens);
+	  }
+          slice.setAttributes(lcdd,s_vol,x_slice.regionStr(),x_slice.limitsStr(),x_slice.visStr());
+
+          // Slice placement.
+          PlacedVolume slice_phv = l_vol.placeVolume(s_vol,Position(0,0,s_pos_z+s_thick/2));
+          slice_phv.addPhysVolID("slice", s_num);
+          slice.setPlacement(slice_phv);
+          // Increment Z position of slice.
+          s_pos_z += s_thick;
+                                        
+          // Increment slice number.
+          ++s_num;
+        }        
+
+        // Set region, limitset, and vis of layer.
+        layer.setAttributes(lcdd,l_vol,x_layer.regionStr(),x_layer.limitsStr(),x_layer.visStr());
+
+        PlacedVolume layer_phv = mod_vol.placeVolume(l_vol,l_pos);
+        layer_phv.addPhysVolID("layer", l_num);
+        layer.setPlacement(layer_phv);
+        // Increment to next layer Z position.
+        l_pos_z += l_thickness;          
+        ++l_num;
+      }
+    }
+  }
+
+  // Set stave visualization.
+  if (x_staves)   {
+    mod_vol.setVisAttributes(lcdd.visAttributes(x_staves.visStr()));
+  }
+  // Phi start for a stave.
+  double phi = M_PI / nsides;
+  double mod_x_off = dx / 2;             // Stave X offset, derived from the dx.
+  double mod_y_off = inner_r + mod_z/2;  // Stave Y offset
+
+  // Create nsides staves.
+  for (int i = 0; i < nsides; i++, phi -= dphi)      { // i is module number
+    // Compute the stave position
+    double m_pos_x = mod_x_off * std::cos(phi) - mod_y_off * std::sin(phi);
+    double m_pos_y = mod_x_off * std::sin(phi) + mod_y_off * std::cos(phi);
+    Transform3D tr(RotationZYX(0,phi,M_PI*0.5),Translation3D(-m_pos_x,-m_pos_y,0));
+    PlacedVolume pv = envelope.placeVolume(mod_vol,tr);
+    pv.addPhysVolID("system",det_id);
+    pv.addPhysVolID("barrel",0);
+    pv.addPhysVolID("module",i+1);
+    DetElement sd = i==0 ? stave_det : stave_det.clone(_toString(i,"stave%d"));
+    sd.setPlacement(pv);
+    sdet.add(sd);
+  }
+
+  // Set envelope volume attributes.
+  envelope.setAttributes(lcdd,x_det.regionStr(),x_det.limitsStr(),x_det.visStr());
+  return sdet;
+}
+
+DECLARE_DETELEMENT(DD4hep_EcalBarrel,create_detector)
+DECLARE_DEPRECATED_DETELEMENT(EcalBarrel,create_detector)
diff --git a/DDDetectors/src/ForwardDetector_geo.cpp b/DDDetectors/src/ForwardDetector_geo.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..91de3974a7e8beb7f6c9b5474bf2eb8098d6241f
--- /dev/null
+++ b/DDDetectors/src/ForwardDetector_geo.cpp
@@ -0,0 +1,190 @@
+// $Id: ForwardDetector_geo.cpp 1306 2014-08-22 12:29:38Z markus.frank@cern.ch $
+//====================================================================
+//  AIDA Detector description implementation for LCD
+//--------------------------------------------------------------------
+//
+//  Author     : M.Frank
+//
+//====================================================================
+#include "XML/Layering.h"
+#include "DD4hep/DetFactoryHelper.h"
+
+using namespace std;
+using namespace DD4hep;
+using namespace DD4hep::Geometry;
+
+static Ref_t create_detector(LCDD& lcdd, xml_h e, SensitiveDetector sens)  {
+  xml_det_t   x_det      = e;
+  xml_dim_t   dim        = x_det.dimensions();
+  bool        reflect    = x_det.reflect();
+  xml_comp_t  beam       = x_det.beampipe();
+  string      det_name   = x_det.nameStr();
+  int         id         = x_det.id();
+  Material    air        = lcdd.air();
+  DetElement  sdet       (det_name,id);
+  Layering    layering   (x_det);
+
+  Volume      motherVol  = lcdd.pickMotherVolume(sdet);
+
+  double      rmax       = dim.outer_r();
+  double      rmin       = dim.inner_r();
+  double      zinner     = dim.inner_z();
+  double      outgoingR  = beam.outgoing_r();
+  double      incomingR  = beam.incoming_r();
+  double      xangle     = beam.crossing_angle();
+  double      xangleHalf = xangle/2;
+  double      thickness  = layering.totalThickness();
+  double      zpos       = zinner + thickness/2;
+  // Beampipe position in envelope.
+  double      beamPosX   = std::tan(xangleHalf) * zpos;
+
+  // Detector envelope solid. 
+  Tube envelopeTube(rmin,rmax,thickness/2);
+
+  // First envelope bool subtracion of outgoing beampipe.
+  // Incoming beampipe solid.
+  Tube beamInTube(0,outgoingR,thickness);
+  // Position of incoming beampipe.
+  Position beamInPos(beamPosX,0,0);
+  /// Rotation of incoming beampipe.
+  Rotation3D  beamInRot(RotationY(1.*xangleHalf));
+  Transform3D beamInTrans(beamInRot,beamInPos);
+
+  // Second envelope bool subtracion of outgoing beampipe.
+  // Outgoing beampipe solid.
+  Tube     beamOutTube(0,incomingR,thickness);
+  // Position of outgoing beampipe.
+  Position beamOutPos(-beamPosX,0,0);
+  // Rotation of outgoing beampipe.
+  Rotation3D  beamOutRot(RotationY(-xangleHalf));
+  Transform3D beamOutTrans(beamOutRot,beamOutPos);
+
+  // First envelope bool subtraction of incoming beampipe.
+  SubtractionSolid envelopeSubtraction1(envelopeTube,beamInTube,beamInTrans);
+  SubtractionSolid envelopeSubtraction2(envelopeSubtraction1,beamOutTube,beamOutTrans);
+
+  // Final envelope bool volume.
+  Volume envelopeVol(det_name+"_envelope", envelopeSubtraction2, air);
+
+  // Process each layer element.
+  double layerPosZ   = -thickness / 2;
+  double layerDisplZ = 0;
+
+  int layerCount = 1;
+  for(xml_coll_t c(x_det,_U(layer)); c; ++c)  {
+    xml_comp_t x_layer = c;
+    double layerThickness = layering.singleLayerThickness(x_layer);
+
+    // Create tube envelope for this layer, which can be reused in bool definition
+    // in the repeat loop below.
+    Tube layerTube(rmin,rmax,layerThickness);
+
+    for(int i=0, repeat=x_layer.repeat(); i<repeat; ++i)  {
+      string layer_nam = _toString(layerCount,"layer%d");
+      // Increment to new layer position.
+      layerDisplZ += layerThickness / 2;
+      layerPosZ   += layerThickness / 2;
+
+      // First layer subtraction solid.
+      DetElement  layer(sdet,layer_nam,sdet.id());
+      double      layerGlobalZ = zinner + layerDisplZ;
+      double      layerPosX    = std::tan(xangleHalf) * layerGlobalZ;
+      Position    layer1SubPos( layerPosX,0,0);
+      Position    layer2SubPos(-layerPosX,0,0);
+
+      SubtractionSolid layerSubtraction1(layerTube,beamInTube,Transform3D(beamInRot,layer1SubPos));
+      // Second layer subtraction solid.
+      SubtractionSolid layerSubtraction2(layerSubtraction1,beamOutTube,Transform3D(beamOutRot,layer2SubPos));
+      // Layer LV.
+      Volume layerVol(det_name+"_"+layer_nam,layerSubtraction2,air);
+      
+      // Slice loop.
+      int sliceCount = 1;
+      double slicePosZ = -layerThickness / 2;
+      double sliceDisplZ = 0;
+      for(xml_coll_t l(x_layer,_U(slice)); l; ++l)  {
+	xml_comp_t x_slice = l;
+	string slice_nam = _toString(sliceCount,"slice%d");
+	/** Get slice parameters. */
+	double sliceThickness = x_slice.thickness();
+	Material slice_mat = lcdd.material(x_slice.materialStr());
+
+	// Go to mid of this slice.
+	sliceDisplZ += sliceThickness / 2;
+	slicePosZ   += sliceThickness / 2;
+
+	// Slice's basic tube.
+	Tube sliceTube(rmin,rmax,sliceThickness);
+	DetElement slice(layer,slice_nam,sdet.id());
+	double sliceGlobalZ = zinner + (layerDisplZ - layerThickness / 2) + sliceDisplZ;
+	double slicePosX    = std::tan(xangleHalf) * sliceGlobalZ;
+
+	// First slice subtraction solid.
+	SubtractionSolid sliceSubtraction1(sliceTube,beamInTube,Transform3D(beamInRot,Position(slicePosX,0,0)));
+	// Second slice subtraction solid.
+	SubtractionSolid sliceSubtraction2(sliceSubtraction1,beamOutTube,Transform3D(beamOutRot,Position(-slicePosX,0,0))); 
+	// Slice LV.
+	Volume sliceVol(det_name+"_"+layer_nam+"_"+slice_nam, sliceSubtraction2, slice_mat);
+
+	if ( x_slice.isSensitive() ) {
+	  sens.setType("calorimeter");
+	  sliceVol.setSensitiveDetector(sens);
+	}
+	// Set attributes of slice
+	slice.setAttributes(lcdd, sliceVol, x_slice.regionStr(), x_slice.limitsStr(), x_slice.visStr());
+
+	// Place volume in layer
+	PlacedVolume pv = layerVol.placeVolume(sliceVol,Position(0,0,slicePosZ));
+	pv.addPhysVolID("slice",sliceCount);
+	slice.setPlacement(pv);
+
+	// Start of next slice.
+	sliceDisplZ += sliceThickness / 2;
+	slicePosZ   += sliceThickness / 2;
+	++sliceCount;
+      }
+      // Set attributes of slice
+      layer.setAttributes(lcdd, layerVol, x_layer.regionStr(), x_layer.limitsStr(), x_layer.visStr());
+
+      // Layer PV.
+      PlacedVolume layerPV = envelopeVol.placeVolume(layerVol,Position(0,0,layerPosZ));
+      layerPV.addPhysVolID("layer", layerCount);
+      layer.setPlacement(layerPV);
+
+      // Increment to start of next layer.
+      layerDisplZ += layerThickness / 2;
+      layerPosZ   += layerThickness / 2;
+      ++layerCount;
+    }
+  }
+  sdet.setVisAttributes(lcdd, x_det.visStr(), envelopeVol);
+  
+  // Reflect it.
+  if ( reflect )  {
+    Assembly assembly(det_name+"_assembly");
+    PlacedVolume pv = motherVol.placeVolume(assembly);
+    pv.addPhysVolID("system", id);
+    sdet.setPlacement(pv);
+
+    DetElement   sdetA(sdet,det_name+"_A",x_det.id());
+    pv = assembly.placeVolume(envelopeVol,Transform3D(RotationZ(M_PI),Position(0,0,zpos)));
+    pv.addPhysVolID("barrel", 1);
+    sdetA.setPlacement(pv);
+
+    DetElement   sdetB = sdetA.clone(det_name+"_B",x_det.id());
+    sdet.add(sdetB);
+    pv = assembly.placeVolume(envelopeVol,Transform3D(RotationY(M_PI),Position(0,0,-zpos)));
+    pv.addPhysVolID("barrel", 2);
+    sdetB.setPlacement(pv);
+  }
+  else  {
+    PlacedVolume pv = motherVol.placeVolume(envelopeVol,Transform3D(RotationZ(M_PI),Position(0,0,zpos)));
+    pv.addPhysVolID("system", id);
+    pv.addPhysVolID("barrel", 1);
+    sdet.setPlacement(pv);
+  }
+  return sdet;
+}
+
+DECLARE_DETELEMENT(DD4hep_ForwardDetector,create_detector)
+DECLARE_DEPRECATED_DETELEMENT(ForwardDetector,create_detector)
diff --git a/DDDetectors/src/MultiLayerTracker_geo.cpp b/DDDetectors/src/MultiLayerTracker_geo.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..5a8f502766b64da1c6d3a323c9ec0350270b99df
--- /dev/null
+++ b/DDDetectors/src/MultiLayerTracker_geo.cpp
@@ -0,0 +1,74 @@
+// $Id: MultiLayerTracker_geo.cpp 1306 2014-08-22 12:29:38Z markus.frank@cern.ch $
+//====================================================================
+//  AIDA Detector description implementation for LCD
+//--------------------------------------------------------------------
+//
+//  Author     : M.Frank
+//
+//====================================================================
+#include "DD4hep/DetFactoryHelper.h"
+
+using namespace std;
+using namespace DD4hep;
+using namespace DD4hep::Geometry;
+
+static Ref_t create_detector(LCDD& lcdd, xml_h e, SensitiveDetector sens)  {
+  xml_det_t  x_det     = e;
+  string     det_name  = x_det.nameStr();
+  string     det_type  = x_det.typeStr();
+  Material   air       = lcdd.air();
+  DetElement sdet        (det_name,x_det.id());
+  Assembly   assembly    (det_name+"_assembly");
+  PlacedVolume pv;
+  int n = 0;
+
+  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  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);
+    Volume  l_vol(l_name,l_tub,air);
+    int m = 0;
+
+    for(xml_coll_t j(x_layer,_U(slice)); j; ++j, ++m)  {
+      xml_comp_t x_slice = j;
+      Material mat = lcdd.material(x_slice.materialStr());
+      string s_name= l_name+_toString(m,"_slice%d");
+      double thickness = x_slice.thickness();
+      Tube   s_tub(r,r+thickness,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(lcdd,x_slice.regionStr(),x_slice.limitsStr(),x_slice.visStr());
+      pv = l_vol.placeVolume(s_vol);
+      // Slices have no extra id. Take the ID of the layer!
+      pv.addPhysVolID("slice",m);
+    }
+    l_tub.setDimensions(rmin,r,z);
+    //cout << l_name << " " << rmin << " " << r << " " << z << endl;
+    l_vol.setVisAttributes(lcdd,x_layer.visStr());
+      
+    pv = assembly.placeVolume(l_vol);
+    pv.addPhysVolID("layer",n);
+    layer.setPlacement(pv);
+  }
+  if ( x_det.hasAttr(_U(combineHits)) ) {
+    sdet.setCombineHits(x_det.combineHits(),sens);
+  }
+
+  pv = lcdd.pickMotherVolume(sdet).placeVolume(assembly);
+  pv.addPhysVolID("system",sdet.id()).addPhysVolID("barrel",0);
+  sdet.setPlacement(pv);
+  return sdet;
+}
+
+DECLARE_DETELEMENT(DD4hep_MultiLayerTracker,create_detector)
+DECLARE_DEPRECATED_DETELEMENT(MultiLayerTracker,create_detector)
diff --git a/DDDetectors/src/PolyconeSupport_geo.cpp b/DDDetectors/src/PolyconeSupport_geo.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..50b2b6382d13fac18cabc76aa66ad47c9a352234
--- /dev/null
+++ b/DDDetectors/src/PolyconeSupport_geo.cpp
@@ -0,0 +1,45 @@
+// $Id: PolyconeSupport_geo.cpp 1360 2014-10-27 16:32:06Z Nikiforos.Nikiforou@cern.ch $
+//====================================================================
+//  AIDA Detector description implementation for LCD
+//--------------------------------------------------------------------
+//
+//  Author     : M.Frank
+//
+//====================================================================
+#include "DD4hep/DetFactoryHelper.h"
+
+using namespace std;
+using namespace DD4hep;
+using namespace DD4hep::Geometry;
+
+static Ref_t create_detector(LCDD& lcdd, xml_h e, Ref_t)  {
+  xml_det_t  x_det = e;
+  string     name  = x_det.nameStr();
+  DetElement sdet (name,x_det.id());
+  Material   mat  (lcdd.material(x_det.materialStr()));
+  vector<double> rmin,rmax,z;
+  int num = 0;
+
+  for(xml_coll_t c(e,_U(zplane)); c; ++c, ++num)  {
+    xml_comp_t dim(c);
+    rmin.push_back(dim.rmin());
+    rmax.push_back(dim.rmax());
+    z.push_back(dim.z()); //Dropped division by 2 in z. Half length not needed
+  }
+  if ( num < 2 )  {
+    throw runtime_error("PolyCone["+name+"]> Not enough Z planes. minimum is 2!");
+  }
+  Polycone   cone  (0,2*M_PI,rmin,rmax,z);
+  Volume     volume(name, cone, mat);
+  volume.setVisAttributes(lcdd, x_det.visStr());
+  PlacedVolume pv = lcdd.pickMotherVolume(sdet).placeVolume(volume);
+  sdet.setPlacement(pv);
+  if ( x_det.hasAttr(_U(id)) )  {
+    int det_id = x_det.id();
+    pv.addPhysVolID("system",det_id);
+  }
+  return sdet;
+}
+
+DECLARE_DETELEMENT(DD4hep_PolyconeSupport,create_detector)
+DECLARE_DEPRECATED_DETELEMENT(PolyconeSupport,create_detector)
diff --git a/DDDetectors/src/PolyhedraBarrelCalorimeter2_geo.cpp b/DDDetectors/src/PolyhedraBarrelCalorimeter2_geo.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..92bc75013bf4c3503ec78b89a0c3d5fec762a05c
--- /dev/null
+++ b/DDDetectors/src/PolyhedraBarrelCalorimeter2_geo.cpp
@@ -0,0 +1,185 @@
+// $Id: PolyhedraBarrelCalorimeter2_geo.cpp 1390 2014-11-14 16:32:48Z Christian.Grefe@cern.ch $
+//====================================================================
+//  AIDA Detector description implementation for LCD
+//--------------------------------------------------------------------
+//
+//  Author     : M.Frank
+//
+//====================================================================
+#include "DD4hep/DetFactoryHelper.h"
+#include "XML/Layering.h"
+
+#include "DDRec/Extensions/LayeringExtensionImpl.h"
+#include "DDRec/Extensions/SubdetectorExtensionImpl.h"
+
+using namespace std;
+using namespace DD4hep;
+using namespace DD4hep::Geometry;
+using namespace DD4hep::DDRec;
+
+static void placeStaves(DetElement& parent, DetElement& stave, double rmin, int numsides, double total_thickness,
+			Volume envelopeVolume, double innerAngle, Volume sectVolume) {
+  double innerRotation = innerAngle;
+  double offsetRotation = -innerRotation / 2;
+  double sectCenterRadius = rmin + total_thickness / 2;
+  double rotX = M_PI / 2;
+  double rotY = -offsetRotation;
+  double posX = -sectCenterRadius * std::sin(rotY);
+  double posY = sectCenterRadius * std::cos(rotY);
+
+  for (int module = 1; module <= numsides; ++module) {
+    DetElement det = module > 1 ? stave.clone(_toString(module, "stave%d")) : stave;
+    PlacedVolume pv = envelopeVolume.placeVolume(sectVolume,
+						 Transform3D(RotationZYX(0, rotY, rotX), Translation3D(-posX, -posY, 0)));
+    // Not a valid volID: pv.addPhysVolID("stave", 0);
+    pv.addPhysVolID("module", module);
+    det.setPlacement(pv);
+    parent.add(det);
+    rotY -= innerRotation;
+    posX = -sectCenterRadius * std::sin(rotY);
+    posY = sectCenterRadius * std::cos(rotY);
+  }
+}
+
+static Ref_t create_detector(LCDD& lcdd, xml_h e, SensitiveDetector sens) {
+  xml_det_t x_det = e;
+  Layering layering(x_det);
+  xml_comp_t staves = x_det.staves();
+  xml_dim_t dim = x_det.dimensions();
+  string det_name = x_det.nameStr();
+  string det_type = x_det.typeStr();
+  Material air = lcdd.air();
+  double totalThickness = layering.totalThickness();
+  int totalRepeat = 0;
+  int totalSlices = 0;
+  double gap = xml_dim_t(x_det).gap();
+  int numSides = dim.numsides();
+  double detZ = dim.z();
+  double rmin = dim.rmin();
+  DetElement sdet(det_name, x_det.id());
+  DetElement stave("stave1", x_det.id());
+  Volume motherVol = lcdd.pickMotherVolume(sdet);
+
+  for (xml_coll_t c(x_det, _U(layer)); c; ++c) {
+    xml_comp_t x_layer = c;
+    int repeat = x_layer.repeat();
+    totalRepeat += repeat;
+    totalSlices += x_layer.numChildren(_U(slice));
+  }
+
+  PolyhedraRegular polyhedra(numSides, rmin, rmin + totalThickness, detZ);
+  Volume envelopeVol(det_name + "_envelope", polyhedra, air);
+
+  // Add the subdetector envelope to the structure.
+  double innerAngle = 2 * M_PI / numSides;
+  double halfInnerAngle = innerAngle / 2;
+  double tan_inner = std::tan(halfInnerAngle) * 2;
+  double innerFaceLen = rmin * tan_inner;
+  double outerFaceLen = (rmin + totalThickness) * tan_inner;
+  double staveThickness = totalThickness;
+
+  Trapezoid staveTrdOuter(innerFaceLen / 2, outerFaceLen / 2, detZ / 2, detZ / 2, staveThickness / 2);
+  Volume staveOuterVol(det_name + "_stave", staveTrdOuter, air);
+
+  Trapezoid staveTrdInner(innerFaceLen / 2 - gap, outerFaceLen / 2 - gap, detZ / 2, detZ / 2, staveThickness / 2);
+  Volume staveInnerVol(det_name + "_inner", staveTrdInner, air);
+
+  double layerOuterAngle = (M_PI - innerAngle) / 2;
+  double layerInnerAngle = (M_PI / 2 - layerOuterAngle);
+  double layer_pos_z = -(staveThickness / 2);
+  double layer_dim_x = innerFaceLen / 2 - gap * 2;
+  int layer_num = 1;
+
+  LayeringExtensionImpl* layeringExtension = new LayeringExtensionImpl();
+  Position layerNormal(0,0,1);
+
+  // Set envelope volume attributes.
+  envelopeVol.setAttributes(lcdd, x_det.regionStr(), x_det.limitsStr(), x_det.visStr());
+
+  for (xml_coll_t c(x_det, _U(layer)); c; ++c) {
+    xml_comp_t x_layer = c;
+    int repeat = x_layer.repeat();            // Get number of times to repeat this layer.
+    const Layer* lay = layering.layer(layer_num - 1); // Get the layer from the layering engine.
+    // Loop over repeats for this layer.
+    for (int j = 0; j < repeat; j++) {
+      string layer_name = det_name + _toString(layer_num, "_layer%d");
+      double layer_thickness = lay->thickness();
+      DetElement layer(stave, _toString(layer_num, "layer%d"), x_det.id());
+      layeringExtension->setLayer(layer_num, layer, layerNormal);
+
+      // Layer position in Z within the stave.
+      layer_pos_z += layer_thickness / 2;
+      // Layer box & volume
+      Volume layer_vol(layer_name, Box(layer_dim_x, detZ / 2, layer_thickness / 2), air);
+
+      // Create the slices (sublayers) within the layer.
+      double slice_pos_z = -(layer_thickness / 2);
+      int slice_number = 1;
+      for (xml_coll_t k(x_layer, _U(slice)); k; ++k) {
+	xml_comp_t x_slice = k;
+	string slice_name = layer_name + _toString(slice_number, "_slice%d");
+	double slice_thickness = x_slice.thickness();
+	Material slice_material = lcdd.material(x_slice.materialStr());
+	DetElement slice(layer, _toString(slice_number, "slice%d"), x_det.id());
+
+	slice_pos_z += slice_thickness / 2;
+	// Slice volume & box
+	Volume slice_vol(slice_name, Box(layer_dim_x, detZ / 2, slice_thickness / 2), slice_material);
+
+	if (x_slice.isSensitive()) {
+	  sens.setType("calorimeter");
+	  slice_vol.setSensitiveDetector(sens);
+	}
+	// Set region, limitset, and vis.
+	slice_vol.setAttributes(lcdd, x_slice.regionStr(), x_slice.limitsStr(), x_slice.visStr());
+	// slice PlacedVolume
+	PlacedVolume slice_phv = layer_vol.placeVolume(slice_vol, Position(0, 0, slice_pos_z));
+	slice_phv.addPhysVolID("slice", slice_number);
+
+	slice.setPlacement(slice_phv);
+	// Increment Z position for next slice.
+	slice_pos_z += slice_thickness / 2;
+	// Increment slice number.
+	++slice_number;
+      }
+      // Set region, limitset, and vis.
+      layer_vol.setAttributes(lcdd, x_layer.regionStr(), x_layer.limitsStr(), x_layer.visStr());
+
+      // Layer physical volume.
+      PlacedVolume layer_phv = staveInnerVol.placeVolume(layer_vol, Position(0, 0, layer_pos_z));
+      layer_phv.addPhysVolID("layer", layer_num);
+      layer.setPlacement(layer_phv);
+
+      // Increment the layer X dimension.
+      layer_dim_x += layer_thickness * std::tan(layerInnerAngle);    // * 2;
+      // Increment the layer Z position.
+      layer_pos_z += layer_thickness / 2;
+      // Increment the layer number.
+      ++layer_num;
+    }
+  }
+
+  // Add stave inner physical volume to outer stave volume.
+  staveOuterVol.placeVolume(staveInnerVol);
+  // Set the vis attributes of the outer stave section.
+  stave.setVisAttributes(lcdd, staves.visStr(), staveOuterVol);
+  // Place the staves.
+  placeStaves(sdet, stave, rmin, numSides, totalThickness, envelopeVol, innerAngle, staveOuterVol);
+
+  double z_offset = dim.hasAttr(_U(z_offset)) ? dim.z_offset() : 0.0;
+  Transform3D transform(RotationZ(M_PI / numSides), Translation3D(0, 0, z_offset));
+  PlacedVolume env_phv = motherVol.placeVolume(envelopeVol, transform);
+  env_phv.addPhysVolID("system", sdet.id());
+  env_phv.addPhysVolID("barrel", 0);
+  sdet.setPlacement(env_phv);
+
+  SubdetectorExtensionImpl* subdetExt = new SubdetectorExtensionImpl(sdet);
+  subdetExt->setIsBarrel(true);
+
+  sdet.addExtension<SubdetectorExtension>(subdetExt);
+  sdet.addExtension<LayeringExtension>(layeringExtension);
+  return sdet;
+}
+
+DECLARE_DETELEMENT(DD4hep_PolyhedraBarrelCalorimeter2,create_detector)
+DECLARE_DEPRECATED_DETELEMENT(PolyhedraBarrelCalorimeter2,create_detector)
diff --git a/DDDetectors/src/PolyhedraEndcapCalorimeter2_geo.cpp b/DDDetectors/src/PolyhedraEndcapCalorimeter2_geo.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..51773c3ac936c80468566ac55427e3bcf6cc63d9
--- /dev/null
+++ b/DDDetectors/src/PolyhedraEndcapCalorimeter2_geo.cpp
@@ -0,0 +1,111 @@
+// $Id: PolyhedraEndcapCalorimeter2_geo.cpp 1306 2014-08-22 12:29:38Z markus.frank@cern.ch $
+//====================================================================
+//  AIDA Detector description implementation for LCD
+//--------------------------------------------------------------------
+//
+//  Author     : M.Frank
+//
+//====================================================================
+#include "DD4hep/DetFactoryHelper.h"
+#include "XML/Layering.h"
+
+using namespace std;
+using namespace DD4hep;
+using namespace DD4hep::Geometry;
+
+static Ref_t create_detector(LCDD& lcdd, xml_h e, SensitiveDetector sens)  {
+  xml_det_t   x_det     = e;
+  xml_dim_t   dim       = x_det.dimensions();
+  int         det_id    = x_det.id();
+  string      det_name  = x_det.nameStr();
+  bool        reflect   = x_det.reflect(true);
+  Material    air       = lcdd.air();
+  int         numsides  = dim.numsides();
+  double      rmin      = dim.rmin();
+  double      rmax      = dim.rmax()*std::cos(M_PI/numsides);
+  double      zmin      = dim.zmin();
+  Layering    layering(x_det);
+  double      totalThickness = layering.totalThickness();
+  Volume      envelopeVol(det_name+"_envelope",PolyhedraRegular(numsides,rmin,rmax,totalThickness),air);
+    
+  int l_num = 1;
+  int layerType   = 0;
+  double layerZ   = -totalThickness/2;
+
+  envelopeVol.setAttributes(lcdd,x_det.regionStr(),x_det.limitsStr(),x_det.visStr());
+
+  for(xml_coll_t c(x_det,_U(layer)); c; ++c)  {
+    xml_comp_t       x_layer  = c;
+    double           l_thick  = layering.layer(l_num-1)->thickness();
+    string           l_name   = det_name + _toString(layerType,"_layer%d");
+    int              l_repeat = x_layer.repeat();
+    Volume           l_vol(l_name,PolyhedraRegular(numsides,rmin,rmax,l_thick),air);
+      
+    int s_num = 1;
+    double sliceZ = -l_thick/2;
+    for(xml_coll_t s(x_layer,_U(slice)); s; ++s)  {
+      xml_comp_t x_slice = s;
+      string     s_name  = l_name + _toString(s_num,"_slice%d");
+      double     s_thick = x_slice.thickness();
+      Material   s_mat   = lcdd.material(x_slice.materialStr());
+      Volume     s_vol(s_name,PolyhedraRegular(numsides,rmin,rmax,s_thick),s_mat);
+        
+      if ( x_slice.isSensitive() )  {
+	sens.setType("calorimeter");
+	s_vol.setSensitiveDetector(sens);
+      }
+      s_vol.setVisAttributes(lcdd.visAttributes(x_slice.visStr()));
+      sliceZ += s_thick/2;
+      PlacedVolume s_phv = l_vol.placeVolume(s_vol,Position(0,0,sliceZ));
+      s_phv.addPhysVolID("slice",s_num);
+      s_num++;
+    }
+    l_vol.setVisAttributes(lcdd.visAttributes(x_layer.visStr()));
+    if ( l_repeat <= 0 ) throw std::runtime_error(det_name+"> Invalid repeat value");
+    for(int j=0; j<l_repeat; ++j) {
+      string phys_lay = det_name + _toString(l_num,"_layer%d");
+      layerZ += l_thick/2;
+      PlacedVolume  phys_vol = envelopeVol.placeVolume(l_vol,Position(0,0,layerZ));
+      phys_vol.addPhysVolID("layer", l_num);
+      layerZ += l_thick/2;
+      ++l_num;
+    }
+    ++layerType;
+  }
+
+  DetElement sdet(det_name,det_id);
+  Volume motherVol = lcdd.pickMotherVolume(sdet);
+  // Reflect it.
+  if ( reflect )  {
+    Assembly assembly(det_name+"_assembly");
+    PlacedVolume pv = motherVol.placeVolume(assembly);
+    pv.addPhysVolID("system", det_id);
+    sdet.setPlacement(pv);
+
+    DetElement   sdetA(sdet,det_name+"_A",x_det.id());
+    pv = assembly.placeVolume(envelopeVol,Transform3D(RotationZYX(M_PI/numsides,0,0),
+						      Position(0,0,zmin+totalThickness/2)));
+    pv.addPhysVolID("barrel", 1);
+    sdetA.setPlacement(pv);
+
+    DetElement   sdetB = sdetA.clone(det_name+"_B",x_det.id());
+    sdet.add(sdetB);
+    pv = assembly.placeVolume(envelopeVol,Transform3D(RotationZYX(M_PI/numsides,M_PI,0),
+						Position(0,0,-(zmin+totalThickness/2))));
+    pv.addPhysVolID("barrel", 2);
+    sdetB.setPlacement(pv);
+  }
+  else  {
+    PlacedVolume pv = motherVol.placeVolume(envelopeVol,
+					    Transform3D(RotationZYX(M_PI/numsides,0,0),
+							Position(0,0,zmin+totalThickness/2)));
+    pv.addPhysVolID("system", det_id);
+    pv.addPhysVolID("barrel", 1);
+    sdet.setPlacement(pv);
+  }
+
+  return sdet;
+}
+
+DECLARE_DETELEMENT(DD4hep_PolyhedraEndcapCalorimeter2,create_detector)
+DECLARE_DEPRECATED_DETELEMENT(PolyhedraEndcapCalorimeter2,create_detector)
diff --git a/DDDetectors/src/SiTrackerBarrel_geo.cpp b/DDDetectors/src/SiTrackerBarrel_geo.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..60d97018aeeefc4dd32bf442c4431abee9f26344
--- /dev/null
+++ b/DDDetectors/src/SiTrackerBarrel_geo.cpp
@@ -0,0 +1,148 @@
+// $Id: SiTrackerBarrel_geo.cpp 1360 2014-10-27 16:32:06Z Nikiforos.Nikiforou@cern.ch $
+//====================================================================
+//  AIDA Detector description implementation for LCD
+//--------------------------------------------------------------------
+//
+//  Author     : M.Frank
+//
+//====================================================================
+#include "DD4hep/DetFactoryHelper.h"
+#include "DD4hep/Printout.h"
+
+using namespace std;
+using namespace DD4hep;
+using namespace DD4hep::Geometry;
+
+static Ref_t create_detector(LCDD& lcdd, xml_h e, SensitiveDetector sens)  {
+  xml_det_t   x_det     = e;
+  Material    air       = lcdd.air();
+  int         det_id    = x_det.id();
+  string      det_name  = x_det.nameStr();
+  DetElement  sdet       (det_name,det_id);
+  Assembly    assembly   (det_name+"_assembly");
+  map<string, Volume>    volumes;
+  PlacedVolume pv;
+
+  sens.setType("tracker");
+  for(xml_coll_t mi(x_det,_U(module)); mi; ++mi)  {
+    xml_comp_t x_mod  = mi;
+    xml_comp_t m_env  = x_mod.child(_U(module_envelope));
+    string     m_nam  = x_mod.nameStr();
+    Volume     m_vol(det_name+"_"+m_nam,Box(m_env.width()/2,m_env.length()/2,m_env.thickness()/2),air);
+    int        ncomponents = 0, sensor_number = 1;
+
+    if ( volumes.find(m_nam) != volumes.end() )   {
+      printout(ERROR,"SiTrackerBarrel","Logics error in building modules.");
+      throw runtime_error("Logics error in building modules.");
+    }
+    volumes[m_nam] = m_vol;
+    for(xml_coll_t ci(x_mod,_U(module_component)); ci; ++ci, ++ncomponents)  {
+      xml_comp_t x_comp = ci;
+      xml_comp_t x_pos  = x_comp.position(false);
+      xml_comp_t x_rot  = x_comp.rotation(false);	
+      string     c_nam  = det_name+"_"+m_nam+_toString(ncomponents,"_component%d");
+      Box        c_box(x_comp.width()/2,x_comp.length()/2,x_comp.thickness()/2);
+      Volume     c_vol(c_nam,c_box,lcdd.material(x_comp.materialStr()));
+
+      if ( x_pos && x_rot ) {
+	Position    c_pos(x_pos.x(0),x_pos.y(0),x_pos.z(0));
+	RotationZYX c_rot(x_rot.z(0),x_rot.y(0),x_rot.x(0));
+	pv = m_vol.placeVolume(c_vol, Transform3D(c_rot,c_pos));
+      }
+      else if ( x_rot ) {
+	pv = m_vol.placeVolume(c_vol,RotationZYX(x_rot.z(0),x_rot.y(0),x_rot.x(0)));
+      }
+      else if ( x_pos ) {
+	pv = m_vol.placeVolume(c_vol,Position(x_pos.x(0),x_pos.y(0),x_pos.z(0)));
+      }
+      else {
+	pv = m_vol.placeVolume(c_vol);
+      }
+      c_vol.setRegion(lcdd, x_comp.regionStr());
+      c_vol.setLimitSet(lcdd, x_comp.limitsStr());
+      c_vol.setVisAttributes(lcdd, x_comp.visStr());
+      if ( x_comp.isSensitive() ) {
+	pv.addPhysVolID(_U(sensor),sensor_number++);
+	c_vol.setSensitiveDetector(sens);
+      }
+    }
+    m_vol.setVisAttributes(lcdd.visAttributes(x_mod.visStr()));
+  }
+  for(xml_coll_t li(x_det,_U(layer)); li; ++li)  {
+    xml_comp_t x_layer  = li;
+    xml_comp_t x_barrel = x_layer.child(_U(barrel_envelope));
+    xml_comp_t x_layout = x_layer.child(_U(rphi_layout));
+    xml_comp_t z_layout = x_layer.child(_U(z_layout));      // Get the <z_layout> element.
+    int        lay_id   = x_layer.id();
+    string     m_nam    = x_layer.moduleStr();
+    Volume     m_env    = volumes[m_nam];
+    string     lay_nam  = det_name+"_"+m_nam+_toString(x_layer.id(),"_layer%d");
+    Tube       lay_tub   (x_barrel.inner_r(),x_barrel.outer_r(),x_barrel.z_length()/2);
+    Volume     lay_vol   (lay_nam,lay_tub,air);         // Create the layer envelope volume.
+    double     phi0     = x_layout.phi0();              // Starting phi of first module.
+    double     phi_tilt = x_layout.phi_tilt();          // Phi tilt of a module.
+    double     rc       = x_layout.rc();                // Radius of the module center.
+    int        nphi     = x_layout.nphi();              // Number of modules in phi.
+    double     rphi_dr  = x_layout.dr();                // The delta radius of every other module.
+    double     phi_incr = (M_PI * 2) / nphi;            // Phi increment for one module.
+    double     phic     = phi0;                         // Phi of the module center.
+    double     z0       = z_layout.z0();                // Z position of first module in phi.
+    double     nz       = z_layout.nz();                // Number of modules to place in z.
+    double     z_dr     = z_layout.dr();                // Radial displacement parameter, of every other module.
+
+    // Z increment for module placement along Z axis.
+    // Adjust for z0 at center of module rather than
+    // the end of cylindrical envelope.
+    double z_incr   = nz > 1 ? (2.0 * z0) / (nz - 1) : 0.0;
+    // Starting z for module placement along Z axis.
+    double module_z = -z0;
+    int module = 1;
+      
+    // Loop over the number of modules in phi.
+    for (int ii = 0; ii < nphi; ii++)	{
+      double dx = z_dr * std::cos(phic + phi_tilt);	// Delta x of module position.
+      double dy = z_dr * std::sin(phic + phi_tilt);	// Delta y of module position.
+      double  x = rc * std::cos(phic);                  // Basic x module position.
+      double  y = rc * std::sin(phic);               	// Basic y module position.
+        
+      // Loop over the number of modules in z.
+      for (int j = 0; j < nz; j++)	  {
+	// Module PhysicalVolume.
+// 	Transform3D tr(RotationZYX(0,-((M_PI/2)-phic-phi_tilt),M_PI/2),Position(x,y,module_z));
+    
+    //NOTE (Nikiforos, 26/08 Rotations needed to be fixed so that component1 (silicon) is on the outside      
+    Transform3D tr(RotationZYX(0,((M_PI/2)-phic-phi_tilt),-M_PI/2),Position(x,y,module_z));
+          
+	pv = lay_vol.placeVolume(m_env,tr);
+	pv.addPhysVolID("module", module++);
+	// Adjust the x and y coordinates of the module.
+	x += dx;
+	y += dy;
+	// Flip sign of x and y adjustments.
+	dx *= -1;
+	dy *= -1;
+	// Add z increment to get next z placement pos.
+	module_z += z_incr;
+      }
+      phic     += phi_incr;      // Increment the phi placement of module.
+      rc       += rphi_dr;       // Increment the center radius according to dr parameter.
+      rphi_dr  *= -1;            // Flip sign of dr parameter.
+      module_z  = -z0;           // Reset the Z placement parameter for module.
+    }
+    // Create the PhysicalVolume for the layer.
+    assembly.setVisAttributes(lcdd.invisible());
+    pv = assembly.placeVolume(lay_vol); // Place layer in mother
+    pv.addPhysVolID("layer", lay_id);       // Set the layer ID.
+    DetElement m_elt(sdet,lay_nam,lay_id);
+    m_elt.setAttributes(lcdd,lay_vol,x_layer.regionStr(),x_layer.limitsStr(),x_layer.visStr());
+    m_elt.setPlacement(pv);
+  }
+  pv = lcdd.pickMotherVolume(sdet).placeVolume(assembly);
+  pv.addPhysVolID("system", det_id);      // Set the subdetector system ID.
+  pv.addPhysVolID("barrel", 0);           // Flag this as a barrel subdetector.
+  sdet.setPlacement(pv);
+  return sdet;
+}
+
+DECLARE_DETELEMENT(DD4hep_SiTrackerBarrel,create_detector)
+DECLARE_DEPRECATED_DETELEMENT(SiTrackerBarrel,create_detector)
diff --git a/DDDetectors/src/SiTrackerEndcap2_geo.cpp b/DDDetectors/src/SiTrackerEndcap2_geo.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..4dbf5f38c9a02052f9407724da15c01c89cee4f6
--- /dev/null
+++ b/DDDetectors/src/SiTrackerEndcap2_geo.cpp
@@ -0,0 +1,115 @@
+// $Id: SiTrackerEndcap2_geo.cpp 1306 2014-08-22 12:29:38Z markus.frank@cern.ch $
+//====================================================================
+//  AIDA Detector description implementation for LCD
+//--------------------------------------------------------------------
+//
+//  Author     : M.Frank
+//
+//====================================================================
+
+#include "DD4hep/DetFactoryHelper.h"
+#include <map>
+
+using namespace std;
+using namespace DD4hep;
+using namespace DD4hep::Geometry;
+
+static Ref_t create_detector(LCDD& lcdd, xml_h e, SensitiveDetector sens)  {
+  xml_det_t   x_det     = e;
+  Material    vacuum    = lcdd.vacuum();
+  int         det_id    = x_det.id();
+  string      det_name  = x_det.nameStr();
+  bool        reflect   = x_det.reflect(false);
+  DetElement  sdet        (det_name,det_id);
+  Assembly    assembly    (det_name+"_assembly");
+  //Volume      assembly    (det_name+"_assembly",Box(10000,10000,10000),vacuum);
+  Volume      motherVol = lcdd.pickMotherVolume(sdet);
+  int         m_id=0, c_id=0, n_sensor=0;
+  map<string,Volume> modules;
+  PlacedVolume pv;
+
+  assembly.setVisAttributes(lcdd.invisible());
+  sens.setType("tracker");
+
+  for(xml_coll_t mi(x_det,_U(module)); mi; ++mi, ++m_id)  {
+    xml_comp_t x_mod   = mi;
+    string     m_nam   = x_mod.nameStr();
+    xml_comp_t trd     = x_mod.trd();
+    double     posY;
+    double     x1      = trd.x1();
+    double     x2      = trd.x2();
+    double     z       = trd.z();
+    double     y1, y2, total_thickness=0.;
+    xml_coll_t ci(x_mod,_U(module_component));
+    for(ci.reset(), total_thickness=0.0; ci; ++ci)
+      total_thickness += xml_comp_t(ci).thickness();
+      
+    y1 = y2 = total_thickness / 2;
+    Volume  m_volume(det_name+"_"+m_nam, Trapezoid(x1, x2, y1, y2, z), vacuum);      
+    m_volume.setVisAttributes(lcdd.visAttributes(x_mod.visStr()));
+
+    for(ci.reset(), n_sensor=1, c_id=0, posY=-y1; ci; ++ci, ++c_id)  {
+      xml_comp_t c       = ci;
+      double     c_thick = c.thickness();
+      Material   c_mat   = lcdd.material(c.materialStr());
+      string     c_name  = m_volume.name() + _toString(c_id,"_component%d");
+      Volume     c_vol(c_name, Trapezoid(x1,x2,c_thick/2e0,c_thick/2e0,z), c_mat);
+
+      c_vol.setVisAttributes(lcdd.visAttributes(c.visStr()));
+      pv = m_volume.placeVolume(c_vol,Position(0,posY+c_thick/2,0));
+      //pv.addPhysVolID("component",c_id);
+      if ( c.isSensitive() ) {
+	sdet.check(n_sensor > 2,"SiTrackerEndcap2::fromCompact: "+c_name+" Max of 2 modules allowed!");
+	pv.addPhysVolID("sensor",n_sensor);
+	c_vol.setSensitiveDetector(sens);
+	++n_sensor;
+      }
+      posY += c_thick;
+    }
+    modules[m_nam] = m_volume;
+  }
+  
+  for(xml_coll_t li(x_det,_U(layer)); li; ++li)  {
+    xml_comp_t  x_layer(li);
+    int l_id    = x_layer.id();
+    int mod_num = 1;
+    for(xml_coll_t ri(x_layer,_U(ring)); ri; ++ri)  {
+      xml_comp_t x_ring = ri;
+      double r        = x_ring.r();
+      double phi0     = x_ring.phi0(0);
+      double zstart   = x_ring.zstart();
+      double dz       = x_ring.dz(0);
+      int    nmodules = x_ring.nmodules();
+      string m_nam    = x_ring.moduleStr();
+      Volume m_vol    = modules[m_nam];
+      double iphi     = 2*M_PI/nmodules;
+      double phi      = phi0;
+
+      for(int k=0; k<nmodules; ++k) {
+	string m_base = _toString(l_id,"layer%d") + _toString(mod_num,"_module%d");
+	double x = -r*std::cos(phi);
+	double y = -r*std::sin(phi);
+	DetElement module(sdet,m_base+"_pos",det_id);
+	pv = assembly.placeVolume(m_vol,Transform3D(RotationZYX(0,-M_PI/2-phi,-M_PI/2),Position(x,y,zstart+dz)));
+	pv.addPhysVolID("barrel",1).addPhysVolID("layer", l_id).addPhysVolID("module",mod_num);
+	module.setPlacement(pv);
+	if ( reflect ) {
+	  pv = assembly.placeVolume(m_vol,Transform3D(RotationZYX(M_PI,-M_PI/2-phi,-M_PI/2),Position(x,y,-zstart-dz)));
+	  pv.addPhysVolID("barrel",2).addPhysVolID("layer",l_id).addPhysVolID("module",mod_num);
+	  DetElement r_module(sdet,m_base+"_neg",det_id);
+	  r_module.setPlacement(pv);
+	}
+	dz   = -dz;
+	phi += iphi;
+	++mod_num;
+      }
+    }
+  }
+  pv = motherVol.placeVolume(assembly);
+  pv.addPhysVolID("system",det_id);
+  sdet.setPlacement(pv);
+  return sdet;
+}
+
+DECLARE_DETELEMENT(DD4hep_SiTrackerEndcap2,create_detector)
+DECLARE_DEPRECATED_DETELEMENT(SiTrackerEndcap2,create_detector)
diff --git a/DDDetectors/src/TubeSegment_geo.cpp b/DDDetectors/src/TubeSegment_geo.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..4a1e556cdd8307a68cbd927dadb06944c607d921
--- /dev/null
+++ b/DDDetectors/src/TubeSegment_geo.cpp
@@ -0,0 +1,36 @@
+// $Id: TubeSegment_geo.cpp 1306 2014-08-22 12:29:38Z markus.frank@cern.ch $
+//====================================================================
+//  AIDA Detector description implementation for LCD
+//--------------------------------------------------------------------
+//
+//  Author     : M.Frank
+//
+//====================================================================
+#include "DD4hep/DetFactoryHelper.h"
+
+using namespace std;
+using namespace DD4hep;
+using namespace DD4hep::Geometry;
+
+static Ref_t create_element(LCDD& lcdd, xml_h e, Ref_t)  {
+  xml_det_t  x_det  (e);
+  xml_comp_t x_tube = x_det.tubs();
+  xml_dim_t  pos    = x_det.position();
+  xml_dim_t  rot    = x_det.rotation();
+  string     name   = x_det.nameStr();
+  Tube       tub    (x_tube.rmin(),x_tube.rmax(),x_tube.zhalf());
+  Volume     vol    (name,tub,lcdd.material(x_det.materialStr()));
+
+  vol.setVisAttributes(lcdd, x_det.visStr());
+    
+  DetElement   sdet(name,x_det.id());
+  Volume       mother = lcdd.pickMotherVolume(sdet);
+  PlacedVolume phv = 
+    mother.placeVolume(vol,Transform3D(RotationZYX(rot.z(),rot.y(),rot.x()),Position(-pos.x(),-pos.y(),pos.z())));
+  phv.addPhysVolID("id",x_det.id());
+  sdet.setPlacement(phv);
+  return sdet;
+}
+
+DECLARE_DETELEMENT(DD4hep_TubeSegment,create_element)
+DECLARE_DEPRECATED_DETELEMENT(TubeSegment,create_element)