]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGCF/Correlations/DPhi/FourierDecomposition/AliDhcTask.h
PWGCF/Correlations converted to native cmake
[u/mrichter/AliRoot.git] / PWGCF / Correlations / DPhi / FourierDecomposition / AliDhcTask.h
index 21b98a113ab58a75263860e6ec95643d34becd46..f5b0dcb40de2d663b404219c9a8a3bef91aac116 100644 (file)
@@ -7,53 +7,75 @@
 
 #include "AliAnalysisTaskSE.h"
 #include "AliPool.h"
-#include "THn.h"
+#include "AliMuonTrackCuts.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();
-  AliDhcTask(const char *name);
+  AliDhcTask(const char *name, Bool_t def=kFALSE);
   virtual ~AliDhcTask();
   
+  void         SetAllTAHists(Bool_t b)                { fAllTAHists = b;          }
+  void         SetAnaMode(Int_t iAna);
   void         SetCentBins(TAxis *bins)               { fBCent=bins;              }
   void         SetCentMethod(const char *name)        { fCentMethod = name;       }
   void         SetCentMixBins(TAxis *bins)            { fMixBCent=bins;           }
+  void         SetCheckVertex(Bool_t b)               { fCheckVertex = b;         }
+  void         SetClassName(const char *n)            { fClassName = n;           }
   void         SetDEtaDPhiBins(Int_t nbe, Int_t nbp)  { fNBdeta=nbe; fNBdphi=nbp; }
+  void         SetDoFillSame(Bool_t b)                { fDoFillSame = b;          }
+  void         SetDoMassCut(Bool_t b)                 { fDoMassCut = b;           }
   void         SetDoWeights(Bool_t b)                 { fDoWeights = b;           }
-  void         SetFillMuons(Bool_t b)                 { fFillMuons = b;           }
-  void         SetPtTACrit(Bool_t b)                  { fPtTACrit = b;            }
-  void         SetAllTAHists(Bool_t b)                { fAllTAHists = b;          }
   void         SetEtaMax(Double_t eta)                { fEtaMax = eta;            }
+  void         SetEtaTRange(Double_t eL, Double_t eH) { fEtaTLo=eL; fEtaTHi=eH;   }
+  void         SetEtaARange(Double_t eL, Double_t eH) { fEtaALo=eL; fEtaAHi=eH;   }
+  void         SetFillMuons(Bool_t b)                 { fFillMuons = b;           }
+  void         SetHEffA(THnF *h)                      { fHEffA=h;                 }
+  void         SetHEffT(THnF *h)                      { fHEffT=h;                 }
+  void         SetMixInEtaT(Bool_t b)                 { fMixInEtaT = b;           }
+  void         SetMuonUtils(Bool_t b = kTRUE,
+                            UInt_t mask = AliMuonTrackCuts::kMuEta | AliMuonTrackCuts::kMuThetaAbs | AliMuonTrackCuts::kMuPdca | AliMuonTrackCuts::kMuMatchApt ) {
+    fUseMuonUtils = b;
+    fMuonCutMask = mask;
+  }
+  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;   }
+  void         SetPtTACrit(Bool_t b)                  { fPtTACrit = b;            }
   void         SetPtTBins(TAxis *bins)                { fBPtT=bins;               }
+  void         SetRequireMuon(Bool_t b, Double_t l=0.5, Double_t h=4.0) {
+    fRequireMuon = b;
+    fReqPtLo = l;
+    fReqPtHi = h;
+  }
   void         SetTrackDepth(Int_t t)                 { fTrackDepth = t;          }
   void         SetTracksName(const char *n)           { fTracksName = n;          }
+  void         SetTriggerMatch(Bool_t b)              { fTriggerMatch = b;        }
   void         SetVerbosity(Int_t v)                  { fVerbosity = v;           }
   void         SetZVtxBins(TAxis *bins)               { fBZvtx=bins;              }
   void         SetZVtxMixBins(TAxis *bins)            { fMixBZvtx=bins;           }
   void         SetZvtx(Double_t zvtx)                 { fZVtxMax = zvtx;          }
-  void         SetHEffT(THnF *h)                      { fHEffT=h;                 }
-  void         SetHEffA(THnF *h)                      { fHEffA=h;                 }
-  void         SetAnaMode(Int_t iAna);
-  enum eAnaMode       {kHH, kMuH, kHMu, kMuMu, kPSide, kASide};
+  void         PrintDhcSettings();
+
+  enum eAnaMode       {kHH=1, kMuH, kHMu, kMuMu, kPSide, kASide};
 
  protected:
   enum ePairingScheme {kSameEvt, kDiffEvt};
