diff --git a/Projects/AlPhaPha/2024/Analysis.cxx b/Projects/AlPhaPha/2024/Analysis.cxx
index 8e25260c22852da47032736e0de72b7adadde15c..9eaf7e86fabf7feb864cc2bda87af5fe062b654f 100644
--- a/Projects/AlPhaPha/2024/Analysis.cxx
+++ b/Projects/AlPhaPha/2024/Analysis.cxx
@@ -473,7 +473,8 @@ void Analysis::VamosAnalysis(){
 
         if(FPMW->Xf!=-1000){
 
-            FF_DE   = IC->DE;
+            FF_DE      = IC->DE;
+            FF_DE_IC14   = 0.5*(IC->fIC_raw[1] +  IC->fIC_raw[2] + IC->fIC_raw[3]) + IC->fIC_raw[4] ;
             FF_Eres = IC->Eres;
 
             Tracking->CalculateReconstruction(FPMW->Xf, 1000*FPMW->Thetaf, m_Brho_ref, FF_Brho, Theta, FF_Path);
@@ -483,8 +484,8 @@ void Analysis::VamosAnalysis(){
             FF_Y3  = FPMW->PositionY[2];
 
             //FF_IC_Y = FPMW->Yf + (1442.6+6774.4-7600)*tan(FPMW->Phif/1000);
-            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);
+            FF_IC_Y = FPMW->Yf + (1442.6+6774.4-7600)*tan(FPMW->Phif);
+            FF_IC_X = FPMW->Xf + (1442.6+6774.4-7600)*tan(FPMW->Thetaf);
 
             // T13 //
             double path1 = FPMW->GetDetectorPositionZ(0)/10./cos(FPMW->Theta_in)/cos(FPMW->Phi_in);
@@ -600,6 +601,7 @@ void Analysis::InitOutputBranch(){
     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_DE_IC14",&FF_DE_IC14,"FF_DE_IC14/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");
diff --git a/Projects/AlPhaPha/2024/Analysis.h b/Projects/AlPhaPha/2024/Analysis.h
index 7a4bbb2823f7c0d31cb6734c7d5bfae2c74fa979..989da83a092106ca2e65d6a0a830bdf93cb61c3e 100644
--- a/Projects/AlPhaPha/2024/Analysis.h
+++ b/Projects/AlPhaPha/2024/Analysis.h
@@ -121,6 +121,7 @@ class Analysis: public NPL::VAnalysis{
     double beta_cm_ff;
 
     double FF_DE;
+    double FF_DE_IC14;
     double FF_Eres;
     double FF_Z;
     double FF_Brho;
@@ -209,10 +210,10 @@ class Analysis: public NPL::VAnalysis{
     double m_T14_Offset[20];
    
     // for masses 
-    Int_t MTOF_FP0_T0VN[20];
-    Int_t MTOF_FP0_T1VN[20];
-    Int_t MTOF_FP1_T0VN[20];
-    Int_t MTOF_FP1_T1VN[20];
+    UShort_t MTOF_FP0_T0VN[20];
+    UShort_t MTOF_FP0_T1VN[20];
+    UShort_t MTOF_FP1_T0VN[20];
+    UShort_t MTOF_FP1_T1VN[20];
 
     Int_t MTOF_FP0_T0VM;
     Int_t MTOF_FP0_T1VM;
diff --git a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/CorrectXY.C b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/CorrectXY.C
index 68d3a24a0d5893da0f3e42a45fbcdae50171ca2f..5395615875b385464ed32f67651b779a8a3b40cd 100644
--- a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/CorrectXY.C
+++ b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/CorrectXY.C
@@ -56,7 +56,7 @@ void CorrectXY(){
 
 
     //int Nentries = chain->GetEntries();
-    int Nentries = 1000000;
+    int Nentries = 10000000;
     auto start = std::chrono::high_resolution_clock::now();
 
     for (int e = 0; e < Nentries; e++) {
@@ -80,8 +80,14 @@ void CorrectXY(){
 
             if(IC->fIC_raw[8] >0 && ICRatio <= 8 && ICRatio >0.1 ) {
 
-                Double_t ICRatioCorr = ICRatio * 1.3 / evaluator.Evaluate(FF_IC_X,FF_DriftTime,true);
-                if (ICRatioCorr >100 ) ICRatioCorr = 1.2;
+                Double_t PolX =  -4.24954 * 1e-7 *FF_IC_X*FF_IC_X - 8.62213 * 1e-5 * FF_IC_X + 1.37;
+                Double_t ICRatioCorr = ICRatio * PolX / evaluator.Evaluate(FF_IC_X,FF_DriftTime,true);
+                if (ICRatioCorr > 1.45 ){ 
+                    ICRatioCorr = ICRatio * PolX / evaluator.Evaluate(FF_IC_X,FF_DriftTime,false); 
+                    if (ICRatioCorr >100 ){
+                        ICRatioCorr = ICRatio;
+                    }
+                }
                 Pxyz->Fill(FF_IC_X,FF_DriftTime,ICRatio);
                 PxyzCorr->Fill(FF_IC_X,FF_DriftTime,ICRatioCorr);
             }
diff --git a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/DECorr.C b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/DECorr.C
index 21101091a8d15f3b790ce6d385e3b33e95ab8b50..244b533f582d472fa77bb4f49a45bda1d74912e1 100644
--- a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/DECorr.C
+++ b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/DECorr.C
@@ -103,8 +103,9 @@ void DECorr(bool cut = false, bool spline = false) {
     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,-1000,1000,1000,0,22000);
-    TH2F* hDE_Y_splined = new TH2F("DE_Ysplined","DE_Ysplined",1000,-1000,1000,1000,0,22000);
+    TH2F* hDE_Y = new TH2F("DE_Y","DE_Y",1000,-1000,1000,1000,0,28000);
+    TH2F* hDE_Y_splined = new TH2F("DE_Ysplined","DE_Ysplined",1000,-1000,1000,1000,0,28000);
+    TH2F* hDE_Y_splined = new TH2F("DE_Ysplined","DE_Ysplined",1000,-1000,1000,1000,0,28000);
     TH2F* hDE_Y_splined_nocut = new TH2F("DE_Ysplined_nocut","DE_Ysplined_nocut",1000,-1000,1000,1000,0,22000);
     TH2F* hIC_Y = new TH2F("IC_Y","IC_Y",1000,-1000,1000,1000,0,22000);
     TH2F* hIC_Y_splined = new TH2F("IC_Ysplined","IC_Ysplined",1000,-1000,1000,1000,0,22000);
@@ -147,10 +148,18 @@ void DECorr(bool cut = false, bool spline = false) {
             UShort_t FPMW_Section = Time->GetSection_MWPC3(0);
             double FF_DriftTime = 10* (IC->fIC_TS.at(0) - Time->GetTS_MWPC13(0)) - ((Time->GetTime_MWPC13(0)+Toff13.at(FPMW_Section))) ;
 
+            Double_t PolX =  -4.24954 * 1e-7 *FF_IC_X*FF_IC_X - 8.62213 * 1e-5 * FF_IC_X + 1.37;
             Double_t ICRatio =  IC->fIC_raw[1]/IC->fIC_raw[0];
-            Double_t ICRatioCorr =  ICRatio *1.3 / Profile.Evaluate(FF_IC_X,FF_DriftTime,true);
-            Double_t ICcorr_Y = IC->fIC_raw[0] / 1.3 * Profile.Evaluate(FF_IC_X,FF_DriftTime,true);
-
+            Double_t ICRatioCorr =  ICRatio * PolX / Profile.Evaluate(FF_IC_X,FF_DriftTime,true);
+            Double_t ICcorr_Y = IC->fIC_raw[0] / PolX * Profile.Evaluate(FF_IC_X,FF_DriftTime,true);
+            
+            if (ICRatioCorr >1.4){
+                ICRatioCorr =  ICRatio * PolX / Profile.Evaluate(FF_IC_X,FF_DriftTime,false);
+                ICcorr_Y =IC->fIC_raw[0] / PolX * Profile.Evaluate(FF_IC_X,FF_DriftTime,false);
+                if (ICRatioCorr >100) {
+                    ICcorr_Y = IC->fIC_raw[0];
+                }
+            }
 
             double DE = 0 , DE_splined=0 ,DE_corr=0, DE_Ybis=0;
             double E =0;
@@ -188,7 +197,6 @@ void DECorr(bool cut = false, bool spline = false) {
                 hDE_E->Fill(E,DE);
                 hDE_E_splined->Fill(E,DE_splined);
                 hDE_Ebis->Fill(E,DE_Bis);
-
                 hDE_V->Fill(FF_V13,DE_splined);    
 
                 //******* Coor DE ************
@@ -218,8 +226,8 @@ void DECorr(bool cut = false, bool spline = false) {
                 // DE_Y in a cut
 
 
-                if (cut == true && CutV) {
-                    if ( CutV) {
+                if (cut == true ) {
+                    if ( CutV && E>6000) {
                         hDE_Y_corr_nocut->Fill(FF_DriftTime,DE_corr);
                         hDE_Y_splined_nocut->Fill(FF_DriftTime,DE_splined);
                         hDE_Y->Fill(FF_DriftTime,DE);
@@ -230,13 +238,15 @@ void DECorr(bool cut = false, bool spline = false) {
                         hIC_Y_splined->Fill(FF_DriftTime,ICcorr_Y);
                     }
                 }//end cut
-                else {      
-                    hDE_Y->Fill(FF_DriftTime,DE);
-                    hDE_Y_splined->Fill(FF_DriftTime,DE_splined); 
-                    hDE_Y_corr->Fill(FF_DriftTime,DE_corr);
+                else {     
+                    if(E>6000){ 
+                        hDE_Y->Fill(FF_DriftTime,DE);
+                        hDE_Y_splined->Fill(FF_DriftTime,DE_splined); 
+                        hDE_Y_corr->Fill(FF_DriftTime,DE_corr);
 
-                    hIC_Y->Fill(FF_DriftTime,IC->fIC_raw[0]);
-                    hIC_Y_splined->Fill(FF_DriftTime,ICcorr_Y);
+                        hIC_Y->Fill(FF_DriftTime,IC->fIC_raw[0]);
+                        hIC_Y_splined->Fill(FF_DriftTime,ICcorr_Y);
+                    }
                 }
 
                 if (cut == true && CutVbis) {
@@ -283,12 +293,21 @@ void DECorr(bool cut = false, bool spline = false) {
     gPad->SetLogz();
     hIC_Y_splined->ProfileX()->Draw();
 
+    TCanvas* c6 = new TCanvas("c6","c6",1500,1000);
+    c6->Divide(2);
+    c6->cd(1);
+    gPad->SetLogz();
+    hDE_Y_splined->ProfileX()->Draw();
+    c6->cd(2);
+    gPad->SetLogz();
+    hDE_Y_corr->ProfileX()->Draw();
+
     TCanvas *c4 = new TCanvas("c4","c4",1500,1000);
     c4->Divide(2);
     c4->cd(1);
-    hDE_Y_splined_nocut->Draw();
+    hDE_Y->Draw();
     c4->cd(2);
-    hDE_Y_corr_nocut->Draw();
+    hDE_Y_splined->Draw();
 
     TCanvas *c5 = new TCanvas("c5","c5",1500,1000);
     hDE_E->Draw("colz");
diff --git a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/Output/RatioProfile.root b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/Output/RatioProfile.root
index e181a9879429be4a95e61fd1d388837306f078a2..197dc67653bb32eee4bcb8e07a7de6388548e1f0 100644
Binary files a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/Output/RatioProfile.root and b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/Output/RatioProfile.root differ
diff --git a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/Output/splineDE.root b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/Output/splineDE.root
index 330cfde1c7a3895b11fcdc11f57c399d884723ca..52c11049c4584e46fe96884d7acf45fac2b53da4 100644
Binary files a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/Output/splineDE.root and b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/Output/splineDE.root differ
diff --git a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/VerifCorrelation.C b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/VerifCorrelation.C
index b8fda7cd0ad7bd7aef63feefbaef0ff10fb1058e..08266ca5ef33f884d2189a136bdf4018d8a4d1b5 100644
--- a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/VerifCorrelation.C
+++ b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/VerifCorrelation.C
@@ -1,6 +1,7 @@
 #include "TICPhysics.h"
 #include "TTimeData.h"
 #include <TChain.h>
+#include <TF1.h>
 #include <TFile.h>
 #include <TH2.h>
 #include <TH3.h>
@@ -47,10 +48,11 @@ void VerifCorrelation(){
 
     
     TH3F *ICXY = new TH3F("ICXY","ICXY",100,-550,400,100,-1000,1000,100,0,2);
+    TH2F *ICX = new TH2F("ICX","ICX",1000,-500,400,1000,0,2);
     TProfile2D *Pxyz = new TProfile2D("ICOneZeroProfile","ICOneZeroProfile",100,-550.0,400.0,100,-900.0,500.0);
  
-    int Nentries = chain->GetEntries();
-    //int Nentries = 1000000;
+    //int Nentries = chain->GetEntries();
+    int Nentries = 1000000;
     auto start = std::chrono::high_resolution_clock::now();
 
     for (int e = 0; e < Nentries; e++) {
@@ -76,6 +78,10 @@ void VerifCorrelation(){
             if(IC->fIC_raw[8] >0 && ICRatio <= 3 && ICRatio >0.1 ) {
                 ICXY->Fill(FF_IC_X,FF_DriftTime,ICRatio);
                 Pxyz->Fill(FF_IC_X,FF_DriftTime,ICRatio);
+
+                if (FF_IC_X > -500 && FF_IC_X < 400 && FF_IC_Y > -100 && FF_IC_Y <100 ){
+                    ICX->Fill(FF_IC_X, ICRatio);
+                }
             }
         }
     
@@ -101,6 +107,28 @@ void VerifCorrelation(){
 	Pxyz->SetMaximum(1.5);
 	Pxyz->Draw("GL SURF2");    // Configure the 3D view
 
+    
+    auto func = [](double *x, double *p) {
+        if (x[0] < 200 && x[0] > -150) {
+            TF1::RejectPoint();
+        }
+        return p[0] + p[1]*x[0] + p[2]*x[0]*x[0] ;
+    };
+
+    TF1 *f1 = new TF1("f1",func,-470,400,3);
+        
+    TCanvas *c2 = new TCanvas("c2","c2");
+    c2->Divide(2);
+    c2->cd(1);
+    gStyle->SetPalette(kRainBow);
+    ICX->SetXTitle("X");
+    ICX->SetYTitle("Ratio");
+    ICX->Draw();
+    c2->cd(2);
+	ICX->ProfileX()->Draw("GL");   
+    ICX->ProfileX()->Fit(f1,"R");
+
+
 
     TFile *ofile = new TFile("Output/RatioProfile.root","recreate");
     Pxyz->Write();
diff --git a/Projects/AlPhaPha/2024/macro/mwpc/Toff/ToffGenerator.cxx b/Projects/AlPhaPha/2024/macro/mwpc/Toff/ToffGenerator.cxx
index 67cdf48e7998a346a967d7822d3081dec826d17d..b2c2aef96162fe765f2eebaedcd57f9132737212 100644
--- a/Projects/AlPhaPha/2024/macro/mwpc/Toff/ToffGenerator.cxx
+++ b/Projects/AlPhaPha/2024/macro/mwpc/Toff/ToffGenerator.cxx
@@ -90,14 +90,13 @@ void ToffGenerator(bool Create = true ){
         //===========================================================================================================
         //                            Loop on entries
         //===========================================================================================================
-        int Nentries = chain->GetEntries();
-        //int Nentries = 1000000;
+        //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;
@@ -112,10 +111,13 @@ void ToffGenerator(bool Create = true ){
             M14 = Time->GetMWPC14Mult();
             M23 = Time->GetMWPC23Mult();
             M24 = Time->GetMWPC24Mult();
-            
-
+            if (M23 == 2){
+                cout << M23 << "   "<< S23[0]<<  "   "  << S23[1]<< endl; 
+            }
             if (M13 == 2 && (abs(S13[0]-S13[1]) == 1)){
+                cout << S13[0]<< endl;
                 vector<int> Pos = SortSection(S13);
+                cout << S13[0] << endl;
                 hToff13->Fill(S13[0],  Time->GetTime_MWPC13(Pos[0])  - Time->GetTime_MWPC13(Pos[1])  );
 
                 hToffOnline13->Fill(S13[0], (Time->GetTime_MWPC13(Pos[0]) - Toff[S13[0]]) -( Time->GetTime_MWPC13(Pos[1]) -Toff[S13[1]]  )); 
@@ -383,9 +385,8 @@ void ToffGenerator(bool Create = true ){
     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;
@@ -404,7 +405,6 @@ void ToffGenerator(bool Create = true ){
 
 
         if (M13 == 2 && (abs(S13[0]-S13[1]) == 1)){
-
             vector<int> Pos = SortSection(S13);
             hCorrToff13->Fill(S13[0],(Time->GetTime_MWPC13(Pos[0]) - double(Time->GetTS_MWPC13(Pos[0]))+ Toff13.at(S13[0])) - (Time->GetTime_MWPC13(Pos[1]) - double(Time->GetTS_MWPC13(Pos[1]))+ Toff13.at(S13[1])));
         }