diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 122ef5a47bcf2ccbea9ed7cdb52c8c7dcc42a874..2e14a6588bc2ee7a8436986c1bb930654e92af0f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -119,6 +119,20 @@ dump_geometry:
    - dd_web_display --output geo/detector_geo.root ${DETECTOR_PATH}/athena.xml
    - echo "Geometry viewer at https://eic.phy.anl.gov/geoviewer/index.htm?file=https://eicweb.phy.anl.gov/EIC/detectors/athena/-/jobs/${CI_JOB_ID}/artifacts/raw/geo/detector_geo_full.root?job=dump_geometry&item=default;1&opt=clipxyz;transp30;zoom75;ROTY290;ROTZ350;trz0;trr0;ctrl;all&"
 
+detector_documentation:
+  stage: docs
+  needs:
+    - common:detector
+  script:
+    - mkdir -p doc
+    - bash bin/build_documentation | tee doc/detector.md
+      #- |
+      #  xmllint --format --xpath '//comment/text()' ${DETECTOR_PATH}/athena.xml | sed -re 's/<\/?\w+>//g' | sed 's/^[[:space:]]*#/#/' | tee  doc/detector.md
+      #  xmllint --format --xpath '//comment/text()' ${DETECTOR_PATH}/ip6/ip6_defs.xml | sed -re 's/<\/?\w+>//g' | sed 's/^[[:space:]]*#/#/' | tee -a doc/detector.md || true
+      #  for afile in ${DETECTOR_PATH}/compact/*.xml ; do
+      #    xmllint --format --xpath '//comment/text()' ${afile} | sed -re 's/<\/?\w+>//g' | sed 's/^[[:space:]]*#/#/' | tee -a doc/detector.md || true
+      #  done
+
 report:
   stage: finalize
   needs: 
diff --git a/athena.xml b/athena.xml
index cf0b2ccb074406ef3bb21b499cc28c0999fb0d41..ee4c3b0658f9f97b6ed31048d19d805afe880a93 100644
--- a/athena.xml
+++ b/athena.xml
@@ -4,6 +4,7 @@
 
        <debug>
          <type name="surface"       value="1"/>
+         <type name="material"       value="1"/>
          <type name="readout"       value="1"/>
          <type name="segmentation"  value="1"/>
          <type name="limits"        value="1"/>
@@ -11,11 +12,11 @@
          <type name="includes"      value="1"/>
        </debug>
 
-  <documentation><![CDATA[
+  <documentation level="-1">
   # Athena Detector 
   - https://eicweb.phy.anl.gov/EIC/detectors/athena.git 
   - https://eicweb.phy.anl.gov/EIC/detectors/ip6.git
-  ]]></documentation>
+  </documentation>
 
   <!-- Some information about detector  -->
   <info name="Athena Detector" title="Athena Detector"
@@ -23,18 +24,19 @@
 	url="https://eicweb.phy.anl.gov/EIC/detectors/athena.git"
 	status="development"
 	version="v1 2021-03-16">
-    <comment> Athena Detector
-    - https://eicweb.phy.anl.gov/EIC/detectors/athena.git
-    - https://eicweb.phy.anl.gov/EIC/detectors/ip6.git
-    </comment>
+  <comment> Athena </comment>
   </info>
-
   <define>
-    <include ref="ip6/ip6_defs.xml" /> <comment> IP definitions should be first</comment>
+  <documentation level="2">
+      ## Main Constant Definitions
+
+      The ip6 (or other ip) defines should be included first.
+      These files have only a define tags.
+  </documentation>
+    <include ref="ip6/ip6_defs.xml" /> 
     <include ref="compact/definitions.xml" />
   </define>
 
-
   <includes>
     <gdmlFile ref="compact/elements.xml"/>
     <gdmlFile ref="compact/materials.xml"/>
@@ -58,7 +60,26 @@
   <include ref="compact/display.xml" />
   </display>
 
-  <comment> Include the IP components first </comment>
+  <documentation level="0">
+    ## Detector Subsystems
+
+    ### IP Subsystems
+
+    The interaction point subsystems are included before the central detector subsystems.
+    This is becuase the IP subsystems, for exmaple the beampipe, will define paramters
+    which are subsquently used in the central detector construction -- e.g. the vertex tracker
+    uses the beampipe OD to help define its placement. 
+
+    The IP subsystems include the Far forward and backward regions. The list of subsystem includes:
+     - Interaction region beampipe 
+     - B0 tracker
+     - Off-momentum tracker
+     - Far forward roman pots
+     - Zero Degree Calorimeter
+     - Beam line magnets.
+     - and more...
+  </documentation>
+
   <include ref="ip6/forward_ion_beamline.xml"/>
   <include ref="ip6/beampipe.xml"/>
 
@@ -109,35 +130,6 @@
       <composite name="BackwardTOF"/>
     </detector>
 
-    <!--
-    <detector id="TrackerBarrelSubAssembly_Inner_ID"
-      name="TrackerBarrelSubAssembly_Inner"
-      type="DD4hep_SubdetectorAssembly"
-      vis="TrackerSubAssemblyVis">
-      <composite name="TrackerBarrel_Inner"/>
-    </detector>
-    <detector id="TrackerEndcapSubAssembly_Inner_ID"
-      name="TrackerEndcapSubAssembly_Inner"
-      type="DD4hep_SubdetectorAssembly"
-      vis="TrackerSubAssemblyVis">
-      <composite name="TrackerEndcapN_Inner"/>
-      <composite name="TrackerBarrel_Inner"/>
-      <composite name="TrackerEndcapP_Inner"/>
-    </detector>
-    <detector id="TrackerBarrelSubAssembly_Outer_ID"
-      name="TrackerBarrelSubAssembly_Outer"
-      type="DD4hep_SubdetectorAssembly"
-      vis="TrackerSubAssemblyVis">
-      <composite name="TrackerBarrel_Outer"/>
-    </detector>
-    <detector id="TrackerEndcapSubAssembly_Outer_ID"
-      name="TrackerEndcapSubAssembly_Outer"
-      type="DD4hep_SubdetectorAssembly"
-      vis="TrackerSubAssemblyVis">
-      <composite name="TrackerEndcapP_Outer"/>
-      <composite name="TrackerEndcapN_Outer"/>
-    </detector>
-    -->
   </detectors>
 
   <include ref="compact/vertex_tracker.xml"/>
