From 3fd218c9967edee478c957001cc11f99bca811db Mon Sep 17 00:00:00 2001 From: "se.gorbunov" <se.gorbunov@gsi.de> Date: Thu, 2 Feb 2023 12:17:23 +0000 Subject: [PATCH] store track time at 3 positions: track start, first hit, last hit --- core/data/CbmTrack.cxx | 46 ++++++++++++------- core/data/CbmTrack.h | 30 +++++++++--- core/data/sts/CbmStsTrack.cxx | 4 +- core/data/tof/CbmTofTrack.cxx | 4 +- reco/L1/L1Algo/L1TrackFitter.cxx | 4 +- .../CbmL1GlobalTrackFinder.cxx | 8 +++- .../OffLineInterface/CbmL1StsTrackFinder.cxx | 8 +++- .../tracks/CbmBuildEventsFromTracksReal.cxx | 16 +++---- .../tracks/CbmBuildEventsFromTracksReal.h | 2 +- .../eventbuilder/tracks/CbmEventBuilderQa.cxx | 26 +++++------ reco/eventbuilder/tracks/CbmEventBuilderQa.h | 2 +- reco/littrack/cbm/reco/CbmLitFitTracks.cxx | 2 +- reco/littrack/cbm/utils/CbmLitConverter.h | 16 ++++--- .../tracking/global/CbmGlobalTrackingTask.cxx | 2 +- 14 files changed, 105 insertions(+), 65 deletions(-) diff --git a/core/data/CbmTrack.cxx b/core/data/CbmTrack.cxx index 2f3385eeb5..e05534bd8d 100644 --- a/core/data/CbmTrack.cxx +++ b/core/data/CbmTrack.cxx @@ -27,8 +27,12 @@ CbmTrack::CbmTrack() , fPidHypo(0) , fParamFirst() , fParamLast() - , fTime(0.) - , fTimeError(0.) + , fStartTime(0.) + , fStartTimeError(0.) + , fFirstHitTime(0.) + , fFirstHitTimeError(0.) + , fLastHitTime(0.) + , fLastHitTimeError(0.) , fFlag(0) , fChiSq(0.) , fNDF(0) @@ -45,8 +49,12 @@ CbmTrack::CbmTrack(const CbmTrack& rhs) , fPidHypo(rhs.fPidHypo) , fParamFirst(rhs.fParamFirst) , fParamLast(rhs.fParamLast) - , fTime(rhs.fTime) - , fTimeError(rhs.fTimeError) + , fStartTime(rhs.fStartTime) + , fStartTimeError(rhs.fStartTimeError) + , fFirstHitTime(rhs.fFirstHitTime) + , fFirstHitTimeError(rhs.fFirstHitTimeError) + , fLastHitTime(rhs.fLastHitTime) + , fLastHitTimeError(rhs.fLastHitTimeError) , fFlag(rhs.fFlag) , fChiSq(rhs.fChiSq) , fNDF(rhs.fNDF) @@ -60,19 +68,23 @@ CbmTrack& CbmTrack::operator=(const CbmTrack& rhs) { if (this != &rhs) { - TObject::operator=(rhs); - fHitIndex = rhs.fHitIndex; - fHitType = rhs.fHitType; - fPidHypo = rhs.fPidHypo; - fParamFirst = rhs.fParamFirst; - fParamLast = rhs.fParamLast; - fTime = rhs.fTime; - fTimeError = rhs.fTimeError; - fFlag = rhs.fFlag; - fChiSq = rhs.fChiSq; - fNDF = rhs.fNDF; - fPreviousTrackId = rhs.fPreviousTrackId; - fMatch = nullptr; + TObject::operator =(rhs); + fHitIndex = rhs.fHitIndex; + fHitType = rhs.fHitType; + fPidHypo = rhs.fPidHypo; + fParamFirst = rhs.fParamFirst; + fParamLast = rhs.fParamLast; + fStartTime = rhs.fStartTime; + fStartTimeError = rhs.fStartTimeError; + fFirstHitTime = rhs.fFirstHitTime; + fFirstHitTimeError = rhs.fFirstHitTimeError; + fLastHitTime = rhs.fLastHitTime; + fLastHitTimeError = rhs.fLastHitTimeError; + fFlag = rhs.fFlag; + fChiSq = rhs.fChiSq; + fNDF = rhs.fNDF; + fPreviousTrackId = rhs.fPreviousTrackId; + fMatch = nullptr; } return *this; } diff --git a/core/data/CbmTrack.h b/core/data/CbmTrack.h index 5419d752c7..a635562558 100644 --- a/core/data/CbmTrack.h +++ b/core/data/CbmTrack.h @@ -66,8 +66,12 @@ public: const FairTrackParam* GetParamFirst() const { return &fParamFirst; } const FairTrackParam* GetParamLast() const { return &fParamLast; } CbmMatch* GetMatch() const { return fMatch; } - double GetTime() const { return fTime; } - double GetTimeError() const { return fTimeError; } + double GetStartTime() const { return fStartTime; } + double GetStartTimeError() const { return fStartTimeError; } + double GetFirstHitTime() const { return fFirstHitTime; } + double GetFirstHitTimeError() const { return fFirstHitTimeError; } + double GetLastHitTime() const { return fLastHitTime; } + double GetLastHitTimeError() const { return fLastHitTimeError; } /** Modifiers **/ void SetPidHypo(int32_t pid) { fPidHypo = pid; } @@ -78,8 +82,12 @@ public: void SetParamFirst(const FairTrackParam* par) { fParamFirst = *par; } void SetParamLast(const FairTrackParam* par) { fParamLast = *par; } void SetMatch(CbmMatch* match); - void SetTime(double time) { fTime = time; } - void SetTimeError(double error) { fTimeError = error; } + void SetStartTime(double time) { fStartTime = time; } + void SetStartTimeError(double error) { fStartTimeError = error; } + void SetFirstHitTime(double time) { fFirstHitTime = time; } + void SetFirstHitTimeError(double error) { fFirstHitTimeError = error; } + void SetLastHitTime(double time) { fLastHitTime = time; } + void SetLastHitTimeError(double error) { fLastHitTimeError = error; } virtual std::string ToString() const; @@ -98,8 +106,16 @@ protected: FairTrackParam fParamLast; /** Track start time **/ - double fTime; - double fTimeError; + double fStartTime; + double fStartTimeError; + + /** Track time at the first hit **/ + double fFirstHitTime; + double fFirstHitTimeError; + + /** Track time at the last hit **/ + double fLastHitTime; + double fLastHitTimeError; /** Quality flag **/ int32_t fFlag; @@ -114,7 +130,7 @@ protected: /** Monte-Carlo information **/ CbmMatch* fMatch; - ClassDef(CbmTrack, 4); + ClassDef(CbmTrack, 5); }; #endif diff --git a/core/data/sts/CbmStsTrack.cxx b/core/data/sts/CbmStsTrack.cxx index 228e40a4d4..a1033a00a2 100644 --- a/core/data/sts/CbmStsTrack.cxx +++ b/core/data/sts/CbmStsTrack.cxx @@ -31,8 +31,8 @@ CbmStsTrack::~CbmStsTrack() {} std::string CbmStsTrack::ToString() const { stringstream ss; - ss << "CbmStsTrack: time " << fTime << " ns | hits STS " << GetNofStsHits() << " MVD " << GetNofMvdHits() << " | q/p " - << GetParamFirst()->GetQp() << " | chisq " << GetChiSq() << " | NDF " << GetNDF() << " | STS hits "; + ss << "CbmStsTrack: start time " << fStartTime << " ns | hits STS " << GetNofStsHits() << " MVD " << GetNofMvdHits() + << " | q/p " << GetParamFirst()->GetQp() << " | chisq " << GetChiSq() << " | NDF " << GetNDF() << " | STS hits "; for (int32_t iHit = 0; iHit < GetNofStsHits(); iHit++) { ss << GetStsHitIndex(iHit) << " "; } diff --git a/core/data/tof/CbmTofTrack.cxx b/core/data/tof/CbmTofTrack.cxx index bf7d3b601c..3e515abe0a 100644 --- a/core/data/tof/CbmTofTrack.cxx +++ b/core/data/tof/CbmTofTrack.cxx @@ -32,8 +32,8 @@ CbmTofTrack::~CbmTofTrack() {} std::string CbmTofTrack::ToString() const { stringstream ss; - ss << "CbmTofTrack: time " << fTime << " ns | hits STS " << GetNofTofHits() << " | q/p " << GetParamFirst()->GetQp() - << " | chisq " << GetChiSq() << " | NDF " << GetNDF() << " | STS hits "; + ss << "CbmTofTrack: start time " << fStartTime << " ns | hits STS " << GetNofTofHits() << " | q/p " + << GetParamFirst()->GetQp() << " | chisq " << GetChiSq() << " | NDF " << GetNDF() << " | STS hits "; for (int32_t iHit = 0; iHit < GetNofTofHits(); iHit++) { ss << GetTofHitIndex(iHit) << " "; } diff --git a/reco/L1/L1Algo/L1TrackFitter.cxx b/reco/L1/L1Algo/L1TrackFitter.cxx index a876ab4fc0..e1b4f6bbed 100644 --- a/reco/L1/L1Algo/L1TrackFitter.cxx +++ b/reco/L1/L1Algo/L1TrackFitter.cxx @@ -508,7 +508,7 @@ void L1Algo::L1KFTrackFitter() int ista = nStations - 1; time_last = iif(w_time[ista] > fvec::Zero(), time_last, fvec::Zero()); - dt2_last = iif(w_time[ista] > fvec::Zero(), dt2_last, fvec(100.)); + dt2_last = iif(w_time[ista] > fvec::Zero(), dt2_last, fvec(1.e6)); FilterFirst(fit, x_last, y_last, time_last, dt2_last, d_xx_lst, d_yy_lst, d_xy_lst); @@ -751,7 +751,7 @@ void L1Algo::L1KFTrackFitter() } } void L1Algo::GuessVecNoField(L1TrackParFit& t, fvec& x_last, fvec& x_2last, fvec& y_last, fvec& y_2last, fvec& z_end, - fvec& z_2last, fvec& time_last, fvec* w_time, fvec& dt2_last) + fvec& z_2last, fvec& time_last, fvec* /*w_time*/, fvec& dt2_last) { fvec dzi = fvec(1.) / (z_end - z_2last); diff --git a/reco/L1/OffLineInterface/CbmL1GlobalTrackFinder.cxx b/reco/L1/OffLineInterface/CbmL1GlobalTrackFinder.cxx index 83b66c29f6..cf98e78395 100644 --- a/reco/L1/OffLineInterface/CbmL1GlobalTrackFinder.cxx +++ b/reco/L1/OffLineInterface/CbmL1GlobalTrackFinder.cxx @@ -209,8 +209,12 @@ void CbmL1GlobalTrackFinder::CbmL1TrackToCbmStsTrack(CbmL1Track l1track, CbmStsT track->SetChiSq(T->chi2); track->SetNDF(T->NDF); track->SetPidHypo(T->T[4] >= 0 ? 211 : -211); - track->SetTime(T->Tpv[6]); - track->SetTimeError(T->Cpv[20]); + track->SetStartTime(T->Tpv[6]); + track->SetStartTimeError(T->Cpv[20]); + track->SetFirstHitTime(T->T[6]); + track->SetFirstHitTimeError(T->C[20]); + track->SetLastHitTime(T->TLast[6]); + track->SetLastHitTimeError(T->CLast[20]); FairTrackParam fpar(*track->GetParamFirst()), lpar(*track->GetParamLast()); CbmKFMath::CopyTC2TrackParam(&fpar, T->T, T->C); diff --git a/reco/L1/OffLineInterface/CbmL1StsTrackFinder.cxx b/reco/L1/OffLineInterface/CbmL1StsTrackFinder.cxx index 4854d17432..cce5fe7aec 100644 --- a/reco/L1/OffLineInterface/CbmL1StsTrackFinder.cxx +++ b/reco/L1/OffLineInterface/CbmL1StsTrackFinder.cxx @@ -84,8 +84,12 @@ Int_t CbmL1StsTrackFinder::CopyL1Tracks(CbmEvent* event) t->SetChiSq(T.chi2); t->SetNDF(T.NDF); t->SetPidHypo(T.T[4] >= 0 ? 211 : -211); - t->SetTime(T.Tpv[6]); - t->SetTimeError(T.Cpv[20]); + t->SetStartTime(T.Tpv[6]); + t->SetStartTimeError(T.Cpv[20]); + t->SetFirstHitTime(T.T[6]); + t->SetFirstHitTimeError(T.C[20]); + t->SetLastHitTime(T.TLast[6]); + t->SetLastHitTimeError(T.CLast[20]); for (vector<int>::iterator ih = it->Hits.begin(); ih != it->Hits.end(); ++ih) { CbmL1HitStore& h = L1->fvHitStore[*ih]; diff --git a/reco/eventbuilder/tracks/CbmBuildEventsFromTracksReal.cxx b/reco/eventbuilder/tracks/CbmBuildEventsFromTracksReal.cxx index af07d37493..c7d8ff69d3 100644 --- a/reco/eventbuilder/tracks/CbmBuildEventsFromTracksReal.cxx +++ b/reco/eventbuilder/tracks/CbmBuildEventsFromTracksReal.cxx @@ -92,8 +92,8 @@ void CbmBuildEventsFromTracksReal::Exec(Option_t*) for (unsigned int iTrack = 0; iTrack < nTracks; iTrack++) { CbmStsTrack* track = (CbmStsTrack*) fStsTracks->At(iTrack); - Double_t time = track->GetTime(); - Double_t timeEr = track->GetTimeError(); + Double_t time = track->GetStartTime(); + Double_t timeEr = track->GetStartTimeError(); SortTracks structure; @@ -129,14 +129,14 @@ void CbmBuildEventsFromTracksReal::Exec(Option_t*) for (unsigned int iTrack = 0; iTrack < Tracks.size(); iTrack++) { if (Tracks[iTrack].used) continue; - float time1 = Tracks[iTrack].Track.GetTime(); - float timeC1 = Tracks[iTrack].Track.GetTimeError(); + float time1 = Tracks[iTrack].Track.GetStartTime(); + float timeC1 = Tracks[iTrack].Track.GetStartTimeError(); for (unsigned int iClusterTrack = 0; iClusterTrack < cluster.size(); iClusterTrack++) { CbmStsTrack* stsTrack = (CbmStsTrack*) fStsTracks->At(cluster[iClusterTrack]); - float time2 = stsTrack->GetTime(); - float timeC2 = stsTrack->GetTimeError(); + float time2 = stsTrack->GetStartTime(); + float timeC2 = stsTrack->GetStartTimeError(); float dt = fabs(time1 - time2); float error = sqrt(timeC1 + timeC2); ///&&???????????????? @@ -157,9 +157,9 @@ void CbmBuildEventsFromTracksReal::Exec(Option_t*) for (unsigned int iClusterTrack = 0; iClusterTrack < cluster.size(); iClusterTrack++) { CbmStsTrack* stsTrack = (CbmStsTrack*) fStsTracks->At(cluster[iClusterTrack]); - if (time_min > stsTrack->GetTime()) time_min = stsTrack->GetTime(); + if (time_min > stsTrack->GetStartTime()) time_min = stsTrack->GetStartTime(); - if (time_max < stsTrack->GetTime()) time_max = stsTrack->GetTime(); + if (time_max < stsTrack->GetStartTime()) time_max = stsTrack->GetStartTime(); } if (cluster.size() > 1) clusters.push_back(cluster); diff --git a/reco/eventbuilder/tracks/CbmBuildEventsFromTracksReal.h b/reco/eventbuilder/tracks/CbmBuildEventsFromTracksReal.h index 4792863af1..60e4be911d 100644 --- a/reco/eventbuilder/tracks/CbmBuildEventsFromTracksReal.h +++ b/reco/eventbuilder/tracks/CbmBuildEventsFromTracksReal.h @@ -40,7 +40,7 @@ private: static bool CompareTrackTime(const SortTracks& a, const SortTracks& b) { - return (a.Track.GetTime() < b.Track.GetTime()); + return (a.Track.GetStartTime() < b.Track.GetStartTime()); } TClonesArray* fStsTracks; ///< Input array (class CbmStsDigi) diff --git a/reco/eventbuilder/tracks/CbmEventBuilderQa.cxx b/reco/eventbuilder/tracks/CbmEventBuilderQa.cxx index a5af7b979d..4c54d22be7 100644 --- a/reco/eventbuilder/tracks/CbmEventBuilderQa.cxx +++ b/reco/eventbuilder/tracks/CbmEventBuilderQa.cxx @@ -323,7 +323,7 @@ void CbmEventBuilderQa::Exec(Option_t* /*opt*/) CbmStsTrack* track = (CbmStsTrack*) fStsTracks->At(iTrack); - fTimeHisto[0]->Fill(track->GetTime()); + fTimeHisto[0]->Fill(track->GetStartTime()); UInt_t NHits = track->GetNofStsHits(); @@ -381,8 +381,8 @@ void CbmEventBuilderQa::Exec(Option_t* /*opt*/) CbmMCTrack* mcTrack = (CbmMCTrack*) fMCTracks->Get(0, mcEvent, mcTrackId); double mcTime = mcTrack->GetStartT() + fEventList->GetEventTime(mcEvent + 1, link.GetFile()); - double residual = track->GetTime() - mcTime; - double pull = residual / track->GetTimeError(); + double residual = track->GetStartTime() - mcTime; + double pull = residual / track->GetStartTimeError(); fTimeHisto[1]->Fill(residual); fTimeHisto[2]->Fill(pull); } @@ -504,12 +504,12 @@ void CbmEventBuilderQa::Exec(Option_t* /*opt*/) CbmStsTrack* track = (CbmStsTrack*) fStsTracks->At(stsTrackIndex); - if ((track->GetTime()) > tLastTrack) tLastTrack = (track->GetTime()); - if ((track->GetTime()) < tFirstTrack) tFirstTrack = (track->GetTime()); + if ((track->GetStartTime()) > tLastTrack) tLastTrack = (track->GetStartTime()); + if ((track->GetStartTime()) < tFirstTrack) tFirstTrack = (track->GetStartTime()); double mcTime = mcTrack->GetStartT() + fEventList->GetEventTime(mcEvent + 1, link.GetFile()); - fTimeHisto[24]->Fill(fabs(track->GetTime() - mcTime) / track->GetTimeError()); + fTimeHisto[24]->Fill(fabs(track->GetStartTime() - mcTime) / track->GetStartTimeError()); if (fMCEvents[mcEvent].IsReconstructable()) EventMatch.AddTrack(mcEvent); @@ -518,8 +518,8 @@ void CbmEventBuilderQa::Exec(Option_t* /*opt*/) const int stsTrackIndex1 = event->GetStsTrackIndex(iTr1); CbmStsTrack* track1 = (CbmStsTrack*) fStsTracks->At(stsTrackIndex1); - fTimeHisto[25]->Fill(fabs(track->GetTime() - track1->GetTime()) - / sqrt(track->GetTimeError() + track1->GetTimeError())); + fTimeHisto[25]->Fill(fabs(track->GetStartTime() - track1->GetStartTime()) + / sqrt(track->GetStartTimeError() + track1->GetStartTimeError())); } for (int iEvent1 = 0; iEvent1 < fEvents->GetEntriesFast(); iEvent1++) { @@ -532,10 +532,10 @@ void CbmEventBuilderQa::Exec(Option_t* /*opt*/) const int stsTrackIndex1 = event1->GetStsTrackIndex(iTr1); CbmStsTrack* track1 = (CbmStsTrack*) fStsTracks->At(stsTrackIndex1); - if (fabs(track->GetTime() - track1->GetTime()) > 8.5) continue; + if (fabs(track->GetStartTime() - track1->GetStartTime()) > 8.5) continue; - fTimeHisto[26]->Fill(fabs(track->GetTime() - track1->GetTime()) - / sqrt(track->GetTimeError() + track1->GetTimeError())); + fTimeHisto[26]->Fill(fabs(track->GetStartTime() - track1->GetStartTime()) + / sqrt(track->GetStartTimeError() + track1->GetStartTimeError())); } } } @@ -589,10 +589,10 @@ void CbmEventBuilderQa::Exec(Option_t* /*opt*/) const int stsTrackIndex = event->GetStsTrackIndex(i); CbmStsTrack* track = (CbmStsTrack*) fStsTracks->At(stsTrackIndex); - fTimeHisto[6]->Fill(track->GetTime()); + fTimeHisto[6]->Fill(track->GetStartTime()); - fTimeHisto[11 + iCol]->Fill(track->GetTime()); + fTimeHisto[11 + iCol]->Fill(track->GetStartTime()); UInt_t NHits = track->GetNofStsHits(); diff --git a/reco/eventbuilder/tracks/CbmEventBuilderQa.h b/reco/eventbuilder/tracks/CbmEventBuilderQa.h index 1c344a41c6..0d6a63b919 100644 --- a/reco/eventbuilder/tracks/CbmEventBuilderQa.h +++ b/reco/eventbuilder/tracks/CbmEventBuilderQa.h @@ -67,7 +67,7 @@ private: static bool CompareTrackTime(const SortEvents& a, const SortEvents& b) { - return (a.track.GetTime() < b.track.GetTime()); + return (a.track.GetStartTime() < b.track.GetStartTime()); } bool CalculateIsReconstructable(const int iMCFile, const int iMCEvent, diff --git a/reco/littrack/cbm/reco/CbmLitFitTracks.cxx b/reco/littrack/cbm/reco/CbmLitFitTracks.cxx index fb3508b10b..d01135b26f 100644 --- a/reco/littrack/cbm/reco/CbmLitFitTracks.cxx +++ b/reco/littrack/cbm/reco/CbmLitFitTracks.cxx @@ -107,7 +107,7 @@ void CbmLitFitTracks::DoFit() Int_t stsTrackId = track->GetPreviousTrackId(); CbmStsTrack* stsTrack = static_cast<CbmStsTrack*>(fStsTracks->At(stsTrackId)); CbmTrackParam cbmLPar; - cbmLPar.Set(*stsTrack->GetParamLast(), stsTrack->GetTime(), stsTrack->GetTimeError()); + cbmLPar.Set(*stsTrack->GetParamLast(), stsTrack->GetLastHitTime(), stsTrack->GetLastHitTimeError()); CbmLitTrackParam lpar; CbmLitConverterFairTrackParam::FairTrackParamToCbmLitTrackParam(&cbmLPar, &lpar); track->SetParamFirst(&lpar); diff --git a/reco/littrack/cbm/utils/CbmLitConverter.h b/reco/littrack/cbm/utils/CbmLitConverter.h index 93d9374bf6..46757b3c5f 100644 --- a/reco/littrack/cbm/utils/CbmLitConverter.h +++ b/reco/littrack/cbm/utils/CbmLitConverter.h @@ -104,10 +104,10 @@ public: CbmLitTrackParam paramFirst, paramLast; //TODO remove this const typecasting CbmTrackParam cbmParamFirst; - cbmParamFirst.Set(*stsTrack->GetParamFirst(), stsTrack->GetTime(), stsTrack->GetTimeError()); + cbmParamFirst.Set(*stsTrack->GetParamFirst(), stsTrack->GetFirstHitTime(), stsTrack->GetFirstHitTimeError()); CbmLitConverterFairTrackParam::FairTrackParamToCbmLitTrackParam(&cbmParamFirst, ¶mFirst); CbmTrackParam cbmParamLast; - cbmParamLast.Set(*stsTrack->GetParamLast(), stsTrack->GetTime(), stsTrack->GetTimeError()); + cbmParamLast.Set(*stsTrack->GetParamLast(), stsTrack->GetLastHitTime(), stsTrack->GetLastHitTimeError()); CbmLitConverterFairTrackParam::FairTrackParamToCbmLitTrackParam(&cbmParamLast, ¶mLast); Double_t firstTime; Double_t lastTime; @@ -137,10 +137,10 @@ public: ltrack->SetPDG(track->GetPidHypo()); CbmLitTrackParam paramFirst, paramLast; CbmTrackParam cbmParamFirst; - cbmParamFirst.Set(*track->GetParamFirst(), track->GetTime(), track->GetTimeError()); + cbmParamFirst.Set(*track->GetParamFirst(), track->GetFirstHitTime(), track->GetFirstHitTimeError()); CbmLitConverterFairTrackParam::FairTrackParamToCbmLitTrackParam(&cbmParamFirst, ¶mFirst); CbmTrackParam cbmParamLast; - cbmParamLast.Set(*track->GetParamLast(), track->GetTime(), track->GetTimeError()); + cbmParamLast.Set(*track->GetParamLast(), track->GetLastHitTime(), track->GetLastHitTimeError()); CbmLitConverterFairTrackParam::FairTrackParamToCbmLitTrackParam(&cbmParamLast, ¶mLast); ltrack->SetParamFirst(¶mFirst); ltrack->SetParamLast(¶mLast); @@ -330,6 +330,10 @@ public: static void GetStsTrackTimes(const CbmStsTrack* track, Double_t& firstTime, Double_t& lastTime) { + firstTime = track->GetFirstHitTime(); + lastTime = track->GetLastHitTime(); + return; + static FairRootManager* ioman = 0; static CbmVertex* primVertex = 0; static TClonesArray* stsHits = 0; @@ -359,10 +363,10 @@ public: CbmLitTrackParam paramFirst; CbmLitTrackParam paramLast; CbmTrackParam cbmParamFirst; - cbmParamFirst.Set(*track->GetParamFirst(), track->GetTime(), track->GetTimeError()); + cbmParamFirst.Set(*track->GetParamFirst(), track->GetFirstHitTime(), track->GetFirstHitTimeError()); CbmLitConverterFairTrackParam::FairTrackParamToCbmLitTrackParam(&cbmParamFirst, ¶mFirst); CbmTrackParam cbmParamLast; - cbmParamLast.Set(*track->GetParamLast(), track->GetTime(), track->GetTimeError()); + cbmParamLast.Set(*track->GetParamLast(), track->GetLastHitTime(), track->GetLastHitTimeError()); CbmLitConverterFairTrackParam::FairTrackParamToCbmLitTrackParam(&cbmParamLast, ¶mLast); Double_t x = paramFirst.GetX(); diff --git a/reco/tracking/global/CbmGlobalTrackingTask.cxx b/reco/tracking/global/CbmGlobalTrackingTask.cxx index 76e03e19e5..7a99c5d044 100644 --- a/reco/tracking/global/CbmGlobalTrackingTask.cxx +++ b/reco/tracking/global/CbmGlobalTrackingTask.cxx @@ -143,7 +143,7 @@ void CbmGlobalTrackingTask::Exec(Option_t* /*opt*/) #endif //CBM_GLOBALTB_PRINT_PERF //fTofGeometry.Find(param->GetX(), param->GetCovariance(0, 0), param->GetY(), param->GetCovariance(1, 1), param->GetZ(), //track->GetTime(), track->GetTimeError(), param->GetTx(), TMath::Sqrt(param->GetCovariance(2, 2)), param->GetTy(), TMath::Sqrt(param->GetCovariance(3, 3)), tofHitInd); - fTofGeometry.Find(param, track->GetTime(), track->GetTimeError(), tofHitInd, trackLength); + fTofGeometry.Find(param, track->GetLastHitTime(), track->GetLastHitTimeError(), tofHitInd, trackLength); globalTrack->SetTofHitIndex(tofHitInd); globalTrack->SetLength(stsTrackLength + trackLength); globalTrack->SetParamFirst(track->GetParamFirst()); -- GitLab