From f3e1f0b800a213cdd7bc70aa53f3b30fe7a336b0 Mon Sep 17 00:00:00 2001 From: "se.gorbunov" <se.gorbunov@gsi.de> Date: Mon, 27 Nov 2023 12:40:14 +0000 Subject: [PATCH] StsTrack: hide confusing methods of the base class; bugfixes --- analysis/PWGCHA/jpsi/CbmAnaJpsiTask.cxx | 2 +- .../conversion/CbmAnaConversion.cxx | 2 +- analysis/PWGDIL/dielectron/lmvm/LmvmTask.cxx | 2 +- .../PWGDIL/dimuon/CbmAnaDimuonAnalysis.cxx | 2 +- analysis/PWGHAD/hadron/CbmHadronAnalysis.cxx | 2 +- .../CbmStsTracksConverter.cxx | 2 +- core/base/CbmMatchRecoToMC.cxx | 4 ++-- core/data/sts/CbmStsTrack.h | 17 ++++++++++++-- reco/KF/CbmKFParticleFinder.cxx | 2 +- reco/KF/CbmKFParticleFinderPID.cxx | 2 +- reco/KF/Interface/CbmPVFinderKF.cxx | 4 ++-- .../KF/Interface/CbmStsFitPerformanceTask.cxx | 4 ++-- reco/KF/Interface/CbmStsKFTrackFitter.cxx | 4 ++-- reco/KF/KFQA/CbmKFTrackQa.cxx | 2 +- reco/KF/ParticleFitter/CbmL1PFFitter.cxx | 10 ++++---- reco/L1/CbmCaTimeSliceReader.cxx | 2 +- .../CbmL1GlobalTrackFinder.cxx | 2 +- .../OffLineInterface/CbmL1StsTrackFinder.cxx | 2 +- reco/detectors/sts/CbmStsTrackFinderIdeal.cxx | 2 +- reco/detectors/sts/qa/CbmStsFindTracksQa.cxx | 2 +- reco/global/CbmFitGlobalTracksQa.cxx | 8 +++---- reco/littrack/cbm/qa/fit/CbmLitFitQa.cxx | 4 ++-- .../cbm/reco/CbmLitFindGlobalTracks.cxx | 2 +- reco/qa/CbmTrackingTrdQa.cxx | 2 +- reco/tracking/global/CbmGlobalTrackingQa.cxx | 4 ++-- .../tracking/global/CbmGlobalTrackingTask.cxx | 23 ++++++++++++++----- 26 files changed, 69 insertions(+), 45 deletions(-) diff --git a/analysis/PWGCHA/jpsi/CbmAnaJpsiTask.cxx b/analysis/PWGCHA/jpsi/CbmAnaJpsiTask.cxx index 7601b87ad9..4f9d66c189 100644 --- a/analysis/PWGCHA/jpsi/CbmAnaJpsiTask.cxx +++ b/analysis/PWGCHA/jpsi/CbmAnaJpsiTask.cxx @@ -626,7 +626,7 @@ void CbmAnaJpsiTask::IsRecoTrackAccepted(CbmAnaJpsiCandidate* cand) { CbmStsTrack* stsTrack = (CbmStsTrack*) fStsTracks->At(cand->fStsInd); if (stsTrack == NULL) cand->fIsRecoTrackAccepted = false; - int nStsHits = stsTrack->GetNofHits(); + int nStsHits = stsTrack->GetNofStsHits(); int nMvdHits = stsTrack->GetNofMvdHits(); CbmRichRing* richRing = (CbmRichRing*) fRichRings->At(cand->fRichInd); if (richRing == NULL) cand->fIsRecoTrackAccepted = false; diff --git a/analysis/PWGDIL/dielectron/conversion/CbmAnaConversion.cxx b/analysis/PWGDIL/dielectron/conversion/CbmAnaConversion.cxx index ff51ebf47c..716e04fd60 100644 --- a/analysis/PWGDIL/dielectron/conversion/CbmAnaConversion.cxx +++ b/analysis/PWGDIL/dielectron/conversion/CbmAnaConversion.cxx @@ -1032,7 +1032,7 @@ void CbmAnaConversion::Exec(Option_t*) fhPi0_Reco_ndf_vs_startvertex->Fill(result_ndf_electron, startvertexZ); fhPi0_Reco_startvertex_vs_chi->Fill(startvertexZ, result_chi_electron); - Double_t nofhits_sts = stsTrack->GetNofHits(); + Double_t nofhits_sts = stsTrack->GetTotalNofHits(); fhPi0_Reco_startvertex_vs_nofhits->Fill(startvertexZ, nofhits_sts); fhPi0_Reco_noRichInd_chi_vs_momentum->Fill(refittedMomentum_electron.Mag(), result_chi_electron); diff --git a/analysis/PWGDIL/dielectron/lmvm/LmvmTask.cxx b/analysis/PWGDIL/dielectron/lmvm/LmvmTask.cxx index 68eb961bd8..54086def80 100755 --- a/analysis/PWGDIL/dielectron/lmvm/LmvmTask.cxx +++ b/analysis/PWGDIL/dielectron/lmvm/LmvmTask.cxx @@ -1832,7 +1832,7 @@ void LmvmTask::DifferenceSignalAndBg(const LmvmCand& cand) CbmStsTrack* stsTrack = static_cast<CbmStsTrack*>(fStsTracks->At(cand.fStsInd)); if (stsTrack == nullptr) return; - fH.FillH1("hNofStsHits", cand.fMcSrc, stsTrack->GetNofHits(), fW); + fH.FillH1("hNofStsHits", cand.fMcSrc, stsTrack->GetNofStsHits(), fW); if (fUseMvd) { double mvd1x = 0., mvd1y = 0., mvd2x = 0., mvd2y = 0.; diff --git a/analysis/PWGDIL/dimuon/CbmAnaDimuonAnalysis.cxx b/analysis/PWGDIL/dimuon/CbmAnaDimuonAnalysis.cxx index bd4ace66b3..0573d4cc11 100644 --- a/analysis/PWGDIL/dimuon/CbmAnaDimuonAnalysis.cxx +++ b/analysis/PWGDIL/dimuon/CbmAnaDimuonAnalysis.cxx @@ -637,7 +637,7 @@ void CbmAnaDimuonAnalysis::Exec(Option_t* /*opt*/) CbmStsTrack* stsTrack = (CbmStsTrack*) fStsTracks->At(iStsTrack); if (!stsTrack) continue; - Int_t nStsHits = stsTrack->GetNofHits(); + Int_t nStsHits = stsTrack->GetTotalNofHits(); Double_t chi2vertex = fFitter->GetChiToVertex(stsTrack); Double_t chi2sts = 1000; if (stsTrack->GetNDF() != 0) chi2sts = stsTrack->GetChiSq() / stsTrack->GetNDF(); diff --git a/analysis/PWGHAD/hadron/CbmHadronAnalysis.cxx b/analysis/PWGHAD/hadron/CbmHadronAnalysis.cxx index 73246290c1..b1da44180d 100644 --- a/analysis/PWGHAD/hadron/CbmHadronAnalysis.cxx +++ b/analysis/PWGHAD/hadron/CbmHadronAnalysis.cxx @@ -2999,7 +2999,7 @@ void CbmHadronAnalysis::ExecEvent(Option_t*) //if(NStsHits<8) continue; // nh-debugging if (fDigiMan->IsMatchPresent(ECbmModuleId::kSts)) for (Int_t ih = 0; ih < NStsHits; ih++) { - Int_t iHind = StsTrack->GetHitIndex(ih); + Int_t iHind = StsTrack->GetStsHitIndex(ih); LOG(debug1) << " inspect STS track " << s << ", hit " << ih << ", hitindex " << iHind; if (NULL == fStsHits) LOG(fatal) << " No STS Hits available "; diff --git a/analysis/common/analysis_tree_converter/CbmStsTracksConverter.cxx b/analysis/common/analysis_tree_converter/CbmStsTracksConverter.cxx index ab60022c16..7af3a55011 100644 --- a/analysis/common/analysis_tree_converter/CbmStsTracksConverter.cxx +++ b/analysis/common/analysis_tree_converter/CbmStsTracksConverter.cxx @@ -169,7 +169,7 @@ void CbmStsTracksConverter::ReadVertexTracks(CbmEvent* event) track.SetField(int(sts_track->GetNdfTime()), indf_time_); track.SetField(float(sts_track->GetChiSq()), ichi2_); track.SetField(float(sts_track->GetChiSqTime()), ichi2_time_); - track.SetField(int(sts_track->GetNofHits()), inhits_); + track.SetField(int(sts_track->GetTotalNofHits()), inhits_); track.SetField(float(trackParamFirst->GetX() - cbm_prim_vertex_->GetX()), idcax_); track.SetField(float(trackParamFirst->GetY() - cbm_prim_vertex_->GetY()), idcax_ + 1); track.SetField(float(trackParamFirst->GetZ() - cbm_prim_vertex_->GetZ()), idcax_ + 2); diff --git a/core/base/CbmMatchRecoToMC.cxx b/core/base/CbmMatchRecoToMC.cxx index 40fa696ab1..528651ebe9 100644 --- a/core/base/CbmMatchRecoToMC.cxx +++ b/core/base/CbmMatchRecoToMC.cxx @@ -745,7 +745,7 @@ void CbmMatchRecoToMC::MatchStsTracks(const TClonesArray* mvdHitMatches, const T Int_t nofStsHits = track->GetNofStsHits(); for (Int_t iHit = 0; iHit < nofStsHits; iHit++) { - const CbmMatch* hitMatch = static_cast<CbmMatch*>(stsHitMatches->At(track->GetHitIndex(iHit))); + const CbmMatch* hitMatch = static_cast<CbmMatch*>(stsHitMatches->At(track->GetStsHitIndex(iHit))); Int_t nofLinks = hitMatch->GetNofLinks(); for (Int_t iLink = 0; iLink < nofLinks; iLink++) { const CbmLink& link = hitMatch->GetLink(iLink); @@ -786,7 +786,7 @@ void CbmMatchRecoToMC::MatchStsTracks(const TClonesArray* mvdHitMatches, const T Int_t trueCounter = trackMatch->GetNofTrueHits(); Int_t wrongCounter = trackMatch->GetNofWrongHits(); for (Int_t iHit = 0; iHit < nofStsHits; iHit++) { - const CbmMatch* hitMatch = static_cast<CbmMatch*>(stsHitMatches->At(track->GetHitIndex(iHit))); + const CbmMatch* hitMatch = static_cast<CbmMatch*>(stsHitMatches->At(track->GetStsHitIndex(iHit))); Int_t nofLinks = hitMatch->GetNofLinks(); Bool_t hasTrue = false; for (Int_t iLink = 0; iLink < nofLinks; iLink++) { diff --git a/core/data/sts/CbmStsTrack.h b/core/data/sts/CbmStsTrack.h index 0a4887d91b..76f34d40d1 100644 --- a/core/data/sts/CbmStsTrack.h +++ b/core/data/sts/CbmStsTrack.h @@ -78,7 +78,7 @@ public: /** Total number of hits ** @return Sum of numbers of STS and MVD hits **/ - virtual int32_t GetNofHits() const { return (GetNofStsHits() + GetNofMvdHits()); } + virtual int32_t GetTotalNofHits() const { return (GetNofStsHits() + GetNofMvdHits()); } /** Number of MVD hits @@ -101,7 +101,7 @@ public: int32_t GetStsHitIndex(int32_t iHit) const { assert(iHit < GetNofStsHits()); - return GetHitIndex(iHit); + return CbmTrack::GetHitIndex(iHit); } @@ -138,6 +138,19 @@ private: /** median dE/dx [e/300µm] **/ float fELoss {-1.f}; + /** Hide this method of the base class because it is confusing. It is valid only for STS hits + * use GetStsHitIndex() or GetMvdHitIndex() **/ + using CbmTrack::GetHitIndex; + + /** Hide this method of the base class because it is often mixed with GetNofStsHits(). + * Use GetTotalNofHits() instead. **/ + using CbmTrack::GetNofHits; + + /** Hide this method of the base class because Mvd hits must be stored in a separate vector fMvdHitIndex. + * use AddStsHit() and AddMvdHit() instead. + **/ + using CbmTrack::AddHit; + ClassDef(CbmStsTrack, 3); }; diff --git a/reco/KF/CbmKFParticleFinder.cxx b/reco/KF/CbmKFParticleFinder.cxx index ebc636349d..64f847de83 100644 --- a/reco/KF/CbmKFParticleFinder.cxx +++ b/reco/KF/CbmKFParticleFinder.cxx @@ -193,7 +193,7 @@ void CbmKFParticleFinder::Exec(Option_t* /*opt*/) for (Int_t j = 0; j <= i; j++, iCov++) V[iCov] = parameters->GetCovariance(i, j); - if (stsTrack->GetNofHits() < 3) continue; + if (stsTrack->GetTotalNofHits() < 3) continue; bool ok = 1; ok = ok && std::isfinite(parameters->GetX()); diff --git a/reco/KF/CbmKFParticleFinderPID.cxx b/reco/KF/CbmKFParticleFinderPID.cxx index 5a8a731ccd..8376cbeb7e 100644 --- a/reco/KF/CbmKFParticleFinderPID.cxx +++ b/reco/KF/CbmKFParticleFinderPID.cxx @@ -494,7 +494,7 @@ void CbmKFParticleFinderPID::SetRecoPID() if (muchTrack) { if ((cbmStsTrack->GetChiSq() / cbmStsTrack->GetNDF()) < fMuchCutsFloat[0] && (muchTrack->GetChiSq() / muchTrack->GetNDF()) < fMuchCutsFloat[1] - && cbmStsTrack->GetNofHits() >= fMuchCutsInt[0]) { + && cbmStsTrack->GetTotalNofHits() >= fMuchCutsInt[0]) { if (muchTrack->GetNofHits() >= fMuchCutsInt[1]) isMuon = 2; if (muchTrack->GetNofHits() >= fMuchCutsInt[2]) isMuon = 1; } diff --git a/reco/KF/Interface/CbmPVFinderKF.cxx b/reco/KF/Interface/CbmPVFinderKF.cxx index 42490a3bf5..48a75b5b80 100644 --- a/reco/KF/Interface/CbmPVFinderKF.cxx +++ b/reco/KF/Interface/CbmPVFinderKF.cxx @@ -24,7 +24,7 @@ ClassImp(CbmPVFinderKF) CbmKFTrack* CloneArray = new CbmKFTrack[NTracks]; for (Int_t i = 0; i < NTracks; i++) { CbmStsTrack* st = (CbmStsTrack*) tracks->At(i); - Int_t NHits = st->GetNofHits(); + Int_t NHits = st->GetTotalNofHits(); if (NHits < 4) continue; if (st->GetFlag()) continue; if (st->GetChiSq() < 0. || st->GetChiSq() > 3.5 * 3.5 * st->GetNDF()) continue; @@ -59,7 +59,7 @@ Int_t CbmPVFinderKF::FindEventVertex(CbmEvent* event, TClonesArray* tracks) for (Int_t iTrack = 0; iTrack < nTracks; iTrack++) { Int_t trackIndex = event->GetIndex(ECbmDataType::kStsTrack, iTrack); CbmStsTrack* track = (CbmStsTrack*) tracks->At(trackIndex); - Int_t nHits = track->GetNofHits(); + Int_t nHits = track->GetTotalNofHits(); if (nHits < 4) continue; // use only tracks with at least 4 hits if (track->GetFlag()) continue; // do not use suspicious tracks if (track->GetChiSq() < 0. // use only good-quality tracks diff --git a/reco/KF/Interface/CbmStsFitPerformanceTask.cxx b/reco/KF/Interface/CbmStsFitPerformanceTask.cxx index 33f46f38f6..1e9b07df2b 100644 --- a/reco/KF/Interface/CbmStsFitPerformanceTask.cxx +++ b/reco/KF/Interface/CbmStsFitPerformanceTask.cxx @@ -564,7 +564,7 @@ void CbmStsFitPerformanceTask::Exec(Option_t* /*option*/) // Get MC points; vector<CbmStsPoint*> vPoints; for (Int_t i = 0; i < track->GetNofStsHits(); i++) { - Int_t hitID = track->GetHitIndex(i); + Int_t hitID = track->GetStsHitIndex(i); if (hitID < 0) continue; CbmStsHit* hit = (CbmStsHit*) fStsHitArray->At(hitID); if (!hit) continue; @@ -976,7 +976,7 @@ Bool_t CbmStsFitPerformanceTask::IsLong(CbmStsTrack* track) Int_t stmin = 1000, stmax = -1000; Int_t st, iHit, hitID; for (iHit = 0; iHit < nHits; iHit++) { - hitID = track->GetHitIndex(iHit); + hitID = track->GetStsHitIndex(iHit); st = ((CbmStsHit*) fStsHitArray->At(hitID))->GetAddress(); if (st < stmin) stmin = st; if (st > stmax) stmax = st; diff --git a/reco/KF/Interface/CbmStsKFTrackFitter.cxx b/reco/KF/Interface/CbmStsKFTrackFitter.cxx index 2cadfb379d..4373310d6a 100644 --- a/reco/KF/Interface/CbmStsKFTrackFitter.cxx +++ b/reco/KF/Interface/CbmStsKFTrackFitter.cxx @@ -60,7 +60,7 @@ void CbmStsKFTrackFitter::SetKFHits(CbmKFTrack& T, CbmStsTrack* track) if (!fIsInitialised) Init(); - Int_t NStsHits = (fStsHitsArray) ? track->GetNofHits() : 0; + Int_t NStsHits = (fStsHitsArray) ? track->GetNofStsHits() : 0; Int_t NMvdHits = (fMvdHitsArray) ? track->GetNofMvdHits() : 0; fHits.resize(NMvdHits + NStsHits); @@ -73,7 +73,7 @@ void CbmStsKFTrackFitter::SetKFHits(CbmKFTrack& T, CbmStsTrack* track) } if (NStsHits > 0 && fStsHitsArray) { for (Int_t i = 0; i < NStsHits; i++) { - Int_t j = track->GetHitIndex(i); + Int_t j = track->GetStsHitIndex(i); fHits[NMvdHits + i].Create(reinterpret_cast<CbmStsHit*>(fStsHitsArray->At(j))); T.fHits.push_back(&(fHits[NMvdHits + i])); } diff --git a/reco/KF/KFQA/CbmKFTrackQa.cxx b/reco/KF/KFQA/CbmKFTrackQa.cxx index fb55d21039..94445636d2 100644 --- a/reco/KF/KFQA/CbmKFTrackQa.cxx +++ b/reco/KF/KFQA/CbmKFTrackQa.cxx @@ -538,7 +538,7 @@ void CbmKFTrackQa::Exec(Option_t* /*opt*/) Int_t stsTrackIndex = globalTrack->GetStsTrackIndex(); //for STS histos CbmStsTrack* cbmStsTrack = (CbmStsTrack*) fStsTrackArray->At(stsTrackIndex); double stsHistoData[NStsHisto] = { - (double) cbmStsTrack->GetNofHits(), //NHits + (double) cbmStsTrack->GetTotalNofHits(), //NHits cbmStsTrack->GetChiSq() / cbmStsTrack->GetNDF(), //Chi2/NDF TMath::Prob(cbmStsTrack->GetChiSq(), cbmStsTrack->GetNDF()) //prob }; diff --git a/reco/KF/ParticleFitter/CbmL1PFFitter.cxx b/reco/KF/ParticleFitter/CbmL1PFFitter.cxx index 0b42618794..3c9c01e521 100644 --- a/reco/KF/ParticleFitter/CbmL1PFFitter.cxx +++ b/reco/KF/ParticleFitter/CbmL1PFFitter.cxx @@ -275,7 +275,7 @@ void CbmL1PFFitter::Fit(std::vector<CbmStsTrack>& Tracks, const std::vector<CbmM hit = mvdHit; } else { - int hitIndex = tr[iVec]->GetHitIndex(i - nHitsTrackMvd); + int hitIndex = tr[iVec]->GetStsHitIndex(i - nHitsTrackMvd); const CbmStsHit* stsHit = &(vStsHits[hitIndex]); ista = GetStsStationIndex(stsHit); if (ista < 0) continue; @@ -554,7 +554,7 @@ void CbmL1PFFitter::GetChiToVertex(vector<CbmStsTrack>& Tracks, vector<PFFieldRe } else { if (!fStsHitArray) continue; - int hitIndex = tr[iVec]->GetHitIndex(iH - nHitsTrackMvd); + int hitIndex = tr[iVec]->GetStsHitIndex(iH - nHitsTrackMvd); const CbmStsHit* hit = dynamic_cast<const CbmStsHit*>(fStsHitArray->At(hitIndex)); posx = hit->GetX(); @@ -682,7 +682,7 @@ void CbmL1PFFitter::CalculateFieldRegion(vector<CbmStsTrack>& Tracks, vector<PFF } else { if (!fStsHitArray) continue; - int hitIndex = tr[iVec]->GetHitIndex(iH - nHitsTrackMvd); + int hitIndex = tr[iVec]->GetStsHitIndex(iH - nHitsTrackMvd); const CbmStsHit* hit = dynamic_cast<const CbmStsHit*>(fStsHitArray->At(hitIndex)); posx = hit->GetX(); @@ -738,7 +738,7 @@ void CbmL1PFFitter::CalculateFieldRegionAtLastPoint(vector<CbmStsTrack>& Tracks, for (int iVec = 0; iVec < nTracks_SIMD; iVec++) { int nHitsTrackMvd = tr[iVec]->GetNofMvdHits(); - int nHits = tr[iVec]->GetNofHits(); + int nHits = tr[iVec]->GetTotalNofHits(); for (int iH = 0; iH < 3; iH++) { float posx = 0.f, posy = 0.f, posz = 0.f; @@ -756,7 +756,7 @@ void CbmL1PFFitter::CalculateFieldRegionAtLastPoint(vector<CbmStsTrack>& Tracks, } else { if (!fStsHitArray) continue; - int hitIndex = tr[iVec]->GetHitIndex(hitNumber - nHitsTrackMvd); + int hitIndex = tr[iVec]->GetStsHitIndex(hitNumber - nHitsTrackMvd); const CbmStsHit* hit = dynamic_cast<const CbmStsHit*>(fStsHitArray->At(hitIndex)); posx = hit->GetX(); diff --git a/reco/L1/CbmCaTimeSliceReader.cxx b/reco/L1/CbmCaTimeSliceReader.cxx index f50c4eb1c4..1e2d83e23e 100644 --- a/reco/L1/CbmCaTimeSliceReader.cxx +++ b/reco/L1/CbmCaTimeSliceReader.cxx @@ -223,7 +223,7 @@ void TimeSliceReader::ReadRecoTracks() track.TLast.Time() = pInputTrack->GetLastHitTime(); track.TLast.C55() = pInputTrack->GetLastHitTimeError(); track.Hits.clear(); - track.Hits.reserve(pInputTrack->GetNofHits()); + track.Hits.reserve(pInputTrack->GetTotalNofHits()); for (int iH = 0; iH < pInputTrack->GetNofMvdHits(); ++iH) { int iHext = pInputTrack->GetMvdHitIndex(iH); int iHint = fvvHitExtToIntIndexMap[ca::EDetectorID::kMvd][iHext]; diff --git a/reco/L1/OffLineInterface/CbmL1GlobalTrackFinder.cxx b/reco/L1/OffLineInterface/CbmL1GlobalTrackFinder.cxx index 2cc29cef1f..6fef8e32b9 100644 --- a/reco/L1/OffLineInterface/CbmL1GlobalTrackFinder.cxx +++ b/reco/L1/OffLineInterface/CbmL1GlobalTrackFinder.cxx @@ -177,7 +177,7 @@ void CbmL1GlobalTrackFinder::CbmL1TrackToCbmStsTrack(CbmL1Track l1track, CbmStsT track->AddMvdHit(h.hitId); } else if (h.detId == 1) { - track->AddHit(h.hitId, kSTSHIT); + track->AddStsHit(h.hitId); } } diff --git a/reco/L1/OffLineInterface/CbmL1StsTrackFinder.cxx b/reco/L1/OffLineInterface/CbmL1StsTrackFinder.cxx index 618529d110..7d05c41994 100644 --- a/reco/L1/OffLineInterface/CbmL1StsTrackFinder.cxx +++ b/reco/L1/OffLineInterface/CbmL1StsTrackFinder.cxx @@ -93,7 +93,7 @@ Int_t CbmL1StsTrackFinder::CopyL1Tracks(CbmEvent* event) t->AddMvdHit(h.hitId); } else if (h.detId == 1) { - t->AddHit(h.hitId, kSTSHIT); + t->AddStsHit(h.hitId); } } } diff --git a/reco/detectors/sts/CbmStsTrackFinderIdeal.cxx b/reco/detectors/sts/CbmStsTrackFinderIdeal.cxx index d6f5375c15..9a89b4f462 100644 --- a/reco/detectors/sts/CbmStsTrackFinderIdeal.cxx +++ b/reco/detectors/sts/CbmStsTrackFinderIdeal.cxx @@ -215,7 +215,7 @@ Int_t CbmStsTrackFinderIdeal::DoFind() success = kFALSE; continue; } - pTrck->AddHit(iHit, kSTSHIT); + pTrck->AddStsHit(iHit); if (fVerbose > 2) cout << "Sts Hit " << iHit << " from StsPoint " << ptIndex << " (MCTrack " << mcTrackIndex << ") added to StsTrack " << trackIndex << endl; diff --git a/reco/detectors/sts/qa/CbmStsFindTracksQa.cxx b/reco/detectors/sts/qa/CbmStsFindTracksQa.cxx index 006ad00389..599a6f6091 100644 --- a/reco/detectors/sts/qa/CbmStsFindTracksQa.cxx +++ b/reco/detectors/sts/qa/CbmStsFindTracksQa.cxx @@ -739,7 +739,7 @@ void CbmStsFindTracksQa::FillMatchMap(Int_t& nRec, Int_t& nGhosts, Int_t& nClone // --- StsTrack CbmStsTrack* stsTrack = (CbmStsTrack*) fStsTracks->At(iTrack); assert(stsTrack); - Int_t nHits = stsTrack->GetNofHits(); + Int_t nHits = stsTrack->GetTotalNofHits(); // --- TrackMatch diff --git a/reco/global/CbmFitGlobalTracksQa.cxx b/reco/global/CbmFitGlobalTracksQa.cxx index 48dab99d2e..00b1b5a64a 100644 --- a/reco/global/CbmFitGlobalTracksQa.cxx +++ b/reco/global/CbmFitGlobalTracksQa.cxx @@ -213,8 +213,8 @@ void CbmFitGlobalTracksQa::Exec(Option_t*) stsTrack = (CbmStsTrack*) fArrayStsTrack->At(stsTrackIndex); if (NULL != stsTrack) { stsPointIndex = -1; - if (stsTrack->GetNofHits()) { - stsHitIndex = stsTrack->GetHitIndex(0); + if (stsTrack->GetNofStsHits()) { + stsHitIndex = stsTrack->GetStsHitIndex(0); stsHit = (CbmStsHit*) fArrayStsHit->At(stsHitIndex); if (NULL != stsHit) { stsPointIndex = stsHit->GetRefId(); } } @@ -327,8 +327,8 @@ void CbmFitGlobalTracksQa::Exec(Option_t*) stsTrack = (CbmStsTrack*) fArrayStsTrack->At(stsTrackIndex); if (NULL != stsTrack) { stsPointIndex = -1; - if (stsTrack->GetNofHits()) { - stsHitIndex = stsTrack->GetHitIndex(stsTrack->GetNofHits() - 1); + if (stsTrack->GetNofStsHits()) { + stsHitIndex = stsTrack->GetStsHitIndex(stsTrack->GetNofStsHits() - 1); stsHit = (CbmStsHit*) fArrayStsHit->At(stsHitIndex); if (NULL != stsHit) { stsPointIndex = stsHit->GetRefId(); } } diff --git a/reco/littrack/cbm/qa/fit/CbmLitFitQa.cxx b/reco/littrack/cbm/qa/fit/CbmLitFitQa.cxx index 54a03014fc..c46d92f019 100644 --- a/reco/littrack/cbm/qa/fit/CbmLitFitQa.cxx +++ b/reco/littrack/cbm/qa/fit/CbmLitFitQa.cxx @@ -203,7 +203,7 @@ void CbmLitFitQa::ProcessStsTrack(Int_t trackId) } } else { // first track parameters in STS - const CbmStsHit* firstHit = static_cast<const CbmStsHit*>(fStsHits->At(track->GetHitIndex(0))); + const CbmStsHit* firstHit = static_cast<const CbmStsHit*>(fStsHits->At(track->GetStsHitIndex(0))); Int_t firstStation = CbmStsSetup::Instance()->GetStationNumber(firstHit->GetAddress()) - 1; //firstHit->GetStationNr() - 1; // to start with 0 if (mcTrack.GetNofPointsAtStation(ECbmModuleId::kSts, firstStation) > 0) { @@ -214,7 +214,7 @@ void CbmLitFitQa::ProcessStsTrack(Int_t trackId) } // Fill histograms for last track parameters - const CbmStsHit* lastHit = static_cast<const CbmStsHit*>(fStsHits->At(track->GetHitIndex(nofStsHits - 1))); + const CbmStsHit* lastHit = static_cast<const CbmStsHit*>(fStsHits->At(track->GetStsHitIndex(nofStsHits - 1))); Int_t lastStation = CbmStsSetup::Instance()->GetStationNumber(lastHit->GetAddress()) - 1; //lastHit->GetStationNr() - 1; // to start with 0 if (mcTrack.GetNofPointsAtStation(ECbmModuleId::kSts, lastStation) > 0) { diff --git a/reco/littrack/cbm/reco/CbmLitFindGlobalTracks.cxx b/reco/littrack/cbm/reco/CbmLitFindGlobalTracks.cxx index ca7a8bcc48..31e90c6e7a 100644 --- a/reco/littrack/cbm/reco/CbmLitFindGlobalTracks.cxx +++ b/reco/littrack/cbm/reco/CbmLitFindGlobalTracks.cxx @@ -438,7 +438,7 @@ void CbmLitFindGlobalTracks::CalculateLength(CbmEvent* event) const CbmStsTrack* stsTrack = static_cast<const CbmStsTrack*>(fStsTracks->At(stsId)); Int_t nofStsHits = stsTrack->GetNofStsHits(); for (Int_t ih = 0; ih < nofStsHits; ih++) { - CbmStsHit* hit = (CbmStsHit*) fStsHits->At(stsTrack->GetHitIndex(ih)); + CbmStsHit* hit = (CbmStsHit*) fStsHits->At(stsTrack->GetStsHitIndex(ih)); X.push_back(hit->GetX()); Y.push_back(hit->GetY()); Z.push_back(hit->GetZ()); diff --git a/reco/qa/CbmTrackingTrdQa.cxx b/reco/qa/CbmTrackingTrdQa.cxx index 73b94fb4f4..b6710af045 100644 --- a/reco/qa/CbmTrackingTrdQa.cxx +++ b/reco/qa/CbmTrackingTrdQa.cxx @@ -285,7 +285,7 @@ void CbmTrackingTrdQa::Exec(Option_t* /*opt*/) if (stsTrackId >= 0) { CbmStsTrack* stsTrack = (CbmStsTrack*) fStsTracks->At(stsTrackId); assert(stsTrack); - nStsHits = stsTrack->GetNofHits(); + nStsHits = stsTrack->GetTotalNofHits(); } } diff --git a/reco/tracking/global/CbmGlobalTrackingQa.cxx b/reco/tracking/global/CbmGlobalTrackingQa.cxx index 70431bc9cd..ec224b513c 100644 --- a/reco/tracking/global/CbmGlobalTrackingQa.cxx +++ b/reco/tracking/global/CbmGlobalTrackingQa.cxx @@ -250,11 +250,11 @@ void CbmGlobalTrackingQa::Exec(Option_t*) const CbmStsTrack* stsTrack = static_cast<const CbmStsTrack*>(fStsTracks->At(stsTrackInd)); map<TrackData*, int> stsMCTracks; - int nofStsHits = stsTrack->GetNofHits(); + int nofStsHits = stsTrack->GetNofStsHits(); int nofStsMatches = 0; for (int j = 0; j < nofStsHits; ++j) { - int stsHitInd = stsTrack->GetHitIndex(j); + int stsHitInd = stsTrack->GetStsHitIndex(j); const CbmStsHit* stsHit = static_cast<const CbmStsHit*>(fStsHits->At(stsHitInd)); int frontClusterInd = stsHit->GetFrontClusterId(); int backClusterInd = stsHit->GetBackClusterId(); diff --git a/reco/tracking/global/CbmGlobalTrackingTask.cxx b/reco/tracking/global/CbmGlobalTrackingTask.cxx index 7a99c5d044..7d7217045c 100644 --- a/reco/tracking/global/CbmGlobalTrackingTask.cxx +++ b/reco/tracking/global/CbmGlobalTrackingTask.cxx @@ -160,6 +160,7 @@ void CbmGlobalTrackingTask::Exec(Option_t* /*opt*/) long endTime = ts.tv_sec * 1000000000 + ts.tv_nsec; fullDuration += endTime - beginTime; #endif //CBM_GLOBALTB_PRINT_PERF + } //for (int i = 0; i < nofStsTracks; ++i) } @@ -213,12 +214,19 @@ Double_t CbmGlobalTrackingTask::CalcStsTrackLength(const CbmStsTrack* track) z = paramFirst->GetZ(); const FairTrackParam* paramLast = track->GetParamLast(); - int nofHits = track->GetNofHits(); + int nofHits = track->GetTotalNofHits(); for (int i = 1; i < nofHits; ++i) { - Int_t hitInd = track->GetHitIndex(i); - HitType hitType = track->GetHitType(i); - CbmPixelHit* hit = static_cast<CbmPixelHit*>(kMVDHIT == hitType ? fMvdHits->At(hitInd) : fStsHits->At(hitInd)); + bool isMvdHit = true; + CbmPixelHit* hit = nullptr; + if (i < track->GetNofMvdHits()) { + isMvdHit = true; + hit = static_cast<CbmPixelHit*>(fMvdHits->At(track->GetMvdHitIndex(i))); + } + else { + isMvdHit = false; + hit = static_cast<CbmPixelHit*>(fStsHits->At(track->GetStsHitIndex(i - track->GetNofMvdHits()))); + } // Double_t nextX; (VF) not used // Double_t nextY; (VF) not used Double_t nextZ; @@ -248,9 +256,12 @@ Double_t CbmGlobalTrackingTask::CalcStsTrackLength(const CbmStsTrack* track) if (z == nextZ) { CbmKFStsHit stsKFHit; - if (kMVDHIT == hitType) stsKFHit.Create(static_cast<CbmMvdHit*>(hit)); - else + if (isMvdHit) { + stsKFHit.Create(static_cast<CbmMvdHit*>(hit)); + } + else { stsKFHit.Create(static_cast<CbmStsHit*>(hit)); + } Double_t qp0 = T[4]; stsKFHit.Filter(fKFTrack, kTRUE, qp0); -- GitLab