@@ -145,10 +137,11 @@
   <include ref="compact/central_tracker.xml"/>
 
   <include ref="compact/tof_barrel.xml"/>
+  <include ref="compact/tof_endcap.xml"/>
 
   <!--include ref="compact/rwell_tracker_barrel.xml"-->
-  <include ref="compact/cb_DIRC.xml"/>
-  
+
+  <!--include ref="compact/dirc.xml"/-->
 
   <!-- When changing magnet, also select dimensions in definitions.xml. -->
   <include ref="compact/solenoid.xml"/>
@@ -166,7 +159,6 @@
   <!--include ref="compact/ce_GEM.xml"/-->
   <!--include ref="compact/gem_tracker_endcap.xml"/-->
   <!--include ref="compact/mrich.xml"/-->
-  <include ref="compact/tof_endcap.xml"/>
   <include ref="compact/forward_trd.xml"/>
   <include ref="compact/gaseous_rich.xml"/>
 
@@ -175,7 +167,6 @@
   <include ref="ip6/far_forward_romanpots.xml"/>
   <include ref="ip6/far_forward_detectors.xml"/>
 
-
   <!--
   <include ref="compact/mm_tracker_barrel.xml"/>
   <include ref="compact/cb_VTX_Barrel.xml"/>
@@ -184,5 +175,4 @@
   <readouts>
   </readouts>
 
-
 </lccdd>
diff --git a/bin/build_documentation b/bin/build_documentation
new file mode 100644
index 0000000000000000000000000000000000000000..24d1a76e60ef6900c4c49264c4bca2e3ab04e571
--- /dev/null
+++ b/bin/build_documentation
@@ -0,0 +1,77 @@
+#!/bin/bash
+
+#included files
+detector_file="./athena.xml"
+
+#filelist=$(xmllint --format --xpath '//include/@ref' ${detector_file}   | sed 's/ref=\"//g' | sed 's/\"/\n/g' )
+#echo $filelist
+
+# Searches for included files two levels down
+get_includes() {
+  local input_file="${1}"
+  #echo ${1}
+  local filelist=$(xmllint --format --xpath '//include/@ref' ${input_file}   | sed 's/ref=\"//g' | sed 's/\"//g' )
+  for afile in $filelist ; do
+    xmllint --format --xpath '//include/@ref' ${input_file}  &> /dev/null
+    local res="$?"
+    if [ "${res}" == "0" ]  ; then
+    local subincluded=$(xmllint --format --xpath '//include/@ref' ${input_file}  2> /dev/null | sed 's/ref=\"//g' | sed 's/\"//g' )
+      filelist="${filelist} ${subincluded}"
+      #echo "sub include $afile"
+    fi
+  done
+  # <includes > <gdmlFile > <file>
+  local otherfiles=$(xmllint --format --xpath '//includes/file/@ref | //includes/gdmlFile/@ref' ${input_file}   | sed 's/ref=\"//g' | sed 's/\"/\n/g' )
+  #echo $otherfiles
+  filelist=$(echo "${filelist} ${otherfiles}" | sed 's/ /\n/g' | sort | uniq )
+  echo "$input_file $filelist"
+}
+
+
+xml_files=$(get_includes ${detector_file})
+#echo $xml_files
+
+get_doc_levels() {
+  # levels
+  local levels=0
+  for afile in $xml_files ; do
+    xmllint --format --xpath '//documentation/@level' $afile  &> /dev/null
+    local res="$?"
+    if [ "${res}" == "0" ]  ; then
+      local new_levels=$(xmllint --format --xpath '//documentation/@level' $afile  2> /dev/null  | sed 's/level=\"/ /g' | sed 's/\"//g' )
+      levels="${levels} ${new_levels}"
+    fi
+  done
+  echo "$levels" | sed 's/ /\n/g' | sort  | uniq
+}
+
+all_levels=$(get_doc_levels ${xml_file_array})
+#echo " levels: "
+#echo $all_levels
+
+for alevel in $(echo ${all_levels} | sed 's/ /\n/g' | sort -n  | uniq ) ; do
+  #echo " doing level $alevel ..."
+  for afile in $(echo $xml_files | sed 's/ / \n/g') ; do
+    #echo $afile
+    #xmllint --format --xpath '//documentation[@level="'"$alevel"'"]/text()' $afile
+    level_doc=$(xmllint --format --xpath '//documentation[@level="'$alevel'"]' ${afile} 2> /dev/null )
+    if [ "$?" -eq "0" ] ;  then
+      xmllint --format --xpath '//documentation[@level="'$alevel'"]/text()' ${afile} | sed -re 's/<\/?\w+>//g' | sed 's/^[[:space:]]*#/#/g'
+    fi
+  done
+done
+
+
+
+#${DETECTOR_PATH}=.
+#
+#
+#xmllint --format --xpath '//
+#
+#xmllint --format --xpath '//documentation/text()' ${DETECTOR_PATH}/athena.xml | sed -re 's/<\/?\w+>//g' | sed 's/^[[:space:]]*#/#/' | tee  doc/detector.md
+#xmllint --format --xpath '//documentation/text()' ${DETECTOR_PATH}/ip6/ip6_defs.xml | sed -re 's/<\/?\w+>//g' | sed 's/^[[:space:]]*#/#/' | tee -a doc/detector.md || true
+#for afile in ${DETECTOR_PATH}/compact/*.xml ; do
+#  xmllint --format --xpath '//documentation/text()' ${afile} | sed -re 's/<\/?\w+>//g' | sed 's/^[[:space:]]*#/#/' | tee -a doc/detector.md || true
+#done
+#
+
diff --git a/compact/cb_DIRC.xml b/compact/cb_DIRC.xml
deleted file mode 100644
index 5ff2d2be27bff0bc476fbf82f7101c2e98c94fbb..0000000000000000000000000000000000000000
--- a/compact/cb_DIRC.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<lccdd>
-
-  <comment>Initial implementation of the Athena Detector
-           DIRC (ported from g4e). Currently constructed around
-           a fixed radius of 83.65cm (between the uRWEL layers).
-           TODO: this needs to be properly parameterized.
-  </comment>
-
-  <define>
-    <constant name="cb_DIRC_length"            value="DIRCLength"/>
-    <constant name="cb_DIRC_rmin"              value="82.00*cm"/>
-    <constant name="cb_DIRC_rmax"              value="88.00*cm"/>
-  </define>
-
-  <limits>
-  </limits>
-
-  <regions>
-  </regions>
-
-  <display>
-  </display>
-
-  <detectors>
-    <detector id="BarrelDIRC_ID" name="cb_DIRC" type="cb_DIRC" readout="DIRCHits" vis="AnlTeal">
-      <dimensions rmin="cb_DIRC_rmin" rmax="cb_DIRC_rmax" length="cb_DIRC_length" radius="DIRCRadius" dx="DIRCBars_DX" dy="DIRCBars_DY" number="DIRCNum" deltaphi="DIRCDPhi"/>
-      <position x="0" y="0" z="DIRCOffset"/>
-      <module name="Module0"  R="DIRCRadius" phi="0*DIRCDPhi"  />
-      <module name="Module1"  R="DIRCRadius" phi="1*DIRCDPhi"  />
-      <module name="Module2"  R="DIRCRadius" phi="2*DIRCDPhi"  />
-      <module name="Module3"  R="DIRCRadius" phi="3*DIRCDPhi"  />
-      <module name="Module4"  R="DIRCRadius" phi="4*DIRCDPhi"  />
-      <module name="Module5"  R="DIRCRadius" phi="5*DIRCDPhi"  />
-      <module name="Module6"  R="DIRCRadius" phi="6*DIRCDPhi"  />
-      <module name="Module7"  R="DIRCRadius" phi="7*DIRCDPhi"  />
-      <module name="Module8"  R="DIRCRadius" phi="8*DIRCDPhi"  />
-      <module name="Module9"  R="DIRCRadius" phi="9*DIRCDPhi"  />
-      <module name="Module10" R="DIRCRadius" phi="10*DIRCDPhi" />
-      <module name="Module11" R="DIRCRadius" phi="11*DIRCDPhi" />
-    </detector>
-  </detectors>
-
-  <readouts>
-    <readout name="DIRCHits">
-      <segmentation type="CartesianGridXY" grid_size_x="3.0*mm" grid_size_y="3.0*mm" />
-      <id>system:8,barrel:3,module:12,x:32:-16,y:-16</id>
-    </readout>
-  </readouts>
-
-  <plugins>
-  </plugins>
-
-  <fields>
-  </fields>
-</lccdd>
diff --git a/compact/central_tracker.xml b/compact/central_tracker.xml
index 62e9816bfe7299151f03b8f306ca9e80ebf7d1de..e71a333ad7ce7220c387d3b3497028ae4c4fab37 100644
--- a/compact/central_tracker.xml
+++ b/compact/central_tracker.xml
@@ -5,7 +5,6 @@
     Silicon Tracker
     ---------------
 
