diff --git a/NPLib/Detectors/PISTA/CMakeLists.txt b/NPLib/Detectors/PISTA/CMakeLists.txt
index d4edf2bbb788f01b8bb9f96628c6eb89abf50ebd..41848764389a46d338eae0aa8d60b5e782d863c2 100644
--- a/NPLib/Detectors/PISTA/CMakeLists.txt
+++ b/NPLib/Detectors/PISTA/CMakeLists.txt
@@ -12,8 +12,14 @@ add_custom_command(OUTPUT TICPhysicsDict.cxx COMMAND ../../scripts/build_dict.sh
 
 add_custom_command(OUTPUT TVamosReconstructionDict.cxx COMMAND ../../scripts/build_dict.sh TVamosReconstruction.h TVamosReconstructionDict.cxx TVamosReconstruction.rootmap libNPPISTA.dylib DEPENDS TVamosReconstruction.h)
 
-add_library(NPPISTA SHARED TPISTASpectra.cxx TPISTAData.cxx TPISTAPhysics.cxx TPISTADataDict.cxx TPISTAPhysicsDict.cxx TFPMWData.cxx TFPMWDataDict.cxx TFPMWPhysics.cxx TFPMWPhysicsDict.cxx TICData.cxx TICDataDict.cxx TICPhysics.cxx TICPhysicsDict.cxx TVamosReconstruction.cxx TVamosReconstructionDict.cxx)
+add_custom_command(OUTPUT TTimeDataDict.cxx COMMAND ../../scripts/build_dict.sh TTimeData.h TTimeDataDict.cxx TTimeData.rootmap libNPPISTA.dylib DEPENDS TTimeData.h)
+
+add_library(NPPISTA SHARED TPISTASpectra.cxx TPISTAData.cxx TPISTAPhysics.cxx
+    TPISTADataDict.cxx TPISTAPhysicsDict.cxx TFPMWData.cxx TFPMWDataDict.cxx
+    TFPMWPhysics.cxx TFPMWPhysicsDict.cxx TICData.cxx TICDataDict.cxx
+    TICPhysics.cxx TICPhysicsDict.cxx TVamosReconstruction.cxx TVamosReconstructionDict.cxx TTimeData.cxx TTimeDataDict.cxx)
 
 target_link_libraries(NPPISTA ${ROOT_LIBRARIES} NPCore) 
-install(FILES TPISTAData.h TPISTAPhysics.h TPISTASpectra.h TFPMWData.h TFPMWPhysics.h TICData.h TICPhysics.h TVamosReconstruction.h DESTINATION ${CMAKE_INCLUDE_OUTPUT_DIRECTORY})
+
+install(FILES TPISTAData.h TPISTAPhysics.h TPISTASpectra.h TFPMWData.h TFPMWPhysics.h TICData.h TICPhysics.h TVamosReconstruction.h TTimeData.h DESTINATION ${CMAKE_INCLUDE_OUTPUT_DIRECTORY})
 
diff --git a/NPLib/Detectors/PISTA/TICData.cxx b/NPLib/Detectors/PISTA/TICData.cxx
index 52a8670d53b6128f1c59ac84a6f83cabb8d7bba3..6d34fa00d3f52d2ca45472b05195c267cced7abe 100644
--- a/NPLib/Detectors/PISTA/TICData.cxx
+++ b/NPLib/Detectors/PISTA/TICData.cxx
@@ -46,6 +46,7 @@ TICData::~TICData() {
 void TICData::Clear() {
   fIC_Section.clear();
   fIC_Charge.clear();
+  fIC_TS.clear();
 }
 
 
diff --git a/NPLib/Detectors/PISTA/TICData.h b/NPLib/Detectors/PISTA/TICData.h
index 542d76a8b17316d2e902eba40a252ae0f2fe2e73..5073e68d46c84402def36158b831bad65dc59ee0 100644
--- a/NPLib/Detectors/PISTA/TICData.h
+++ b/NPLib/Detectors/PISTA/TICData.h
@@ -36,6 +36,7 @@ class TICData : public TObject {
   private: 
     vector<int> fIC_Section;
     vector<double> fIC_Charge;
+    vector<long> fIC_TS;
 
 
 
@@ -64,6 +65,7 @@ class TICData : public TObject {
     // X setters
     inline void SetIC_Charge(double Charge){fIC_Charge.push_back(Charge);};//!
     inline void SetIC_Section(int sec){fIC_Section.push_back(sec);};//!
+    inline void SetIC_TS(long TS){fIC_TS.push_back(TS);};//!
 
 
     //////////////////////    GETTERS    ////////////////////////
@@ -73,7 +75,9 @@ class TICData : public TObject {
       {return fIC_Section[i];}//!
     inline Double_t GetIC_Charge(const unsigned int &i) const 
       {return fIC_Charge[i];}//!      
-   
+    inline long GetIC_TS(const unsigned int &i) const 
+      {return fIC_TS[i];}//!      
+     
     //////////////////////////////////////////////////////////////
   // Required for ROOT dictionnary
   ClassDef(TICData,1)  // ICData structure
diff --git a/NPLib/Detectors/PISTA/TICPhysics.cxx b/NPLib/Detectors/PISTA/TICPhysics.cxx
index a4097a504c20469497aeb45bd921963ec5a7c612..c905cf16a25a1716af8a7b21396c65017eebfacb 100644
--- a/NPLib/Detectors/PISTA/TICPhysics.cxx
+++ b/NPLib/Detectors/PISTA/TICPhysics.cxx
@@ -96,7 +96,7 @@ void TICPhysics::BuildPhysicalEvent() {
     fIC_raw[i] = m_PreTreatedData->GetIC_Charge(i);
     fIC[i] = gain*m_PreTreatedData->GetIC_Charge(i);
     fIC_Init[i] = GainInit * m_PreTreatedData->GetIC_Charge(i);
-
+    fIC_TS.push_back(m_PreTreatedData->GetIC_TS(i));
   }
 
 
@@ -168,9 +168,11 @@ void TICPhysics::PreTreat() {
     //cout << section << " " << gain << endl;
     //double charge = gain*m_EventData->GetIC_Charge(i);
     double charge = m_EventData->GetIC_Charge(i);
+    long TS = m_EventData->GetIC_TS(i);
 
     m_PreTreatedData->SetIC_Charge(charge);
     m_PreTreatedData->SetIC_Section(segment);
+    m_PreTreatedData->SetIC_TS(TS);
   }
 }
 
@@ -319,6 +321,8 @@ void TICPhysics::Clear() {
     fIC_raw[i] = 0;
     fIC_Init[i] = 0;
   }
+
+  fIC_TS.clear();
 }
 
 
diff --git a/NPLib/Detectors/PISTA/TICPhysics.h b/NPLib/Detectors/PISTA/TICPhysics.h
index 5866e24a46b10c703802b025643742b7c4fbba1a..c02c89ab1ccfbd4a6c7ef8fee2935fb7f8f7405b 100644
--- a/NPLib/Detectors/PISTA/TICPhysics.h
+++ b/NPLib/Detectors/PISTA/TICPhysics.h
@@ -66,6 +66,9 @@ class TICPhysics : public TObject, public NPL::VDetector {
     double Etot;
     double EtotInit;
     double Chio_Z;
+    
+    vector<long> fIC_TS;
+
     double fIC[11];
     double fIC_raw[11]; 
     double fIC_Init[11];//! 
diff --git a/NPLib/Detectors/PISTA/TTimeData.cxx b/NPLib/Detectors/PISTA/TTimeData.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..0ceb7608ec545e1859a83bdfe4d90b062644b272
--- /dev/null
+++ b/NPLib/Detectors/PISTA/TTimeData.cxx
@@ -0,0 +1,73 @@
+/*****************************************************************************
+ * Copyright (C) 2009-2020   this file is part of the NPTool Project         *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Théodore Efremov contact address: theodore.efremov@cea.fr*
+ *                                                                           *
+ * Creation Date  : Nov 2024                                                 *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class hold Time Raw data                                            *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *   
+ *                                                                           *
+ *****************************************************************************/
+#include "TTimeData.h"
+
+#include <iostream>
+#include <fstream>
+#include <sstream>
+#include <string>
+using namespace std; 
+
+ClassImp(TTimeData)
+
+
+//////////////////////////////////////////////////////////////////////
+TTimeData::TTimeData() {
+}
+
+
+
+//////////////////////////////////////////////////////////////////////
+TTimeData::~TTimeData() {
+}
+
+
+
+//////////////////////////////////////////////////////////////////////
+void TTimeData::Clear() {
+  fTS_MWPC13.clear();
+  fTS_MWPC14.clear();
+  fTS_MWPC23.clear();
+  fTS_MWPC24.clear();
+
+  fTime_MWPC13.clear();
+  fTime_MWPC14.clear();
+  fTime_MWPC23.clear();
+  fTime_MWPC24.clear();
+}
+
+
+
+//////////////////////////////////////////////////////////////////////
+void TTimeData::Dump() const {
+  // This method is very useful for debuging and worth the dev.
+  cout << "XXXXXXXXXXXXXXXXXXXXXXXX New Event [TTimeData::Dump()] XXXXXXXXXXXXXXXXX" << endl;
+
+  size_t mysize = fTime_MWPC13.size();
+  cout << "MWPC_Mult: " << mysize << endl;
+  for(unsigned int i=0; i<mysize; i++){
+    cout << "Time 13 mult " << i+1 << " / T= " << fTime_MWPC13[i] << endl;
+    cout << "Time 14 mult " << i+1 << " / T= " << fTime_MWPC14[i] << endl;
+    cout << "Time 23 mult " << i+1 << " / T= " << fTime_MWPC23[i] << endl;
+    cout << "Time 24 mult " << i+1 << " / T= " << fTime_MWPC24[i] << endl;
+  }
+}
diff --git a/NPLib/Detectors/PISTA/TTimeData.h b/NPLib/Detectors/PISTA/TTimeData.h
new file mode 100644
index 0000000000000000000000000000000000000000..2d036067cba9fca09e7d971c3933f5f42d82ddb9
--- /dev/null
+++ b/NPLib/Detectors/PISTA/TTimeData.h
@@ -0,0 +1,118 @@
+#ifndef __TIMEDATA__
+#define __TIMEDATA__
+/*****************************************************************************
+ * Copyright (C) 2009-2020   this file is part of the NPTool Project       *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Théodore Efremov  contact address: theodore.efremov@cea.fr                        *
+ *                                                                           *
+ * Creation Date  : Oct 2023                                           *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class hold Time Raw data                                    *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *   
+ *                                                                           *
+ *****************************************************************************/
+
+// STL
+#include <vector>
+using namespace std;
+
+// ROOT
+#include "TObject.h"
+
+class TTimeData : public TObject {
+    //////////////////////////////////////////////////////////////
+    // data members are hold into vectors in order 
+    // to allow multiplicity treatment
+    private: 
+        vector<long> fTS_MWPC13;
+        vector<long> fTS_MWPC14;
+        vector<long> fTS_MWPC23;
+        vector<long> fTS_MWPC24;
+
+        vector<float> fTime_MWPC13;
+        vector<float> fTime_MWPC14;
+        vector<float> fTime_MWPC23;
+        vector<float> fTime_MWPC24;
+
+
+
+
+        //////////////////////////////////////////////////////////////
+        // Constructor and destructor
+    public: 
+        TTimeData();
+        ~TTimeData();
+
+
+        //////////////////////////////////////////////////////////////
+        // Inherited from TObject and overriden to avoid warnings
+    public:
+        void Clear();
+        void Clear(const Option_t*) {};
+        void Dump() const;
+
+
+        //////////////////////////////////////////////////////////////
+        // Getters and Setters
+        // Prefer inline declaration to avoid unnecessary called of 
+        // frequently used methods
+        // add //! to avoid ROOT creating dictionnary for the methods
+    public:
+        //////////////////////    SETTERS    ////////////////////////
+        // X setters
+        inline void SetTS_MWPC13(long time ){fTS_MWPC13.push_back(time);};//!
+        inline void SetTS_MWPC14(long time ){fTS_MWPC14.push_back(time);};//!
+        inline void SetTS_MWPC23(long time ){fTS_MWPC23.push_back(time);};//!
+        inline void SetTS_MWPC24(long time ){fTS_MWPC24.push_back(time);};//!
+
+        inline void SetTime_MWPC13(float time ){fTime_MWPC13.push_back(time);};//!
+        inline void SetTime_MWPC14(float time ){fTime_MWPC14.push_back(time);};//!
+        inline void SetTime_MWPC23(float time ){fTime_MWPC23.push_back(time);};//!
+        inline void SetTime_MWPC24(float time ){fTime_MWPC24.push_back(time);};//!
+
+
+
+        //////////////////////    GETTERS    ////////////////////////
+        inline long GetTS_MWPC13(const unsigned int &i) const
+        {return fTS_MWPC13.at(i) ;}//!
+        inline long GetTS_MWPC14(const unsigned int &i) const
+        {return fTS_MWPC14.at(i) ;}//!
+        inline long GetTS_MWPC23(const unsigned int &i) const
+        {return fTS_MWPC23.at(i) ;}//!
+        inline long GetTS_MWPC24(const unsigned int &i) const
+        {return fTS_MWPC24.at(i) ;}//!
+
+        inline float GetTime_MWPC13(const unsigned int &i) const
+        {return fTime_MWPC13.at(i) ;}//!
+        inline float GetTime_MWPC14(const unsigned int &i) const
+        {return fTime_MWPC14.at(i) ;}//!
+        inline float GetTime_MWPC23(const unsigned int &i) const
+        {return fTime_MWPC23.at(i) ;}//!
+        inline float GetTime_MWPC24(const unsigned int &i) const
+        {return fTime_MWPC24.at(i) ;}//!
+         
+        inline Int_t GetMWPC13Mult() const
+        {return static_cast<int>(fTime_MWPC13.size());}         
+        inline Int_t GetMWPC14Mult() const
+        {return static_cast<int>(fTime_MWPC14.size());}        
+        inline Int_t GetMWPC23Mult() const
+        {return static_cast<int>(fTime_MWPC23.size());}        
+        inline Int_t GetMWPC24Mult() const
+        {return static_cast<int>(fTime_MWPC24.size());}
+
+        //////////////////////////////////////////////////////////////
+        // Required for ROOT dictionnary
+        ClassDef(TTimeData,1)  // TimeData structure
+};
+
+#endif
diff --git a/NPSimulation/Detectors/Actar/Actar.cc b/NPSimulation/Detectors/Actar/Actar.cc
index 15ee6ccbaf7e63335db490c69ead96e0e547fafe..d5374006eee66af72f07730fc85971bad4b48301 100644
--- a/NPSimulation/Detectors/Actar/Actar.cc
+++ b/NPSimulation/Detectors/Actar/Actar.cc
@@ -269,7 +269,7 @@ G4LogicalVolume* Actar::BuildDetector() {
     MPT->AddConstProperty("DE_YIELD", 3e-1, true);
     // MPT->AddConstProperty("DE_AMPLIFICATION",2,true);
     MPT->AddConstProperty("DE_ABSLENGTH", 1 * pc, true);
-    MPT->AddConstProperty("DE_DRIFTSPEED", 0.8 * cm / microsecond, true);
+    MPT->AddConstProperty("DE_DRIFTSPEED", 1.28 * cm / microsecond, true);
     MPT->AddConstProperty("DE_TRANSVERSALSPREAD", 2e-5 * mm2 / ns, true);
     MPT->AddConstProperty("DE_LONGITUDINALSPREAD", 4e-6 * mm2 / ns, true);
     DriftGasMaterial->SetMaterialPropertiesTable(MPT);
@@ -349,7 +349,7 @@ G4LogicalVolume* Actar::BuildDetector() {
      logicWindows,
      "ActarEntranceWindows",m_SquareDetector,false,0);*/
 
-    G4ElectricField* field = new G4UniformElectricField(G4ThreeVector(0.0, -400 * volt / cm, 0.0));
+    G4ElectricField* field = new G4UniformElectricField(G4ThreeVector(0.0, -70 * volt / cm, 0.0));
     // Create an equation of motion for this field
     G4EqMagElectricField* Equation = new G4EqMagElectricField(field);
     G4MagIntegratorStepper* Stepper = new G4ClassicalRK4(Equation, 8);
diff --git a/Projects/AlPhaPha/2024/Analysis.cxx b/Projects/AlPhaPha/2024/Analysis.cxx
index 25794b9444ff71f85c921f2e367beb1cc3117448..f9927ec6b0394f8d2004217309603481f8e6115b 100644
--- a/Projects/AlPhaPha/2024/Analysis.cxx
+++ b/Projects/AlPhaPha/2024/Analysis.cxx
@@ -1,4 +1,4 @@
-/*****************************************************************************
+/****************************************************************************
  * Copyright (C) 2009-2016    this file is part of the NPTool Project        *
  *                                                                           *
  * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
@@ -406,416 +406,477 @@ void Analysis::TwoAlphaAnalysis(){
 
 /////////////////////////////////////////////////////////////////////////////////
 void Analysis::VamosAnalysis(){
-  if(abs(FPMW->XtLin)<5 && abs(FPMW->YtLin)<5){
-    //XTarget = FPMW->Xt*cos(20*deg+FPMW->Theta_in)/cos(FPMW->Theta_in);
-    XTarget = FPMW->Xt*(cos(FPMW->Theta_in)/cos(20*deg+FPMW->Theta_in));
-    YTarget = FPMW->Yt;
+    if(abs(FPMW->XtLin)<5 && abs(FPMW->YtLin)<5){
+        //XTarget = FPMW->Xt*cos(20*deg+FPMW->Theta_in)/cos(FPMW->Theta_in);
+        XTarget = FPMW->Xt*(cos(FPMW->Theta_in)/cos(20*deg+FPMW->Theta_in));
+        YTarget = FPMW->Yt;
+
+        XTargetLin = FPMW->XtLin*(cos(FPMW->Theta_in_Lin)/cos(20*deg+FPMW->Theta_in_Lin));
+        YTargetLin = FPMW->YtLin;
+        ZTarget = 0;
+
+        FF_Theta = FPMW->Theta_in+m_Vamos_Angle*deg;
+        FF_Phi = FPMW->Phi_in;
+
+        Xmean_iter += XTarget;
+        Ymean_iter += YTarget;
+        Xmean_iterLin += XTargetLin;
+        Ymean_iterLin += YTargetLin;
+
+        iteration++;
+        if(iteration%100==0){
+            Xmean = Xmean_iter/iteration;
+            Ymean = Ymean_iter/iteration;
+
+            XmeanLin = Xmean_iterLin/iteration;
+            YmeanLin = Ymean_iterLin/iteration;
+
+            iteration = 0;
+            Xmean_iter = 0;
+            Ymean_iter = 0;
+
+
+            Xmean_iterLin = 0;
+            Ymean_iterLin = 0;
+        }
+    } //If some linearisation is done 
+    else{
+        XTargetLin = XmeanLin;
+        YTargetLin = YmeanLin;
+        XTarget = Xmean;
+        YTarget = Ymean;
+        ZTarget = 0;
+    }
 
-    XTargetLin = FPMW->XtLin*(cos(FPMW->Theta_in_Lin)/cos(20*deg+FPMW->Theta_in_Lin));
-    YTargetLin = FPMW->YtLin;
-    ZTarget = 0;
+    XTarget += m_XTarget_offset;
+    YTarget += m_YTarget_offset;
+    ZTarget += m_ZTarget_offset;
 
-    FF_Theta = FPMW->Theta_in+m_Vamos_Angle*deg;
-    FF_Phi = FPMW->Phi_in;
+    XTargetLin += m_XTarget_offset;
+    YTargetLin += m_YTarget_offset +0.2;
 
-    Xmean_iter += XTarget;
-    Ymean_iter += YTarget;
-    Xmean_iterLin += XTargetLin;
-    Ymean_iterLin += YTargetLin;
+    //cout << XTarget << endl;
 
-    iteration++;
-    if(iteration%100==0){
-      Xmean = Xmean_iter/iteration;
-      Ymean = Ymean_iter/iteration;
 
-      XmeanLin = Xmean_iterLin/iteration;
-      YmeanLin = Ymean_iterLin/iteration;
+    PositionOnTarget = TVector3(XTarget,YTarget,ZTarget);
+    PositionOnTargetLin = TVector3(XTargetLin,YTargetLin,ZTarget);
 
-      iteration = 0;
-      Xmean_iter = 0;
-      Ymean_iter = 0;
+    if( MTOF_FP0_T0VM == 1 && MTOF_FP0_T1VM ==1 ){
 
 
-      Xmean_iterLin = 0;
-      Ymean_iterLin = 0;
-    }
-  } //If some linearisation is done 
-  else{
-    XTargetLin = XmeanLin;
-    YTargetLin = YmeanLin;
-    XTarget = Xmean;
-    YTarget = Ymean;
-    ZTarget = 0;
-  }
+        UShort_t FPMWPat = MTOF_FP0_T0VN[0]; //20 section
+        FPMW_Section = FPMWPat;
+        IC->SetFPMWSection(FPMW_Section);
+        IC->BuildSimplePhysicalEvent();
+        double Theta = -1000;
 
-  XTarget += m_XTarget_offset;
-  YTarget += m_YTarget_offset;
-  ZTarget += m_ZTarget_offset;
 
-  XTargetLin += m_XTarget_offset;
-  YTargetLin += m_YTarget_offset +0.2;
+        if(FPMW->Xf!=-1000){
 
-  //cout << XTarget << endl;
+            FF_DE   = IC->DE;
+            FF_Eres = IC->Eres;
 
+            Tracking->CalculateReconstruction(FPMW->Xf, 1000*FPMW->Thetaf, m_Brho_ref, FF_Brho, Theta, FF_Path);
+            // FF_Path is in cm !
+            //
+            FF_Y1  = FPMW->PositionY[0];
+            FF_Y3  = FPMW->PositionY[2];
 
-  PositionOnTarget = TVector3(XTarget,YTarget,ZTarget);
-  PositionOnTargetLin = TVector3(XTargetLin,YTargetLin,ZTarget);
+            FF_IC_Y = FPMW->Yf + (1442.6+6774.4-7600)*tan(FPMW->Phif/1000);
+            FF_IC_X = FPMW->Xf + (1442.6+6774.4-7600)*tan(FPMW->Thetaf/1000);
 
-  if( MTOF_FP0_T0VM == 1 ){
+            // T13 //
+            double path1 = FPMW->GetDetectorPositionZ(0)/10./cos(FPMW->Theta_in)/cos(FPMW->Phi_in);
+            double path2 = (FPMW->GetDetectorPositionZ(2)-7600)/10./cos(FPMW->Thetaf);
 
+            //Toff
+            vector<double> Toff13 , Toff14, Toff23, Toff24;
+            const char* Path13 = "macro/mwpc/Toff/output/Toff13.txt";
+            const char* Path14 = "macro/mwpc/Toff/output/Toff14.txt";
+            const char* Path23 = "macro/mwpc/Toff/output/Toff23.txt";
+            const char* Path24 = "macro/mwpc/Toff/output/Toff24.txt";
 
-    UShort_t FPMWPat = MTOF_FP0_T0VN[0]; //20 section
-    FPMW_Section = FPMWPat;
-    IC->SetFPMWSection(FPMW_Section);
-    IC->BuildSimplePhysicalEvent();
-    double Theta = -1000;
-    if(FPMW->Xf!=-1000){
+            Toff13 = TxtToVector(Path13);
+            Toff14 = TxtToVector(Path14);
+            Toff23 = TxtToVector(Path23);
+            Toff24 = TxtToVector(Path24);
 
-      FF_DE   = IC->DE;
-      FF_Eres = IC->Eres;
+            double Toff[20] = {0, 588.0, 588.5, 587.95, 588.04, 587.72, 587.92, 587.9, 587.9, 588.66, 588.80, 588.67, 588.64, 588.75, 588.47, 588.65, 588.65, 588.67, 589.05, 590.3};
+            // To know time of electron drift in a section of the chio
+            for (int seg = 0 ; seg < IC->fIC_TS.size() ; seg++){
+                if (FPMW_Section != 0){
+                    FF_DriftTime.push_back(10* (IC->fIC_TS.at(seg) - Time->GetTS_MWPC13(0) - ((Time->GetTime_MWPC14(0)-Toff14.at(FPMW_Section-1)) - (Time->GetTime_MWPC13(0)- Toff13.at(FPMW_Section-1)))));
+                }
+                else { 
+                    FF_DriftTime.push_back(10* (IC->fIC_TS.at(seg) - Time->GetTS_MWPC13(0) - ((Time->GetTime_MWPC14(0)) - (Time->GetTime_MWPC13(0)))));
+                }
+            }
 
-      Tracking->CalculateReconstruction(FPMW->Xf, 1000*FPMW->Thetaf, m_Brho_ref, FF_Brho, Theta, FF_Path);
-      // FF_Path is in cm ! 
 
-      FF_Y1  = FPMW->PositionY[0];
-      FF_Y3  = FPMW->PositionY[2];
 
-      FF_IC_Y = FPMW->Yf + (1442.6+6774.4-7600)*tan(FPMW->Phif/1000);
-      FF_IC_X = FPMW->Xf + (1442.6+6774.4-7600)*tan(FPMW->Thetaf/1000);
 
-      // T13 //
-      double path1 = FPMW->GetDetectorPositionZ(0)/10./cos(FPMW->Theta_in)/cos(FPMW->Phi_in);
-      double path2 = (FPMW->GetDetectorPositionZ(2)-7600)/10./cos(FPMW->Thetaf);
-      
-      //Online
+            FF_T13 = - MTOF_FP0_T0V[0] + Toff[FPMWPat];
+            FF_D13 = FF_Path - path1 + path2; 
+            FF_V13 = FF_D13/FF_T13;
+            FF_Beta13 = FF_V13/29.9792458;
+            FF_Gamma13 = 1./sqrt(1.0-FF_Beta13*FF_Beta13);
 
-      double Toff[20] = {0, 588.0, 588.5, 587.95, 588.04, 587.72, 587.92, 587.9, 587.9, 588.66, 588.80, 588.67, 588.64, 588.75, 588.47, 588.65, 588.65, 588.67, 589.05, 590.3};
 
+            FF_AoQ13 = (FF_Brho/(3.107*FF_Beta13*FF_Gamma13));
+            FF_M13 = IC->EtotInit/(931.5016*(FF_Gamma13-1.));
+            FF_Q13 = FF_M13/FF_AoQ13;
 
-      FF_T13 = - MTOF_FP0_T0V[0] + Toff[FPMWPat];
-      FF_D13 = FF_Path - path1 + path2; 
-      FF_V13 = FF_D13/FF_T13;
-      FF_Beta13 = FF_V13/29.9792458;
-      FF_Gamma13 = 1./sqrt(1.0-FF_Beta13*FF_Beta13);
-      
+            FF_Mass13 = int(FF_Q13+0.5)*FF_AoQ13;
 
-      FF_AoQ13 = (FF_Brho/(3.107*FF_Beta13*FF_Gamma13));
-      FF_M13 = IC->EtotInit/(931.5016*(FF_Gamma13-1.));
-      FF_Q13 = FF_M13/FF_AoQ13;
+            //FF_DriftTime[FPMW_Section] = 10*(fVAMOS_TS_sec[FPMW_Section]- MT)
+        }
+    }
+    else{
+        FPMW_Section = -1;
+    }
 
-      FF_Mass13 = int(FF_Q13+0.5)*FF_AoQ13;
+}
 
-      //FF_DriftTime[FPMW_Section] = 10*(fVAMOS_TS_sec[FPMW_Section]- MT)
+vector<double> Analysis::TxtToVector(const char *Path){
+    string line;
+    vector<double> values;
+    ifstream file(Path); 
+
+    if (file.is_open()) {
+        while (std::getline(file, line)) {
+            try {
+                values.push_back(std::stod(line));
+            } catch (const std::invalid_argument& e) {
+                std::cerr << "Invalid number in line: " << line << '\n';
+            }
+        }
+        file.close();
+    } else {
+        std::cerr << "Error opening file.\n";
     }
-  }
-  else{
-    FPMW_Section = -1;
-  }
-}
 
+    return values;
+}
 
 ////////////////////////////////////////////////////////////////////////////////
 void Analysis::InitOutputBranch(){
-  RootOutput::getInstance()->GetTree()->Branch("BeamEnergy",&BeamEnergy,"BeamEnergy/D");
-
-  RootOutput::getInstance()->GetTree()->Branch("XTarget",&XTarget,"XTarget/D");
-  RootOutput::getInstance()->GetTree()->Branch("XTargetLin",&XTargetLin,"XTargetLin/D");
-  RootOutput::getInstance()->GetTree()->Branch("YTarget",&YTarget,"YTarget/D");
-  RootOutput::getInstance()->GetTree()->Branch("YTargetLin",&YTargetLin,"YTargetLin/D");
-  RootOutput::getInstance()->GetTree()->Branch("ZTarget",&ZTarget,"ZTarget/D");
-
-  RootOutput::getInstance()->GetTree()->Branch("Ex242Pu",&Ex242Pu,"Ex242Pu/D");
-  RootOutput::getInstance()->GetTree()->Branch("Ex240Pu",&Ex240Pu,"Ex240Pu/D");
-  RootOutput::getInstance()->GetTree()->Branch("Ex240PuLin",&Ex240PuLin,"Ex240PuLin/D");
-  RootOutput::getInstance()->GetTree()->Branch("Ex236U",&Ex236U,"Ex236U/D");
-  RootOutput::getInstance()->GetTree()->Branch("Ex238U",&Ex238U,"Ex238U/D");
-  
-  RootOutput::getInstance()->GetTree()->Branch("DeltaE",&DeltaE,"DeltaE/D");
-  RootOutput::getInstance()->GetTree()->Branch("DeltaEcorr",&DeltaEcorr,"DeltaEcorr/D");
-  RootOutput::getInstance()->GetTree()->Branch("Eres",&Eres,"Eres/D");
-
-  RootOutput::getInstance()->GetTree()->Branch("Telescope",&Telescope,"Telescope/I");
-  RootOutput::getInstance()->GetTree()->Branch("PID",&PID,"PID/D");
-  
-  RootOutput::getInstance()->GetTree()->Branch("Elab",&Elab,"Elab/D");
-  RootOutput::getInstance()->GetTree()->Branch("ThetaLab",&ThetaLab,"ThetaLab/D");
-  
-  RootOutput::getInstance()->GetTree()->Branch("Beta_pista",&Beta_pista,"Beta_pista/D");
-  RootOutput::getInstance()->GetTree()->Branch("ThetaLabLin",&ThetaLabLin,"ThetaLabLin/D");
-  RootOutput::getInstance()->GetTree()->Branch("ThetaDetectorSurface",&ThetaDetectorSurface,"ThetaDetectorSurface/D");
-  RootOutput::getInstance()->GetTree()->Branch("PhiLab",&PhiLab,"PhiLab/D");
-  RootOutput::getInstance()->GetTree()->Branch("ThetaCM",&ThetaCM,"ThetaCM/D");
-  
-  RootOutput::getInstance()->GetTree()->Branch("Xcalc",&Xcalc,"Xcalc/D");
-  RootOutput::getInstance()->GetTree()->Branch("Ycalc",&Ycalc,"Ycalc/D");
-  RootOutput::getInstance()->GetTree()->Branch("Zcalc",&Zcalc,"Zcalc/D");
-  
-  RootOutput::getInstance()->GetTree()->Branch("strip_DE",&strip_DE,"strip_DE/I");
-  RootOutput::getInstance()->GetTree()->Branch("strip_E",&strip_E,"strip_E/I");
-  RootOutput::getInstance()->GetTree()->Branch("Time_E",&Time_E,"Time_E/D");
-
-  RootOutput::getInstance()->GetTree()->Branch("Pista_Time_Target",&Pista_Time_Target,"Pista_Time_Target/D");
-  RootOutput::getInstance()->GetTree()->Branch("Vamos_Time_Target",&Vamos_Time_Target,"Vamos_Time_Target/D");
-
-  RootOutput::getInstance()->GetTree()->Branch("FF_DE",&FF_DE,"FF_DE/D");
-  RootOutput::getInstance()->GetTree()->Branch("FF_Eres",&FF_Eres,"FF_Eres/D");
-  RootOutput::getInstance()->GetTree()->Branch("FF_Z",&FF_Z,"FF_Z/D");
-  RootOutput::getInstance()->GetTree()->Branch("FF_Theta",&FF_Theta,"FF_Theta/D");
-  RootOutput::getInstance()->GetTree()->Branch("FF_Phi",&FF_Phi,"FF_Phi/D");
-  RootOutput::getInstance()->GetTree()->Branch("FF_Brho",&FF_Brho,"FF_Brho/D");
-  RootOutput::getInstance()->GetTree()->Branch("FF_Path",&FF_Path,"FF_Path/D");
-
-  RootOutput::getInstance()->GetTree()->Branch("FF_Y1",&FF_Y1,"FF_Y1/D");
-  RootOutput::getInstance()->GetTree()->Branch("FF_Y3",&FF_Y3,"FF_Y3/D");
-  RootOutput::getInstance()->GetTree()->Branch("FF_IC_Y",&FF_IC_Y,"FF_IC_Y/D");
-  RootOutput::getInstance()->GetTree()->Branch("FF_IC_X",&FF_IC_X,"FF_IC_X/D");
-  RootOutput::getInstance()->GetTree()->Branch("FF_D13",&FF_D13,"FF_D13/D");
-  RootOutput::getInstance()->GetTree()->Branch("FF_T13",&FF_T13,"FF_T13/D");
-  RootOutput::getInstance()->GetTree()->Branch("FF_V13",&FF_V13,"FF_V13/D");
-  RootOutput::getInstance()->GetTree()->Branch("FF_AoQ13",&FF_AoQ13,"FF_AoQ13/D");
-  RootOutput::getInstance()->GetTree()->Branch("FF_Beta13",&FF_Beta13,"FF_Beta13/D");
-  RootOutput::getInstance()->GetTree()->Branch("FF_Gamma13",&FF_Gamma13,"FF_Gamma13/D");
-  RootOutput::getInstance()->GetTree()->Branch("FF_Q13",&FF_Q13,"FF_Q13/D");
-  RootOutput::getInstance()->GetTree()->Branch("FF_M13",&FF_M13,"FF_M13/D");
-  RootOutput::getInstance()->GetTree()->Branch("FF_Mass13",&FF_Mass13,"FF_Mass13/D");
-
-  RootOutput::getInstance()->GetTree()->Branch("FPMW_Section",&FPMW_Section,"FPMW_Section/I");
-
-  RootOutput::getInstance()->GetTree()->Branch("theta_lab_fission",&theta_lab_fission,"theta_lab_fission/D");
-  RootOutput::getInstance()->GetTree()->Branch("theta_cm_fission",&theta_cm_fission,"theta_cm_fission/D");
-  RootOutput::getInstance()->GetTree()->Branch("theta_240Pu",&theta_240Pu,"theta_240Pu/D");
-  RootOutput::getInstance()->GetTree()->Branch("phi_240Pu",&phi_240Pu,"phi_240Pu/D");
-  RootOutput::getInstance()->GetTree()->Branch("beta_240Pu",&beta_240Pu,"beta_240Pu/D");
-  RootOutput::getInstance()->GetTree()->Branch("gamma_240Pu",&gamma_240Pu,"gamma_240Pu/D");
-  RootOutput::getInstance()->GetTree()->Branch("gamma_lab_ff",&gamma_lab_ff,"gamma_lab_ff/D");
-  RootOutput::getInstance()->GetTree()->Branch("gamma_cm_ff",&gamma_cm_ff,"gamma_cm_ff/D");
-  RootOutput::getInstance()->GetTree()->Branch("beta_lab_ff",&beta_lab_ff,"beta_lab_ff/D");
-  RootOutput::getInstance()->GetTree()->Branch("beta_cm_ff",&beta_cm_ff,"beta_cm_ff/D");
-
-  RootOutput::getInstance()->GetTree()->Branch("Elab1",&Elab1);
-  RootOutput::getInstance()->GetTree()->Branch("Elab2",&Elab2);
-  RootOutput::getInstance()->GetTree()->Branch("m_2alpha",&m_2alpha,"m_2alpha/I");
-
-  RootOutput::getInstance()->GetTree()->Branch("Exo_cosa",&Exo_cosa,"Exo_cosa/D");
-  RootOutput::getInstance()->GetTree()->Branch("Exo_E",&Exo_E,"Exo_E/D");
-  RootOutput::getInstance()->GetTree()->Branch("Exo_EDC_vamos",&Exo_EDC_vamos,"Exo_EDC_vamos/D");
-  RootOutput::getInstance()->GetTree()->Branch("Exo_EDC_pista",&Exo_EDC_pista,"Exo_EDC_pista/D");
-  RootOutput::getInstance()->GetTree()->Branch("Exo_Theta",&Exo_Theta,"Exo_Theta/D");
-  RootOutput::getInstance()->GetTree()->Branch("Exo_Phi",&Exo_Phi,"Exo_Phi/D");
-
-  RootOutput::getInstance()->GetTree()->Branch("VAMOS_TS_hour",&VAMOS_TS_hour,"VAMOS_TS_hour/D");
-  RootOutput::getInstance()->GetTree()->Branch("PISTA_TS_hour",&PISTA_TS_hour,"PISTA_TS_hour/D");
+    RootOutput::getInstance()->GetTree()->Branch("Time",&Time);
+
+    RootOutput::getInstance()->GetTree()->Branch("BeamEnergy",&BeamEnergy,"BeamEnergy/D");
+
+    RootOutput::getInstance()->GetTree()->Branch("XTarget",&XTarget,"XTarget/D");
+    RootOutput::getInstance()->GetTree()->Branch("XTargetLin",&XTargetLin,"XTargetLin/D");
+    RootOutput::getInstance()->GetTree()->Branch("YTarget",&YTarget,"YTarget/D");
+    RootOutput::getInstance()->GetTree()->Branch("YTargetLin",&YTargetLin,"YTargetLin/D");
+    RootOutput::getInstance()->GetTree()->Branch("ZTarget",&ZTarget,"ZTarget/D");
+
+    RootOutput::getInstance()->GetTree()->Branch("Ex242Pu",&Ex242Pu,"Ex242Pu/D");
+    RootOutput::getInstance()->GetTree()->Branch("Ex240Pu",&Ex240Pu,"Ex240Pu/D");
+    RootOutput::getInstance()->GetTree()->Branch("Ex240PuLin",&Ex240PuLin,"Ex240PuLin/D");
+    RootOutput::getInstance()->GetTree()->Branch("Ex236U",&Ex236U,"Ex236U/D");
+    RootOutput::getInstance()->GetTree()->Branch("Ex238U",&Ex238U,"Ex238U/D");
+
+    RootOutput::getInstance()->GetTree()->Branch("DeltaE",&DeltaE,"DeltaE/D");
+    RootOutput::getInstance()->GetTree()->Branch("DeltaEcorr",&DeltaEcorr,"DeltaEcorr/D");
+    RootOutput::getInstance()->GetTree()->Branch("Eres",&Eres,"Eres/D");
+
+    RootOutput::getInstance()->GetTree()->Branch("Telescope",&Telescope,"Telescope/I");
+    RootOutput::getInstance()->GetTree()->Branch("PID",&PID,"PID/D");
+
+    RootOutput::getInstance()->GetTree()->Branch("Elab",&Elab,"Elab/D");
+    RootOutput::getInstance()->GetTree()->Branch("ThetaLab",&ThetaLab,"ThetaLab/D");
+
+    RootOutput::getInstance()->GetTree()->Branch("Beta_pista",&Beta_pista,"Beta_pista/D");
+    RootOutput::getInstance()->GetTree()->Branch("ThetaLabLin",&ThetaLabLin,"ThetaLabLin/D");
+    RootOutput::getInstance()->GetTree()->Branch("ThetaDetectorSurface",&ThetaDetectorSurface,"ThetaDetectorSurface/D");
+    RootOutput::getInstance()->GetTree()->Branch("PhiLab",&PhiLab,"PhiLab/D");
+    RootOutput::getInstance()->GetTree()->Branch("ThetaCM",&ThetaCM,"ThetaCM/D");
+
+    RootOutput::getInstance()->GetTree()->Branch("Xcalc",&Xcalc,"Xcalc/D");
+    RootOutput::getInstance()->GetTree()->Branch("Ycalc",&Ycalc,"Ycalc/D");
+    RootOutput::getInstance()->GetTree()->Branch("Zcalc",&Zcalc,"Zcalc/D");
+
+    RootOutput::getInstance()->GetTree()->Branch("strip_DE",&strip_DE,"strip_DE/I");
+    RootOutput::getInstance()->GetTree()->Branch("strip_E",&strip_E,"strip_E/I");
+    RootOutput::getInstance()->GetTree()->Branch("Time_E",&Time_E,"Time_E/D");
+
+    RootOutput::getInstance()->GetTree()->Branch("Pista_Time_Target",&Pista_Time_Target,"Pista_Time_Target/D");
+    RootOutput::getInstance()->GetTree()->Branch("Vamos_Time_Target",&Vamos_Time_Target,"Vamos_Time_Target/D");
+
+    RootOutput::getInstance()->GetTree()->Branch("FF_DE",&FF_DE,"FF_DE/D");
+    RootOutput::getInstance()->GetTree()->Branch("FF_Eres",&FF_Eres,"FF_Eres/D");
+    RootOutput::getInstance()->GetTree()->Branch("FF_Z",&FF_Z,"FF_Z/D");
+    RootOutput::getInstance()->GetTree()->Branch("FF_Theta",&FF_Theta,"FF_Theta/D");
+    RootOutput::getInstance()->GetTree()->Branch("FF_Phi",&FF_Phi,"FF_Phi/D");
+    RootOutput::getInstance()->GetTree()->Branch("FF_Brho",&FF_Brho,"FF_Brho/D");
+    RootOutput::getInstance()->GetTree()->Branch("FF_Path",&FF_Path,"FF_Path/D");
+
+    RootOutput::getInstance()->GetTree()->Branch("FF_DriftTime",&FF_DriftTime);
+    RootOutput::getInstance()->GetTree()->Branch("FF_Y1",&FF_Y1,"FF_Y1/D");
+    RootOutput::getInstance()->GetTree()->Branch("FF_Y3",&FF_Y3,"FF_Y3/D");
+    RootOutput::getInstance()->GetTree()->Branch("FF_IC_Y",&FF_IC_Y,"FF_IC_Y/D");
+    RootOutput::getInstance()->GetTree()->Branch("FF_IC_X",&FF_IC_X,"FF_IC_X/D");
+    RootOutput::getInstance()->GetTree()->Branch("FF_D13",&FF_D13,"FF_D13/D");
+    RootOutput::getInstance()->GetTree()->Branch("FF_T13",&FF_T13,"FF_T13/D");
+    RootOutput::getInstance()->GetTree()->Branch("FF_V13",&FF_V13,"FF_V13/D");
+    RootOutput::getInstance()->GetTree()->Branch("FF_AoQ13",&FF_AoQ13,"FF_AoQ13/D");
+    RootOutput::getInstance()->GetTree()->Branch("FF_Beta13",&FF_Beta13,"FF_Beta13/D");
+    RootOutput::getInstance()->GetTree()->Branch("FF_Gamma13",&FF_Gamma13,"FF_Gamma13/D");
+    RootOutput::getInstance()->GetTree()->Branch("FF_Q13",&FF_Q13,"FF_Q13/D");
+    RootOutput::getInstance()->GetTree()->Branch("FF_M13",&FF_M13,"FF_M13/D");
+    RootOutput::getInstance()->GetTree()->Branch("FF_Mass13",&FF_Mass13,"FF_Mass13/D");
+
+    RootOutput::getInstance()->GetTree()->Branch("FPMW_Section",&FPMW_Section,"FPMW_Section/I");
+    RootOutput::getInstance()->GetTree()->Branch("MTOF_FP0_T0VM",&MTOF_FP0_T0VM,"MTOF_FP0_T0VM/I");
+    RootOutput::getInstance()->GetTree()->Branch("MTOF_FP0_T1VM",&MTOF_FP0_T1VM,"MTOF_FP0_T1VM/I");
+    RootOutput::getInstance()->GetTree()->Branch("MTOF_FP1_T0VM",&MTOF_FP1_T0VM,"MTOF_FP1_T0VM/I");
+    RootOutput::getInstance()->GetTree()->Branch("MTOF_FP1_T1VM",&MTOF_FP1_T1VM,"MTOF_FP1_T1VM/I");
+
+    RootOutput::getInstance()->GetTree()->Branch("MTOF_FP0_T0VN",&MTOF_FP0_T0VN,"MTOF_FP0_T0VN/I");
+    RootOutput::getInstance()->GetTree()->Branch("MTOF_FP0_T1VN",&MTOF_FP0_T1VN,"MTOF_FP0_T1VN/I");
+    RootOutput::getInstance()->GetTree()->Branch("MTOF_FP1_T0VN",&MTOF_FP1_T0VN,"MTOF_FP1_T0VN/I");
+    RootOutput::getInstance()->GetTree()->Branch("MTOF_FP1_T1VN",&MTOF_FP1_T1VN,"MTOF_FP1_T1VN/I");
+
+    RootOutput::getInstance()->GetTree()->Branch("theta_lab_fission",&theta_lab_fission,"theta_lab_fission/D");
+    RootOutput::getInstance()->GetTree()->Branch("theta_cm_fission",&theta_cm_fission,"theta_cm_fission/D");
+    RootOutput::getInstance()->GetTree()->Branch("theta_240Pu",&theta_240Pu,"theta_240Pu/D");
+    RootOutput::getInstance()->GetTree()->Branch("phi_240Pu",&phi_240Pu,"phi_240Pu/D");
+    RootOutput::getInstance()->GetTree()->Branch("beta_240Pu",&beta_240Pu,"beta_240Pu/D");
+    RootOutput::getInstance()->GetTree()->Branch("gamma_240Pu",&gamma_240Pu,"gamma_240Pu/D");
+    RootOutput::getInstance()->GetTree()->Branch("gamma_lab_ff",&gamma_lab_ff,"gamma_lab_ff/D");
+    RootOutput::getInstance()->GetTree()->Branch("gamma_cm_ff",&gamma_cm_ff,"gamma_cm_ff/D");
+    RootOutput::getInstance()->GetTree()->Branch("beta_lab_ff",&beta_lab_ff,"beta_lab_ff/D");
+    RootOutput::getInstance()->GetTree()->Branch("beta_cm_ff",&beta_cm_ff,"beta_cm_ff/D");
+
+    RootOutput::getInstance()->GetTree()->Branch("Elab1",&Elab1);
+    RootOutput::getInstance()->GetTree()->Branch("Elab2",&Elab2);
+    RootOutput::getInstance()->GetTree()->Branch("m_2alpha",&m_2alpha,"m_2alpha/I");
+
+    RootOutput::getInstance()->GetTree()->Branch("Exo_cosa",&Exo_cosa,"Exo_cosa/D");
+    RootOutput::getInstance()->GetTree()->Branch("Exo_E",&Exo_E,"Exo_E/D");
+    RootOutput::getInstance()->GetTree()->Branch("Exo_EDC_vamos",&Exo_EDC_vamos,"Exo_EDC_vamos/D");
+    RootOutput::getInstance()->GetTree()->Branch("Exo_EDC_pista",&Exo_EDC_pista,"Exo_EDC_pista/D");
+    RootOutput::getInstance()->GetTree()->Branch("Exo_Theta",&Exo_Theta,"Exo_Theta/D");
+    RootOutput::getInstance()->GetTree()->Branch("Exo_Phi",&Exo_Phi,"Exo_Phi/D");
+
+    RootOutput::getInstance()->GetTree()->Branch("VAMOS_TS_hour",&VAMOS_TS_hour,"VAMOS_TS_hour/D");
+    RootOutput::getInstance()->GetTree()->Branch("PISTA_TS_hour",&PISTA_TS_hour,"PISTA_TS_hour/D");
+
 
 
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 void Analysis::InitInputBranch(){
-  RootInput::getInstance()->GetChain()->SetBranchStatus("T_TMW0_FPMW0",true);
-  RootInput::getInstance()->GetChain()->SetBranchAddress("T_TMW0_FPMW0",&T13);
-
-  RootInput::getInstance()->GetChain()->SetBranchStatus("T_TMW0_FPMW1",true);
-  RootInput::getInstance()->GetChain()->SetBranchAddress("T_TMW0_FPMW1",&T14);
-
-  RootInput::getInstance()->GetChain()->SetBranchStatus("T_TMW1_FPMW0",true);
-  RootInput::getInstance()->GetChain()->SetBranchAddress("T_TMW1_FPMW0",&T23);
-
-  RootInput::getInstance()->GetChain()->SetBranchStatus("T_TMW1_FPMW1",true);
-  RootInput::getInstance()->GetChain()->SetBranchAddress("T_TMW1_FPMW1",&T24);
-
-  RootInput::getInstance()->GetChain()->SetBranchStatus("MTOF_FP0_T0VN",true);
-  RootInput::getInstance()->GetChain()->SetBranchAddress("MTOF_FP0_T0VN",&MTOF_FP0_T0VN);
-  RootInput::getInstance()->GetChain()->SetBranchStatus("MTOF_FP0_T1VN",true);
-  RootInput::getInstance()->GetChain()->SetBranchAddress("MTOF_FP0_T1VN",&MTOF_FP0_T1VN);
-  RootInput::getInstance()->GetChain()->SetBranchStatus("MTOF_FP1_T0VN",true);
-  RootInput::getInstance()->GetChain()->SetBranchAddress("MTOF_FP1_T0VN",&MTOF_FP1_T0VN);
-  RootInput::getInstance()->GetChain()->SetBranchStatus("MTOF_FP1_T1VN",true);
-  RootInput::getInstance()->GetChain()->SetBranchAddress("MTOF_FP1_T1VN",&MTOF_FP1_T1VN);
-
-  RootInput::getInstance()->GetChain()->SetBranchStatus("MTOF_FP0_T0V",true);
-  RootInput::getInstance()->GetChain()->SetBranchAddress("MTOF_FP0_T0V",&MTOF_FP0_T0V);
-  RootInput::getInstance()->GetChain()->SetBranchStatus("MTOF_FP0_T1V",true);
-  RootInput::getInstance()->GetChain()->SetBranchAddress("MTOF_FP0_T1V",&MTOF_FP0_T1V);
-  RootInput::getInstance()->GetChain()->SetBranchStatus("MTOF_FP1_T0V",true);
-  RootInput::getInstance()->GetChain()->SetBranchAddress("MTOF_FP1_T0V",&MTOF_FP1_T0V);
-  RootInput::getInstance()->GetChain()->SetBranchStatus("MTOF_FP1_T1V",true);
-  RootInput::getInstance()->GetChain()->SetBranchAddress("MTOF_FP1_T1V",&MTOF_FP1_T1V);
-
-
-  RootInput::getInstance()->GetChain()->SetBranchStatus("MTOF_FP0_T0VM",true);
-  RootInput::getInstance()->GetChain()->SetBranchAddress("MTOF_FP0_T0VM",&MTOF_FP0_T0VM);
-  RootInput::getInstance()->GetChain()->SetBranchStatus("MTOF_FP0_T1VM",true);
-  RootInput::getInstance()->GetChain()->SetBranchAddress("MTOF_FP0_T1VM",&MTOF_FP0_T1VM);
-  RootInput::getInstance()->GetChain()->SetBranchStatus("MTOF_FP1_T0VM",true);
-  RootInput::getInstance()->GetChain()->SetBranchAddress("MTOF_FP1_T0VM",&MTOF_FP1_T0VM);
-  RootInput::getInstance()->GetChain()->SetBranchStatus("MTOF_FP1_T1VM",true);
-  RootInput::getInstance()->GetChain()->SetBranchAddress("MTOF_FP1_T1VM",&MTOF_FP1_T1VM);
-
-  RootInput::getInstance()->GetChain()->SetBranchStatus("fVAMOS_TS_sec",true);
-  RootInput::getInstance()->GetChain()->SetBranchAddress("fVAMOS_TS_sec",&fVAMOS_TS_sec);
-  RootInput::getInstance()->GetChain()->SetBranchStatus("fPISTA_TS_sec",true);
-  RootInput::getInstance()->GetChain()->SetBranchAddress("fPISTA_TS_sec",&fPISTA_TS_sec);
+    RootInput::getInstance()->GetChain()->SetBranchStatus("Time",true);
+    RootInput::getInstance()->GetChain()->SetBranchAddress("Time",&Time);
+
+    RootInput::getInstance()->GetChain()->SetBranchStatus("T_TMW0_FPMW0",true);
+    RootInput::getInstance()->GetChain()->SetBranchAddress("T_TMW0_FPMW0",&T13);
+
+    RootInput::getInstance()->GetChain()->SetBranchStatus("T_TMW0_FPMW1",true);
+    RootInput::getInstance()->GetChain()->SetBranchAddress("T_TMW0_FPMW1",&T14);
+
+    RootInput::getInstance()->GetChain()->SetBranchStatus("T_TMW1_FPMW0",true);
+    RootInput::getInstance()->GetChain()->SetBranchAddress("T_TMW1_FPMW0",&T23);
+
+    RootInput::getInstance()->GetChain()->SetBranchStatus("T_TMW1_FPMW1",true);
+    RootInput::getInstance()->GetChain()->SetBranchAddress("T_TMW1_FPMW1",&T24);
+
+    RootInput::getInstance()->GetChain()->SetBranchStatus("MTOF_FP0_T0VN",true);
+    RootInput::getInstance()->GetChain()->SetBranchAddress("MTOF_FP0_T0VN",&MTOF_FP0_T0VN);
+    RootInput::getInstance()->GetChain()->SetBranchStatus("MTOF_FP0_T1VN",true);
+    RootInput::getInstance()->GetChain()->SetBranchAddress("MTOF_FP0_T1VN",&MTOF_FP0_T1VN);
+    RootInput::getInstance()->GetChain()->SetBranchStatus("MTOF_FP1_T0VN",true);
+    RootInput::getInstance()->GetChain()->SetBranchAddress("MTOF_FP1_T0VN",&MTOF_FP1_T0VN);
+    RootInput::getInstance()->GetChain()->SetBranchStatus("MTOF_FP1_T1VN",true);
+    RootInput::getInstance()->GetChain()->SetBranchAddress("MTOF_FP1_T1VN",&MTOF_FP1_T1VN);
+
+    RootInput::getInstance()->GetChain()->SetBranchStatus("MTOF_FP0_T0V",true);
+    RootInput::getInstance()->GetChain()->SetBranchAddress("MTOF_FP0_T0V",&MTOF_FP0_T0V);
+    RootInput::getInstance()->GetChain()->SetBranchStatus("MTOF_FP0_T1V",true);
+    RootInput::getInstance()->GetChain()->SetBranchAddress("MTOF_FP0_T1V",&MTOF_FP0_T1V);
+    RootInput::getInstance()->GetChain()->SetBranchStatus("MTOF_FP1_T0V",true);
+    RootInput::getInstance()->GetChain()->SetBranchAddress("MTOF_FP1_T0V",&MTOF_FP1_T0V);
+    RootInput::getInstance()->GetChain()->SetBranchStatus("MTOF_FP1_T1V",true);
+    RootInput::getInstance()->GetChain()->SetBranchAddress("MTOF_FP1_T1V",&MTOF_FP1_T1V);
+
+
+    RootInput::getInstance()->GetChain()->SetBranchStatus("MTOF_FP0_T0VM",true);
+    RootInput::getInstance()->GetChain()->SetBranchAddress("MTOF_FP0_T0VM",&MTOF_FP0_T0VM);
+    RootInput::getInstance()->GetChain()->SetBranchStatus("MTOF_FP0_T1VM",true);
+    RootInput::getInstance()->GetChain()->SetBranchAddress("MTOF_FP0_T1VM",&MTOF_FP0_T1VM);
+    RootInput::getInstance()->GetChain()->SetBranchStatus("MTOF_FP1_T0VM",true);
+    RootInput::getInstance()->GetChain()->SetBranchAddress("MTOF_FP1_T0VM",&MTOF_FP1_T0VM);
+    RootInput::getInstance()->GetChain()->SetBranchStatus("MTOF_FP1_T1VM",true);
+    RootInput::getInstance()->GetChain()->SetBranchAddress("MTOF_FP1_T1VM",&MTOF_FP1_T1VM);
+
+    RootInput::getInstance()->GetChain()->SetBranchStatus("fVAMOS_TS_sec",true);
+    RootInput::getInstance()->GetChain()->SetBranchAddress("fVAMOS_TS_sec",&fVAMOS_TS_sec);
+    RootInput::getInstance()->GetChain()->SetBranchStatus("fPISTA_TS_sec",true);
+    RootInput::getInstance()->GetChain()->SetBranchAddress("fPISTA_TS_sec",&fPISTA_TS_sec);
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 void Analysis::ReInitValue(){
-  BeamEnergy = -1000;
-  Ex242Pu = -1000;
-  Ex240Pu = -1000;
-  Ex240PuLin = -1000;
-  Ex236U = -1000;
-  Ex238U = -1000;
-  DeltaE = -1000;
-  DeltaEcorr = -1000;
-  Eres = -1000;
-  Elab = -1000;
-  ThetaLab = -1000;
-  Beta_pista = -1;
-  ThetaDetectorSurface = -1000;
-  PhiLab = -1000;
-  ThetaCM = -1000;
-  XTarget = -1000;
-  XTargetLin = -1000;
-  YTarget = -1000;
-  YTargetLin = -1000;
-  ZTarget = -1000;
-  Xcalc = -1000;
-  Ycalc = -1000;
-  Zcalc = -1000;
-  PID = -1000;
-  Telescope = -1;
-  strip_DE = -1;
-  strip_E = -1;
-  Time_E = -1000;
-  Pista_Time_Target = -1000;
-  Vamos_Time_Target = -1000;
-
-  Exo_cosa = -100;
-  Exo_E = -100;
-  Exo_EDC_vamos = -100;
-  Exo_EDC_pista = -100;
-  Exo_Theta = -100;
-  Exo_Phi = -100;
-
-  FF_Theta = -100;
-  FF_Phi = -100;
-  FF_Brho = -1;
-  FF_Path = -1;
-  FF_Y1 = -1000;
-  FF_Y3 = -1000;
-  FF_IC_X = -1000;
-  FF_IC_Y = -1000;
-  FF_D13 = -1;
-  FF_T13 = -1;
-  FF_V13 = -1;
-  FF_AoQ13 = -1;
-  FF_Beta13 = -1;
-  FF_Gamma13 = -1;
-  FF_Q13 = -1;
-  FF_M13 = -1;
-  FF_Mass13 = -1;
-  FPMW_Section = -1;
-
-  theta_lab_fission = -100;
-  theta_cm_fission = -100;
-  theta_240Pu = -100;
-  phi_240Pu = -100;
-  beta_240Pu = -100;
-  gamma_240Pu = -100;
-  gamma_lab_ff = -100;
-  gamma_cm_ff = -100;
-  beta_lab_ff = -100;
-  beta_cm_ff = -100;
-
-
-  m_2alpha = 0;
-  Elab1.clear();
-  Elab2.clear();
+    BeamEnergy = -1000;
+    Ex242Pu = -1000;
+    Ex240Pu = -1000;
+    Ex240PuLin = -1000;
+    Ex236U = -1000;
+    Ex238U = -1000;
+    DeltaE = -1000;
+    DeltaEcorr = -1000;
+    Eres = -1000;
+    Elab = -1000;
+    ThetaLab = -1000;
+    Beta_pista = -1;
+    ThetaDetectorSurface = -1000;
+    PhiLab = -1000;
+    ThetaCM = -1000;
+    XTarget = -1000;
+    XTargetLin = -1000;
+    YTarget = -1000;
+    YTargetLin = -1000;
+    ZTarget = -1000;
+    Xcalc = -1000;
+    Ycalc = -1000;
+    Zcalc = -1000;
+    PID = -1000;
+    Telescope = -1;
+    strip_DE = -1;
+    strip_E = -1;
+    Time_E = -1000;
+    Pista_Time_Target = -1000;
+    Vamos_Time_Target = -1000;
+
+    Exo_cosa = -100;
+    Exo_E = -100;
+    Exo_EDC_vamos = -100;
+    Exo_EDC_pista = -100;
+    Exo_Theta = -100;
+    Exo_Phi = -100;
+
+    FF_Theta = -100;
+    FF_Phi = -100;
+    FF_Brho = -1;
+    FF_Path = -1;
+    FF_Y1 = -1000;
+    FF_Y3 = -1000;
+    FF_IC_X = -1000;
+    FF_IC_Y = -1000;
+    FF_D13 = -1;
+    FF_T13 = -1;
+    FF_V13 = -1;
+    FF_AoQ13 = -1;
+    FF_Beta13 = -1;
+    FF_Gamma13 = -1;
+    FF_Q13 = -1;
+    FF_M13 = -1;
+    FF_Mass13 = -1;
+    FPMW_Section = -1;
+    FF_DriftTime.clear();
+
+    theta_lab_fission = -100;
+    theta_cm_fission = -100;
+    theta_240Pu = -100;
+    phi_240Pu = -100;
+    beta_240Pu = -100;
+    gamma_240Pu = -100;
+    gamma_lab_ff = -100;
+    gamma_cm_ff = -100;
+    beta_lab_ff = -100;
+    beta_cm_ff = -100;
+
+
+    m_2alpha = 0;
+    Elab1.clear();
+    Elab2.clear();
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 void Analysis::ReadAnalysisConfig(){
-  bool ReadingStatus = false;
+    bool ReadingStatus = false;
 
-  string filename = "AnalysisConfig.dat";
+    string filename = "AnalysisConfig.dat";
 
-  // open analysis config file
-  ifstream AnalysisConfigFile;
-  AnalysisConfigFile.open(filename.c_str());
+    // open analysis config file
+    ifstream AnalysisConfigFile;
+    AnalysisConfigFile.open(filename.c_str());
 
-  if (!AnalysisConfigFile.is_open()) {
-    cout << " No AnalysisConfig.dat found: Default parameter loaded for Analayis " << filename << endl;
-    return;
-  }
-  cout << "**** Loading user parameter for Analysis from AnalysisConfig.dat " << endl;
-
-  // Save it in a TAsciiFile
-  TAsciiFile* asciiConfig = RootOutput::getInstance()->GetAsciiFileAnalysisConfig();
-  asciiConfig->AppendLine("%%% AnalysisConfig.dat %%%");
-  asciiConfig->Append(filename.c_str());
-  asciiConfig->AppendLine("");
-  // read analysis config file
-  string LineBuffer,DataBuffer,whatToDo;
-  while (!AnalysisConfigFile.eof()) {
-    // Pick-up next line
-    getline(AnalysisConfigFile, LineBuffer);
-
-    // search for "header"
-    string name = "AnalysisConfig";
-    if (LineBuffer.compare(0, name.length(), name) == 0) 
-      ReadingStatus = true;
-
-    // loop on tokens and data
-    while (ReadingStatus ) {
-      whatToDo="";
-      AnalysisConfigFile >> whatToDo;
-
-      // Search for comment symbol (%)
-      if (whatToDo.compare(0, 1, "%") == 0) {
-        AnalysisConfigFile.ignore(numeric_limits<streamsize>::max(), '\n' );
-      }
-
-      else if (whatToDo=="XTARGET_OFFSET") {
-        AnalysisConfigFile >> DataBuffer;
-        m_XTarget_offset = atof(DataBuffer.c_str());
-        cout << "**** " << whatToDo << " " << m_XTarget_offset << endl;
-      }
-      else if (whatToDo=="YTARGET_OFFSET") {
-        AnalysisConfigFile >> DataBuffer;
-        m_YTarget_offset = atof(DataBuffer.c_str());
-        cout << "**** " << whatToDo << " " << m_YTarget_offset << endl;
-      }
-      else if (whatToDo=="ZTARGET_OFFSET") {
-        AnalysisConfigFile >> DataBuffer;
-        m_ZTarget_offset = atof(DataBuffer.c_str());
-        cout << "**** " << whatToDo << " " << m_ZTarget_offset << endl;
-      }
-      else if (whatToDo=="BEAM_THETAX") {
-        AnalysisConfigFile >> DataBuffer;
-        m_Beam_ThetaX = atof(DataBuffer.c_str());
-        cout << "**** " << whatToDo << " " << m_Beam_ThetaX << endl;
-      }
-      else if (whatToDo=="BEAM_THETAY") {
-        AnalysisConfigFile >> DataBuffer;
-        m_Beam_ThetaY = atof(DataBuffer.c_str());
-        cout << "**** " << whatToDo << " " << m_Beam_ThetaY << endl;
-      }
-      else if (whatToDo=="BRHO_REF") {
-        AnalysisConfigFile >> DataBuffer;
-        m_Brho_ref = atof(DataBuffer.c_str());
-        cout << "**** " << whatToDo << " " << m_Brho_ref << endl;
-      }
-      else if (whatToDo=="VAMOS_ANGLE") {
-        AnalysisConfigFile >> DataBuffer;
-        m_Vamos_Angle = atof(DataBuffer.c_str());
-        cout << "**** " << whatToDo << " " << m_Vamos_Angle << endl;
-      }
-
-      else {
-        ReadingStatus = false;
-      }
+    if (!AnalysisConfigFile.is_open()) {
+        cout << " No AnalysisConfig.dat found: Default parameter loaded for Analayis " << filename << endl;
+        return;
+    }
+    cout << "**** Loading user parameter for Analysis from AnalysisConfig.dat " << endl;
+
+    // Save it in a TAsciiFile
+    TAsciiFile* asciiConfig = RootOutput::getInstance()->GetAsciiFileAnalysisConfig();
+    asciiConfig->AppendLine("%%% AnalysisConfig.dat %%%");
+    asciiConfig->Append(filename.c_str());
+    asciiConfig->AppendLine("");
+    // read analysis config file
+    string LineBuffer,DataBuffer,whatToDo;
+    while (!AnalysisConfigFile.eof()) {
+        // Pick-up next line
+        getline(AnalysisConfigFile, LineBuffer);
+
+        // search for "header"
+        string name = "AnalysisConfig";
+        if (LineBuffer.compare(0, name.length(), name) == 0) 
+            ReadingStatus = true;
+
+        // loop on tokens and data
+        while (ReadingStatus ) {
+            whatToDo="";
+            AnalysisConfigFile >> whatToDo;
+
+            // Search for comment symbol (%)
+            if (whatToDo.compare(0, 1, "%") == 0) {
+                AnalysisConfigFile.ignore(numeric_limits<streamsize>::max(), '\n' );
+            }
+
+            else if (whatToDo=="XTARGET_OFFSET") {
+                AnalysisConfigFile >> DataBuffer;
+                m_XTarget_offset = atof(DataBuffer.c_str());
+                cout << "**** " << whatToDo << " " << m_XTarget_offset << endl;
+            }
+            else if (whatToDo=="YTARGET_OFFSET") {
+                AnalysisConfigFile >> DataBuffer;
+                m_YTarget_offset = atof(DataBuffer.c_str());
+                cout << "**** " << whatToDo << " " << m_YTarget_offset << endl;
+            }
+            else if (whatToDo=="ZTARGET_OFFSET") {
+                AnalysisConfigFile >> DataBuffer;
+                m_ZTarget_offset = atof(DataBuffer.c_str());
+                cout << "**** " << whatToDo << " " << m_ZTarget_offset << endl;
+            }
+            else if (whatToDo=="BEAM_THETAX") {
+                AnalysisConfigFile >> DataBuffer;
+                m_Beam_ThetaX = atof(DataBuffer.c_str());
+                cout << "**** " << whatToDo << " " << m_Beam_ThetaX << endl;
+            }
+            else if (whatToDo=="BEAM_THETAY") {
+                AnalysisConfigFile >> DataBuffer;
+                m_Beam_ThetaY = atof(DataBuffer.c_str());
+                cout << "**** " << whatToDo << " " << m_Beam_ThetaY << endl;
+            }
+            else if (whatToDo=="BRHO_REF") {
+                AnalysisConfigFile >> DataBuffer;
+                m_Brho_ref = atof(DataBuffer.c_str());
+                cout << "**** " << whatToDo << " " << m_Brho_ref << endl;
+            }
+            else if (whatToDo=="VAMOS_ANGLE") {
+                AnalysisConfigFile >> DataBuffer;
+                m_Vamos_Angle = atof(DataBuffer.c_str());
+                cout << "**** " << whatToDo << " " << m_Vamos_Angle << endl;
+            }
+
+            else {
+                ReadingStatus = false;
+            }
+        }
     }
-  }
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -827,20 +888,20 @@ void Analysis::End(){
 //            Construct Method to be pass to the DetectorFactory              //
 ////////////////////////////////////////////////////////////////////////////////
 NPL::VAnalysis* Analysis::Construct(){
-  return (NPL::VAnalysis*) new Analysis();
+    return (NPL::VAnalysis*) new Analysis();
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 //            Registering the construct method to the factory                 //
 ////////////////////////////////////////////////////////////////////////////////
 extern "C"{
-  class proxy{
-    public:
-      proxy(){
-        NPL::AnalysisFactory::getInstance()->SetConstructor(Analysis::Construct);
-      }
-  };
-
-  proxy p;
+    class proxy{
+        public:
+            proxy(){
+                NPL::AnalysisFactory::getInstance()->SetConstructor(Analysis::Construct);
+            }
+    };
+
+    proxy p;
 }
 
diff --git a/Projects/AlPhaPha/2024/Analysis.h b/Projects/AlPhaPha/2024/Analysis.h
index 125f5ec99c6625ad6df2b2fc5dcb14374315da86..7a4bbb2823f7c0d31cb6734c7d5bfae2c74fa979 100644
--- a/Projects/AlPhaPha/2024/Analysis.h
+++ b/Projects/AlPhaPha/2024/Analysis.h
@@ -36,6 +36,8 @@
 #include "TRandom3.h"
 #include "TSpline.h"
 #include "TChain.h"
+#include "TTimeData.h"
+#include <vector>
 
 class Analysis: public NPL::VAnalysis{
   public:
@@ -140,7 +142,7 @@ class Analysis: public NPL::VAnalysis{
     double FF_M13;
     double FF_Mass13;
     double FF_Etot13;
-    Float_t FF_DriftTime[20];
+    vector<double> FF_DriftTime;
 
     double Exo_cosa;
     double Exo_E;
@@ -222,7 +224,9 @@ class Analysis: public NPL::VAnalysis{
     Float_t MTOF_FP1_T0V[92];
     Float_t MTOF_FP1_T1V[92];
 
+    vector<double> TxtToVector(const char* Path); 
   private:
+    TTimeData* Time ;
     TPISTAPhysics* PISTA;
     TFPMWPhysics* FPMW;
     TICPhysics* IC;
diff --git a/Projects/AlPhaPha/2024/SnakeFileGeneric b/Projects/AlPhaPha/2024/Snakefile
similarity index 86%
rename from Projects/AlPhaPha/2024/SnakeFileGeneric
rename to Projects/AlPhaPha/2024/Snakefile
index 9aa13a1addd4a8a37c982733dfafa63f266eb347..c2b42c1666d746178afc26f844ea7121daa18566 100644
--- a/Projects/AlPhaPha/2024/SnakeFileGeneric
+++ b/Projects/AlPhaPha/2024/Snakefile
@@ -3,7 +3,7 @@ import subprocess
 
 # Lire le répertoire d'entrée depuis les arguments de configuration
 #input_directory = config["folder"]
-input_directory = os.getcwd() + "/../DataMacro/output/run_241"
+input_directory = os.getcwd() + "/../DataMacro/output/run_247"
 origin = [] 
 # Iterate over files in input_directory
 for filename in os.listdir(input_directory):
@@ -12,14 +12,14 @@ for filename in os.listdir(input_directory):
     origin.append(filename)
 
 # Définir le répertoire de sortie pour les fichiers convertis
-phy_directory = os.getcwd() + "/../DataMacro/output/analysis"
+phy_directory = os.getcwd() + "/../DataMacro/output/analysis/run_247"
 #phy_directory = "./"
 
 # define target files directory
 analysedfile = []
 for inputfile in origin:
   #analysedfile.append("/home/morfouacep/Physics/NPTool/nptool/Projects/ana_e850/root/analysis/"+inputfile.replace("_raw_","_"))
-  analysedfile.append( os.getcwd() + "/../DataMacro/output/analysis/"+inputfile)
+  analysedfile.append( os.getcwd() + "/../DataMacro/output/analysis/run_247/"+inputfile)
 
 ## batch rules
 rule all:
diff --git a/Projects/AlPhaPha/2024/convert_snakemake_generic.sh b/Projects/AlPhaPha/2024/convert_snakemake_generic.sh
index 10a5f3daf85d317225f3078bab83ae442d3a1a48..7ead632c0d8a841894512a0d7f58ade995a08f5e 100755
--- a/Projects/AlPhaPha/2024/convert_snakemake_generic.sh
+++ b/Projects/AlPhaPha/2024/convert_snakemake_generic.sh
@@ -3,4 +3,4 @@ echo "- executing snakemake file for npanalysis..."
 snakemake --cores 30 --forceall --keep-incomplete --keep-going --rerun-incomplete
 echo "- snakemake executed successfully!"
 echo "- Merging file..."
-root -q '../DataMacro/Merger.C(16,"root/analysis","VamosCalib241","../DataMacro/output/analysis/run_raw_241_")'
+root -q '../DataMacro/Merger.C(30,"root/analysis","VamosCalib247","../DataMacro/output/analysis/run_247/run_raw_247_")'
diff --git a/Projects/AlPhaPha/2024/macro/chio/YCalibration/DECorr.C b/Projects/AlPhaPha/2024/macro/chio/YCalibration/DECorr.C
index 766978d6e4707844b1bd6f9a9fe5611ba0efb238..5e6eb7d3eea92eeefe6356653819a83dc8bea771 100644
--- a/Projects/AlPhaPha/2024/macro/chio/YCalibration/DECorr.C
+++ b/Projects/AlPhaPha/2024/macro/chio/YCalibration/DECorr.C
@@ -21,7 +21,7 @@ void DECorr(bool cut = false, bool spline = false) {
     //                           Loading var
     //===========================================================================================================
     TChain* chain = new TChain("PhysicsTree");
-    chain->Add("../../../root/analysis/VamosCalib241.root");
+    chain->Add("../../../root/analysis/VamosCalib247.root");
 
     TICPhysics* IC = new TICPhysics() ;
     double FF_IC_X, FF_IC_Y, FF_V13;
@@ -109,16 +109,28 @@ void DECorr(bool cut = false, bool spline = false) {
 
     //Defining output histo
     TH2F* hDE_E = new TH2F("DE_E","DE_E",1000,0,22000,1000,0,28000);
+    TH2F* hDE_E_splined = new TH2F("DE_E_splined","DE_E_splined",1000,0,22000,1000,0,28000);
     TH2F* hDE_Ebis = new TH2F("DE_Ebis","DE_Ebis",1000,0,22000,1000,0,24000);
+
+
     TH2F* hDE_Y = new TH2F("DE_Y","DE_Y",1000,-100,100,1000,0,22000);
     TH2F* hDE_Y_splined = new TH2F("DE_Ysplined","DE_Ysplined",1000,-100,100,1000,0,22000);
+    TH2F* hDE_Y_splined_nocut = new TH2F("DE_Ysplined_nocut","DE_Ysplined_nocut",1000,-100,100,1000,0,22000);
+    TH2F* hIC_Y = new TH2F("IC_Y","IC_Y",1000,-100,100,1000,0,22000);
+    TH2F* hIC_Y_splined = new TH2F("IC_Ysplined","IC_Ysplined",1000,-100,100,1000,0,22000);
+
+
     TH2F* hDE_Y_corr = new TH2F("DE_Ycorr","DE_Ycorr",1000,-100,100,1000,0,22000);
+    TH2F* hDE_Y_corr_nocut = new TH2F("DE_Ycorr_nocut","DE_Ycorr_nocut",1000,-100,100,1000,0,22000);
+
     TH2F* hDE_Y_bis = new TH2F("DE_Ybis","DE_Ybis",1000,-100,100,1000,0,22000);
     TH2F* hDEbis_Y_corr = new TH2F("DE_Ybiscorr","DE_Ybiscorr",1000,-100,100,1000,0,22000);
+
     TH2F* hDE_E_corr = new TH2F("DE_Ecorr","DE_Ecorr",1000,0,22000,1000,0,28000);
     TH2F* hDE_Ebis_corr = new TH2F("DE_Ebiscorr","DE_Ebiscorr",1000,0,22000,1000,0,24000);
     TH2F* hDE_E_Recur = new TH2F("DE_E_Recur","DE_E_Recur",1000,0,22000,1000,0,28000);
 
+    TH2F* hDE_V = new TH2F("DE_V","DE_V",1000,0,5,1000,0,28000);
 
     // Def Lim spline
     double Ymin = -100 , Ymax =100;
@@ -174,8 +186,8 @@ void DECorr(bool cut = false, bool spline = false) {
         }//endloop seg
 
 
-        double DE = 0 , DE_splined=0,E =0, Ecorr ,DE_Ycorr=0, DE_Ybis=0, DE_Y_Recur=0;
-
+        double DE = 0 , DE_splined=0 ,DE_corr=0, DE_Ybis=0, DE_Y_Recur=0;
+        double E =0, Ecorr=0; 
         for (int seg = 0 ;  seg < sizeof(IC->fIC_raw)/sizeof(IC->fIC_raw[0]) ; seg++ ){
             if (seg >4){
                 E += IC->fIC_raw[seg] ;
@@ -183,24 +195,39 @@ void DECorr(bool cut = false, bool spline = false) {
             }
         }
 
+
+
+        // ********************* DE setter *********************
         double IC1corr = (IC->fIC_raw[1]*(1-0.000686068*FF_IC_Y))*(1-4.88238e-05*FF_IC_Y+7.40395e-06*FF_IC_Y*FF_IC_Y);
         double DE_Bis = 0.5*(IC1corr+IC->fIC_raw[2]+IC->fIC_raw[3])+IC->fIC_raw[4];
 
-        DE = 0.5*(IC->fIC_raw[0]+ IC->fIC_raw[1] +IC->fIC_raw[2]+IC->fIC_raw[3])+IC->fIC_raw[4];
-        //DE_splined = 0.5*(ICcorr_Y[0]+ ICcorr_Y[1] +ICcorr_Y[2]+ICcorr_Y[3])+ICcorr_Y[4];
-        DE_splined = 0.5*( ICcorr_Y[1] +IC->fIC_raw[2]+IC->fIC_raw[3])+IC->fIC_raw[4];
+        DE = 0.5*(ICcorr_Y.at(0)+ IC->fIC_raw[1] +IC->fIC_raw[2]+IC->fIC_raw[3])+IC->fIC_raw[4];
+        DE_splined = 0.5*(ICcorr_Y[0]+ ICcorr_Y[1] +ICcorr_Y[2]+ICcorr_Y[3])+ICcorr_Y[4];
+        //DE_splined = 0.5*( ICcorr_Y[1] +IC->fIC_raw[2]+IC->fIC_raw[3])+IC->fIC_raw[4];
+        
+
+        //************* Cut ******************
+        bool CutV = abs( FF_V13-3.94)<0.01;
+        bool CutVbis =  abs( FF_V13-3.94)<0.01;
+        
+        //bool CutV = true;
+        //bool CutVbis =  true;
+       
+        //***********Fill histo*************
 
-        bool CutV =  FF_V13 > 4.2999 && FF_V13 <=4.3;
-        bool CutVbis =  FF_V13 > 4.2999 && FF_V13 <=4.3;
-        //bool CutV = true; //nocut
         if (FF_IC_Y >Ymin && FF_IC_Y <Ymax ){
-            //hDE_E->Fill(E,DE);
-            hDE_E->Fill(E,DE_splined);
+            
+            //*************Init DE_E***************** 
+            hDE_E->Fill(E,DE);
+            hDE_E_splined->Fill(E,DE_splined);
             hDE_Ebis->Fill(E,DE_Bis);
 
-            if (spline== true && FF_IC_Y >Ymin && FF_IC_Y<Ymax ){     
-                DE_Ycorr = DE_splined * splineDEcorr->Eval(0) / splineDEcorr->Eval(FF_IC_Y);
-                hDE_E_corr->Fill(E,DE_Ycorr);
+            hDE_V->Fill(FF_V13,DE_splined);    
+
+            //******* Coor DE ************
+            if (spline== true  ){     
+                DE_corr = DE_splined * splineDEcorr->Eval(0) / splineDEcorr->Eval(FF_IC_Y);
+                hDE_E_corr->Fill(E,DE_corr);
 
                 DE_Ybis = DE_Bis * splineDEbis->Eval(0) / splineDEbis->Eval(FF_IC_Y);
                 hDE_Ebis_corr->Fill(E,DE_Ybis); 
@@ -208,26 +235,34 @@ void DECorr(bool cut = false, bool spline = false) {
                 DE_Y_Recur = DE_splined;
 
                 for (int i=0; i<vsplineDE.size() ; i++){
-                   DE_Y_Recur = DE_Y_Recur * vsplineDE.at(i)->Eval(0) / vsplineDE.at(i)->Eval(FF_IC_Y);
+                    DE_Y_Recur = DE_Y_Recur * vsplineDE.at(i)->Eval(0) / vsplineDE.at(i)->Eval(FF_IC_Y);
                 }
-                hDE_E_Recur->Fill(E,DE_Y_Recur);
-            }
+                hDE_E_Recur->Fill(E,DE_Y_Recur);    
+            }   
+                
             else {
-                DE_Ycorr = DE_splined;
-                hDE_E_corr->Fill(E,DE_Ycorr);
+                DE_corr = DE_splined;
+                hDE_E_corr->Fill(E,DE_corr);
 
                 DE_Ybis = DE_Bis ;
                 hDE_Ebis_corr->Fill(E,DE_Ybis);  
             }
 
-            //bool CutV =  CutZ->IsInside(E,DE_splined);
-            //bool CutV =  CutZ->IsInside(E,DE_Y_Recur);
+            bool CutCharge =  CutZ->IsInside(FF_V13,DE_splined);
+            //bool CutChargeBis =  CutZ->IsInside(E,DE_Y_Recur);
             //bool CutVbis =  CutZbis->IsInside(E,DE_Bis);
-
-            if (cut == true && CutV) {
-                hDE_Y->Fill(FF_IC_Y,DE_splined);
-                //hDE_Y_corr->Fill(FF_IC_Y,DE_splined);
-                hDE_Y_corr->Fill(FF_IC_Y,DE_Y_Recur);
+            // DE_Y in a cut
+            
+            hDE_Y_corr_nocut->Fill(FF_IC_Y,DE);
+            hDE_Y_splined_nocut->Fill(FF_IC_Y,DE_splined);
+            if (cut == true && CutV && CutCharge) {
+               
+                hDE_Y->Fill(FF_IC_Y,DE);
+                hDE_Y_splined->Fill(FF_IC_Y,DE_splined); 
+                hDE_Y_corr->Fill(FF_IC_Y,DE_corr);
+
+                hIC_Y->Fill(FF_IC_Y,IC->fIC_raw[1]);
+                hIC_Y_splined->Fill(FF_IC_Y,ICcorr_Y.at(1));
             }//end cut
             else {;}
 
@@ -244,9 +279,9 @@ void DECorr(bool cut = false, bool spline = false) {
 
     TSpline3 *splineDE, *osplineDEbis;
     if (spline == true){
-        splineDE = MakeSpline(hDE_Y_corr,0,Ymin,Ymax,0,23000); 
+        splineDE = MakeSpline(hDE_Y_splined,0,Ymin,Ymax,0,23000); 
         osplineDEbis = MakeSpline(hDE_Y_bis,1,Ymin,Ymax,0,23000); 
-        TFile *fSpline = new TFile("Output/splineDE.root","update");
+        TFile *fSpline = new TFile("Output/splineDE.root","recreate");
         splineDE->SetName("SplineDe_0");
         splineDE->Write();
         osplineDEbis->SetName("SplineDebis");
@@ -261,20 +296,28 @@ void DECorr(bool cut = false, bool spline = false) {
     c->Divide(2,2);
     c->cd(1);
     gPad->SetLogz();
-    hDE_Y_corr->ProfileX()->Draw();
+    hDE_Y->ProfileX()->Draw();
     c->cd(2);
     gPad->SetLogz();
-    hDE_Y->ProfileX()->Draw();
+    hDE_Y_splined->ProfileX()->Draw();
     c->cd(3);
     gPad->SetLogz();
-    hDEbis_Y_corr->ProfileX()->Draw();
+    hIC_Y->ProfileX()->Draw();
     c->cd(4);
     gPad->SetLogz();
-    hDE_Y_bis->ProfileX()->Draw();
+    hIC_Y_splined->ProfileX()->Draw();
+
+    TCanvas *c4 = new TCanvas("c4","c4",1500,1000);
+    c4->Divide(2);
+    c4->cd(1);
+    hDE_Y_splined_nocut->ProfileX()->Draw();
+    c4->cd(2);
+    hDE_Y_corr_nocut->ProfileX()->Draw();
+    
 
 
     TCanvas *c1 = new TCanvas("c1","c1",1500,1000);
-    hDE_E->Draw();
+    hDE_V->Draw();
 
     TCanvas* c2 = new TCanvas("c2","c2",1500,1000);
     c2->Divide(2 + 3*spline);
@@ -287,10 +330,10 @@ void DECorr(bool cut = false, bool spline = false) {
     if (spline){
         c2->cd(3);
         gPad->SetLogz();
-        hDE_E_corr->Draw();
+        hDE_E_splined->Draw();
         c2->cd(4);
         gPad->SetLogz();
-        hDE_E_Recur->Draw();   
+        hDE_E_corr->Draw();   
         c2->cd(5);
         gPad->SetLogz();
         hDE_Ebis_corr->Draw();
diff --git a/Projects/AlPhaPha/2024/macro/chio/YCalibration/SplineChioAllXY.C b/Projects/AlPhaPha/2024/macro/chio/YCalibration/SplineChioAllXY.C
index a1e253b60b7cd695d910b2caa1411d2bd359576a..c1e4e3769710416d68149f4d6df5bdbe346e6379 100644
--- a/Projects/AlPhaPha/2024/macro/chio/YCalibration/SplineChioAllXY.C
+++ b/Projects/AlPhaPha/2024/macro/chio/YCalibration/SplineChioAllXY.C
@@ -93,7 +93,7 @@ void HistoFiller(bool cut) {
 
   // Input and setters
   TChain* chain = new TChain("PhysicsTree");
-  chain->Add("../../../root/analysis/VamosCalib241.root");
+  chain->Add("../../../root/analysis/VamosCalib247.root");
 
   TICPhysics* IC = new TICPhysics() ; 
   double FF_IC_X, FF_IC_Y;
diff --git a/Projects/AlPhaPha/2024/macro/chio/YCalibration/SplineChioP2P.C b/Projects/AlPhaPha/2024/macro/chio/YCalibration/SplineChioP2P.C
index 65e11afa92e9540cfd74e5eb27117674c166deb3..b7f9f49fdc086db467ce4415e16816398b183b20 100644
--- a/Projects/AlPhaPha/2024/macro/chio/YCalibration/SplineChioP2P.C
+++ b/Projects/AlPhaPha/2024/macro/chio/YCalibration/SplineChioP2P.C
@@ -53,7 +53,8 @@ void SplineChioP2P() {
     NCallSpline+=1;
 
     SplineAllIC.at(1)= (SplineICurrent); // 
-                                         //SplineAllIC.erase(SplineAllIC.begin() + 1); //activate this to not make the
+    SplineAllIC.erase(SplineAllIC.begin() + 1); 
+                                         ///activate this to not make the
                                          //spline of IC1 
 
 
diff --git a/Projects/AlPhaPha/2024/macro/mwpc/HistoPosFiller.cxx b/Projects/AlPhaPha/2024/macro/mwpc/Linearisation/HistoPosFiller.cxx
similarity index 100%
rename from Projects/AlPhaPha/2024/macro/mwpc/HistoPosFiller.cxx
rename to Projects/AlPhaPha/2024/macro/mwpc/Linearisation/HistoPosFiller.cxx
diff --git a/Projects/AlPhaPha/2024/macro/mwpc/LinearisationTransfo.cxx b/Projects/AlPhaPha/2024/macro/mwpc/Linearisation/LinearisationTransfo.cxx
similarity index 100%
rename from Projects/AlPhaPha/2024/macro/mwpc/LinearisationTransfo.cxx
rename to Projects/AlPhaPha/2024/macro/mwpc/Linearisation/LinearisationTransfo.cxx
diff --git a/Projects/AlPhaPha/2024/macro/mwpc/LinearisationTxt.cxx b/Projects/AlPhaPha/2024/macro/mwpc/Linearisation/LinearisationTxt.cxx
similarity index 100%
rename from Projects/AlPhaPha/2024/macro/mwpc/LinearisationTxt.cxx
rename to Projects/AlPhaPha/2024/macro/mwpc/Linearisation/LinearisationTxt.cxx
diff --git a/Projects/AlPhaPha/2024/macro/mwpc/ReadMe.md b/Projects/AlPhaPha/2024/macro/mwpc/Linearisation/ReadMe.md
similarity index 100%
rename from Projects/AlPhaPha/2024/macro/mwpc/ReadMe.md
rename to Projects/AlPhaPha/2024/macro/mwpc/Linearisation/ReadMe.md
diff --git a/Projects/AlPhaPha/2024/macro/mwpc/Toff/ToffGenerator.cxx b/Projects/AlPhaPha/2024/macro/mwpc/Toff/ToffGenerator.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..4d01c7cb3ae2c3efe91f126dd353c4580712d7d0
--- /dev/null
+++ b/Projects/AlPhaPha/2024/macro/mwpc/Toff/ToffGenerator.cxx
@@ -0,0 +1,487 @@
+#include "TTimeData.h"
+#include <TCanvas.h>
+#include <TChain.h>
+#include <TF1.h>
+#include <TFile.h>
+#include <TH2.h>
+#include <TLatex.h>
+#include <iostream>
+using namespace std;
+
+vector<int> SortSection(UShort_t STargFocal[2]);
+vector<double> ToffCalc(vector<double> ToffP2P);
+
+void ToffGenerator(bool Create = true ){
+
+    //===========================================================================================================
+    //                                              Setters
+    //===========================================================================================================
+
+    TChain* chain = new TChain("PhysicsTree");
+    chain->Add("../../../root/analysis/VamosCalib247.root");
+
+
+    Int_t M13 , M14, M23, M24 ;// we will fetch multiplicity during
+                               // the getentry
+
+    UShort_t S13[20] , S14[20] , S23[20] , S24[20];
+
+    TTimeData *Time = new TTimeData();
+
+
+    chain->SetBranchStatus("MTOF_FP0_T0VN", true);
+    chain->SetBranchAddress("MTOF_FP0_T0VN", &S13);
+
+    chain->SetBranchStatus("MTOF_FP0_T1VN", true);
+    chain->SetBranchAddress("MTOF_FP0_T1VN", &S14);
+
+    chain->SetBranchStatus("MTOF_FP1_T0VN", true);
+    chain->SetBranchAddress("MTOF_FP1_T0VN", &S23);
+
+    chain->SetBranchStatus("MTOF_FP1_T1VN", true);
+    chain->SetBranchAddress("MTOF_FP1_T1VN", &S24);
+
+    chain->SetBranchStatus("Time", true);
+    chain->SetBranchAddress("Time", &Time);
+
+    //===========================================================================================================
+    //                              Histograms
+    //===========================================================================================================
+
+    TH2F *hToff13;
+    TH2F *hToff14;
+    TH2F *hToff23;
+    TH2F *hToff24;
+
+    double xmin[4], xmax[4];
+    double ymin[4], ymax[4];
+    int binx = 20 , biny = 400;
+    
+    xmin[0] = 0 ; xmax[0] = 20 ; ymin[0] = -10 ; ymax[0] = 10 ;
+    xmin[1] = 0 ; xmax[1] = 20 ; ymin[1] = -10 ; ymax[1] = 10 ;
+    xmin[2] = 0 ; xmax[2] = 20 ; ymin[2] = -10 ; ymax[2] = 10 ;
+    xmin[3] = 0 ; xmax[3] = 20 ; ymin[3] = -10 ; ymax[3] = 10 ;
+
+    if (Create == true){
+
+        hToff13 = new TH2F("Toff13","Toff13",binx ,xmin[0] , xmax[0], biny, ymin[0], ymax[0]);
+        hToff14 = new TH2F("Toff14","Toff14",binx ,xmin[1] , xmax[1], biny, ymin[1], ymax[1]);
+        hToff23 = new TH2F("Toff23","Toff23",binx ,xmin[2] , xmax[2], biny, ymin[2], ymax[2]);
+        hToff24 = new TH2F("Toff24","Toff24",binx ,xmin[3] , xmax[3], biny, ymin[3], ymax[3]);
+
+        //===========================================================================================================
+        //                            Loop on entries
+        //===========================================================================================================
+        int Nentries = chain->GetEntries();
+        //int Nentries = 1000000;
+        auto start = std::chrono::high_resolution_clock::now();
+
+        for (int e = 0; e < Nentries; e++) {
+
+            chain->GetEntry(e);
+
+            if (e % 100000  == 0 && e > 0 ) {
+                auto now = std::chrono::high_resolution_clock::now();
+                std::chrono::duration<double> elapsed = now - start;
+                double avgTimePerIteration = elapsed.count() / e;
+                double timeLeft = avgTimePerIteration * (Nentries - e);
+
+                std::cout << "********** Estimated time left: " << int(timeLeft) << " seconds **********" << "\r" << flush;
+            }
+
+            // Get Multiplicity
+            M13 = Time->GetMWPC13Mult();
+            M14 = Time->GetMWPC14Mult();
+            M23 = Time->GetMWPC23Mult();
+            M24 = Time->GetMWPC24Mult();
+
+
+
+            if (M13 == 2 && (abs(S13[0]-S13[1]) == 1)){
+                vector<int> Pos = SortSection(S13);
+                hToff13->Fill(S13[0],Time->GetTime_MWPC13(Pos[0]) - Time->GetTime_MWPC13(Pos[1])); 
+            }
+            if (M23 == 2 && (abs(S23[0]-S23[1]) == 1)){
+                vector<int> Pos = SortSection(S23);
+                hToff23->Fill(S23[0],Time->GetTime_MWPC23(Pos[0]) - Time->GetTime_MWPC23(Pos[1])); 
+            }
+
+            if (M14 == 2 && (abs(S14[0]-S14[1]) == 1)){
+                vector<int> Pos = SortSection(S14);
+                hToff14->Fill(S14[0],Time->GetTime_MWPC14(Pos[0]) - Time->GetTime_MWPC14(Pos[1])); 
+            }
+
+            if (M24 == 2 && (abs(S24[0]-S24[1]) == 1)){
+                vector<int> Pos = SortSection(S24);
+                hToff24->Fill(S24[0],Time->GetTime_MWPC24(Pos[0]) - Time->GetTime_MWPC24(Pos[1])); 
+            }
+        } // End loop event
+
+        TFile *out = new TFile("output/ToffHisto.root","recreate");
+        hToff13->Write();
+        hToff14->Write();
+        hToff23->Write();
+        hToff24->Write();
+    }// end if create
+
+    else {
+
+        TFile *in = new TFile("output/ToffHisto.root","open");
+        hToff13 = (TH2F*)in->Get("Toff13");
+        hToff14 = (TH2F*)in->Get("Toff14");
+        hToff23 = (TH2F*)in->Get("Toff23");
+        hToff24 = (TH2F*)in->Get("Toff24");
+    }
+
+    int MinX = 2;
+    hToff13->SetMinimum(MinX);
+    hToff14->SetMinimum(MinX);
+    hToff23->SetMinimum(MinX);
+    hToff24->SetMinimum(MinX);
+    //===========================================================================================================
+    //                                       Proj fit
+    //===========================================================================================================
+    TCanvas* c13 = new TCanvas("c13", "Toff13", 1800, 1600);
+    c13->Divide(5, 4); // Adjust rows/columns to fit the number of bins (e.g., 20 bins here)
+
+    TCanvas* c14 = new TCanvas("c14", "Toff14", 1800, 1600);
+    c14->Divide(5, 4); // Adjust rows/columns to fit the number of bins (e.g., 20 bins here)
+
+    TCanvas* c23 = new TCanvas("c23", "Toff23", 1800, 1600);
+    c23->Divide(5, 4); // Adjust rows/columns to fit the number of bins (e.g., 20 bins here)
+
+    TCanvas* c24 = new TCanvas("c24", "Toff24", 1800, 1600);
+    c24->Divide(5, 4); // Adjust rows/columns to fit the number of bins (e.g., 20 bins here)
+
+    vector<double> P2PToff13(19), P2PToff14(19) , P2PToff23(19), P2PToff24(19);
+
+    // Loop through bins and draw each fit
+    for (int binX = 1; binX <= hToff13->GetNbinsX()-1; ++binX) {
+
+        c13->cd(binX); 
+
+        // Create a projection along the Y-axis for the current X-bin
+        TH1F* proj = (TH1F*)hToff13->ProjectionY(Form("proj_bin13%d", binX), binX, binX);
+        proj->SetMinimum(MinX);
+
+        // Fit the projection with a Gaussian
+        TF1* fit = new TF1(Form("fit_bin%d", binX), "gaus",-5,5);
+
+        // Select subpad and draw
+        proj->Fit(fit,"R"); // Suppress output with "Q"
+        proj->Draw();
+        fit->SetLineColor(kRed); // Optional: Differentiate fit line
+        fit->Draw("SAME");
+
+        // Retrieve fit parameters
+        double mean = fit->GetParameter(1);
+        double sigma = fit->GetParameter(2);
+        P2PToff13.at(binX-1) = mean;
+
+        // Add fit results to the subpad using TLatex
+        TLatex text;
+        text.SetNDC();
+        text.SetTextSize(0.05);
+        text.SetTextAlign(13); // Align at top-left corner
+        text.DrawLatex(0.15, 0.85, Form("#mu = %.2f", mean));
+        text.DrawLatex(0.15, 0.75, Form("#sigma = %.2f", sigma));
+
+
+        // Save the mean to the text file
+
+    }
+    // Display the canvas
+    c13->Update();
+
+    // Loop through bins and draw each fit
+    for (int binX = 1; binX <= hToff14->GetNbinsX()-1; ++binX) {
+
+        c14->cd(binX); 
+
+        // Create a projection along the Y-axis for the current X-bin
+        TH1F* proj = (TH1F*)hToff14->ProjectionY(Form("proj_bin14%d", binX), binX, binX);
+        proj->SetMinimum(MinX);
+
+        // Fit the projection with a Gaussian
+        TF1* fit = new TF1(Form("fit_bin%d", binX), "gaus");
+
+        // Select subpad and draw
+        proj->Fit(fit); // Suppress output with "Q"
+        proj->Draw();
+        fit->SetLineColor(kRed); // Optional: Differentiate fit line
+        fit->Draw("SAME");
+
+        // Retrieve fit parameters
+        double mean = fit->GetParameter(1);
+        double sigma = fit->GetParameter(2);
+        P2PToff14.at(binX-1) = mean;
+
+
+
+        // Add fit results to the subpad using TLatex
+        TLatex text;
+        text.SetNDC();
+        text.SetTextSize(0.05);
+        text.SetTextAlign(13); // Align at top-left corner
+        text.DrawLatex(0.15, 0.85, Form("#mu = %.2f", mean));
+        text.DrawLatex(0.15, 0.75, Form("#sigma = %.2f", sigma));
+
+
+        // Save the mean to the text file
+
+    }
+    // Display the canvas
+    c14->Update();
+
+
+    // Loop through bins and draw each fit
+    for (int binX = 1; binX <= hToff23->GetNbinsX()-1; ++binX) {
+
+        c23->cd(binX); 
+
+        // Create a projection along the Y-axis for the current X-bin
+        TH1F* proj = (TH1F*)hToff23->ProjectionY(Form("proj_bin23%d", binX), binX, binX);
+        proj->SetMinimum(MinX);
+
+        // Fit the projection with a Gaussian
+        TF1* fit = new TF1(Form("fit_bin%d", binX), "gaus");
+
+        // Select subpad and draw
+        proj->Fit(fit); // Suppress output with "Q"
+        proj->Draw();
+        fit->SetLineColor(kRed); // Optional: Differentiate fit line
+        fit->Draw("SAME");
+
+        // Retrieve fit parameters
+        double mean = fit->GetParameter(1);
+        double sigma = fit->GetParameter(2);
+        P2PToff23.at(binX-1) = mean;
+
+        // Add fit results to the subpad using TLatex
+        TLatex text;
+        text.SetNDC();
+        text.SetTextSize(0.05);
+        text.SetTextAlign(13); // Align at top-left corner
+        text.DrawLatex(0.15, 0.85, Form("#mu = %.2f", mean));
+        text.DrawLatex(0.15, 0.75, Form("#sigma = %.2f", sigma));
+
+
+        // Save the mean to the text file
+
+    }
+    // Display the canvas
+    c23->Update();
+
+    // Loop through bins and draw each fit
+    for (int binX = 1; binX <= hToff24->GetNbinsX()-1; ++binX) {
+
+        c24->cd(binX); 
+
+        // Create a projection along the Y-axis for the current X-bin
+        TH1F* proj = (TH1F*)hToff24->ProjectionY(Form("proj_bin24%d", binX), binX, binX);
+        proj->SetMinimum(MinX);
+
+        // Fit the projection with a Gaussian
+        TF1* fit = new TF1(Form("fit_bin%d", binX), "gaus");
+
+        // Select subpad and draw
+        proj->Fit(fit,"Q"); // Suppress output with "Q"
+        proj->Draw();
+        fit->SetLineColor(kRed); // Optional: Differentiate fit line
+        fit->Draw("SAME");
+
+        // Retrieve fit parameters
+        double mean = fit->GetParameter(1);
+        double sigma = fit->GetParameter(2);
+        P2PToff24.at(binX-1) = mean;
+
+        // Add fit results to the subpad using TLatex
+        TLatex text;
+        text.SetNDC();
+        text.SetTextSize(0.05);
+        text.SetTextAlign(13); // Align at top-left corner
+        text.DrawLatex(0.15, 0.85, Form("#mu = %.2f", mean));
+        text.DrawLatex(0.15, 0.75, Form("#sigma = %.2f", sigma));
+
+
+        // Save the mean to the text file
+
+    }
+    // Display the canvas
+    c24->Update();  
+
+    //===========================================================================================================
+    //                                          Saving correction
+    //===========================================================================================================
+
+
+    //First we get the absolute correction to use on each section
+    vector<double> Toff13, Toff14, Toff23, Toff24;
+    Toff13 = ToffCalc(P2PToff13);
+    Toff23 = ToffCalc(P2PToff23);
+    Toff14 = ToffCalc(P2PToff14);
+    Toff24 = ToffCalc(P2PToff24);
+
+    //Save it in a txt file
+    ofstream o13("output/Toff13.txt");
+    ofstream o23("output/Toff23.txt");
+    ofstream o14("output/Toff14.txt");
+    ofstream o24("output/Toff24.txt");
+
+    for (auto &elem : Toff13) o13 << elem << endl;
+    for (auto &elem : Toff14) o14 << elem << endl;
+    for (auto &elem : Toff23) o23 << elem << endl;
+    for (auto &elem : Toff24) o24 << elem << endl;
+
+
+    //===========================================================================================================
+    //                                       Testing correction
+    //===========================================================================================================
+
+
+    TH2F*  hCorrToff13 = new TH2F("CorrToff13","CorrToff13",binx ,xmin[0] , xmax[0], biny, ymin[0], ymax[0]);
+    TH2F*  hCorrToff14 = new TH2F("CorrToff14","CorrToff14",binx ,xmin[1] , xmax[1], biny, ymin[1], ymax[1]);
+    TH2F*  hCorrToff23 = new TH2F("CorrToff23","CorrToff23",binx ,xmin[2] , xmax[2], biny, ymin[2], ymax[2]);
+    TH2F*  hCorrToff24 = new TH2F("CorrToff24","CorrToff24",binx ,xmin[3] , xmax[3], biny, ymin[3], ymax[3]);
+
+
+    int Nentries = chain->GetEntries();
+    //int Nentries = 1000000;
+    auto start = std::chrono::high_resolution_clock::now();
+
+    for (int e = 0; e < Nentries; e++) {
+
+        chain->GetEntry(e);
+
+        if (e % 100000  == 0 && e > 0 ) {
+            auto now = std::chrono::high_resolution_clock::now();
+            std::chrono::duration<double> elapsed = now - start;
+            double avgTimePerIteration = elapsed.count() / e;
+            double timeLeft = avgTimePerIteration * (Nentries - e);
+
+            std::cout << "********** Estimated time left: " << int(timeLeft) << " seconds **********" << "\r" << flush;
+        }
+
+        // Get Multiplicity
+        M13 = Time->GetMWPC13Mult();
+        M14 = Time->GetMWPC14Mult();
+        M23 = Time->GetMWPC23Mult();
+        M24 = Time->GetMWPC24Mult();
+
+
+
+        if (M13 == 2 && (abs(S13[0]-S13[1]) == 1)){
+            vector<int> Pos = SortSection(S13);
+
+            if (S13[0] == 0) hCorrToff13->Fill(S13[0],Time->GetTime_MWPC13(Pos[0])  - (Time->GetTime_MWPC13(Pos[1]) + Toff13.at(0) )); 
+
+            else{
+                hCorrToff13->Fill(S13[0],(Time->GetTime_MWPC13(Pos[0]) + Toff13.at(S13[0]-1)) - (Time->GetTime_MWPC13(Pos[1]) + Toff13.at(S13[1]-1)));
+            } 
+
+        }
+
+
+        if (M23 == 2 && (abs(S23[0]-S23[1]) == 1)){
+            vector<int> Pos = SortSection(S23);
+            if (S23[0] == 0) hCorrToff23->Fill(S23[0],Time->GetTime_MWPC23(Pos[0])  - (Time->GetTime_MWPC23(Pos[1]) + Toff23.at(0) )); 
+
+            else{
+                hCorrToff23->Fill(S23[0],(Time->GetTime_MWPC23(Pos[0]) + Toff23.at(S23[0]-1)) - (Time->GetTime_MWPC23(Pos[1]) + Toff23.at(S23[1]-1)));
+            } 
+        }
+
+
+        if (M14 == 2 && (abs(S14[0]-S14[1]) == 1)){
+            vector<int> Pos = SortSection(S14);
+            if (S14[0] == 0) hCorrToff14->Fill(S14[0],Time->GetTime_MWPC14(Pos[0])  - (Time->GetTime_MWPC14(Pos[1]) + Toff14.at(0) )); 
+
+            else{
+                hCorrToff14->Fill(S14[0],(Time->GetTime_MWPC14(Pos[0]) + Toff14.at(S14[0]-1)) - (Time->GetTime_MWPC14(Pos[1]) + Toff14.at(S14[1]-1)));
+            } 
+        }
+
+
+        if (M24 == 2 && (abs(S24[0]-S24[1]) == 1)){
+            vector<int> Pos = SortSection(S24);
+            if (S24[0] == 0) hCorrToff24->Fill(S24[0],Time->GetTime_MWPC24(Pos[0])  - (Time->GetTime_MWPC24(Pos[1]) + Toff24.at(0) )); 
+
+            else{
+                hCorrToff24->Fill(S24[0],(Time->GetTime_MWPC24(Pos[0]) + Toff24.at(S24[0]-1)) - (Time->GetTime_MWPC24(Pos[1]) + Toff24.at(S24[1]-1)));
+            } 
+        }
+
+
+    } // End loop event
+
+    //===========================================================================================================
+    //                                       Drawing canvas
+    //===========================================================================================================
+
+    TCanvas *c1 = new TCanvas("c1","c1");
+    c1->Divide(2);
+
+    c1->cd(1);
+    hToff13->Draw("colz");
+    c1->cd(2);
+    hCorrToff13->Draw("colz");
+
+    TCanvas *c2 = new TCanvas("c2","c2");
+    c2->Divide(2);
+
+    c2->cd(1);
+    hToff23->Draw("colz");
+    c2->cd(2);
+    hCorrToff23->Draw("colz");
+
+
+
+    TCanvas *c3 = new TCanvas("c3","c3");
+    c3->Divide(2);
+
+    c3->cd(1);
+    hToff14->Draw("colz");
+    c3->cd(2);
+    hCorrToff14->Draw("colz");
+
+
+    TCanvas *c4 = new TCanvas("c4","c4");
+    c4->Divide(2);
+
+    c4->cd(1);
+    hToff24->Draw("colz");
+    c4->cd(2);
+    hCorrToff24->Draw("colz");
+}
+
+vector<int> SortSection(UShort_t STargFocal[2]){
+    UShort_t FSection ,LSection ;
+    vector<int> Pos(2) ;
+    if (STargFocal[0]<STargFocal[1]){
+        Pos[0] = 0    ;
+        Pos[1]  = 1    ;
+        FSection = STargFocal[0];
+        LSection = STargFocal[1];
+    }
+    else {
+        Pos[0] = 1    ;
+        Pos[1]  = 0   ;
+        FSection = STargFocal[1];
+        LSection = STargFocal[0];    
+    }
+
+    STargFocal[0] = FSection;
+    STargFocal[1] = LSection;
+    return Pos; 
+}
+
+vector<double> ToffCalc(vector<double> ToffP2P){
+
+    vector<double> res;
+    double Sum = 0;
+    for (int i=0; i<ToffP2P.size() ; i++){
+        Sum += ToffP2P.at(i);
+        res.push_back(Sum);
+    }
+    return res;
+}
diff --git a/Projects/AlPhaPha/2024/macro/mwpc/Toff/output/ReadMe.md b/Projects/AlPhaPha/2024/macro/mwpc/Toff/output/ReadMe.md
new file mode 100644
index 0000000000000000000000000000000000000000..b9c3d0261a8238e58145e56b1b1804a454f11bf7
--- /dev/null
+++ b/Projects/AlPhaPha/2024/macro/mwpc/Toff/output/ReadMe.md
@@ -0,0 +1 @@
+# Output here
diff --git a/Projects/AlPhaPha/2024/project.config b/Projects/AlPhaPha/2024/project.config
index 685928aff9996c09fcd64ff7131a6f187082589e..b3a6c3e89cba9bba28d7917e6bbcaa0ca72c6549 100644
--- a/Projects/AlPhaPha/2024/project.config
+++ b/Projects/AlPhaPha/2024/project.config
@@ -1,6 +1,6 @@
 Project e850
- %AnalysisOutput= ../../../../../../../../../ 
- AnalysisOutput= ./root/analysis
+ AnalysisOutput= ../../../../../../../../../ 
+ %AnalysisOutput= ./root/analysis
  SimulationOutput= ./root/simulation
  EnergyLoss= ./EnergyLossTable
    
diff --git a/Projects/AlPhaPha/DataMacro/Merger.C b/Projects/AlPhaPha/DataMacro/Merger.C
index aea1e96403ffeb705ed143b8440f7f0de18f75c5..66c65707a18abfc391fc2071159fa1789e034faf 100644
--- a/Projects/AlPhaPha/DataMacro/Merger.C
+++ b/Projects/AlPhaPha/DataMacro/Merger.C
@@ -11,7 +11,7 @@ void Merger(int N, const char* outputDir, const char* outputFileName, const char
             continue;
         }
         merger.AddFile(fileName);  // Add file to the merger
-
+        cout << "Added file " << fileName << endl; 
         // Display progress
         int progress = ((i + 1) * 100) / N;
         std::cout << "\rMerging files: " << progress << "% complete." << std::flush;
diff --git a/Projects/AlPhaPha/DataMacro/output/ReadMe.md b/Projects/AlPhaPha/DataMacro/output/ReadMe.md
new file mode 100644
index 0000000000000000000000000000000000000000..7f7cf92728778dc17d27c4bab8a9c12808786473
--- /dev/null
+++ b/Projects/AlPhaPha/DataMacro/output/ReadMe.md
@@ -0,0 +1,9 @@
+# How it works
+
+Please create a directory holding the data cut by Secator.C
+
+```
+mkdir run_RUNUMBER
+
+```
+and use secator to cut the data in the directory
diff --git a/Projects/AlPhaPha/DataMacro/output/analysis/ReadMe.md b/Projects/AlPhaPha/DataMacro/output/analysis/ReadMe.md
new file mode 100644
index 0000000000000000000000000000000000000000..91298cc8030a794f4558a4d27001a2a1aa29e82f
--- /dev/null
+++ b/Projects/AlPhaPha/DataMacro/output/analysis/ReadMe.md
@@ -0,0 +1,9 @@
+# How it works
+
+Please create a directory holding the data analysed by the snakemake before
+merger
+
+```
+mkdir run_RUNUMBER
+
+```
diff --git a/Projects/AlPhaPha/conversion/2024/ChainConvert.sh b/Projects/AlPhaPha/conversion/2024/ChainConvert.sh
index fdffedb5e2d53aa3cd91e650c69db8c3483fec90..a3933aa0fc4702e222e307e792c020850e0808ac 100644
--- a/Projects/AlPhaPha/conversion/2024/ChainConvert.sh
+++ b/Projects/AlPhaPha/conversion/2024/ChainConvert.sh
@@ -3,11 +3,15 @@
 max_jobs=20  # Set the maximum number of parallel jobs (cores)
 
 for run in {201..260}; do
-  while [ $(jobs | wc -l) -ge $max_jobs ]; do
+  while [ $(jobs -r | wc -l) -ge $max_jobs ]; do
     wait -n  # Wait for at least one job to finish
+    echo "A job has finished. $(jobs -r | wc -l) jobs remaining."
   done
-  root "convert.C($run)" &
+  root -b -q "convert.C($run)" &
+  echo "Started job for run $run. $(jobs -r | wc -l) jobs currently running."
 done
 
-wait  # Wait for all jobs to finish
+# Ensure all remaining jobs are completed
+wait
+echo "All jobs are complete."
 
diff --git a/Projects/AlPhaPha/conversion/2024/convert.C b/Projects/AlPhaPha/conversion/2024/convert.C
index 51574c3217b63cd54c6c330b563d0faac551ba9f..7346962e63dcb52699e88557745e089312eea49b 100644
--- a/Projects/AlPhaPha/conversion/2024/convert.C
+++ b/Projects/AlPhaPha/conversion/2024/convert.C
@@ -4,6 +4,7 @@ void convert(int run=204){
   m_pista = new TPISTAData();
   m_fpmw = new TFPMWData();
   m_ic = new TICData();
+  m_time = new TTimeData();
   m_exogam = new TExogamCalData();
 
   int Year = 2024;
@@ -23,6 +24,7 @@ void convert(int run=204){
   output_tree->Branch("PISTA","TPISTAData",&m_pista);
   output_tree->Branch("FPMW","TFPMWData",&m_fpmw);
   output_tree->Branch("IC","TICData",&m_ic);
+  output_tree->Branch("Time","TTimeData",&m_time);
   output_tree->Branch("Exogam","TExogamCalData",&m_exogam);
 
   output_tree->Branch("T_TMW0_FPMW0",&T_TMW0_FPMW0,"T_TMW0_FPMW0/F");
@@ -53,98 +55,132 @@ void convert(int run=204){
 
 
 
+  auto start = std::chrono::high_resolution_clock::now();
   int nentries = input_tree->GetEntries();
   for(int i=0; i<nentries; i++){
     Clear();
     input_tree->GetEntry(i);
-    if(i%10000==0) cout << "\033[34m\rProcessing tree... " <<(double)i/nentries*100 << "\% done" << flush;
+
+
+    if (i % 100000  == 0 && i > 0 ) {
+            auto now = std::chrono::high_resolution_clock::now();
+            std::chrono::duration<double> elapsed = now - start;
+            double avgTimePerIteration = elapsed.count() / i;
+            double timeLeft = avgTimePerIteration * (nentries - i);
+
+            std::cout << "********** Estimated time left: " << int(timeLeft) << " seconds **********" << "\r" << flush;
+        }
     
    fVAMOS_TS_sec = TMWPat_0TS*1e-8;
    fPISTA_TS_sec = PISTA_TS*1e-8;
 
     // IC //
-    for(int i=0; i<11; i++){
+    for (int i=0; i<ICRawM; i++){
+      m_ic->SetIC_TS(ICRawTS[i]);
       m_ic->SetIC_Section(i+1);
       m_ic->SetIC_Charge(IC[i]);
     }
 
+    // Time //
+    
+    for (int i=0; i<MTOF_FP0_T0VM;i++){
+        m_time->SetTS_MWPC13(MTOF_FP0_T0VTS[i]); 
+        m_time->SetTime_MWPC13(MTOF_FP0_T0V[i]); 
+    }
+    for (int i=0; i<MTOF_FP0_T1VM;i++){
+        m_time->SetTS_MWPC14(MTOF_FP0_T1VTS[i]);
+        m_time->SetTime_MWPC14(MTOF_FP0_T1V[i]);
+    }
+
+    for (int i=0; i<MTOF_FP1_T0VM;i++){
+        m_time->SetTS_MWPC23(MTOF_FP1_T0VTS[i]); 
+        m_time->SetTime_MWPC23(MTOF_FP1_T0V[i]); 
+    }
+
+    for (int i=0; i<MTOF_FP1_T1VM;i++){
+        m_time->SetTS_MWPC24(MTOF_FP1_T1VTS[i]); 
+        m_time->SetTime_MWPC24(MTOF_FP1_T1V[i]); 
+    }
+
+
+
     // -TMW1- //
     for(int p=0;p<TMW1_XRawM; p++){
-      int strip = TMW1_XRawNr[p];
-      double charge = TMW1_XRaw[p];
-      m_fpmw->SetFPMW_X(1,strip,charge);
+        int strip = TMW1_XRawNr[p];
+        double charge = TMW1_XRaw[p];
+        m_fpmw->SetFPMW_X(1,strip,charge);
     }
     for(int p=0;p<TMW1_YRawM; p++){
-      int strip = TMW1_YRawNr[p];
-      double charge = TMW1_YRaw[p];
-      m_fpmw->SetFPMW_Y(1,strip,charge);
+        int strip = TMW1_YRawNr[p];
+        double charge = TMW1_YRaw[p];
+        m_fpmw->SetFPMW_Y(1,strip,charge);
     }
     // -TMW2- //
     for(int p=0;p<TMW2_XRawM; p++){
-      int strip = TMW2_XRawNr[p];
-      double charge = TMW2_XRaw[p];
-      m_fpmw->SetFPMW_X(2,strip,charge);
+        int strip = TMW2_XRawNr[p];
+        double charge = TMW2_XRaw[p];
+        m_fpmw->SetFPMW_X(2,strip,charge);
     }
     for(int p=0;p<TMW2_YRawM; p++){
-      int strip = TMW2_YRawNr[p];
-      double charge = TMW2_YRaw[p];
-      m_fpmw->SetFPMW_Y(2,strip,charge);
+        int strip = TMW2_YRawNr[p];
+        double charge = TMW2_YRaw[p];
+        m_fpmw->SetFPMW_Y(2,strip,charge);
     }
 
     // -FPMW0- //
     for(int p=0;p<FPMW0_XRawM; p++){
-      int strip = FPMW0_XRawNr[p];
-      double charge = FPMW0_XRaw[p];
-      m_fpmw->SetFPMW_X(3,strip,charge);
+        int strip = FPMW0_XRawNr[p];
+        double charge = FPMW0_XRaw[p];
+        m_fpmw->SetFPMW_X(3,strip,charge);
     }
     for(int p=0;p<FPMW0_YRawM; p++){
-      int strip = FPMW0_YRawNr[p];
-      double charge = FPMW0_YRaw[p];
-      m_fpmw->SetFPMW_Y(3,strip,charge);
+        int strip = FPMW0_YRawNr[p];
+        double charge = FPMW0_YRaw[p];
+        m_fpmw->SetFPMW_Y(3,strip,charge);
     }
     // -FPMW1- //
     for(int p=0;p<FPMW1_XRawM; p++){
-      int strip = FPMW1_XRawNr[p];
-      double charge = FPMW1_XRaw[p];
-      m_fpmw->SetFPMW_X(4,strip,charge);
+        int strip = FPMW1_XRawNr[p];
+        double charge = FPMW1_XRaw[p];
+        m_fpmw->SetFPMW_X(4,strip,charge);
     }
     for(int p=0;p<FPMW1_YRawM; p++){
-      int strip = FPMW1_YRawNr[p];
-      double charge = FPMW1_YRaw[p];
-      m_fpmw->SetFPMW_Y(4,strip,charge);
+        int strip = FPMW1_YRawNr[p];
+        double charge = FPMW1_YRaw[p];
+        m_fpmw->SetFPMW_Y(4,strip,charge);
     }
 
     if(fVAMOS_TS_sec>0 || fPISTA_TS_sec>0){
-      if(OutersVM<25){
-        for(int p=0; p<Inner6MVM; p++){
-          //if(Inner6MVM==2) cout << "********p= " << p << endl;
-          int crystal = Inner6MVN[p];
-          double E = Inner6MV[p];
-          double EHG = Inner20MV[p];
-          double TDC = DeltaTV[p];  // Existe pas en 2024
-          unsigned long long TS = Inner6MVTS[p];
-          int seg = -1;
-          double outers1 = -1000;
-          double outers2 = -1000;
-          double outers3 = -1000;
-          double outers4 = -1000;
-
-          //cout << "*****************mult= " << OutersVM << endl;
-          for(int i=0; i<OutersVM; i++){
-            seg = OutersVN[i] - 4*crystal;
-            // cout << i << " " << OutersVN[i] << " " << crystal << " " << seg << endl;
-            if(seg==0) outers1 = OutersV[i];
-            else if(seg==1) outers2 = OutersV[i];
-            else if(seg==2) outers3 = OutersV[i];
-            else if(seg==3) outers4 = OutersV[i];
-          }
-          m_exogam->SetExo(crystal,E,EHG,TS,TDC,0,0,outers1,outers2,outers3,outers4);
-          //cout << outers1 << " " << outers2 << " " << outers3 << " " << outers4 << endl;
-          //if(Inner6MVM==2){
-          //  cout << "setting p= " << p << " " << outers1 << " " << outers2 << " " << outers3 << " " << outers4 << endl;
-          //}
+        if(OutersVM<25){
+            for(int p=0; p<Inner6MVM; p++){
+                //if(Inner6MVM==2) cout << "********p= " << p << endl;
+                int crystal = Inner6MVN[p];
+                double E = Inner6MV[p];
+                double EHG = Inner20MV[p];
+                double TDC = DeltaTV[p];  // Existe pas en 2024
+                unsigned long long TS = Inner6MVTS[p];
+                int seg = -1;
+                double outers1 = -1000;
+                double outers2 = -1000;
+                double outers3 = -1000;
+                double outers4 = -1000;
+
+                //cout << "*****************mult= " << OutersVM << endl;
+                for(int i=0; i<OutersVM; i++){
+                    seg = OutersVN[i] - 4*crystal;
+                    // cout << i << " " << OutersVN[i] << " " << crystal << " " << seg << endl;
+                    if(seg==0) outers1 = OutersV[i];
+                    else if(seg==1) outers2 = OutersV[i];
+                    else if(seg==2) outers3 = OutersV[i];
+                    else if(seg==3) outers4 = OutersV[i];
+                }
+                m_exogam->SetExo(crystal,E,EHG,TS,TDC,0,0,outers1,outers2,outers3,outers4);
+                //cout << outers1 << " " << outers2 << " " << outers3 << " " << outers4 << endl;
+                //if(Inner6MVM==2){
+                //  cout << "setting p= " << p << " " << outers1 << " " << outers2 << " " << outers3 << " " << outers4 << endl;
+                //}
+            }
         }
-      }
     }
 
     if(fPISTA_TS_sec>0 || fVAMOS_TS_sec>0)
@@ -159,145 +195,159 @@ void convert(int run=204){
 
 ///////////////////////////////////////////////////
 void Clear(){
-  m_fpmw->Clear();
-  m_ic->Clear();
-  m_pista->Clear();
-  m_exogam->Clear();
+    m_fpmw->Clear();
+    m_ic->Clear();
+    m_time->Clear();
+    m_pista->Clear();
+    m_exogam->Clear();
 }
 
 
 ///////////////////////////////////////////////////
 void InitInputTree(){
-  input_tree->SetBranchAddress("PISTA",&m_pista);
-
-  // TAC
-  input_tree->SetBranchStatus("T_TMW1_FPMW0_C","true");
-  input_tree->SetBranchAddress("T_TMW1_FPMW0_C",&T_TMW0_FPMW0);
-  input_tree->SetBranchStatus("T_TMW1_FPMW1_C","true");
-  input_tree->SetBranchAddress("T_TMW1_FPMW1_C",&T_TMW0_FPMW1);
-  input_tree->SetBranchStatus("T_TMW2_FPMW0_C","true");
-  input_tree->SetBranchAddress("T_TMW2_FPMW0_C",&T_TMW1_FPMW0);
-  input_tree->SetBranchStatus("T_TMW2_FPMW1_C","true");
-  input_tree->SetBranchAddress("T_TMW2_FPMW1_C",&T_TMW1_FPMW1);
-
-  // Pat
-  //input_tree->SetBranchStatus("MTOF_FP0_T0VN","true");
-  //input_tree->SetBranchAddress("MTOF_FP0_T0VN",&fFPMWPat_0RawNr);
-  input_tree->SetBranchStatus("TMWPat_00TS","true");
-  input_tree->SetBranchAddress("TMWPat_00TS",&TMWPat_0TS);
-  input_tree->SetBranchStatus("PISTA_TS","true");
-  input_tree->SetBranchAddress("PISTA_TS",&PISTA_TS);
-
-  //MTOF
-
-  input_tree->SetBranchStatus("MTOF_FP0_T0VN","true");
-  input_tree->SetBranchAddress("MTOF_FP0_T0VN",&MTOF_FP0_T0VN);
-  input_tree->SetBranchStatus("MTOF_FP1_T0VN","true");
-  input_tree->SetBranchAddress("MTOF_FP1_T0VN",&MTOF_FP1_T0VN);
-  input_tree->SetBranchStatus("MTOF_FP0_T1VN","true");
-  input_tree->SetBranchAddress("MTOF_FP0_T1VN",&MTOF_FP0_T1VN);
-  input_tree->SetBranchStatus("MTOF_FP1_T1VN","true");
-  input_tree->SetBranchAddress("MTOF_FP1_T1VN",&MTOF_FP1_T1VN);
-
-  input_tree->SetBranchStatus("MTOF_FP0_T0VM","true");
-  input_tree->SetBranchAddress("MTOF_FP0_T0VM",&MTOF_FP0_T0VM);
-  input_tree->SetBranchStatus("MTOF_FP1_T0VM","true");
-  input_tree->SetBranchAddress("MTOF_FP1_T0VM",&MTOF_FP1_T0VM);
-  input_tree->SetBranchStatus("MTOF_FP0_T1VM","true");
-  input_tree->SetBranchAddress("MTOF_FP0_T1VM",&MTOF_FP0_T1VM);
-  input_tree->SetBranchStatus("MTOF_FP1_T1VM","true");
-  input_tree->SetBranchAddress("MTOF_FP1_T1VM",&MTOF_FP1_T1VM);
-
-  input_tree->SetBranchStatus("MTOF_FP0_T0V","true");
-  input_tree->SetBranchAddress("MTOF_FP0_T0V",&MTOF_FP0_T0V);
-  input_tree->SetBranchStatus("MTOF_FP1_T0V","true");
-  input_tree->SetBranchAddress("MTOF_FP1_T0V",&MTOF_FP1_T0V);
-  input_tree->SetBranchStatus("MTOF_FP0_T1V","true");
-  input_tree->SetBranchAddress("MTOF_FP0_T1V",&MTOF_FP0_T1V);
-  input_tree->SetBranchStatus("MTOF_FP1_T1V","true");
-  input_tree->SetBranchAddress("MTOF_FP1_T1V",&MTOF_FP1_T1V);
-
-
-
-  // IC
-  input_tree->SetBranchStatus("IC","true");
-  input_tree->SetBranchAddress("IC",&IC);
-
-  // FPMW0-X
-  input_tree->SetBranchStatus("FPMW0_XRawM","true");
-  input_tree->SetBranchAddress("FPMW0_XRawM",&FPMW0_XRawM);
-  input_tree->SetBranchStatus("FPMW0_XRaw","true");
-  input_tree->SetBranchAddress("FPMW0_XRaw",FPMW0_XRaw);
-  input_tree->SetBranchStatus("FPMW0_XRawNr","true");
-  input_tree->SetBranchAddress("FPMW0_XRawNr",FPMW0_XRawNr);
-  // FPMW0-Y
-  input_tree->SetBranchStatus("FPMW0_YRawM","true");
-  input_tree->SetBranchAddress("FPMW0_YRawM",&FPMW0_YRawM);
-  input_tree->SetBranchStatus("FPMW0_YRaw","true");
-  input_tree->SetBranchAddress("FPMW0_YRaw",FPMW0_YRaw);
-  input_tree->SetBranchStatus("FPMW0_YRawNr","true");
-  input_tree->SetBranchAddress("FPMW0_YRawNr",FPMW0_YRawNr);
-  // FPMW1-X
-  input_tree->SetBranchStatus("FPMW1_XRawM","true");
-  input_tree->SetBranchAddress("FPMW1_XRawM",&FPMW1_XRawM);
-  input_tree->SetBranchStatus("FPMW1_XRaw","true");
-  input_tree->SetBranchAddress("FPMW1_XRaw",FPMW1_XRaw);
-  input_tree->SetBranchStatus("FPMW1_XRawNr","true");
-  input_tree->SetBranchAddress("FPMW1_XRawNr",FPMW1_XRawNr);
-  // FPMW0-Y
-  input_tree->SetBranchStatus("FPMW1_YRawM","true");
-  input_tree->SetBranchAddress("FPMW1_YRawM",&FPMW1_YRawM);
-  input_tree->SetBranchStatus("FPMW1_YRaw","true");
-  input_tree->SetBranchAddress("FPMW1_YRaw",FPMW1_YRaw);
-  input_tree->SetBranchStatus("FPMW1_YRawNr","true");
-  input_tree->SetBranchAddress("FPMW1_YRawNr",FPMW1_YRawNr);
-  // TMW1-X
-  input_tree->SetBranchStatus("TMW1_XRawM","true");
-  input_tree->SetBranchAddress("TMW1_XRawM",&TMW1_XRawM);
-  input_tree->SetBranchStatus("TMW1_XRaw","true");
-  input_tree->SetBranchAddress("TMW1_XRaw",TMW1_XRaw);
-  input_tree->SetBranchStatus("TMW1_XRawNr","true");
-  input_tree->SetBranchAddress("TMW1_XRawNr",TMW1_XRawNr);
-  // TMW1-Y
-  input_tree->SetBranchStatus("TMW1_YRawM","true");
-  input_tree->SetBranchAddress("TMW1_YRawM",&TMW1_YRawM);
-  input_tree->SetBranchStatus("TMW1_YRaw","true");
-  input_tree->SetBranchAddress("TMW1_YRaw",TMW1_YRaw);
-  input_tree->SetBranchStatus("TMW1_YRawNr","true");
-  input_tree->SetBranchAddress("TMW1_YRawNr",TMW1_YRawNr);
-  // TMW2-X
-  input_tree->SetBranchStatus("TMW2_XRawM","true");
-  input_tree->SetBranchAddress("TMW2_XRawM",&TMW2_XRawM);
-  input_tree->SetBranchStatus("TMW2_XRaw","true");
-  input_tree->SetBranchAddress("TMW2_XRaw",TMW2_XRaw);
-  input_tree->SetBranchStatus("TMW2_XRawNr","true");
-  input_tree->SetBranchAddress("TMW2_XRawNr",TMW2_XRawNr);
-  // TMW2-Y
-  input_tree->SetBranchStatus("TMW2_YRawM","true");
-  input_tree->SetBranchAddress("TMW2_YRawM",&TMW2_YRawM);
-  input_tree->SetBranchStatus("TMW2_YRaw","true");
-  input_tree->SetBranchAddress("TMW2_YRaw",TMW2_YRaw);
-  input_tree->SetBranchStatus("TMW2_YRawNr","true");
-  input_tree->SetBranchAddress("TMW2_YRawNr",TMW2_YRawNr);
-  // Exogam
-  input_tree->SetBranchStatus("Inner6MVM","true");
-  input_tree->SetBranchAddress("Inner6MVM",&Inner6MVM);
-  input_tree->SetBranchStatus("Inner6MV","true");
-  input_tree->SetBranchAddress("Inner6MV",Inner6MV);
-  input_tree->SetBranchStatus("Inner6MVN","true");
-  input_tree->SetBranchAddress("Inner6MVN",Inner6MVN);
-  input_tree->SetBranchStatus("Inner6MVTS","true");
-  input_tree->SetBranchAddress("Inner6MVTS",Inner6MVTS);
-
-  input_tree->SetBranchStatus("OutersVM","true");
-  input_tree->SetBranchAddress("OutersVM",&OutersVM);
-  input_tree->SetBranchStatus("OutersV","true");
-  input_tree->SetBranchAddress("OutersV",OutersV);
-  input_tree->SetBranchStatus("OutersVN","true");
-  input_tree->SetBranchAddress("OutersVN",OutersVN);
-
-  input_tree->SetBranchStatus("Inner20MV","true");
-  input_tree->SetBranchAddress("Inner20MV",Inner20MV);
+    input_tree->SetBranchAddress("PISTA",&m_pista);
+
+    // TAC
+    input_tree->SetBranchStatus("T_TMW1_FPMW0_C","true");
+    input_tree->SetBranchAddress("T_TMW1_FPMW0_C",&T_TMW0_FPMW0);
+    input_tree->SetBranchStatus("T_TMW1_FPMW1_C","true");
+    input_tree->SetBranchAddress("T_TMW1_FPMW1_C",&T_TMW0_FPMW1);
+    input_tree->SetBranchStatus("T_TMW2_FPMW0_C","true");
+    input_tree->SetBranchAddress("T_TMW2_FPMW0_C",&T_TMW1_FPMW0);
+    input_tree->SetBranchStatus("T_TMW2_FPMW1_C","true");
+    input_tree->SetBranchAddress("T_TMW2_FPMW1_C",&T_TMW1_FPMW1);
+
+    // Pat
+    //input_tree->SetBranchStatus("MTOF_FP0_T0VN","true");
+    //input_tree->SetBranchAddress("MTOF_FP0_T0VN",&fFPMWPat_0RawNr);
+    input_tree->SetBranchStatus("TMWPat_00TS","true");
+    input_tree->SetBranchAddress("TMWPat_00TS",&TMWPat_0TS);
+    input_tree->SetBranchStatus("PISTA_TS","true");
+    input_tree->SetBranchAddress("PISTA_TS",&PISTA_TS);
+
+    //MTOF
+
+    input_tree->SetBranchStatus("MTOF_FP0_T0VN","true");
+    input_tree->SetBranchAddress("MTOF_FP0_T0VN",&MTOF_FP0_T0VN);
+    input_tree->SetBranchStatus("MTOF_FP1_T0VN","true");
+    input_tree->SetBranchAddress("MTOF_FP1_T0VN",&MTOF_FP1_T0VN);
+    input_tree->SetBranchStatus("MTOF_FP0_T1VN","true");
+    input_tree->SetBranchAddress("MTOF_FP0_T1VN",&MTOF_FP0_T1VN);
+    input_tree->SetBranchStatus("MTOF_FP1_T1VN","true");
+    input_tree->SetBranchAddress("MTOF_FP1_T1VN",&MTOF_FP1_T1VN);
+
+    input_tree->SetBranchStatus("MTOF_FP0_T0VM","true");
+    input_tree->SetBranchAddress("MTOF_FP0_T0VM",&MTOF_FP0_T0VM);
+    input_tree->SetBranchStatus("MTOF_FP1_T0VM","true");
+    input_tree->SetBranchAddress("MTOF_FP1_T0VM",&MTOF_FP1_T0VM);
+    input_tree->SetBranchStatus("MTOF_FP0_T1VM","true");
+    input_tree->SetBranchAddress("MTOF_FP0_T1VM",&MTOF_FP0_T1VM);
+    input_tree->SetBranchStatus("MTOF_FP1_T1VM","true");
+    input_tree->SetBranchAddress("MTOF_FP1_T1VM",&MTOF_FP1_T1VM);
+
+    input_tree->SetBranchStatus("MTOF_FP0_T0V","true");
+    input_tree->SetBranchAddress("MTOF_FP0_T0V",&MTOF_FP0_T0V);
+    input_tree->SetBranchStatus("MTOF_FP1_T0V","true");
+    input_tree->SetBranchAddress("MTOF_FP1_T0V",&MTOF_FP1_T0V);
+    input_tree->SetBranchStatus("MTOF_FP0_T1V","true");
+    input_tree->SetBranchAddress("MTOF_FP0_T1V",&MTOF_FP0_T1V);
+    input_tree->SetBranchStatus("MTOF_FP1_T1V","true");
+    input_tree->SetBranchAddress("MTOF_FP1_T1V",&MTOF_FP1_T1V);
+
+
+    input_tree->SetBranchStatus("MTOF_FP0_T0VTS","true");
+    input_tree->SetBranchAddress("MTOF_FP0_T0VTS",&MTOF_FP0_T0VTS);
+    input_tree->SetBranchStatus("MTOF_FP1_T0VTS","true");
+    input_tree->SetBranchAddress("MTOF_FP1_T0VTS",&MTOF_FP1_T0VTS);
+    input_tree->SetBranchStatus("MTOF_FP0_T1VTS","true");
+    input_tree->SetBranchAddress("MTOF_FP0_T1VTS",&MTOF_FP0_T1VTS);
+    input_tree->SetBranchStatus("MTOF_FP1_T1VTS","true");
+    input_tree->SetBranchAddress("MTOF_FP1_T1VTS",&MTOF_FP1_T1VTS);
+
+    // IC
+    input_tree->SetBranchStatus("IC","true");
+    input_tree->SetBranchAddress("IC",&IC);
+
+    input_tree->SetBranchStatus("ICRawTS","true");
+    input_tree->SetBranchAddress("ICRawTS",&ICRawTS);
+
+    input_tree->SetBranchStatus("ICRawM","true");
+    input_tree->SetBranchAddress("ICRawM",&ICRawM);
+    // FPMW0-X
+    input_tree->SetBranchStatus("FPMW0_XRawM","true");
+    input_tree->SetBranchAddress("FPMW0_XRawM",&FPMW0_XRawM);
+    input_tree->SetBranchStatus("FPMW0_XRaw","true");
+    input_tree->SetBranchAddress("FPMW0_XRaw",FPMW0_XRaw);
+    input_tree->SetBranchStatus("FPMW0_XRawNr","true");
+    input_tree->SetBranchAddress("FPMW0_XRawNr",FPMW0_XRawNr);
+    // FPMW0-Y
+    input_tree->SetBranchStatus("FPMW0_YRawM","true");
+    input_tree->SetBranchAddress("FPMW0_YRawM",&FPMW0_YRawM);
+    input_tree->SetBranchStatus("FPMW0_YRaw","true");
+    input_tree->SetBranchAddress("FPMW0_YRaw",FPMW0_YRaw);
+    input_tree->SetBranchStatus("FPMW0_YRawNr","true");
+    input_tree->SetBranchAddress("FPMW0_YRawNr",FPMW0_YRawNr);
+    // FPMW1-X
+    input_tree->SetBranchStatus("FPMW1_XRawM","true");
+    input_tree->SetBranchAddress("FPMW1_XRawM",&FPMW1_XRawM);
+    input_tree->SetBranchStatus("FPMW1_XRaw","true");
+    input_tree->SetBranchAddress("FPMW1_XRaw",FPMW1_XRaw);
+    input_tree->SetBranchStatus("FPMW1_XRawNr","true");
+    input_tree->SetBranchAddress("FPMW1_XRawNr",FPMW1_XRawNr);
+    // FPMW0-Y
+    input_tree->SetBranchStatus("FPMW1_YRawM","true");
+    input_tree->SetBranchAddress("FPMW1_YRawM",&FPMW1_YRawM);
+    input_tree->SetBranchStatus("FPMW1_YRaw","true");
+    input_tree->SetBranchAddress("FPMW1_YRaw",FPMW1_YRaw);
+    input_tree->SetBranchStatus("FPMW1_YRawNr","true");
+    input_tree->SetBranchAddress("FPMW1_YRawNr",FPMW1_YRawNr);
+    // TMW1-X
+    input_tree->SetBranchStatus("TMW1_XRawM","true");
+    input_tree->SetBranchAddress("TMW1_XRawM",&TMW1_XRawM);
+    input_tree->SetBranchStatus("TMW1_XRaw","true");
+    input_tree->SetBranchAddress("TMW1_XRaw",TMW1_XRaw);
+    input_tree->SetBranchStatus("TMW1_XRawNr","true");
+    input_tree->SetBranchAddress("TMW1_XRawNr",TMW1_XRawNr);
+    // TMW1-Y
+    input_tree->SetBranchStatus("TMW1_YRawM","true");
+    input_tree->SetBranchAddress("TMW1_YRawM",&TMW1_YRawM);
+    input_tree->SetBranchStatus("TMW1_YRaw","true");
+    input_tree->SetBranchAddress("TMW1_YRaw",TMW1_YRaw);
+    input_tree->SetBranchStatus("TMW1_YRawNr","true");
+    input_tree->SetBranchAddress("TMW1_YRawNr",TMW1_YRawNr);
+    // TMW2-X
+    input_tree->SetBranchStatus("TMW2_XRawM","true");
+    input_tree->SetBranchAddress("TMW2_XRawM",&TMW2_XRawM);
+    input_tree->SetBranchStatus("TMW2_XRaw","true");
+    input_tree->SetBranchAddress("TMW2_XRaw",TMW2_XRaw);
+    input_tree->SetBranchStatus("TMW2_XRawNr","true");
+    input_tree->SetBranchAddress("TMW2_XRawNr",TMW2_XRawNr);
+    // TMW2-Y
+    input_tree->SetBranchStatus("TMW2_YRawM","true");
+    input_tree->SetBranchAddress("TMW2_YRawM",&TMW2_YRawM);
+    input_tree->SetBranchStatus("TMW2_YRaw","true");
+    input_tree->SetBranchAddress("TMW2_YRaw",TMW2_YRaw);
+    input_tree->SetBranchStatus("TMW2_YRawNr","true");
+    input_tree->SetBranchAddress("TMW2_YRawNr",TMW2_YRawNr);
+    // Exogam
+    input_tree->SetBranchStatus("Inner6MVM","true");
+    input_tree->SetBranchAddress("Inner6MVM",&Inner6MVM);
+    input_tree->SetBranchStatus("Inner6MV","true");
+    input_tree->SetBranchAddress("Inner6MV",Inner6MV);
+    input_tree->SetBranchStatus("Inner6MVN","true");
+    input_tree->SetBranchAddress("Inner6MVN",Inner6MVN);
+    input_tree->SetBranchStatus("Inner6MVTS","true");
+    input_tree->SetBranchAddress("Inner6MVTS",Inner6MVTS);
+
+    input_tree->SetBranchStatus("OutersVM","true");
+    input_tree->SetBranchAddress("OutersVM",&OutersVM);
+    input_tree->SetBranchStatus("OutersV","true");
+    input_tree->SetBranchAddress("OutersV",OutersV);
+    input_tree->SetBranchStatus("OutersVN","true");
+    input_tree->SetBranchAddress("OutersVN",OutersVN);
+
+    input_tree->SetBranchStatus("Inner20MV","true");
+    input_tree->SetBranchAddress("Inner20MV",Inner20MV);
 
 }
 
diff --git a/Projects/AlPhaPha/conversion/2024/convert.h b/Projects/AlPhaPha/conversion/2024/convert.h
index 8b7a4face728fb452516e33db43042a18e32d5a7..5a0411fd19594b54c7cf5a43614ab62e29d6e715 100644
--- a/Projects/AlPhaPha/conversion/2024/convert.h
+++ b/Projects/AlPhaPha/conversion/2024/convert.h
@@ -1,6 +1,7 @@
 TPISTAData* m_pista;
 TFPMWData* m_fpmw;
 TICData* m_ic;
+TTimeData* m_time;
 TExogamCalData* m_exogam;
 //TFile* ofile;
 TChain* input_tree;
@@ -24,6 +25,11 @@ Int_t MTOF_FP1_T0VN[20];
 Int_t MTOF_FP0_T1VN[20];
 Int_t MTOF_FP1_T1VN[20];
 
+long MTOF_FP0_T0VTS[20];
+long MTOF_FP0_T1VTS[20];
+long MTOF_FP1_T0VTS[20];
+long MTOF_FP1_T1VTS[20];
+
 Int_t MTOF_FP0_T0VM;
 Int_t MTOF_FP1_T0VM;
 Int_t MTOF_FP0_T1VM;
@@ -44,6 +50,8 @@ ULong64_t PISTA_TS;
 
 // IC //
 float IC[11];
+long ICRawTS[11];
+int ICRawM;
 
 // TW1 //
 Int_t TMW1_XRawM;