diff --git a/ip6/B0_preshower.xml b/ip6/B0_preshower.xml
index 98ba38c9cbfcbbbb48660e25cf90bc20aca5f76a..c21691b68293014a301f93f809658343e13fa43e 100644
--- a/ip6/B0_preshower.xml
+++ b/ip6/B0_preshower.xml
@@ -5,14 +5,14 @@
     ###  B0 Tracker Parameters
     </comment>
     <constant name="B0Preshower_rotation" value="ionCrossingAngle"/>
-    <constant name="B0Preshower_Station_1_xpos" value="-0.15749922*m" />
+    <constant name="B0Preshower_Station_1_xpos" value="-0.17249922*m" />
 
     <constant name="B0Preshower_length" value="5.0*cm" />
     <comment> 
       where do these numbers come from?
     </comment>
-    <constant name="B0PreshowerCenter_xpos" value="-0.15749922*m" />
-    <constant name="B0PreshowerCenter_zpos" value="6.2*m" />
+    <constant name="B0PreshowerCenter_xpos" value="-0.17249922*m" />
+    <constant name="B0PreshowerCenter_zpos" value="6.7*m" />
 
     <comment>
       This angle is the angle subtended in phi for each trap segment.
diff --git a/ip6/B0_tracker.xml b/ip6/B0_tracker.xml
index fd081a7503449bd9897d39641e201ab7b2ceaeca..6721f1e566d68e1806350aa65ae659e528b3de53 100644
--- a/ip6/B0_tracker.xml
+++ b/ip6/B0_tracker.xml
@@ -12,8 +12,8 @@
     </comment>
     <constant name="B0Tracker_length"      value="60.0*cm"/>
     <constant name="B0Tracker_zoffset"     value="10.0*cm"/>
-    <constant name="B0TrackerCenter_zpos"  value="5.7*m"/>
-    <constant name="B0TrackerCenter_xpos"  value="-0.145001*m" />
+    <constant name="B0TrackerCenter_zpos"  value="6.2*m"/>
+    <constant name="B0TrackerCenter_xpos"  value="-0.16000052*m" />
     <!--constant name="B0Tracker_zpos"        value="B0PF_CenterPosition + B0PF_Length/2.0 - B0Tracker_length/2.0 + B0Tracker_zoffset"/-->
     <constant name="B0Tracker_zmin"        value="B0TrackerCenter_zpos - B0Tracker_length/2.0 "/>
     <constant name="B0Tracker_rotation"    value="ionCrossingAngle"/>
diff --git a/ip6/beampipe_hadron_B0.xml b/ip6/beampipe_hadron_B0.xml
index de5bffdb03191aaddb87ed9b7b333ba9e1ee8290..e5c90a38b00c70e0da511910810c83166ceb33d4 100644
--- a/ip6/beampipe_hadron_B0.xml
+++ b/ip6/beampipe_hadron_B0.xml
@@ -9,7 +9,7 @@
   <detectors>
 
     <detector id="BeamPipeB0_ID" name="BeamPipeB0" type="hadronDownstreamBeamPipe" vis="BeamPipeVis"> 
-      <position x="-0.150*m" y="0*m" z="5.9*m" />
+      <position x="-0.165*m" y="0*m" z="6.4*m" />
       <rotation x="0*rad" y="0*rad" z="0*rad" />
     </detector>
 
diff --git a/ip6/far_forward_detectors.xml b/ip6/far_forward_detectors.xml
index 62dde942dbdc74c05cdbfabf858a029f923ace27..112474e97e08d7e6f3c70bfa694ce2dea9f6f450 100644
--- a/ip6/far_forward_detectors.xml
+++ b/ip6/far_forward_detectors.xml
@@ -8,7 +8,7 @@
       Zero Degree Calorimeter General Parameters
       -------------------------------------------
     </comment>
-    <constant name="ffi_ZDC_z_pos"         value="3710.0 * cm"/>
+    <constant name="ffi_ZDC_z_pos"         value="3560.0 * cm"/> <!-- need to shift FORWARD toward IP to account for 50cm shift -->
     <constant name="ffi_ZDC_x_pos"         value="ffi_ZDC_z_pos * ionCrossingAngle"/>
     <constant name="ffi_ZDC_y_pos"         value="0.0 * cm"/>
     <constant name="ffi_ZDC_rotateX_angle" value="0.0 * rad"/>