-
     Some references:
     With some added info on ITS3 chip from
     https://indico.bnl.gov/event/10677/contributions/45591/attachments/33204/53254/20210318-IR2%40EIC-SVT.pdf
@@ -17,8 +16,8 @@
 
   <define>
 
-    <constant name="TrackerBarrelSpaceFrame_width"   value="40.0*mm"/>
-    <constant name="TrackerBarrelSpaceFrame_height"  value="sqrt(3.0)*32.0*mm/2.0"/>
+    <constant name="TrackerBarrelSpaceFrame_width"   value="4.0*cm"/>
+    <constant name="TrackerBarrelSpaceFrame_height"  value="2.5*cm"/>
     <constant name="TrackerSensor_thickness"         value="0.03*mm"/>
     <constant name="TrackerBarrel_thickness"         value="0.55/100*9.37*cm"/>
     <constant name="TrackerBarrelService_thickness"  value="TrackerBarrel_thickness-TrackerSensor_thickness"/>
diff --git a/compact/definitions.xml b/compact/definitions.xml
index 53af0d6ffd0029731462649ca71ee8fc4171e2f2..f1aa6ac6b4592bc86ab08cc4c22b720c44523163 100644
--- a/compact/definitions.xml
+++ b/compact/definitions.xml
@@ -9,12 +9,9 @@
     <constant name="inch" value="2.54*cm"/>
 
     <comment>
-      ------------
-      Detector IDs
-      ------------
+      ## Detector IDs
 
-      Note about ACTS tracking geometry construction
-      ----------------------------------------------
+      ### Note about ACTS tracking geometry construction
 
       The tracking surfaces need to be structured in a barrel + endcapP + endcapN where 
       endcapP/endcapN are the endcaps at positive/negative z values. 
@@ -35,17 +32,20 @@
 
 
     <comment> 
+
+      ### Allocated IDs 
+
       ===================
-      (1-9) Reserved IDs
+      #### (1-9) Reserved IDs
       ===================
-      Unused IDs: 1-9 
+      - Unused IDs: 1-9 
 
       ====================================
-      (10-24) Interaction region beamline 
+      #### (10-24) Interaction region beamline 
       ====================================
 
-      Beampipe ID : 10
-      Unused   IDs: 11-24
+      - Beampipe ID : 10
+      - Unused   IDs: 11-24
 
     </comment> 
     <constant name="BeamPipe_ID" value="10"/>
@@ -53,14 +53,14 @@
 
     <comment> 
       ===============================
-      (25-49) Silicon Vertex Tracker
+      #### (25-49) Silicon Vertex Tracker
       ===============================
-      SiVertex subsystem  ID: 25 
-      Layer 1 subassembly ID: 26
-      Layer 2 subassembly ID: 27
-      Layer 3 subassembly ID: 28
-      Layer 4 subassembly ID: 29
-      Layer 5 subassembly ID: 30
+       - SiVertex subsystem  ID: 25 
+       - Layer 1 subassembly ID: 26
+       - Layer 2 subassembly ID: 27
+       - Layer 3 subassembly ID: 28
+       - Layer 4 subassembly ID: 29
+       - Layer 5 subassembly ID: 30
     </comment>
     <constant name="VertexBarrel_ID" value="25"/>
     <constant name="VertexBarrelSubAssembly_ID" value="26"/>
