]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG2/FLOW/AliFlowTasks/AliFlowTrackCuts.cxx
for TPC pid get the momentum at tpc inner wall
[u/mrichter/AliRoot.git] / PWG2 / FLOW / AliFlowTasks / AliFlowTrackCuts.cxx
index d2a222c87d9107fa0a7d5ee86272c468d7b8dad5..7382c99734f2d013874939c5936d508a0aa6eb1d 100644 (file)
@@ -108,6 +108,7 @@ AliFlowTrackCuts::AliFlowTrackCuts():
   fAliPID(AliPID::kPion)
 {
   //io constructor 
+  SetPriors(); //init arrays
 }
 
 //-----------------------------------------------------------------------
@@ -171,7 +172,7 @@ AliFlowTrackCuts::AliFlowTrackCuts(const char* name):
                                                     5.04114e-11,
                                                     2.12543e+00,
                                                     4.88663e+00 );
-
+  SetPriors(); //init arrays
 }
 
 //-----------------------------------------------------------------------
@@ -231,6 +232,7 @@ AliFlowTrackCuts::AliFlowTrackCuts(const AliFlowTrackCuts& that):
   if (that.fTPCpidCuts) fTPCpidCuts = new TMatrixF(*(that.fTPCpidCuts));
   if (that.fTOFpidCuts) fTOFpidCuts = new TMatrixF(*(that.fTOFpidCuts));
   if (that.fAliESDtrackCuts) fAliESDtrackCuts = new AliESDtrackCuts(*(that.fAliESDtrackCuts));
+  SetPriors(); //init arrays
 }
 
 //-----------------------------------------------------------------------
@@ -654,6 +656,7 @@ void AliFlowTrackCuts::HandleVParticle(AliVParticle* track)
 void AliFlowTrackCuts::HandleESDtrack(AliESDtrack* track)
 {
   //handle esd track
+  AliExternalTrackParam* ip=NULL;
   switch (fParamType)
   {
     case kGlobal:
@@ -667,6 +670,9 @@ void AliFlowTrackCuts::HandleESDtrack(AliESDtrack* track)
         fTrackLabel=-1;
         return;
       }
+      ip = const_cast<AliExternalTrackParam*>(fTPCtrack.GetInnerParam());
+      if (!ip) { ip = new AliExternalTrackParam(*(track->GetInnerParam())); }
+      else { *ip = *(track->GetInnerParam()); }
       fTrack = &fTPCtrack;
       //recalculate the label and mc particle, they may differ as TPClabel != global label
       fTrackLabel = (fFakesAreOK)?TMath::Abs(fTrack->GetLabel()):fTrack->GetLabel();
@@ -702,7 +708,7 @@ AliFlowTrackCuts* AliFlowTrackCuts::GetStandardITSTPCTrackCuts2009(Bool_t selPri
 }
 
 //-----------------------------------------------------------------------
-AliFlowTrack* AliFlowTrackCuts::MakeFlowTrack(int index) const
+AliFlowTrack* AliFlowTrackCuts::MakeFlowTrack() const
 {
   //get a flow track constructed from whatever we applied cuts on
   //caller is resposible for deletion
@@ -787,8 +793,6 @@ AliFlowTrack* AliFlowTrackCuts::MakeFlowTrack(int index) const
     else if (dynamic_cast<AliMCParticle*>(fTrack)) flowtrack->SetSource(AliFlowTrack::kFromMC);
   }
 
-  if(flowtrack)
-    flowtrack->SetIndexOnCollection(index);
   return flowtrack;
 }
 
@@ -897,25 +901,25 @@ void AliFlowTrackCuts::Clear(Option_t*)
 }
 
 //-----------------------------------------------------------------------
-Bool_t AliFlowTrackCuts::PassesTOFpidCut(AliESDtrack* t )
+Bool_t AliFlowTrackCuts::PassesTOFpidCut(AliESDtrack* track )
 {
   //check if passes PID cut using timing in TOF
-  Bool_t goodtrack = (t) && 
-                     (t->GetStatus() & AliESDtrack::kTOFpid) && 
-                     (t->GetTOFsignal() > 12000) && 
-                     (t->GetTOFsignal() < 100000) && 
-                     (t->GetIntegratedLength() > 365) && 
-                    !(t->GetStatus() & AliESDtrack::kTOFmismatch);
+  Bool_t goodtrack = (track) && 
+                     (track->GetStatus() & AliESDtrack::kTOFpid) && 
+                     (track->GetTOFsignal() > 12000) && 
+                     (track->GetTOFsignal() < 100000) && 
+                     (track->GetIntegratedLength() > 365) && 
+                    !(track->GetStatus() & AliESDtrack::kTOFmismatch);
 
   if (!goodtrack) return kFALSE;
   
-  Float_t pt = t->Pt();
-  Float_t p = t->GetP();
+  Float_t pt = track->Pt();
+  Float_t p = track->GetP();
   Float_t trackT0 = fESDpid.GetTOFResponse().GetStartTime(p);
-  Float_t timeTOF = t->GetTOFsignal()- trackT0; 
+  Float_t timeTOF = track->GetTOFsignal()- trackT0; 
   //2=pion 3=kaon 4=protons
   Double_t inttimes[5] = {-1.0,-1.0,-1.0,-1.0,-1.0};
-  t->GetIntegratedTimes(inttimes);
+  track->GetIntegratedTimes(inttimes);
   //construct the pid index because it's screwed up in TOF
   Int_t pid = 0;
   switch (fAliPID)
@@ -954,7 +958,7 @@ Bool_t AliFlowTrackCuts::PassesTPCpidCut(AliESDtrack* track)
     return kFALSE;
   }
 
-  const AliExternalTrackParam* tpcparam = track->GetInnerParam();
+  const AliExternalTrackParam* tpcparam = track->GetInnerParam(); //tpc only params at the inner wall
   if (!tpcparam) return kFALSE;
   Float_t sigExp = fESDpid.GetTPCResponse().GetExpectedSignal(tpcparam->GetP(), fAliPID);
   Float_t sigTPC = track->GetTPCsignal();
@@ -1147,7 +1151,6 @@ void AliFlowTrackCuts::InitPIDcuts()
 //-----------------------------------------------------------------------
 // part added by F. Noferini (some methods)
 Bool_t AliFlowTrackCuts::PassesTOFbayesianCut(AliESDtrack* track){
-  SetPriors();
 
   Bool_t goodtrack = track && (track->GetStatus() & AliESDtrack::kTOFpid) && (track->GetTOFsignal() > 12000) && (track->GetTOFsignal() < 100000) && (track->GetIntegratedLength() > 365) && !(track->GetStatus() & AliESDtrack::kTOFmismatch);