]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Use aliutil plus a bit of cleanup
authorloizides <loizides@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 13 Mar 2013 12:20:16 +0000 (12:20 +0000)
committerloizides <loizides@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 13 Mar 2013 12:20:16 +0000 (12:20 +0000)
PWGCF/Correlations/DPhi/FourierDecomposition/AliDhcTask.cxx
PWGCF/Correlations/DPhi/FourierDecomposition/AliDhcTask.h
PWGCF/Correlations/macros/fd/AddTaskDhc.C

index a82548c173c861d6c46b824eb7caca39fd02c973..dc11668baa2c3160d5c8ecabef82077711ad0fd7 100644 (file)
@@ -2,16 +2,18 @@
 // calculate same- and mixed-event correlations, and fill THnSparse
 // output. -A. Adare, Apr 2011
 
-#include "TCanvas.h"
-#include "TChain.h"
-#include "TFormula.h"
-#include "TH1.h"
-#include "TH2.h"
-#include "TH3.h"
-#include "TAxis.h"
-#include "TProfile2D.h"
-#include "TROOT.h"
-#include "TTree.h"
+#include <TAxis.h>
+#include <TCanvas.h>
+#include <TChain.h>
+#include <TFormula.h>
+#include <TH1.h>
+#include <TH2.h>
+#include <TH3.h>
+#include <THn.h>
+#include <TProfile2D.h>
+#include <TROOT.h>
+#include <TTree.h>
+#include "AliAnalysisUtils.h"
 #include "AliAODEvent.h"
 #include "AliAODInputHandler.h"
 #include "AliAnalysisManager.h"
@@ -20,8 +22,8 @@
 #include "AliDhcTask.h"
 #include "AliESDEvent.h"
 #include "AliESDInputHandler.h"
-#include "AliESDtrackCuts.h"
 #include "AliESDMuonTrack.h"
+#include "AliESDtrackCuts.h"
 #include "AliPool.h"
 #include "AliVParticle.h"
 
@@ -36,7 +38,7 @@ AliDhcTask::AliDhcTask()
 : AliAnalysisTaskSE(), fVerbosity(0), fEtaMax(1), fZVtxMax(10), fPtMin(0.25), fPtMax(15),
   fTrackDepth(1000), fPoolSize(200), fTracksName(), fDoWeights(kFALSE), fFillMuons(kFALSE),
   fPtTACrit(kTRUE), fAllTAHists(kFALSE), fMixInEtaT(kFALSE),
-  fEtaTLo(-1.0), fEtaTHi(1.0), fEtaALo(-1.0), fEtaAHi(1.0),
+  fEtaTLo(-1.0), fEtaTHi(1.0), fEtaALo(-1.0), fEtaAHi(1.0), fOmitFirstEv(kTRUE),
   fDoFillSame(kFALSE), fDoMassCut(kFALSE), fClassName(),
   fESD(0x0), fAOD(0x0), fOutputList(0x0), fHEvt(0x0), fHTrk(0x0),
   fHPtAss(0x0), fHPtTrg(0x0), fHPtTrgEvt(0x0),
@@ -48,7 +50,7 @@ AliDhcTask::AliDhcTask()
   fCentMethod("V0M"), fNBdeta(20), fNBdphi(36),
   fBPtT(0x0), fBPtA(0x0), fBCent(0x0), fBZvtx(0x0),
   fMixBCent(0x0), fMixBZvtx(0x0),
-  fHEffT(0x0), fHEffA(0x0)
+  fHEffT(0x0), fHEffA(0x0), fUtils(0x0)
 {
   
 }
@@ -58,7 +60,7 @@ AliDhcTask::AliDhcTask(const char *name, Bool_t def)
 : AliAnalysisTaskSE(name), fVerbosity(0), fEtaMax(1), fZVtxMax(10), fPtMin(0.25), fPtMax(15),
   fTrackDepth(1000), fPoolSize(200), fTracksName(), fDoWeights(kFALSE), fFillMuons(kFALSE),
   fPtTACrit(kTRUE), fAllTAHists(kFALSE), fMixInEtaT(kFALSE),