@@ -79,7 +79,7 @@
 
     <comment>
       ===============================
-      (50-74) Silicon Tracker System
+      #### (50-74) Silicon Tracker System
       ===============================
 
       SiTracker subsystem  ID: 50
@@ -128,7 +128,7 @@
 
     <comment>
     ===================
-    (75-84) Barrel Tracker IDs
+    #### (75-84) Barrel Tracker IDs
     ===================
     MMTrackerBarrel ID: 75
     RWellTrackerBarrel ID: 76
@@ -141,7 +141,7 @@
 
     <comment>
     ===================
-    (85-99) Reserved IDs
+    #### (85-99) Reserved IDs
     ===================
 
     Unused IDs: 85-89 
@@ -149,7 +149,7 @@
     </comment>
     <comment> 
     ======================
-    (90-99) Barrel PID IDs
+    #### (90-99) Barrel PID IDs
     ======================
 
     DIRC subsystem       ID: 90
@@ -166,7 +166,7 @@
 
     <comment> 
       =====================================
-      (100-109) Electromagnetic Calorimeter
+      #### (100-109) Electromagnetic Calorimeter
       =====================================
 
       ECal     subsystem  ID:  100
@@ -188,7 +188,7 @@
 
     <comment> 
       =====================================
-      (110-119) Hadronic Calorimeter
+      #### (110-119) Hadronic Calorimeter
       =====================================
 
       HCal     subsystem  ID:  110
@@ -205,7 +205,7 @@
     <constant name="ci_HCAL_id"         value="200"/>
     <comment> 
       =====================================
-      (120-129) (near) Forward reserved
+      #### (120-129) (near) Forward reserved
       =====================================
 
       Forwardtracking ID: 120
@@ -224,7 +224,7 @@
 
     <comment> 
       =====================================
-      (130-139) Backward reserved
+      #### (130-139) Backward reserved
       =====================================
 
       Modular RICH ID: 130
@@ -237,7 +237,7 @@
 
     <comment> 
       =====================================
-      (140-149) Central Magnet
+      #### (140-149) Central Magnet
       =====================================
 
       Solenoid         ID: 140
@@ -253,7 +253,7 @@
 
     <comment> 
       =====================================
-      (150-169) Far Forward  Detectors
+      #### (150-169) Far Forward  Detectors
       =====================================
 
       Forward Roman Pot     ID: 150
@@ -267,34 +267,43 @@
     <constant name="B0Tracker_Station_2_ID"          value="151"/>
     <constant name="B0Tracker_Station_3_ID"          value="152"/>
     <constant name="B0Tracker_Station_4_ID"          value="153"/>
-    <constant name="ForwardRomanPot_Station_1_ID"   value="155"/>
-    <constant name="ForwardRomanPot_Station_2_ID"   value="156"/>
-    <constant name="ForwardRomanPotB_ID"   value="157"/>
-    <constant name="ForwardRomanPotC_ID"   value="158"/>
+    <constant name="ForwardRomanPot_Station_1_ID"    value="155"/>
+    <constant name="ForwardRomanPot_Station_2_ID"    value="156"/>
+    <constant name="ForwardRomanPotB_ID"             value="157"/>
+    <constant name="ForwardRomanPotC_ID"             value="158"/>
     <constant name="ForwardOffMTracker_station_1_ID" value="159"/>
     <constant name="ForwardOffMTracker_station_2_ID" value="160"/>
     <constant name="ForwardOffMTracker_station_3_ID" value="161"/>
     <constant name="ForwardOffMTracker_station_4_ID" value="162"/>
-    <constant name="ffi_ZDC_ECAL_ID"       value="163"/>
-    <constant name="ffi_ZDC_HCAL_ID"       value="164"/>
+    <constant name="ffi_ZDC_ECAL_ID"                 value="163"/>
+    <constant name="ffi_ZDC_HCAL_ID"                 value="164"/>
 
     <comment> 
       =====================================
-      (170-189) Forward Beamline Magnets
+      #### (170-189) Forward Beamline Magnets
       =====================================
     </comment>
 
     <comment> 
       =====================================
-      (190-199) Backward Beamline Magnets
+      #### (190-199) Backward Beamline Magnets
       =====================================
     </comment>
 
     <comment>
-      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-      Detector Definition Parameters 
-      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+      ------------------------------
+      ## Detector Definition Parameters 
+      ------------------------------
+
+      ## Constant naming convention
 
+      SubSystemNameFurtherDescriptor_quantity
+
+      Examples: 
+      - TrackerBarrelInside_length
+      - EcalEndcapP_rmin
+      - MRichFresnelLens_thickness
+       
       ## Parameter nomenclature
 
        - "rmin", "rmax", "thickness" all refer to the radial direction.