@@ -63,9 +85,13 @@ class AliDhcTask : public AliAnalysisTaskSE {
   void         InitEventMixer();
   void         GetESDTracks(MiniEvent*);
   void         GetAODTracks(MiniEvent*);
-  Bool_t       VertexOk(TObject* obj) const;
+  Bool_t       VertexOk() const;
+  Bool_t       HasMuonESD();
+  Bool_t       HasMuonAOD();
   Bool_t       IsGoodMUONtrack(AliESDMuonTrack &track);
   Bool_t       IsGoodMUONtrack(AliAODTrack &track);
+  Bool_t       IsTrigger(Double_t eta, Double_t pt);
+  Bool_t       IsAssociated(Double_t eta, Double_t pt);
   Double_t     DeltaPhi(Double_t phia, Double_t phib,
                        Double_t rangeMin = -TMath::Pi()/2, 
                        Double_t rangeMax = 3*TMath::Pi()/2) const;
@@ -85,18 +111,44 @@ class AliDhcTask : public AliAnalysisTaskSE {
   TString            fTracksName;      //  name of track collection
   Bool_t             fDoWeights;       //  if true weight with 1/N per event
   Bool_t             fFillMuons;       //  fill the muon tracks into the mini event
+  Bool_t             fRequireMuon;     //  only run on events with a muon track
+  Double_t           fReqPtLo;         //  require a muon above this pt
+  Double_t           fReqPtHi;         //  and below this pt
   Bool_t             fPtTACrit;        //  use the pTT > pTA criterion?
   Bool_t             fAllTAHists;      //  create all pTT,pTA combination hists, even t<a?
+  Bool_t             fMixInEtaT;       //  mix in bins of eta_T instead of z_vertex
+  Bool_t             fUseMuonUtils;    //  use muon cuts from PWG/muon/AliMuonTrackCuts ?
+  UInt_t             fMuonCutMask;     //  muon cut mask for above
+  AliMuonTrackCuts  *fMuonTrackCuts;   //  muon track cut object
   Double_t           fEtaTLo;          //  Min eta for triggers
   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
+  Bool_t             fCheckVertex;     //  switch to flase for MC generator-level analysis
+  TString            fClassName;       //  If not null only process events with given class
+  TString            fCentMethod;      //  centrality selection method
+  Int_t              fNBdeta;          //  no. deta bins
+  Int_t              fNBdphi;          //  no. dphi bins
+  Bool_t             fTriggerMatch;    //  muon trigger match
+  TAxis             *fBPtT;            //  ptt binning
+  TAxis             *fBPtA;            //  pta binning
+  TAxis             *fBCent;           //  centrality binning
+  TAxis             *fBZvtx;           //  zvtx binning
+  TAxis             *fMixBCent;        //  centrality binning for mixing
+  TAxis             *fMixBZvtx;        //  zvtx binning for mixing
+  THnF              *fHEffT;           //  efficiency for trigger particles
+  THnF              *fHEffA;           //  efficiency for associate particles
   AliESDEvent       *fESD;             //! ESD object
   AliAODEvent       *fAOD;             //! AOD object
   TList             *fOutputList;      //! Output list
   TH2               *fHEvt;            //! Cent vs vtx.
+  TH2               *fHEvtWTr;         //! Cent vs vtx. for events with at least one track
   TH2               *fHTrk;            //! Phi vs Eta
-  TH1               *fHPtAss;          //! Pt ass 
+  TH2               *fHPoolReady;      //! Check how many Jobs start mixing
+  TH1               *fHPtAss;          //! Pt ass
   TH1               *fHPtTrg;          //! Pt trg
   TH1               *fHPtTrgEvt;       //! Pt trg per event for weighting
   TH3               *fHPtTrgNorm1S;    //! Pt trg same events in cent. and zvtx bins, method 1
@@ -109,29 +161,29 @@ class AliDhcTask : public AliAnalysisTaskSE {
   TH2              **fHSs;             //! Same-evt correlations
   TH2              **fHMs;             //! Diff-evt correlations
   TH1              **fHPts;            //! Pt distributions
-  TH3               *fHQAT;            //! trigger particle distribution for QA
-  TH3               *fHQAA;            //! associated particle distribution for QA
-  TFormula          *fIndex;           //! Index for histograms
-  Double_t           fCentrality;      //! V0M for now
-  Double_t           fZVertex;         //! Of current event
-  AliESDtrackCuts   *fEsdTPCOnly;      //! Track cuts
-  AliEvtPoolManager *fPoolMgr;         //! Event mixer
-  TString            fCentMethod;      //  centrality selection method
-  Int_t              fNBdeta;          //  no. deta bins
-  Int_t              fNBdphi;          //  no. dphi bins
-  TAxis             *fBPtT;            //  ptt binning
-  TAxis             *fBPtA;            //  pta binning
-  TAxis             *fBCent;           //  centrality binning
-  TAxis             *fBZvtx;           //  zvtx binning
-  TAxis             *fMixBCent;        //  centrality binning for mixing
-  TAxis             *fMixBZvtx;        //  zvtx binning for mixing
-  THnF              *fHEffT;           //  efficiency for trigger particles
-  THnF              *fHEffA;           //  efficiency for associate particles
+  TH1              **fHSMass;          //! Mass distributions same
+  TH1              **fHMMass;          //! Mass distributions mixed
+  TH3               *fHQATp;           //! positive trigger particle distribution for QA
+  TH3               *fHQAAp;           //! associated particle distribution for QA
+  TH3               *fHQATpCorr;       //! correction applied trigger distribution
+  TH3               *fHQAApCorr;       //! correction applied associated distribution
+  TH3               *fHQATm;           //! the same for negative particles
+  TH3               *fHQAAm;           //!
+  TH3               *fHQATmCorr;       //!
+  TH3               *fHQAAmCorr;       //!
+  TH2               *fHPtCentT;        //! trigger pT vs centrality
+  TH2               *fHPtCentA;        //! associated pT vs centrality
+  TFormula          *fIndex;           //! index for histograms
+  Double_t           fCentrality;      //! centrality of current event
+  Double_t           fZVertex;         //! z vertex of current event
+  AliESDtrackCuts   *fEsdTPCOnly;      //! track cuts
+  AliEvtPoolManager *fPoolMgr;         //! event mixer
+  AliAnalysisUtils  *fUtils;           //! analysis utils
 
   AliDhcTask(const AliDhcTask&);            // not implemented
   AliDhcTask &operator=(const AliDhcTask&); // not implemented
 
-  ClassDef(AliDhcTask, 3);
+  ClassDef(AliDhcTask, 9)
 };
 
 #endif