1 // Dihadron correlations task - simple task to read ESD or AOD input,
2 // calculate same- and mixed-event correlations, and fill THnSparse
3 // output. -A. Adare, Apr 2011, updated Mar 2012
8 #include "AliAnalysisTaskSE.h"
22 class AliAnalysisUtils;
24 class AliESDMuonTrack;
25 class AliESDtrackCuts;
26 class AliEvtPoolManager;
28 class AliDhcTask : public AliAnalysisTaskSE {
31 AliDhcTask(const char *name, Bool_t def=kFALSE);
32 virtual ~AliDhcTask();
34 void SetAllTAHists(Bool_t b) { fAllTAHists = b; }
35 void SetAnaMode(Int_t iAna);
36 void SetCentBins(TAxis *bins) { fBCent=bins; }
37 void SetCentMethod(const char *name) { fCentMethod = name; }
38 void SetCentMixBins(TAxis *bins) { fMixBCent=bins; }
39 void SetClassName(const char *n) { fClassName = n; }
40 void SetDEtaDPhiBins(Int_t nbe, Int_t nbp) { fNBdeta=nbe; fNBdphi=nbp; }
41 void SetDoFillSame(Bool_t b) { fDoFillSame = b; }
42 void SetDoMassCut(Bool_t b) { fDoMassCut = b; }
43 void SetCheckVertex(Bool_t b) { fCheckVertex = b; }
44 void SetDoWeights(Bool_t b) { fDoWeights = b; }
45 void SetEtaMax(Double_t eta) { fEtaMax = eta; }
46 void SetEtaTRange(Double_t eL, Double_t eH) { fEtaTLo=eL; fEtaTHi=eH; }
47 void SetEtaARange(Double_t eL, Double_t eH) { fEtaALo=eL; fEtaAHi=eH; }
48 void SetFillMuons(Bool_t b) { fFillMuons = b; }
49 void SetRequireMuon(Bool_t b, Double_t l=0.5, Double_t h=4.0) {
54 void SetHEffA(THnF *h) { fHEffA=h; }
55 void SetHEffT(THnF *h) { fHEffT=h; }
56 void SetMixInEtaT(Bool_t b) { fMixInEtaT = b; }
57 void SetOmitFirstEv(Bool_t b) { fOmitFirstEv = b; }
58 void SetPoolSize(Int_t p) { fPoolSize = p; }
59 void SetPtABins(TAxis *bins) { fBPtA=bins; }
60 void SetPtRange(Double_t min, Double_t max) { fPtMin=min; fPtMax=max; }
61 void SetPtTACrit(Bool_t b) { fPtTACrit = b; }
62 void SetPtTBins(TAxis *bins) { fBPtT=bins; }
63 void SetTrackDepth(Int_t t) { fTrackDepth = t; }
64 void SetTracksName(const char *n) { fTracksName = n; }
65 void SetTriggerMatch(Bool_t b) { fTriggerMatch = b; }
66 void SetVerbosity(Int_t v) { fVerbosity = v; }
67 void SetZVtxBins(TAxis *bins) { fBZvtx=bins; }
68 void SetZVtxMixBins(TAxis *bins) { fMixBZvtx=bins; }
69 void SetZvtx(Double_t zvtx) { fZVtxMax = zvtx; }
70 void PrintDhcSettings();
72 enum eAnaMode {kHH=1, kMuH, kHMu, kMuMu, kPSide, kASide};
75 enum ePairingScheme {kSameEvt, kDiffEvt};
76 enum eDataType {kESD, kAOD};
79 void InitEventMixer();
80 void GetESDTracks(MiniEvent*);
81 void GetAODTracks(MiniEvent*);
82 Bool_t VertexOk() const;
83 Bool_t IsGoodMUONtrack(AliESDMuonTrack &track);
84 Bool_t IsGoodMUONtrack(AliAODTrack &track);
85 Bool_t IsTrigger(Double_t eta, Double_t pt);
86 Bool_t IsAssociated(Double_t eta, Double_t pt);
87 Double_t DeltaPhi(Double_t phia, Double_t phib,
88 Double_t rangeMin = -TMath::Pi()/2,
89 Double_t rangeMax = 3*TMath::Pi()/2) const;
90 Int_t Correlate(const MiniEvent &arr1, const MiniEvent &arr2, Int_t pairing = kSameEvt);
91 void UserCreateOutputObjects();
92 void UserExec(Option_t *option);
93 void Terminate(Option_t *);
96 Int_t fVerbosity; // 0 = silence
97 Double_t fEtaMax; // Max |eta| cut for standard ESD or AOD analysis
98 Double_t fZVtxMax; // Max |z| cut (cm)
99 Double_t fPtMin; // Min pt cut
100 Double_t fPtMax; // Max pt cut
101 Int_t fTrackDepth; // #tracks to fill pool
102 Int_t fPoolSize; // Maximum number of events
103 TString fTracksName; // name of track collection
104 Bool_t fDoWeights; // if true weight with 1/N per event
105 Bool_t fFillMuons; // fill the muon tracks into the mini event
106 Bool_t fRequireMuon; // only run on events with a muon track
107 Double_t fReqPtLo; // require a muon above this pt
108 Double_t fReqPtHi; // and below this pt
109 Bool_t fPtTACrit; // use the pTT > pTA criterion?
110 Bool_t fAllTAHists; // create all pTT,pTA combination hists, even t<a?
111 Bool_t fMixInEtaT; // mix in bins of eta_T instead of z_vertex
112 Double_t fEtaTLo; // Min eta for triggers
113 Double_t fEtaTHi; // Max eta for triggers
114 Double_t fEtaALo; // Min eta for associated
115 Double_t fEtaAHi; // Max eta for associated
116 Bool_t fOmitFirstEv; // if true skip first event in chunk
117 Bool_t fDoFillSame; // If true fill same event immediately (not waiting for pool)
118 Bool_t fDoMassCut; // If true cut on invariant mass
119 Bool_t fCheckVertex; // switch to flase for MC generator-level analysis
120 TString fClassName; // If not null only process events with given class
121 TString fCentMethod; // centrality selection method
122 Int_t fNBdeta; // no. deta bins
123 Int_t fNBdphi; // no. dphi bins
124 Bool_t fTriggerMatch; // muon trigger match
125 TAxis *fBPtT; // ptt binning
126 TAxis *fBPtA; // pta binning
127 TAxis *fBCent; // centrality binning
128 TAxis *fBZvtx; // zvtx binning
129 TAxis *fMixBCent; // centrality binning for mixing
130 TAxis *fMixBZvtx; // zvtx binning for mixing
131 THnF *fHEffT; // efficiency for trigger particles
132 THnF *fHEffA; // efficiency for associate particles
133 AliESDEvent *fESD; //! ESD object
134 AliAODEvent *fAOD; //! AOD object
135 TList *fOutputList; //! Output list
136 TH2 *fHEvt; //! Cent vs vtx.
137 TH2 *fHEvtWTr; //! Cent vs vtx. for events with at least one track
138 TH2 *fHTrk; //! Phi vs Eta
139 TH2 *fHPoolReady; //! Check how many Jobs start mixing
140 TH1 *fHPtAss; //! Pt ass
141 TH1 *fHPtTrg; //! Pt trg
142 TH1 *fHPtTrgEvt; //! Pt trg per event for weighting
143 TH3 *fHPtTrgNorm1S; //! Pt trg same events in cent. and zvtx bins, method 1
144 TH3 *fHPtTrgNorm1M; //! Pt trg mixed events in cent. and zvtx bins, method 1
145 TH3 *fHPtTrgNorm2S; //! Pt trg same events in cent. and zvtx bins, method 2
146 TH3 *fHPtTrgNorm2M; //! Pt trg mixed events in cent. and zvtx bins, method 2
147 TH1 *fHCent; //! Centrality
148 TH1 *fHZvtx; //! Zvertex
149 Int_t fNbins; //! Number of histogram bins
150 TH2 **fHSs; //! Same-evt correlations
151 TH2 **fHMs; //! Diff-evt correlations
152 TH1 **fHPts; //! Pt distributions
153 TH1 **fHSMass; //! Mass distributions same
154 TH1 **fHMMass; //! Mass distributions mixed
155 TH3 *fHQATp; //! positive trigger particle distribution for QA
156 TH3 *fHQAAp; //! associated particle distribution for QA
157 TH3 *fHQATpCorr; //! correction applied trigger distribution
158 TH3 *fHQAApCorr; //! correction applied associated distribution
159 TH3 *fHQATm; //! the same for negative particles
163 TH2 *fHPtCentT; //! trigger pT vs centrality
164 TH2 *fHPtCentA; //! associated pT vs centrality
165 TFormula *fIndex; //! index for histograms
166 Double_t fCentrality; //! centrality of current event
167 Double_t fZVertex; //! z vertex of current event
168 AliESDtrackCuts *fEsdTPCOnly; //! track cuts
169 AliEvtPoolManager *fPoolMgr; //! event mixer
170 AliAnalysisUtils *fUtils; //! analysis utils
172 AliDhcTask(const AliDhcTask&); // not implemented
173 AliDhcTask &operator=(const AliDhcTask&); // not implemented
175 ClassDef(AliDhcTask, 9)