@@ -305,14 +314,12 @@
            also positive then negated when required. (Many endcap constructions are mirrored, 
            hence a postive value.)
        - We will try to keep the subsystem component name first and the parameter after an "_" (eg, EcalBarrel_length").
-           TODO: fix parameter naming to be uniform in the above convention.
 
     </comment>
 
     <comment>
-      ==========================
-      Solenoid Magnet Parameters
-      ==========================
+      ## Solenoid Magnet Parameters
+
       When changing here, also change the include file in athena.xml.
     </comment>
 
@@ -337,11 +344,12 @@
 
 
     <comment>
-      --------------------------------
-      Key Central Detector Parameters
-      --------------------------------
+      ## Key Central Detector Parameters
 
       These are needed here to compute the dependent parameters.
+
+
+      ### PID Detector Region Parameters
     </comment>
 
     <constant name="ForwardRICH_length"       value="1.1*m"/>
@@ -364,14 +372,12 @@
     <constant name="BarrelExtraPIDThickness"  value="14.0 * cm"/>
     <constant name="BarrelTRDThickness"  value="1.0 * cm"/>
     <constant name="BarrelTOFThickness"  value="1.0 * cm"/>
-
-
+    <constant name="BarrelPIDThickness"  value="BarrelExtraPIDThickness + BarrelTRDThickness + BarrelTOFThickness"/>
 
 
     <comment>
-      ============================
-      Tracking Detector Parameters
-      ============================
+      ## Tracking Detector Parameters
+
       Generic tracking space allocations
     </comment>
 
@@ -383,16 +389,15 @@
       -------------------------
       GEM Tracker Parameters
       -------------------------
+      TODO: this section should be in the gem xml file
     </comment>
     <constant name="ForwardTrackingGEMLength" value="ForwardTracking_length"/>
     <constant name="BackwardTrackingGEMLength" value="BackwardTracking_length"/>
 
     <comment>
-      -------------------------
-      Vertex Tracker Parameters
-      -------------------------
+      ## Vertex Tracker Parameters
     </comment>
-    <constant name="VertexTrackerBarrel_rmin"   value="Beampipe_rmax+5.0*mm"/>
+    <constant name="VertexTrackerBarrel_rmin"   value="Beampipe_rmax + 5.0*mm"/>
     <constant name="VertexTrackerBarrel_rmax"   value="200.0*mm"/>
     <constant name="VertexTrackerBarrel_length" value="300.0*mm"/>
     <constant name="VertexTrackerBarrel_zmax"   value="VertexTrackerBarrel_length/2.0"/>
@@ -400,38 +405,31 @@
     <constant name="VertexTrackerEndcapP_rmax"  value="VertexTrackerBarrel_rmax"/>
     <constant name="VertexTrackerEndcapN_rmax"  value="VertexTrackerBarrel_rmax"/>
 
-    <constant name="VertexTrackerEndcapP_rmin"  value="Beampipe_rmax+5.0*mm"/>
-    <constant name="VertexTrackerEndcapN_rmin"  value="Beampipe_rmax+5.0*mm"/>
+    <constant name="VertexTrackerEndcapP_rmin"  value="Beampipe_rmax + 5.0*mm"/>
+    <constant name="VertexTrackerEndcapN_rmin"  value="Beampipe_rmax + 5.0*mm"/>
 
-    <constant name="VertexTrackerEndcapP_zmax"  value="600.0*mm/2.0"/>
-    <constant name="VertexTrackerEndcapN_zmax"  value="600.0*mm/2.0"/>
+    <constant name="VertexTrackerEndcapP_zmax"  value="300.0*mm"/>
+    <constant name="VertexTrackerEndcapN_zmax"  value="300.0*mm"/>
 
     <comment>
-      Vertex Tracking Region
+      ### Vertex Tracking Region
     </comment>
     <constant name="VertexTrackingRegion_length" value="VertexTrackerEndcapP_zmax + VertexTrackerEndcapN_zmax "/>
-    <constant name="VertexTrackingRegion_zmin"   value="VertexTrackingRegion_length/2.0"/>
-    <constant name="VertexTrackingRegion_rmax"   value="VertexTrackingRegion_length/2.0"/>
-
-    <comment>Deprecated
-    name="VertexTrackerOuterRadius"       value="VertexTrackerBarrel_rmax"
-    name="VertexTrackerInnerRadius"       value="VertexTrackerBarrel_rmin"
-    name="VertexTrackerOuterBarrelLength" value="VertexTrackingRegion_length"
-    </comment>
+    <constant name="VertexTrackingRegion_zmax"   value="VertexTrackerEndcapP_zmax"/>
+    <constant name="VertexTrackingRegion_rmax"   value="VertexTrackerBarrel_rmax"/>
 
     <comment>
-      --------------------------
-      Tracker Detector Parameters
-      --------------------------
+      ### Tracker Detector Parameters
     </comment>
 
-    <constant name="TrackerBarrel_rmin"        value="VertexTrackerBarrel_rmax"/>
-    <comment> This is just inside of the potential uRWEL detector hugging the DIRC from the inside </comment>
-    <constant name="TrackerBarrel_rmax"        value="78*cm"/>
-    <constant name="TrackerBarrelOuter_length" value="2600.0*mm"/>
-    <constant name="TrackerBarrelInner_length" value="VertexTrackingRegion_length"/>
-    <constant name="TrackerBarrelInner_zmax"   value="TrackerBarrelInner_length/2.0"/>
-    <constant name="TrackerBarrelOuter_zmax"   value="TrackerBarrelOuter_length/2.0"/>
+    <constant name="TrackerBarrel_rmin"         value="VertexTrackingRegion_zmax"/>
+    <constant name="TrackerBarrel_thickness"    value="58.0*cm"/>
+    <constant name="TrackerBarrel_rmax"         value="TrackerBarrel_rmin + TrackerBarrel_thickness"/>
+
+    <constant name="TrackerBarrel_length"       value="VertexTrackingRegion_length + 2000.0*mm"/>
+    <constant name="TrackerBarrelInside_length" value="VertexTrackingRegion_length"/>
+    <constant name="TrackerBarrelInside_zmax"   value="TrackerBarrelInside_length/2.0"/>
+    <constant name="TrackerBarrel_zmax"    value="TrackerBarrel_length/2.0"/>
 
     <comment> Deprecated
     constant name="SiliconTrackerInnerRadius"       value="TrackerBarrel_rmin"
@@ -439,36 +437,34 @@
     constant name="SiliconTrackerOuterRadius"       value="TrackerBarrel_rmax"
     constant name="SiliconTrackerOuterBarrelLength" value="TrackerBarrelOuter_length"
     constant name="SiliconTrackerOuterBarrel_zmax"  value="TrackerBarrelOuter_length/2.0"
+    TrackerBarrelOuter_length  -> TrackerBarrel_length
+    TrackerBarrelInner_length  -> TrackerBarrelInside_length
     </comment>
 
     <comment>
-      --------------------------------------------
-      Central tracking and PID detector boundaries
-      --------------------------------------------
+      ## Central tracking and PID detector boundaries
 
       The central tracking detectors are assumed to be symmtric about the origin.
       
     </comment>
-    <constant name="BarrelTracking_length"       value="TrackerBarrelOuter_length"/>
+    <constant name="BarrelTracking_length"       value="TrackerBarrel_length"/>
     <constant name="BarrelTracking_rmax"         value="TrackerBarrel_rmax"/>
     <constant name="BarrelTracking_zmax"         value="BarrelTracking_length/2.0"/>
 
     <constant name="BarrelTrackingAndPID_length" value="BarrelTracking_length "/>
-    <constant name="BarrelTrackingAndPID_rmax"   value="BarrelTracking_rmax   + BarrelExtraPIDThickness"/>
+    <constant name="BarrelTrackingAndPID_rmax"   value="BarrelTracking_rmax   + BarrelPIDThickness"/>
 
     <constant name="CentralTracking_length"      value="BarrelTracking_length + ForwardTracking_length + BackwardTracking_length"/>
     <constant name="CentralTracking_rmax"        value="TrackerBarrel_rmax"/>
 
     <comment> These are used by ddsim </comment>
-    <constant name="tracker_region_rmax"   value="Solenoid_rmax/2.0"/>
-    <constant name="tracker_region_zmax"   value="Solenoid_length/2.0"/>
+    <constant name="tracker_region_rmax"   value="CentralTracking_rmax"/>
+    <constant name="tracker_region_zmax"   value="CentralTracking_length/2.0"/>
 
-    <comment>
-      ----------------------
-      Calorimeter Parameters
-      ----------------------
+  <documentation level="0">
+      ## Calorimeter Parameters
 
-       Note on paramaeterization 
+      ### Note on paramaeterization 
 
       The HCal Barrel is outside of the solenoid magnet.  However,
       there is an option to add some HCal barrel inside the magnet but this
@@ -477,12 +473,12 @@
       The space for the calorimeters inside the solenoid is assumed to be fixed by 
       the solenoid inner diameter/length and by the central tracking and PID outer diameter/length.
 
-       Endcaps
+      ### Endcaps
 
       The extra HCal endcap lengths are for offsetting the outside endcap surface (zmax) from the
       end of the solenoid coils.
 
-    </comment>
+  </documentation>
 
     <comment> these offesets could be implemented differently for clarity. </comment>
     <constant name="EcalEndcapPSolenoid_offset" value="800.0*mm" />
@@ -503,11 +499,11 @@
     <constant name="EcalEndcapP_zmin"           value="BarrelTracking_length/2.0 + ForwardTracking_length + ForwardPIDLength"/>
     <constant name="EcalEndcapN_zmin"           value="BarrelTracking_length/2.0 + BackwardTracking_length + BackwardPIDLength"/>
 
-    <constant name="BarrelLength"               value="TrackerBarrelOuter_length + ForwardPIDLength + BackwardPIDLength" />
+    <constant name="BarrelLength"               value="BarrelTrackingAndPID_length" />
     <constant name="Barrel_offset"              value="(EcalEndcapP_zmin-EcalEndcapN_zmin)/2.0" />
 
     <comment>
-      Endcaps
+      ### Ecal  Endcaps
     </comment>
 
     <constant name="EndcapPTotalCal_length"  value="(SolenoidYokeEndcapP_zmin + EcalEndcapPSolenoid_offset) - (EcalEndcapP_zmin)"/>
@@ -530,11 +526,9 @@
     <constant name="HcalEndcapN_rmin"                      value="EcalEndcapN_rmin"/>
 
     <comment>
-      -------------------------
-      EM Calorimeter Parameters
-      -------------------------
+      ## EM Calorimeter Parameters
 
-       ## Note about Calormieter parameterization.
+       ### Note about Calormieter parameterization.
       
        The logic goes like this: 
        1. The space for the calorimeter is fixed via parameterization above.
@@ -595,9 +589,7 @@
     <constant name="EcalBarrel_offset"          value="(CentralTracking_length - EcalBarrel_length)/2.0"/>
 
     <comment>
-      -------------------------------
-      Hadronic Calorimeter Parameters
-      -------------------------------
+      ## Hadronic Calorimeter Parameters
     </comment>
 
     <constant name="HcalEndcapP_length"   value="120.0*cm"/>
@@ -613,140 +605,27 @@
     <constant name="HcalEndcapN_zmin"          value="max(EcalEndcapN_zmin + EcalEndcapN_length, Solenoid_length / 2.0 - Solenoid_offset) "/>
     <constant name="HcalBarrelLength"          value="HcalEndcapP_zmin + HcalEndcapN_zmin "/>
 
-    <comment> Material Thickness </comment>
+    <comment> #### Material Thickness </comment>
     <constant name="HcalSteelThickness"       value="1.89 * cm"/>
     <constant name="HcalPyrexThickness"       value="1.10 * mm"/>
     <constant name="HcalRPCGasThickness"      value="1.20 * mm"/>
     <constant name="HcalG10Thickness"         value="3.00 * mm"/>
     <constant name="HcalAirThickness"         value="1.60 * mm"/>
 
-    <comment> Single Layer Thickness (for both barrel and endcap)</comment>
+    <comment> - Single Layer Thickness (for both barrel and endcap)</comment>
     <constant name="HcalSingleLayerThickness"
       value="HcalSteelThickness + (2 * HcalPyrexThickness) + HcalRPCGasThickness + HcalG10Thickness + HcalAirThickness"/>
 
-    <comment> Hcal Barrel Layers and computed Thickness </comment>
+    <comment> - Hcal Barrel Layers and computed Thickness </comment>
     <constant name="HcalBarrelLayer_NRepeat" value="floor(HcalBarrelAvailThickness / HcalSingleLayerThickness)"/>
     <constant name="HcalBarrelThickness" value="HcalBarrelLayer_NRepeat * HcalSingleLayerThickness"/>
 
-    <comment> Hcal Endcap Layers and computed Thickness </comment>
+    <comment> - Hcal Endcap Layers and computed Thickness </comment>
     <constant name="HcalEndcapPLayer_NRepeat" value="floor(HcalEndcapP_length / HcalSingleLayerThickness)"/>
     <constant name="HcalEndcapNLayer_NRepeat" value="floor(HcalEndcapN_length / HcalSingleLayerThickness)"/>
     <constant name="HcalEndcapP_thickness" value="HcalEndcapPLayer_NRepeat * HcalSingleLayerThickness"/>
     <constant name="HcalEndcapN_thickness" value="HcalEndcapNLayer_NRepeat * HcalSingleLayerThickness"/>
 
-    <comment>
-      ----------------------
-      DIRC parameters
-      ----------------------
-    </comment>
-    <constant name="DIRCLength"           value="CentralTracking_length + BackwardPIDLength"/>
-    <constant name="DIRCOffset"           value="(CentralTracking_length - DIRCLength)/2.0"/>
-    <constant name="DIRCRadius"           value="83.65*cm"/>
-    <constant name="DIRCBars_DX"          value="1.7*cm"/>
-    <constant name="DIRCBars_DY"          value="42.*cm"/>
-    <constant name="DIRCNum"              value="2*Pi*DIRCRadius/DIRCBars_DY"/>
-    <constant name="DIRCDPhi"             value="DIRCBars_DY/DIRCRadius"/>
-
-
-    <comment>
-      ----------------------
-      Zero Degree Parameters
-      ----------------------
-    </comment>
-    <comment> BeamLines: IP6 </comment>
-    <constant name="ffi_ZDC_z_pos"         value="3800.0 * cm"/>
-    <constant name="ffi_ZDC_x_pos"         value="ffi_ZDC_z_pos * ionCrossingAngle"/> <comment> original value="90.0 * cm" </comment>
-    <constant name="ffi_ZDC_y_pos"         value="0.0 * cm"/>
-    <constant name="ffi_ZDC_rotateX_angle" value="0.0 * rad"/>
-    <constant name="ffi_ZDC_rotateY_angle" value="-0.0125 * rad"/>
-    <constant name="ffi_ZDC_rotateZ_angle" value="0.0 * rad"/>
-
-    <comment> BeamLines: IP8 </comment>
-    <!--
-    <constant name="ffi_ZDC_x_pos"     value="127.0 * cm"/>
-    <constant name="ffi_ZDC_y_pos"         value="0.0 * cm"/>
-    <constant name="ffi_ZDC_z_pos"         value="3600.0 * cm"/>
-    <constant name="ffi_ZDC_rotateX_angle" value="0.0 * rad"/>
-    <constant name="ffi_ZDC_rotateY_angle" value="-0.025 * rad"/>
-    <constant name="ffi_ZDC_rotateZ_angle" value="0.0 * rad"/>
-    -->
-
-    <comment> Global parameters </comment>
-    <constant name="ffi_ZDC_width"             value="60.0 * cm"/>
-    <constant name="ffi_ZDC_thickness"         value="200.0 * cm"/>
-    <comment> Original Global parameters </comment>     
-    <!--
-    <constant name="ffi_ZDC_thickness"         value="250.0 * cm"/>
-    -->     
-    <constant name="ffi_ZDC_ECAL_thickness"    value="30.0 * cm"/>
-    <constant name="ffi_ZDC_ECAL_inner_radius" value="0.0 * cm"/>
-    <constant name="ffi_ZDC_ECAL_outer_radius" value="60.0 * cm"/>
-    <constant name="ffi_ZDC_ECAL_width"        value="5.0 * cm"/>
-    <constant name="ffi_ZDC_ECAL_gap"          value="5.0 * mm"/>
-    <constant name="ffi_ZDC_ECAL_ntower"       value="10"/>
-    <comment> Original number of towers parameter  </comment> 
-    <!--
-    <constant name="ffi_ZDC_ECAL_ntower"       value="20"/>
-    -->
->>>>>>> 8c0ea6ff318b7d28c2c1554f70fe003a2949c34b
-
-    <comment>
-      -----------------------
-      Gaseous RICH Parameters
-      -----------------------
-    </comment>
-
-
-    <comment>
-      --------------------------
-      Forward Tracker Parameters
-      --------------------------
-    </comment>
-
-    <comment>
-      --------------------------
-      Forward ECal Parameters
-      --------------------------
-    </comment>
-
-    <comment>
-      --------------------------
-      Forward HCal Parameters
-      --------------------------
-    </comment>
-
-
-
-
-    <comment>
-      --------------------------
-      Central Ion HCal Parameters
-      --------------------------
-    </comment>
-    <constant name="ci_HCAL_rin"     value="90 * cm"/><comment> Orginally 0, changed to not overlap solenoid </comment>
-    <constant name="ci_HCAL_rout"    value="300 * cm"/>
-    <constant name="ci_HCAL_sizez"   value="160 * cm"/>
-    <constant name="ci_HCAL_shiftz"  value="5 * cm"/>
-    <constant name="ci_HCAL_posz"    value="0 * cm"/>
-   
-    <constant name="ci_HCAL_nlayers"       value="20"/>
-    <constant name="ci_HCAL_lay_rin"       value="ci_HCAL_rin"/> <comment> Orginally 80cm, changed to not overlap solenoid </comment>
-    <constant name="ci_HCAL_lay_rout"      value="ci_HCAL_rout - 1 * cm"/>
-    <constant name="ci_HCAL_lay_thickness" value="2* cm"/>
-    <constant name="ci_HCAL_lay_gapz"      value="2* cm"/>
-
-    <comment>
-      --------------------------
-      Central Ion GEM Parameters
-      --------------------------
-    </comment>
-    <constant name="ci_GEM_rin"     value="10 * cm"/>
-    <constant name="ci_GEM_rout"    value="95 * cm"/>
-    <constant name="ci_GEM_sizez"   value="30 * cm"/>
-    <constant name="ci_GEM_shiftz"  value="0 * cm"/>
-    <constant name="ci_GEM_posz"    value="0 * cm"/>
-    <constant name="ci_GEM_posx"    value="0 * cm"/>
-    <constant name="ci_GEM_nlayers" value="8"/>
 
   </define>
 
diff --git a/compact/dirc.xml b/compact/dirc.xml
new file mode 100644
index 0000000000000000000000000000000000000000..42deb8241349a0eba6be5d287d87cf10976c5b3a
--- /dev/null
+++ b/compact/dirc.xml
@@ -0,0 +1,66 @@
+<lccdd>
+
+  <comment>Initial implementation of the Athena Detector
+           DIRC (ported from g4e). Currently constructed around
+           a fixed radius of 83.65cm (between the uRWEL layers).
+           TODO: this needs to be properly parameterized.
+  </comment>
+
+  <define>
+    <comment>
+      ### DIRC parameters
+    </comment>
+    <constant name="DIRC_length"           value="CentralTracking_length + BackwardPIDLength"/>
+    <constant name="DIRC_offset"           value="(CentralTracking_length - DIRC_length)/2.0"/>
+
+    <constant name="DIRC_rmin"           value="83.65*cm"/>
+    <constant name="DIRCBars_DX"          value="1.7*cm"/>
+    <constant name="DIRCBars_DY"          value="42.*cm"/>
+    <constant name="DIRCNum"              value="2*Pi*DIRC_rmin/DIRCBars_DY"/>
+    <constant name="DIRCDPhi"             value="DIRCBars_DY/DIRC_rmin"/>
+
+    <constant name="DIRC_rmin"              value="82.00*cm"/>
+    <constant name="DIRC_rmax"              value="88.00*cm"/>
+  </define>
+
+  <limits>
+  </limits>
+
+  <regions>
+  </regions>
+
+  <display>
+  </display>
+
+  <detectors>
+    <detector id="BarrelDIRC_ID" name="DIRC" type="DIRC" readout="DIRCHits" vis="AnlTeal">
+      <dimensions rmin="DIRC_rmin" rmax="DIRC_rmax" length="DIRC_length" radius="DIRC_rmin" dx="DIRCBars_DX" dy="DIRCBars_DY" number="DIRCNum" deltaphi="DIRCDPhi"/>
+      <position x="0" y="0" z="DIRC_offset"/>
+      <module name="Module0"  R="DIRC_rmin" phi="0*DIRCDPhi"  />
+      <module name="Module1"  R="DIRC_rmin" phi="1*DIRCDPhi"  />
+      <module name="Module2"  R="DIRC_rmin" phi="2*DIRCDPhi"  />
+      <module name="Module3"  R="DIRC_rmin" phi="3*DIRCDPhi"  />
+      <module name="Module4"  R="DIRC_rmin" phi="4*DIRCDPhi"  />
+      <module name="Module5"  R="DIRC_rmin" phi="5*DIRCDPhi"  />
+      <module name="Module6"  R="DIRC_rmin" phi="6*DIRCDPhi"  />
+      <module name="Module7"  R="DIRC_rmin" phi="7*DIRCDPhi"  />
+      <module name="Module8"  R="DIRC_rmin" phi="8*DIRCDPhi"  />
+      <module name="Module9"  R="DIRC_rmin" phi="9*DIRCDPhi"  />
+      <module name="Module10" R="DIRC_rmin" phi="10*DIRCDPhi" />
+      <module name="Module11" R="DIRC_rmin" phi="11*DIRCDPhi" />
+    </detector>
+  </detectors>
+
+  <readouts>
+    <readout name="DIRCHits">
+      <segmentation type="CartesianGridXY" grid_size_x="3.0*mm" grid_size_y="3.0*mm" />
+      <id>system:8,barrel:3,module:12,x:32:-16,y:-16</id>
+    </readout>
+  </readouts>
+
+  <plugins>
+  </plugins>
+
+  <fields>
+  </fields>
+</lccdd>
diff --git a/compact/materials.xml b/compact/materials.xml
index 47eaeb078819bf85964007834d1a811ebeeee0c3..494cebffbeac02540533c708f9b1a5aa9dfeebf7 100644
--- a/compact/materials.xml
+++ b/compact/materials.xml
@@ -100,6 +100,10 @@
     <fraction n="0.0278" ref="SodiumOxide"/>
     <fraction n="0.0050" ref="ArsenicOxide"/>
   </material>
+  <documentation level="3">
+    #### Carbon fiber
+      a level 3 doc
+  </documentation>
   <material name="CarbonFiber">
     <D type="density" value="1.5" unit="g/cm3"/>
     <fraction n="0.65" ref="C"/>
diff --git a/compact/optical_materials.xml b/compact/optical_materials.xml
index fec77a672343420030f6f54e3a071a12fb63ab4e..75daac07776c820bc5965bea763a7ecafa6957ba 100644
--- a/compact/optical_materials.xml
+++ b/compact/optical_materials.xml
@@ -88,15 +88,11 @@
     </material>
   </materials>
   <surfaces>
-    <comment> For the values of "finish", model and type, see TGeoOpticalSurface.h !
-    </comment>
-
     <opticalsurface finish="polished" model="glisur" name="MirrorOpticalSurface" type="dielectric_metal" value="0">
       <property name="REFLECTIVITY" ref="REFLECTIVITY_mirror"/>
       <property name="RINDEX"       coldim="2" values="1.034*eV  1.5   4.136*eV  1.5"/>
       <!--<property name="EFFICIENCY"   ref="EFFICIENCY0x8b77240"/>-->
     </opticalsurface>
-
     <!--
     <opticalsurface name="mirror2" finish="polished" model="glisur" type="dielectric_dielectric">
       <property name="REFLECTIVITY"            coldim="2" values="1.034*eV  0.8   4.136*eV  0.9"/>
diff --git a/src/cb_DIRC.cpp b/src/DIRC_geo.cpp
similarity index 98%
rename from src/cb_DIRC.cpp
rename to src/DIRC_geo.cpp
index 9a68f093d3da212b14649859dfed5bb489feeac4..160b022a9b37c3ed8b68d667cda1dcc68cdbcf17 100644
--- a/src/cb_DIRC.cpp
+++ b/src/DIRC_geo.cpp
@@ -68,4 +68,4 @@ static Ref_t createDetector(Detector& desc, xml_h e, SensitiveDetector sens)
   return det;
 }
 
-DECLARE_DETELEMENT(cb_DIRC, createDetector)
+DECLARE_DETELEMENT(DIRC, createDetector)