diff --git a/athena.xml b/athena.xml
index a896d823c484a59a49fa46a2b5ebdd8742273fdc..a4c3f87d95a196b3cd7c96d8c10d2e6820426ecf 100644
--- a/athena.xml
+++ b/athena.xml
@@ -142,6 +142,16 @@
       <composite name="TrackerEndcapP_Outer"/>
       <composite name="TrackerEndcapN_Outer"/>
     </detector>
+    
+    <detector id="TOFSubAssembly_ID"
+      name="TOFSubAssembly"
+      type="DD4hep_SubdetectorAssembly"
+      vis="TOFSubAssemblyVis">
+      <composite name="BarrelTOF"/>
+      <composite name="ForwardTOF"/>
+      <composite name="BackwardTOF"/>
+    </detector>
+
     <!--
     <detector id="TrackerBarrelSubAssembly_Inner_ID"
       name="TrackerBarrelSubAssembly_Inner"
@@ -177,6 +187,7 @@
 
   <include ref="compact/central_tracker.xml"/>
 
+  <include ref="compact/tof_barrel.xml"/>
   
   <!--include ref="compact/rwell_tracker_barrel.xml"/-->
   <include ref="compact/cb_DIRC.xml"/>
diff --git a/compact/definitions.xml b/compact/definitions.xml
index ca239b3c8a8d15c32e915c3d5475bff1b2dd1dbf..9f6d5579f1b72d213c50085f65287ff0f8ec5352 100644
--- a/compact/definitions.xml
+++ b/compact/definitions.xml
@@ -161,13 +161,14 @@
     DIRC subsystem       ID: 90
     Barrel TRD subsystem ID: 91
     Barrel TOF subsystem ID: 92
-
-    Unused IDs: 93-99 
+    TOFSubAssembly       ID: 93
+    
+    Unused IDs: 94-99
     </comment>
     <constant name="BarrelDIRC_ID" value="90"/>
     <constant name="BarrelTRD_ID"  value="91"/>
     <constant name="BarrelTOF_ID"  value="92"/>
-
+    <constant name="TOFSubAssembly_ID" value="93"/>
 
     <comment> 
       =====================================
diff --git a/compact/display.xml b/compact/display.xml
index 28c80cb47accd3860a10f18aa7765915f8c30054..27e6d71b74b31058d6f7de82ede9594dcb66fc5d 100644
--- a/compact/display.xml
+++ b/compact/display.xml
@@ -41,7 +41,7 @@
     <vis name="EcalEndcapVis" alpha="1.0" r="0.0" g="0.99" b="0.0" showDaughters="false" visible="true" />
     <vis name="EcalBarrelVis" alpha="1.0" r="0.0" g="0.99" b="0.0" showDaughters="false" visible="true" />
    
-   
+    <vis name="TOFVis" alpha="0.5" r="1" g="0" b="1" showDaughters="true" />
     
 
     <vis name="SolenoidCoilVis" alpha="1.0" r="0.55" g="0.55" b="0.7" showDaughters="true" visible="true" lineStyle="solid" drawingStyle="solid" />