diff --git a/ip6/far_forward_offM_tracker.xml b/ip6/far_forward_offM_tracker.xml
index 271b992b6ee30c97f31cc14b7e7351bc705ef3a4..de3ab4038f502cdada69909ea92d06a3fc02c749 100644
--- a/ip6/far_forward_offM_tracker.xml
+++ b/ip6/far_forward_offM_tracker.xml
@@ -19,7 +19,7 @@
       insideTrackingVolume="true"
       reflect="false"
       vis="AnlRed">
-      <position x="-755.0*mm" y="0" z="22000*mm"/>
+      <position x="-780.0*mm" y="0" z="22500*mm"/>
       <layer id="1" 
         vis="RedVis"
         x="10.0*cm" 
@@ -36,7 +36,7 @@
       insideTrackingVolume="true"
       reflect="false"
       vis="AnlRed">
-      <position x="-850.0*mm" y="0" z="24000*mm"/>
+      <position x="-870.0*mm" y="0" z="24500*mm"/>
       <layer id="1"
         vis="RedVis"
         x="10.0*cm"
diff --git a/ip6/ip6_defs.xml b/ip6/ip6_defs.xml
index f240430a5554a79ad30a7040873cfe3de5e013ea..99c35c886fe1670ef0adaf02659ece0003f1c552 100644
--- a/ip6/ip6_defs.xml
+++ b/ip6/ip6_defs.xml
@@ -25,31 +25,49 @@
     B1APF    0.600444   0.0    20.8159   0.1680    0.1680    0.4360   1.500   25.0   -2.700      0.000
     B2PF    1.522232   0.0    41.9092   0.2       0.2       0.5      5.76    25.0    5.94       0.000
 
+
+    Hadron magnets -- with BIG FLIP and 50cm shift
+
+    ##
+##   name    center_x center_y center_z rin(z-in) rin(z-out)  dout   length   angle      B      gradient
+##             [m]      [m]      [m]      [m]        [m]      [m]      [m]   [mrad]     [T]      [T/m]
+##
+   
+     B0PF    -0.145779265   0.0    6.400000000   0.2000    0.2000    0.5000   1.200   0.00     1.1840539      0.000
+    B0PFq    -0.145779265   0.0    6.400000000   0.2000    0.2000    0.5000   1.200   0.00     0.0000000      -8.12238283
+	B0APF    -0.210480535   0.0    8.198946015   0.0430    0.0430    0.1860   0.600   -25.0    3.4314469      0.000
+    Q1APF    -0.254342857   0.0    9.628296939   0.0560    0.0560    0.2120   1.460   -19.5    0.0000000    -72.608
+    Q1BPF    -0.312840809   0.0    11.56243847   0.0780    0.0780    0.2560   1.610   -15.0    0.0000000    -63.24525402
+     Q2PF    -0.407362293    0.0   14.66604545   0.1315    0.1315    0.3620   3.800   -14.8    0.0000000     36.88301623
+     B1PF    -0.503165042   0.0    18.56486896   0.1350    0.1350    0.3700   3.000   -34.0    3.4479890      0.000
+    B1APF    -0.612903791   0.0    21.31298439   0.1680    0.1680    0.4360   1.500   -25.0    2.7000000      0.000
+    B2APF    -1.491239596   0.0    40.74293743   0.2       0.2       0.5      4.4    -28.22    -4.7890142      0.000   
+
   </comment>
 
 <comment> All magnet values are input by hand and represent the implementation in EICRoot used for the Yellow Report.</comment>
 
-    <constant name="B0PF_GradientMax"  value="0.0*tesla/m"/>
+    <constant name="B0PF_GradientMax"  value="-8.12238283*tesla/m"/>
     <constant name="B0APF_GradientMax" value="0.0*tesla/m"/>
     <constant name="Q1APF_GradientMax" value="-72.608*tesla/m"/>
