]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG/FLOW/Tasks/AliAnalysisTaskPhiFlow.cxx
Merge branch 'master' into dev
[u/mrichter/AliRoot.git] / PWG / FLOW / Tasks / AliAnalysisTaskPhiFlow.cxx
index b00b66102253b45145ff726f707d9170c3cb5422..4d172696ff0c448425dfc0708675c93a5b65edd7 100644 (file)
@@ -415,7 +415,8 @@ template <typename T> Bool_t AliAnalysisTaskPhiFlow::CheckCentrality(T* event)
           if ((trackAOD->Pt() < .2) || (trackAOD->Pt() > 5.0) || (TMath::Abs(trackAOD->Eta()) > .8) || (trackAOD->GetTPCNcls() < 70) || (trackAOD->GetDetPid()->GetTPCsignal() < 10.0) || (trackAOD->Chi2perNDF() < 0.1)) continue;
           Double_t b[2] = {-99., -99.};
           Double_t bCov[3] = {-99., -99., -99.};
-          if (!(trackAOD->PropagateToDCA(event->GetPrimaryVertex(), event->GetMagneticField(), 100., b, bCov))) continue;
+          AliAODTrack copy(*trackAOD);
+          if (!(copy.PropagateToDCA(event->GetPrimaryVertex(), event->GetMagneticField(), 100., b, bCov))) continue;
           if ((TMath::Abs(b[0]) > 0.3) || (TMath::Abs(b[1]) > 0.3)) continue;
           multGlob++;
       } //track loop
@@ -444,7 +445,8 @@ template <typename T> Bool_t AliAnalysisTaskPhiFlow::CheckCentrality(T* event)
           if ((trackAOD->Pt() < .2) || (trackAOD->Pt() > 5.0) || (TMath::Abs(trackAOD->Eta()) > .8) || (trackAOD->GetTPCNcls() < 70) || (trackAOD->GetDetPid()->GetTPCsignal() < 10.0) || (trackAOD->Chi2perNDF() < 0.1)) continue;
           Double_t b[2] = {-99., -99.};
           Double_t bCov[3] = {-99., -99., -99.};
-          if (!(trackAOD->PropagateToDCA(event->GetPrimaryVertex(), event->GetMagneticField(), 100., b, bCov))) continue;
+          AliAODTrack copy(*trackAOD);
+          if (!(copy.PropagateToDCA(event->GetPrimaryVertex(), event->GetMagneticField(), 100., b, bCov))) continue;
           if ((TMath::Abs(b[0]) > 0.3) || (TMath::Abs(b[1]) > 0.3)) continue;
           multGlob++;
       } //track loop
@@ -490,20 +492,22 @@ Bool_t AliAnalysisTaskPhiFlow::PassesDCACut(AliAODTrack* track) const
     // fDCAConfig[0] >  1 pt dependent dca cut
     if(fDebug > 1) cout << " *** PassesDCACut() *** " << endl;
     if(fIsMC) return kTRUE;
+    AliAODTrack copy(*track);
     if( (fDCAConfig[0] < 0.1) && (fDCAConfig[0] > -0.1) ) {
         if(fQA) {
             Double_t b[2] = { -99., -99.};
             Double_t bCov[3] = { -99., -99., -99.};
-            track->PropagateToDCA(fAOD->GetPrimaryVertex(), fAOD->GetMagneticField(), 100., b, bCov);
-            fDCAXYQA->Fill(b[0]);
-            fDCAZQA->Fill(b[1]);
-            fDCAPrim->Fill(track->Pt(), b[0]);
+            if(copy.PropagateToDCA(fAOD->GetPrimaryVertex(), fAOD->GetMagneticField(), 100., b, bCov)) {
+                fDCAXYQA->Fill(b[0]);
+                fDCAZQA->Fill(b[1]);
+                fDCAPrim->Fill(track->Pt(), b[0]);
+            }
         }
         return kTRUE;
     }
     Double_t b[2] = { -99., -99.};
     Double_t bCov[3] = { -99., -99., -99.};
-    track->PropagateToDCA(fAOD->GetPrimaryVertex(), fAOD->GetMagneticField(), 100., b, bCov);
+    if(!copy.PropagateToDCA(fAOD->GetPrimaryVertex(), fAOD->GetMagneticField(), 100., b, bCov)) return kFALSE;
     if((!fIsMC)&&fQA) fDCAMaterial->Fill(track->Pt(), b[0]);
     if( (fDCAConfig[0] < -.9) && ( (TMath::Abs(b[0]) > fDCAConfig[1]) || (TMath::Abs(b[1]) > fDCAConfig[2])) ) return kFALSE;
     if(fDCAConfig[0] > .9) {
@@ -949,7 +953,8 @@ void AliAnalysisTaskPhiFlow::IsMC()
      if (fDebug>1) cout << " Received MC kaon " << endl;
      Double_t b[2] = { -99., -99.};
      Double_t bCov[3] = { -99., -99., -99.};
-     track->PropagateToDCA(fAOD->GetPrimaryVertex(), fAOD->GetMagneticField(), 100., b, bCov);
+     AliAODTrack copy(*track);
+     if(!copy.PropagateToDCA(fAOD->GetPrimaryVertex(), fAOD->GetMagneticField(), 100., b, bCov)) return;
      // find corresponding mc particle
      AliAODMCParticle *partMC = (AliAODMCParticle*) arrayMC->At(TMath::Abs(track->GetLabel()));
      if (!partMC) {