]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG/FLOW/Tasks/AliAnalysisTaskPhiFlow.h
extra qa
[u/mrichter/AliRoot.git] / PWG / FLOW / Tasks / AliAnalysisTaskPhiFlow.h
CommitLineData
19d77c98 1/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. */
2/* See cxx source for full Copyright notice */
3/* $Id$ */
4
5// AliAnalysisTaskPhiFlow:
6// origin: Redmer Alexander Bertens (rbertens@nikhef.nl)
7// analyis task for phi-meson reconstruction and determination of V2
48077518 8// handles aod's and esd's transparantly
9
10#ifndef ALIANALYSISTASKPHIFLOW_H
11#define ALIANALYSISTASKPHIFLOW_H
12
19d77c98 13class TH1F;
14class TH1F;
15class TH2F;
16class TProfile;
17class AliESDEvent;
18class AliESDtrackCuts;
19class AliFlowTrackCuts;
20class AliFlowEvent;
21class AliFlowCandidateTrack;
48077518 22class AliFlowBayesianPID;
19d77c98 23
24#include "AliAnalysisTaskSE.h"
25
26enum ESDEventStats_t
27{
28 kNUnlikePairs = 0,
29 kNLikeNPairs,
30 kNLikePPairs,
31 kNUnlikeKPairs,
32 kNLikeNKPairs,
33 kNLikePKPairs,
34 kNStats = kNLikePKPairs,
35};
36
37class AliAnalysisTaskPhiFlow : public AliAnalysisTaskSE
38{
39public:
40 AliAnalysisTaskPhiFlow();
41 AliAnalysisTaskPhiFlow(const char *name);
42 virtual ~AliAnalysisTaskPhiFlow();
43
863bc87f 44 Bool_t SetEnableDebugMode(Bool_t debug) {fDebug = debug; return fDebug; }
45 Bool_t SetIsMC(Bool_t ismc) {fIsMC = ismc; return fIsMC; }
48077518 46 TH1F* BookHistogram(const char * name);
863bc87f 47 TH2F* BookPIDHistogram(const char * name, Bool_t TPC);
48077518 48 TH1F* InitPtSpectraHistograms(Int_t i);
48077518 49 TH1F* BookPtHistogram(const char* name);
50 void AddPhiIdentificationOutputObjects();
51 virtual void UserCreateOutputObjects();
48077518 52 template <typename T> Double_t InvariantMass(const T* track1, const T* track2) const;
53 template <typename T> Double_t DeltaDipAngle(const T* track1, const T* track2) const;
54 template <typename T> Bool_t CheckDeltaDipAngle(const T* track1, const T* track2) const;
55 template <typename T> Bool_t CheckCandidateEtaPtCut(const T* track1, const T* track2) const;
863bc87f 56 void SetCentralityParameters(Double_t CentralityMin, Double_t CentralityMax, const char* CentralityMethod) {
57 fCentralityMin = CentralityMin;
58 fCentralityMax = CentralityMax;
59 fkCentralityMethod = CentralityMethod; }
60 Double_t GetCenMin() const {return fCentralityMin; }
61 Double_t GetCenMax() const {return fCentralityMax; }
62 const char* GetCentralityMethod() const {return fkCentralityMethod; }
63 void SetVertexZ(Float_t z) { fVertexRange = z; }
64 Float_t GetVertexZ() const { return fVertexRange; }
48077518 65 void SetMaxDeltaDipAngleAndPt(Float_t a, Float_t pt) { fDeltaDipAngle = a;
66 fDeltaDipPt = pt;
67 fApplyDeltaDipCut = kTRUE; };
863bc87f 68 Float_t GetDeltaDipAngle() const {return fDeltaDipAngle; }
69 Float_t GetDeltaDipPt() const {return fDeltaDipPt; }
48077518 70 template <typename T> Bool_t EventCut(T* event);
863bc87f 71 template <typename T> void PlotMultiplcities(const T* event) const;
48077518 72 template <typename T> Bool_t CheckVertex(const T* event) const ;
73 template <typename T> Bool_t CheckCentrality(T* event);
74 void InitializeBayesianPID(AliESDEvent* event);
75 void InitializeBayesianPID(AliAODEvent* event);
76 template <typename T> Bool_t PassesTPCbayesianCut(T* track) const;
77 Bool_t PassesStrictKaonCuts(AliESDtrack* track) const;
78 Bool_t PassesStrictKaonCuts(AliAODTrack* track) const;
863bc87f 79 Bool_t PassesDCACut(AliAODTrack* track) const;
48077518 80 Bool_t IsKaon(AliESDtrack* track) const;
81 Bool_t IsKaon(AliAODTrack* track) const;
82 template <typename T> Double_t PhiPt(const T* track_1, const T* track_2) const;
83 template <typename T> void PtSelector(Int_t _track_type, const T* track_1, const T* track_2) const;
48077518 84 template <typename T> Bool_t PhiTrack(T* track) const;
48077518 85 template <typename T> void SetNullCuts(T* esd);
86 void PrepareFlowEvent(Int_t iMulti);
87 virtual void UserExec(Option_t *option);
88 virtual void Terminate(Option_t *);
48077518 89 void SetPOICuts(AliFlowTrackCuts *cutsPOI) { fPOICuts = cutsPOI; }
b4f29a18 90 void SetRPCuts(AliFlowTrackCuts *cutsRP) { fCutsRP = cutsRP; }
48077518 91 void SetRequireStrictKaonCuts() { fStrictKaonCuts= kTRUE; }
92 void SetRequireTPCStandAloneKaons() { fRequireTPCStandAlone = kTRUE; }
93 void SetOlderThanPbPbPass2() { fOldTrackParam = kTRUE; }
b4f29a18 94 void SetPIDConfiguration(Double_t prob[7]) { for(Int_t i = 0; i < 7; i++) fPIDConfig[i] = prob[i]; }
863bc87f 95 void GetPIDConfiguration(Double_t prob[7]) const {for(Int_t i = 0; i < 7; i++) prob[i] = fPIDConfig[i]; }
96 void SetPOIDCAXYZ(Double_t dca[5]) { for(Int_t i = 0; i < 5; i++) fDCAConfig[i] = dca[i]; }
97 void GetPOIDCZXYZ(Double_t dca[5]) const { for(Int_t i = 0; i < 5; i++) dca[i] = fDCAConfig[i]; }
98 void SetCandidateEtaAndPt(Double_t mineta, Double_t maxeta, Double_t minpt, Double_t maxpt) { fCandidateMinEta = mineta;
99 fCandidateMaxEta = maxeta;
100 fCandidateMinPt = minpt;
101 fCandidateMaxPt = maxpt;
102 fCandidateEtaPtCut = kTRUE;}
103 void GetCandidateEtaAndPt(Double_t etapt[4]) const { etapt[0] = fCandidateMinEta;
104 etapt[1] = fCandidateMaxEta;
105 etapt[2] = fCandidateMinPt;
106 etapt[3] = fCandidateMaxPt; }
107 void MakeArmPlot(TVector3& a, TVector3& b);
108 void SetCommonConstants(Int_t massBins, Double_t minMass, Double_t maxMass) { fMassBins = massBins;
109 fMinMass = minMass;
110 fMaxMass= maxMass; }
111 void IsMC();
112 Bool_t SetQA(Bool_t qa) {fQA = qa; return fQA;}
19d77c98 113
114private:
115
863bc87f 116 Bool_t fDebug; // enable debug mode
117 Bool_t fIsMC; // mc mode
118 Bool_t fQA; // qa plots
48077518 119 Bool_t fAODAnalysis; // set aod analysis
b4f29a18 120 Int_t fMassBins; // mass bins
121 Double_t fMinMass; // mass range
122 Double_t fMaxMass; // mass range
123 AliFlowTrackCuts *fCutsRP; // track cuts for reference particles
19d77c98 124 AliFlowTrackCuts *fNullCuts; // dummy cuts for flow event tracks
b4f29a18 125 AliPIDResponse *fPIDResponse; //! pid response object
126 AliFlowEvent *fFlowEvent; //! flow events (one for each inv mass band)
48077518 127 AliFlowBayesianPID *fBayesianResponse; //!PID response object
b4f29a18 128 TObjArray *fCandidates; // candidate array
48077518 129 Bool_t fOldTrackParam; // set to true if data is older than pbpb pass 2 production
130 Bool_t fRequireTPCStandAlone; // set TPC standalone cut for kaon selection
131 Bool_t fStrictKaonCuts; // require strict kaon cuts
132 Bool_t fCandidateEtaPtCut; // set eta and pt cut for candidate tracks and combinatorial background
133 Double_t fCandidateMinEta; // minimum eta for candidates
134 Double_t fCandidateMaxEta; // maximum eta for candidates
135 Double_t fCandidateMinPt; // minimum pt for candidates
136 Double_t fCandidateMaxPt; // maximum pt for candidates
863bc87f 137 Double_t fPIDConfig[7]; // configure pid routine
138 Double_t fDCAConfig[5]; // configure dca routine
48077518 139 Double_t fCentrality; // event centrality
19d77c98 140 AliESDEvent *fESD; //! ESD object
48077518 141 AliAODEvent *fAOD; //! AOD oject
19d77c98 142 TList *fOutputList; // ! Output list
143 TH1F *fEventStats; // ! Histogram for event statistics
144 TH1F *fCentralityPass; // ! QA histogram of events that pass centrality cut
145 TH1F *fCentralityNoPass; //! QA histogram of events that do not pass centrality cut
146 TH2F *fNOPID;//! QA histogram of TPC response of all charged particles
147 TH2F *fPIDk;//! QA histogram of TPC response of kaons
863bc87f 148 TH2F *fNOPIDTOF; //! QA histo of TOF repsonse charged particles
149 TH2F *fPIDTOF; //! QA histo of TOF response kaons
19d77c98 150 TH1F *fInvMNP03; //! Invariant mass of unlike sign kaon pairs
151 TH1F *fInvMPP03; //! Invariant mass of like sign (++) kaon pairs
152 TH1F *fInvMNN03; //! Invariant mass of like sign (--) kaon pairs
153 TH1F *fInvMNP36; //! Invariant mass of unlike sign kaon pairs
154 TH1F *fInvMPP36; //! Invariant mass of like sign (++) kaon pairs
155 TH1F *fInvMNN36; //! Invariant mass of like sign (--) kaon pairs
156 TH1F *fInvMNP69; //! Invariant mass of unlike sign kaon pairs
157 TH1F *fInvMPP69; //! Invariant mass of like sign (++) kaon pairs
158 TH1F *fInvMNN69; //! Invariant mass of like sign (--) kaon pairs
159 TH1F *fInvMNP912; //! Invariant mass of unlike sign kaon pairs
160 TH1F *fInvMPP912; //! Invariant mass of like sign (++) kaon pairs
161 TH1F *fInvMNN912; //! Invariant mass of like sign (--) kaon pairs
162 TH1F *fInvMNP1215; //! Invariant mass of unlike sign kaon pairs
163 TH1F *fInvMPP1215; //! Invariant mass of like sign (++) kaon pairs
164 TH1F *fInvMNN1215; //! Invariant mass of like sign (--) kaon pairs
165 TH1F *fInvMNP1518; //! Invariant mass of unlike sign kaon pairs
166 TH1F *fInvMPP1518; //! Invariant mass of like sign (++) kaon pairs
167 TH1F *fInvMNN1518; //! Invariant mass of like sign (--) kaon pairs
168 TH1F *fInvMNP1821; //! Invariant mass of unlike sign kaon pairs
169 TH1F *fInvMPP1821; //! Invariant mass of like sign (++) kaon pairs
170 TH1F *fInvMNN1821; //! Invariant mass of like sign (--) kaon pairs
171 TH1F *fInvMNP2124; //! Invariant mass of unlike sign kaon pairs
172 TH1F *fInvMPP2124; //! Invariant mass of like sign (++) kaon pairs
173 TH1F *fInvMNN2124; //! Invariant mass of like sign (--) kaon pairs
174 TH1F *fInvMNP2427; //! Invariant mass of unlike sign kaon pairs
175 TH1F *fInvMPP2427; //! Invariant mass of like sign (++) kaon pairs
176 TH1F *fInvMNN2427; //! Invariant mass of like sign (--) kaon pairs
177 TH1F *fInvMNP2730; //! Invariant mass of unlike sign kaon pairs
178 TH1F *fInvMPP2730; //! Invariant mass of like sign (++) kaon pairs
179 TH1F *fInvMNN2730; //! Invariant mass of like sign (--) kaon pairs
180 TH1F *fInvMNP3035; //! Invariant mass of unlike sign kaon pairs
181 TH1F *fInvMPP3035; //! Invariant mass of like sign (++) kaon pairs
182 TH1F *fInvMNN3035; //! Invariant mass of like sign (--) kaon pairs
183 TH1F *fInvMNP3540; //! Invariant mass of unlike sign kaon pairs
184 TH1F *fInvMPP3540; //! Invariant mass of like sign (++) kaon pairs
185 TH1F *fInvMNN3540; //! Invariant mass of like sign (--) kaon pairs
186 TH1F *fInvMNP4045; //! Invariant mass of unlike sign kaon pairs
187 TH1F *fInvMPP4045; //! Invariant mass of like sign (++) kaon pairs
188 TH1F *fInvMNN4045; //! Invariant mass of like sign (--) kaon pairs
189 TH1F *fInvMNP4550; //! Invariant mass of unlike sign kaon pairs
190 TH1F *fInvMPP4550; //! Invariant mass of like sign (++) kaon pairs
191 TH1F *fInvMNN4550; //! Invariant mass of like sign (--) kaon pairs
192 TH1F *fInvMNP5055; //! Invariant mass of unlike sign kaon pairs
193 TH1F *fInvMPP5055; //! Invariant mass of like sign (++) kaon pairs
194 TH1F *fInvMNN5055; //! Invariant mass of like sign (--) kaon pairs
195 TH1F *fInvMNP5560; //! Invariant mass of unlike sign kaon pairs
196 TH1F *fInvMPP5560; //! Invariant mass of like sign (++) kaon pairs
197 TH1F *fInvMNN5560; //! Invariant mass of like sign (--) kaon pairs
198 TH1F *fInvMNP6065; //! Invariant mass of unlike sign kaon pairs
199 TH1F *fInvMPP6065; //! Invariant mass of like sign (++) kaon pairs
200 TH1F *fInvMNN6065; //! Invariant mass of like sign (--) kaon pairs
201 TH1F *fInvMNP6570; //! Invariant mass of unlike sign kaon pairs
202 TH1F *fInvMPP6570; //! Invariant mass of like sign (++) kaon pairs
203 TH1F *fInvMNN6570; //! Invariant mass of like sign (--) kaon pairs
b4f29a18 204 TH1F *fPtSpectra03; //! kaon pair Pt spectrum
205 TH1F *fPtSpectra36; //! kaon pair Pt spectrum
206 TH1F *fPtSpectra69; //! kaon pair Pt spectrum
207 TH1F *fPtSpectra912; //! kaon pair Pt spectrum
208 TH1F *fPtSpectra1215; //! kaon pair Pt spectrum
209 TH1F *fPtSpectra1518; //! kaon pair Pt spectrum
210 TH1F *fPtSpectra1821; //! kaon pair Pt spectrum
211 TH1F *fPtSpectra2124; //! kaon pair Pt spectrum
212 TH1F *fPtSpectra2427; //! kaon pair Pt spectrum
213 TH1F *fPtSpectra2730; //! kaon pair Pt spectrum
214 TH1F *fPtSpectra3035; //! kaon pair Pt spectrum
215 TH1F *fPtSpectra3540; //! kaon pair Pt spectrum
216 TH1F *fPtSpectra4045; //! kaon pair Pt spectrum
217 TH1F *fPtSpectra4550; //! kaon pair Pt spectrum
218 TH1F *fPtSpectra5055; //! kaon pair Pt spectrum
219 TH1F *fPtSpectra5560; //! kaon pair Pt spectrum
220 TH1F *fPtSpectra6065; //! kaon pair Pt spectrum
221 TH1F *fPtSpectra6570; //! kaon pair Pt spectrum
19d77c98 222 TH1F *fPtP; //! QA histogram of p_t distribution of positive particles
223 TH1F *fPtN; //! QA histogram of p_t distribution of negative particles
224 TH1F *fPtKP; //! QA histogram of p_t distribution of positive kaons
225 TH1F *fPtKN; //! QA histogram of p_t distribution of negative kaons
226 Double_t fCentralityMin; // lower bound of cenrality bin
227 Double_t fCentralityMax; // upper bound of centrality bin
228 const char *fkCentralityMethod; // method used to determine centrality (V0 by default)
b4f29a18 229 AliFlowTrackCuts *fPOICuts; // cuts for particles of interest (flow package)
19d77c98 230 Float_t fVertexRange; // absolute value of maximum distance of vertex along the z-axis
19d77c98 231 TH1F *fPhi; //! QA plot of azimuthal distribution of tracks used for event plane estimation
232 TH1F *fPt; //! QA plot of p_t sectrum of tracks used for event plane estimation
233 TH1F *fEta; //! QA plot of eta distribution of tracks used for event plane estimation
19d77c98 234 TH1F *fVZEROA; //! QA plot vzeroa multiplicity (all tracks in event)
235 TH1F *fVZEROC; //! QA plot vzeroc multiplicity (all tracks in event)
236 TH1F *fTPCM; //! QA plot TPC multiplicity (tracks used for event plane estimation)
19d77c98 237 Float_t fDeltaDipAngle; // absolute value of delta dip angle to be excluded
238 Float_t fDeltaDipPt; // upper value of pt range in which delta dip angle must be applied
239 Bool_t fApplyDeltaDipCut; // enforce delta dip cut
863bc87f 240 TH2F *fDCAAll;//! qa dca of all charged particles
8a50daf6 241 TH1F *fDCAXYQA; //! qa plot of dca xz
242 TH1F *fDCAZQA; //!qa plot of dca z
863bc87f 243 TH2F *fDCAPrim; //!dca of primaries (mc) or kaons (data)
244 TH2F *fDCASecondaryWeak; //! dca of weak (mc)
245 TH2F *fDCAMaterial; //!dca material (mc) all (data)
246 TH2F *fArmPod; //! ap plot
19d77c98 247
48077518 248 AliAnalysisTaskPhiFlow(const AliAnalysisTaskPhiFlow&); // Not implemented
249 AliAnalysisTaskPhiFlow& operator=(const AliAnalysisTaskPhiFlow&); // Not implemented
b4f29a18 250 void MakeTrack(Double_t, Double_t, Double_t, Double_t, Int_t , Int_t[]) const;
863bc87f 251
252 ClassDef(AliAnalysisTaskPhiFlow, 4);
19d77c98 253
254};
255
256#endif
257
258
b4f29a18 259