From ec7b67e7afab249afa60be3dac1d4b38d28e7842 Mon Sep 17 00:00:00 2001
From: Morfouace <pierre.morfouace@cea.fr>
Date: Mon, 4 Apr 2022 09:47:18 +0200
Subject: [PATCH] Updating sofia analysis classes

---
 NPLib/Detectors/Sofia/TSofFissionFragment.cxx |   4 +-
 NPLib/Detectors/Sofia/TSofFissionFragment.h   |  12 +-
 NPLib/Detectors/Sofia/TSofMwpcPhysics.cxx     |  76 +--
 NPLib/Detectors/Sofia/TSofTwimPhysics.cxx     |  20 +
 NPLib/Detectors/Sofia/TSofTwimPhysics.h       |   1 +
 Projects/s455/Analysis.cxx                    | 512 +++++++++++++-----
 Projects/s455/Analysis.h                      |   1 +
 Projects/s455/RunToTreat.txt                  |   7 +-
 .../calibration/SofSci/SofSci_physics.cal     |   4 +-
 .../SofTrim/SofTrim_SectionAlign.cal          |   4 +-
 .../spline/spline_section_angle_26062021.root | Bin 0 -> 22735 bytes
 .../spline/spline_section_dt_26062021.root    | Bin 0 -> 11186 bytes
 12 files changed, 449 insertions(+), 192 deletions(-)
 create mode 100644 Projects/s455/calibration/SofTrim/spline/spline_section_angle_26062021.root
 create mode 100644 Projects/s455/calibration/SofTrim/spline/spline_section_dt_26062021.root

