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