diff --git a/compact/tof_barrel.xml b/compact/tof_barrel.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7a36a9e4dfc6ac283898fef680cc4351ccacce49
--- /dev/null
+++ b/compact/tof_barrel.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<lccdd>
+
+  <define>
+
+    <constant name="BarrelTOFSpaceFrame_width"   value="40.0*mm"/>
+    <constant name="BarrelTOFSpaceFrame_height"  value="sqrt(3.0)*32.0*mm/2.0"/>
+    <constant name="BarrelTOFSensor_thickness"   value="0.3*mm"/>
+    <constant name="BarrelTOFModule_thickness"   value="2.00/100*9.37*cm"/>
+    <constant name="BarrelTOFService_thickness"  value="BarrelTOFModule_thickness-BarrelTOFSensor_thickness"/>
+
+    <comment>
+      Layer_rOffset is used to add inside space so the _rmin value is the nominal sensor radius.
+    </comment>
+    <constant name="BarrelTOFLayer_rOffset"     value="0.5*cm"/>
+
+    <constant name="BarrelTOF_rmin1"       value="50.0*cm"/>
+    <constant name="BarrelTOF_rmin2"       value="BarrelTOF_rmin1 + BarrelTOFSpaceFrame_width"/>
+    <constant name="BarrelTOF_length1"     value="192.0*cm"/>
+    <constant name="BarrelTOF_length2"     value="200.0*cm"/>
+
+    <constant name="BarrelTOF_thickness"  value="BarrelTOF_rmin2 - BarrelTOF_rmin1"/>
+    <constant name="BarrelTOF_length"     value="BarrelTOF_length2"/>
+
+    <comment> TODO: These should be computed </comment>
+    <constant name="BarrelTOF_NModules" value="80"/>
+
+  </define>
+
+  <display>
+  </display>
+
+  <detectors>
+    <detector
+      id="BarrelTOF_ID"
+      name="BarrelTOF"
+      type="athena_TrackerBarrel"
+      readout="BarrelTOFHits"
+      insideTrackingVolume="true">
+      <dimensions
+        rmin="BarrelTOF_rmin1-BarrelTOFLayer_rOffset"
+        rmax="BarrelTOF_rmin2-BarrelTOFLayer_rOffset + BarrelTOF_thickness"
+        length="BarrelTOF_length"/>
+      <comment>
+        Tracker Barrel Modules
+      </comment>
+      <module name="BarrelTOF_Module1" vis="OrgangeVis">
+        <frame  material="CarbonFiber_25percent" vis="BlueGreenVis"
+          width="BarrelTOFSpaceFrame_width"
+          height="BarrelTOFSpaceFrame_height"
+          length="BarrelTOF_length1"
+          thickness="0.1*mm" />
+        <module_component name="silicon" material="Silicon" sensitive="true"
+          width="BarrelTOFSpaceFrame_width" length="BarrelTOF_length1-0.1*mm" thickness="BarrelTOFSensor_thickness" >
+        </module_component>
+        <module_component name="service" material="Silicon" sensitive="false"
+          width="BarrelTOFSpaceFrame_width" length="BarrelTOF_length1-0.1*mm" thickness="BarrelTOFService_thickness" />
+      </module>
+      <layer module="BarrelTOF_Module1" id="1" vis="TOFVis">
+        <barrel_envelope
+          inner_r="BarrelTOF_rmin1-BarrelTOFLayer_rOffset"
+          outer_r="BarrelTOF_rmin1-BarrelTOFLayer_rOffset + BarrelTOF_thickness-1.0*mm"
+          z_length="BarrelTOF_length"/>
+        <rphi_layout phi_tilt="10.0*degree" nphi="BarrelTOF_NModules" phi0="0.0" rc="BarrelTOF_rmin1" dr="0.0 * mm"/>
+        <z_layout dr="0.0 * mm" z0="0.0 * mm" nz="1"/>
+      </layer>
+    </detector>
+
+  </detectors>
+
+  <readouts>
+    <readout name="BarrelTOFHits">
+      <segmentation type="CartesianGridXY" grid_size_x="0.150*mm" grid_size_y="0.150*mm" />
+      <id>system:8,barrel:2,layer:4,module:12,sensor:2,x:32:-16,y:-16</id>
+    </readout>
+  </readouts>
+
+
+</lccdd>
diff --git a/compact/tof_endcap.xml b/compact/tof_endcap.xml
index aa4a8fb35c92cc66945955ba4319481e80eb8169..295fb7d0437e09bbb88c14976f9669dfd84ecf48 100644
--- a/compact/tof_endcap.xml
+++ b/compact/tof_endcap.xml
@@ -6,49 +6,130 @@
       Forward and backward TOF Parameters
       --------------------------
     </comment>