diff --git a/NPLib/Detectors/Sofia/TSofFissionFragment.cxx b/NPLib/Detectors/Sofia/TSofFissionFragment.cxx
index 53be42bac..d8e019597 100644
--- a/NPLib/Detectors/Sofia/TSofFissionFragment.cxx
+++ b/NPLib/Detectors/Sofia/TSofFissionFragment.cxx
@@ -45,6 +45,7 @@ TSofFissionFragment::~TSofFissionFragment() {
 void TSofFissionFragment::Clear() {
   fFF_Z.clear();
   fFF_iZ.clear();
+  fFF_Plastic.clear();
   fFF_AoQ.clear();
   fFF_A.clear();
   fFF_Beta.clear();
@@ -53,6 +54,7 @@ void TSofFissionFragment::Clear() {
   fFF_Brho.clear();
   fFF_DT.clear();
   fFF_ThetaIn.clear();
+  fFF_ThetaOut.clear();
   fFF_TofPosX.clear();
   fFF_TofPosY.clear();
   fFF_PosX1.clear();
@@ -63,7 +65,7 @@ void TSofFissionFragment::Clear() {
   fFF_PosY3.clear();
 
   fFF_Zsum = -1;
-  fFF_IntZsum = -1;
+  fFF_iZsum = -1;
 }
 
 
diff --git a/NPLib/Detectors/Sofia/TSofFissionFragment.h b/NPLib/Detectors/Sofia/TSofFissionFragment.h
index c265a6cca..48bd0f080 100644
--- a/NPLib/Detectors/Sofia/TSofFissionFragment.h
+++ b/NPLib/Detectors/Sofia/TSofFissionFragment.h
@@ -36,6 +36,7 @@ class TSofFissionFragment : public TObject {
   private:
     vector<double> fFF_Z; 
     vector<int> fFF_iZ;
+    vector<int> fFF_Plastic;
     vector<double> fFF_AoQ;
     vector<double> fFF_A;
     vector<double> fFF_Beta;
@@ -44,6 +45,7 @@ class TSofFissionFragment : public TObject {
     vector<double> fFF_Brho;
     vector<double> fFF_DT;
     vector<double> fFF_ThetaIn;
+    vector<double> fFF_ThetaOut;
     vector<double> fFF_TofPosX;
     vector<double> fFF_TofPosY;
     vector<double> fFF_PosX1;
@@ -53,7 +55,7 @@ class TSofFissionFragment : public TObject {
     vector<double> fFF_PosY2;
     vector<double> fFF_PosY3;
     double fFF_Zsum;
-    int fFF_IntZsum;
+    int fFF_iZsum;
 
   //////////////////////////////////////////////////////////////
   // Constructor and destructor
@@ -78,7 +80,8 @@ class TSofFissionFragment : public TObject {
   public:
     //////////////////////    SETTERS    ////////////////////////
     inline void SetZsum(double val){fFF_Zsum = val;};//!
-    inline void SetIntZsum(int val){fFF_IntZsum = val;};//!
+    inline void SetiZsum(int val){fFF_iZsum = val;};//!
+    inline void SetPlastic(int val){fFF_Plastic.push_back(val);};//!
     inline void SetZ(double val){fFF_Z.push_back(val);};//!
     inline void SetiZ(int val){fFF_iZ.push_back(val);};//!
     inline void SetAoQ(double val){fFF_AoQ.push_back(val);};//!
@@ -89,6 +92,7 @@ class TSofFissionFragment : public TObject {
     inline void SetBrho(double val){fFF_Brho.push_back(val);};//!
     inline void SetDT(double val){fFF_DT.push_back(val);};//!
     inline void SetThetaIn(double val){fFF_ThetaIn.push_back(val);};//!
+    inline void SetThetaOut(double val){fFF_ThetaOut.push_back(val);};//!
     inline void SetTofPosX(double val){fFF_TofPosX.push_back(val);};//!
     inline void SetTofPosY(double val){fFF_TofPosY.push_back(val);};//!
     inline void SetPosX1(double val){fFF_PosX1.push_back(val);};//!
@@ -106,7 +110,8 @@ class TSofFissionFragment : public TObject {
     int GetMultMwpc2() {return fFF_PosY2.size();}//!
     int GetMultMwpc3() {return fFF_PosY3.size();}//!
     inline double GetZsum() const {return fFF_Zsum;}//! 
-    inline int GetIntZsum() const {return fFF_IntZsum;}//! 
+    inline int GetiZsum() const {return fFF_iZsum;}//! 
+    inline int GetPlastic(int i) const {return fFF_Plastic[i];}//! 
     inline double GetZ(int i) const {return fFF_Z[i];}//! 
     inline int GetiZ(int i) const {return fFF_iZ[i];}//! 
     inline double GetAoQ(int i) const {return fFF_AoQ[i];}//! 
@@ -117,6 +122,7 @@ class TSofFissionFragment : public TObject {
     inline double GetBrho(int i) const {return fFF_Brho[i];}//! 
     inline double GetDT(int i) const {return fFF_DT[i];}//! 
     inline double GetThetaIn(int i) const {return fFF_ThetaIn[i];}//! 
+    inline double GetThetaOut(int i) const {return fFF_ThetaOut[i];}//! 
     inline double GetTofPosX(int i) const {return fFF_TofPosX[i];}//! 
     inline double GetTofPosY(int i) const {return fFF_TofPosY[i];}//! 
     inline double GetPosX1(int i) const {return fFF_PosX1[i];}//! 
diff --git a/NPLib/Detectors/Sofia/TSofMwpcPhysics.cxx b/NPLib/Detectors/Sofia/TSofMwpcPhysics.cxx
index a7351c1f4..2bf422432 100644
--- a/NPLib/Detectors/Sofia/TSofMwpcPhysics.cxx
+++ b/NPLib/Detectors/Sofia/TSofMwpcPhysics.cxx
@@ -209,40 +209,52 @@ void TSofMwpcPhysics::BuildPhysicalEvent() {
       }
 
 
-      if(fClusterX.size()==fClusterY.size()){
-        int size = fClusterX.size();
-        vector<double> Xpos;
-        vector<double> Ypos;
-        for(unsigned int i=0; i<size; i++){
-          // *** strip X *** //
-          vector<pair<int,int>> hitX;
-          hitX = fClusterX[i];
-          double x = -1000;
-          int qleft = hitX[0].second;
-          int qmax = hitX[1].second;
-          int qright = hitX[2].second;
-          int padmax = hitX[2].first;
-          if(padmax>0 && padmax+1<288 && qmax>0 && qleft>0 && qright>0){
-            x = GetPositionX(det_num, qmax, padmax, qleft, qright);
-            Xpos.push_back(x);
-          }
-
-          // *** strip Y *** //
-          vector<pair<int,int>> hitY;
-          hitY = fClusterY[i];
-          double y = -1000;
-          int qdown = hitY[0].second;
-          qmax = hitY[1].second;
-          int qup = hitY[2].second;
-          padmax = hitY[2].first;
-          if(padmax>0 && padmax+1<120 && qmax>0 && qdown>0 && qup>0){
-            y = GetPositionY(det_num, qmax, padmax, qdown, qup);
-            Ypos.push_back(y);
-          }
+      // *** strip X *** //
+      int sizeX = fClusterX.size();
+      vector<double> Xpos;
+      for(unsigned int i=0; i<sizeX; i++){
+        vector<pair<int,int>> hitX;
+        hitX = fClusterX[i];
+        double x = -1000;
+        int qleft = hitX[0].second;
+        int qmax = hitX[1].second;
+        int qright = hitX[2].second;
+        int padmax = hitX[2].first;
+        if(padmax>0 && padmax+1<288 && qmax>0 && qleft>0 && qright>0){
+          x = GetPositionX(det_num, qmax, padmax, qleft, qright);
+          Xpos.push_back(x);
+        }
+      }
+
+      // *** strip Y *** //
+      int sizeY = fClusterY.size();
+      vector<double> Ypos;
+      for(unsigned int i=0; i<sizeY; i++){
+        vector<pair<int,int>> hitY;
+        hitY = fClusterY[i];
+        double y = -1000;
+        int qdown = hitY[0].second;
+        int qmax = hitY[1].second;
+        int qup = hitY[2].second;
+        int padmax = hitY[2].first;
+        if(padmax>0 && padmax+1<120 && qmax>0 && qdown>0 && qup>0){
+          y = GetPositionY(det_num, qmax, padmax, qdown, qup);
+          Ypos.push_back(y);
+        }
+      }
+
+      for(unsigned int i=0; i<Xpos.size(); i++){
+        if(Xpos.size()==Ypos.size()){
+          DetectorNbr.push_back(det_num);
+          PositionX1.push_back(Xpos[i]);
+          PositionX2.push_back(-1000);
+          PositionY.push_back(Ypos[i]);
+        }
+        else{
           DetectorNbr.push_back(det_num);
-          PositionX1.push_back(x);
+          PositionX1.push_back(Xpos[i]);
           PositionX2.push_back(-1000);
-          PositionY.push_back(y);
+          PositionY.push_back(-1000);
         }
       }
     }
diff --git a/NPLib/Detectors/Sofia/TSofTwimPhysics.cxx b/NPLib/Detectors/Sofia/TSofTwimPhysics.cxx
index 8904b0635..98aa802c8 100644
--- a/NPLib/Detectors/Sofia/TSofTwimPhysics.cxx
+++ b/NPLib/Detectors/Sofia/TSofTwimPhysics.cxx
@@ -93,10 +93,15 @@ void TSofTwimPhysics::BuildPhysicalEvent() {
   double Esec2=0;
   double Esec3=0;
   double Esec4=0;
+  double Theta1=-10;
+  double Theta2=-10;
+  double Theta3=-10;
+  double Theta4=-10;
   double DTsec1=-1e6;
   double DTsec2=-1e6;
   double DTsec3=-1e6;
   double DTsec4=-1e6;
+  double AnodeDriftTime[4][16];
 
   unsigned int mysizeE = m_PreTreatedData->GetMultiplicity();
   for (UShort_t e = 0; e < mysizeE ; e++) {
@@ -112,6 +117,8 @@ void TSofTwimPhysics::BuildPhysicalEvent() {
     AnodeEnergy.push_back(Energy);
     AnodeDT.push_back(DT);
 
+    AnodeDriftTime[SectionNbr-1][AnodeNumber-1] = DT;
+
     if(SectionNbr==1){
       anode_energy_sec1.push_back(Energy);
       if(AnodeNumber==8)
@@ -166,24 +173,36 @@ void TSofTwimPhysics::BuildPhysicalEvent() {
     EnergySection.push_back(Esec1);
     DriftTime.push_back(DTsec1);
     SectionNbr.push_back(1);
+
+    Theta1 = asin((AnodeDriftTime[0][11]-AnodeDriftTime[0][3])/(7*31.));
+    Theta.push_back(Theta1);
   }
   if(Esec2>0){
     Esec2 = Cal->ApplyCalibration("SofTwim/SEC2_ALIGN",Esec2);
     EnergySection.push_back(Esec2);
     DriftTime.push_back(DTsec2);
     SectionNbr.push_back(2);
+
+    Theta2 = asin((AnodeDriftTime[1][11]-AnodeDriftTime[1][3])/(7*31.));
+    Theta.push_back(Theta2);
   }
   if(Esec3>0){
     Esec3 = Cal->ApplyCalibration("SofTwim/SEC3_ALIGN",Esec3);
     EnergySection.push_back(Esec3);
     DriftTime.push_back(DTsec3);
     SectionNbr.push_back(3);
+
+    Theta3 = asin((AnodeDriftTime[2][11]-AnodeDriftTime[2][3])/(7*31.));
+    Theta.push_back(Theta3);
   }
   if(Esec4>0){
     Esec4 = Cal->ApplyCalibration("SofTwim/SEC4_ALIGN",Esec4);
     EnergySection.push_back(Esec4);
     DriftTime.push_back(DTsec4);
     SectionNbr.push_back(4);
+
+    Theta4 = asin((AnodeDriftTime[3][11]-AnodeDriftTime[3][3])/(7*31.));
+    Theta.push_back(Theta4);
   }
 
   m_Beta = -1;
@@ -310,6 +329,7 @@ void TSofTwimPhysics::Clear() {
   AnodeSecNbr.clear();
   AnodeEnergy.clear();
   AnodeDT.clear();
+  Theta.clear();
 
   mult1 = 0;
   mult2 = 0;
diff --git a/NPLib/Detectors/Sofia/TSofTwimPhysics.h b/NPLib/Detectors/Sofia/TSofTwimPhysics.h
index 865d2f761..ac10c26c9 100644
--- a/NPLib/Detectors/Sofia/TSofTwimPhysics.h
+++ b/NPLib/Detectors/Sofia/TSofTwimPhysics.h
@@ -63,6 +63,7 @@ class TSofTwimPhysics : public TObject, public NPL::VDetector {
     vector<int>      SectionNbr;
     vector<double>   EnergySection;
     vector<double>   DriftTime;
+    vector<double>   Theta;
     vector<int>      AnodeNbr;
     vector<int>      AnodeSecNbr;
     vector<double>   AnodeEnergy;
diff --git a/Projects/s455/Analysis.cxx b/Projects/s455/Analysis.cxx
index 07fd371ec..42e6afa0c 100644
--- a/Projects/s455/Analysis.cxx
+++ b/Projects/s455/Analysis.cxx
@@ -27,6 +27,33 @@ using namespace std;
 #include"NPDetectorManager.h"
 #include"NPPhysicalConstants.h"
 #include"NPGlobalSystemOfUnits.h"
+
+
+////////////////////////////////////////////////////////////////////////////////
+struct TofPair
+{
+  double x = -1000;
+  double y = -1000;
+  double tof = -1000;
+  double velocity = -1;
+  double beta = -1;
+  double theta_in = -10;
+  double theta_out = -10;
+  int plastic = -1;
+  //
+  int isLorR  = -1;
+  // *** isLorR = 1 -> Left
+  // *** isLorR = 2 -> Right 
+  //
+  int isUorD  = -1;
+  // *** isUorD = 1 -> Up
+  // *** isUorD = 2 -> Down
+  int section = -1;
+  double Esec = -1;
+  double DT = -100;
+};
+
+
 ////////////////////////////////////////////////////////////////////////////////
 Analysis::Analysis(){
 }
@@ -66,6 +93,42 @@ void Analysis::TreatEvent(){
     SofTofW->BuildPhysicalEvent();
 
     FissionFragmentAnalysis();
+    //BeamFragmentAnalysis();
+  }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void Analysis::BeamFragmentAnalysis(){
+  unsigned int softofw_size = SofTofW->PlasticNbr.size();
+
+  double L_CC = 8.45;
+  TofPair TofHit;
+  if(softofw_size==1){
+    TofHit.plastic  = SofTofW->PlasticNbr[0];
+    TofHit.x        = SofTofW->CalPosX[0];
+    TofHit.y        = SofTofW->CalPosY[0];
+    TofHit.tof      = SofTofW->CalTof[0];
+    TofHit.velocity = L_CC/TofHit.tof;
+    TofHit.beta     = TofHit.velocity * m/ns / NPUNITS::c_light;
+
+    double Brho = 9.62543 + 0.0076642*TofHit.x;
+    double Lfactor = 9.17/L_CC;
+    double Beta = TofHit.beta*Lfactor;
+    double Gamma1 = 1. / sqrt(1 - Beta * Beta);
+
+    double AoQ = Brho / (3.10761 * Beta * Gamma1);
+
+    SofFF->SetTOF(TofHit.tof);
+    SofFF->SetTofPosX(TofHit.x);
+    SofFF->SetTofPosY(TofHit.y);
+    SofFF->SetPlastic(TofHit.plastic);
+
+    SofFF->SetBeta(Beta);
+    SofFF->SetGamma(Gamma1);
+    SofFF->SetAoQ(AoQ);
+    SofFF->SetBrho(Brho);
+
+
   }
 }
 
@@ -74,14 +137,6 @@ void Analysis::FissionFragmentAnalysis(){
   unsigned int softofw_size = SofTofW->PlasticNbr.size();
   unsigned int softwim_size = SofTwim->SectionNbr.size();
 
-  double TOF_CC[2];
-  double Plastic[2];
-  double Plastic_left = -1;
-  double Plastic_right = -1;
-  double TOF_left = -1;
-  double TOF_right = -1;
-  double TOF_up = -1;
-  double TOF_down = -1;
   double E1 = -1;
   double E2 = -1;
   double E3 = -1;
@@ -90,15 +145,11 @@ void Analysis::FissionFragmentAnalysis(){
   double DT2 = -1000;
   double DT3 = -1000;
   double DT4 = -1000;
+  double Theta1 = -1000;
+  double Theta2 = -1000;
+  double Theta3 = -1000;
+  double Theta4 = -1000;
   double L_CC = 8.45;
-  double Beta_left = -1;
-  double Beta_right = -1;
-  double Beta_up = -1;
-  double Beta_down = -1;
-  double Beta1 = -1;
-  double Beta2 = -1;
-  double Beta3 = -1;
-  double Beta4 = -1;
   double Beta_norm = 0.745;
   double Gamma1 = -1;
   double Gamma2 = -1;
@@ -116,25 +167,34 @@ void Analysis::FissionFragmentAnalysis(){
   int iZ1 = -1;
   int iZ2 = -1;
   int iZsum = -1;
-  double ThetaIn1 = -1000;
-  double ThetaIn2 = -1000;
-
-  for(int i = 0; i<2; i++){
-    TOF_CC[i] = -1;
-    Plastic[i] = -1;
-  }
 
-  vector<double> PosY;
-  vector<double> PosX;
+  TofPair TofHit[2];
   if(softofw_size==2){
     for(unsigned int i=0; i<softofw_size; i++){
-      TOF_CC[i] = SofTofW->CalTof[i];
-      Plastic[i] = SofTofW->PlasticNbr[i];
-      PosX.push_back(SofTofW->CalPosX[i]);
-      PosY.push_back(SofTofW->CalPosY[i]);
+      TofHit[i].plastic  = SofTofW->PlasticNbr[i];
+      TofHit[i].x        = SofTofW->CalPosX[i];
+      TofHit[i].y        = SofTofW->CalPosY[i];
+      TofHit[i].tof      = SofTofW->CalTof[i];
+      TofHit[i].velocity = L_CC/TofHit[i].tof;
+      TofHit[i].beta     = TofHit[i].velocity * m/ns / NPUNITS::c_light;
+    }
 
-      SofFF->SetTofPosX(SofTofW->CalPosX[i]);
-      SofFF->SetTofPosY(SofTofW->CalPosY[i]);
+    if(TofHit[0].x>TofHit[1].x){
+      TofHit[0].isLorR = 1;
+      TofHit[1].isLorR = 2;
+    }
+    else if(TofHit[0].x<TofHit[1].x){
+      TofHit[0].isLorR = 2;
+      TofHit[1].isLorR = 1;
+    }
+
+    if(TofHit[0].y>TofHit[1].y){
+      TofHit[0].isUorD = 1;
+      TofHit[1].isUorD = 2;
+    }
+    else if(TofHit[0].y<TofHit[1].y){
+      TofHit[0].isUorD = 2;
+      TofHit[1].isUorD = 1;
     }
   }
 
@@ -154,38 +214,31 @@ void Analysis::FissionFragmentAnalysis(){
       SofFF->SetPosY2(SofMwpc->PositionY[i]);
     }
     if(SofMwpc->DetectorNbr[i]==4){
-      X3.push_back(SofMwpc->PositionX1[i]);
-      Y3.push_back(SofMwpc->PositionY[i]);
-
-      SofFF->SetPosX3(SofMwpc->PositionX1[i]);
-      SofFF->SetPosY3(SofMwpc->PositionY[i]);
+      if(SofMwpc->PositionX1[i]!=-1000)
+        X3.push_back(SofMwpc->PositionX1[i]);
+      
+      if(SofMwpc->PositionY[i]!=-1000)
+        Y3.push_back(SofMwpc->PositionY[i]);
+
+      //SofFF->SetPosX3(SofMwpc->PositionX1[i]);
+      //SofFF->SetPosY3(SofMwpc->PositionY[i]);
     }
   }
+  
 
   vector<double> good_posx;
   vector<double> good_posy;
-  for(unsigned int i=0; i<PosX.size(); i++){
-    double tofx = PosX[i];
-    double tofy = PosY[i];
+  for(unsigned int i=0; i<2; i++){
+    double tofx = TofHit[i].x;
+    //double tofy = TofHit[i].y;
     for(unsigned int k=0; k<X3.size(); k++){
       double posx = X3[k];
       if(abs(posx-tofx) < 100){
         good_posx.push_back(posx);
-        good_posy.push_back(tofy);   
       }
     }
   }
 
-
-  /*if(good_posx.size()==2 && good_posy.size()==2){
-    SofFF->SetTofPosX(good_posx[0]);
-    SofFF->SetTofPosX(good_posx[1]);
-
-    SofFF->SetTofPosY(good_posy[0]);
-    SofFF->SetTofPosY(good_posy[1]);
-    }*/
-
-
   int mult1 = SofTwim->mult1;
   int mult2 = SofTwim->mult2;
   int mult3 = SofTwim->mult3;
@@ -202,18 +255,22 @@ void Analysis::FissionFragmentAnalysis(){
         if(sec==1){
           E1 = SofTwim->EnergySection[i];
           DT1 = SofTwim->DriftTime[i];
+          Theta1 = SofTwim->Theta[i];
         }
         if(sec==2){
           E2 = SofTwim->EnergySection[i];
           DT2 = SofTwim->DriftTime[i];
+          Theta2 = SofTwim->Theta[i];
         }
         if(sec==3){
           E3 = SofTwim->EnergySection[i]; 
           DT3 = SofTwim->DriftTime[i];
+          Theta3 = SofTwim->Theta[i];
         }
         if(sec==4){
           E4 = SofTwim->EnergySection[i];     
           DT4 = SofTwim->DriftTime[i];
+          Theta4 = SofTwim->Theta[i];
         }
       }
 
@@ -237,122 +294,239 @@ void Analysis::FissionFragmentAnalysis(){
       if(E4>0)
         E4 = E4/16;
 
-      if(Plastic[0]<Plastic[1]){
-        Plastic_left = Plastic[0];
-        Plastic_right = Plastic[1];
-        TOF_left = TOF_CC[0];
-        TOF_right = TOF_CC[1];
-      }
-      if(Plastic[0]>Plastic[1]){
-        Plastic_left = Plastic[1];
-        Plastic_right = Plastic[0];
-        TOF_left = TOF_CC[1];
-        TOF_right = TOF_CC[0];
-      }
 
-      if(PosY.size()==2){
-        if(PosY[0]>PosY[1]){
-          TOF_up = TOF_CC[0];
-          TOF_down = TOF_CC[1];
+      // *** case 1 *** //
+      if(E1!=-1 && E2!=-1){
+        if(TofHit[0].isUorD==1 && TofHit[1].isUorD==2){
+          TofHit[0].Esec = E2;
+          TofHit[1].Esec = E1;
+
+          TofHit[0].theta_in = Theta2;
+          TofHit[1].theta_in = Theta1;
+ 
+          TofHit[0].DT = DT2;
+          TofHit[1].DT = DT1;
+
+          TofHit[0].section = 2;
+          TofHit[1].section = 1;
         }
-        if(PosY[0]<PosY[1]){
-          TOF_up = TOF_CC[1];
-          TOF_down = TOF_CC[0];
+        if(TofHit[0].isUorD==2 && TofHit[1].isUorD==1){
+          TofHit[0].Esec = E1;
+          TofHit[1].Esec = E2;
+
+          TofHit[0].theta_in = Theta1;
+          TofHit[1].theta_in = Theta2;
+ 
+          TofHit[0].DT = DT1;
+          TofHit[1].DT = DT2;
+
+          TofHit[0].section = 1;
+          TofHit[1].section = 2;
         }
       }
 
-      double velocity_left = L_CC/TOF_left;
-      double velocity_right = L_CC/TOF_right;
-      Beta_left = velocity_left * m/ns / NPUNITS::c_light;
-      Beta_right = velocity_right * m/ns / NPUNITS::c_light;
-
-      double velocity_down = L_CC/TOF_down;
-      double velocity_up = L_CC/TOF_up;
-      Beta_down = velocity_down * m/ns / NPUNITS::c_light;
-      Beta_up = velocity_up * m/ns / NPUNITS::c_light;
-
-      if(E1!=-1 && E2!=-1){
-        Beta1 = Beta_down;
-        Beta2 = Beta_up;
-      }
+      // *** case 2 *** //
       if(E1!=-1 && E3!=-1){
-        Beta1 = Beta_down;
-        Beta3 = Beta_up;
+        if(TofHit[0].isUorD==1 && TofHit[1].isUorD==2){
+          TofHit[0].Esec = E3;
+          TofHit[1].Esec = E1;
+
+          TofHit[0].theta_in = Theta3;
+          TofHit[1].theta_in = Theta1;
+ 
+          TofHit[0].DT = DT3;
+          TofHit[1].DT = DT1;
+
+          TofHit[0].section = 3;
+          TofHit[1].section = 1;
+        }
+        if(TofHit[0].isUorD==2 && TofHit[1].isUorD==1){
+          TofHit[0].Esec = E1;
+          TofHit[1].Esec = E3;
+
+          TofHit[0].DT = DT1;
+          TofHit[1].DT = DT3;
+
+          TofHit[0].theta_in = Theta1;
+          TofHit[1].theta_in = Theta3;
+ 
+          TofHit[0].section = 1;
+          TofHit[1].section = 3; 
+        }
       }
+
+      // *** case 3 *** //
       if(E1!=-1 && E4!=-1){
-        Beta1 = Beta_left;
-        Beta4 = Beta_right;
+        if(TofHit[0].isLorR==1 && TofHit[1].isLorR==2){
+          TofHit[0].Esec = E1;
+          TofHit[1].Esec = E4;
+
+          TofHit[0].theta_in = Theta1;
+          TofHit[1].theta_in = Theta4;
+          
+          TofHit[0].DT = DT1;
+          TofHit[1].DT = DT4;
+
+          TofHit[0].section = 1;
+          TofHit[1].section = 4;
+        }
+        if(TofHit[0].isLorR==2 && TofHit[1].isLorR==1){
+          TofHit[0].Esec = E4;
+          TofHit[1].Esec = E1;
+
+          TofHit[0].theta_in = Theta4;
+          TofHit[1].theta_in = Theta1;
+           
+          TofHit[0].DT = DT4;
+          TofHit[1].DT = DT1;
+
+          TofHit[0].section = 4;
+          TofHit[1].section = 1;
+        }
       }
+
+      // *** case 4 *** //
       if(E2!=-1 && E3!=-1){
-        Beta2 = Beta_left;
-        Beta3 = Beta_right;
+        if(TofHit[0].isLorR==1 && TofHit[1].isLorR==2){
+          TofHit[0].Esec = E2;
+          TofHit[1].Esec = E3;
+
+          TofHit[0].theta_in = Theta2;
+          TofHit[1].theta_in = Theta3;
+           
+          TofHit[0].DT = DT2;
+          TofHit[1].DT = DT3;
+
+          TofHit[0].section = 2;
+          TofHit[1].section = 3;
+        }
+        if(TofHit[0].isLorR==2 && TofHit[1].isLorR==1){
+          TofHit[0].Esec = E3;
+          TofHit[1].Esec = E2;
+
+          TofHit[0].theta_in = Theta3;
+          TofHit[1].theta_in = Theta2;
+ 
+          TofHit[0].DT = DT3;
+          TofHit[1].DT = DT2;
+
+          TofHit[0].section = 3;
+          TofHit[1].section = 2;
+        }
       }
+
+      // *** case 5 *** //
       if(E2!=-1 && E4!=-1){
-        Beta2 = Beta_up;
-        Beta4 = Beta_down;
+        if(TofHit[0].isUorD==1 && TofHit[1].isUorD==2){
+          TofHit[0].Esec = E2;
+          TofHit[1].Esec = E4;
+
+          TofHit[0].theta_in = Theta2;
+          TofHit[1].theta_in = Theta4;
+ 
+          TofHit[0].DT = DT2;
+          TofHit[1].DT = DT4;
+
+          TofHit[0].section = 2;
+          TofHit[1].section = 4;
+        }
+        if(TofHit[0].isUorD==2 && TofHit[1].isUorD==1){
+          TofHit[0].Esec = E4;
+          TofHit[1].Esec = E2;
+
+          TofHit[0].theta_in = Theta4;
+          TofHit[1].theta_in = Theta2;
+ 
+          TofHit[0].DT = DT4;
+          TofHit[1].DT = DT2;
+
+          TofHit[0].section = 4;
+          TofHit[1].section = 2;
+        }
       }
+
+      // *** case 6 *** //
       if(E3!=-1 && E4!=-1){
-        Beta3 = Beta_up;
-        Beta4 = Beta_down;
+        if(TofHit[0].isUorD==1 && TofHit[1].isUorD==2){
+          TofHit[0].Esec = E3;
+          TofHit[1].Esec = E4;
+
+          TofHit[0].theta_in = Theta3;
+          TofHit[1].theta_in = Theta4;
+ 
+          TofHit[0].DT = DT3;
+          TofHit[1].DT = DT4;
+
+          TofHit[0].section = 3;
+          TofHit[1].section = 4;
+        }
+        if(TofHit[0].isUorD==2 && TofHit[1].isUorD==1){
+          TofHit[0].Esec = E4;
+          TofHit[1].Esec = E3;
+
+          TofHit[0].theta_in = Theta4;
+          TofHit[1].theta_in = Theta3;
+ 
+          TofHit[0].DT = DT4;
+          TofHit[1].DT = DT3;
+
+          TofHit[0].section = 4;
+          TofHit[1].section = 3;
+        }
       }
 
 
-      if(Beta1!=-1 && E1>0){ 
-        E1 = E1 / fcorr_z_beta[0]->Eval(Beta1) * fcorr_z_beta[0]->Eval(Beta_norm);
-        E1 = E1 / fcorr_z_dt[0]->Eval(DT1) * fcorr_z_dt[0]->Eval(55);
-      }
-      if(Beta2!=-1 && E2>0){ 
-        E2 = E2 / fcorr_z_beta[1]->Eval(Beta2) * fcorr_z_beta[1]->Eval(Beta_norm);
-        E2 = E2 / fcorr_z_dt[1]->Eval(DT2) * fcorr_z_dt[1]->Eval(55);
-      }
-      if(Beta3!=-1 && E3>0){ 
-        E3 = E3 / fcorr_z_beta[2]->Eval(Beta3) * fcorr_z_beta[2]->Eval(Beta_norm);
-        E3 = E3 / fcorr_z_dt[2]->Eval(DT3) * fcorr_z_dt[2]->Eval(-55);
-      }
-      if(Beta4!=-1 && E4>0){ 
-        E4 = E4 / fcorr_z_beta[3]->Eval(Beta4) * fcorr_z_beta[3]->Eval(Beta_norm);
-        E4 = E4 / fcorr_z_dt[3]->Eval(DT4) * fcorr_z_dt[3]->Eval(-55);
-      }
+      // *** spline correction *** //
+      for(int i=0; i<2; i++){
+        int section = TofHit[i].section;
 
+        double drift_time;
+        if(section==1) drift_time = DT1;
+        if(section==2) drift_time = DT2;
+        if(section==3) drift_time = DT3;
+        if(section==4) drift_time = DT4;
 
-      // Z calibration //
-      if(E1>0 && E2>0 && E3==-1 && E4==-1){
-        Z1 = E1;
-        Z2 = E2;
-        Beta_Z1 = Beta1;
-        Beta_Z2 = Beta2;
-      }
-      if(E1>0 && E2==-1 && E3>0 && E4==-1){
-        Z1 = E1;
-        Z2 = E3;
-        Beta_Z1 = Beta1;
-        Beta_Z2 = Beta3;
-      }
-      if(E1>0 && E2==-1 && E3==-1 && E4>0){
-        Z1 = E1;
-        Z2 = E4;
-        Beta_Z1 = Beta1;
-        Beta_Z2 = Beta4;
-      }
-      if(E1==-1 && E2>0 && E3>0 && E4==-1){
-        Z1 = E2;
-        Z2 = E3;
-        Beta_Z1 = Beta2;
-        Beta_Z2 = Beta3;
-      }
-      if(E1==-1 && E2>0 && E3==-1 && E4>0){
-        Z1 = E2;
-        Z2 = E4;
-        Beta_Z1 = Beta2;
-        Beta_Z2 = Beta4;
+        double DT_eval;
+        if(section<3) DT_eval=55;
+        if(section>2) DT_eval=-55;
+        if(section>0){
+          TofHit[i].Esec = TofHit[i].Esec / fcorr_z_beta[section-1]->Eval(TofHit[i].beta) * fcorr_z_beta[section-1]->Eval(Beta_norm);
+
+          TofHit[i].Esec = TofHit[i].Esec / fcorr_z_dt[section-1]->Eval(drift_time) * fcorr_z_dt[section-1]->Eval(DT_eval);
+        }
       }
-      if(E1==-1 && E2==-1 && E3>0 && E4>0){
-        Z1 = E3;
-        Z2 = E4;
-        Beta_Z1 = Beta3;
-        Beta_Z2 = Beta4;
+
+
+      // *** Calculation Theta_out *** //
+      double XA;
+      double ZA = 2328.;
+      double XC;
+      double ZC = 4434.;
+      double XMW3 = -1436;
+      double ZMW3 = 8380;
+      double X3lab;
+      double Z3lab;
+      double Theta0 = 20.*deg;
+      TVector3 vOut;
+      TVector3 vZ = TVector3(0,0,1);
+      for(int i=0; i<2; i++){
+        XA = TofHit[i].DT;
+        XC = XA+(ZC-ZA)*tan(TofHit[i].theta_in);
+
+        X3lab = TofHit[i].x*cos(Theta0) + XMW3;
+        Z3lab = ZMW3 + TofHit[i].x*cos(Theta0);
+
+        vOut = TVector3(X3lab-XC,0,Z3lab-ZC);
+
+        double angle = vZ.Angle(vOut);
+
+        TofHit[i].theta_out = angle;
       }
 
+      Z1 = TofHit[0].Esec;
+      Z2 = TofHit[1].Esec;
+
+
       if(Z1>0 && Z2>0){
         Z1 = fZff_p0 + fZff_p1*Z1 + fZff_p2*Z1*Z1;
         Z2 = fZff_p0 + fZff_p1*Z2 + fZff_p2*Z2*Z2;
@@ -367,6 +541,20 @@ void Analysis::FissionFragmentAnalysis(){
         iZsum = iZ1 + iZ2;
       }
 
+      //double Bfactor = 2185./2413.;
+      //Brho1 = Bfactor*(9.62543 + 0.0076642*TofHit[0].x);
+      //Brho2 = Bfactor*(9.62543 + 0.0076642*TofHit[1].x);
+      
+      double MagB = 2185*2.2/3584;
+      double Leff = 2.067;
+      double Tilt = 14*deg;
+      double rho1 = Leff/abs(2*sin(0.5*(TofHit[0].theta_out-TofHit[0].theta_in))*cos(Tilt-0.5*(TofHit[0].theta_out-TofHit[0].theta_in)));
+      double rho2 = Leff/abs(2*sin(0.5*(TofHit[1].theta_out-TofHit[1].theta_in))*cos(Tilt-0.5*(TofHit[1].theta_out-TofHit[1].theta_in)));
+      double Brho1 = MagB*rho1;
+      double Brho2 = MagB*rho2;
+      double Lfactor = 1.;//9.5/L_CC;
+      Beta_Z1 = TofHit[0].beta*Lfactor;
+      Beta_Z2 = TofHit[1].beta*Lfactor;
       Gamma1 = 1. / sqrt(1 - Beta_Z1 * Beta_Z1);
       Gamma2 = 1. / sqrt(1 - Beta_Z2 * Beta_Z2);
 
@@ -377,8 +565,24 @@ void Analysis::FissionFragmentAnalysis(){
       A2 = AoQ2 * iZ2;
 
       // *** Filling the Fission Fragment Tree *** //
-      SofFF->SetTOF(TOF_left);
-      SofFF->SetTOF(TOF_right);
+      SofFF->SetTOF(TofHit[0].tof);
+      SofFF->SetTOF(TofHit[1].tof);
+      SofFF->SetTofPosX(TofHit[0].x);
+      SofFF->SetTofPosX(TofHit[1].x);
+      SofFF->SetTofPosY(TofHit[0].y);
+      SofFF->SetTofPosY(TofHit[1].y);
+      SofFF->SetPlastic(TofHit[0].plastic);
+      SofFF->SetPlastic(TofHit[1].plastic);
+
+      for(int i=0; i<good_posx.size(); i++){
+        SofFF->SetPosX3(good_posx[i]);
+      }
+      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);
@@ -388,7 +592,7 @@ void Analysis::FissionFragmentAnalysis(){
       SofFF->SetZ(Z1);
       SofFF->SetZ(Z2);
       SofFF->SetAoQ(AoQ1);
-      SofFF->SetAoQ(AoQ1);
+      SofFF->SetAoQ(AoQ2);
       SofFF->SetA(A1);
       SofFF->SetA(A2);
       SofFF->SetBrho(Brho1);
@@ -400,7 +604,7 @@ void Analysis::FissionFragmentAnalysis(){
       SofFF->SetDT(DT4);
 
       SofFF->SetZsum(Zsum);
-      SofFF->SetIntZsum(iZsum);
+      SofFF->SetiZsum(iZsum);
     }
   }
 }
@@ -452,6 +656,7 @@ void Analysis::BeamAnalysis(){
       double Y_p1 = 12.362;
       Zbeam = Zbeam/(Y_p0 + Y_p1*YCC)*Y_p0;
 
+
       // Z calibration //
       Zbeam = fZbeam_p0 + fZbeam_p1*Zbeam + fZbeam_p2*Zbeam*Zbeam;
       Zbeam = sqrt(Zbeam);
@@ -524,11 +729,15 @@ void Analysis::InitParameter(){
   fDCC   = -10000;
   fK_LS2 = -30e-8;
 
-  fRunID = 12;
+  fBrho0 = 12.3255;
+  fRunID = 6;
 
   // Beam parameter //
   fZBeta_p0 = 1;
   fZBeta_p1 = 0;
+  fZbeam_p0 = 1651.57;
+  fZbeam_p1 = 0.0876127;
+  fZbeam_p2 = 4.02563e-6;
 
   // FF parameter //
   fZff_p0 = 2.80063;
@@ -646,8 +855,11 @@ void Analysis::InitParameter(){
     fZbeam_p0 = 186.892;
     fZbeam_p1 = 0.20739;
     fZbeam_p2 = 1.61797e-6;
-
   }
+  if(fRunID==15){
+    fBrho0 = 12.3352;
+  }
+
 }
 
 ////////////////////////////////////////////////////////////////////////////////
diff --git a/Projects/s455/Analysis.h b/Projects/s455/Analysis.h
index db6b3ce1a..dbd4a351c 100644
--- a/Projects/s455/Analysis.h
+++ b/Projects/s455/Analysis.h
@@ -50,6 +50,7 @@ class Analysis: public NPL::VAnalysis{
     void ReInitValue();
     void BeamAnalysis();
     void FissionFragmentAnalysis();
+    void BeamFragmentAnalysis();
 
     static NPL::VAnalysis* Construct();
 
diff --git a/Projects/s455/RunToTreat.txt b/Projects/s455/RunToTreat.txt
index 9c7e8b6b6..c0a52b7fe 100644
--- a/Projects/s455/RunToTreat.txt
+++ b/Projects/s455/RunToTreat.txt
@@ -2,6 +2,9 @@ TTreeName
   RawTree
 RootFileName
   
+  %/media/sofia/s455/raw/run_raw_0367.root
+  %/media/sofia/s455/raw/run_raw_0368.root
+  %/media/sofia/s455/raw/run_raw_0369.root
   %/media/sofia/s455/raw/run_raw_0419.root
   %/media/sofia/s455/raw/run_raw_0422.root
   
@@ -46,10 +49,10 @@ RootFileName
   %/media/sofia/s455/raw/run_raw_0399.root
 
   %% 189Pb
-  %/media/pierre/proton/raw/run_raw_0400.root
+  /media/sofia/s455/raw/run_raw_0400.root
   
   %% 182Hg
-  /media/pierre/proton/raw/run_raw_0401.root
+  %/media/sofia/s455/raw/run_raw_0401.root
   
   %% 187Pb
   %/media/sofia/s455/raw/run_raw_0402.root
diff --git a/Projects/s455/calibration/SofSci/SofSci_physics.cal b/Projects/s455/calibration/SofSci/SofSci_physics.cal
index 8778ee911..b5d573448 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.0515 0.00737389
+SofSci_TOF2INV_V -8.04267 0.00737389
 SofSci_LENGTH_S2 135.614
-SofSci_DET1_POSPAR 45.0 80.0
+SofSci_DET1_POSPAR 90 54.6
 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 37d3efaaa..8a3e3df45 100644
--- a/Projects/s455/calibration/SofTrim/SofTrim_SectionAlign.cal
+++ b/Projects/s455/calibration/SofTrim/SofTrim_SectionAlign.cal
@@ -1,3 +1,3 @@
-SofTrim_SEC1_ALIGN -457.863 1.03809
+SofTrim_SEC1_ALIGN 310.216 1.00792
 SofTrim_SEC2_ALIGN 0 1
-SofTrim_SEC3_ALIGN -2599.29 1.18757
+SofTrim_SEC3_ALIGN -1382.53 1.13744
diff --git a/Projects/s455/calibration/SofTrim/spline/spline_section_angle_26062021.root b/Projects/s455/calibration/SofTrim/spline/spline_section_angle_26062021.root
new file mode 100644
index 0000000000000000000000000000000000000000..d246cb81becf321f2c03df5e9da6fdb51e9eefe2
GIT binary patch
literal 22735
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
B5yt=k

literal 0
HcmV?d00001

diff --git a/Projects/s455/calibration/SofTrim/spline/spline_section_dt_26062021.root b/Projects/s455/calibration/SofTrim/spline/spline_section_dt_26062021.root
new file mode 100644
index 0000000000000000000000000000000000000000..18385be0794ccf796409baf33ecd092ca8e3a903
GIT binary patch
literal 11186
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

literal 0
HcmV?d00001

-- 
GitLab