]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITStrackerSA.cxx
set reco param on an event by event basis
[u/mrichter/AliRoot.git] / ITS / AliITStrackerSA.cxx
index 3e9c5ee4e40dfa5ec14e0d7065581ce5836fab65..8c307a43bc76b6e0d6ad370c28e3573c992a957c 100644 (file)
@@ -172,7 +172,7 @@ fCluCoord(0)
   fVertexer = vertexer;
  
 }
-
+/*
 //____________________________________________________________________________
 AliITStrackerSA::AliITStrackerSA(const AliITStrackerSA& tracker):AliITStrackerMI(),
 fPhiEstimate(tracker.fPhiEstimate),
@@ -223,7 +223,7 @@ AliITStrackerSA& AliITStrackerSA::operator=(const AliITStrackerSA& source){
   return *this;
  
 }
-
+*/
 //____________________________________________________________________________
 AliITStrackerSA::~AliITStrackerSA(){
   // destructor
@@ -491,6 +491,7 @@ Int_t AliITStrackerSA::FindTracks(AliESDEvent* event, Bool_t useAllClusters){
                                        &trs,primaryVertex[2],pflag);
          Int_t nextLay=theLay+seedStep;
          Bool_t goon=kTRUE;
+         if(nextLay<0 || nextLay == 6) goon = kFALSE;
          while(goon){
            kk++;
            nClusLay[kk] = SearchClusters(nextLay,fPhiWin[nloop],fLambdaWin[nloop],
@@ -812,6 +813,28 @@ void AliITStrackerSA::StoreTrack(AliITStrackV2 *t,AliESDEvent *event, Bool_t pur
   Double_t sdedx[4]={0.,0.,0.,0.};
   for(Int_t i=0; i<4; i++) sdedx[i]=t->GetSampledEdx(i);
   outtrack.SetITSdEdxSamples(sdedx);
+
+
+  if(AliITSReconstructor::GetRecoParam()->GetSAUsedEdxInfo()){
+    Double_t mom=t->P();
+    Double_t ppid[AliPID::kSPECIES];
+    for(Int_t isp=0;isp<AliPID::kSPECIES;isp++) ppid[isp]=0.;
+    ppid[AliPID::kPion]=1.;
+    if(mom<0.7){
+      Double_t truncmean=t->GetdEdx();
+      Int_t ide=fITSPid->GetParticleIdFromdEdxVsP(mom,truncmean,kTRUE);
+      if(ide==AliPID::kProton){
+       ppid[AliPID::kProton]=1.;
+       ppid[AliPID::kPion]=0.;
+      }
+      else if(ide==AliPID::kKaon){ 
+       ppid[AliPID::kKaon]=1.; 
+       ppid[AliPID::kPion]=0.;
+      }
+    }
+    outtrack.SetITSpid(ppid);
+    outtrack.SetESDpid(ppid);    
+  }
   event->AddTrack(&outtrack);
 
   return;
@@ -838,19 +861,24 @@ Int_t AliITStrackerSA::SearchClusters(Int_t layer,Double_t phiwindow,Double_t la
   }
 
  
+  Double_t phiExpect=fPhiEstimate;
+  Double_t lamExpect=fLambdac;
+
   Int_t ncl = fCluLayer[layer]->GetEntriesFast();
   for (Int_t index=0; index<ncl; index++) {
     AliITSRecPoint *c = (AliITSRecPoint*)fCluLayer[layer]->UncheckedAt(index);
     if (!c) continue;
-    if (c->GetQ()<=0) continue;
-    if(layer>1 && c->GetQ()<=fMinQ) continue;
     
     AliITSclusterTable* arr = (AliITSclusterTable*)GetClusterCoord(layer,index);
-    Double_t phi = arr->GetPhi();
-    if (TMath::Abs(phi-fPhiEstimate)>phiwindow) continue;
-    
+
     Double_t lambda = arr->GetLambda();
-    if (TMath::Abs(lambda-fLambdac)>lambdawindow) continue;
+    if (TMath::Abs(lambda-lamExpect)>lambdawindow) continue;
+
+    Double_t phi = arr->GetPhi();
+    Double_t deltaPhi = phi-phiExpect;
+    if(deltaPhi>TMath::Pi()) deltaPhi-=2*TMath::Pi();
+    else if(deltaPhi<-TMath::Pi()) deltaPhi+=2*TMath::Pi();
+    if (TMath::Abs(deltaPhi)>phiwindow) continue;
     
     if(trs->GetNumberOfClustersSA()==trs->GetMaxNumberOfClusters()) return 0;
     if(trs->GetNumberOfMarked(layer)==trs->GetMaxNMarkedPerLayer()) return 0;