-    <constant name="ForwardTOF_zmin" value="BarrelTracking_length/2.0 + ForwardTracking_length + ForwardRICH_length + ForwardTRD_length"/>
-    <constant name="ForwardTOF_rmin" value="ForwardPID_rmin1"/>
-    <constant name="ForwardTOF_rmax" value="Solenoid_rmin"/>
-    <constant name="BackwardTOF_zmin" value="BarrelTracking_length/2.0 + BackwardTracking_length + BackwardCherenkov_length "/>
-    <constant name="BackwardTOF_rmin" value="ForwardPID_rmin1"/>
-    <constant name="BackwardTOF_rmax" value="BarrelTracking_rmax"/>
+    
+    <constant name="TOFEndcapSensor_thickness"  value="0.3*mm"/>
+    <constant name="TOFEndcap_thickness"        value="2.00/100*9.37*cm"/>
+    <constant name="TOFEndcapService_thickness" value="TOFEndcap_thickness-TOFEndcapSensor_thickness"/>
+    <constant name="TOFEndcap_nLayers"          value="2"/>
+
+    <constant name="ForwardTOF_zmin"            value="BarrelTracking_length/2.0 + ForwardTracking_length + ForwardRICH_length + ForwardTRD_length"/>
+    <constant name="ForwardTOF_dz"              value="(ForwardTOF_length-0.4*cm)/TOFEndcap_nLayers"/>
+    <constant name="ForwardTOF_rmin1"           value="ForwardPID_rmin1"/>
+    <constant name="ForwardTOF_rmin2"           value="ForwardPID_rmin1"/>
+    <constant name="ForwardTOF_rmax1"           value="Solenoid_rmin"/>
+    <constant name="ForwardTOF_rmax2"           value="Solenoid_rmin"/>
+    <constant name="ForwardTOFModOpeningAngle"  value="30.0*degree"/>
+    <constant name="ForwardTOFMod1_x1"          value="2.0*ForwardTOF_rmin1*sin(ForwardTOFModOpeningAngle/2.0)"/>
+    <constant name="ForwardTOFMod1_x2"          value="2.0*ForwardTOF_rmax1*sin(ForwardTOFModOpeningAngle/2.0)"/>
+    <constant name="ForwardTOFMod1_y"           value="ForwardTOF_rmax1*cos(ForwardTOFModOpeningAngle/2.0) - ForwardTOF_rmin1"/>
+    <constant name="ForwardTOFMod2_x1"          value="2.0*ForwardTOF_rmin2*sin(ForwardTOFModOpeningAngle/2.0)"/>
+    <constant name="ForwardTOFMod2_x2"          value="2.0*ForwardTOF_rmax2*sin(ForwardTOFModOpeningAngle/2.0)"/>
+    <constant name="ForwardTOFMod2_y"           value="ForwardTOF_rmax2*cos(ForwardTOFModOpeningAngle/2.0) - ForwardTOF_rmin2"/>
+
+    <constant name="BackwardTOF_zmin"           value="BarrelTracking_length/2.0 + BackwardTracking_length + BackwardCherenkov_length "/>
+    <constant name="BackwardTOF_dz"             value="(BackwardTOF_length-0.4*cm)/TOFEndcap_nLayers"/>
+    <constant name="BackwardTOF_rmin1"          value="ForwardPID_rmin1"/>
+    <constant name="BackwardTOF_rmin2"          value="ForwardPID_rmin1"/>
+    <constant name="BackwardTOF_rmax1"          value="BarrelTracking_rmax"/>
+    <constant name="BackwardTOF_rmax2"          value="BarrelTracking_rmax"/>
+    <constant name="BackwardTOFModOpeningAngle" value="30.0*degree"/>
+    <constant name="BackwardTOFMod1_x1"         value="2.0*BackwardTOF_rmin1*sin(BackwardTOFModOpeningAngle/2.0)"/>
+    <constant name="BackwardTOFMod1_x2"         value="2.0*BackwardTOF_rmax1*sin(BackwardTOFModOpeningAngle/2.0)"/>
+    <constant name="BackwardTOFMod1_y"          value="BackwardTOF_rmax1*cos(BackwardTOFModOpeningAngle/2.0) - BackwardTOF_rmin1"/>
+    <constant name="BackwardTOFMod2_x1"         value="2.0*BackwardTOF_rmin2*sin(BackwardTOFModOpeningAngle/2.0)"/>
+    <constant name="BackwardTOFMod2_x2"         value="2.0*BackwardTOF_rmax2*sin(BackwardTOFModOpeningAngle/2.0)"/>
+    <constant name="BackwardTOFMod2_y"          value="BackwardTOF_rmax2*cos(BackwardTOFModOpeningAngle/2.0) - BackwardTOF_rmin2"/>
   </define>
 
   <detectors>