-  fEtaTLo(-1.0), fEtaTHi(1.0), fEtaALo(-1.0), fEtaAHi(1.0),
+  fEtaTLo(-1.0), fEtaTHi(1.0), fEtaALo(-1.0), fEtaAHi(1.0), fOmitFirstEv(kTRUE),
   fDoFillSame(kFALSE), fDoMassCut(kFALSE), fClassName(),
   fESD(0x0), fAOD(0x0), fOutputList(0x0), fHEvt(0x0), fHTrk(0x0),
   fHPtAss(0x0), fHPtTrg(0x0), fHPtTrgEvt(0x0),
@@ -70,7 +72,7 @@ AliDhcTask::AliDhcTask(const char *name, Bool_t def)
   fCentMethod("V0M"), fNBdeta(20), fNBdphi(36),
   fBPtT(0x0), fBPtA(0x0), fBCent(0x0), fBZvtx(0x0),
   fMixBCent(0x0), fMixBZvtx(0x0),
-  fHEffT(0x0), fHEffA(0x0)
+  fHEffT(0x0), fHEffA(0x0), fUtils(0x0)
 {
   // Constructor
 
@@ -110,10 +112,7 @@ void AliDhcTask::UserCreateOutputObjects()
   fOutputList = new TList();
   fOutputList->SetOwner(1);
 
-  fEsdTPCOnly = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
-  //fEsdTPCOnly->SetMinNClustersTPC(70);
-  fEsdTPCOnly->SetMinNCrossedRowsTPC(70);
-  fEsdTPCOnly->SetMinRatioCrossedRowsOverFindableClustersTPC(0.8);
+  fUtils = new AliAnalysisUtils();
 
   BookHistos();
   InitEventMixer(); 
@@ -135,7 +134,8 @@ void AliDhcTask::PrintDhcSettings()
   AliInfo(Form(" trigger eta range %f .. %f", fEtaTLo, fEtaTHi));
   AliInfo(Form(" associate eta range %f .. %f", fEtaALo, fEtaAHi));
   AliInfo(Form(" fill same event in any case? %d", fDoFillSame));
-  AliInfo(Form(" do invariant mass cut? %d\n", fDoMassCut));
+  AliInfo(Form(" do invariant mass cut? %d", fDoMassCut));
+  AliInfo(Form(" omit first event? %d\n", fOmitFirstEv));
 }
 
 //________________________________________________________________________
