diff --git a/src/IP6BeamPipe.cpp b/src/IP6BeamPipe.cpp
index 9c5c4d7a86e3725eae289062d51130c3b4c90c4f..5aafd4daedd45927f1867f48a1b6f4524f89ae4e 100644
--- a/src/IP6BeamPipe.cpp
+++ b/src/IP6BeamPipe.cpp
@@ -2,7 +2,7 @@
 //
 //      <detector name ="DetName" type="Beampipe" >
 //      <layer id="#(int)" inner_r="#(double)" outer_z="#(double)" >
-//      <slice material="string" thickness="#(double)" >
+//      <slice material="string" thickness="#(double)" >         
 //      </layer>
 //      </detector>
 //==========================================================================
@@ -14,7 +14,7 @@
 using namespace std;
 using namespace dd4hep;
 
-/** \addtogroup beamline Beamline Instrumentation
+/** \addtogroup beamline Beamline Instrumentation 
  */
 
 /** \addtogroup IRChamber Interaction Region Vacuum Chamber.
@@ -28,18 +28,18 @@ using namespace dd4hep;
  * \endcode
  *
  */
-static Ref_t create_detector(Detector& det, xml_h e, SensitiveDetector sens) {
+static Ref_t create_detector(Detector& det, xml_h e, SensitiveDetector sens)  {
 
   using namespace ROOT::Math;
-  xml_det_t x_det = e;
-  string det_name = x_det.nameStr();
-  Material air = det.air();
-  DetElement sdet(det_name, x_det.id());
-  Assembly assembly(det_name + "_assembly");
-  Material m_Cu = det.material("Copper");
-  Material m_Al = det.material("Aluminum");
-  Material m_Be = det.material("Beryllium");
-  string vis_name = x_det.visStr();
+  xml_det_t  x_det     = e;
+  string     det_name  = x_det.nameStr();
+  Material   air       = det.air();
+  DetElement sdet        (det_name,x_det.id());
+  Assembly   assembly    (det_name+"_assembly");
+  Material   m_Cu    = det.material("Copper");
+  Material   m_Al    = det.material("Aluminum");
+  Material   m_Be    = det.material("Beryllium");
+  string     vis_name  = x_det.visStr();
 
   int n = 0;
 
@@ -48,181 +48,138 @@ static Ref_t create_detector(Detector& det, xml_h e, SensitiveDetector sens) {
   xml::Component downstream_c = x_det.child(_Unicode(downstream_pipe));
 
   // IP
-  double IP_beampipe_OD = IP_pipe_c.attr<double>(_Unicode(OD));
-  double IP_beampipe_thickness =
-      IP_pipe_c.attr<double>(_Unicode(wall_thickness));
-  double IP_beampipe_ID = IP_beampipe_OD - IP_beampipe_thickness;
-  double - crossing_angle = IP_pipe_c.attr<double>(_Unicode(-crossing_angle));
+  double IP_beampipe_OD        = IP_pipe_c.attr<double>(_Unicode(OD));
+  double IP_beampipe_thickness = IP_pipe_c.attr<double>(_Unicode(wall_thickness));
+  double IP_beampipe_ID        = IP_beampipe_OD - IP_beampipe_thickness;
+  double crossing_angle        = IP_pipe_c.attr<double>(_Unicode(crossing_angle));
 
   // upstream parameters
-  double upstream_straight_length =
-      upstream_c.attr<double>(_Unicode(straight_length));
-  ;
-  double upstream_total_length = upstream_c.attr<double>(_Unicode(length));
-  double upstream_conic_length =
-      upstream_total_length - upstream_straight_length;
+  double upstream_straight_length  = upstream_c.attr<double>(_Unicode(straight_length));;
+  double upstream_total_length     = upstream_c.attr<double>(_Unicode(length));
+  double upstream_conic_length     = upstream_total_length - upstream_straight_length;
   double upstream_beampipe_exit_OD = 229.96 * mm;
-  double upstream_beampipe_exit_ID =
-      upstream_beampipe_exit_OD - IP_beampipe_thickness;
-  double upstream_epipe_thickness = 4.0 * mm;
+  double upstream_beampipe_exit_ID = upstream_beampipe_exit_OD - IP_beampipe_thickness;
+  double upstream_epipe_thickness  = 4.0*mm;
 
   // downstream parameters
-  double downstream_straight_length =
-      downstream_c.attr<double>(_Unicode(straight_length));
-  double downstream_taper_length = 310.0 * mm;
-  double downstream_total_length = downstream_c.attr<double>(_Unicode(length));
-  double downstream_conic_length =
-      downstream_total_length - downstream_straight_length;
-  double downstream_cone_rmax = 110.00 * mm / 2.0;
-  double downstream_epipe_thickness = 4.0 * mm; // just a guess
+  double downstream_straight_length = downstream_c.attr<double>(_Unicode(straight_length));
+  double downstream_taper_length    = 310.0 * mm;
+  double downstream_total_length    = downstream_c.attr<double>(_Unicode(length));
+  double downstream_conic_length    = downstream_total_length - downstream_straight_length ;
+  double downstream_cone_rmax       = 110.00*mm/2.0;
+  double downstream_epipe_thickness  = 4.0*mm; // just a guess
   double downstream_beampipe_exit_OD = 62.0 * mm;
-  double downstream_beampipe_exit_ID =
-      downstream_beampipe_exit_OD - downstream_epipe_thickness;
-  double downstream_hpipe_OD = IP_beampipe_ID / 2; // just a guess
-  double downstream_hpipe_thickness = 4.0 * mm;    // just a guess
+  double downstream_beampipe_exit_ID = downstream_beampipe_exit_OD - downstream_epipe_thickness;
+  double downstream_hpipe_OD         = IP_beampipe_ID/2; // just a guess
+  double downstream_hpipe_thickness  = 4.0*mm; // just a guess
+
+  double upstream_delta_r   = upstream_conic_length*std::tan(crossing_angle/2.0);
+  double downstream_delta_r = (downstream_conic_length+downstream_straight_length)*std::tan(crossing_angle);
 
-  double upstream_delta_r =
-      upstream_conic_length * std::tan(-crossing_angle / 2.0);
-  double downstream_delta_r =
-      (downstream_conic_length + downstream_straight_length) *
-      std::tan(-crossing_angle);
 
   // -----------------------------
   // IP beampipe
-  Tube downstream_IP_tube(IP_beampipe_ID / 2.0, IP_beampipe_OD / 2.0,
-                          downstream_straight_length / 2.0);
-  Tube downstream_IP_vacuum(0.0, IP_beampipe_ID / 2.0,
-                            downstream_straight_length / 2.0);
-  Tube upstream_IP_tube(IP_beampipe_ID / 2.0, IP_beampipe_OD / 2.0,
-                        upstream_straight_length / 2.0);
-  Tube upstream_IP_vacuum(0.0, IP_beampipe_OD / 2.0,
-                          upstream_straight_length / 2.0);
+  Tube downstream_IP_tube(IP_beampipe_ID/2.0, IP_beampipe_OD/2.0, downstream_straight_length/2.0);
+  Tube downstream_IP_vacuum(0.0, IP_beampipe_ID/2.0, downstream_straight_length/2.0);
+  Tube upstream_IP_tube(IP_beampipe_ID/2.0, IP_beampipe_OD/2.0, upstream_straight_length/2.0);
+  Tube upstream_IP_vacuum(0.0, IP_beampipe_OD/2.0, upstream_straight_length/2.0);
 
   Volume v_upstream_IP_tube("v_upstream_IP_tube", upstream_IP_tube, m_Be);
   Volume v_downstream_IP_tube("v_downstream_IP_tube", downstream_IP_tube, m_Be);
 
-  // v_upstream_IP_tube.setVisAttributes(det,"GrayVis");
-  // v_downstream_IP_tube.setVisAttributes(det,"RedVis");
-  sdet.setAttributes(det, v_upstream_IP_tube, x_det.regionStr(),
-                     x_det.limitsStr(), vis_name);
-  sdet.setAttributes(det, v_downstream_IP_tube, x_det.regionStr(),
-                     x_det.limitsStr(), vis_name);
+  //v_upstream_IP_tube.setVisAttributes(det,"GrayVis");
+  //v_downstream_IP_tube.setVisAttributes(det,"RedVis");
+  sdet.setAttributes(det, v_upstream_IP_tube  , x_det.regionStr(), x_det.limitsStr(), vis_name);
+  sdet.setAttributes(det, v_downstream_IP_tube, x_det.regionStr(), x_det.limitsStr(), vis_name);
 
-  auto pv_upstream_IP_tube = assembly.placeVolume(
-      v_upstream_IP_tube, Position(0, 0, -upstream_straight_length / 2.0));
+  auto pv_upstream_IP_tube = assembly.placeVolume( v_upstream_IP_tube, Position(0, 0, -upstream_straight_length / 2.0));
 
   auto pv_downstream_IP_tube = assembly.placeVolume(
       v_downstream_IP_tube, Position(0, 0, downstream_straight_length / 2.0));
 
   // -----------------------------
   // upstream
-  Tube upstream_electron_tube(
-      IP_beampipe_ID / 2.0 - upstream_epipe_thickness,
-      IP_beampipe_ID / 2.0 -
-          0.01 * upstream_epipe_thickness, // leave a gap 1% of pipe thickness
-      upstream_conic_length / 2.0);
-  Cone upstream_conic_section(
-      upstream_conic_length / 2.0, IP_beampipe_ID / 2.0, IP_beampipe_OD / 2.0,
-      IP_beampipe_ID / 2.0 + upstream_delta_r,
-      IP_beampipe_OD / 2.0 + upstream_delta_r + IP_beampipe_thickness);
-  Cone upstream_conic_section_vacuum(upstream_conic_length / 2.0, 0.0,
-                                     IP_beampipe_ID / 2.0, 0.0,
-                                     IP_beampipe_ID / 2.0 + upstream_delta_r);
-  Volume v_upstream_conic_section("v_upstream_conic_section",
-                                  upstream_conic_section, m_Be);
-  Volume v_upstream_electron_tube("v_upstream_electron_tube",
-                                  upstream_electron_tube, m_Be);
-  sdet.setAttributes(det, v_upstream_conic_section, x_det.regionStr(),
-                     x_det.limitsStr(), vis_name);
-  sdet.setAttributes(det, v_upstream_electron_tube, x_det.regionStr(),
-                     x_det.limitsStr(), vis_name);
-  // Volume v_upstream_conic_section_vacuum("v_upstream_conic_section_vacuum",
-  // upstream_electron_tube, m_Al);
-
-  // auto pv_upstream_conic_section = assembly.placeVolume(
+  Tube upstream_electron_tube(IP_beampipe_ID/2.0 - upstream_epipe_thickness,
+                              IP_beampipe_ID/2.0-0.01*upstream_epipe_thickness,  // leave a gap 1% of pipe thickness
+                              upstream_conic_length/2.0);
+  Cone upstream_conic_section(upstream_conic_length / 2.0,
+                              IP_beampipe_ID / 2.0, IP_beampipe_OD / 2.0,
+                              IP_beampipe_ID / 2.0 + upstream_delta_r,
+                              IP_beampipe_OD / 2.0+ upstream_delta_r  + IP_beampipe_thickness);
+  Cone upstream_conic_section_vacuum(upstream_conic_length / 2.0,
+                                     0.0, IP_beampipe_ID / 2.0,
+                                     0.0, IP_beampipe_ID / 2.0 + upstream_delta_r);
+  Volume v_upstream_conic_section("v_upstream_conic_section", upstream_conic_section, m_Be);
+  Volume v_upstream_electron_tube("v_upstream_electron_tube", upstream_electron_tube, m_Be);
+  sdet.setAttributes(det, v_upstream_conic_section, x_det.regionStr(), x_det.limitsStr(), vis_name);
+  sdet.setAttributes(det, v_upstream_electron_tube, x_det.regionStr(), x_det.limitsStr(), vis_name);
+  //Volume v_upstream_conic_section_vacuum("v_upstream_conic_section_vacuum", upstream_electron_tube, m_Al);
+
+  //auto pv_upstream_conic_section = assembly.placeVolume(
   //    v_upstream_conic_section,
   //    Transform3D(
-  //        Position(-upstream_delta_r/2.0,0, -upstream_straight_length -
-  //        upstream_conic_length / 2.0)) * RotationY(-crossing_angle / 2.0) *
-  //        RotationX(M_PI));
-  auto pv_upstream_electron_tube = assembly.placeVolume(
-      v_upstream_electron_tube,
-      Position(0, 0, -upstream_straight_length - upstream_conic_length / 2.0));
-  // DetElement de_upstream_conic_section(sdet,"de_upstream_conic_section",1);
-  // de_upstream_conic_section.setPlacement(pv_upstream_conic_section);
+  //        Position(-upstream_delta_r/2.0,0, -upstream_straight_length - upstream_conic_length / 2.0)) *
+  //        RotationY(crossing_angle / 2.0) * RotationX(M_PI));
+  auto pv_upstream_electron_tube =
+      assembly.placeVolume(v_upstream_electron_tube,
+                           Position(0, 0, -upstream_straight_length - upstream_conic_length / 2.0));
+  //DetElement de_upstream_conic_section(sdet,"de_upstream_conic_section",1);
+  //de_upstream_conic_section.setPlacement(pv_upstream_conic_section);
 
   // -----------------------------
   // downstream
-  Tube downstream_hadron_tube(
-      downstream_hpipe_OD / 2.0 - downstream_epipe_thickness,
-      downstream_hpipe_OD / 2.0, downstream_conic_length / 2.0);
-  Cone downstream_conic_section(
-      downstream_conic_length / 2.0, IP_beampipe_ID / 2.0, IP_beampipe_OD / 2.0,
-      downstream_cone_rmax, downstream_cone_rmax + downstream_epipe_thickness);
-  Cone downstream_taper_section(
-      downstream_taper_length / 2.0, downstream_cone_rmax,
-      downstream_cone_rmax + downstream_epipe_thickness,
-      downstream_beampipe_exit_ID / 2.0, downstream_beampipe_exit_OD / 2.0);
-
-  UnionSolid downstream_pipe_split0(
-      downstream_conic_section, downstream_hadron_tube,
-      Transform3D(Position(downstream_delta_r / 2.0, 0.0, 0.0)) *
-          RotationY(-crossing_angle));
+  Tube downstream_hadron_tube(downstream_hpipe_OD/2.0 - downstream_epipe_thickness,
+                                downstream_hpipe_OD/2.0, downstream_conic_length / 2.0);
+  Cone downstream_conic_section(downstream_conic_length / 2.0, IP_beampipe_ID / 2.0,
+                                IP_beampipe_OD / 2.0, downstream_cone_rmax,
+                                downstream_cone_rmax + downstream_epipe_thickness);
+  Cone downstream_taper_section(downstream_taper_length / 2.0, 
+                                  downstream_cone_rmax, downstream_cone_rmax + downstream_epipe_thickness,
+                                  downstream_beampipe_exit_ID/2.0, downstream_beampipe_exit_OD/2.0);
+
+  UnionSolid downstream_pipe_split0(downstream_conic_section, downstream_hadron_tube,
+                                    Transform3D(Position(downstream_delta_r / 2.0, 0.0, 0.0)) *
+                                    RotationY(crossing_angle));
 
   // Vacuum
-  Cone downstream_conic_section_vacuum(downstream_conic_length / 2.0, 0.0,
-                                       IP_beampipe_ID / 2.0, 0.0,
-                                       downstream_cone_rmax);
-  Tube downstream_hadron_vacuum(
-      0.0, downstream_hpipe_OD / 2.0 - downstream_epipe_thickness,
-      downstream_conic_length / 1.9);
-  UnionSolid downstream_pipe_vacuum_split0(
-      downstream_conic_section_vacuum, downstream_hadron_vacuum,
-      Transform3D(Position(downstream_delta_r / 2.0, 0.0, 0.0)) *
-          RotationY(-crossing_angle));
-  SubtractionSolid downstream_pipe_split1(downstream_pipe_split0,
+  Cone downstream_conic_section_vacuum(downstream_conic_length / 2.0, 
+                                       0.0, IP_beampipe_ID / 2.0,
+                                       0.0, downstream_cone_rmax);
+  Tube downstream_hadron_vacuum(0.0, downstream_hpipe_OD / 2.0 - downstream_epipe_thickness,
+                                downstream_conic_length / 1.9);
+  UnionSolid downstream_pipe_vacuum_split0(downstream_conic_section_vacuum, downstream_hadron_vacuum,
+                                           Transform3D(Position(downstream_delta_r / 2.0, 0.0, 0.0)) *
+                                           RotationY(crossing_angle));
+  SubtractionSolid downstream_pipe_split1(downstream_pipe_split0, 
                                           downstream_pipe_vacuum_split0);
-  Volume v_downstream_pipe_split1("v_downstream_pipe_split1",
-                                  downstream_pipe_split1, m_Be);
-  sdet.setAttributes(det, v_downstream_pipe_split1, x_det.regionStr(),
-                     x_det.limitsStr(), vis_name);
-  auto pv_downstream_pipe_split1 = assembly.placeVolume(
-      v_downstream_pipe_split1,
-      Position(0, 0,
-               downstream_straight_length + downstream_conic_length / 2.0));
-  Volume v_downstream_taper_section("v_downstream_taper_section",
-                                    downstream_taper_section, m_Be);
-  sdet.setAttributes(det, v_downstream_taper_section, x_det.regionStr(),
-                     x_det.limitsStr(), vis_name);
-  auto pv_downstream_taper_section = assembly.placeVolume(
-      v_downstream_taper_section,
-      Position(0, 0,
-               downstream_straight_length + downstream_conic_length +
-                   downstream_taper_length / 2.0));
-
-  // Volume v_downstream_conic_section("v_downstream_conic_section",
-  // downstream_conic_section, m_Al); Volume
-  // v_downstream_hadron_tube("v_downstream_hadron_tube",
-  // downstream_hadron_tube, m_Al); auto pv_downstream_hadron_tube =
-  // assembly.placeVolume(
+  Volume v_downstream_pipe_split1("v_downstream_pipe_split1", downstream_pipe_split1, m_Be);
+  sdet.setAttributes(det, v_downstream_pipe_split1, x_det.regionStr(), x_det.limitsStr(), vis_name);
+  auto pv_downstream_pipe_split1 = assembly.placeVolume(v_downstream_pipe_split1,
+                                                        Position(0, 0, 
+                                                                 downstream_straight_length + 
+                                                                 downstream_conic_length / 2.0));
+  Volume v_downstream_taper_section("v_downstream_taper_section", downstream_taper_section, m_Be);
+  sdet.setAttributes(det, v_downstream_taper_section, x_det.regionStr(), x_det.limitsStr(), vis_name);
+  auto   pv_downstream_taper_section = assembly.placeVolume(v_downstream_taper_section, Position(0, 0, downstream_straight_length + downstream_conic_length + downstream_taper_length / 2.0));
+
+  //Volume v_downstream_conic_section("v_downstream_conic_section", downstream_conic_section, m_Al);
+  //Volume v_downstream_hadron_tube("v_downstream_hadron_tube", downstream_hadron_tube, m_Al);
+  //auto pv_downstream_hadron_tube = assembly.placeVolume(
   //    v_downstream_hadron_tube,
   //    Transform3D(Position(downstream_delta_r / 2.0, 0,
-  //                         downstream_straight_length +
-  //                         downstream_conic_length / 2.0)) *
-  //        RotationY(-crossing_angle) );
+  //                         downstream_straight_length + downstream_conic_length / 2.0)) *
+  //        RotationY(crossing_angle) );
 
-  // auto pv_downstream_conic_section = assembly.placeVolume(
-  //    v_downstream_conic_section, Position(0, 0, downstream_straight_length +
-  //    downstream_conic_length / 2.0));
-  // DetElement
-  // de_downstream_conic_section(sdet,"de_downstream_conic_section",1);
-  // de_downstream_conic_section.setPlacement(pv_downstream_conic_section);
+  //auto pv_downstream_conic_section = assembly.placeVolume(
+  //    v_downstream_conic_section, Position(0, 0, downstream_straight_length + downstream_conic_length / 2.0));
+  //DetElement de_downstream_conic_section(sdet,"de_downstream_conic_section",1);
+  //de_downstream_conic_section.setPlacement(pv_downstream_conic_section);
 
   auto pv_assembly = det.pickMotherVolume(sdet).placeVolume(assembly);
-  pv_assembly.addPhysVolID("system", sdet.id()).addPhysVolID("barrel", 1);
+  pv_assembly.addPhysVolID("system",sdet.id()).addPhysVolID("barrel",1);
   sdet.setPlacement(pv_assembly);
-  assembly->GetShape()->ComputeBBox();
+  assembly->GetShape()->ComputeBBox() ;
   return sdet;
 }
 
-DECLARE_DETELEMENT(IP6BeamPipe, create_detector)
+DECLARE_DETELEMENT(IP6BeamPipe,create_detector)