diff --git a/NPLib/TrackReconstruction/NPRansac.cxx b/NPLib/TrackReconstruction/NPRansac.cxx
index ec0d36bfbf7e07cbc7547e3288fa8fdf94d54d1b..5e28ea7c720c16b75b4c24264cb77edfa2f2003b 100644
--- a/NPLib/TrackReconstruction/NPRansac.cxx
+++ b/NPLib/TrackReconstruction/NPRansac.cxx
@@ -54,6 +54,9 @@ Ransac::Ransac(int NumberOfPadsX, int NumberOfPadsY, bool Visu)
     fVisu = Visu;
     //fNumberOfTracksMax = 10;
     
+    Rand=new TRandom3();
+    myTrack = NPL::Track();
+    
     if(fVisu==1){
         m_ServerSocket = new TServerSocket(9092,true,100);
         //pl		= new TGraph2D();
@@ -205,7 +208,7 @@ vector<NPL::Track> Ransac::SimpleRansac()
         m_Histo->Clear();
     }
     
-    TRandom* Rand=new TRandom();
+    //TRandom3* Rand=new TRandom3();
     double RemainingCharge = fTotalCharge;
     /*cout << "/// Original total charge= " << fTotalCharge << endl;
      cout << "/// Charge Threshold= " << fTotalCharge*fRANSACChargeThreshold << endl;
@@ -228,7 +231,7 @@ vector<NPL::Track> Ransac::SimpleRansac()
         std::vector<int> inliners;
         inliners.clear();
         
-        fRANSACMaxIteration = 2.0*vX.size();
+        fRANSACMaxIteration = 1.0*vX.size();
         for(int i=0;i<fRANSACMaxIteration;i++){
             int vXsize = vX.size();
             int p1=(int)(Rand->Uniform(0,vXsize));
@@ -272,7 +275,8 @@ vector<NPL::Track> Ransac::SimpleRansac()
         TVector3 Vdir = TVector3(V2.x()-V1.x(),V2.y()-V1.y(),V2.z()-V1.z());
         Vdir = Vdir.Unit();
         
-        NPL::Track myTrack = NPL::Track();
+        //NPL::Track myTrack = NPL::Track();
+        myTrack.Clear();
         
         myTrack.Xm=V1.x();
         myTrack.Ym=V1.y();
@@ -284,8 +288,8 @@ vector<NPL::Track> Ransac::SimpleRansac()
         
         
         
-        int TrackNumber = vTrack.size();
-        TString TrackName = Form("Track%d",TrackNumber);
+        //int TrackNumber = vTrack.size();
+        //TString TrackName = Form("Track%d",TrackNumber);
         
         int inliner_size = inliners.size();
         for(int p=0; p<inliner_size; p++){
diff --git a/NPLib/TrackReconstruction/NPRansac.h b/NPLib/TrackReconstruction/NPRansac.h
index 2428c5571f7064481ff1432999c47ac6504a6728..feb6451d7c43f6d93d4bbbff023f5ef28144fc1b 100644
--- a/NPLib/TrackReconstruction/NPRansac.h
+++ b/NPLib/TrackReconstruction/NPRansac.h
@@ -42,6 +42,7 @@ using namespace NPL;
 #include <TCanvas.h>
 #include <TVector3.h>
 #include <TRandom.h>
+#include <TRandom3.h>
 #include <TServerSocket.h>
 #include <TSocket.h>
 #include <TMonitor.h>
@@ -86,6 +87,8 @@ namespace NPL{
         TGraph2D* pl;
         vector<NPL::Track> vTrack;
         vector<double> vTrackCharge;
+        TRandom3* Rand;
+        NPL::Track myTrack;
         
     private:
         float fRANSACThreshold;
diff --git a/NPLib/TrackReconstruction/NPTrack.cxx b/NPLib/TrackReconstruction/NPTrack.cxx
index 93b00e8e2a345ef004f29476029568c03c9fd506..e1705b1b20481e0e685fa5e0f857ff58f483bad8 100644
--- a/NPLib/TrackReconstruction/NPTrack.cxx
+++ b/NPLib/TrackReconstruction/NPTrack.cxx
@@ -143,6 +143,19 @@ TVector3 Track::GetPointBarycenter()
     return vBarycentre;
 }
 
+//////////////////////////////////////////////////////
+double Track::GetTrackLengthX()
+{
+    double length;
+    
+    double Xmax = *max_element(vX.begin(), vX.end());
+    double Xmin = *min_element(vX.begin(), vX.end());
+    
+    length = sqrt(pow(Xmax-Xmin,2));
+    
+    return length;
+
+}
 //////////////////////////////////////////////////////
 double Track::GetTrackLength(double PadSizeX, double PadSizeY, double DriftVelocity)
 {
@@ -162,6 +175,18 @@ double Track::GetTrackLength(double PadSizeX, double PadSizeY, double DriftVeloc
     return length;
 }
 
+//////////////////////////////////////////////////////
+double Track::GetPartialCharge(double PadXmin, double PadXmax)
+{
+    double Q=0;
+    unsigned int size = vQ.size();
+    for(unsigned int i=0; i<size; i++){
+        if(vX[i]>=PadXmin && vX[i]<=PadXmax){
+            Q += vQ[i];
+        }
+    }
+    return Q;
+}
 //////////////////////////////////////////////////////
 double Track::GetTotalCharge()
 {
diff --git a/NPLib/TrackReconstruction/NPTrack.h b/NPLib/TrackReconstruction/NPTrack.h
index 1cb7226bd923be586b7d62609a27bc5cb999a0b7..1da625e4546dcf2d462a9c7b4d030d96c08fa3a5 100644
--- a/NPLib/TrackReconstruction/NPTrack.h
+++ b/NPLib/TrackReconstruction/NPTrack.h
@@ -86,8 +86,10 @@ namespace NPL{
         
         TVector3 GetPointBarycenter();
         
+        double GetTrackLengthX();
         double GetTrackLength(double PadSizeX, double PadSizeY, double DriftVelocity);
         double GetTotalCharge();
+        double GetPartialCharge(double PadXmin, double PadXmax);
         
         //void ResetLines();
         void Clear();
diff --git a/Projects/Actar/Analysis.cxx b/Projects/Actar/Analysis.cxx
index b54ad13d31736c0c329b75934a6edc6fdb9bc076..871dc451858b90a42ee543559542a2325ca1bdea 100644
--- a/Projects/Actar/Analysis.cxx
+++ b/Projects/Actar/Analysis.cxx
@@ -131,7 +131,7 @@ void Analysis::TreatEvent(){
                     for(unsigned int k=0; k<Actar->Si_E.size(); k++){
                         ESi.push_back(Actar->Si_E[k]);
                         SiNumber.push_back(Actar->Si_Number[k]);
-                        DE.push_back(vTrack[i].GetTotalCharge());
+                        DE.push_back(vTrack[i].GetPartialCharge(108,128)/(20./cos(angle*TMath::Pi()/180)));
                         double E3 = EnergyLoss_3He.EvaluateInitialEnergy(Actar->Si_E[k]*MeV,LengthInGas*mm,angle*TMath::Pi()/180);
                         double BeamEnergy = EnergyLoss_17C.Slow(510*MeV,(XVertex[i]+60)*mm, BeamAngle*TMath::Pi()/180);
                         TheReaction->SetBeamEnergy(BeamEnergy);
diff --git a/Projects/Actar/configs/ConfigActar.dat b/Projects/Actar/configs/ConfigActar.dat
index fa2ac5467fa033cfc4a5bb33975773d08577dfbf..f05aaed2abe78979e80a3c9bfe018d46dafc7001 100644
--- a/Projects/Actar/configs/ConfigActar.dat
+++ b/Projects/Actar/configs/ConfigActar.dat
@@ -1,6 +1,6 @@
 ConfigActar
 RecoRansac= 1
-RecoVisu= 1
+RecoVisu= 0
 HIT_THRESHOLD= 2
 Q_THRESHOLD= 0
 T_THRESHOLD= 0
diff --git a/Projects/Actar/configs/RansacConfig_simu.dat b/Projects/Actar/configs/RansacConfig_simu.dat
index eaec1536743aa335e2452de829292dc15b5c91ca..e8d2c58bf00bf8b80651599724ac2473f471d651 100644
--- a/Projects/Actar/configs/RansacConfig_simu.dat
+++ b/Projects/Actar/configs/RansacConfig_simu.dat
@@ -1,6 +1,6 @@
 ConfigRansac
 RANSACMaxIteration= 1200
-RANSACDistance= 4 
+RANSACDistance= 5 
 RANSACThreshold= 10
 RANSACChargeThreshold= 0.01
 RANSACPointThreshold= 0.1