diff --git a/athena.xml b/athena.xml
index e3eb0461ade4cc2169782caa1d184216f264debf..453be3db789b81799e86eed31b3a7ecf2f16199e 100644
--- a/athena.xml
+++ b/athena.xml
@@ -268,10 +268,9 @@
 
   <include ref="compact/tof_barrel.xml"/>
 
-  <!--
-    <include ref="compact/rwell_tracker_barrel.xml"/>
-  -->
+  <!--include ref="compact/rwell_tracker_barrel.xml"-->
   <include ref="compact/cb_DIRC.xml"/>
+  
 
   <!-- When changing magnet, also select dimensions in definitions.xml. -->
   <include ref="compact/solenoid.xml"/>
diff --git a/compact/cb_DIRC.xml b/compact/cb_DIRC.xml
index c525c774f36a59ea307b244ff54bce49b779b38b..5ff2d2be27bff0bc476fbf82f7101c2e98c94fbb 100644
--- a/compact/cb_DIRC.xml
+++ b/compact/cb_DIRC.xml
@@ -23,8 +23,20 @@
 
   <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"/>
+      <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>
 
diff --git a/compact/definitions.xml b/compact/definitions.xml
index eb58560d38844bbd7d56d689a572db51d08f60c9..6b55ea70b5622ec4da4e51b7e9841c86fdf13a72 100644
--- a/compact/definitions.xml
+++ b/compact/definitions.xml
@@ -632,6 +632,54 @@
     </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>
       -----------------------
diff --git a/src/cb_DIRC.cpp b/src/cb_DIRC.cpp
index 41932ef80615b869914d52776232812b701059cd..9a68f093d3da212b14649859dfed5bb489feeac4 100644
--- a/src/cb_DIRC.cpp
+++ b/src/cb_DIRC.cpp
@@ -4,6 +4,7 @@
 #include "DDRec/DetectorData.h"
 #include "DDRec/Surface.h"
 #include <XML/Helper.h>
+#include "XML/Layering.h"
 //////////////////////////////////
 // Central Barrel DIRC
 //////////////////////////////////
@@ -24,6 +25,7 @@ static Ref_t createDetector(Detector& desc, xml_h e, SensitiveDetector sens)
   double    SizeZ = dim.length();
 
   Material Vacuum = desc.material("Vacuum");
+  Material mat = desc.material("Quartz");
   Tube     cb_DIRC_Barrel_GVol_Solid(RIn, ROut, SizeZ / 2.0, 0., 360.0 * deg);
   Volume   detVol("cb_DIRC_GVol_Solid_Logic", cb_DIRC_Barrel_GVol_Solid, Vacuum);
   detVol.setVisAttributes(desc.invisible());
@@ -40,15 +42,12 @@ static Ref_t createDetector(Detector& desc, xml_h e, SensitiveDetector sens)
   // DIRC Bars
   //////////////////
 
-  double dR = 83.65 * cm;
-
-  double cb_DIRC_bars_DZ = SizeZ;
-  double cb_DIRC_bars_DY = 42. * cm;
-  double cb_DIRC_bars_DX = 1.7 * cm;
-  double myL             = 2 * M_PI * dR;
-  int    NUM             = myL / cb_DIRC_bars_DY;
-
-  double cb_DIRC_bars_deltaphi = 2 * 3.1415926 / NUM;
+  double dR                = dim.radius();
+  double cb_DIRC_bars_DZ   = SizeZ; 
+  double cb_DIRC_bars_DY   = dim.dy();
+  double cb_DIRC_bars_DX   = dim.dx();
+  int    NUM               = dim.number();
+  double cb_DIRC_bars_DPhi = dim.deltaphi();
 
   Material cb_DIRC_bars_Material = desc.material("Quartz");
 
@@ -58,15 +57,14 @@ static Ref_t createDetector(Detector& desc, xml_h e, SensitiveDetector sens)
   sens.setType("photoncounter");
   cb_DIRC_bars_Logic.setSensitiveDetector(sens);
 
-  for (int ia = 0; ia < NUM; ia++) {
-    double phi = (ia * (cb_DIRC_bars_deltaphi));
-    double x   = -dR * cos(phi);
-    double y   = -dR * sin(phi);
-
-    Transform3D  tr(RotationZ(cb_DIRC_bars_deltaphi * ia), Position(x, y, 0));
+  int count = 0;
+  for (xml_coll_t mod(x_det, _U(module)); mod; ++mod) {
+    xml_comp_t x_mod = mod;
+    Transform3D  tr(RotationZ(x_mod.phi()), Position(-x_mod.R() * cos(x_mod.phi()), -x_mod.R() * sin(x_mod.phi()), 0));
     PlacedVolume barPV = detVol.placeVolume(cb_DIRC_bars_Logic, tr);
-    barPV.addPhysVolID("module", ia);
+    barPV.addPhysVolID("module", count++);
   }
+  
   return det;
 }