From 0e40ce6648542836d17e8ecb0b0b9de2c7e4a545 Mon Sep 17 00:00:00 2001 From: shahoian Date: Fri, 17 May 2013 17:10:57 +0000 Subject: [PATCH] Clean unfinished hypotheses before running afterburner passes --- ITS/UPGRADE/AliITSUTrackerGlo.cxx | 42 +++++++++++++++++++++++++------ ITS/UPGRADE/AliITSUTrackerGlo.h | 3 ++- 2 files changed, 37 insertions(+), 8 deletions(-) diff --git a/ITS/UPGRADE/AliITSUTrackerGlo.cxx b/ITS/UPGRADE/AliITSUTrackerGlo.cxx index 5349cfbe8b2..9a8c00053e4 100644 --- a/ITS/UPGRADE/AliITSUTrackerGlo.cxx +++ b/ITS/UPGRADE/AliITSUTrackerGlo.cxx @@ -217,7 +217,7 @@ Int_t AliITSUTrackerGlo::Clusters2Tracks(AliESDEvent *esdEv) float* trPt = esdTrPt.GetArray(); for (int itr=fNTracksESD;itr--;) { AliESDtrack* esdTr = esdEv->GetTrack(itr); - esdTr->SetStatus(AliESDtrack::kITSupg); + esdTr->SetStatus(AliESDtrack::kITSupg); // Flag all tracks as participating in the ITSup reco trPt[itr] = esdTr->Pt(); } Sort(fNTracksESD,trPt,esdTrackIndex,kTRUE); @@ -232,7 +232,8 @@ Int_t AliITSUTrackerGlo::Clusters2Tracks(AliESDEvent *esdEv) fCurrESDtrack = esdEv->GetTrack(trID); fCurrESDtrMClb = fCurrESDtrack->GetLabel(); // - if (!NeedToProlong(fCurrESDtrack)) continue; // are we interested in this track? + + if (!NeedToProlong(fCurrESDtrack,trID)) continue; // are we interested in this track? /* // if specific tracks should be checked, create a global array int wtc[] = {evITS*10000+trID, ...}; Bool_t dbg = kFALSE; @@ -241,9 +242,7 @@ Int_t AliITSUTrackerGlo::Clusters2Tracks(AliESDEvent *esdEv) for (int k=0;kIsOn(AliESDtrack::kITSin)) return kFALSE; + AliITSUTrackHyp* hyp = GetTrackHyp(esdID); // in case there is unfinished hypothesis from prev.pass, clean it + if (hyp) { + CleanHypothesis(hyp); + if (hyp->GetSkip()) return kFALSE; // need to skip this + return kTRUE; + } + // if (!esdTr->IsOn(AliESDtrack::kTPCin) || esdTr->IsOn(AliESDtrack::kTPCout) || esdTr->IsOn(AliESDtrack::kITSin) || @@ -1313,6 +1322,10 @@ void AliITSUTrackerGlo::UpdateESDTrack(AliITSUTrackHyp* hyp,Int_t flag) do { if (sd->IsFake()) clfake |= 0x1<GetLayerID(); } while ((sd=(AliITSUSeed*)sd->GetParent())); + // + // RS: Temporary set special flag for tracks from the afterburner + if (fCurrPassID>0) clfake |= 0x1<<7; + // esdTr->SetITSSharedMap(clfake); } break; @@ -1662,14 +1675,14 @@ void AliITSUTrackerGlo::SaveReducedHypothesesTree(AliITSUTrackHyp* dest) // remove those hypothesis seeds which dont lead to candidates at final layer // // 1st, flag the seeds to save - int lr0 = 0; + int lr0 = fCurrTrackCond->GetActiveLrInner(); for (int isd=0;isdGetNSeeds(lr0);isd++) { AliITSUSeed* seed = fCurrHyp->RemoveSeed(lr0,isd); if (!seed) continue; seed->FlagTree(AliITSUSeed::kSave); dest->AddSeed(seed,lr0); } - for (int ilr=1;ilrGetNSeeds(ilr); for (int isd=0;isdRemoveSeed(ilr,isd); @@ -1682,6 +1695,21 @@ void AliITSUTrackerGlo::SaveReducedHypothesesTree(AliITSUTrackHyp* dest) // AliInfo(Form("SeedsPool: %d, BookedUpTo: %d, free: %d",fSeedsPool.GetSize(),fSeedsPool.GetEntriesFast(),fNFreeSeeds)); } +//__________________________________________________________________ +void AliITSUTrackerGlo::CleanHypothesis(AliITSUTrackHyp* hyp) +{ + // clean hypothesis + hyp->SetWinner(0); + for (int ilr=0;ilrGetNSeeds(ilr); + for (int isd=0;isdRemoveSeed(ilr,isd); + if (!seed) continue; // already discarded or saved + MarkSeedFree(seed); + } + } +} + //__________________________________________________________________ void AliITSUTrackerGlo::FlagSplitClusters() { diff --git a/ITS/UPGRADE/AliITSUTrackerGlo.h b/ITS/UPGRADE/AliITSUTrackerGlo.h index 1913226978c..8d22395ac1e 100644 --- a/ITS/UPGRADE/AliITSUTrackerGlo.h +++ b/ITS/UPGRADE/AliITSUTrackerGlo.h @@ -61,7 +61,7 @@ class AliITSUTrackerGlo : public AliTracker { AliITSURecoDet* GetITSInterface() const {return fITS;} // //------------------------------------ - Bool_t NeedToProlong(AliESDtrack* estTr); + Bool_t NeedToProlong(AliESDtrack* estTr, Int_t esdID); void Init(AliITSUReconstructor* rec); void FindTrack(AliESDtrack* esdTr, Int_t esdID); void CreateDefaultTrackCond(); @@ -99,6 +99,7 @@ class AliITSUTrackerGlo : public AliTracker { void DeleteLastSeedFromPool() {fSeedsPool.RemoveLast();} void CheckClusterSharingConflicts(AliITSUTrackHyp* hyp); void SaveReducedHypothesesTree(AliITSUTrackHyp* dest); + void CleanHypothesis(AliITSUTrackHyp* hyp); void FinalizeHypotheses(); Bool_t FinalizeHypothesis(AliITSUTrackHyp* hyp); void UpdateESDTrack(AliITSUTrackHyp* hyp,Int_t flag); -- 2.39.3