X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ITS%2FAliITStrackerSA.cxx;h=1e693dc957fd68167f1329663466dfedf97d09a6;hb=57c7500a9a41963917316cbedce38f84432207a0;hp=3d7c0d09dacbfbe11618717358f28ecd476ba734;hpb=8f1ccf804ee90d3904ecb693767924b875f3bd59;p=u%2Fmrichter%2FAliRoot.git diff --git a/ITS/AliITStrackerSA.cxx b/ITS/AliITStrackerSA.cxx index 3d7c0d09dac..1e693dc957f 100644 --- a/ITS/AliITStrackerSA.cxx +++ b/ITS/AliITStrackerSA.cxx @@ -277,7 +277,13 @@ Int_t AliITStrackerSA::Clusters2Tracks(AliESDEvent *event){ else { AliDebug(1,"Stand Alone flag set: doing tracking in ITS alone\n"); } - if(!rc) rc=FindTracks(event); + if(!rc){ + rc=FindTracks(event,kFALSE); + if(AliITSReconstructor::GetRecoParam()->GetSAUseAllClusters()==kTRUE) { + rc=FindTracks(event,kTRUE); + } + } + return rc; } @@ -334,7 +340,7 @@ void AliITStrackerSA::ResetForFinding(){ //______________________________________________________________________ -Int_t AliITStrackerSA::FindTracks(AliESDEvent* event){ +Int_t AliITStrackerSA::FindTracks(AliESDEvent* event, Bool_t useAllClusters){ // Track finder using the ESD object @@ -347,7 +353,7 @@ Int_t AliITStrackerSA::FindTracks(AliESDEvent* event){ } //Reads event and mark clusters of traks already found, with flag kITSin Int_t nentr=event->GetNumberOfTracks(); - if(AliITSReconstructor::GetRecoParam()->GetSAUseAllClusters()==kFALSE) { + if(!useAllClusters) { while (nentr--) { AliESDtrack *track=event->GetTrack(nentr); if ((track->GetStatus()&AliESDtrack::kITSin) == AliESDtrack::kITSin){ @@ -359,6 +365,18 @@ Int_t AliITStrackerSA::FindTracks(AliESDEvent* event){ } } } + }else{ + while (nentr--) { + AliESDtrack *track=event->GetTrack(nentr); + if ((track->GetStatus()&AliESDtrack::kITSin) == AliESDtrack::kITSin){ + Int_t idx[12]; + Int_t ncl = track->GetITSclusters(idx); + for(Int_t k=0;kResetBit(kSAflag); + } + } + } } //Get primary vertex Double_t primaryVertex[3]; @@ -387,10 +405,18 @@ Int_t AliITStrackerSA::FindTracks(AliESDEvent* event){ } } dmar[i]=0; - delete fCluLayer[i]; - fCluLayer[i] = new TClonesArray("AliITSRecPoint",nclusters[i]); - delete fCluCoord[i]; - fCluCoord[i] = new TClonesArray("AliITSclusterTable",nclusters[i]); + if(!fCluLayer[i]){ + fCluLayer[i] = new TClonesArray("AliITSRecPoint",nclusters[i]); + }else{ + fCluLayer[i]->Delete(); + fCluLayer[i]->Expand(nclusters[i]); + } + if(!fCluCoord[i]){ + fCluCoord[i] = new TClonesArray("AliITSclusterTable",nclusters[i]); + }else{ + fCluCoord[i]->Delete(); + fCluCoord[i]->Expand(nclusters[i]); + } } for(Int_t ilay=0;ilayGetNumberOfClusters())); - StoreTrack(tr2,event); + StoreTrack(tr2,event,useAllClusters); ntrack++; } @@ -534,10 +563,13 @@ Int_t AliITStrackerSA::FindTracks(AliESDEvent* event){ AliDebug(2,Form("---NPOINTS: %d; MAP: %d %d %d %d %d %d\n",layOK,nClusLay[0],nClusLay[1],nClusLay[2],nClusLay[3],nClusLay[4],nClusLay[5])); AliITStrackV2* tr2 = 0; tr2 = FitTrack(trs,primaryVertex); - if(!tr2) continue; + if(!tr2){ + delete trs; + continue; + } AliDebug(2,Form("---NPOINTS fit: %d\n",tr2->GetNumberOfClusters())); - StoreTrack(tr2,event); + StoreTrack(tr2,event,useAllClusters); ntrack++; } @@ -596,10 +628,13 @@ Int_t AliITStrackerSA::FindTracks(AliESDEvent* event){ AliITStrackV2* tr2 = 0; Bool_t onePoint = kTRUE; tr2 = FitTrack(trs,primaryVertex,onePoint); - if(!tr2) continue; + if(!tr2){ + delete trs; + continue; + } AliDebug(2,Form("----NPOINTS fit: %d\n",tr2->GetNumberOfClusters())); - StoreTrack(tr2,event); + StoreTrack(tr2,event,useAllClusters); ntrack++; } @@ -611,7 +646,8 @@ Int_t AliITStrackerSA::FindTracks(AliESDEvent* event){ } //end loop on innLay } // end search 1-point tracks - Info("FindTracks","Number of found tracks: %d",event->GetNumberOfTracks()); + if(!useAllClusters) AliInfo(Form("Number of found tracks: %d",event->GetNumberOfTracks())); + ResetForFinding(); return 0; } @@ -629,15 +665,11 @@ AliITStrackV2* AliITStrackerSA::FitTrack(AliITStrackSA* tr,Double_t *primaryVert static Int_t clind[AliITSgeomTGeo::kNLayers][kMaxClu]; static Int_t clmark[AliITSgeomTGeo::kNLayers][kMaxClu]; - static Int_t nnn[AliITSgeomTGeo::kNLayers]; - static Int_t kkk[AliITSgeomTGeo::kNLayers]; static Int_t end[AliITSgeomTGeo::kNLayers]; static AliITSRecPoint *listlayer[AliITSgeomTGeo::kNLayers][kMaxClu]; for(Int_t i=0;i> 28; Int_t nInLay=end[lay]; listlayer[lay][nInLay]=cl; - Int_t ind=nnn[lay]; - clind[lay][ind]=index; + clind[lay][nInLay]=index; end[lay]++; } for(Int_t nlay=0;nlayGetNumberOfMarked(nlay);ncl++){ Int_t mark = tr->GetClusterMark(nlay,ncl); - Int_t ind=kkk[nlay]; - clmark[nlay][ind]=mark; + clmark[nlay][ncl]=mark; } } @@ -908,13 +938,14 @@ AliITStrackV2* AliITStrackerSA::FitTrack(AliITStrackSA* tr,Double_t *primaryVert } //_______________________________________________________ -void AliITStrackerSA::StoreTrack(AliITStrackV2 *t,AliESDEvent *event) const +void AliITStrackerSA::StoreTrack(AliITStrackV2 *t,AliESDEvent *event, Bool_t pureSA) const { // // Add new track to the ESD // AliESDtrack outtrack; outtrack.UpdateTrackParams(t,AliESDtrack::kITSin); + if(pureSA) outtrack.SetStatus(AliESDtrack::kITSpureSA); for(Int_t i=0;i<12;i++) { outtrack.SetITSModuleIndex(i,t->GetModuleIndex(i)); } @@ -1286,4 +1317,3 @@ void AliITStrackerSA::GetCoorErrors(AliITSRecPoint* cl,Float_t &sx,Float_t &sy, sz = TMath::Sqrt(cl->GetSigmaZ2()); */ } -