]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGCF/Correlations/DPhi/AliAnalysisTaskPhiCorrelations.cxx
Update in Two Particle Corr: debojit
[u/mrichter/AliRoot.git] / PWGCF / Correlations / DPhi / AliAnalysisTaskPhiCorrelations.cxx
index 8caa6fd2b13aa0bdba188e5d2fc34520cb24139a..cc921f75fb9ad4b3a593eb0d74e6a39ea3354b23 100644 (file)
@@ -41,6 +41,7 @@
 #include "AliMCEventHandler.h"
 #include "AliVParticle.h"
 #include "AliCFContainer.h"
+#include "AliEventplane.h"
 
 #include "AliESDEvent.h"
 #include "AliESDInputHandler.h"
@@ -130,6 +131,8 @@ fCentralityMethod("V0M"),
 // track cuts
 fTrackEtaCut(0.8),
 fTrackEtaCutMin(-1.),
+fTrackPhiCutEvPlMin(0.),
+fTrackPhiCutEvPlMax(0.),
 fOnlyOneEtaSide(0),
 fPtMin(0.5),
 fDCAXYCut(0),
@@ -247,6 +250,8 @@ void  AliAnalysisTaskPhiCorrelations::CreateOutputObjects()
   fAnalyseUE->DefineESDCuts(fFilterBit);
   fAnalyseUE->SetEventSelection(fSelectBit);
   fAnalyseUE->SetHelperPID(fHelperPID);
+  if(fTrackPhiCutEvPlMax > 0.0001)
+    fAnalyseUE->SetParticlePhiCutEventPlane(fTrackPhiCutEvPlMin,fTrackPhiCutEvPlMax);
   if ((fParticleSpeciesTrigger != -1 || fParticleSpeciesAssociated != -1) && !fHelperPID)
     AliFatal("HelperPID object should be set in the steering macro");
 
@@ -421,6 +426,8 @@ void  AliAnalysisTaskPhiCorrelations::AddSettingsTree()
   //settingsTree->Branch("fCentralityMethod", fCentralityMethod.Data(),"CentralityMethod/C");
   settingsTree->Branch("fTrackEtaCut", &fTrackEtaCut, "TrackEtaCut/D");
   settingsTree->Branch("fTrackEtaCutMin", &fTrackEtaCutMin, "TrackEtaCutMin/D");
+  settingsTree->Branch("fTrackPhiCutEvPlMin", &fTrackPhiCutEvPlMin, "TrackPhiCutEvPlMin/D");
+  settingsTree->Branch("fTrackPhiCutEvPlMax", &fTrackPhiCutEvPlMax, "TrackPhiCutEvPlMax/D");
   settingsTree->Branch("fOnlyOneEtaSide", &fOnlyOneEtaSide,"OnlyOneEtaSide/I");
   settingsTree->Branch("fPtMin", &fPtMin, "PtMin/D");
   settingsTree->Branch("fFilterBit", &fFilterBit,"FilterBit/I");
@@ -502,11 +509,16 @@ void  AliAnalysisTaskPhiCorrelations::AnalyseCorrectionMode()
     {
       centrality = (Float_t) gROOT->ProcessLine(Form("100.0 + 100.0 * ((AliNanoAODHeader*) %p)->GetCentrality(\"%s\")", fAOD->GetHeader(), fCentralityMethod.Data())) / 100 - 1.0;
     }
+    else if (fCentralityMethod == "PPVsMultUtils")
+      {
+       if(fAnalysisUtils)centrality=fAnalysisUtils->GetMultiplicityPercentile((fAOD)?(AliVEvent*)fAOD:(AliVEvent*)fESD);
+       else centrality = -1;
+    }
     else
     {
       AliCentrality *centralityObj = 0;
       if (fAOD)
-       centralityObj = fAOD->GetHeader()->GetCentralityP();
+       centralityObj = ((AliVAODHeader*)fAOD->GetHeader())->GetCentralityP();
       else if (fESD)
        centralityObj = fESD->GetCentrality();
       
@@ -1086,10 +1098,15 @@ void  AliAnalysisTaskPhiCorrelations::AnalyseDataMode()
       if (error != TInterpreter::kNoError)
        centrality = -1;
     }
