]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG2/FLOW/AliFlowTasks/AliAnalysisTaskPIDflowQA.cxx
coverty fixes
[u/mrichter/AliRoot.git] / PWG2 / FLOW / AliFlowTasks / AliAnalysisTaskPIDflowQA.cxx
CommitLineData
f98ea3f1 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial pures is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any pure. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16/* $Id$ */
17
18// AliAnalysisTaskPIDflowQA:
19// QA for pid
20//
21//origin: Marek Chojnacki, Marek.Chojnacki@cern.ch
22//modified: Mikolaj Krzewicki, Mikolaj.Krzewicki@cern.ch
23
24#include "AliAnalysisTaskPIDflowQA.h"
25#include "AliAnalysisManager.h"
26#include "AliESDEvent.h"
27#include "AliInputEventHandler.h"
28#include "AliStack.h"
29#include "AliMCEvent.h"
f98ea3f1 30#include "TH2F.h"
5104aa35 31#include "TProfile.h"
f98ea3f1 32#include "TMath.h"
f98ea3f1 33#include "AliVEvent.h"
34#include "AliESDtrackCuts.h"
35#include "AliPID.h"
36#include "AliCDBManager.h"
37#include "AliFlowEventCuts.h"
38
39ClassImp( AliAnalysisTaskPIDflowQA)
40
41//________________________________________________________________________
42AliAnalysisTaskPIDflowQA:: AliAnalysisTaskPIDflowQA():
43 AliAnalysisTaskSE("AliAnalysisTaskPIDflowQA"),
44 fESD(NULL),
45 fCuts(NULL),
46 fEventCuts(NULL),
47 fESDpid(NULL),
48 fMC(kFALSE),
49 fITSsignal(NULL),
50 fTPCsignal(NULL),
51 fTOFsignal(NULL),
52 fITSsignalpi(NULL),
53 fTPCsignalpi(NULL),
54 fTOFsignalpi(NULL),
55 fITSsignalK(NULL),
56 fTPCsignalK(NULL),
57 fTOFsignalK(NULL),
58 fITSsignalp(NULL),
59 fTPCsignalp(NULL),
60 fTOFsignalp(NULL),
61 fITSsignalpiMC(NULL),
62 fTPCsignalpiMC(NULL),
63 fTOFsignalpiMC(NULL),
64 fITSsignalKMC(NULL),
65 fTPCsignalKMC(NULL),
66 fTOFsignalKMC(NULL),
67 fITSsignalpMC(NULL),
68 fTPCsignalpMC(NULL),
69 fTOFsignalpMC(NULL),
70 fITSsignalpip(NULL),
71 fTPCsignalpip(NULL),
72 fTOFsignalpip(NULL),
73 fITSsignalKp(NULL),
74 fTPCsignalKp(NULL),
75 fTOFsignalKp(NULL),
76 fITSsignalpp(NULL),
77 fTPCsignalpp(NULL),
78 fTOFsignalpp(NULL),
79 fITSsignalpiMCp(NULL),
80 fTPCsignalpiMCp(NULL),
81 fTOFsignalpiMCp(NULL),
82 fITSsignalKMCp(NULL),
83 fTPCsignalKMCp(NULL),
84 fTOFsignalKMCp(NULL),
85 fITSsignalpMCp(NULL),
86 fTPCsignalpMCp(NULL),
87 fTOFsignalpMCp(NULL),
88 fTOFsignalPiExpKvsPt(NULL),
89 fTOFsignalPiExpPvsPt(NULL),
90 fTOFsignalKExpPivsPt(NULL),
91 fTOFsignalKExpPvsPt(NULL),
92 fTOFsignalPExpPivsPt(NULL),
93 fTOFsignalPExpKvsPt(NULL),
94 fTOFsignalPiExpKvsP(NULL),
95 fTOFsignalPiExpPvsP(NULL),
96 fTOFsignalKExpPivsP(NULL),
97 fTOFsignalKExpPvsP(NULL),
98 fTOFsignalPExpPivsP(NULL),
99 fTOFsignalPExpKvsP(NULL),
5104aa35 100 fTOFsignalBeta(NULL),
101 fTOFsignalPiBeta(NULL),
102 fTOFsignalKBeta(NULL),
103 fTOFsignalPBeta(NULL),
f98ea3f1 104 fPvsPt(NULL),
5104aa35 105 fMeanPvsP(NULL),
106 fMeanPtvsPt(NULL),
107 fOutputList(NULL)
f98ea3f1 108{
109 //def ctor
110}
111
112//________________________________________________________________________
113AliAnalysisTaskPIDflowQA:: AliAnalysisTaskPIDflowQA(const char *name):
114 AliAnalysisTaskSE(name),
115 fESD(NULL),
116 fCuts(NULL),
117 fEventCuts(NULL),
118 fESDpid(NULL),
119 fMC(kFALSE),
120 fITSsignal(NULL),
121 fTPCsignal(NULL),
122 fTOFsignal(NULL),
123 fITSsignalpi(NULL),
124 fTPCsignalpi(NULL),
125 fTOFsignalpi(NULL),
126 fITSsignalK(NULL),
127 fTPCsignalK(NULL),
128 fTOFsignalK(NULL),
129 fITSsignalp(NULL),
130 fTPCsignalp(NULL),
131 fTOFsignalp(NULL),
132 fITSsignalpiMC(NULL),
133 fTPCsignalpiMC(NULL),
134 fTOFsignalpiMC(NULL),
135 fITSsignalKMC(NULL),
136 fTPCsignalKMC(NULL),
137 fTOFsignalKMC(NULL),
138 fITSsignalpMC(NULL),
139 fTPCsignalpMC(NULL),
140 fTOFsignalpMC(NULL),
141 fITSsignalpip(NULL),
142 fTPCsignalpip(NULL),
143 fTOFsignalpip(NULL),
144 fITSsignalKp(NULL),
145 fTPCsignalKp(NULL),
146 fTOFsignalKp(NULL),
147 fITSsignalpp(NULL),
148 fTPCsignalpp(NULL),
149 fTOFsignalpp(NULL),
150 fITSsignalpiMCp(NULL),
151 fTPCsignalpiMCp(NULL),
152 fTOFsignalpiMCp(NULL),
153 fITSsignalKMCp(NULL),
154 fTPCsignalKMCp(NULL),
155 fTOFsignalKMCp(NULL),
156 fITSsignalpMCp(NULL),
157 fTPCsignalpMCp(NULL),
158 fTOFsignalpMCp(NULL),
159 fTOFsignalPiExpKvsPt(NULL),
160 fTOFsignalPiExpPvsPt(NULL),
161 fTOFsignalKExpPivsPt(NULL),
162 fTOFsignalKExpPvsPt(NULL),
163 fTOFsignalPExpPivsPt(NULL),
164 fTOFsignalPExpKvsPt(NULL),
165 fTOFsignalPiExpKvsP(NULL),
166 fTOFsignalPiExpPvsP(NULL),
167 fTOFsignalKExpPivsP(NULL),
168 fTOFsignalKExpPvsP(NULL),
169 fTOFsignalPExpPivsP(NULL),
170 fTOFsignalPExpKvsP(NULL),
5104aa35 171 fTOFsignalBeta(NULL),
172 fTOFsignalPiBeta(NULL),
173 fTOFsignalKBeta(NULL),
174 fTOFsignalPBeta(NULL),
f98ea3f1 175 fPvsPt(NULL),
5104aa35 176 fMeanPvsP(NULL),
177 fMeanPtvsPt(NULL),
178 fOutputList(NULL)
f98ea3f1 179{
180 //Constructor
181 fESDpid=new AliESDpid();
182
183 //old
184 fESDpid->GetTPCResponse().SetBetheBlochParameters(0.0283086,
185 2.63394e+01,
186 5.04114e-11,
187 2.12543e+00,
188 4.88663e+00 );
189 //new
190 //fESDpid->GetTPCResponse().SetBetheBlochParameters(1.28949/50.,
191 // 2.74095e+01,
192 // TMath::Exp(-3.21763e+01),
193 // 2.44026,
194 // 6.58800);
195
196 DefineOutput(1, TList::Class());
197}
198
199//________________________________________________________________________
200void AliAnalysisTaskPIDflowQA::UserCreateOutputObjects()
201{
202 //UserCreateOutputObject
5104aa35 203 if (fOutputList) fOutputList->Delete();
204 delete fOutputList;
205 fOutputList=new TList();
f98ea3f1 206
207 const Int_t ndec=2;
208 Int_t startvalue=-1;
209 const Int_t npredec=50;
210 Double_t tabx[ndec*npredec+1];
211 for (Int_t i=0; i<ndec; i++)
212 {
213 for (Int_t j=0; j<npredec; j++)
214 {
215 tabx[npredec*i+j]=TMath::Power(10,((Double_t)i)+((Double_t)startvalue)+((Double_t)j)/((Double_t)npredec));
216 }
217 }
218 tabx[ndec*npredec]=TMath::Power(10,ndec+startvalue);
219
220
221 fITSsignal=new TH2F("fITSsignal","fITSsignal;dEdx;p[GeV/c]",ndec*npredec,tabx,900,0,900);
5104aa35 222 fOutputList->Add(fITSsignal);
f98ea3f1 223 fTPCsignal=new TH2F("fTPCsignal","fTPCsignal;dEdx;p[GeV/c]",ndec*npredec,tabx,900,0,900);
5104aa35 224 fOutputList->Add(fTPCsignal);
f98ea3f1 225 fTOFsignal=new TH2F("fTOFsignal","fTOFsignal;t-t_{#pi};p[GeV/c]",ndec*npredec,tabx,1200,-2000,10000);
5104aa35 226 fOutputList->Add(fTOFsignal);
f98ea3f1 227
228 Int_t kPtBins=60;
229 Double_t binsPtDummy[kPtBins+1];
230 binsPtDummy[0]=0.0;
231 for(int i=1; i<=kPtBins+1; i++)
232 {
233 if(binsPtDummy[i-1]+0.05<1.01)
234 binsPtDummy[i]=binsPtDummy[i-1]+0.05;
235 else
236 binsPtDummy[i]=binsPtDummy[i-1]+0.1;
237 }
238
239 Int_t kPBins=60;
240 Double_t binsPDummy[kPBins+1];
241 binsPDummy[0]=0.0;
242 for(int i=1; i<=kPBins+1; i++)
243 {
244 if(binsPDummy[i-1]+0.05<1.01)
245 binsPDummy[i]=binsPDummy[i-1]+0.05;
246 else
247 binsPDummy[i]=binsPDummy[i-1]+0.1;
248 }
249
250 fITSsignalpi=new TH2F("fITSsignalpi",";pt[GeV/c];signal",kPtBins,binsPtDummy,600,-4,4);//ITS PID signal as function of pt for pi+
251 fTPCsignalpi=new TH2F("fTPCsignalpi",";pt[GeV/c];signal",kPtBins,binsPtDummy,600,-4,4);//TPC PID signal as function of pt for pi+
252 fTOFsignalpi=new TH2F("fTOFsignalpi",";pt[GeV/c];signal",kPtBins,binsPtDummy,1000,-8000,8000);//TOF PID signal as function of pt for pi+
5104aa35 253 fOutputList->Add(fITSsignalpi);
254 fOutputList->Add(fTPCsignalpi);
255 fOutputList->Add(fTOFsignalpi);
f98ea3f1 256
257 fITSsignalK=new TH2F("fITSsignalK",";pt[GeV/c];signal",kPtBins,binsPtDummy,600,-4,4);//ITS PID signal as function of pt for K+
258 fTPCsignalK=new TH2F("fTPCsignalK",";pt[GeV/c];signal",kPtBins,binsPtDummy,600,-4,4);//TPC PID signal as function of pt for K+
259 fTOFsignalK=new TH2F("fTOFsignalK",";pt[GeV/c];signal",kPtBins,binsPtDummy,1000,-8000,8000);//TOF PID signal as function of pt for K+
5104aa35 260 fOutputList->Add(fITSsignalK);
261 fOutputList->Add(fTPCsignalK);
262 fOutputList->Add(fTOFsignalK);
f98ea3f1 263
264 fITSsignalp=new TH2F("fITSsignalp",";pt[GeV/c];signal",kPtBins,binsPtDummy,600,-4,4);//ITS PID signal as function of pt for p
265 fTPCsignalp=new TH2F("fTPCsignalp",";pt[GeV/c];signal",kPtBins,binsPtDummy,600,-4,4);//TPC PID signal as function of pt for p
266 fTOFsignalp=new TH2F("fTOFsignalp",";pt[GeV/c];signal",kPtBins,binsPtDummy,1000,-8000,8000);//TOF PID signal as function of pt for p
5104aa35 267 fOutputList->Add(fITSsignalp);
268 fOutputList->Add(fTPCsignalp);
269 fOutputList->Add(fTOFsignalp);
f98ea3f1 270
271 fTOFsignalPiExpKvsPt=new TH2F("fTOFsignalPiExpKvsPt",";pt[GeV/c];expected signal",kPtBins,binsPtDummy,1000,-8000,8000);//TOF PID signal as function of pt
272 fTOFsignalPiExpPvsPt=new TH2F("fTOFsignalPiExpPvsPt",";pt[GeV/c];expected signal",kPtBins,binsPtDummy,1000,-8000,8000);//TOF PID signal as function of pt
273 fTOFsignalKExpPivsPt=new TH2F("fTOFsignalKExpPivsPt",";pt[GeV/c];expected signal",kPtBins,binsPtDummy,1000,-8000,8000);//TOF PID signal as function of pt
274 fTOFsignalKExpPvsPt=new TH2F("fTOFsignalKExpPvsPt",";pt[GeV/c];expected signal",kPtBins,binsPtDummy,1000,-8000,8000);//TOF PID signal as function of pt
275 fTOFsignalPExpPivsPt=new TH2F("fTOFsignalPExpPivsPt",";pt[GeV/c];expected signal",kPtBins,binsPtDummy,1000,-8000,8000);//TOF PID signal as function of pt
276 fTOFsignalPExpKvsPt=new TH2F("fTOFsignalPExpKvsPt",";pt[GeV/c];expected signal",kPtBins,binsPtDummy,1000,-8000,8000);//TOF PID signal as function of pt
5104aa35 277 fOutputList->Add(fTOFsignalPiExpKvsPt);
278 fOutputList->Add(fTOFsignalPiExpPvsPt);
279 fOutputList->Add(fTOFsignalKExpPivsPt);
280 fOutputList->Add(fTOFsignalKExpPvsPt);
281 fOutputList->Add(fTOFsignalPExpPivsPt);
282 fOutputList->Add(fTOFsignalPExpKvsPt);
f98ea3f1 283
284 //p
285 fITSsignalpip=new TH2F("fITSsignalpip",";p[GeV/c];signal",kPBins,binsPDummy,600,-4,4);//ITS PID signal as function of p for pi+
286 fTPCsignalpip=new TH2F("fTPCsignalpip",";p[GeV/c];signal",kPBins,binsPDummy,600,-4,4);//TPC PID signal as function of p for pi+
287 fTOFsignalpip=new TH2F("fTOFsignalpip",";p[GeV/c];signal",kPBins,binsPDummy,1000,-8000,8000);//TOF PID signal as function of p for pi+
5104aa35 288 fOutputList->Add(fITSsignalpip);
289 fOutputList->Add(fTPCsignalpip);
290 fOutputList->Add(fTOFsignalpip);
f98ea3f1 291
292 fITSsignalKp=new TH2F("fITSsignalKp",";p[GeV/c];signal",kPBins,binsPDummy,600,-4,4);//ITS PID signal as function of p for K+
293 fTPCsignalKp=new TH2F("fTPCsignalKp",";p[GeV/c];signal",kPBins,binsPDummy,600,-4,4);//TPC PID signal as function of p for K+
294 fTOFsignalKp=new TH2F("fTOFsignalKp",";p[GeV/c];signal",kPBins,binsPDummy,1000,-8000,8000);//TOF PID signal as function of p for K+
5104aa35 295 fOutputList->Add(fITSsignalKp);
296 fOutputList->Add(fTPCsignalKp);
297 fOutputList->Add(fTOFsignalKp);
f98ea3f1 298
299 fITSsignalpp=new TH2F("fITSsignalpp",";p[GeV/c];signal",kPBins,binsPDummy,600,-4,4);//ITS PID signal as function of p for p
300 fTPCsignalpp=new TH2F("fTPCsignalpp",";p[GeV/c];signal",kPBins,binsPDummy,600,-4,4);//TPC PID signal as function of p for p
301 fTOFsignalpp=new TH2F("fTOFsignalpp",";p[GeV/c];signal",kPBins,binsPDummy,1000,-8000,8000);//TOF PID signal as function of p for p
5104aa35 302 fOutputList->Add(fITSsignalpp);
303 fOutputList->Add(fTPCsignalpp);
304 fOutputList->Add(fTOFsignalpp);
f98ea3f1 305
306 fTOFsignalPiExpKvsP=new TH2F("fTOFsignalPiExpKvsP",";p[GeV/c];expected signal",kPBins,binsPDummy,1000,-8000,8000);//TOF PID signal as function of pt
307 fTOFsignalPiExpPvsP=new TH2F("fTOFsignalPiExpPvsP",";p[GeV/c];expected signal",kPBins,binsPDummy,1000,-8000,8000);//TOF PID signal as function of pt
308 fTOFsignalKExpPivsP=new TH2F("fTOFsignalKExpPivsP",";p[GeV/c];expected signal",kPBins,binsPDummy,1000,-8000,8000);//TOF PID signal as function of pt
309 fTOFsignalKExpPvsP=new TH2F("fTOFsignalKExpPvsP",";p[GeV/c];expected signal",kPBins,binsPDummy,1000,-8000,8000);//TOF PID signal as function of pt
310 fTOFsignalPExpPivsP=new TH2F("fTOFsignalPExpPivsP",";p[GeV/c];expected signal",kPBins,binsPDummy,1000,-8000,8000);//TOF PID signal as function of pt
311 fTOFsignalPExpKvsP=new TH2F("fTOFsignalPExpKvsP",";p[GeV/c];expected signal",kPBins,binsPDummy,1000,-8000,8000);//TOF PID signal as function of pt
5104aa35 312 fOutputList->Add(fTOFsignalPiExpKvsP);
313 fOutputList->Add(fTOFsignalPiExpPvsP);
314 fOutputList->Add(fTOFsignalKExpPivsP);
315 fOutputList->Add(fTOFsignalKExpPvsP);
316 fOutputList->Add(fTOFsignalPExpPivsP);
317 fOutputList->Add(fTOFsignalPExpKvsP);
318
319 fTOFsignalBeta=new TH2F("fTOFsignalBeta",";p[GeV/c];#beta",kPBins,binsPDummy,1000, 0.2, 1.1);//
320 fTOFsignalPiBeta=new TH2F("fTOFsignalPiBeta",";p[GeV/c];#beta-#beta_{#pi}",kPBins,binsPDummy,1000, -1.0, 1.0);//
321 fTOFsignalKBeta=new TH2F("fTOFsignalKBeta",";p[GeV/c];#beta-#beta_{K}",kPBins,binsPDummy,1000, -1.0, 1.0);//
322 fTOFsignalPBeta=new TH2F("fTOFsignalPBeta",";p[GeV/c];#beta-#beta_{p}",kPBins,binsPDummy,1000, -1.0, 1.0);//
323 fOutputList->Add(fTOFsignalBeta);
324 fOutputList->Add(fTOFsignalPiBeta);
325 fOutputList->Add(fTOFsignalKBeta);
326 fOutputList->Add(fTOFsignalPBeta);
f98ea3f1 327
328 if(fMC)
329 {
330 fITSsignalpiMC=new TH2F("fITSsignalpiMC",";pt[GeV/c];signal",kPtBins,binsPtDummy,600,-4,4);//ITS PID signal as function of pt for pi+
331 fTPCsignalpiMC=new TH2F("fTPCsignalpiMC",";pt[GeV/c];signal",kPtBins,binsPtDummy,600,-4,4);//TPC PID signal as function of pt for pi+
332 fTOFsignalpiMC=new TH2F("fTOFsignalpiMC",";pt[GeV/c];signal",kPtBins,binsPtDummy,1000,-8000,8000);//TOF PID signal as function of pt for pi+
5104aa35 333 fOutputList->Add(fITSsignalpiMC);
334 fOutputList->Add(fTPCsignalpiMC);
335 fOutputList->Add(fTOFsignalpiMC);
f98ea3f1 336
337 fITSsignalKMC=new TH2F("fITSsignalKMC",";pt[GeV/c];signal",kPtBins,binsPtDummy,600,-4,4);//ITS PID signal as function of pt for K+
338 fTPCsignalKMC=new TH2F("fTPCsignalKMC",";pt[GeV/c];signal",kPtBins,binsPtDummy,600,-4,4);//TPC PID signal as function of pt for K+
339 fTOFsignalKMC=new TH2F("fTOFsignalKMC",";pt[GeV/c];signal",kPtBins,binsPtDummy,1000,-8000,8000);//TOF PID signal as function of pt for K+
5104aa35 340 fOutputList->Add(fITSsignalKMC);
341 fOutputList->Add(fTPCsignalKMC);
342 fOutputList->Add(fTOFsignalKMC);
f98ea3f1 343
344 fITSsignalpMC=new TH2F("fITSsignalpMC",";pt[GeV/c];signal",kPtBins,binsPtDummy,600,-4,4);//ITS PID signal as function of pt for p
345 fTPCsignalpMC=new TH2F("fTPCsignalpMC",";pt[GeV/c];signal",kPtBins,binsPtDummy,600,-4,4);//TPC PID signal as function of pt for p
346 fTOFsignalpMC=new TH2F("fTOFsignalpMC",";pt[GeV/c];signal",kPtBins,binsPtDummy,1000,-8000,8000);//TOF PID signal as function of pt for p
5104aa35 347 fOutputList->Add(fITSsignalpMC);
348 fOutputList->Add(fTPCsignalpMC);
349 fOutputList->Add(fTOFsignalpMC);
f98ea3f1 350
351 fITSsignalpiMCp=new TH2F("fITSsignalpiMCp",";p[GeV/c];signal",kPtBins,binsPtDummy,600,-4,4);//ITS PID signal as function of pt for pi+
352 fTPCsignalpiMCp=new TH2F("fTPCsignalpiMCp",";p[GeV/c];signal",kPtBins,binsPtDummy,600,-4,4);//TPC PID signal as function of pt for pi+
353 fTOFsignalpiMCp=new TH2F("fTOFsignalpiMCp",";p[GeV/c];signal",kPtBins,binsPtDummy,1000,-8000,8000);//TOF PID signal as function of pt for pi+
5104aa35 354 fOutputList->Add(fITSsignalpiMCp);
355 fOutputList->Add(fTPCsignalpiMCp);
356 fOutputList->Add(fTOFsignalpiMCp);
f98ea3f1 357
358 fITSsignalKMCp=new TH2F("fITSsignalKMCp",";p[GeV/c];signal",kPtBins,binsPtDummy,600,-4,4);//ITS PID signal as function of pt for K+
359 fTPCsignalKMCp=new TH2F("fTPCsignalKMCp",";p[GeV/c];signal",kPtBins,binsPtDummy,600,-4,4);//TPC PID signal as function of pt for K+
360 fTOFsignalKMCp=new TH2F("fTOFsignalKMCp",";p[GeV/c];signal",kPtBins,binsPtDummy,1000,-8000,8000);//TOF PID signal as function of pt for K+
5104aa35 361 fOutputList->Add(fITSsignalKMCp);
362 fOutputList->Add(fTPCsignalKMCp);
363 fOutputList->Add(fTOFsignalKMCp);
f98ea3f1 364
365 fITSsignalpMCp=new TH2F("fITSsignalpMCp",";p[GeV/c];signal",kPtBins,binsPtDummy,600,-4,4);//ITS PID signal as function of pt for p
366 fTPCsignalpMCp=new TH2F("fTPCsignalpMCp",";p[GeV/c];signal",kPtBins,binsPtDummy,600,-4,4);//TPC PID signal as function of pt for p
367 fTOFsignalpMCp=new TH2F("fTOFsignalpMCp",";p[GeV/c];signal",kPtBins,binsPtDummy,1000,-8000,8000);//TOF PID signal as function of pt for p
5104aa35 368 fOutputList->Add(fITSsignalpMCp);
369 fOutputList->Add(fTPCsignalpMCp);
370 fOutputList->Add(fTOFsignalpMCp);
f98ea3f1 371 }
372
373 fPvsPt=new TH2F("fPvsPt","p vs p_{t}",kPBins,binsPDummy,kPtBins,binsPtDummy);
5104aa35 374 fOutputList->Add(fPvsPt);
f98ea3f1 375
5104aa35 376 fMeanPvsP = new TProfile("fMeanPvsP","Mean P vs P",kPBins,binsPDummy);
377 fMeanPtvsPt = new TProfile("fMeanPtvsPt","Mean Pt vs Pt",kPtBins,binsPtDummy);
378 fOutputList->Add(fMeanPvsP);
379 fOutputList->Add(fMeanPtvsPt);
380
381 PostData(1, fOutputList);
f98ea3f1 382}
383
384//________________________________________________________________________
385void AliAnalysisTaskPIDflowQA::UserExec(Option_t *)
386{
387 fESD = dynamic_cast<AliESDEvent*> (InputEvent());
388 if (!fESD) return;
389
390 if(!fCuts || !fEventCuts)
391 {
392 Printf("No CUTS Defined.........\n");
5104aa35 393 PostData(1, fOutputList);
f98ea3f1 394 return;
395 }
396
397 if (!(fEventCuts->IsSelected(fESD)))
398 {
399 return;
400 }
401
402 AliStack* stack=0x0;
403 if(fMC)
404 {
405 AliMCEvent* mcEvent = (AliMCEvent*) MCEvent();
406 Printf("MC particles: %d", mcEvent->GetNumberOfTracks());
407 stack = mcEvent->Stack();
408 }
409
410 Printf("There are %d tracks in this event", fESD->GetNumberOfTracks());
411 Int_t nTracks=fESD->GetNumberOfTracks();
412
413 AliESDtrack *trackESD=0;
414
415 for(int tr1=0; tr1<nTracks; tr1++)
416 {
417 trackESD=fESD->GetTrack(tr1);
418 if (!trackESD) continue;
419
420 if(!(fCuts->AcceptTrack(trackESD))) continue;
421
422 Int_t label=-1;
423 if(fMC) label=trackESD->GetLabel();
424
425 Int_t pdgcode=0;
426 if(stack&&fMC)
427 {
428 TParticle* particle2 = stack->Particle(TMath::Abs(label));
429 pdgcode=particle2->GetPdgCode();
430 }
431
432 Double_t p=trackESD->GetP();
433 Double_t pt=trackESD->Pt();
434 fPvsPt->Fill(p,pt);
5104aa35 435 fMeanPvsP->Fill(p,p);
436 fMeanPtvsPt->Fill(pt,pt);
f98ea3f1 437
438 pidITS(trackESD,pdgcode);
439 pidTPC(trackESD,pdgcode);
440 pidTOF(trackESD,pdgcode);
441 }
442
443 // Post output data.
5104aa35 444 PostData(1, fOutputList);
f98ea3f1 445}
446
447//________________________________________________________________________
448void AliAnalysisTaskPIDflowQA::Terminate(Option_t *)
449{
450 //Terminate
451 if(fCuts)
452 fCuts->Dump();
453 if(fMC)
454 Printf("MC On\n");
455
456 Printf("AliAnalysisTaskPIDflowQA: end of Terminate");
457}
458
459//________________________________________________________________________
460void AliAnalysisTaskPIDflowQA::pidITS(AliESDtrack* t, Int_t pdgcode)
461{
462 Int_t ngoodSDDSSD=0;
463 Double_t sample[4]= {0.0,0.0,0.0,0.0};
464 t->GetITSdEdxSamples(sample);
465 for(int i=0; i<4; i++)
466 {
467 if(sample[i]>50.0)
468 ngoodSDDSSD++;
469 }
470 if(ngoodSDDSSD<3) return;
471
472 Float_t dedx=(Float_t)t->GetITSsignal();
473 if(dedx<1.0) return;
474
475 Bool_t ifSA=!(t->IsOn(AliESDtrack::kTPCin));
476 Float_t p=t->GetP();
477 Float_t pt=t->Pt();
478
479 Float_t signalpi=fESDpid->GetITSResponse().Bethe(p,AliPID::ParticleMass(2),ifSA);
480 Float_t signalK=fESDpid->GetITSResponse().Bethe(p,AliPID::ParticleMass(3),ifSA);
481 Float_t signalp=fESDpid->GetITSResponse().Bethe(p,AliPID::ParticleMass(4),ifSA);
482 if(signalpi<1.0||signalK<1.0||signalp<1.0) return;
483
484 fITSsignal->Fill(p,dedx);
485
486 fITSsignalpip->Fill(p,TMath::Log(dedx)-TMath::Log(signalpi));
487 fITSsignalKp->Fill(p,TMath::Log(dedx)-TMath::Log(signalK));
488 fITSsignalpp->Fill(p,TMath::Log(dedx)-TMath::Log(signalp));
489
490 if(fMC)
491 {
492 if(TMath::Abs(pdgcode)==211)
493 fITSsignalpiMCp->Fill(p,TMath::Log(dedx)-TMath::Log(signalpi));
494 else if(TMath::Abs(pdgcode)==321)
495 fITSsignalKMCp->Fill(p,TMath::Log(dedx)-TMath::Log(signalK));
496 else if (TMath::Abs(pdgcode)==2212)
497 fITSsignalpMCp->Fill(p,TMath::Log(dedx)-TMath::Log(signalp));
498 }
499
500 fITSsignalpi->Fill(pt,TMath::Log(dedx)-TMath::Log(signalpi));
501 fITSsignalK->Fill(pt,TMath::Log(dedx)-TMath::Log(signalK));
502 fITSsignalp->Fill(pt,TMath::Log(dedx)-TMath::Log(signalp));
503
504 if(fMC)
505 {
506 if(TMath::Abs(pdgcode)==211)
507 fITSsignalpiMC->Fill(pt,TMath::Log(dedx)-TMath::Log(signalpi));
508 else if(TMath::Abs(pdgcode)==321)
509 fITSsignalKMC->Fill(pt,TMath::Log(dedx)-TMath::Log(signalK));
510 else if (TMath::Abs(pdgcode)==2212)
511 fITSsignalpMC->Fill(pt,TMath::Log(dedx)-TMath::Log(signalp));
512 }
513}
514
515//________________________________________________________________________
516void AliAnalysisTaskPIDflowQA::pidTPC(AliESDtrack* t, Int_t pdgcode)
517{
518 Double_t pinTPCglobal=t->GetInnerParam()->GetP();
519 Float_t sigPion = fESDpid->GetTPCResponse().GetExpectedSignal(pinTPCglobal, AliPID::kPion);
520 Float_t sigKaon = fESDpid->GetTPCResponse().GetExpectedSignal(pinTPCglobal, AliPID::kKaon);
521 Float_t sigProton = fESDpid->GetTPCResponse().GetExpectedSignal(pinTPCglobal, AliPID::kProton);
522 Float_t pt=t->Pt();
523 Float_t p=t->GetP();
524 Double_t tpcSignal =t ->GetTPCsignal();
525 if(!(sigPion>0.0&&sigKaon>0.0&&sigProton>0.0))
526 return;
527
528 fTPCsignal->Fill(pinTPCglobal,tpcSignal);
529
530 fTPCsignalpip->Fill(p,(tpcSignal-sigPion)/sigPion);
531 fTPCsignalKp->Fill(p,(tpcSignal-sigKaon)/sigKaon);
532 fTPCsignalpp->Fill(p,(tpcSignal-sigProton)/sigProton);
533
534 if(fMC)
535 {
536 if(TMath::Abs(pdgcode)==211)
537 fTPCsignalpiMCp->Fill(p,(tpcSignal-sigPion)/sigPion);
538 else if(TMath::Abs(pdgcode)==321)
539 fTPCsignalKMCp->Fill(p,(tpcSignal-sigKaon)/sigKaon);
540 else if (TMath::Abs(pdgcode)==2212)
541 fTPCsignalpMCp->Fill(p,(tpcSignal-sigProton)/sigProton);
542 }
543
544 fTPCsignalpi->Fill(pt,(tpcSignal-sigPion)/sigPion);
545 fTPCsignalK->Fill(pt,(tpcSignal-sigKaon)/sigKaon);
546 fTPCsignalp->Fill(pt,(tpcSignal-sigProton)/sigProton);
547
548 if(fMC)
549 {
550 if(TMath::Abs(pdgcode)==211)
551 fTPCsignalpiMC->Fill(pt,(tpcSignal-sigPion)/sigPion);
552 else if(TMath::Abs(pdgcode)==321)
553 fTPCsignalKMC->Fill(pt,(tpcSignal-sigKaon)/sigKaon);
554 else if (TMath::Abs(pdgcode)==2212)
555 fTPCsignalpMC->Fill(pt,(tpcSignal-sigProton)/sigProton);
556 }
557}
558
559//________________________________________________________________________
560void AliAnalysisTaskPIDflowQA::pidTOF(AliESDtrack* t, Int_t pdgcode)
561{
562 Bool_t goodtrack = (t) &&
563 (t->GetStatus() & AliESDtrack::kTOFpid) &&
564 (t->GetTOFsignal() > 12000) &&
565 (t->GetTOFsignal() < 100000) &&
566 (t->GetIntegratedLength() > 365) &&
567 !(t->GetStatus() & AliESDtrack::kTOFmismatch);
568
569 if (!goodtrack) return;
570
5104aa35 571 const Float_t c = 2.99792457999999984e-02;
f98ea3f1 572 Float_t pt=t->Pt();
573 Float_t p=t->GetP();
5104aa35 574 Float_t L = t->GetIntegratedLength();
f98ea3f1 575 Float_t fT0track=fESDpid->GetTOFResponse().GetStartTime(p);
5104aa35 576 Float_t timeTOF=t->GetTOFsignal()- fT0track;
f98ea3f1 577
5104aa35 578 //calculate beta for the track
579 Float_t beta = L/timeTOF/c;
580
f98ea3f1 581 //2=pion 3=kaon 4=protons
582 Double_t inttimes[5]= {-1.0,-1.0,-1.0,-1.0,-1.0};
583 t->GetIntegratedTimes(inttimes);
5104aa35 584 Float_t betaHypothesis[5] = {0.0,0.0,0.0,0.0,0.0};
585 for (Int_t i=0;i<5;i++)
586 {
587 betaHypothesis[i] = L/inttimes[i]/c;
588 }
589
590 fTOFsignal->Fill(p,timeTOF-inttimes[2]);
591
592 //beta part
593 fTOFsignalBeta->Fill(p,beta);
594 fTOFsignalPiBeta->Fill(p,beta-betaHypothesis[2]);
595 fTOFsignalKBeta->Fill(p,beta-betaHypothesis[3]);
596 fTOFsignalPBeta->Fill(p,beta-betaHypothesis[4]);
f98ea3f1 597
598 //P part
5104aa35 599 fTOFsignalpip->Fill(p,timeTOF-inttimes[2]);
600 fTOFsignalKp->Fill(p,timeTOF-inttimes[3]);
601 fTOFsignalpp->Fill(p,timeTOF-inttimes[4]);
f98ea3f1 602
603 fTOFsignalPiExpKvsPt->Fill(pt,-inttimes[2]+inttimes[3]);
604 fTOFsignalPiExpPvsPt->Fill(pt,-inttimes[2]+inttimes[4]);
605 fTOFsignalKExpPivsPt->Fill(pt,-inttimes[3]+inttimes[2]);
606 fTOFsignalKExpPvsPt->Fill(pt,-inttimes[3]+inttimes[4]);
607 fTOFsignalPExpPivsPt->Fill(pt,-inttimes[4]+inttimes[2]);
608 fTOFsignalPExpKvsPt->Fill(pt,-inttimes[4]+inttimes[3]);
609
610 if(fMC)
611 {
612 if(TMath::Abs(pdgcode)==211)
5104aa35 613 fTOFsignalpiMCp->Fill(p,timeTOF-inttimes[2]);
f98ea3f1 614 else if(TMath::Abs(pdgcode)==321)
5104aa35 615 fTOFsignalKMCp->Fill(p,timeTOF-inttimes[3]);
f98ea3f1 616 else if (TMath::Abs(pdgcode)==2212)
5104aa35 617 fTOFsignalpMCp->Fill(p,timeTOF-inttimes[4]);
f98ea3f1 618 }
619
620 //Pt part
5104aa35 621 fTOFsignalpi->Fill(pt,timeTOF-inttimes[2]);
622 fTOFsignalK->Fill(pt,timeTOF-inttimes[3]);
623 fTOFsignalp->Fill(pt,timeTOF-inttimes[4]);
f98ea3f1 624
625 fTOFsignalPiExpKvsP->Fill(p,-inttimes[2]+inttimes[3]);
626 fTOFsignalPiExpPvsP->Fill(p,-inttimes[2]+inttimes[4]);
627 fTOFsignalKExpPivsP->Fill(p,-inttimes[3]+inttimes[2]);
628 fTOFsignalKExpPvsP->Fill(p,-inttimes[3]+inttimes[4]);
629 fTOFsignalPExpPivsP->Fill(p,-inttimes[4]+inttimes[2]);
630 fTOFsignalPExpKvsP->Fill(p,-inttimes[4]+inttimes[3]);
631
632 if(fMC)
633 {
634 if(TMath::Abs(pdgcode)==211)
5104aa35 635 fTOFsignalpiMC->Fill(pt,timeTOF-inttimes[2]);
f98ea3f1 636 else if(TMath::Abs(pdgcode)==321)
5104aa35 637 fTOFsignalKMC->Fill(pt,timeTOF-inttimes[3]);
f98ea3f1 638 else if (TMath::Abs(pdgcode)==2212)
5104aa35 639 fTOFsignalpMC->Fill(pt,timeTOF-inttimes[4]);
f98ea3f1 640 }
641}
642
5104aa35 643Float_t AliAnalysisTaskPIDflowQA::Beta(Float_t m, Float_t p)
644{
645 //get theoretical beta
646 return TMath::Sqrt(1. / (1. + m * m / (p * p)));
647}
648