diff --git a/NPLib/Detectors/Sofia/TSofFissionFragment.cxx b/NPLib/Detectors/Sofia/TSofFissionFragment.cxx
index 6e3c3b22e1aa5227a4e1bbfbe8faef0274444c8a..c9ed1d005f7230999ea445726819367dc2ca509d 100644
--- a/NPLib/Detectors/Sofia/TSofFissionFragment.cxx
+++ b/NPLib/Detectors/Sofia/TSofFissionFragment.cxx
@@ -64,6 +64,7 @@ void TSofFissionFragment::Clear() {
   fFF_PosY1.clear();
   fFF_PosY2.clear();
   fFF_PosY3.clear();
+  fFF_FlightPath.clear();
 
   fFF_Zsum = -1;
   fFF_iZsum = -1;
diff --git a/NPLib/Detectors/Sofia/TSofFissionFragment.h b/NPLib/Detectors/Sofia/TSofFissionFragment.h
index 0ee84c937522866d2795ce1dc6cb47891902e85e..2290d8472bb95c3fec935e723fd704de849a856e 100644
--- a/NPLib/Detectors/Sofia/TSofFissionFragment.h
+++ b/NPLib/Detectors/Sofia/TSofFissionFragment.h
@@ -55,6 +55,7 @@ class TSofFissionFragment : public TObject {
     vector<double> fFF_PosY1;
     vector<double> fFF_PosY2;
     vector<double> fFF_PosY3;
+    vector<double> fFF_FlightPath;
     double fFF_Zsum;
     int fFF_iZsum;
 
@@ -103,6 +104,7 @@ class TSofFissionFragment : public TObject {
     inline void SetPosY1(double val){fFF_PosY1.push_back(val);};//!
     inline void SetPosY2(double val){fFF_PosY2.push_back(val);};//!
     inline void SetPosY3(double val){fFF_PosY3.push_back(val);};//!
+    inline void SetFlightPath(double val){fFF_FlightPath.push_back(val);};//!
 
 
     //////////////////////    GETTERS    ////////////////////////
@@ -134,6 +136,7 @@ class TSofFissionFragment : public TObject {
     inline double GetPosY1(int i) const {return fFF_PosY1[i];}//! 
     inline double GetPosY2(int i) const {return fFF_PosY2[i];}//! 
     inline double GetPosY3(int i) const {return fFF_PosY3[i];}//! 
+    inline double GetFlightPath(int i) const {return fFF_FlightPath[i];}//! 
 
 
   //////////////////////////////////////////////////////////////
diff --git a/NPLib/Detectors/Sofia/TSofTwimPhysics.cxx b/NPLib/Detectors/Sofia/TSofTwimPhysics.cxx
index d0fe83970968a5d7abea62fca7637f05e2048e73..5add799dc4a0dcd041d0cd220488ec063e3c1e8c 100644
--- a/NPLib/Detectors/Sofia/TSofTwimPhysics.cxx
+++ b/NPLib/Detectors/Sofia/TSofTwimPhysics.cxx
@@ -169,13 +169,29 @@ void TSofTwimPhysics::BuildPhysicalEvent() {
   }
 
   static CalibrationManager* Cal = CalibrationManager::getInstance();
+
   if(Esec1>0){
     Esec1 = Cal->ApplyCalibration("SofTwim/SEC1_ALIGN",Esec1);
     EnergySection.push_back(Esec1);
     DriftTime.push_back(DTsec1);
     SectionNbr.push_back(1);
 
-    Theta1 = atan((AnodeDriftTime[0][11]-AnodeDriftTime[0][3])/(7*31.));
+    double xsum=0;
+    double x2sum=0;
+    double ysum=0;
+    double xysum=0;
+    for(int p=0; p<12; p++){
+      double Z = p*31;
+      double X = AnodeDriftTime[0][p+2];
+
+      xsum = xsum + Z;
+      ysum = ysum + X;
+      x2sum = x2sum + pow(Z,2);
+      xysum = xysum + X*Z;
+    }
+
+    double p1 = (12*xysum -xsum*ysum)/(12*x2sum - xsum*xsum);
+    Theta1 = p1;
     Theta.push_back(-Theta1);
   }
   if(Esec2>0){
@@ -184,7 +200,22 @@ void TSofTwimPhysics::BuildPhysicalEvent() {
     DriftTime.push_back(DTsec2);
     SectionNbr.push_back(2);
 
-    Theta2 = atan((AnodeDriftTime[1][11]-AnodeDriftTime[1][3])/(7*31.));
+    double xsum=0;
+    double x2sum=0;
+    double ysum=0;
+    double xysum=0;
+    for(int p=0; p<12; p++){
+      double Z = p*31;
+      double X = AnodeDriftTime[1][p+2];
+
+      xsum = xsum + Z;
+      ysum = ysum + X;
+      x2sum = x2sum + pow(Z,2);
+      xysum = xysum + X*Z;
+    }
+
+    double p1 = (12*xysum -xsum*ysum)/(12*x2sum - xsum*xsum);
+    Theta2 = p1; 
     Theta.push_back(-Theta2);
   }
   if(Esec3>0){
@@ -193,7 +224,22 @@ void TSofTwimPhysics::BuildPhysicalEvent() {
     DriftTime.push_back(DTsec3);
     SectionNbr.push_back(3);
 
-    Theta3 = atan((AnodeDriftTime[2][11]-AnodeDriftTime[2][3])/(7*31.));
+    double xsum=0;
+    double x2sum=0;
+    double ysum=0;
+    double xysum=0;
+    for(int p=0; p<12; p++){
+      double Z = p*31;
+      double X = AnodeDriftTime[2][p+2];
+
+      xsum = xsum + Z;
+      ysum = ysum + X;
+      x2sum = x2sum + pow(Z,2);
+      xysum = xysum + X*Z;
+    }
+
+    double p1 = (12*xysum -xsum*ysum)/(12*x2sum - xsum*xsum);
+    Theta3 = p1;
     Theta.push_back(-Theta3);
   }
   if(Esec4>0){
@@ -202,7 +248,22 @@ void TSofTwimPhysics::BuildPhysicalEvent() {
     DriftTime.push_back(DTsec4);
     SectionNbr.push_back(4);
 
-    Theta4 = atan((AnodeDriftTime[3][11]-AnodeDriftTime[3][3])/(7*31.));
+    double xsum=0;
+    double x2sum=0;
+    double ysum=0;
+    double xysum=0;
+    for(int p=0; p<12; p++){
+      double Z = p*31;
+      double X = AnodeDriftTime[3][p+2];
+
+      xsum = xsum + Z;
+      ysum = ysum + X;
+      x2sum = x2sum + pow(Z,2);
+      xysum = xysum + X*Z;
+    }
+
+    double p1 = (12*xysum -xsum*ysum)/(12*x2sum - xsum*xsum);
+    Theta4 = p1;
     Theta.push_back(-Theta4);
   }
 
diff --git a/Projects/s455/Analysis.cxx b/Projects/s455/Analysis.cxx
index 6ed3caddd5d827cfaffea17e903d4f46b3218fc3..4bb6f84a58c26775956d0c61e6a2c549fbc1427c 100644
--- a/Projects/s455/Analysis.cxx
+++ b/Projects/s455/Analysis.cxx
@@ -60,6 +60,7 @@ struct TofPair
   double xc = 0;
   double yc = 0;
   double zc = 0;
+  double flight_path = 0;
 };
 
 
@@ -560,8 +561,10 @@ void Analysis::FissionFragmentAnalysis(){
       double Theta0 = 20.*deg;
       double XA = 0;
       double ZA = 2328.;
-      //double ZA = 2328.-4434.;
-      double ZG = 2724+1075;//4434.;
+      double Zfission = 335.;
+      double ZGlad_entrance = 2724.;
+      double Leff_init = 2150.;
+      double ZG = ZGlad_entrance+Leff_init/2;
       double ZMW3 = 8483;
       double XMW3 = -(ZMW3-ZG)*tan(Theta0);
       double ZMW2 = 2576;
@@ -574,32 +577,49 @@ void Analysis::FissionFragmentAnalysis(){
       TVector3 InitPos[2];
       TVector3 InitDir[2];
       TVector3 FinalPos[2];
+      double XC = 0;
+      double ZC = 0;
+      double Leff = 0;
       for(int i=0; i<2; i++){
         XA = TofHit[i].DT;
-        TofHit[i].xc = (XA+(ZG-ZA)*tan(TofHit[i].theta_in)) / (1-tan(Tilt)*tan(TofHit[i].theta_in));
-        TofHit[i].yc = TofHit[i].y*0.5;
-        TofHit[i].zc = ZG + TofHit[i].xc*tan(Tilt);
-        
-        X3lab = TofHit[i].x3*cos(Theta0) + XMW3;
-        Z3lab = TofHit[i].x3*sin(Theta0) + ZMW3;
-        TofHit[i].x3lab = X3lab;
-        TofHit[i].z3lab = Z3lab;
-
-        InitPos[i]  = TVector3(XA,0,ZA);
-        InitDir[i]  = TVector3(sin(TofHit[i].theta_in),0,cos(TofHit[i].theta_in));
-        FinalPos[i] = TVector3(X3lab,0,Z3lab);
-
-        vC    = TVector3(TofHit[i].xc,0,TofHit[i].zc);
-        vOut  = TVector3(X3lab-TofHit[i].xc,0,Z3lab-TofHit[i].zc);
-
-        double PathLength = vC.Mag() + vOut.Mag() + 74.;
-        PathLength = PathLength/1000.;
-        double angle = vZ.Angle(vOut);
-
-        TofHit[i].velocity = PathLength/TofHit[i].tof;
-        TofHit[i].beta     = TofHit[i].velocity * m/ns / NPUNITS::c_light;
-        TofHit[i].theta_out = angle;
-        TofHit[i].x2twim = XA + (ZMW2-ZA)*tan(TofHit[i].theta_in);
+        if(XA != -1e6){
+          ZG = ZGlad_entrance+Leff_init/2;
+          XC = (XA+(ZG-ZA)*tan(TofHit[i].theta_in)) / (1-tan(Tilt)*tan(TofHit[i].theta_in));
+          ZC = ZG + XC*tan(Tilt);
+          
+          /*int ix = (int)(XC - m_GladField->GetXmin())/50;
+          int iy = (int)(ZC - m_GladField->GetYmin())/50;
+          Leff = m_GladField->GetLeff(ix,iy);
+          ZG = ZGlad_entrance + Leff/2;
+          XC = (XA+(ZG-ZA)*tan(TofHit[i].theta_in)) / (1-tan(Tilt)*tan(TofHit[i].theta_in));
+          ZC = ZG + XC*tan(Tilt);*/
+
+          TofHit[i].xc = XC;
+          TofHit[i].yc = TofHit[i].y*0.5;
+          TofHit[i].zc = ZC;
+
+          X3lab = TofHit[i].x3*cos(Theta0) + XMW3;
+          Z3lab = TofHit[i].x3*sin(Theta0) + ZMW3;
+          TofHit[i].x3lab = X3lab;
+          TofHit[i].z3lab = Z3lab;
+
+          InitPos[i]  = TVector3(XA,0,ZA);
+          InitDir[i]  = TVector3(sin(TofHit[i].theta_in),0,cos(TofHit[i].theta_in));
+          FinalPos[i] = TVector3(X3lab,0,Z3lab);
+
+          vC    = TVector3(TofHit[i].xc,0,TofHit[i].zc);
+          vOut  = TVector3(X3lab-TofHit[i].xc,0,Z3lab-TofHit[i].zc);
+
+          double PathLength = vC.Mag() + vOut.Mag() + 74.;
+          PathLength = PathLength/1000.;
+          double angle = vZ.Angle(vOut);
+
+          TofHit[i].flight_path = PathLength;
+          TofHit[i].velocity = PathLength/TofHit[i].tof;
+          TofHit[i].beta     = TofHit[i].velocity * m/ns / NPUNITS::c_light;
+          TofHit[i].theta_out = angle;
+          TofHit[i].x2twim = XA + (ZMW2-ZA)*tan(TofHit[i].theta_in);
+        }
       }
 
       Z1 = TofHit[0].Esec;
@@ -634,9 +654,9 @@ void Analysis::FissionFragmentAnalysis(){
       double Brho2 = MagB*rho2;
 
       /*double Brho1 = 0;
-      double Brho2 = 0;
-      Brho1 = m_GladField->FindBrho(InitPos[0], InitDir[0], FinalPos[0]);
-      Brho2 = m_GladField->FindBrho(InitPos[1], InitDir[1], FinalPos[1]);
+        double Brho2 = 0;
+        Brho1 = m_GladField->FindBrho(InitPos[0], InitDir[0], FinalPos[0]);
+        Brho2 = m_GladField->FindBrho(InitPos[1], InitDir[1], FinalPos[1]);
       //cout << Brho1 << " " << Brho2 << endl;*/
 
       Beta_Z1 = TofHit[0].beta;
@@ -669,16 +689,11 @@ void Analysis::FissionFragmentAnalysis(){
       SofFF->SetPosY3(TofHit[0].y3);
       SofFF->SetPosY3(TofHit[1].y3);
 
-      //SofFF->SetPosX3(TofHit[0].x3lab);
-      //SofFF->SetPosX3(TofHit[1].x3lab);
-
-
       SofFF->SetThetaIn(TofHit[0].theta_in);
       SofFF->SetThetaIn(TofHit[1].theta_in);
       SofFF->SetThetaOut(TofHit[0].theta_out);
       SofFF->SetThetaOut(TofHit[1].theta_out);
 
-
       SofFF->SetBeta(Beta_Z1);
       SofFF->SetBeta(Beta_Z2);
       SofFF->SetGamma(Gamma1);
@@ -699,9 +714,11 @@ void Analysis::FissionFragmentAnalysis(){
       SofFF->SetSection(TofHit[0].section);
       SofFF->SetSection(TofHit[1].section);
 
-
       SofFF->SetZsum(Zsum);
       SofFF->SetiZsum(iZsum);
+
+      SofFF->SetFlightPath(TofHit[0].flight_path);
+      SofFF->SetFlightPath(TofHit[1].flight_path);
     }
   }
 }
@@ -827,7 +844,7 @@ void Analysis::InitParameter(){
   fK_LS2 = -30e-8;
 
   fBrho0 = 12.3255;
-  fRunID = 5;
+  fRunID = 12;
 
   // Beam parameter //
   fZBeta_p0 = 1;
diff --git a/Projects/s455/RunToTreat.txt b/Projects/s455/RunToTreat.txt
index b75d3cc6c9dc688c12cacd76a16a57996db3b0b6..96e1b4884bedc4fb8ffeaf46974e7f539bd1bf8e 100644
--- a/Projects/s455/RunToTreat.txt
+++ b/Projects/s455/RunToTreat.txt
@@ -55,8 +55,8 @@ RootFileName
   %/media/sofia/s455/raw/run_raw_0401.root
   
   %% 187Pb
-  /media/sofia/s455/raw/run_raw_0402.root
-  /media/sofia/s455/raw/run_raw_0403.root
+  %/media/sofia/s455/raw/run_raw_0402.root
+  %/media/sofia/s455/raw/run_raw_0403.root
   
   %% 184Hg
   %/media/sofia/s455/raw/run_raw_0404.root
@@ -85,6 +85,6 @@ RootFileName
   %/media/sofia/s455/raw/run_raw_0426.root
   
   %% 197At
-  %/media/sofia/s455/raw/run_raw_0427.root
-  %/media/sofia/s455/raw/run_raw_0428.root
-  %/media/sofia/s455/raw/run_raw_0429.root
+  /media/sofia/s455/raw/run_raw_0427.root
+  /media/sofia/s455/raw/run_raw_0428.root
+  /media/sofia/s455/raw/run_raw_0429.root
diff --git a/Projects/s455/calibration/SofSci/SofSci_physics.cal b/Projects/s455/calibration/SofSci/SofSci_physics.cal
index b5d5734487c506da72a4aeca02535cd84b096df9..8778ee911a3131c0216c0cc52ad439b9029ffaff 100644
--- a/Projects/s455/calibration/SofSci/SofSci_physics.cal
+++ b/Projects/s455/calibration/SofSci/SofSci_physics.cal
@@ -1,4 +1,4 @@
-SofSci_TOF2INV_V -8.04267 0.00737389
+SofSci_TOF2INV_V -8.0515 0.00737389
 SofSci_LENGTH_S2 135.614
-SofSci_DET1_POSPAR 90 54.6
+SofSci_DET1_POSPAR 45.0 80.0
 SofSci_DET2_POSPAR 943.287 86.652
diff --git a/Projects/s455/calibration/SofTrim/SofTrim_SectionAlign.cal b/Projects/s455/calibration/SofTrim/SofTrim_SectionAlign.cal
index 80e81ae3897bce71419200ca0b7240f56bc754df..37d3efaaa6803eb42745b0b186822b5f6513519a 100644
--- a/Projects/s455/calibration/SofTrim/SofTrim_SectionAlign.cal
+++ b/Projects/s455/calibration/SofTrim/SofTrim_SectionAlign.cal
@@ -1,3 +1,3 @@
-SofTrim_SEC1_ALIGN 14.3427 1.02007
+SofTrim_SEC1_ALIGN -457.863 1.03809
 SofTrim_SEC2_ALIGN 0 1
-SofTrim_SEC3_ALIGN -2905.47 1.2027
+SofTrim_SEC3_ALIGN -2599.29 1.18757