]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ANALYSIS/AliEPSelectionTask.cxx
RelVal: more retries w/pauses on VM + small fixes
[u/mrichter/AliRoot.git] / ANALYSIS / AliEPSelectionTask.cxx
index 9ba565fcffb95e37b7c1f7df775d60d6cb0ce408..7d0d235c61d48c8aa98adea8557926064ab37dbd 100644 (file)
@@ -332,6 +332,7 @@ void AliEPSelectionTask::UserExec(Option_t */*option*/)
       }
   
       esdEP = aod->GetHeader()->GetEventplaneP();
+      if(!esdEP) return; // protection against missing EP branch (nanoAODs)
       esdEP->Reset(); 
      
       Int_t maxID = 0;
@@ -531,6 +532,33 @@ void AliEPSelectionTask::GetQsub(TVector2 &Q1, TVector2 &Q2, TObjArray* tracklis
         }
       }
     }
+  } else if (fSplitMethod == AliEPSelectionTask::kCharge) {
+     
+    for (Int_t i = 0; i < nt; i++) {
+      weight = 1;
+      track = dynamic_cast<AliVTrack*> (tracklist->At(i));
+      if (!track) continue;
+      weight = GetWeight(track);
+      Short_t cha = track->Charge();
+      idtemp = track->GetID(); 
+      if ((fAnalysisInput.CompareTo("AOD")==0) && (fAODfilterbit == 128)) idtemp = idtemp*(-1) - 1;
+
+      if (cha > 0) {  
+        mQx1 += (weight*cos(2*track->Phi()));
+        mQy1 += (weight*sin(2*track->Phi()));
+        if (fSaveTrackContribution){
+          EP->GetQContributionXArraysub1()->AddAt(weight*cos(2*track->Phi()),idtemp);
+          EP->GetQContributionYArraysub1()->AddAt(weight*sin(2*track->Phi()),idtemp);
+        }
+      } else if (cha < 0) {
+        mQx2 += (weight*cos(2*track->Phi()));
+        mQy2 += (weight*sin(2*track->Phi()));
+        if (fSaveTrackContribution){
+          EP->GetQContributionXArraysub2()->AddAt(weight*cos(2*track->Phi()),idtemp);
+          EP->GetQContributionYArraysub2()->AddAt(weight*sin(2*track->Phi()),idtemp);
+        }
+      }
+    }
   } else {
     printf("plane resolution determination method not available!\n\n ");
     return;
@@ -560,7 +588,7 @@ void AliEPSelectionTask::SetPersonalESDtrackCuts(AliESDtrackCuts* trackcuts){
 }
 
 //________________________________________________________________________
-void AliEPSelectionTask::SetPersonalAODtrackCuts(UInt_t filterbit, Float_t etalow, Float_t etaup, Float_t ptlow, Float_t ptup){
+void AliEPSelectionTask::SetPersonalAODtrackCuts(UInt_t filterbit, Float_t etalow, Float_t etaup, Float_t ptlow, Float_t ptup, Int_t ntpc){
   
   if(fESDtrackCuts){ 
     delete fESDtrackCuts;
@@ -575,6 +603,7 @@ void AliEPSelectionTask::SetPersonalAODtrackCuts(UInt_t filterbit, Float_t etalo
   fUsercuts = kTRUE;
   fESDtrackCuts = new AliESDtrackCuts();
   fESDtrackCuts->SetPtRange(ptlow,ptup);
+  fESDtrackCuts->SetMinNClustersTPC(ntpc);
   fESDtrackCuts->SetEtaRange(etalow,etaup);
   fAODfilterbit = filterbit;
 }
@@ -741,6 +770,7 @@ TObjArray* AliEPSelectionTask::GetAODTracksAndMaxID(AliAODEvent* aod, Int_t& max
   Float_t etaup = 0;
   fESDtrackCuts->GetPtRange(ptlow,ptup);
   fESDtrackCuts->GetEtaRange(etalow,etaup);
+  Int_t ntpc = fESDtrackCuts->GetMinNClusterTPC(); 
   
   for (Int_t i = 0; i < aod->GetNumberOfTracks() ; i++){
      tr = aod->GetTrack(i);
@@ -749,7 +779,7 @@ TObjArray* AliEPSelectionTask::GetAODTracksAndMaxID(AliAODEvent* aod, Int_t& max
      if(maxidtemp > -1 && fAODfilterbit == 128) continue;
      if (fAODfilterbit == 128) maxidtemp = maxidtemp*(-1) - 1;
      if (maxidtemp > maxid1) maxid1 = maxidtemp;
-     if(tr->TestFilterBit(fAODfilterbit) && tr->Pt() < ptup && tr->Pt() > ptlow && tr->Eta() < etaup && tr->Eta() > etalow){
+     if(tr->TestFilterBit(fAODfilterbit) && tr->Pt() < ptup && tr->Pt() > ptlow && tr->Eta() < etaup && tr->Eta() > etalow && tr->GetTPCNcls() > ntpc){
      acctracks->Add(tr);
      }
   }