-    <constant name="Q1BPF_GradientMax" value="-66.180*tesla/m"/>
-    <constant name="Q2PF_GradientMax"  value="40.737*tesla/m"/>
+    <constant name="Q1BPF_GradientMax" value="-66.24525402*tesla/m"/>
+    <constant name="Q2PF_GradientMax"  value="36.88301623*tesla/m"/>
     <constant name="B1PF_GradientMax"  value="0.0*tesla/m"/>
     <constant name="B1APF_GradientMax" value="0.0*tesla/m"/>
     <constant name="B2PF_GradientMax"  value="0.0*tesla/m"/>
-    <constant name="Q0EF_GradientMax" value="-9.55*tesla/m"/>
-    <constant name="Q1EF_GradientMax"  value="4.363*tesla/m"/>
+    <constant name="Q0EF_GradientMax" value="-13.12887*tesla/m"/>
+    <constant name="Q1EF_GradientMax"  value="5.85089*tesla/m"/>
 
 	<!-- big flip - dipole fields change sign, quads stay the same -->
 
-    <constant name="B0PF_Bmax"  value="1.3*tesla"/>
-    <constant name="B0APF_Bmax" value="3.474*tesla"/>
+    <constant name="B0PF_Bmax"  value="1.1840539*tesla"/>
+    <constant name="B0APF_Bmax" value="3.4314469*tesla"/>
     <constant name="Q1APF_Bmax" value="0.0*tesla"/>
     <constant name="Q1BPF_Bmax" value="0.0*tesla"/>
     <constant name="Q2PF_Bmax"  value="0.0*tesla"/>
-    <constant name="B1PF_Bmax"  value="3.4*tesla"/>
+    <constant name="B1PF_Bmax"  value="3.447989*tesla"/>
     <constant name="B1APF_Bmax" value="2.7*tesla"/>
-    <constant name="B2PF_Bmax" value="-5.94*tesla"/>
+    <constant name="B2PF_Bmax" value="-4.7890142*tesla"/>
     <constant name="Q0EF_BMax" value="0.0*tesla"/>
     <constant name="Q1EF_BMax"  value="0.0*tesla"/>
 
@@ -77,29 +95,29 @@
     <constant name="Q2PF_RotationAngle"  value="-14.8*0.001*rad"/>
     <constant name="B1PF_RotationAngle"  value="-34.0*0.001*rad"/>
     <constant name="B1APF_RotationAngle" value="-25.0*0.001*rad"/>
-    <constant name="B2PF_RotationAngle" value="-25.0*0.001*rad"/>
+    <constant name="B2PF_RotationAngle" value="-28.22*0.001*rad"/>
     <constant name="Q0EF_RotationAngle" value="-0.0*rad"/>
     <constant name="Q1EF_RotationAngle"  value="-0.0*rad"/>
 