-    <detector 
-      id="ForwardTOF_ID"
-      name="ForwardTOF"
-      type="ref_DiskTracker"
-      insideTrackingVolume="true"
-      reflect="false"
-      vis="AnlOrange">
-      <position x="0" y="0" z="0.0"/>
-      <layer id="1" 
-        vis="AnlOrange"
-        inner_z="ForwardTOF_zmin" 
-        inner_r="ForwardTOF_rmin" 
-        outer_r="ForwardTOF_rmax">
-        <slice material="Air" thickness="ForwardTOF_length/2.0" vis="AnlOrange" />
-      </layer>
-    </detector>
-
-    <detector 
-      id="BackwardTOF_ID"
-      name="BackwardTOF"
-      type="ref_DiskTracker"
-      insideTrackingVolume="true"
-      reflect="true"
-      vis="AnlOrange">
-      <position x="0" y="0" z="0.0"/>
-      <layer id="1" 
-        vis="AnlOrange"
-        inner_z="BackwardTOF_zmin" 
-        inner_r="BackwardTOF_rmin" 
-        outer_r="BackwardTOF_rmax">
-        <slice material="Air" thickness="BackwardTOF_length/2.0" vis="AnlOrange" />
-      </layer>
-    </detector>
+      <detector
+        id="ForwardTOF_ID"
+        name="ForwardTOF"
+        type="refdet_TrapEndcapTracker"
+        readout="TOFEndcapHits"
+        vis="TOFVis"
+        reflect="false">
+        <module name="Module1" vis="OrgangeVis">
+          <trd x1="ForwardTOFMod1_x1/2.0" x2="ForwardTOFMod1_x2/2.0" z="ForwardTOFMod1_y/2"/>
+          <module_component thickness="ITS3Thickness" material="Silicon" sensitive="true"/>
+          <module_component thickness="TOFEndcapService_thickness" material="Silicon"/>
+        </module>
+        <module name="Module2" vis="OrgangeVis">
+          <trd x1="ForwardTOFMod2_x1/2.0" x2="ForwardTOFMod2_x2/2.0" z="ForwardTOFMod2_y/2"/>
+          <module_component thickness="TOFEndcapSensor_thickness" material="Silicon" sensitive="true"/>
+          <module_component thickness="TOFEndcapService_thickness" material="Silicon"/>
+        </module>
+        <layer id="1">
+          <envelope  vis="TOFVis"
+            rmin="ForwardTOF_rmin1"
+            rmax="ForwardTOF_rmax1"
+            length="ForwardTOF_dz"
+            zstart="ForwardTOF_zmin" />
+          <ring vis="AnlRed"
+            r="ForwardTOF_rmin1+ForwardTOFMod1_y/2.0"
+            zstart="0.0*mm"
+            nmodules="12" dz="2.5 * mm" module="Module1" />
+        </layer>
+        <layer id="2">
+          <envelope  vis="TOFVis"
+            rmin="ForwardTOF_rmin2"
+            rmax="ForwardTOF_rmax2"
+            length="ForwardTOF_dz"
+            zstart="ForwardTOF_zmin + ForwardTOF_dz" />
+          <ring vis="AnlRed"
+            r="ForwardTOF_rmin2+ForwardTOFMod2_y/2.0"
+            zstart="0.0*mm"
+            nmodules="12" dz="2.5 * mm" module="Module2" />
+        </layer>
+      </detector>
 
+      <detector
+        id="BackwardTOF_ID"
+        name="BackwardTOF"
+        type="refdet_TrapEndcapTracker"
+        readout="TOFEndcapHits"
+        vis="TOFVis"
+        reflect="true">
+        <module name="Module1" vis="OrgangeVis">
+          <trd x1="BackwardTOFMod1_x1/2.0" x2="BackwardTOFMod1_x2/2.0" z="BackwardTOFMod1_y/2"/>
+          <module_component thickness="TOFEndcapSensor_thickness" material="Silicon" sensitive="true"/>
+          <module_component thickness="TOFEndcapService_thickness" material="Silicon"/>
+        </module>
+        <module name="Module2" vis="OrgangeVis">
+          <trd x1="BackwardTOFMod2_x1/2.0" x2="BackwardTOFMod2_x2/2.0" z="BackwardTOFMod2_y/2"/>
+          <module_component thickness="TOFEndcapSensor_thickness" material="Silicon" sensitive="true"/>
+          <module_component thickness="TOFEndcapService_thickness" material="Silicon"/>
+        </module>
+        <layer id="1">
+          <envelope  vis="TOFVis"
+            rmin="BackwardTOF_rmin1 + 0 * 1.2*cm"
+            rmax="BackwardTOF_rmax1"
+            length="ForwardTOF_dz"
+            zstart="BackwardTOF_zmin" />
+          <ring vis="AnlRed"
+            r="BackwardTOF_rmin1+BackwardTOFMod1_y/2.0"
+            zstart="0.0*mm"
+            nmodules="12" dz="2.5 * mm" module="Module1" />
+        </layer>
+        <layer id="2">
+          <envelope  vis="TOFVis"
+            rmin="BackwardTOF_rmin2"
+            rmax="BackwardTOF_rmax2"
+            length="BackwardTOF_dz"
+            zstart="BackwardTOF_zmin + BackwardTOF_dz" />
+          <ring vis="AnlRed"
+            r="BackwardTOF_rmin2+BackwardTOFMod2_y/2.0"
+            zstart="0.0*mm"
+            nmodules="12" dz="2.5 * mm" module="Module2" />
+        </layer>
+      </detector>
   </detectors>
+  
+  <readouts>
+    <readout name="TOFEndcapHits">
+      <segmentation type="CartesianGridXY" grid_size_x="0.20*mm" grid_size_y="0.20*mm" />
+      <id>system:8,barrel:2,layer:4,module:12,sensor:2,x:32:-16,y:-16</id>
+    </readout>
+  </readouts>
 
 </lccdd>