different binning
[u/mrichter/AliRoot.git] / PWG1 / AliAnalysisTaskQASym.cxx
CommitLineData
9f9631f3 1#include "TChain.h"
2#include "TTree.h"
3#include "TH1F.h"
4#include "TH2F.h"
1d55ca60 5#include "TH3F.h"
9f9631f3 6#include "TCanvas.h"
7#include "TList.h"
8#include "TParticle.h"
9#include "TParticlePDG.h"
10#include "TProfile.h"
9f9631f3 11
12#include "AliAnalysisTask.h"
13#include "AliAnalysisManager.h"
14
15#include "AliESDEvent.h"
e4ab7356 16#include "AliLog.h"
9f9631f3 17#include "AliESDVertex.h"
18#include "AliESDInputHandler.h"
19#include "AliESDtrackCuts.h"
20#include "AliMultiplicity.h"
21
9f9631f3 22#include "AliAnalysisTaskQASym.h"
23#include "AliExternalTrackParam.h"
24#include "AliTrackReference.h"
9f9631f3 25#include "AliHeader.h"
26#include "AliGenEventHeader.h"
27#include "AliGenDPMjetEventHeader.h"
28
1d55ca60 29// Analysis Task for basic QA on the ESD
30
31// Authors: Jan Fiete Grosse-Oetringhaus, Christian Klein-Boesing,
32// Andreas Morsch, Eva Sicking
33
9f9631f3 34ClassImp(AliAnalysisTaskQASym)
35
1d55ca60 36 //________________________________________________________________________
37 AliAnalysisTaskQASym::AliAnalysisTaskQASym(const char *name)
38 : AliAnalysisTaskSE(name)
39 ,fTrackType(0)
b676e981 40 ,fStandAlone(0)
2efff183 41 ,fFieldOn(kTRUE)
42 ,fHists(0)
43 ,fHistRECpt(0)
44 ,fEta(0)
45 ,fEtaPhi(0)
46 ,fEtaPt(0)
47 ,fQPt(0)
48 ,fDca(0)
49 ,fqRec(0)
ddc7ef22 50 ,fSigmaPtHist(0)
cbac53a7 51
2efff183 52 ,fRecPtPos(0)
53 ,fRecPtNeg(0)
54 ,fRecPhiPos(0)
55 ,fRecPhiNeg(0)
56 ,fRecEtaPos(0)
57 ,fRecEtaNeg(0)
58 ,fRecEtaPtPos(0)
59 ,fRecEtaPtNeg(0)
60 ,fRecDcaPos(0)
61 ,fRecDcaNeg(0)
62 ,fRecDcaNegInv(0)
63 ,fRecDPos(0)
64 ,fRecDNeg(0)
cbac53a7 65
66
2efff183 67 ,fRecQPtPosEta(0)
68 ,fRecQPtNegEta(0)
69 ,fRecPtPosEta(0)
70 ,fRecPtNegEta(0)
71 ,fRecPhiPosEta(0)
72 ,fRecPhiNegEta(0)
73 ,fRecDcaPosEta(0)
74 ,fRecDcaNegEta(0)
75 ,fRecDPosEta(0)
76 ,fRecDNegEta(0)
cbac53a7 77
2efff183 78 ,fRecPtPosVz(0)
79 ,fRecPtNegVz(0)
80 ,fRecEtaPosVz(0)
81 ,fRecEtaNegVz(0)
82 ,fRecPhiPosVz(0)
83 ,fRecPhiNegVz(0)
84 ,fSignedDcaPosVz(0)
85 ,fSignedDcaNegVz(0)
86 ,fRecQPtPosEtaVz(0)
87 ,fRecQPtNegEtaVz(0)
88 ,fRecEtaPtPosVz(0)
89 ,fRecEtaPtNegVz(0)
cbac53a7 90
91
2efff183 92 ,fDeltaPhiAll(0)
93 ,fDeltaPhiLeading(0)
94 ,fDiffDcaD(0)
cbac53a7 95
2efff183 96 ,fPhiRec(0)
97 ,fThetaRec(0)
98 ,fNumber(0)
ddc7ef22 99 ,fNumberAfterCut(0)
2efff183 100 ,fVx(0)
101 ,fVy(0)
102 ,fVz(0)
cbac53a7 103 ,fVertexX(0)
104 ,fVertexY(0)
105 ,fVertexZ(0)
ddc7ef22 106 ,fNVertexSPD(0)
107 ,fNVertexTracks(0)
1d55ca60 108 ,fRecDcaPosPhi(0)
109 ,fRecDcaNegPhi(0)
110 ,fRecPtPosPhi(0)
111 ,fRecPtNegPhi(0)
112 ,fRecEtaPosPhi(0)
113 ,fRecEtaNegPhi(0)
114 ,fRecQPtPhi(0)
115 ,fRecEtaPtPosPhi(0)
116 ,fRecEtaPtNegPhi(0)
117
118 ,fRecPtPosEtaPos(0)
119 ,fRecPtNegEtaPos(0)
120 ,fRecPtPosEtaNeg(0)
121 ,fRecPtNegEtaNeg(0)
122
123 ,fRec1PtPosEtaPos(0)
124 ,fRec1PtNegEtaPos(0)
125 ,fRec1PtPosEtaNeg(0)
126 ,fRec1PtNegEtaNeg(0)
127
128 ,fRecPhiPosEtaPos(0)
129 ,fRecPhiNegEtaPos(0)
130 ,fRecPhiPosEtaNeg(0)
131 ,fRecPhiNegEtaNeg(0)
132
133 ,fRecDcaPosPhiEtaPos(0)
134 ,fRecDcaNegPhiEtaPos(0)
135 ,fRecDcaPosPhiEtaNeg(0)
136 ,fRecDcaNegPhiEtaNeg(0)
98a5f582 137
138 ,fRecDcaPosPtEtaPos(0)
139 ,fRecDcaNegPtEtaPos(0)
140 ,fRecDcaPosPtEtaNeg(0)
141 ,fRecDcaNegPtEtaNeg(0)
142
1d55ca60 143 ,fRecPtPosPhiEtaPos(0)
144 ,fRecPtNegPhiEtaPos(0)
145 ,fRecPtPosPhiEtaNeg(0)
146 ,fRecPtNegPhiEtaNeg(0)
147
148
8ae6f5d0 149// ,fRecDcaPhiPtPosEtaPos(0)
150// ,fRecDcaPhiPtNegEtaPos(0)
151// ,fRecDcaPhiPtPosEtaNeg(0)
152// ,fRecDcaPhiPtNegEtaNeg(0)
153
1d55ca60 154 ,fEtavPt(0)
ddc7ef22 155 ,fPhivPt(0)
156
98a5f582 157 ,fCompareTPCparam(0)
ddc7ef22 158
c07e266e 159 ,fITSlayer(0)
ddc7ef22 160 ,fITSlayerEta(0)
161 ,fITSlayerPhi(0)
162
9f9631f3 163 ,fCuts(0)
1d55ca60 164
9f9631f3 165{
1d55ca60 166 // Constructor
9f9631f3 167 for(Int_t i = 0;i<18;++i){
168 fRecPtTpcSector[i] = 0;
169 fRecEtaTpcSector[i] = 0;
170 fSignedDcaTpcSector[i] = 0;
171 fRecQPtTpcSector[i] = 0;
172 fRecEtaPtTpcSector[i] = 0;
173 }
174
175 for(Int_t i = 0;i< 7;++i){
176 fRecPtPosLadder[i] = 0;
177 fRecPtNegLadder[i] = 0;
178 fRecPhiPosLadder[i] = 0;
179 fRecPhiNegLadder[i] = 0;
180 fRecEtaPosLadder[i] = 0;
181 fRecEtaNegLadder[i] = 0;
182 fSignDcaPos[i] = 0;
183 fSignDcaNeg[i] = 0;
184 fSignDcaNegInv[i] = 0;
185 fPtSigmaPos[i] =0;
186 fPtSigmaNeg[i] =0;
187 fqPtRec[i] =0;
188 fDcaSigmaPos[i] =0;
189 fDcaSigmaNeg[i] =0;
190 }
191
192 DefineOutput(1, TList::Class());
193
194
195
196}
197
198
199//________________________________________________________________________
200void AliAnalysisTaskQASym::UserCreateOutputObjects()
201{
202 // Create histograms
203 // Called once
204
1d55ca60 205 Bool_t oldStatus = TH1::AddDirectoryStatus();
206 TH1::AddDirectory(kFALSE);
207
8ae6f5d0 208 Double_t range = 0.3;
9f9631f3 209 Double_t pt = 20.;
210
211 fHists = new TList();
8d49bc89 212
9f9631f3 213 fHistRECpt = new TH1F("fHistRECpt",
214 " p_{T}",
cbac53a7 215 200, 0., pt);
9f9631f3 216 fEta = new TH1F("fEta",
1d55ca60 217 " #eta",
218 200, -2., 2.);
98a5f582 219 fEtavPt = new TH2F("fEtavPt",
220 " #eta -p_{T}",
221 200, -2., 2.,
ddc7ef22 222 100, -3, 4);
223 fPhivPt = new TH2F("fPhivPt",
224 " #phi -p_{T}",
225 200, 0, 2*TMath::Pi(),
226 100, -3, 5);
98a5f582 227 fCompareTPCparam = new TH2F("fCompareTPCparam",
228 "fCompareTPCparam",
229 100, -1., 1.,100,-5, 5);
c07e266e 230
ddc7ef22 231 fITSlayer = new TH1F("fITSlayer",
232 "fITSlayer",
c07e266e 233 8, -1.5, 6.5);
ddc7ef22 234 fITSlayerEta = new TH2F("fITSlayerEta",
235 "fITSlayerEta",
236 8, -1.5, 6.5, 200, -2.,2.);
237 fITSlayerPhi = new TH2F("fITSlayerPhi",
238 "fITSlayerPhi",
239 8, -1.5, 6.5, 200, 0,2*TMath::Pi());
98a5f582 240
e4ab7356 241 fEtaPhi = new TH2F("fEtaPhi",
1d55ca60 242 " #eta - #phi",
243 200, -2., 2., 128, 0., 2. * TMath::Pi());
e4ab7356 244
9f9631f3 245 fThetaRec = new TH1F("fThetaRec",
1d55ca60 246 " #theta",
247 180, 0., TMath::Pi());
9f9631f3 248 fPhiRec = new TH1F("fPhiRec",
1d55ca60 249 " #phi",
250 180, 0., 2*TMath::Pi());
9f9631f3 251 fNumber = new TH1F("fNumber",
252 "number of tracks per event",
ddc7ef22 253 300, -0.5, 299.5);
254 fNumberAfterCut = new TH1F("fNumberAfterCut",
255 "number of tracks per event after cuts",
256 300, -0.5, 299.5);
9f9631f3 257 fVx = new TH1F("fVx",
cbac53a7 258 "X of first track point",
1d55ca60 259 100, -1., 1.);
9f9631f3 260 fVy = new TH1F("fVy",
cbac53a7 261 "Y of first track point",
1d55ca60 262 100, -1., 1.);
9f9631f3 263 fVz = new TH1F("fVz",
cbac53a7 264 "Z of first track point",
1d55ca60 265 200, -50., 50.);
c07e266e 266 fVertexX = new TH1F("fVertexX",
cbac53a7 267 "X of vertex",
268 100, -1., 1.);
269 fVertexY = new TH1F("fVertexY",
270 "Y of vertex",
271 100, -1., 1.);
272 fVertexZ = new TH1F("fVertexZ",
273 "Z of vertex",
274 200, -50., 50.);
ddc7ef22 275 fNVertexSPD = new TH1F("fNVertexSPD",
276 "Number of SPD vertices",
277 10, -0.5, 9.5);
278 fNVertexTracks = new TH1F("fNVertexTracks",
279 "Number of track vertices",
280 10, -0.5, 9.5);
cbac53a7 281
9f9631f3 282 fEtaPt = new TH1F("fEtaPt",
1d55ca60 283 " #eta/p_{T} ",
284 100, -1., 1.);
9f9631f3 285
286 fQPt = new TH1F("fQPt",
1d55ca60 287 " charge/p_{T} ",
288 100, -1., 1.);
9f9631f3 289
290 fDca = new TH1F("fDca",
1d55ca60 291 " dca ",
292 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
9f9631f3 293
294
295 fqRec = new TH1F("fqRec",
1d55ca60 296 " charge all reconstructed particle",
297 21, -9.5, 10.5);
9f9631f3 298
ddc7ef22 299 fSigmaPtHist = new TH1F("fSigmaPtHist",
1d55ca60 300 "Log_{10}(#sigma_{p_{T}})",
301 200, -4., 8.);
9f9631f3 302
303
304
305
306 //------------
307 for(Int_t ITSlayer_case=0;ITSlayer_case<7;ITSlayer_case++){
308
309 fSignDcaPos[ITSlayer_case] = new TH1F(Form("fSignDcaPos%d", ITSlayer_case),
1d55ca60 310 " Signed dca",
311 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
9f9631f3 312 fSignDcaPos[ITSlayer_case]->GetXaxis()->SetTitle("dca");
313 fSignDcaPos[ITSlayer_case]->GetYaxis()->SetTitle("");
314
315
316 fSignDcaNeg[ITSlayer_case] = new TH1F(Form("fSignDcaNeg%d", ITSlayer_case),
1d55ca60 317 " Signed dcas",
318 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
9f9631f3 319 fSignDcaNeg[ITSlayer_case]->GetXaxis()->SetTitle("dca");
320 fSignDcaNeg[ITSlayer_case]->GetYaxis()->SetTitle("");
321
322 fSignDcaNegInv[ITSlayer_case] = new TH1F(Form("fSignDcaNegInv%d", ITSlayer_case),
1d55ca60 323 " inverse Signed dca ",
324 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
9f9631f3 325 fSignDcaNegInv[ITSlayer_case]->GetXaxis()->SetTitle("-dca");
326 fSignDcaNegInv[ITSlayer_case]->GetYaxis()->SetTitle("");
327
328
329
330
331 fPtSigmaPos[ITSlayer_case] = new TH1F(Form("fPtSigmaPos%d", ITSlayer_case),
1d55ca60 332 " #sigma_{pT} ",
333 208, -4., 8.);
9f9631f3 334 fPtSigmaPos[ITSlayer_case]->GetXaxis()->SetTitle("Log_{10}(#sigma_{pT})");
335 fPtSigmaPos[ITSlayer_case]->GetYaxis()->SetTitle("");
336
337
338 fPtSigmaNeg[ITSlayer_case] = new TH1F(Form("fPtSigmaNeg%d",ITSlayer_case),
1d55ca60 339 " #sigma_{pT}",
340 208, -4., 8.);
9f9631f3 341 fPtSigmaNeg[ITSlayer_case]->GetXaxis()->SetTitle("Log_{10}(#sigma_{pT})");
342 fPtSigmaNeg[ITSlayer_case]->GetYaxis()->SetTitle("");
343
344
345
346
347
348 fqPtRec[ITSlayer_case] = new TH1F(Form("fqPtRec%d",ITSlayer_case),
1d55ca60 349 "q/ p_{T}",
350 200, -100., 100.);
9f9631f3 351 fqPtRec[ITSlayer_case]->GetXaxis()->SetTitle("q_{tr}/p_{T, tr} (GeV/c)");
352 fqPtRec[ITSlayer_case]->GetYaxis()->SetTitle("");
353
354
355
356
357
358 fDcaSigmaPos[ITSlayer_case] = new TH2F(Form("fDcaSigmaPos%d", ITSlayer_case),
1d55ca60 359 " p_{T} shift vs #sigma_{pT} ",
360 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9),200, -4., 4. );
9f9631f3 361 fDcaSigmaPos[ITSlayer_case]->GetXaxis()->SetTitle("signed DCA)");
362 fDcaSigmaPos[ITSlayer_case]->GetYaxis()->SetTitle("log_{10}(#sigma_{pT})");
363
364
365 fDcaSigmaNeg[ITSlayer_case] = new TH2F(Form("fDcaSigmaNeg%d", ITSlayer_case),
1d55ca60 366 " p_{T} shift vs #sigma_{pT} ",
367 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9),200, -4., 4. );
9f9631f3 368 fDcaSigmaNeg[ITSlayer_case]->GetXaxis()->SetTitle("signed DCA");
369 fDcaSigmaNeg[ITSlayer_case]->GetYaxis()->SetTitle("log_{10}(#sigma_{pT})");
1d55ca60 370
371
2efff183 372 }
9f9631f3 373
374
375
1d55ca60 376 // YIELDs---------- positive and negative particles
9f9631f3 377
1d55ca60 378 fRecPtPos = new TH1F("fRecPtPos",
379 " p_{T}",
380 100, 0.,pt);
381 fRecPtPos->GetXaxis()->SetTitle("p_{T} (GeV/c)");
382 fRecPtNeg = new TH1F("fRecPtNeg",
383 " p_{T} ",
384 100, 0., pt);
385 fRecPtNeg->GetXaxis()->SetTitle("p_{T} (GeV/c)");
9f9631f3 386
387
1d55ca60 388 fRecPhiPos = new TH1F("fRecPhiPos",
389 "#phi",
390 361, 0., 360.);
391 fRecPhiPos->GetXaxis()->SetTitle("#phi (deg)");
9f9631f3 392
1d55ca60 393 fRecPhiNeg = new TH1F("fRecPhiNeg",
394 "#phi ",
395 361, 0., 360.);
396 fRecPhiNeg->GetXaxis()->SetTitle("#phi (deg)");
9f9631f3 397
1d55ca60 398 fRecEtaPos = new TH1F("fRecEtaPos",
399 "#eta",
400 200, -2., 2.);
401 fRecEtaPos->GetXaxis()->SetTitle("#eta");
9f9631f3 402
1d55ca60 403 fRecEtaNeg = new TH1F("fRecEtaNeg",
404 "#eta",
405 200, -2., 2.);
406 fRecEtaNeg->GetXaxis()->SetTitle("#eta");
407
408 fRecEtaPtPos = new TH1F("fRecEtaPtPos",
409 "#eta/p_{T}",
410 200, -0.1, .1);
411 fRecEtaPtPos->GetXaxis()->SetTitle("#eta/p_{T}");
412
413 fRecEtaPtNeg = new TH1F("fRecEtaPtNeg",
414 "#eta/p_{T}",
415 200, -.1, .1);
416 fRecEtaPtNeg->GetXaxis()->SetTitle("#eta/p_{T}");
417
418 fRecDcaPos = new TH1F("fRecDcaPos",
419 " dca",
420 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
421 fRecDcaPos->GetXaxis()->SetTitle("dca (cm)");
422 fRecDcaNeg = new TH1F("fRecDcaNeg",
423 " dca",
424 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
425 fRecDcaNeg->GetXaxis()->SetTitle("dca (cm)");
426
427 fRecDcaNegInv = new TH1F("fRecDcaNegInv",
428 " dca",
429 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
430 fRecDcaNegInv->GetXaxis()->SetTitle("dca (cm)");
431
432
433 fRecDPos = new TH1F("fRecDPos",
434 " d",
435 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
436 fRecDPos->GetXaxis()->SetTitle("d (cm)");
437 fRecDNeg = new TH1F("fRecDNeg",
438 "d",
439 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
440 fRecDNeg->GetXaxis()->SetTitle("d (cm)");
441
442
443 // YIELDs ---------------- positive and negative eta
9f9631f3 444
445
1d55ca60 446 fRecQPtPosEta = new TH1F("fRecQPtPosEta",
447 "q/p_{T}",
448 200, -0.5, 0.5);
449 fRecQPtPosEta->GetXaxis()->SetTitle("q/p_{T} ");
450
451 fRecQPtNegEta = new TH1F("fRecQPtNegEta",
452 "q/p_{T}",
453 200, -0.5, 0.5);
454 fRecQPtNegEta->GetXaxis()->SetTitle("q/p_{T}");
9f9631f3 455
1d55ca60 456 fRecPtPosEta = new TH1F("fRecPtPosEta",
457 " p_{T} ",
458 100, 0., pt);
459 fRecPtPosEta->GetXaxis()->SetTitle("p_{T} (GeV/c)");
460
461 fRecPtNegEta = new TH1F("fRecPtNegEta",
462 " p_{T}",
463 100, 0., pt);
464 fRecPtNegEta->GetXaxis()->SetTitle("p_{T} (GeV/c)");
9f9631f3 465
1d55ca60 466 fRecPhiPosEta = new TH1F("fRecPhiPosEta",
467 "#phi",
468 361, 0., 360);
469 fRecPhiPosEta->GetXaxis()->SetTitle("#phi (deg)");
470
471 fRecPhiNegEta = new TH1F("fRecPhiNegEta",
472 "#phi ",
473 361, 0, 360);
474 fRecPhiNegEta->GetXaxis()->SetTitle("#phi (deg)");
475
476 fRecDcaPosEta = new TH1F("fRecDcaPosEta",
477 " dca ",
478 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
479 fRecDcaPosEta->GetXaxis()->SetTitle("dca (cm)");
480 fRecDcaNegEta = new TH1F("fRecDcaNegEta",
481 " dca",
482 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
483 fRecDcaNegEta->GetXaxis()->SetTitle("dca (cm)");
484
485 fRecDPosEta = new TH1F("fRecDPosEta",
486 " d",
487 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
488 fRecDPosEta->GetXaxis()->SetTitle("d (cm)");
489 fRecDNegEta = new TH1F("fRecDNegEta",
9f9631f3 490 "d",
491 100, -5., 5.);
1d55ca60 492 fRecDNegEta->GetXaxis()->SetTitle("d (cm)");
493
494 fRecDcaPosPhi = new TH2F("fRecDcaPosPhi",
495 " dca vs. phi",
496 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2);
497 fRecDcaPosPhi->GetXaxis()->SetTitle("dca (cm)");
498 fRecDcaPosPhi->GetYaxis()->SetTitle("#phi (rad.)");
499 fRecDcaNegPhi = new TH2F("fRecDcaNegPhi",
500 " dca vs. phi",
501 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2);
502 fRecDcaNegPhi->GetXaxis()->SetTitle("dca (cm)");
503 fRecDcaNegPhi->GetYaxis()->SetTitle("#phi (rad.)");
504
505 fRecPtPosPhi = new TH2F("fRecPtPosPhi",
506 " log(p_T) vs. phi",
507 100, -2.5, 2., 180, 0, TMath::Pi()*2);
508 fRecPtPosPhi->GetXaxis()->SetTitle("log_{10}(p_{T})");
509 fRecPtPosPhi->GetYaxis()->SetTitle("#phi (rad.)");
510 fRecPtNegPhi = new TH2F("fRecPtNegPhi",
511 " log(p_T) vs. phi",
512 100,-2.5 , 2., 180, 0, TMath::Pi()*2);
513 fRecPtNegPhi->GetXaxis()->SetTitle("log_{10}(p_{T})");
514 fRecPtNegPhi->GetYaxis()->SetTitle("#phi (rad.)");
515
516 fRecEtaPosPhi = new TH2F("fRecEtaPosPhi",
517 " eta vs. phi",
518 100, -1.5, 1.5, 180, 0, TMath::Pi()*2);
519 fRecEtaPosPhi->GetXaxis()->SetTitle("#eta");
520 fRecEtaPosPhi->GetYaxis()->SetTitle("#phi (rad.)");
521 fRecEtaNegPhi = new TH2F("fRecEtaNegPhi",
522 " eta vs. phi",
523 100, -1.5, 1.5, 180, 0, TMath::Pi()*2);
524 fRecEtaNegPhi->GetXaxis()->SetTitle("#eta");
525 fRecEtaNegPhi->GetYaxis()->SetTitle("#phi (rad.)");
526
527 fRecQPtPhi = new TH2F("fRecQPtPhi",
528 " charge/p_T vs. phi",
529 100,-1. , 1., 180, 0, TMath::Pi()*2);
530 fRecQPtPhi->GetXaxis()->SetTitle("charge/p_{T}");
531 fRecQPtPhi->GetYaxis()->SetTitle("#phi (rad.)");
532
533 fRecEtaPtPosPhi = new TH2F("fRecEtaPtPosPhi",
534 " eta/p_T vs. phi",
535 100, -5, 5., 180, 0, TMath::Pi()*2);
536 fRecEtaPtPosPhi->GetXaxis()->SetTitle("#eta/p_{T}");
537 fRecEtaPtPosPhi->GetYaxis()->SetTitle("#phi (rad.)");
538 fRecEtaPtNegPhi = new TH2F("fRecEtaPtNegPhi",
539 " eta/p_T vs. phi",
540 100,-5 , 5., 180, 0, TMath::Pi()*2);
541 fRecEtaPtNegPhi->GetXaxis()->SetTitle("#eta/p_{T}");
542 fRecEtaPtNegPhi->GetYaxis()->SetTitle("#phi (rad.)");
543
544
545
546
547
548 fRecDcaPosPhiEtaPos = new TH2F("fRecDcaPosPhiEtaPos",
549 " dca vs. phi",
550 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2);
551 fRecDcaPosPhiEtaPos->GetXaxis()->SetTitle("dca (cm)");
552 fRecDcaPosPhiEtaPos->GetYaxis()->SetTitle("#phi (rad.)");
553 fRecDcaNegPhiEtaPos = new TH2F("fRecDcaNegPhiEtaPos",
554 " dca vs. phi",
555 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2);
556 fRecDcaNegPhiEtaPos->GetXaxis()->SetTitle("dca (cm)");
557 fRecDcaNegPhiEtaPos->GetYaxis()->SetTitle("#phi (rad.)");
558
559 fRecPtPosPhiEtaPos = new TH2F("fRecPtPosPhiEtaPos",
560 " log(p_T) vs. phi",
561 100, -2.5, 2., 180, 0, TMath::Pi()*2);
562 fRecPtPosPhiEtaPos->GetXaxis()->SetTitle("log_{10}(p_{T})");
563 fRecPtPosPhiEtaPos->GetYaxis()->SetTitle("#phi (rad.)");
564 fRecPtNegPhiEtaPos = new TH2F("fRecPtNegPhiEtaPos",
565 " log(p_T) vs. phi",
566 100,-2.5 , 2., 180, 0, TMath::Pi()*2);
567 fRecPtNegPhiEtaPos->GetXaxis()->SetTitle("log_{10}(p_{T})");
568 fRecPtNegPhiEtaPos->GetYaxis()->SetTitle("#phi (rad.)");
569
570
571 fRecDcaPosPhiEtaNeg = new TH2F("fRecDcaPosPhiEtaNeg",
572 " dca vs. phi",
573 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2);
574 fRecDcaPosPhiEtaNeg->GetXaxis()->SetTitle("dca (cm)");
575 fRecDcaPosPhiEtaNeg->GetYaxis()->SetTitle("#phi (rad.)");
576 fRecDcaNegPhiEtaNeg = new TH2F("fRecDcaNegPhiEtaNeg",
577 " dca vs. phi",
578 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2);
579 fRecDcaNegPhiEtaNeg->GetXaxis()->SetTitle("dca (cm)");
580 fRecDcaNegPhiEtaNeg->GetYaxis()->SetTitle("#phi (rad.)");
581
582 fRecPtPosPhiEtaNeg = new TH2F("fRecPtPosPhiEtaNeg",
583 " log(p_T) vs. phi",
584 100, -2.5, 2., 180, 0, TMath::Pi()*2);
585 fRecPtPosPhiEtaNeg->GetXaxis()->SetTitle("log_{10}(p_{T})");
586 fRecPtPosPhiEtaNeg->GetYaxis()->SetTitle("#phi (rad.)");
587 fRecPtNegPhiEtaNeg = new TH2F("fRecPtNegPhiEtaNeg",
588 " log(p_T) vs. phi",
589 100,-2.5 , 2., 180, 0, TMath::Pi()*2);
590 fRecPtNegPhiEtaNeg->GetXaxis()->SetTitle("log_{10}(p_{T})");
591 fRecPtNegPhiEtaNeg->GetYaxis()->SetTitle("#phi (rad.)");
98a5f582 592
593 //new
594 fRecDcaPosPtEtaPos = new TH2F("fRecDcaPosPtEtaPos",
595 " dca vs. pt",
596 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2);
597 fRecDcaPosPtEtaPos->GetXaxis()->SetTitle("dca (cm)");
598 fRecDcaPosPtEtaPos->GetYaxis()->SetTitle("log_{10}(p_{T})");
599
600 fRecDcaPosPtEtaNeg = new TH2F("fRecDcaPosPtEtaNeg",
601 " dca vs. pt",
602 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2);
603 fRecDcaPosPtEtaNeg->GetXaxis()->SetTitle("dca (cm)");
604 fRecDcaPosPtEtaNeg->GetYaxis()->SetTitle("log_{10}(p_{T})");
605
606 fRecDcaNegPtEtaPos = new TH2F("fRecDcaNegPtEtaPos",
607 " dca vs. pt",
608 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2);
609 fRecDcaNegPtEtaPos->GetXaxis()->SetTitle("dca (cm)");
610 fRecDcaNegPtEtaPos->GetYaxis()->SetTitle("log_{10}(p_{T})");
611
612 fRecDcaNegPtEtaNeg = new TH2F("fRecDcaNegPtEtaNeg",
613 " dca vs. pt",
614 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2);
615 fRecDcaNegPtEtaNeg->GetXaxis()->SetTitle("dca (cm)");
616 fRecDcaNegPtEtaNeg->GetYaxis()->SetTitle("log_{10}(p_{T})");
617
1d55ca60 618
9f9631f3 619
1d55ca60 620 // YIELDs ---------------- for TPC sectors
621 for(Int_t sector=0; sector<18;sector++){
9f9631f3 622
623
1d55ca60 624 fRecPtTpcSector[sector] = new TH1F(Form("fRecPtTpcSector%02d",sector),
625 Form("p_{T} distribution: TPC sector %d",
626 sector),100, 0., pt);
627 fRecPtTpcSector[sector]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
628
629 fRecEtaTpcSector[sector] = new TH1F(Form("fRecEtaTpcSector%02d",sector),
630 Form("#eta distribution: TPC sector %d",
631 sector),200, -2., 2.);
632 fRecEtaTpcSector[sector]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
633
634
635 fSignedDcaTpcSector[sector] = new TH1F(Form("fSignedDcaTpcSector%02d",sector),
636 Form("dca distribution: TPC sector %d",
637 sector),200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9) );
638 fSignedDcaTpcSector[sector]->GetXaxis()->SetTitle("dca");
639
640 fRecQPtTpcSector[sector] = new TH1F(Form("fRecQPtTpcSector%02d",sector),
641 Form("Q/ p_{T} distribution: TPC sector %d",
642 sector),100, -1., 1.);
643 fRecQPtTpcSector[sector]->GetXaxis()->SetTitle("Q/p_{T} (GeV/c)");
644
645 fRecEtaPtTpcSector[sector] = new TH1F(Form("fRecEtaPtTpcSector%02d",sector),
646 Form("#eta/ p_{T} distribution: TPC sector %d",
647 sector),100, -1., 1.);
648 fRecEtaPtTpcSector[sector]->GetXaxis()->SetTitle("#eta/p_{T} (GeV/c)");
649
650 }
651 // YIELDS ITS ladder
652 for(Int_t i=0;i<7;i++){
653 fRecPtPosLadder[i] = new TH1F(Form("fRecPtPosLadder%d", i),
654 " p_{T} distribution",
655 100, 0., pt);
656 fRecPtPosLadder[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
657 fRecPtNegLadder[i] = new TH1F(Form("fRecPtNegLadder%d",i),
658 " p_{T} distribution ",
659 100, 0., pt);
660 fRecPtNegLadder[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
661
662
663 fRecPhiPosLadder[i] = new TH1F(Form("fRecPhiPosLadder%d",i),
664 "#phi distribution: all pos eta",
665 361, 0., 360);
666 fRecPhiPosLadder[i]->GetXaxis()->SetTitle("#phi (deg)");
667
668 fRecPhiNegLadder[i] = new TH1F(Form("fRecPhiNegLadder%d", i),
669 "#phi distribution: all neg eta",
670 361, 0, 360);
671 fRecPhiNegLadder[i]->GetXaxis()->SetTitle("#phi (deg)");
672
673
674
675 fRecEtaPosLadder[i] = new TH1F(Form("fRecEtaPosLadder%d",i),
676 "#eta distribution",
677 200, -2., 2.);
678 fRecEtaPosLadder[i]->GetXaxis()->SetTitle("#eta)");
679
680 fRecEtaNegLadder[i] = new TH1F(Form("fRecEtaNegLadder%d", i),
681 "#eta distribution",
682 200, -2., 2.);
683 fRecEtaNegLadder[i]->GetXaxis()->SetTitle("#eta");
684 }
685
686 Double_t vzmax = 15;
687
688 fRecPtPosVz = new TH2F("fRecPtPosVz",
689 "p_{T} distribution vs Vz()",
690 100, -1., 2., 200,-vzmax,vzmax);
691 fRecPtPosVz->GetXaxis()->SetTitle("log_{10}(p_{T})");
9f9631f3 692
1d55ca60 693 fRecPtNegVz = new TH2F("fRecPtNegVz",
694 "p_{T} distribution vs Vz()",
695 100, -1., 2.,200,-vzmax,vzmax);
696 fRecPtNegVz->GetXaxis()->SetTitle("Log_{10}(p_{T})");
9f9631f3 697
698
1d55ca60 699 fRecEtaPosVz= new TH2F("fRecEtaPosVz",
700 "#eta distribution vs Vz()",
701 100, -2., 2., 200,-vzmax,vzmax);
702 fRecEtaPosVz->GetXaxis()->SetTitle("#eta");
703 fRecEtaNegVz = new TH2F("fRecEtaNegVz",
9f9631f3 704 "#eta distribution vs Vz()",
1d55ca60 705 100, -2., 2.,200,-vzmax,vzmax);
706 fRecEtaNegVz->GetXaxis()->SetTitle("#eta");
707
708 fRecPhiPosVz= new TH2F("fRecPhiPosVz",
709 "#eta distribution vs Vz()",
710 361, 0., 360., 200,-vzmax,vzmax);
711 fRecPhiPosVz->GetXaxis()->SetTitle("#phi (deg)");
712 fRecPhiNegVz = new TH2F("fRecPhiNegVz",
713 "dca vs Vz()",
714 361, 0., 360.,200,-vzmax,vzmax);
715 fRecPhiNegVz->GetXaxis()->SetTitle("#phi (deg)");
716
717 fSignedDcaPosVz= new TH2F("fSignedDcaPosVz",
718 "#eta distribution vs Vz()",
719 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200,-vzmax,vzmax);
720 fSignedDcaPosVz->GetXaxis()->SetTitle("dca (cm)");
721 fSignedDcaNegVz = new TH2F("fSignedDcaNegVz",
722 "dca vs Vz()",
723 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9),200,-vzmax,vzmax);
724 fSignedDcaNegVz->GetXaxis()->SetTitle("dca (cm)");
725
726 fRecQPtPosEtaVz= new TH2F("fRecQPtPosEtaVz",
727 " Q/p_{T} distribution vs Vz()",
728 100, -1., 1., 200,-vzmax,vzmax);
729 fRecQPtPosEtaVz->GetXaxis()->SetTitle("Q/p_{T}");
730 fRecQPtNegEtaVz = new TH2F("fRecQPtNegEtaVz",
731 " Q/p_{T} distribution vs Vz()",
732 100, -1., 1.,200,-vzmax,vzmax);
733 fRecQPtNegEtaVz->GetXaxis()->SetTitle("Q/p_{T}");
9f9631f3 734
735
1d55ca60 736 fRecEtaPtPosVz= new TH2F("fRecEtaPtPosVz",
737 " #eta/p_{T} distribution vs Vz()",
738 100, -1., 1., 200,-vzmax,vzmax);
739 fRecEtaPtPosVz->GetXaxis()->SetTitle("#eta/p_{T");
740 fRecEtaPtNegVz = new TH2F("fRecEtaPtNegVz",
741 " #eta/p_{T} distribution vs Vz()",
742 100, -1., 1.,200,-vzmax,vzmax);
743 fRecEtaPtNegVz->GetXaxis()->SetTitle("#eta/p_{T}");
744
745 //new
746 fDeltaPhiAll = new TH1F("fDeltaPhiAll",
747 " #Delta #phi",200,-360,360);
748 fDeltaPhiAll->GetXaxis()->SetTitle("#Delta #phi");
749
750
751 fDeltaPhiLeading = new TH2F("fDeltaPhiLeading",
752 " #Delta #phi",361,-360,360, 361,0, 360);
753 fDeltaPhiLeading->GetXaxis()->SetTitle("#Delta #phi (deg.)");
754 fDeltaPhiLeading->GetYaxis()->SetTitle("#phi_{leading particle} (deg.)");
755
756 fDiffDcaD = new TH1F("fDiffDcaD",
757 "dca-d",
758 200, -1., 1.);
759
760
761 fRecPtPosEtaPos = new TH1F("fRecPtPosEtaPos",
762 "p_{T} distribution",100,0,pt);
763 fRecPtPosEtaPos->GetXaxis()->SetTitle("p_{T} (GeV/c)");
764
765 fRecPtNegEtaPos = new TH1F("fRecPtNegEtaPos",
766 "p_{T} distribution",100,0,pt);
767 fRecPtNegEtaPos->GetXaxis()->SetTitle("p_{T} (GeV/c)");
768
769 fRecPtPosEtaNeg = new TH1F("fRecPtPosEtaNeg",
770 "p_{T} distribution",100,0,pt);
771 fRecPtPosEtaNeg->GetXaxis()->SetTitle("p_{T} (GeV/c)");
772
773 fRecPtNegEtaNeg = new TH1F("fRecPtNegEtaNeg",
774 "p_{T} distribution",100,0,pt);
775 fRecPtNegEtaNeg->GetXaxis()->SetTitle("p_{T} (GeV/c)");
776
777
778
779 fRec1PtPosEtaPos = new TH1F("fRec1PtPosEtaPos",
780 "1/p_{T} distribution",100,0,0.5);
781 fRec1PtPosEtaPos->GetXaxis()->SetTitle("p_{T} (c/GeV)");
782
783 fRec1PtNegEtaPos = new TH1F("fRec1PtNegEtaPos",
784 "1/p_{T} distribution",100,0,0.5);
785 fRec1PtNegEtaPos->GetXaxis()->SetTitle("p_{T} (c/GeV)");
786
787 fRec1PtPosEtaNeg = new TH1F("fRec1PtPosEtaNeg",
788 "1/p_{T} distribution",100,0,0.5);
789 fRec1PtPosEtaNeg->GetXaxis()->SetTitle("p_{T} (c/GeV)");
790
791 fRec1PtNegEtaNeg = new TH1F("fRec1PtNegEtaNeg",
792 "1/p_{T} distribution",100,0,0.5);
793 fRec1PtNegEtaNeg->GetXaxis()->SetTitle("1/p_{T} (c/GeV)");
794
795
796
797 fRecPhiPosEtaPos = new TH1F("fRecPhiPosEtaPos",
798 "#phi",180,0,2*TMath::Pi());
799 fRecPhiPosEtaPos->GetXaxis()->SetTitle("#phi (rad.)");
800
801 fRecPhiNegEtaPos = new TH1F("fRecPhiNegEtaPos",
802 "#phi",180,0,2*TMath::Pi());
803 fRecPhiNegEtaPos->GetXaxis()->SetTitle("#phi (rad.)");
804
805 fRecPhiPosEtaNeg = new TH1F("fRecPhiPosEtaNeg",
806 "#phi",180,0,2*TMath::Pi());
807 fRecPhiPosEtaNeg->GetXaxis()->SetTitle("#phi (rad.)");
808
809 fRecPhiNegEtaNeg = new TH1F("fRecPhiNegEtaNeg",
810 "#phi",180,0,2*TMath::Pi());
811 fRecPhiNegEtaNeg->GetXaxis()->SetTitle("#phi (rad.)");
812
813
814
8ae6f5d0 815// fRecDcaPhiPtPosEtaPos = new TH3F("fRecDcaPhiPtPosEtaPos",
816// "#phi- p_{T} - DCA",
817// 180,0,2*TMath::Pi(),
818// 100,0,pt,
819// 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
820// fRecDcaPhiPtPosEtaPos->GetXaxis()->SetTitle("#phi (rad.)");
821// fRecDcaPhiPtPosEtaPos->GetYaxis()->SetTitle("p_{T} (GeV/c)");
822// fRecDcaPhiPtPosEtaPos->GetZaxis()->SetTitle("dca (cm)");
1d55ca60 823
8ae6f5d0 824// fRecDcaPhiPtPosEtaNeg = new TH3F("fRecDcaPhiPtPosEtaNeg",
825// "#phi- p_{T} - DCA",
826// 180,0,2*TMath::Pi(),
827// 100,0,pt,
828// 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
829// fRecDcaPhiPtPosEtaNeg->GetZaxis()->SetTitle("dca (cm)");
830// fRecDcaPhiPtPosEtaNeg->GetXaxis()->SetTitle("#phi (rad.)");
831// fRecDcaPhiPtPosEtaNeg->GetYaxis()->SetTitle("p_{T} (GeV/c)");
1d55ca60 832
8ae6f5d0 833// fRecDcaPhiPtNegEtaPos = new TH3F("fRecDcaPhiPtNegEtaPos",
834// "#phi- p_{T} - DCA",
835// 180,0,2*TMath::Pi(),
836// 100,0,pt,
837// 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
838// fRecDcaPhiPtNegEtaPos->GetZaxis()->SetTitle("dca (cm)");
839// fRecDcaPhiPtNegEtaPos->GetXaxis()->SetTitle("#phi (rad.)");
840// fRecDcaPhiPtNegEtaPos->GetYaxis()->SetTitle("p_{T} (GeV/c)");
1d55ca60 841
8ae6f5d0 842// fRecDcaPhiPtNegEtaNeg = new TH3F("fRecDcaPhiPtNegEtaNeg",
843// "#phi- p_{T} - DCA",
844// 180,0,2*TMath::Pi(),
845// 100,0,pt,
846// 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
847// fRecDcaPhiPtNegEtaNeg->GetZaxis()->SetTitle("dca (cm)");
848// fRecDcaPhiPtNegEtaNeg->GetYaxis()->SetTitle("#phi (rad.)");
849// fRecDcaPhiPtNegEtaNeg->GetXaxis()->SetTitle("p_{T} (GeV/c)");
1d55ca60 850
851
852
9f9631f3 853
854 fHists->SetOwner();
855
9f9631f3 856 fHists->Add(fHistRECpt);
857 fHists->Add(fEta);
1d55ca60 858 fHists->Add(fEtavPt);
ddc7ef22 859 fHists->Add(fPhivPt);
98a5f582 860 fHists->Add(fCompareTPCparam);
c07e266e 861 fHists->Add(fITSlayer);
ddc7ef22 862 fHists->Add(fITSlayerEta);
863 fHists->Add(fITSlayerPhi);
e4ab7356 864 fHists->Add(fEtaPhi);
9f9631f3 865 fHists->Add(fThetaRec);
866 fHists->Add(fPhiRec);
867 fHists->Add(fNumber);
ddc7ef22 868 fHists->Add(fNumberAfterCut);
9f9631f3 869 fHists->Add(fVx);
870 fHists->Add(fVy);
871 fHists->Add(fVz);
cbac53a7 872 fHists->Add(fVertexX);
873 fHists->Add(fVertexY);
874 fHists->Add(fVertexZ);
ddc7ef22 875 fHists->Add(fNVertexSPD);
876 fHists->Add(fNVertexTracks);
9f9631f3 877
878 fHists->Add(fEtaPt);
879 fHists->Add(fQPt);
880 fHists->Add(fDca);
881
882 fHists->Add(fDeltaPhiAll);
883 fHists->Add(fDeltaPhiLeading);
884 fHists->Add(fDiffDcaD);
885
886 fHists->Add(fqRec);
ddc7ef22 887 fHists->Add(fSigmaPtHist);
9f9631f3 888
889 fHists->Add(fRecPtPos);
890 fHists->Add(fRecPtNeg);
891 fHists->Add(fRecPhiPos);
892 fHists->Add(fRecPhiNeg);
893 fHists->Add(fRecEtaPos);
894 fHists->Add(fRecEtaNeg);
895 fHists->Add(fRecEtaPtPos);
896 fHists->Add(fRecEtaPtNeg);
897 fHists->Add(fRecDcaPos);
898 fHists->Add(fRecDcaNeg);
899 fHists->Add(fRecDcaNegInv);
900 fHists->Add(fRecDPos);
901 fHists->Add(fRecDNeg);
902
903
904 fHists->Add(fRecQPtPosEta);
905 fHists->Add(fRecQPtNegEta);
906 fHists->Add(fRecPtPosEta);
907 fHists->Add(fRecPtNegEta);
908 fHists->Add(fRecPhiPosEta);
909 fHists->Add(fRecPhiNegEta);
910 fHists->Add(fRecDcaPosEta);
911 fHists->Add(fRecDcaNegEta);
912 fHists->Add(fRecDPosEta);
913 fHists->Add(fRecDNegEta);
914
915
916 for(Int_t i=0;i<18;i++){
917 fHists->Add(fRecPtTpcSector[i]);
918 fHists->Add(fRecEtaTpcSector[i]);
919 fHists->Add(fSignedDcaTpcSector[i]);
920 fHists->Add(fRecQPtTpcSector[i]);
921 fHists->Add(fRecEtaPtTpcSector[i]);
922 }
923
924 for(Int_t i=0;i<7;i++){
925 fHists->Add(fRecPtPosLadder[i]);
926 fHists->Add(fRecPtNegLadder[i]);
927 fHists->Add(fRecPhiPosLadder[i]);
928 fHists->Add(fRecPhiNegLadder[i]);
929 fHists->Add(fRecEtaPosLadder[i]);
930 fHists->Add(fRecEtaNegLadder[i]);
931 }
932
933 fHists->Add(fRecPtPosVz);
934 fHists->Add(fRecPtNegVz);
935 fHists->Add(fRecEtaPosVz);
936 fHists->Add(fRecEtaNegVz);
937 fHists->Add(fRecPhiPosVz);
938 fHists->Add(fRecPhiNegVz);
939 fHists->Add(fSignedDcaPosVz);
940 fHists->Add(fSignedDcaNegVz);
941 fHists->Add(fRecQPtPosEtaVz);
942 fHists->Add(fRecQPtNegEtaVz);
943 fHists->Add(fRecEtaPtPosVz);
944 fHists->Add(fRecEtaPtNegVz);
945
946
947 for(Int_t i=0;i<7;i++){
948 fHists->Add(fSignDcaPos[i]);
949 fHists->Add(fSignDcaNeg[i]);
950 fHists->Add(fSignDcaNegInv[i]);
951
952 fHists->Add(fPtSigmaPos[i]);
953 fHists->Add(fPtSigmaNeg[i]);
954 fHists->Add(fqPtRec[i]);
955
956 fHists->Add(fDcaSigmaPos[i]);
957 fHists->Add(fDcaSigmaNeg[i]);
958
959
960 }
961
1d55ca60 962 fHists->Add(fRecDcaPosPhi);
963 fHists->Add(fRecDcaNegPhi);
964 fHists->Add(fRecPtPosPhi);
965 fHists->Add(fRecPtNegPhi);
966 fHists->Add(fRecEtaPosPhi);
967 fHists->Add(fRecEtaNegPhi);
968 fHists->Add(fRecQPtPhi);
969 fHists->Add(fRecEtaPtPosPhi);
970 fHists->Add(fRecEtaPtNegPhi);
971
972 fHists->Add(fRecPtPosEtaPos);
973 fHists->Add(fRecPtNegEtaPos);
974 fHists->Add(fRecPtPosEtaNeg);
975 fHists->Add(fRecPtNegEtaNeg);
976
977 fHists->Add(fRec1PtPosEtaPos);
978 fHists->Add(fRec1PtNegEtaPos);
979 fHists->Add(fRec1PtPosEtaNeg);
980 fHists->Add(fRec1PtNegEtaNeg);
981
982
983 fHists->Add(fRecPhiPosEtaPos);
984 fHists->Add(fRecPhiNegEtaPos);
985 fHists->Add(fRecPhiPosEtaNeg);
986 fHists->Add(fRecPhiNegEtaNeg);
987
988 fHists->Add(fRecDcaPosPhiEtaPos);
989 fHists->Add(fRecDcaNegPhiEtaPos);
990 fHists->Add(fRecPtPosPhiEtaPos);
991 fHists->Add(fRecPtNegPhiEtaPos);
992 fHists->Add(fRecDcaPosPhiEtaNeg);
993 fHists->Add(fRecDcaNegPhiEtaNeg);
994 fHists->Add(fRecPtPosPhiEtaNeg);
995 fHists->Add(fRecPtNegPhiEtaNeg);
996
98a5f582 997 fHists->Add(fRecDcaPosPtEtaPos);
998 fHists->Add(fRecDcaNegPtEtaPos);
999 fHists->Add(fRecDcaPosPtEtaNeg);
1000 fHists->Add(fRecDcaNegPtEtaNeg);
1001
8ae6f5d0 1002 // fHists->Add(fRecDcaPhiPtPosEtaPos);
1003 // fHists->Add(fRecDcaPhiPtPosEtaNeg);
1004 // fHists->Add(fRecDcaPhiPtNegEtaPos);
1005 // fHists->Add(fRecDcaPhiPtNegEtaNeg);
9f9631f3 1006
1007
1d55ca60 1008
1009
1010
1011// for (Int_t i=0; i<fHists->GetEntries(); ++i) {
1012// TH1 *h1 = dynamic_cast<TH1*>(fHists->At(i));
1013// if (h1){
1014// // Printf("%s ",h1->GetName());
1015// h1->Sumw2();
1016// }
1017// }
1d55ca60 1018
1019 TH1::AddDirectory(oldStatus);
9f9631f3 1020}
1021
1022//__________________________________________________________
1023
1024void AliAnalysisTaskQASym::UserExec(Option_t *)
1025{
ddc7ef22 1026 // QA of global, TPC, ITS and ITS stand alone tracks
1027 // exploiting basic symmetries
1028
9f9631f3 1029 AliVEvent *event = InputEvent();
1030 if (!event) {
1d55ca60 1031 Printf("ERROR: Could not retrieve event");
1032 return;
9f9631f3 1033 }
1034
1035
1036 if(Entry()==0){
1037 AliESDEvent* esd = dynamic_cast<AliESDEvent*>(event);
1038 if(esd){
1039 Printf("We are reading from ESD");
1040 }
1041
1042 }
1043
1d55ca60 1044
1045
1046 if(fDebug>1)Printf("There are %d tracks in this event", event->GetNumberOfTracks());
1047
9f9631f3 1048
50dbca26 1049 Int_t leadingTrack = 0;
1050 Float_t leadingEnergy = -20.;
1051 Float_t leadingPhi = 0;//TMath::Pi();
9f9631f3 1052
1053
ddc7ef22 1054 //check vertices
1055 AliESDEvent* esd = dynamic_cast<AliESDEvent*>(event);
1056 Int_t nPileSPDVertices=1+esd->GetNumberOfPileupVerticesSPD(); // also SPD main vertex
1057 Int_t nPileTrkVertices=esd->GetNumberOfPileupVerticesTracks();
1058 fNVertexSPD->Fill(nPileSPDVertices);
1059 fNVertexTracks->Fill(nPileTrkVertices);
9f9631f3 1060
ddc7ef22 1061
1062 //check primary vertex
e4ab7356 1063 const AliVVertex* vertex = event->GetPrimaryVertex();
8ae6f5d0 1064 if(vertex->GetNContributors()==0) return;
cbac53a7 1065 Float_t vx = vertex->GetX();
1066 Float_t vy = vertex->GetY();
e4ab7356 1067 Float_t vz = vertex->GetZ();
cbac53a7 1068
1069 fVertexX->Fill(vx);
1070 fVertexY->Fill(vy);
1071 fVertexZ->Fill(vz);
1072
e4ab7356 1073 if (TMath::Abs(vz) > 10.) return;
1074
ddc7ef22 1075 fNumber->Fill(event->GetNumberOfTracks());
1076
1fcb92ef 1077 AliESDtrack *tpcP = 0x0;
ddc7ef22 1078 Int_t fNTracksAccepted=0;
1fcb92ef 1079
9f9631f3 1080 for (Int_t iTrack = 0; iTrack < event->GetNumberOfTracks(); iTrack++) {
1081
1fcb92ef 1082 //prevent mem leak for TPConly track
1083 if(fTrackType==2&&tpcP){
1084 delete tpcP;
1085 tpcP = 0;
1086 }
9f9631f3 1087
1088 AliVParticle *track = event->GetTrack(iTrack);
1089 AliESDtrack *esdtrack = dynamic_cast<AliESDtrack*>(track);
1d55ca60 1090 esdtrack->PropagateToDCA(event->GetPrimaryVertex(),
1091 event->GetMagneticField(), 10000.);
1092
9f9631f3 1093 if (!track) {
1094 Printf("ERROR: Could not receive track %d", iTrack);
1095 continue;
1096 }
1d55ca60 1097 //__________
1098 // run Task for global tracks or ITS tracks or TPC tracks
1d55ca60 1099 const AliExternalTrackParam *tpcPin = 0x0;
1100 Double_t phiIn=0;
cbac53a7 1101
1d55ca60 1102 if(fTrackType==0){
1103 //Fill all histograms with global tracks
1104 tpcP = esdtrack;
1105 phiIn = tpcP->Phi();
1106 if (!tpcP) continue;
1107 if (!fCuts->AcceptTrack(tpcP)) continue;
1108 }
1109 else if(fTrackType==1){
1110 //Fill all histograms with ITS tracks
1111 tpcP = esdtrack;
1112 phiIn = tpcP->Phi();
1113 if (!tpcP) continue;
1114 if (!fCuts->AcceptTrack(tpcP)) continue;
b676e981 1115 if(fStandAlone==kTRUE) {
1116 if(!(tpcP->GetStatus()&AliESDtrack::kITSpureSA))continue;
1117 }
1d55ca60 1118 }
1119 else if(fTrackType==2){
1120 //Fill all histograms with TPC track information
1121 tpcPin = esdtrack->GetInnerParam();
1122 if (!tpcPin) continue;
1123 phiIn=tpcPin->Phi();
1124
1125 tpcP = AliESDtrackCuts::GetTPCOnlyTrack(dynamic_cast<AliESDEvent*>(event),esdtrack->GetID());
1126 if (!tpcP) continue;
1127 if (!fCuts->AcceptTrack(tpcP)) continue;
1128 if(tpcP->GetNcls(1)>160)continue;//jacek's track cut
1129 if(tpcP->GetConstrainedChi2TPC()<0)continue; // jacek's track cut
1130 }
1131 else{
1132 Printf("ERROR: wrong track type \n");
1133 continue;
1134 }
1135 //___________
1136 //
1137
ddc7ef22 1138
1139 fNTracksAccepted++;
1d55ca60 1140
50dbca26 1141 if(tpcP->E()>leadingEnergy){
1142 leadingTrack=iTrack;
1143 leadingEnergy=tpcP->E();
1d55ca60 1144 leadingPhi=phiIn;
9f9631f3 1145 }
1146
98a5f582 1147
9f9631f3 1148 fqRec->Fill(tpcP->Charge());
1149
1150
ddc7ef22 1151 Double_t fSigmaPt = tpcP->GetSigma1Pt2();
1152 fSigmaPt= sqrt(fSigmaPt);
1153 fSigmaPt= fSigmaPt *(tpcP->Pt()*tpcP->Pt());
9f9631f3 1154
ddc7ef22 1155 if(TMath::Abs(fSigmaPt) < 1.e-10) continue;
8d49bc89 1156
ddc7ef22 1157 fSigmaPtHist->Fill(TMath::Log10(fSigmaPt));
1d55ca60 1158
9f9631f3 1159
9f9631f3 1160 // hits in ITS layer
1161 Int_t cas=-1;
1d55ca60 1162 if(tpcP->HasPointOnITSLayer(0))
9f9631f3 1163 cas=0;
1d55ca60 1164 else if(!tpcP->HasPointOnITSLayer(0)
1165 && tpcP->HasPointOnITSLayer(1))
9f9631f3 1166 cas=1;
1d55ca60 1167 else if(!tpcP->HasPointOnITSLayer(0)
1168 && !tpcP->HasPointOnITSLayer(1)
1169 && tpcP->HasPointOnITSLayer(2))
9f9631f3 1170 cas=2;
1d55ca60 1171 else if(!tpcP->HasPointOnITSLayer(0)
1172 && !tpcP->HasPointOnITSLayer(1)
1173 && !tpcP->HasPointOnITSLayer(2)
1174 && tpcP->HasPointOnITSLayer(3))
9f9631f3 1175 cas=3;
1d55ca60 1176 else if(!tpcP->HasPointOnITSLayer(0)
1177 && !tpcP->HasPointOnITSLayer(1)
1178 && !tpcP->HasPointOnITSLayer(2)
1179 && !tpcP->HasPointOnITSLayer(3)
1180 && tpcP->HasPointOnITSLayer(4))
9f9631f3 1181 cas=4;
1d55ca60 1182 else if( !tpcP->HasPointOnITSLayer(0)
1183 && !tpcP->HasPointOnITSLayer(1)
1184 && !tpcP->HasPointOnITSLayer(2)
1185 && !tpcP->HasPointOnITSLayer(3)
1186 && !tpcP->HasPointOnITSLayer(4)
1187 && tpcP->HasPointOnITSLayer(5))
9f9631f3 1188 cas=5;
1189 else
1190 cas=6;
1191
1192
1193
1194 //-------------------
ddc7ef22 1195 Float_t fXVertexCor = 0.;
1196 Float_t fYVertexCor = 0.;
9f9631f3 1197
ddc7ef22 1198 fXVertexCor = tpcP->Xv() - vertex->GetX(); // coordinate corrected for vertex position
1199 fYVertexCor = tpcP->Yv() - vertex->GetY(); // "
1200 Double_t fSignedDca = (tpcP->Py()*fXVertexCor - tpcP->Px()*fYVertexCor)/tpcP->Pt();
9f9631f3 1201
1202
1203 fqPtRec[cas]->Fill(tpcP->Charge()/tpcP->Pt());
1204
1d55ca60 1205
1206
9f9631f3 1207 fHistRECpt->Fill(tpcP->Pt());
1208 fEta->Fill(tpcP->Eta());
ddc7ef22 1209 fEtavPt->Fill(tpcP->Eta(), TMath::Log(tpcP->Pt()));
1210 fPhivPt->Fill(tpcP->Phi(), TMath::Log(tpcP->Pt()));
1d55ca60 1211 fEtaPhi->Fill(tpcP->Eta(), phiIn);
9f9631f3 1212 fThetaRec->Fill(tpcP->Theta());
1d55ca60 1213 fPhiRec->Fill(phiIn);
9f9631f3 1214 fVx->Fill(tpcP->Xv());
1215 fVy->Fill(tpcP->Yv());
1216 fVz->Fill(tpcP->Zv());
1217
1218
1219 fEtaPt->Fill(tpcP->Eta()/tpcP->Pt());
1220 fQPt->Fill(tpcP->Charge()/tpcP->Pt());
ddc7ef22 1221 fDca->Fill(fSignedDca);
1d55ca60 1222 fRecQPtPhi->Fill(tpcP->Charge()/tpcP->Pt(), phiIn);
9f9631f3 1223
ddc7ef22 1224 Float_t fXY = 0.;
1225 Float_t fZ = 0.;
9f9631f3 1226
ddc7ef22 1227 tpcP->GetImpactParameters(fXY,fZ);
1228 fDiffDcaD->Fill(fSignedDca+fXY);
9f9631f3 1229
ddc7ef22 1230 if(fTrackType==2) fCompareTPCparam->Fill(fZ,tpcPin->GetTgl());
e4ab7356 1231
c07e266e 1232 if(fTrackType!=2){//for global and ITS tracks
1233 for(Int_t itsLayer=0;itsLayer<6;itsLayer++){
1234 if(tpcP->HasPointOnITSLayer(itsLayer)){
1235 fITSlayer->Fill(itsLayer);
ddc7ef22 1236 fITSlayerEta->Fill(itsLayer, tpcP->Eta());
1237 fITSlayerPhi->Fill(itsLayer, tpcP->Phi());
c07e266e 1238 }
1239 }
1240 }
1241
1242 //for positive particles
1243
9f9631f3 1244 if(tpcP->Charge()>0){
1245 fRecPtPos->Fill(tpcP->Pt());
1246 fRecPtPosLadder[cas]->Fill(tpcP->Pt());
1247 fRecPtPosVz->Fill(TMath::Log10(tpcP->Pt()),tpcP->Zv());
1d55ca60 1248 fRecPhiPos->Fill(TMath::RadToDeg()*phiIn);
c07e266e 1249
1250
1d55ca60 1251 fRecPhiPosLadder[cas]->Fill(TMath::RadToDeg()*phiIn);
1252 fRecPhiPosVz->Fill(TMath::RadToDeg()*phiIn,tpcP->Zv());
ddc7ef22 1253 fSignedDcaPosVz->Fill(fSignedDca,tpcP->Zv());
9f9631f3 1254
1255 fRecEtaPos->Fill(tpcP->Eta());
1256 fRecEtaPosLadder[cas]->Fill(tpcP->Eta());
1257 fRecEtaPtPos->Fill(tpcP->Eta()/tpcP->Pt());
1258 fRecEtaPosVz->Fill(tpcP->Eta(),tpcP->Zv());
1259 fRecEtaPtPosVz->Fill(tpcP->Eta()/tpcP->Pt(),tpcP->Zv());
1260
ddc7ef22 1261 fRecDcaPos->Fill(fSignedDca);
1262 fRecDcaPosPhi->Fill(fSignedDca, phiIn);
1d55ca60 1263 fRecPtPosPhi->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1264 fRecEtaPtPosPhi->Fill(tpcP->Eta()/tpcP->Pt(), phiIn);
1265 fRecEtaPosPhi->Fill(tpcP->Eta(), phiIn);
ddc7ef22 1266 fRecDPos->Fill(fXY);
1267 fSignDcaPos[cas]->Fill(fSignedDca);
9f9631f3 1268
1269
ddc7ef22 1270 fDcaSigmaPos[cas]->Fill(fSignedDca, TMath::Log10(fSigmaPt));
9f9631f3 1271
ddc7ef22 1272 fPtSigmaPos[cas]->Fill(TMath::Log10(fSigmaPt));
1d55ca60 1273 //pos eta
1274 if(tpcP->Eta()>0){
1275 fRecPtPosEtaPos->Fill(tpcP->Pt());
1276 fRec1PtPosEtaPos->Fill(1/tpcP->Pt());
1277 fRecPhiPosEtaPos->Fill(phiIn);
ddc7ef22 1278 fRecDcaPosPhiEtaPos->Fill(fSignedDca, phiIn);
1279 fRecDcaPosPtEtaPos->Fill(fSignedDca, TMath::Log10(tpcP->Pt()));
1d55ca60 1280 fRecPtPosPhiEtaPos->Fill(TMath::Log10(tpcP->Pt()), phiIn);
ddc7ef22 1281 //fRecDcaPhiPtPosEtaPos->Fill(phiIn, tpcP->Pt(), fSignedDca);
1d55ca60 1282 }
1283 //neg eta
1284 else{
1285 fRecPtPosEtaNeg->Fill(tpcP->Pt());
1286 fRec1PtPosEtaNeg->Fill(1/tpcP->Pt());
1287 fRecPhiPosEtaNeg->Fill(phiIn);
ddc7ef22 1288 fRecDcaPosPhiEtaNeg->Fill(fSignedDca, phiIn);
1289 fRecDcaPosPtEtaNeg->Fill(fSignedDca, TMath::Log10(tpcP->Pt()));
1d55ca60 1290 fRecPtPosPhiEtaNeg->Fill(TMath::Log10(tpcP->Pt()), phiIn);
ddc7ef22 1291 //fRecDcaPhiPtPosEtaNeg->Fill(phiIn, tpcP->Pt(), fSignedDca);
1d55ca60 1292 }
1293
9f9631f3 1294 }
1295 //and negative particles
1296 else {
1297 fRecPtNeg->Fill(tpcP->Pt());
1298 fRecPtNegLadder[cas]->Fill(tpcP->Pt());
1299 fRecPtNegVz->Fill(TMath::Log10(tpcP->Pt()),tpcP->Zv());
1300
1d55ca60 1301 fRecPhiNeg->Fill(TMath::RadToDeg()*phiIn);
1302 fRecPhiNegLadder[cas]->Fill(TMath::RadToDeg()*phiIn);
1303 fRecPhiNegVz->Fill(TMath::RadToDeg()*phiIn,tpcP->Zv());
ddc7ef22 1304 fSignedDcaNegVz->Fill(fSignedDca,tpcP->Zv());
9f9631f3 1305 fRecEtaPtNegVz->Fill(tpcP->Eta()/tpcP->Pt(),tpcP->Zv());
1306
1307 fRecEtaNeg->Fill(tpcP->Eta());
1308 fRecEtaNegLadder[cas]->Fill(tpcP->Eta());
1309 fRecEtaPtNeg->Fill(tpcP->Eta()/tpcP->Pt());
1310 fRecEtaNegVz->Fill(tpcP->Eta(),tpcP->Zv());
1311
ddc7ef22 1312 fRecDcaNeg->Fill(fSignedDca);
1313 fRecDcaNegInv->Fill(-fSignedDca);
1314 fRecDcaNegPhi->Fill(fSignedDca, phiIn);
1d55ca60 1315 fRecPtNegPhi->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1316 fRecEtaNegPhi->Fill(tpcP->Eta(), phiIn);
1317 fRecEtaPtNegPhi->Fill(tpcP->Eta()/tpcP->Pt(), phiIn);
ddc7ef22 1318 fRecDNeg->Fill(fXY);
1319 fSignDcaNeg[cas]->Fill(fSignedDca);
1320 fSignDcaNegInv[cas]->Fill(-fSignedDca);
9f9631f3 1321
1322
ddc7ef22 1323 fDcaSigmaNeg[cas]->Fill(fSignedDca,TMath::Log10(fSigmaPt));
9f9631f3 1324
ddc7ef22 1325 fPtSigmaNeg[cas]->Fill(TMath::Log10(fSigmaPt));
1d55ca60 1326
1327 //pos eta
1328 if(tpcP->Eta()>0){
1329 fRecPtNegEtaPos->Fill(tpcP->Pt());
1330 fRec1PtNegEtaPos->Fill(1/tpcP->Pt());
1331 fRecPhiNegEtaPos->Fill(phiIn);
ddc7ef22 1332 fRecDcaNegPhiEtaPos->Fill(fSignedDca, phiIn);
1333 fRecDcaNegPtEtaPos->Fill(fSignedDca, TMath::Log10(tpcP->Pt()));
1d55ca60 1334 fRecPtNegPhiEtaPos->Fill(TMath::Log10(tpcP->Pt()), phiIn);
ddc7ef22 1335 //fRecDcaPhiPtNegEtaPos->Fill(phiIn, tpcP->Pt(), fSignedDca);
1d55ca60 1336 }
1337 //neg eta
1338 else{
1339 fRecPtNegEtaNeg->Fill(tpcP->Pt());
1340 fRec1PtNegEtaNeg->Fill(1/tpcP->Pt());
1341 fRecPhiNegEtaNeg->Fill(phiIn);
ddc7ef22 1342 fRecDcaNegPhiEtaNeg->Fill(fSignedDca, phiIn);
1343 fRecDcaNegPtEtaNeg->Fill(fSignedDca, TMath::Log10(tpcP->Pt()));
1d55ca60 1344 fRecPtNegPhiEtaNeg->Fill(TMath::Log10(tpcP->Pt()), phiIn);
ddc7ef22 1345 //fRecDcaPhiPtNegEtaNeg->Fill(phiIn, tpcP->Pt(), fSignedDca);
1d55ca60 1346 }
1347
9f9631f3 1348 }
1349
1350
1351
1352 //all particles with positive eta
1353 if(tpcP->Eta()>0){
1354 fRecQPtPosEta->Fill(tpcP->Charge()/tpcP->Pt());
1355 fRecPtPosEta->Fill(tpcP->Pt());
1d55ca60 1356 fRecPhiPosEta->Fill(TMath::RadToDeg()*phiIn);
9f9631f3 1357 fRecQPtPosEtaVz->Fill(tpcP->Charge()/tpcP->Pt(),tpcP->Zv());
ddc7ef22 1358 fRecDcaPosEta->Fill(fSignedDca);
1359 fRecDPosEta->Fill(fXY);
9f9631f3 1360 }
1361 //all particles with negative eta (and eta==0)
1362 else{
1363 fRecQPtNegEta->Fill(tpcP->Charge()/tpcP->Pt());
1364 fRecPtNegEta->Fill(tpcP->Pt());
1d55ca60 1365 fRecPhiNegEta->Fill(TMath::RadToDeg()*phiIn);
9f9631f3 1366 fRecQPtNegEtaVz->Fill(tpcP->Charge()/tpcP->Pt(),tpcP->Zv());
ddc7ef22 1367 fRecDcaNegEta->Fill(fSignedDca);
1368 fRecDNegEta->Fill(fXY);
9f9631f3 1369
1370 }
9f9631f3 1371
1d55ca60 1372
1373 fRecPtTpcSector[Int_t(phiIn*
9f9631f3 1374 TMath::RadToDeg()/20)]->Fill(tpcP->Pt());
1d55ca60 1375 fRecEtaTpcSector[Int_t(phiIn*
1376 TMath::RadToDeg()/20)]->Fill(tpcP->Eta());
1377 fSignedDcaTpcSector[Int_t(phiIn*
ddc7ef22 1378 TMath::RadToDeg()/20)]->Fill(fSignedDca);
1d55ca60 1379 fRecQPtTpcSector[Int_t(phiIn*
1380 TMath::RadToDeg()/20)]->Fill(tpcP->Charge()/tpcP->Pt());
1381 fRecEtaPtTpcSector[Int_t(phiIn*
1382 TMath::RadToDeg()/20)]->Fill(tpcP->Eta()/tpcP->Pt());
9f9631f3 1383
1384
1385
1d55ca60 1386// // another track loop
1387// for (Int_t iTrack2 = 0; iTrack2 < event->GetNumberOfTracks(); iTrack2++) {
9f9631f3 1388
1d55ca60 1389// if(LeadingTrack==iTrack2) continue;
1390
1391// AliVParticle *track2 = event->GetTrack(iTrack2);
1392// AliESDtrack* esdtrack2 = dynamic_cast<AliESDtrack*>(track2);
1393// if (!track2) {
1394// Printf("ERROR: Could not receive track %d", iTrack);
1395// continue;
1396// }
1397// if (!fCuts->AcceptTrack(esdtrack2)) continue;
1398// //propagate to dca
1399// esdtrack2->PropagateToDCA(event->GetPrimaryVertex(),
1400// event->GetMagneticField(), 10000.);
9f9631f3 1401
1d55ca60 1402// fDeltaPhiLeading->Fill((LeadingPhi-esdtrack2->Phi())*TMath::RadToDeg(),
1403// LeadingPhi*TMath::RadToDeg() );
9f9631f3 1404
1405
1406
1d55ca60 1407// }//second track loop
98a5f582 1408
1fcb92ef 1409 // if(fTrackType==2) delete tpcP; // delete in case of TPCOnlyTrack
98a5f582 1410
9f9631f3 1411 }//first track loop
1412
ddc7ef22 1413 fNumberAfterCut->Fill(fNTracksAccepted);
1414
1fcb92ef 1415 //prevent mem leak for TPConly track
1416 if(fTrackType==2&&tpcP){
1417 delete tpcP;
1418 tpcP = 0;
1419 }
9f9631f3 1420
9f9631f3 1421
1422 // Post output data.
1423 // PostData(1, fHistPt);
1424 PostData(1, fHists);
1425}
1426
1427
1428
1429
1430
1431//________________________________________________________________________
1432void AliAnalysisTaskQASym::Terminate(Option_t *)
1433{
1d55ca60 1434
9f9631f3 1435
1436}
1437
1438
1439
1440
1441