-    <constant name="B0PF_CenterPosition"  value="5.89913*m"/>
-    <constant name="B0APF_CenterPosition" value="7.69866*m"/>
-    <constant name="Q1APF_CenterPosition" value="9.22834*m"/>
-    <constant name="Q1BPF_CenterPosition" value="11.0629*m"/>
-    <constant name="Q2PF_CenterPosition"  value="14.1673*m"/>
-    <constant name="B1PF_CenterPosition"  value="18.0667*m"/>
-    <constant name="B1APF_CenterPosition" value="20.8159*m"/>
-    <constant name="B2PF_CenterPosition" value="41.9092*m"/>
-    <constant name="Q0EF_CenterPosition" value="5.2995*m"/>
-    <constant name="Q1EF_CenterPosition"  value="10.259*m"/>
-
-    <constant name="B0PF_XPosition"  value="-0.132497*m"/>
-    <constant name="B0APF_XPosition" value="-0.197995*m"/>
-    <constant name="Q1APF_XPosition" value="-0.244734*m"/>
-    <constant name="Q1BPF_XPosition" value="-0.300512*m"/>
-    <constant name="Q2PF_XPosition"  value="-0.39495*m"/>
-    <constant name="B1PF_XPosition"  value="-0.490747*m"/>
-    <constant name="B1APF_XPosition" value="-0.600444*m"/>
-    <constant name="B2PF_XPosition"  value="-1.522232*m"/>
+    <constant name="B0PF_CenterPosition"  value="6.4*m"/>
+    <constant name="B0APF_CenterPosition" value="8.198946015*m"/>
+    <constant name="Q1APF_CenterPosition" value="9.628296939*m"/>
+    <constant name="Q1BPF_CenterPosition" value="11.56243847*m"/>
+    <constant name="Q2PF_CenterPosition"  value="14.66604545*m"/>
+    <constant name="B1PF_CenterPosition"  value="18.56486896*m"/>
+    <constant name="B1APF_CenterPosition" value="21.31298439*m"/>
+    <constant name="B2PF_CenterPosition" value="40.74293743*m"/>
+    <constant name="Q0EF_CenterPosition" value="5.8*m"/>
+    <constant name="Q1EF_CenterPosition"  value="10.76*m"/>
+
+    <constant name="B0PF_XPosition"  value="-0.145779265*m"/>
+    <constant name="B0APF_XPosition" value="-0.210480535*m"/>
+    <constant name="Q1APF_XPosition" value="-0.254342857*m"/>
+    <constant name="Q1BPF_XPosition" value="-0.312840809*m"/>
+    <constant name="Q2PF_XPosition"  value="-0.407362293*m"/>
+    <constant name="B1PF_XPosition"  value="-0.503165042*m"/>
+    <constant name="B1APF_XPosition" value="-0.612903791*m"/>
+    <constant name="B2PF_XPosition"  value="-1.491239596*m"/>
     <constant name="Q0EF_XPosition" value="-0.0*m"/>
     <constant name="Q1EF_XPosition"  value="-0.0*m"/>
 
diff --git a/ip6/roman_pots_eRD24_design.xml b/ip6/roman_pots_eRD24_design.xml
index 7ef1ba39f671832e02f0fc5715627b8164488254..b571b7ad4a1fc7f904cb86a8de15f8aa69b40297 100644
--- a/ip6/roman_pots_eRD24_design.xml
+++ b/ip6/roman_pots_eRD24_design.xml
@@ -12,9 +12,9 @@
     <!-- Global "station" location, rotation, position information -->
     
     <constant name="ForwardRomanPotStation1_zpos" value="26.0*m"/>
-    <constant name="ForwardRomanPotStation1_xpos" value="-0.844877*m"/>
+    <constant name="ForwardRomanPotStation1_xpos" value="-0.832224*m"/>
 	<constant name="ForwardRomanPotStation2_zpos" value="28.0*m"/>
-    <constant name="ForwardRomanPotStation2_xpos" value="-0.935873*m"/>
+    <constant name="ForwardRomanPotStation2_xpos" value="-0.922032*m"/>
 
 	<constant name="ForwardRomanPotStation1_rotation" value="-0.047*rad"/>
     <constant name="ForwardRomanPotStation2_rotation" value="-0.047*rad"/>
