]>
Commit | Line | Data |
---|---|---|
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 | 13 | class TH1F; |
14 | class TH1F; | |
15 | class TH2F; | |
16 | class TProfile; | |
17 | class AliESDEvent; | |
18 | class AliESDtrackCuts; | |
19 | class AliFlowTrackCuts; | |
20 | class AliFlowEvent; | |
21 | class AliFlowCandidateTrack; | |
48077518 | 22 | class AliFlowBayesianPID; |
19d77c98 | 23 | |
24 | #include "AliAnalysisTaskSE.h" | |
25 | ||
26 | enum ESDEventStats_t | |
27 | { | |
28 | kNUnlikePairs = 0, | |
29 | kNLikeNPairs, | |
30 | kNLikePPairs, | |
31 | kNUnlikeKPairs, | |
32 | kNLikeNKPairs, | |
33 | kNLikePKPairs, | |
34 | kNStats = kNLikePKPairs, | |
35 | }; | |
36 | ||
37 | class AliAnalysisTaskPhiFlow : public AliAnalysisTaskSE | |
38 | { | |
39 | public: | |
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 | |
114 | private: | |
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 |