diff --git a/reco/KF/CbmKFParticleFinder.cxx b/reco/KF/CbmKFParticleFinder.cxx index e3b2150b054818f0115860c82b5c8c764f8302d4..a65f3c9a6e3bd4a23f7bbc0310712f47cb860536 100644 --- a/reco/KF/CbmKFParticleFinder.cxx +++ b/reco/KF/CbmKFParticleFinder.cxx @@ -37,7 +37,7 @@ CbmKFParticleFinder::CbmKFParticleFinder(const char* name, Int_t iVerbose) , fTrackArray(0) , fEvents(0) , fTopoReconstructor(0) - , fPVFindMode(2) + , fPVFindMode(3) , fPID(0) , fSuperEventAnalysis(0) , fSETracks(0) @@ -116,6 +116,8 @@ InitStatus CbmKFParticleFinder::Init() { } } } + + fCbmPrimVertex = (CbmVertex*) ioman->GetObject("PrimaryVertex."); return kSUCCESS; } @@ -255,6 +257,12 @@ void CbmKFParticleFinder::Exec(Option_t* /*opt*/) { kfVertex.GetRefY() = mcpv[1]; kfVertex.GetRefZ() = mcpv[2]; } + + if(fPVFindMode==3) { + kfVertex.GetRefX() = fCbmPrimVertex->GetX(); + kfVertex.GetRefY() = fCbmPrimVertex->GetY(); + kfVertex.GetRefZ() = fCbmPrimVertex->GetZ(); + } vector<L1FieldRegion> vField, vFieldAtLastPoint; fitter.Fit(vRTracks, pdg); @@ -319,7 +327,7 @@ void CbmKFParticleFinder::Exec(Option_t* /*opt*/) { eventTopoReconstructor[iEvent].Init(tracks, tracksAtLastPoint); - if (fPVFindMode == 0) { + if (fPVFindMode == 0 || fPVFindMode == 3) { KFPVertex primVtx_tmp; primVtx_tmp.SetXYZ( kfVertex.GetRefX(), kfVertex.GetRefY(), kfVertex.GetRefZ()); diff --git a/reco/KF/CbmKFParticleFinder.h b/reco/KF/CbmKFParticleFinder.h index 12ddcfa4b2a6d059f3ffabe0e34acd7509b0d65f..4687b616b322107a950abf59346f438fadcee6d8 100644 --- a/reco/KF/CbmKFParticleFinder.h +++ b/reco/KF/CbmKFParticleFinder.h @@ -17,6 +17,7 @@ class KFParticleFinder; class KFPTrackVector; class CbmMCEventList; class CbmMCDataArray; +class CbmVertex; struct KFFieldVector { float fField[10]; @@ -32,6 +33,7 @@ public: void UseMCPV() { fPVFindMode = 0; } void ReconstructSinglePV() { fPVFindMode = 1; } void RconstructMultiplePV() { fPVFindMode = 2; } + void UseReconstructedPV() { fPVFindMode = 3; } void SetStsTrackBranchName(const TString& name) { fStsTrackBranchName = name; @@ -104,6 +106,7 @@ private: CbmMCDataArray* fMCTrackArray; //mc tracks in timeslices TClonesArray* fMCTrackArrayEvent; //mc tracks in event-by-event mode CbmMCEventList* fEventList; //mc event list in timeslice + CbmVertex* fCbmPrimVertex; //mc primary vertex //topology reconstructor KFParticleTopoReconstructor* fTopoReconstructor;