diff --git a/src/hadronDownstreamBeamPipe.cpp b/src/hadronDownstreamBeamPipe.cpp
index 094e1c4cbefe9cc4f8008626190f7da72af9508f..2b23af12acc140e8fef948cea468630b5f21b9b6 100644
--- a/src/hadronDownstreamBeamPipe.cpp
+++ b/src/hadronDownstreamBeamPipe.cpp
@@ -49,7 +49,8 @@ static Ref_t create_detector(Detector& det, xml_h e, SensitiveDetector sens)  {
 
   /// hard-code defintion here, then refine and make more general
 
-  double drift_beam_pipe_angle = -0.0475492667;
+  double drift_beam_pipe_angle = -0.047666638;
+  //double zPosShift             = 50.0; //cm
 
   double b0_hadron_tube_inner_r = 2.9; // cm
   double b0_hadron_tube_outer_r = 3.1; //cm
@@ -57,7 +58,7 @@ static Ref_t create_detector(Detector& det, xml_h e, SensitiveDetector sens)  {
 
   double drift_hadron_section_1_inner_r = 19.5;
   double drift_hadron_section_1_outer_r = 20.5;
-  double drift_hadron_section_1_length  = 392.0; //393.4334363;
+  double drift_hadron_section_1_length  = 342.225466; //393.4334363;
 
   double drift_hadron_section_2_inner_r = 19.5;
   double drift_hadron_section_2_outer_r = 20.5;
@@ -67,11 +68,11 @@ static Ref_t create_detector(Detector& det, xml_h e, SensitiveDetector sens)  {
   double drift_hadron_section_3_outer_r_ent = 20.5;
   double drift_hadron_section_3_inner_r_ex  = 5.0;
   double drift_hadron_section_3_outer_r_ex  = 5.2;
-  double drift_hadron_section_3_length  = 250.0;
+  double drift_hadron_section_3_length  = 150.0;
 
   double drift_hadron_section_4_inner_r = 5.0;
   double drift_hadron_section_4_outer_r = 5.2;
-  double drift_hadron_section_4_length  = 900.0;
+  double drift_hadron_section_4_length  = 850.0;
 
   //This is the beam tube in the B0 magnet for the hadron beam
 
@@ -110,22 +111,25 @@ static Ref_t create_detector(Detector& det, xml_h e, SensitiveDetector sens)  {
   DetElement tube_de_1(sdet, "sector1_de", 1);
   tube_de_1.setPlacement(pv_b0_hadron_tube);
 
-  auto pv_drift_tube_section_1 = assembly.placeVolume( v_drift_tube_section_1, Transform3D(RotationY(drift_beam_pipe_angle), Position(-71.269416, 0.0, 2353.7))); //2353.06094)));
+  //first tube section - right after b1apf - has same size as RP chamber, but keeping separate.
+  auto pv_drift_tube_section_1 = assembly.placeVolume( v_drift_tube_section_1, Transform3D(RotationY(drift_beam_pipe_angle), Position(-73.23100294, 0.0, 2378.69291))); //2353.06094)));
   pv_drift_tube_section_1.addPhysVolID("sector", 1);
   DetElement tube_de_2(sdet, "sector2_de", 1);
   tube_de_2.setPlacement(pv_drift_tube_section_1);
   
-  auto pv_drift_tube_section_2 = assembly.placeVolume( v_drift_tube_section_2, Transform3D(RotationY(drift_beam_pipe_angle), Position(-87.74933, 0.0, 2699.38578)));
+  //Second section - RP scattering chamber -- keeping separate for now.
+  auto pv_drift_tube_section_2 = assembly.placeVolume( v_drift_tube_section_2, Transform3D(RotationY(drift_beam_pipe_angle), Position(-88.5315717, 0.0, 2699.440911)));
   pv_drift_tube_section_2.addPhysVolID("sector", 1);
   DetElement tube_de_3(sdet, "sector3_de", 1);
   tube_de_3.setPlacement(pv_drift_tube_section_2);
 
-  auto pv_drift_tube_section_3 = assembly.placeVolume( v_drift_tube_section_3, Transform3D(RotationY(drift_beam_pipe_angle), Position(-100.820452, 0.0, 2974.07496)));
+  //Third section -- tapered section acting as poor man's universal exit window.
+  auto pv_drift_tube_section_3 = assembly.placeVolume( v_drift_tube_section_3, Transform3D(RotationY(drift_beam_pipe_angle), Position(-99.25250431, 0.0, 2924.185347)));
   pv_drift_tube_section_3.addPhysVolID("sector", 1);
   DetElement tube_de_4(sdet, "sector4_de", 1);
   tube_de_4.setPlacement(pv_drift_tube_section_3);
 
-  auto pv_drift_tube_section_4 = assembly.placeVolume( v_drift_tube_section_4, Transform3D(RotationY(drift_beam_pipe_angle), Position(-128.150979, 0.0, 3548.42507)));
+  auto pv_drift_tube_section_4 = assembly.placeVolume( v_drift_tube_section_4, Transform3D(RotationY(drift_beam_pipe_angle), Position(-123.076799, 0.0, 3423.617428)));
   pv_drift_tube_section_4.addPhysVolID("sector", 1);
   DetElement tube_de_5(sdet, "sector5_de", 1);
   tube_de_5.setPlacement(pv_drift_tube_section_4);