diff --git a/Projects/AlPhaPha/2024/Analysis.cxx b/Projects/AlPhaPha/2024/Analysis.cxx
index 9eaf7e86fabf7feb864cc2bda87af5fe062b654f..a27c146286e260235b19e09ce647ea3654b3d146 100644
--- a/Projects/AlPhaPha/2024/Analysis.cxx
+++ b/Projects/AlPhaPha/2024/Analysis.cxx
@@ -630,10 +630,10 @@ void Analysis::InitOutputBranch(){
     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("MTOF_FP0_T0VN",&MTOF_FP0_T0VN,"MTOF_FP0_T0VN/S");
+    RootOutput::getInstance()->GetTree()->Branch("MTOF_FP0_T1VN",&MTOF_FP0_T1VN,"MTOF_FP0_T1VN/S");
+    RootOutput::getInstance()->GetTree()->Branch("MTOF_FP1_T0VN",&MTOF_FP1_T0VN,"MTOF_FP1_T0VN/S");
+    RootOutput::getInstance()->GetTree()->Branch("MTOF_FP1_T1VN",&MTOF_FP1_T1VN,"MTOF_FP1_T1VN/S");
 
     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");
diff --git a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/DECorr.C b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/DECorr.C
index 244b533f582d472fa77bb4f49a45bda1d74912e1..b5bc34a454476564e108be11b0206d269556b045 100644
--- a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/DECorr.C
+++ b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/DECorr.C
@@ -1,5 +1,6 @@
 #include "TTimeData.h"
 #include <TICPhysics.h>
+#include <TFPMWPhysics.h>
 #include <TCanvas.h>
 #include <TChain.h>
 #include <TF1.h>
@@ -27,8 +28,10 @@ void DECorr(bool cut = false, bool spline = false) {
     chain->Add("../../../root/analysis/VamosCalib247.root");
 
     TICPhysics* IC = new TICPhysics() ;
-    TTimeData *Time = new TTimeData();
-    double FF_IC_X, FF_IC_Y, FF_V13, Y;
+    TTimeData *Time = new TTimeData() ;
+    TFPMWPhysics *FPMW = new TFPMWPhysics();
+
+    double FF_IC_X, FF_IC_Y, FF_V13, Y, FF_Theta;
 
     chain->SetBranchStatus("FF_IC_X", true);
     chain->SetBranchAddress("FF_IC_X", &FF_IC_X);
@@ -38,7 +41,13 @@ void DECorr(bool cut = false, bool spline = false) {
 
     chain->SetBranchStatus("IC", true);
     chain->SetBranchAddress("IC", &IC); 
-   
+ 
+    chain->SetBranchStatus("FPMW", true);
+    chain->SetBranchAddress("FPMW", &FPMW);   
+
+    chain->SetBranchStatus("FF_Theta", true);
+    chain->SetBranchAddress("FF_Theta", &FF_Theta);   
+    
     chain->SetBranchStatus("FF_V13", true);
     chain->SetBranchAddress("FF_V13", &FF_V13); 
    
@@ -59,19 +68,28 @@ void DECorr(bool cut = false, bool spline = false) {
     ProfileEvaluator Profile;
     Profile.LoadProfile("Output/RatioProfile.root","ICOneZeroProfile");
 
-    TCutG *CutZ;
+    TCutG *CutZ, *CutZ0 , *CutZ02 , *CutZ023 ,*CutZ0234;
     TCutG *CutZbis;
     TFile *fCut;
     if (cut) {
         fCut =  TFile::Open("Output/CutDeCorr.root");
         CutZbis = (TCutG*)fCut->Get("CutZbis") ;
         CutZ = (TCutG*)fCut->Get("CutZ") ;
+        CutZ0 = (TCutG*)fCut->Get("CutZ0") ;
+        CutZ02 = (TCutG*)fCut->Get("CutZ02") ;
+        CutZ023 = (TCutG*)fCut->Get("CutZ023") ;
+        CutZ0234 = (TCutG*)fCut->Get("CutZ0234") ;
     }
 
     TFile *fSpline; 
-    TSpline3 *splineDEcorr, *splineDEbis;
+    TSpline3 *splineDE,*splineDE0, *splineDE02,*splineDE023,*splineDE0234,*splineDEbis;
     fSpline= new TFile("Output/splineDE.root","open");
-    splineDEcorr = (TSpline3*) fSpline->Get("SplineDe_0");
+    splineDE = (TSpline3*) fSpline->Get("SplineDe");
+    splineDE0 = (TSpline3*) fSpline->Get("SplineDe_0");
+    splineDE02 = (TSpline3*) fSpline->Get("SplineDe_02");
+    splineDE023 = (TSpline3*) fSpline->Get("SplineDe_023");
+    splineDE0234 = (TSpline3*) fSpline->Get("SplineDe_0234");
+
     splineDEbis = (TSpline3*) fSpline->Get("SplineDebis");
 
     vector<TSpline3*> vsplineDE;
@@ -96,16 +114,66 @@ void DECorr(bool cut = false, bool spline = false) {
         if (vsplineDE[i]==nullptr) vsplineDE.erase(vsplineDE.begin()+i);
     }
 
+    TFile *fSplineIC = new TFile("Output/spline_P2P_2024.root","open"); 
+    // Get number of spline
+    int SplineCount = 0 ;
+    TIter next(fSplineIC->GetListOfKeys());
+    TKey* key;
+
+    while ((key=(TKey*)next())){
+        if (std::string(key->GetClassName()) == "TSpline3"){
+            SplineCount ++;
+        }
+    }
 
-    //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);
+    vector<TSpline3*> spline_X(11), spline_Y(11);
+    for (int i = 0; i < SplineCount  ; i++) {
+        int seg = int((i-2)/2 +1 );
+        if (i < 2){
+            spline_X.at(0) = (TSpline3 *)fSplineIC->Get("fspline_IC0_X");
+            spline_Y.at(0) = (TSpline3 *)fSplineIC->Get("fspline_IC0_Y");
+        }
 
+        else if ( i>=2 && i<4){ 
+            spline_X.at(1) = (TSpline3 *)fSplineIC->Get("fspline_IC1_X");
+            spline_Y.at(1) = (TSpline3 *)fSplineIC->Get("fspline_IC1_Y");
+        }
+        else if (seg >=2 && (i%2 == 0) ) {
+            spline_X.at(seg) = (TSpline3 *)fSplineIC->Get(Form("fspline_IC%d_X",seg));
+        }
+        else if (seg >=2 && !(i%2 == 0) ) {	
+            spline_Y.at(seg) = (TSpline3 *)fSplineIC->Get(Form("fspline_IC%d_Y",seg));
+        }
+    } //End loop on histogram
 
-    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);
+    double XmaxDE = 26000, XMaxE = 35000;
+    //Defining output histo
+    TH2F* hDE_E = new TH2F("DE_E","DE_E",1000,0,XMaxE,1000,0,XmaxDE);
+    TH2F* hDE_E_splined = new TH2F("DE_E_splined","DE_E_splined",1000,0,XMaxE,1000,0,XmaxDE);
+    TH2F* hDE_Ebis = new TH2F("DE_Ebis","DE_Ebis",1000,0,XMaxE,1000,0,24000);
+
+    TH2F* hDE_E0 = new TH2F("DE_E0","DE_E0",1000,0,XMaxE,1000,0,XmaxDE);
+    TH2F* hDE_E02 = new TH2F("DE_E02","DE_E02",1000,0,XMaxE,1000,0,XmaxDE);
+    TH2F* hDE_E023 = new TH2F("DE_E023","DE_E023",1000,0,XMaxE,1000,0,XmaxDE);
+    TH2F* hDE_E0234 = new TH2F("DE_E0234","DE_E0234",1000,0,XMaxE,1000,0,XmaxDE);
+    TH2F* hDE_E1234 = new TH2F("DE_E1234","DE_E1234",1000,0,XMaxE,1000,0,XmaxDE);
+
+    TH2F* hDE_Y = new TH2F("DE_Y","DE_Y",1000,-1000,1000,1000,0,XmaxDE);    
+    TH2F* hDE0_Y = new TH2F("DE0_Y","DE0_Y",1000,-1000,1000,1000,0,XmaxDE);
+    TH2F* hDE02_Y = new TH2F("DE02_Y","DE02_Y",1000,-1000,1000,1000,0,XmaxDE);
+    TH2F* hDE023_Y = new TH2F("DE023_Y","DE023_Y",1000,-1000,1000,1000,0,XmaxDE);
+    TH2F* hDE0234_Y = new TH2F("DE0234_Y","DE0234_Y",1000,-1000,1000,1000,0,XmaxDE);
+   
+   
+   
+    TH2F* hDE_Y_cut = new TH2F("DE_Y_cut","DE_Y_cut",500,-1000,1000,500,0,XmaxDE);
+    TH2F* hDE0_Y_cut = new TH2F("DE0_Y_cut","DE0_Y_cut",500,-1000,1000,500,0,XmaxDE);
+    TH2F* hDE02_Y_cut = new TH2F("DE02_Y_cut","DE02_Y_cut",500,-1000,1000,500,0,XmaxDE);
+    TH2F* hDE023_Y_cut = new TH2F("DE023_Y_cut","DE023_Y_cut",500,-1000,1000,500,0,XmaxDE);
+    TH2F* hDE0234_Y_cut = new TH2F("DE0234_Y_cut","DE0234_Y_cut",500,-1000,1000,500,0,XmaxDE);
+   
+   
+    TH2F* hDE_Y_splined = new TH2F("DE_Ysplined","DE_Ysplined",1000,-1000,1000,1000,0,XmaxDE);
     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);
@@ -116,11 +184,15 @@ void DECorr(bool cut = false, bool spline = false) {
 
     TH2F* hDE_Y_bis = new TH2F("DE_Ybis","DE_Ybis",1000,-1000,1000,1000,0,22000);
     TH2F* hDEbis_Y_corr = new TH2F("DE_Ybiscorr","DE_Ybiscorr",1000,-1000,1000,1000,0,22000);
+    
+    TH2F* hDE_E_corr = new TH2F("DE_Ecorr","DE_Ecorr",1000,0,XMaxE,1000,0,XmaxDE);
+    TH2F* hDE0_E_corr = new TH2F("DE0_Ecorr","DE0_Ecorr",1000,0,XMaxE,1000,0,XmaxDE);
+    TH2F* hDE02_E_corr = new TH2F("DE02_Ecorr","DE02_Ecorr",1000,0,XMaxE,1000,0,XmaxDE);
+    TH2F* hDE023_E_corr = new TH2F("DE023_Ecorr","DE023_Ecorr",1000,0,XMaxE,1000,0,XmaxDE);
+    TH2F* hDE0234_E_corr = new TH2F("DE0234_Ecorr","DE0234_Ecorr",1000,0,XMaxE,1000,0,XmaxDE);
+    TH2F* hDE_Ebis_corr = new TH2F("DE_Ebiscorr","DE_Ebiscorr",1000,0,XMaxE,1000,0,24000);
 
-    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_V = new TH2F("DE_V","DE_V",1000,0,5,1000,0,28000);
+    TH2F* hDE_V = new TH2F("DE_V","DE_V",1000,0,5,1000,0,XmaxDE);
 
     // Def Lim spline
     double Ymin = -1000 , Ymax =1000;
@@ -130,6 +202,7 @@ void DECorr(bool cut = false, bool spline = false) {
     int Nentries = chain->GetEntries();
     //int Nentries = 1000000;
     auto start = std::chrono::high_resolution_clock::now();
+    int NSegment = 11;
 
     for (int e = 0; e < Nentries; e++) {
         if (e % 100000  == 0 && e > 0 ) {
@@ -142,31 +215,62 @@ void DECorr(bool cut = false, bool spline = false) {
         }
 
         chain->GetEntry(e);
-
+        vector<double> ICcorr_Y(NSegment), ICcorr_X(NSegment); 
+        vector<double> Temp_X(NSegment) , Temp_Y(NSegment);    
+                                                               
+                                                       
 
         if (Time->GetMWPC13Mult() ==1 && IC->fIC_TS.size()>=8){ //only mult 1 event
             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 FF_DriftTime =  10* (IC->fIC_TS.at(0) - Time->GetTS_MWPC13(0)) - ((Time->GetTime_MWPC13(0)+Toff13.at(FPMW_Section))) ;
+            
+            for (int seg = 1; seg < IC->fIC_TS.size() ; seg++) { // loop on multiplicity of event
+                if (seg == NSegment) seg = 0; //from 1to NSeg finishing with 0
+
+               double FF_DriftTime_temp = 10* (IC->fIC_TS.at(seg) - Time->GetTS_MWPC13(0)) - ((Time->GetTime_MWPC13(0)+Toff13.at(FPMW_Section))) ;
+                if (spline_Y.at(seg)==0){
+                    ICcorr_Y.at(seg) = IC->fIC_raw[seg]; 
+                }
+
+                else {
+                    if (seg == 0) {
+                        ICcorr_Y.at(seg) = ICcorr_Y.at(0) * spline_Y.at(0)->Eval(0)/spline_Y.at(0)->Eval(FF_DriftTime);
+                    }
+
+                    else if (seg == 1){ 
+                        ICcorr_Y.at(seg) = IC->fIC_raw[1]*spline_Y.at(1)->Eval(0)/spline_Y.at(1)->Eval(FF_DriftTime);
+                    }
+
+                    else if (seg > 1) {
+                        ICcorr_Y.at(seg) = IC->fIC_raw[seg] * spline_Y.at(seg)->Eval(0)/ spline_Y.at(seg)->Eval(FF_DriftTime);
+                    }
+                    if (!(ICcorr_Y.at(seg)==ICcorr_Y.at(seg))) ICcorr_Y.at(seg) = 0;
+                } //end if non empty
+                if (seg == 0) break;
+            }//endloop seg
+
+
 
             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 * 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);
-            
+            Double_t ICcorr_Y0 = 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);
+                ICcorr_Y0 =     IC->fIC_raw[0] / PolX * Profile.Evaluate(FF_IC_X,FF_DriftTime,false);
                 if (ICRatioCorr >100) {
-                    ICcorr_Y = IC->fIC_raw[0];
+                    ICcorr_Y0 = IC->fIC_raw[0];
                 }
             }
 
             double DE = 0 , DE_splined=0 ,DE_corr=0, DE_Ybis=0;
-            double E =0;
+            double E =0, E_splined=0;
 
             for (int seg = 0 ;  seg < sizeof(IC->fIC_raw)/sizeof(IC->fIC_raw[0]) ; seg++ ){
                 if (seg >4){
-                    E += double(IC->fIC_raw[seg]) ;
+                    if (seg == 5) E += double(IC->fIC_raw[seg]);
+                    else E += 2*double(IC->fIC_raw[seg]) ;
                 }
             }
 
@@ -176,33 +280,52 @@ void DECorr(bool cut = false, bool spline = false) {
             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*(double(IC->fIC_raw[0])+ double(IC->fIC_raw[1]) +double(IC->fIC_raw[2])+ double(IC->fIC_raw[3])) + double(IC->fIC_raw[4]);
-            DE_splined = 0.5*(ICcorr_Y+ IC->fIC_raw[1] +IC->fIC_raw[2]+IC->fIC_raw[3])+IC->fIC_raw[4];
-
+            DE =         0.5*   ( IC->fIC_raw[0]+ double(IC->fIC_raw[1]) +double(IC->fIC_raw[2])+ double(IC->fIC_raw[3])) + double(IC->fIC_raw[4]);
+            DE_splined = 0.5*   ( ICcorr_Y0+ ICcorr_Y.at(1) +IC->fIC_raw[2]+ IC->fIC_raw[3]) + IC->fIC_raw[4];
+            double DE0 = 0.5*   ( ICcorr_Y0 + ICcorr_Y.at(1) +IC->fIC_raw[2] + IC->fIC_raw[3]) + IC->fIC_raw[4];
+            double DE02 = 0.5*  ( ICcorr_Y0+ ICcorr_Y.at(1) +ICcorr_Y.at(2)+ IC->fIC_raw[3]) + IC->fIC_raw[4];
+            double DE023 = 0.5* ( ICcorr_Y0+ ICcorr_Y.at(1) +ICcorr_Y.at(2)+ ICcorr_Y.at(3)) + IC->fIC_raw[4];
+            double DE0234 = 0.5*( ICcorr_Y0+ ICcorr_Y.at(1) +ICcorr_Y.at(2)+ ICcorr_Y.at(3)) + ICcorr_Y.at(4);
+            double DE1234 = 0.5*( double(IC->fIC_raw[1]) +double(IC->fIC_raw[2])+ double(IC->fIC_raw[3])) + double(IC->fIC_raw[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.1;
-            bool CutVbis =  abs( FF_V13-3.94)<0.1;
+            bool CutV = abs( E-6000)<500;
+            bool CutVbis =  abs( E-6000)<500;
 
             //bool CutV = true;
             //bool CutVbis =  true;
 
             //***********Fill histo*************
 
-            if (FF_DriftTime >Ymin && FF_DriftTime <Ymax ){
+            if (FF_DriftTime >Ymin && FF_DriftTime <Ymax && (FF_Theta >0)){
 
                 //*************Init DE_E***************** 
-                hDE_E->Fill(E,DE);
-                hDE_E_splined->Fill(E,DE_splined);
+                hDE_E         -> Fill(E,DE);
+                hDE_E_splined -> Fill(E,DE_splined);
+                hDE_E0        -> Fill(E,DE0);
+                hDE_E02       -> Fill(E,DE02);
+                hDE_E023      -> Fill(E,DE023);
+                hDE_E0234     -> Fill(E,DE0234);
+                hDE_E1234     -> Fill(E,DE1234);
+
                 hDE_Ebis->Fill(E,DE_Bis);
                 hDE_V->Fill(FF_V13,DE_splined);    
 
                 //******* Coor DE ************
                 if (spline== true  ){     
-                    DE_corr = DE_splined * splineDEcorr->Eval(0) / splineDEcorr->Eval(FF_DriftTime);
+                    double DE_corr = DE * splineDE->Eval(0) / splineDE->Eval(FF_DriftTime);
+                    double DE0_corr = DE0 * splineDE0->Eval(0) / splineDE0->Eval(FF_DriftTime);
+                    double DE02_corr = DE02 * splineDE02->Eval(0) / splineDE02->Eval(FF_DriftTime);
+                    double DE023_corr = DE023 * splineDE023->Eval(0) / splineDE023->Eval(FF_DriftTime);
+                    double DE0234_corr = DE0234 * splineDE0234->Eval(0) / splineDE0234->Eval(FF_DriftTime);
+                    
                     hDE_E_corr->Fill(E,DE_corr);
+                    hDE0_E_corr->Fill(E,DE0_corr);
+                    hDE02_E_corr->Fill(E,DE02_corr);
+                    hDE023_E_corr->Fill(E,DE023_corr);
+                    hDE0234_E_corr->Fill(E,DE0234_corr);
 
                     DE_Ybis = DE_Bis * splineDEbis->Eval(0) / splineDEbis->Eval(FF_DriftTime);
                     hDE_Ebis_corr->Fill(E,DE_Ybis); 
@@ -211,23 +334,21 @@ void DECorr(bool cut = false, bool spline = false) {
 
                 else {
                     DE_corr = DE_splined;
-                    hDE_E_corr->Fill(E,DE_corr);
 
                     DE_Ybis = DE_Bis ;
                     hDE_Ebis_corr->Fill(E,DE_Ybis);  
                 }
 
-                bool CutCharge ;
-
-
-                if (cut == true) CutCharge =  CutZ->IsInside(FF_V13,DE_splined);
-                //bool CutChargeBis =  CutZ->IsInside(E,DE_Y_Recur);
-                //bool CutVbis =  CutZbis->IsInside(E,DE_Bis);
-                // DE_Y in a cut
+                
+                if (cut == true ) {
+                bool CutCharge     =  CutZ->IsInside(FF_DriftTime,DE);
+                bool CutCharge0     =  CutZ0->IsInside(FF_DriftTime,DE0);
+                bool CutCharge02    =  CutZ02->IsInside(FF_DriftTime,DE02);
+                bool CutCharge023   =  CutZ023->IsInside(FF_DriftTime,DE023);
+                bool CutCharge0234  =  CutZ0234->IsInside(FF_DriftTime,DE0234);
 
 
-                if (cut == true ) {
-                    if ( CutV && E>6000) {
+                    if (CutV ) {
                         hDE_Y_corr_nocut->Fill(FF_DriftTime,DE_corr);
                         hDE_Y_splined_nocut->Fill(FF_DriftTime,DE_splined);
                         hDE_Y->Fill(FF_DriftTime,DE);
@@ -235,22 +356,46 @@ void DECorr(bool cut = false, bool spline = false) {
                         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_splined->Fill(FF_DriftTime,ICcorr_Y0);
+
+
+                        hDE_Y->Fill(FF_DriftTime,DE);
+                        hDE0_Y->Fill(FF_DriftTime,DE0);
+                        hDE02_Y->Fill(FF_DriftTime,DE02);
+                        hDE023_Y->Fill(FF_DriftTime,DE023);
+                        hDE0234_Y->Fill(FF_DriftTime,DE0234);
+
+
+
+                        if (CutCharge)  hDE_Y_cut->Fill(FF_DriftTime,DE);
+                        if (CutCharge0)  hDE0_Y_cut->Fill(FF_DriftTime,DE0);
+                        if (CutCharge02)  hDE02_Y_cut->Fill(FF_DriftTime,DE02);
+                        if (CutCharge023)  hDE023_Y_cut->Fill(FF_DriftTime,DE023);
+                        if (CutCharge0234)  hDE0234_Y_cut->Fill(FF_DriftTime,DE0234);
                     }
                 }//end cut
                 else {     
-                    if(E>6000){ 
-                        hDE_Y->Fill(FF_DriftTime,DE);
+                    if(true ){ 
+                        hDE_Y_bis->Fill(FF_DriftTime,DE_Bis);
                         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_splined->Fill(FF_DriftTime,ICcorr_Y0);
+
+                    if (CutV ) {
+                        hDE_Y->Fill(FF_DriftTime,DE);
+                        hDE0_Y->Fill(FF_DriftTime,DE0);
+                        hDE02_Y->Fill(FF_DriftTime,DE02);
+                        hDE023_Y->Fill(FF_DriftTime,DE023);
+                        hDE0234_Y->Fill(FF_DriftTime,DE0234);
+
+                    }
+
                     }
                 }
 
                 if (cut == true && CutVbis) {
-                    hDE_Y_bis->Fill(Y,DE_Bis);
                     hDEbis_Y_corr->Fill(Y,DE_Ybis);
                 }
                 else{;}
@@ -261,98 +406,141 @@ void DECorr(bool cut = false, bool spline = false) {
 
     // making spline
 
-    TSpline3 *splineDE, *osplineDEbis;
-    if (spline == true){
-        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","recreate");
-        splineDE->SetName("SplineDe_0");
-        splineDE->Write();
-        osplineDEbis->SetName("SplineDebis");
-        osplineDEbis->Write(); 
-        fSpline->Close();
-    }
+    TSpline3  *splineDe, *splineDe0, *splineDe02,*splineDe023,*splineDe0234,*osplineDEbis;
+    splineDe = MakeSpline(hDE_Y_cut,0,Ymin,Ymax,0,23000); 
+    splineDe0 = MakeSpline(hDE0_Y_cut,1,Ymin,Ymax,0,23000); 
+    splineDe02 = MakeSpline(hDE02_Y_cut,2,Ymin,Ymax,0,23000); 
+    splineDe023 = MakeSpline(hDE023_Y_cut,3,Ymin,Ymax,0,23000); 
+    splineDe0234 = MakeSpline(hDE0234_Y_cut,4,Ymin,Ymax,0,23000); 
+    osplineDEbis = MakeSpline(hDE_Y,5,Ymin,Ymax,0,23000); 
+
+    TFile *fSplineDE = new TFile("Output/splineDE.root","recreate");
+
+    splineDe->SetName("SplineDe");
+    splineDe->Write();
+
+    splineDe0->SetName("SplineDe_0");
+    splineDe0->Write();
+
+    splineDe02->SetName("SplineDe_02");
+    splineDe02->Write();
+
+    splineDe023->SetName("SplineDe_023");
+    splineDe023->Write();
+
+    splineDe0234->SetName("SplineDe_0234");
+    splineDe0234->Write();
+
+
+
+    osplineDEbis->SetName("SplineDebis");
+    osplineDEbis->Write(); 
+    fSplineDE->Close();
     //===========================================================================================================
     //                                          Drawing histo
     //===========================================================================================================
 
     gStyle->SetPalette(kRainBow);
 
-    TCanvas* c = new TCanvas("c","c",1500,1000);
-    c->Divide(2,2);
-    c->cd(1);
-    gPad->SetLogz();
-    hDE_Y->ProfileX()->Draw();
-    c->cd(2);
-    gPad->SetLogz();
-    hDE_Y_splined->ProfileX()->Draw();
-    c->cd(3);
-    gPad->SetLogz();
-    hIC_Y->ProfileX()->Draw();
-    c->cd(4);
-    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* c7 = new TCanvas("correction succesive","correction succesive",1500,1000);
+    c7->Divide(6);
+
+    c7->cd(1); 
+    hDE_E->GetXaxis()->SetTitle("E");
+    hDE_E->GetYaxis()->SetTitle("DE");
+    hDE_E->Draw();
+
+    c7->cd(2); 
+    hDE_E0->GetXaxis()->SetTitle("E");
+    hDE_E0->GetYaxis()->SetTitle("DE");
+    hDE_E0->Draw();
+
+    c7->cd(3); 
+    hDE_E02->GetXaxis()->SetTitle("E");
+    hDE_E02->GetYaxis()->SetTitle("DE");
+    hDE_E02->Draw();
+
+    c7->cd(4); 
+    hDE_E023->GetXaxis()->SetTitle("E");
+    hDE_E023->GetYaxis()->SetTitle("DE");
+    hDE_E023->Draw();
+
+    c7->cd(5); 
+    hDE_E0234->GetXaxis()->SetTitle("E");
+    hDE_E0234->GetYaxis()->SetTitle("DE");
+    hDE_E0234->Draw();
+
+    c7->cd(6); 
+    hDE_E1234->GetXaxis()->SetTitle("E");
+    hDE_E1234->GetYaxis()->SetTitle("DE");
+    hDE_E1234->Draw();
+
+
 
     TCanvas *c4 = new TCanvas("c4","c4",1500,1000);
-    c4->Divide(2);
+    c4->Divide(5);
     c4->cd(1);
     hDE_Y->Draw();
+
     c4->cd(2);
-    hDE_Y_splined->Draw();
+    hDE0_Y->Draw();
+
+    c4->cd(3);
+    hDE02_Y->Draw();
 
-    TCanvas *c5 = new TCanvas("c5","c5",1500,1000);
-    hDE_E->Draw("colz");
+    c4->cd(4);
+    hDE023_Y->Draw();
 
+    c4->cd(5);
+    hDE0234_Y->Draw();
 
 
-    TCanvas *c1 = new TCanvas("c1","c1",1500,1000);
-    hDE_V->Draw();
 
     TCanvas* c2 = new TCanvas("c2","c2",1500,1000);
-    c2->Divide(3 + 1*spline);
+    c2->Divide(6 );
 
     c2->cd(1);
-    hDE_E->SetTitle("Unmodified");
     gPad->Modified();
     gPad->Update(); 
-    hDE_E->Draw("colz");
-    hDE_E->GetXaxis()->SetTitle("E");
-    hDE_E->GetYaxis()->SetTitle("DE");
+    hDE_E_corr->Draw("colz");
+    hDE_E_corr->GetXaxis()->SetTitle("E");
+    hDE_E_corr->GetYaxis()->SetTitle("DE");
 
     c2->cd(2);
-    hDE_Ebis->SetTitle("Online");
     gPad->Modified();
     gPad->Update();
-    hDE_Ebis->Draw("colz");
-    hDE_Ebis->GetXaxis()->SetTitle("E");
-    hDE_Ebis->GetYaxis()->SetTitle("DE");
+    hDE0_E_corr->Draw("colz");
+    hDE0_E_corr->GetXaxis()->SetTitle("E");
+    hDE0_E_corr->GetYaxis()->SetTitle("DE");
 
     c2->cd(3);
-    hDE_E_splined->SetTitle("IC Corrected in DT");
     gPad->Modified();
     gPad->Update();
-    hDE_E_splined->Draw("colz");
-    hDE_E_splined->GetXaxis()->SetTitle("E");
-    hDE_E_splined->GetYaxis()->SetTitle("DE");
-
-    if ( spline == true){
-        c2->cd(4);
-        hDE_E_corr->SetTitle("DE Corrected");
-        gPad->Modified();
-        gPad->Update();    
-        hDE_E_corr->Draw("colz"); 
-        hDE_E_corr->GetXaxis()->SetTitle("E");
-        hDE_E_corr->GetYaxis()->SetTitle("DE");
-    }
+    hDE02_E_corr->Draw("colz");
+    hDE02_E_corr->GetXaxis()->SetTitle("E");
+    hDE02_E_corr->GetYaxis()->SetTitle("DE");
+
+    c2->cd(4);
+    gPad->Modified();
+    gPad->Update();
+    hDE023_E_corr->Draw("colz");
+    hDE023_E_corr->GetXaxis()->SetTitle("E");
+    hDE023_E_corr->GetYaxis()->SetTitle("DE");
+
+    c2->cd(5);
+    gPad->Modified();
+    gPad->Update();
+    hDE0234_E_corr->Draw("colz");
+    hDE0234_E_corr->GetXaxis()->SetTitle("E");
+    hDE0234_E_corr->GetYaxis()->SetTitle("DE");
+
+    c2->cd(6);
+    hDE_Ebis->SetTitle("online");
+    gPad->Modified();
+    gPad->Update();
+    hDE_Ebis->Draw("colz");
+    hDE_Ebis->GetXaxis()->SetTitle("E");
+    hDE_Ebis->GetYaxis()->SetTitle("DE");
 } // End spline chio XY
 
 
diff --git a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/Output/RatioProfile.root b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/Output/RatioProfile.root
deleted file mode 100644
index 197dc67653bb32eee4bcb8e07a7de6388548e1f0..0000000000000000000000000000000000000000
Binary files a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/Output/RatioProfile.root and /dev/null differ
diff --git a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/Output/splineDE.root b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/Output/splineDE.root
deleted file mode 100644
index 52c11049c4584e46fe96884d7acf45fac2b53da4..0000000000000000000000000000000000000000
Binary files a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/Output/splineDE.root and /dev/null differ
diff --git a/Projects/AlPhaPha/2024/macro/mwpc/Toff/ToffGenerator.cxx b/Projects/AlPhaPha/2024/macro/mwpc/Toff/ToffGenerator.cxx
index e9b30333df59508e79ef70bb44d4e6f717d73a46..613090bbe21e084f2bcc54bc2fd497167ff6ea96 100644
--- a/Projects/AlPhaPha/2024/macro/mwpc/Toff/ToffGenerator.cxx
+++ b/Projects/AlPhaPha/2024/macro/mwpc/Toff/ToffGenerator.cxx
@@ -90,8 +90,8 @@ 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++) {