-    else
+   else if (fCentralityMethod == "PPVsMultUtils")
+     {
+       if(fAnalysisUtils)centrality=fAnalysisUtils->GetMultiplicityPercentile((fAOD)?(AliVEvent*)fAOD:(AliVEvent*)fESD);
+       else centrality = -1;
+    }
+   else
     {
       if (fAOD)
-       centralityObj = fAOD->GetHeader()->GetCentralityP();
+       centralityObj = ((AliVAODHeader*)fAOD->GetHeader())->GetCentralityP();
       else if (fESD)
        centralityObj = fESD->GetCentrality();
       
@@ -1166,9 +1183,18 @@ void  AliAnalysisTaskPhiCorrelations::AnalyseDataMode()
     return;
 
   TObjArray* tracks = 0;
-  
+  Double_t evtPlanePhi = -999.; //A value outside [-pi/2,pi/2] will be ignored
+  if(fTrackPhiCutEvPlMax > 0.0001) {
+    AliEventplane* evtPlane = inputEvent->GetEventplane();
+    Double_t qx = 0; Double_t qy = 0;
+    if(evtPlane) evtPlanePhi = evtPlane->CalculateVZEROEventPlane(inputEvent, 10, 2, qx, qy);
+    //Reject event if the plane is not available
+    else return; 
+  }
   if (fTriggersFromDetector == 0)
-    tracks = fAnalyseUE->GetAcceptedParticles(inputEvent, 0, kTRUE, fParticleSpeciesTrigger, kTRUE);
+    tracks = fAnalyseUE->GetAcceptedParticles(inputEvent, 0, kTRUE, fParticleSpeciesTrigger, kTRUE, kTRUE, evtPlanePhi);
   else if (fTriggersFromDetector <= 4)
     tracks=GetParticlesFromDetector(inputEvent,fTriggersFromDetector);
   else
@@ -1221,7 +1247,7 @@ void  AliAnalysisTaskPhiCorrelations::AnalyseDataMode()
   // correlate particles with...
   TObjArray* tracksCorrelate = 0;
   if(fAssociatedFromDetector==0){
-    if (fParticleSpeciesAssociated != fParticleSpeciesTrigger || fTriggersFromDetector > 0 )
+    if (fParticleSpeciesAssociated != fParticleSpeciesTrigger || fTriggersFromDetector > 0 || fTrackPhiCutEvPlMax > 0.0001)
       tracksCorrelate = fAnalyseUE->GetAcceptedParticles(inputEvent, 0, kTRUE, fParticleSpeciesAssociated, kTRUE);
   }
   else if (fAssociatedFromDetector <= 4){
@@ -1237,7 +1263,7 @@ void  AliAnalysisTaskPhiCorrelations::AnalyseDataMode()
     referenceMultiplicity = AliESDtrackCuts::GetReferenceMultiplicity(fESD);
   else if (fAOD)
     referenceMultiplicity = tracks->GetEntriesFast(); // TODO to be replaced by the estimator once available in the AOD
-//    referenceMultiplicity = fAOD->GetHeader()->GetRefMultiplicityComb05();
+//    referenceMultiplicity = ((AliVAODHeader*)fAOD->GetHeader())->GetRefMultiplicityComb05();
 
   ((TH2F*) fListOfHistos->FindObject("referenceMultiplicity"))->Fill(centrality, referenceMultiplicity);
   
@@ -1533,8 +1559,9 @@ TObjArray* AliAnalysisTaskPhiCorrelations::GetParticlesFromDetector(AliVEvent* i
     {
       if(!fAOD)
        AliFatal("Muon selection only implemented on AOD");//FIXME to be implemented also for ESDs as in AliAnalyseLeadingTrackUE::GetAcceptedPArticles
-      for (Int_t iTrack = 0; iTrack < fAOD->GetNTracks(); iTrack++) {
-       AliAODTrack* track = fAOD->GetTrack(iTrack);
+      for (Int_t iTrack = 0; iTrack < fAOD->GetNumberOfTracks(); iTrack++) {
+       AliAODTrack* track = dynamic_cast<AliAODTrack*>(fAOD->GetTrack(iTrack));
+       if(!track) AliFatal("Not a standard AOD");
        if (!track->IsMuonTrack()) continue;
        //Float_t dca    = track->DCA();
        //Float_t chi2   = track->Chi2perNDF();
@@ -1562,8 +1589,9 @@ Bool_t AliAnalysisTaskPhiCorrelations::IsMuEvent(){
   
   if(!fAOD)
     AliFatal("Muon selection only implemented on AOD");//FIXME to be implemented also for ESDs as in AliAnalyseLeadingTrackUE::GetAcceptedPArticles
-  for (Int_t iTrack = 0; iTrack < fAOD->GetNTracks(); iTrack++) {
-    AliAODTrack* track = fAOD->GetTrack(iTrack);
+  for (Int_t iTrack = 0; iTrack < fAOD->GetNumberOfTracks(); iTrack++) {
+    AliAODTrack* track = dynamic_cast<AliAODTrack*>(fAOD->GetTrack(iTrack));
+    if(!track) AliFatal("Not a standard AOD");
     if (!track->IsMuonTrack()) continue;
     //Float_t dca    = track->DCA();
     //Float_t chi2   = track->Chi2perNDF();