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