@@ -368,19 +368,16 @@ void AliDhcTask::InitEventMixer()
 void AliDhcTask::UserExec(Option_t *) 
 {
   // Main loop, called for each event.
-  static int iEvent = -1; ++iEvent;
-
-  if (fVerbosity>2) {
-    if (iEvent % 100 == 0) 
-      cout << iEvent << endl;
-  }
-
-  Int_t dType = -1;       // Will be set to kESD or kAOD.
-  MiniEvent* sTracks = new MiniEvent(0); // deleted by pool mgr.
 
   LoadBranches();
 
+  if (fOmitFirstEv) {
+    if (fUtils->IsFirstEventInChunk(InputEvent())) 
+      return;
+  }
+
   // Get event pointers, check for signs of life
+  Int_t dType = -1;       // Will be set to kESD or kAOD.
   fESD = dynamic_cast<AliESDEvent*>(InputEvent());
   fAOD = dynamic_cast<AliAODEvent*>(InputEvent());
   if (fESD)
@@ -417,13 +414,13 @@ void AliDhcTask::UserExec(Option_t *)
       fCentrality = tcaTracks->GetEntries();
   } else {
     if (dType == kESD) {
-      if (!VertexOk(fESD)) {
+      const AliESDVertex* vertex = fESD->GetPrimaryVertex();
+      fZVertex = vertex->GetZ();
+      if (!VertexOk()) {
         if (fVerbosity > 1)
           AliInfo(Form("Event REJECTED (ESD vertex not OK). z = %.1f", fZVertex));
         return;
       }
-      const AliESDVertex* vertex = fESD->GetPrimaryVertex();
-      fZVertex = vertex->GetZ();
       if(fESD->GetCentrality()) {
         fCentrality = 
           fESD->GetCentrality()->GetCentralityPercentile(fCentMethod);
@@ -431,7 +428,7 @@ void AliDhcTask::UserExec(Option_t *)
     } else if (dType == kAOD) {
       const AliAODVertex* vertex = fAOD->GetPrimaryVertex();
       fZVertex = vertex->GetZ();
-      if (!VertexOk(fAOD)) {
+      if (!VertexOk()) {
         if (fVerbosity > 1)
           Info("Exec()", "Event REJECTED (AOD vertex not OK). z = %.1f", fZVertex);
         return;
@@ -451,18 +448,25 @@ void AliDhcTask::UserExec(Option_t *)
     return;
   }
 
+  // Get pool containing tracks from other events like this one
+  AliEvtPool* pool = fPoolMgr->GetEventPool(fCentrality, fZVertex);
+  if (!pool) {
+    AliWarning(Form("No pool found. Centrality %f, ZVertex %f", 
+                   fCentrality, fZVertex));
+    return;
+  }
+
   // Get array of selected tracks
+  MiniEvent* sTracks = new MiniEvent(0); // deleted by pool mgr.
   if (dType == kESD) {
     GetESDTracks(sTracks);
   } else if (dType == kAOD) {
     GetAODTracks(sTracks);
   }
 
-  // Get pool containing tracks from other events like this one
-  AliEvtPool* pool = fPoolMgr->GetEventPool(fCentrality, fZVertex);
-  if (!pool) {
-    AliWarning(Form("No pool found. Centrality %f, ZVertex %f", 
-                   fCentrality, fZVertex));
+  if (sTracks->size()==0) {
+    AliWarning(Form("Track array empty"));
+    delete sTracks;
     return;
   }
 
@@ -522,6 +526,13 @@ void AliDhcTask::GetESDTracks(MiniEvent* miniEvt)
     TObjArray arr(nTrax);
     arr.SetOwner(1);
 
+    if (!fEsdTPCOnly) {
+      fEsdTPCOnly = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
+      //fEsdTPCOnly->SetMinNClustersTPC(70);
+      fEsdTPCOnly->SetMinNCrossedRowsTPC(70);
+      fEsdTPCOnly->SetMinRatioCrossedRowsOverFindableClustersTPC(0.8);
+    }
+
     for (Int_t i = 0; i < nTrax; ++i) {
       AliESDtrack* esdtrack = fESD->GetTrack(i);
       if (!esdtrack) {
@@ -983,28 +994,31 @@ void AliDhcTask::Terminate(Option_t *)
 }
 
 //________________________________________________________________________
-Bool_t AliDhcTask::VertexOk(TObject* obj) const
+Bool_t AliDhcTask::VertexOk() const
 {
   // Modified from AliAnalyseLeadingTrackUE::VertexSelection()
   
   Int_t nContributors  = 0;
   Double_t zVertex     = 999;
   TString name("");
-  
-  if (obj->InheritsFrom("AliESDEvent")) {
-    AliESDEvent* esdevt = (AliESDEvent*) obj;
-    const AliESDVertex* vtx = esdevt->GetPrimaryVertex();
+
+  Int_t runno = InputEvent()->GetRunNumber();
+  if (runno>=176326 && runno<=197692) { // year 12 and 13
+    if (!fUtils->IsVertexSelected2013pA(InputEvent())) 
+      return 0;
+  }
+
+  if (fESD) {
+    const AliESDVertex* vtx = fESD->GetPrimaryVertex();
     if (!vtx)
       return 0;
     nContributors = vtx->GetNContributors();
     zVertex       = vtx->GetZ();
     name          = vtx->GetName();
-  }
-  else if (obj->InheritsFrom("AliAODEvent")) { 
-    AliAODEvent* aodevt = (AliAODEvent*) obj;
-    if (aodevt->GetNumberOfVertices() < 1)
+  } else {
+    if (fAOD->GetNumberOfVertices() < 1)
       return 0;
-    const AliAODVertex* vtx = aodevt->GetPrimaryVertex();
+    const AliAODVertex* vtx = fAOD->GetPrimaryVertex();
     nContributors = vtx->GetNContributors();
     zVertex       = vtx->GetZ();
     name          = vtx->GetName();
index 582d40aa4b155fa4cf3e447af1d980b25e94f031..78e07dee6719c3d690bdfb0fce8a196292ad5b3e 100644 (file)
@@ -7,24 +7,24 @@
 
 #include "AliAnalysisTaskSE.h"
 #include "AliPool.h"
-#include "THn.h"
 
 class TFormula;
 class TH1;
 class TH2;
 class TH3;
+class THn;
 class TAxis;
 class TObjArray;
 class TObject;
 class TProfile2D;
 class AliAODEvent;
+class AliAODTrack;
+class AliAnalysisUtils;
 class AliESDEvent;
-class AliESDtrackCuts;
 class AliESDMuonTrack;
-class AliAODTrack;
+class AliESDtrackCuts;
 class AliEvtPoolManager;
 
-
 class AliDhcTask : public AliAnalysisTaskSE {
  public:
   AliDhcTask();
@@ -47,6 +47,7 @@ class AliDhcTask : public AliAnalysisTaskSE {
   void         SetHEffA(THnF *h)                      { fHEffA=h;                 }
   void         SetHEffT(THnF *h)                      { fHEffT=h;                 }
   void         SetMixInEtaT(Bool_t b)                 { fMixInEtaT = b;           }
+  void         SetOmitFirstEv(Bool_t b)               { fOmitFirstEv = b;         }
   void         SetPoolSize(Int_t p)                   { fPoolSize = p;            }
   void         SetPtABins(TAxis *bins)                { fBPtA=bins;               }
   void         SetPtRange(Double_t min, Double_t max) { fPtMin=min; fPtMax=max;   }
@@ -59,6 +60,7 @@ class AliDhcTask : public AliAnalysisTaskSE {
   void         SetZVtxMixBins(TAxis *bins)            { fMixBZvtx=bins;           }
   void         SetZvtx(Double_t zvtx)                 { fZVtxMax = zvtx;          }
   void         PrintDhcSettings();
+
   enum eAnaMode       {kHH=1, kMuH, kHMu, kMuMu, kPSide, kASide};
 
  protected:
@@ -69,7 +71,7 @@ class AliDhcTask : public AliAnalysisTaskSE {
   void         InitEventMixer();
   void         GetESDTracks(MiniEvent*);
   void         GetAODTracks(MiniEvent*);
-  Bool_t       VertexOk(TObject* obj) const;
+  Bool_t       VertexOk() const;
   Bool_t       IsGoodMUONtrack(AliESDMuonTrack &track);
   Bool_t       IsGoodMUONtrack(AliAODTrack &track);
   Double_t     DeltaPhi(Double_t phia, Double_t phib,
@@ -98,6 +100,7 @@ class AliDhcTask : public AliAnalysisTaskSE {
   Double_t           fEtaTHi;          //  Max eta for triggers
   Double_t           fEtaALo;          //  Min eta for associated
   Double_t           fEtaAHi;          //  Max eta for associated
+  Bool_t             fOmitFirstEv;     //  if true skip first event in chunk
   Bool_t             fDoFillSame;      //  If true fill same event immediately (not waiting for pool)
   Bool_t             fDoMassCut;       //  If true cut on invariant mass
   TString            fClassName;       //  If not null only process events with given class
@@ -141,11 +144,12 @@ class AliDhcTask : public AliAnalysisTaskSE {
   TAxis             *fMixBZvtx;        //  zvtx binning for mixing
   THnF              *fHEffT;           //  efficiency for trigger particles
   THnF              *fHEffA;           //  efficiency for associate particles
+  AliAnalysisUtils  *fUtils;           //  analysis utils
 
   AliDhcTask(const AliDhcTask&);            // not implemented
   AliDhcTask &operator=(const AliDhcTask&); // not implemented
 
-  ClassDef(AliDhcTask, 7);
+  ClassDef(AliDhcTask, 8)
 };
 
 #endif
index df800316b4b13ca7803d472e56708975c70fac9d..4d7b27aa4134b3c802d7b2228cd332455cfd5fdf 100644 (file)
@@ -143,7 +143,7 @@ AliDhcTask *AddTaskDhc(
   // make a unique task name
   Char_t chNewTaskName[256];
   if (chTaskName.EqualTo("")) {
-    sprintf(chNewTaskName,"Task_Dhc%s%s%s",chExtraName,centSel.Data(),chUName.Data());
+    sprintf(chNewTaskName,"Task_Dhc%s_%s_%s",chExtraName,centSel.Data(),chUName.Data());
   } else {
     sprintf(chNewTaskName,"%s",chTaskName.Data());
   }