diff --git a/Reconstruction/RecGenfitAlg/CMakeLists.txt b/Reconstruction/RecGenfitAlg/CMakeLists.txt
index 45617cabee2464c5fc845c1310fcb77775d02e75..c3ea93008845010c7e10d4c6a17d9b5153be4846 100644
--- a/Reconstruction/RecGenfitAlg/CMakeLists.txt
+++ b/Reconstruction/RecGenfitAlg/CMakeLists.txt
@@ -8,8 +8,6 @@ gaudi_add_module(RecGenfitAlg
                 src/GenfitMaterialInterface.cpp
                 src/GenfitMsg.cpp
         LINK GearSvc
-#             EventSeeder
-#             TrackSystemSvcLib
              Gaudi::GaudiAlgLib
              Gaudi::GaudiKernel
              ${GEAR_LIBRARIES}
@@ -20,14 +18,13 @@ gaudi_add_module(RecGenfitAlg
              DataHelperLib
              EDM4HEP::edm4hep
              EDM4HEP::edm4hepDict
-             $ENV{GENFIT_ROOT}/lib64/libgenfit2.so
-
+             $ENV{GenFit}/lib64/libgenfit2.so
 )
 
 target_include_directories(RecGenfitAlg PUBLIC
         $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}>/include
         $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
-        $<BUILD_INTERFACE:$ENV{GENFIT_ROOT}>/include
+        $<BUILD_INTERFACE:$ENV{GenFit}>/include
 )
 
 install(TARGETS RecGenfitAlg
diff --git a/Reconstruction/RecGenfitAlg/src/GenfitTrack.cpp b/Reconstruction/RecGenfitAlg/src/GenfitTrack.cpp
index b7cbd8b013093d77d8a3e9dbd45da17802a0a504..f210dc9f69c88a0cbc6407b18911c181c700accf 100644
--- a/Reconstruction/RecGenfitAlg/src/GenfitTrack.cpp
+++ b/Reconstruction/RecGenfitAlg/src/GenfitTrack.cpp
@@ -238,9 +238,9 @@ bool GenfitTrack::addSpacePointTrakerHit(edm4hep::ConstTrackerHit& hit,
 
 /// Add a 3d SpacepointMeasurement with MC truth position smeared by sigma
 bool GenfitTrack::addSpacePointMeasurement(const TVectorD& pos,
-        double sigma, int detID, int hitID)
+        double sigma, int detID, int hitID, bool smear)
 {
-
+    double sigma_t=sigma*dd4hep::mm;
     /// Convert from CEPCSW unit to genfit unit, cm
     TVectorD pos_t(3);
     pos_t(0)=pos(0)*dd4hep::mm;
@@ -250,12 +250,12 @@ bool GenfitTrack::addSpacePointMeasurement(const TVectorD& pos,
     /// smear hit position with same weight
     TVectorD pos_smeared(3);
     for (int i=0;i<3;i++){
-        pos_smeared[i] = pos_t(i)+gRandom->Gaus(0, sigma/TMath::Sqrt(3.));
+        pos_smeared[i]=pos_t(i);
+        if(smear) pos_smeared[i]+=gRandom->Gaus(0,sigma_t/TMath::Sqrt(3.));
     }
 
     /// New a SpacepointMeasurement
     TMatrixDSym hitCov(3);
-    double sigma_t=sigma*dd4hep::mm;
     hitCov(0,0)=sigma_t*sigma_t;
     hitCov(1,1)=sigma_t*sigma_t;
     hitCov(2,2)=sigma_t*sigma_t;
@@ -647,7 +647,7 @@ double GenfitTrack::extrapolateToHit( TVector3& poca, TVector3& pocaDir,
 ///Add space point measurement from edm4hep::Track to genfit track
 int GenfitTrack::addSimTrackerHits(const edm4hep::Track& track,
         const edm4hep::MCRecoTrackerAssociationCollection* assoHits,
-        float sigma){
+        float sigma,bool smear){
     //A TrakerHit collection
     std::vector<edm4hep::ConstSimTrackerHit> sortedDCTrackHitCol;
 
@@ -691,6 +691,7 @@ int GenfitTrack::addSimTrackerHits(const edm4hep::Track& track,
                 if(assoHits->at(iSimHit).getRec()==hit &&
                         assoHits->at(iSimHit).getSim().getTime()<minTime){
                     minTimeSimHit=assoHits->at(iSimHit).getSim();
+                    minTime=assoHits->at(iSimHit).getSim().getTime();
                 }
             }
             //std::cout<<"minTimeSimHit "<<minTimeSimHit<<std::endl;
@@ -705,7 +706,7 @@ int GenfitTrack::addSimTrackerHits(const edm4hep::Track& track,
 
     ///Add DC hits to track
     //Sort sim DC hits by time
-    std::sort(sortedDCTrackHitCol.begin(),sortedDCTrackHitCol.end(),sortDCHit);
+    //std::sort(sortedDCTrackHitCol.begin(),sortedDCTrackHitCol.end(),sortDCHit);
     for(auto dCTrackerHit: sortedDCTrackHitCol){
         edm4hep::Vector3d pos=dCTrackerHit.getPosition();
         TVectorD p(3);
@@ -713,7 +714,7 @@ int GenfitTrack::addSimTrackerHits(const edm4hep::Track& track,
         p[1]=pos.y;
         p[2]=pos.z;
         unsigned long long detID = dCTrackerHit.getCellID();
-        if(addSpacePointMeasurement(p,sigma,detID,hitID)){
+        if(addSpacePointMeasurement(p,sigma,detID,hitID,smear)){
             GenfitMsg::get()<<MSG::DEBUG<<"add DC space point"<<endmsg;
             hitID++;
         }else{
diff --git a/Reconstruction/RecGenfitAlg/src/GenfitTrack.h b/Reconstruction/RecGenfitAlg/src/GenfitTrack.h
index 6ab8db8eda4d365a4261e42daf3065e55410c163..708c33e38ba282c92f5d0f8ef579fde688d150f4 100644
--- a/Reconstruction/RecGenfitAlg/src/GenfitTrack.h
+++ b/Reconstruction/RecGenfitAlg/src/GenfitTrack.h
@@ -102,7 +102,7 @@ class GenfitTrack {
 
     /// Add a space point measurement, return number of hits on track
     virtual bool addSpacePointMeasurement(const TVectorD&, double,
-            int detID=-1, int hitID=-1);
+            int detID=-1, int hitID=-1, bool smear=false);
 
     /// Add a WireMeasurement with MC truth position smeared by sigma
     virtual void addWireMeasurement(double driftDistance,
@@ -115,7 +115,7 @@ class GenfitTrack {
     ///Add space point from truth to track
     int addSimTrackerHits(const edm4hep::Track& track,
         const edm4hep::MCRecoTrackerAssociationCollection* assoHits,
-        float sigma);// float nSigmaSelection
+        float sigma,bool smear=false);// float nSigmaSelection
 
     ///Store track to ReconstructedParticle
     bool storeTrack(edm4hep::ReconstructedParticle& dcRecParticle,int pidType,
diff --git a/Reconstruction/RecGenfitAlg/src/RecGenfitAlgDC.cpp b/Reconstruction/RecGenfitAlg/src/RecGenfitAlgDC.cpp
index 478d88a5962248850b884592f7372668f6e3c358..b627ae491beeff91b0325ea4c9a7aa902079020b 100644
--- a/Reconstruction/RecGenfitAlg/src/RecGenfitAlgDC.cpp
+++ b/Reconstruction/RecGenfitAlg/src/RecGenfitAlgDC.cpp
@@ -61,7 +61,7 @@ RecGenfitAlgDC::RecGenfitAlgDC(const std::string& name, ISvcLocator* pSvcLocator
 StatusCode RecGenfitAlgDC::initialize()
 {
     MsgStream log(msgSvc(), name());
-    info()<<" RecGenfitAlgDC initialize()"<<endmsg;
+    info()<<"RecGenfitAlgDC initialize()"<<endmsg;
 
     ///Get GeomSvc
     m_geomSvc=Gaudi::svcLocator()->service("GeomSvc");
@@ -196,7 +196,7 @@ StatusCode RecGenfitAlgDC::execute()
 {
     StatusCode sc;
     m_timer=clock();
-    info()<<" RecGenfitAlgDC in execute()"<<endmsg;
+    info()<<"RecGenfitAlgDC in execute()"<<endmsg;
 
     /////retrieve EventHeader
     //auto header = _headerCol.get()->at(0);
@@ -248,7 +248,7 @@ StatusCode RecGenfitAlgDC::execute()
             }
             if(m_useTruthHit){
                 if(0==genfitTrack->addSimTrackerHits(dcTrack,assoDCHitsCol,
-                            m_sigmaHit.value())){
+                            m_sigmaHit.value(),m_smearHit)){
                     debug()<<"addSimTrackerHits failed!"<<endmsg;
                     return StatusCode::FAILURE;
                 }
@@ -304,7 +304,7 @@ StatusCode RecGenfitAlgDC::execute()
 StatusCode RecGenfitAlgDC::finalize()
 {
     MsgStream log(msgSvc(), name());
-    info()<< " RecGenfitAlgDC in finalize()" << endmsg;
+    info()<< "RecGenfitAlgDC in finalize()" << endmsg;
 
     m_genfitFitter->writeHist();
     delete m_genfitFitter;
diff --git a/Reconstruction/RecGenfitAlg/src/RecGenfitAlgDC.h b/Reconstruction/RecGenfitAlg/src/RecGenfitAlgDC.h
index 4619b468fe50502dc23a7fde907e79e9f35be739..1e714310af8f833a845a061c2d6f3884f022a866 100644
--- a/Reconstruction/RecGenfitAlg/src/RecGenfitAlgDC.h
+++ b/Reconstruction/RecGenfitAlg/src/RecGenfitAlgDC.h
@@ -95,6 +95,7 @@ class RecGenfitAlgDC:public GaudiAlgorithm {
         Gaudi::Property<std::string> m_readout_name{this,
             "readout", "DriftChamberHitsCollection"};
         Gaudi::Property<int> m_debug{this,"debug",false};
+        Gaudi::Property<bool> m_smearHit{this,"smearHit",false};
         Gaudi::Property<float> m_sigmaHit{this,"sigmaHit",0.11};//mm
         Gaudi::Property<float> m_nSigmaHit{this,"nSigmaHit",5};
         Gaudi::Property<double> m_initCovResPos{this,"initCovResPos",1};
diff --git a/Reconstruction/RecGenfitAlg/src/RecGenfitAlgSDT.cpp b/Reconstruction/RecGenfitAlg/src/RecGenfitAlgSDT.cpp
index 8aa61f181d9f337e90731d7f5b27d9451c65a1fd..18f19c8eac116e44c259725e39951ab97b481bd4 100644
--- a/Reconstruction/RecGenfitAlg/src/RecGenfitAlgSDT.cpp
+++ b/Reconstruction/RecGenfitAlg/src/RecGenfitAlgSDT.cpp
@@ -199,7 +199,7 @@ StatusCode RecGenfitAlgSDT::execute()
 {
     StatusCode sc=StatusCode::SUCCESS;
     m_timer=clock();
-    info()<<" RecGenfitAlgSDT in execute()"<<endmsg;
+    info()<<"RecGenfitAlgSDT in execute()"<<endmsg;
 
     /////retrieve EventHeader
     //auto header = _headerCol.get()->at(0);
diff --git a/Reconstruction/Tracking/src/TruthTracker/TruthTrackerAlg.cpp b/Reconstruction/Tracking/src/TruthTracker/TruthTrackerAlg.cpp
index 8053ac444cc847ea61e86037fbfdeb44ced8cfc6..d9bd55f85c3afc6528d45f3b530e5c666b821ec3 100644
--- a/Reconstruction/Tracking/src/TruthTracker/TruthTrackerAlg.cpp
+++ b/Reconstruction/Tracking/src/TruthTracker/TruthTrackerAlg.cpp
@@ -187,10 +187,15 @@ StatusCode TruthTrackerAlg::execute()
         double B[3]={1e9,1e9,1e9};
         m_dd4hepField.magneticField({0.,0.,0.},B);
         HelixClass helix;
-        float pos[3]={mcParticleVertexSmeared.x,
-            mcParticleVertexSmeared.y,mcParticleVertexSmeared.z};
-        float mom[3]={mcParticleMomSmeared.x,mcParticleMomSmeared.y,
-            mcParticleMomSmeared.z};
+        //float pos[3]={mcParticleVertexSmeared.x,
+        //    mcParticleVertexSmeared.y,mcParticleVertexSmeared.z};
+        //float mom[3]={mcParticleMomSmeared.x,mcParticleMomSmeared.y,
+        //    mcParticleMomSmeared.z};
+        ////FIXME DEBUG
+        float pos[3]={(float)mcParticleVertex.x,
+            (float)mcParticleVertex.y,(float)mcParticleVertex.z};
+        float mom[3]={(float)mcParticleMom.x,(float)mcParticleMom.y,
+            (float)mcParticleMom.z};
         helix.Initialize_VP(pos,mom,mcParticle.getCharge(),B[2]/dd4hep::tesla);
 
         ///new Track