9 #include "TParticlePDG.h"
12 #include "AliAnalysisTask.h"
13 #include "AliAnalysisManager.h"
15 #include "AliESDEvent.h"
17 #include "AliESDVertex.h"
18 #include "AliESDInputHandler.h"
19 #include "AliESDtrackCuts.h"
20 #include "AliMultiplicity.h"
22 #include "AliAnalysisTaskQASym.h"
23 #include "AliExternalTrackParam.h"
24 #include "AliTrackReference.h"
25 #include "AliHeader.h"
26 #include "AliGenEventHeader.h"
27 #include "AliGenDPMjetEventHeader.h"
29 // Analysis Task for basic QA on the ESD
31 // Authors: Jan Fiete Grosse-Oetringhaus, Christian Klein-Boesing,
32 // Andreas Morsch, Eva Sicking
34 ClassImp(AliAnalysisTaskQASym)
36 //________________________________________________________________________
37 AliAnalysisTaskQASym::AliAnalysisTaskQASym(const char *name)
38 : AliAnalysisTaskSE(name)
133 ,fRecDcaPosPhiEtaPos(0)
134 ,fRecDcaNegPhiEtaPos(0)
135 ,fRecDcaPosPhiEtaNeg(0)
136 ,fRecDcaNegPhiEtaNeg(0)
138 ,fRecDcaPosPtEtaPos(0)
139 ,fRecDcaNegPtEtaPos(0)
140 ,fRecDcaPosPtEtaNeg(0)
141 ,fRecDcaNegPtEtaNeg(0)
143 ,fRecPtPosPhiEtaPos(0)
144 ,fRecPtNegPhiEtaPos(0)
145 ,fRecPtPosPhiEtaNeg(0)
146 ,fRecPtNegPhiEtaNeg(0)
149 // ,fRecDcaPhiPtPosEtaPos(0)
150 // ,fRecDcaPhiPtNegEtaPos(0)
151 // ,fRecDcaPhiPtPosEtaNeg(0)
152 // ,fRecDcaPhiPtNegEtaNeg(0)
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;
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;
184 fSignDcaNegInv[i] = 0;
192 DefineOutput(1, TList::Class());
199 //________________________________________________________________________
200 void AliAnalysisTaskQASym::UserCreateOutputObjects()
205 Bool_t oldStatus = TH1::AddDirectoryStatus();
206 TH1::AddDirectory(kFALSE);
208 Double_t range = 0.3;
211 fHists = new TList();
213 fHistRECpt = new TH1F("fHistRECpt",
216 fEta = new TH1F("fEta",
219 fEtavPt = new TH2F("fEtavPt",
223 fPhivPt = new TH2F("fPhivPt",
225 200, 0, 2*TMath::Pi(),
227 fCompareTPCparam = new TH2F("fCompareTPCparam",
229 100, -1., 1.,100,-5, 5);
231 fITSlayer = new TH1F("fITSlayer",
234 fITSlayerEta = new TH2F("fITSlayerEta",
236 8, -1.5, 6.5, 200, -2.,2.);
237 fITSlayerPhi = new TH2F("fITSlayerPhi",
239 8, -1.5, 6.5, 200, 0,2*TMath::Pi());
241 fEtaPhi = new TH2F("fEtaPhi",
243 200, -2., 2., 128, 0., 2. * TMath::Pi());
245 fThetaRec = new TH1F("fThetaRec",
247 180, 0., TMath::Pi());
248 fPhiRec = new TH1F("fPhiRec",
250 180, 0., 2*TMath::Pi());
251 fNumber = new TH1F("fNumber",
252 "number of tracks per event",
254 fNumberAfterCut = new TH1F("fNumberAfterCut",
255 "number of tracks per event after cuts",
257 fVx = new TH1F("fVx",
258 "X of first track point",
260 fVy = new TH1F("fVy",
261 "Y of first track point",
263 fVz = new TH1F("fVz",
264 "Z of first track point",
266 fVertexX = new TH1F("fVertexX",
269 fVertexY = new TH1F("fVertexY",
272 fVertexZ = new TH1F("fVertexZ",
275 fNVertexSPD = new TH1F("fNVertexSPD",
276 "Number of SPD vertices",
278 fNVertexTracks = new TH1F("fNVertexTracks",
279 "Number of track vertices",
282 fEtaPt = new TH1F("fEtaPt",
286 fQPt = new TH1F("fQPt",
290 fDca = new TH1F("fDca",
292 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
295 fqRec = new TH1F("fqRec",
296 " charge all reconstructed particle",
299 fSigmaPtHist = new TH1F("fSigmaPtHist",
300 "Log_{10}(#sigma_{p_{T}})",
307 for(Int_t ITSlayer_case=0;ITSlayer_case<7;ITSlayer_case++){
309 fSignDcaPos[ITSlayer_case] = new TH1F(Form("fSignDcaPos%d", ITSlayer_case),
311 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
312 fSignDcaPos[ITSlayer_case]->GetXaxis()->SetTitle("dca");
313 fSignDcaPos[ITSlayer_case]->GetYaxis()->SetTitle("");
316 fSignDcaNeg[ITSlayer_case] = new TH1F(Form("fSignDcaNeg%d", ITSlayer_case),
318 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
319 fSignDcaNeg[ITSlayer_case]->GetXaxis()->SetTitle("dca");
320 fSignDcaNeg[ITSlayer_case]->GetYaxis()->SetTitle("");
322 fSignDcaNegInv[ITSlayer_case] = new TH1F(Form("fSignDcaNegInv%d", ITSlayer_case),
323 " inverse Signed dca ",
324 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
325 fSignDcaNegInv[ITSlayer_case]->GetXaxis()->SetTitle("-dca");
326 fSignDcaNegInv[ITSlayer_case]->GetYaxis()->SetTitle("");
331 fPtSigmaPos[ITSlayer_case] = new TH1F(Form("fPtSigmaPos%d", ITSlayer_case),
334 fPtSigmaPos[ITSlayer_case]->GetXaxis()->SetTitle("Log_{10}(#sigma_{pT})");
335 fPtSigmaPos[ITSlayer_case]->GetYaxis()->SetTitle("");
338 fPtSigmaNeg[ITSlayer_case] = new TH1F(Form("fPtSigmaNeg%d",ITSlayer_case),
341 fPtSigmaNeg[ITSlayer_case]->GetXaxis()->SetTitle("Log_{10}(#sigma_{pT})");
342 fPtSigmaNeg[ITSlayer_case]->GetYaxis()->SetTitle("");
348 fqPtRec[ITSlayer_case] = new TH1F(Form("fqPtRec%d",ITSlayer_case),
351 fqPtRec[ITSlayer_case]->GetXaxis()->SetTitle("q_{tr}/p_{T, tr} (GeV/c)");
352 fqPtRec[ITSlayer_case]->GetYaxis()->SetTitle("");
358 fDcaSigmaPos[ITSlayer_case] = new TH2F(Form("fDcaSigmaPos%d", ITSlayer_case),
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. );
361 fDcaSigmaPos[ITSlayer_case]->GetXaxis()->SetTitle("signed DCA)");
362 fDcaSigmaPos[ITSlayer_case]->GetYaxis()->SetTitle("log_{10}(#sigma_{pT})");
365 fDcaSigmaNeg[ITSlayer_case] = new TH2F(Form("fDcaSigmaNeg%d", ITSlayer_case),
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. );
368 fDcaSigmaNeg[ITSlayer_case]->GetXaxis()->SetTitle("signed DCA");
369 fDcaSigmaNeg[ITSlayer_case]->GetYaxis()->SetTitle("log_{10}(#sigma_{pT})");
376 // YIELDs---------- positive and negative particles
378 fRecPtPos = new TH1F("fRecPtPos",
381 fRecPtPos->GetXaxis()->SetTitle("p_{T} (GeV/c)");
382 fRecPtNeg = new TH1F("fRecPtNeg",
385 fRecPtNeg->GetXaxis()->SetTitle("p_{T} (GeV/c)");
388 fRecPhiPos = new TH1F("fRecPhiPos",
391 fRecPhiPos->GetXaxis()->SetTitle("#phi (deg)");
393 fRecPhiNeg = new TH1F("fRecPhiNeg",
396 fRecPhiNeg->GetXaxis()->SetTitle("#phi (deg)");
398 fRecEtaPos = new TH1F("fRecEtaPos",
401 fRecEtaPos->GetXaxis()->SetTitle("#eta");
403 fRecEtaNeg = new TH1F("fRecEtaNeg",
406 fRecEtaNeg->GetXaxis()->SetTitle("#eta");
408 fRecEtaPtPos = new TH1F("fRecEtaPtPos",
411 fRecEtaPtPos->GetXaxis()->SetTitle("#eta/p_{T}");
413 fRecEtaPtNeg = new TH1F("fRecEtaPtNeg",
416 fRecEtaPtNeg->GetXaxis()->SetTitle("#eta/p_{T}");
418 fRecDcaPos = new TH1F("fRecDcaPos",
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",
424 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
425 fRecDcaNeg->GetXaxis()->SetTitle("dca (cm)");
427 fRecDcaNegInv = new TH1F("fRecDcaNegInv",
429 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
430 fRecDcaNegInv->GetXaxis()->SetTitle("dca (cm)");
433 fRecDPos = new TH1F("fRecDPos",
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",
439 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
440 fRecDNeg->GetXaxis()->SetTitle("d (cm)");
443 // YIELDs ---------------- positive and negative eta
446 fRecQPtPosEta = new TH1F("fRecQPtPosEta",
449 fRecQPtPosEta->GetXaxis()->SetTitle("q/p_{T} ");
451 fRecQPtNegEta = new TH1F("fRecQPtNegEta",
454 fRecQPtNegEta->GetXaxis()->SetTitle("q/p_{T}");
456 fRecPtPosEta = new TH1F("fRecPtPosEta",
459 fRecPtPosEta->GetXaxis()->SetTitle("p_{T} (GeV/c)");
461 fRecPtNegEta = new TH1F("fRecPtNegEta",
464 fRecPtNegEta->GetXaxis()->SetTitle("p_{T} (GeV/c)");
466 fRecPhiPosEta = new TH1F("fRecPhiPosEta",
469 fRecPhiPosEta->GetXaxis()->SetTitle("#phi (deg)");
471 fRecPhiNegEta = new TH1F("fRecPhiNegEta",
474 fRecPhiNegEta->GetXaxis()->SetTitle("#phi (deg)");
476 fRecDcaPosEta = new TH1F("fRecDcaPosEta",
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",
482 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
483 fRecDcaNegEta->GetXaxis()->SetTitle("dca (cm)");
485 fRecDPosEta = new TH1F("fRecDPosEta",
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",
492 fRecDNegEta->GetXaxis()->SetTitle("d (cm)");
494 fRecDcaPosPhi = new TH2F("fRecDcaPosPhi",
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",
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.)");
505 fRecPtPosPhi = new TH2F("fRecPtPosPhi",
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",
512 100,-2.5 , 2., 180, 0, TMath::Pi()*2);
513 fRecPtNegPhi->GetXaxis()->SetTitle("log_{10}(p_{T})");
514 fRecPtNegPhi->GetYaxis()->SetTitle("#phi (rad.)");
516 fRecEtaPosPhi = new TH2F("fRecEtaPosPhi",
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",
523 100, -1.5, 1.5, 180, 0, TMath::Pi()*2);
524 fRecEtaNegPhi->GetXaxis()->SetTitle("#eta");
525 fRecEtaNegPhi->GetYaxis()->SetTitle("#phi (rad.)");
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.)");
533 fRecEtaPtPosPhi = new TH2F("fRecEtaPtPosPhi",
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",
540 100,-5 , 5., 180, 0, TMath::Pi()*2);
541 fRecEtaPtNegPhi->GetXaxis()->SetTitle("#eta/p_{T}");
542 fRecEtaPtNegPhi->GetYaxis()->SetTitle("#phi (rad.)");
548 fRecDcaPosPhiEtaPos = new TH2F("fRecDcaPosPhiEtaPos",
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",
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.)");
559 fRecPtPosPhiEtaPos = new TH2F("fRecPtPosPhiEtaPos",
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",
566 100,-2.5 , 2., 180, 0, TMath::Pi()*2);
567 fRecPtNegPhiEtaPos->GetXaxis()->SetTitle("log_{10}(p_{T})");
568 fRecPtNegPhiEtaPos->GetYaxis()->SetTitle("#phi (rad.)");
571 fRecDcaPosPhiEtaNeg = new TH2F("fRecDcaPosPhiEtaNeg",
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",
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.)");
582 fRecPtPosPhiEtaNeg = new TH2F("fRecPtPosPhiEtaNeg",
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",
589 100,-2.5 , 2., 180, 0, TMath::Pi()*2);
590 fRecPtNegPhiEtaNeg->GetXaxis()->SetTitle("log_{10}(p_{T})");
591 fRecPtNegPhiEtaNeg->GetYaxis()->SetTitle("#phi (rad.)");
594 fRecDcaPosPtEtaPos = new TH2F("fRecDcaPosPtEtaPos",
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})");
600 fRecDcaPosPtEtaNeg = new TH2F("fRecDcaPosPtEtaNeg",
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})");
606 fRecDcaNegPtEtaPos = new TH2F("fRecDcaNegPtEtaPos",
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})");
612 fRecDcaNegPtEtaNeg = new TH2F("fRecDcaNegPtEtaNeg",
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})");
620 // YIELDs ---------------- for TPC sectors
621 for(Int_t sector=0; sector<18;sector++){
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)");
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)");
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");
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)");
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)");
652 for(Int_t i=0;i<7;i++){
653 fRecPtPosLadder[i] = new TH1F(Form("fRecPtPosLadder%d", i),
654 " p_{T} distribution",
656 fRecPtPosLadder[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
657 fRecPtNegLadder[i] = new TH1F(Form("fRecPtNegLadder%d",i),
658 " p_{T} distribution ",
660 fRecPtNegLadder[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
663 fRecPhiPosLadder[i] = new TH1F(Form("fRecPhiPosLadder%d",i),
664 "#phi distribution: all pos eta",
666 fRecPhiPosLadder[i]->GetXaxis()->SetTitle("#phi (deg)");
668 fRecPhiNegLadder[i] = new TH1F(Form("fRecPhiNegLadder%d", i),
669 "#phi distribution: all neg eta",
671 fRecPhiNegLadder[i]->GetXaxis()->SetTitle("#phi (deg)");
675 fRecEtaPosLadder[i] = new TH1F(Form("fRecEtaPosLadder%d",i),
678 fRecEtaPosLadder[i]->GetXaxis()->SetTitle("#eta)");
680 fRecEtaNegLadder[i] = new TH1F(Form("fRecEtaNegLadder%d", i),
683 fRecEtaNegLadder[i]->GetXaxis()->SetTitle("#eta");
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})");
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})");
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",
704 "#eta distribution vs Vz()",
705 100, -2., 2.,200,-vzmax,vzmax);
706 fRecEtaNegVz->GetXaxis()->SetTitle("#eta");
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",
714 361, 0., 360.,200,-vzmax,vzmax);
715 fRecPhiNegVz->GetXaxis()->SetTitle("#phi (deg)");
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",
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)");
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}");
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}");
746 fDeltaPhiAll = new TH1F("fDeltaPhiAll",
747 " #Delta #phi",200,-360,360);
748 fDeltaPhiAll->GetXaxis()->SetTitle("#Delta #phi");
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.)");
756 fDiffDcaD = new TH1F("fDiffDcaD",
761 fRecPtPosEtaPos = new TH1F("fRecPtPosEtaPos",
762 "p_{T} distribution",100,0,pt);
763 fRecPtPosEtaPos->GetXaxis()->SetTitle("p_{T} (GeV/c)");
765 fRecPtNegEtaPos = new TH1F("fRecPtNegEtaPos",
766 "p_{T} distribution",100,0,pt);
767 fRecPtNegEtaPos->GetXaxis()->SetTitle("p_{T} (GeV/c)");
769 fRecPtPosEtaNeg = new TH1F("fRecPtPosEtaNeg",
770 "p_{T} distribution",100,0,pt);
771 fRecPtPosEtaNeg->GetXaxis()->SetTitle("p_{T} (GeV/c)");
773 fRecPtNegEtaNeg = new TH1F("fRecPtNegEtaNeg",
774 "p_{T} distribution",100,0,pt);
775 fRecPtNegEtaNeg->GetXaxis()->SetTitle("p_{T} (GeV/c)");
779 fRec1PtPosEtaPos = new TH1F("fRec1PtPosEtaPos",
780 "1/p_{T} distribution",100,0,0.5);
781 fRec1PtPosEtaPos->GetXaxis()->SetTitle("p_{T} (c/GeV)");
783 fRec1PtNegEtaPos = new TH1F("fRec1PtNegEtaPos",
784 "1/p_{T} distribution",100,0,0.5);
785 fRec1PtNegEtaPos->GetXaxis()->SetTitle("p_{T} (c/GeV)");
787 fRec1PtPosEtaNeg = new TH1F("fRec1PtPosEtaNeg",
788 "1/p_{T} distribution",100,0,0.5);
789 fRec1PtPosEtaNeg->GetXaxis()->SetTitle("p_{T} (c/GeV)");
791 fRec1PtNegEtaNeg = new TH1F("fRec1PtNegEtaNeg",
792 "1/p_{T} distribution",100,0,0.5);
793 fRec1PtNegEtaNeg->GetXaxis()->SetTitle("1/p_{T} (c/GeV)");
797 fRecPhiPosEtaPos = new TH1F("fRecPhiPosEtaPos",
798 "#phi",180,0,2*TMath::Pi());
799 fRecPhiPosEtaPos->GetXaxis()->SetTitle("#phi (rad.)");
801 fRecPhiNegEtaPos = new TH1F("fRecPhiNegEtaPos",
802 "#phi",180,0,2*TMath::Pi());
803 fRecPhiNegEtaPos->GetXaxis()->SetTitle("#phi (rad.)");
805 fRecPhiPosEtaNeg = new TH1F("fRecPhiPosEtaNeg",
806 "#phi",180,0,2*TMath::Pi());
807 fRecPhiPosEtaNeg->GetXaxis()->SetTitle("#phi (rad.)");
809 fRecPhiNegEtaNeg = new TH1F("fRecPhiNegEtaNeg",
810 "#phi",180,0,2*TMath::Pi());
811 fRecPhiNegEtaNeg->GetXaxis()->SetTitle("#phi (rad.)");
815 // fRecDcaPhiPtPosEtaPos = new TH3F("fRecDcaPhiPtPosEtaPos",
816 // "#phi- p_{T} - DCA",
817 // 180,0,2*TMath::Pi(),
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)");
824 // fRecDcaPhiPtPosEtaNeg = new TH3F("fRecDcaPhiPtPosEtaNeg",
825 // "#phi- p_{T} - DCA",
826 // 180,0,2*TMath::Pi(),
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)");
833 // fRecDcaPhiPtNegEtaPos = new TH3F("fRecDcaPhiPtNegEtaPos",
834 // "#phi- p_{T} - DCA",
835 // 180,0,2*TMath::Pi(),
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)");
842 // fRecDcaPhiPtNegEtaNeg = new TH3F("fRecDcaPhiPtNegEtaNeg",
843 // "#phi- p_{T} - DCA",
844 // 180,0,2*TMath::Pi(),
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)");
856 fHists->Add(fHistRECpt);
858 fHists->Add(fEtavPt);
859 fHists->Add(fPhivPt);
860 fHists->Add(fCompareTPCparam);
861 fHists->Add(fITSlayer);
862 fHists->Add(fITSlayerEta);
863 fHists->Add(fITSlayerPhi);
864 fHists->Add(fEtaPhi);
865 fHists->Add(fThetaRec);
866 fHists->Add(fPhiRec);
867 fHists->Add(fNumber);
868 fHists->Add(fNumberAfterCut);
872 fHists->Add(fVertexX);
873 fHists->Add(fVertexY);
874 fHists->Add(fVertexZ);
875 fHists->Add(fNVertexSPD);
876 fHists->Add(fNVertexTracks);
882 fHists->Add(fDeltaPhiAll);
883 fHists->Add(fDeltaPhiLeading);
884 fHists->Add(fDiffDcaD);
887 fHists->Add(fSigmaPtHist);
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);
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);
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]);
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]);
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);
947 for(Int_t i=0;i<7;i++){
948 fHists->Add(fSignDcaPos[i]);
949 fHists->Add(fSignDcaNeg[i]);
950 fHists->Add(fSignDcaNegInv[i]);
952 fHists->Add(fPtSigmaPos[i]);
953 fHists->Add(fPtSigmaNeg[i]);
954 fHists->Add(fqPtRec[i]);
956 fHists->Add(fDcaSigmaPos[i]);
957 fHists->Add(fDcaSigmaNeg[i]);
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);
972 fHists->Add(fRecPtPosEtaPos);
973 fHists->Add(fRecPtNegEtaPos);
974 fHists->Add(fRecPtPosEtaNeg);
975 fHists->Add(fRecPtNegEtaNeg);
977 fHists->Add(fRec1PtPosEtaPos);
978 fHists->Add(fRec1PtNegEtaPos);
979 fHists->Add(fRec1PtPosEtaNeg);
980 fHists->Add(fRec1PtNegEtaNeg);
983 fHists->Add(fRecPhiPosEtaPos);
984 fHists->Add(fRecPhiNegEtaPos);
985 fHists->Add(fRecPhiPosEtaNeg);
986 fHists->Add(fRecPhiNegEtaNeg);
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);
997 fHists->Add(fRecDcaPosPtEtaPos);
998 fHists->Add(fRecDcaNegPtEtaPos);
999 fHists->Add(fRecDcaPosPtEtaNeg);
1000 fHists->Add(fRecDcaNegPtEtaNeg);
1002 // fHists->Add(fRecDcaPhiPtPosEtaPos);
1003 // fHists->Add(fRecDcaPhiPtPosEtaNeg);
1004 // fHists->Add(fRecDcaPhiPtNegEtaPos);
1005 // fHists->Add(fRecDcaPhiPtNegEtaNeg);
1011 // for (Int_t i=0; i<fHists->GetEntries(); ++i) {
1012 // TH1 *h1 = dynamic_cast<TH1*>(fHists->At(i));
1014 // // Printf("%s ",h1->GetName());
1019 TH1::AddDirectory(oldStatus);
1022 //__________________________________________________________
1024 void AliAnalysisTaskQASym::UserExec(Option_t *)
1026 // QA of global, TPC, ITS and ITS stand alone tracks
1027 // exploiting basic symmetries
1029 AliVEvent *event = InputEvent();
1031 Printf("ERROR: Could not retrieve event");
1037 AliESDEvent* esd = dynamic_cast<AliESDEvent*>(event);
1039 Printf("We are reading from ESD");
1046 if(fDebug>1)Printf("There are %d tracks in this event", event->GetNumberOfTracks());
1049 Int_t leadingTrack = 0;
1050 Float_t leadingEnergy = -20.;
1051 Float_t leadingPhi = 0;//TMath::Pi();
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);
1062 //check primary vertex
1063 const AliVVertex* vertex = event->GetPrimaryVertex();
1064 if(vertex->GetNContributors()==0) return;
1065 Float_t vx = vertex->GetX();
1066 Float_t vy = vertex->GetY();
1067 Float_t vz = vertex->GetZ();
1073 if (TMath::Abs(vz) > 10.) return;
1075 fNumber->Fill(event->GetNumberOfTracks());
1077 AliESDtrack *tpcP = 0x0;
1078 Int_t fNTracksAccepted=0;
1080 for (Int_t iTrack = 0; iTrack < event->GetNumberOfTracks(); iTrack++) {
1082 //prevent mem leak for TPConly track
1083 if(fTrackType==2&&tpcP){
1088 AliVParticle *track = event->GetTrack(iTrack);
1089 AliESDtrack *esdtrack = dynamic_cast<AliESDtrack*>(track);
1090 esdtrack->PropagateToDCA(event->GetPrimaryVertex(),
1091 event->GetMagneticField(), 10000.);
1094 Printf("ERROR: Could not receive track %d", iTrack);
1098 // run Task for global tracks or ITS tracks or TPC tracks
1099 const AliExternalTrackParam *tpcPin = 0x0;
1103 //Fill all histograms with global tracks
1105 phiIn = tpcP->Phi();
1106 if (!tpcP) continue;
1107 if (!fCuts->AcceptTrack(tpcP)) continue;
1109 else if(fTrackType==1){
1110 //Fill all histograms with ITS tracks
1112 phiIn = tpcP->Phi();
1113 if (!tpcP) continue;
1114 if (!fCuts->AcceptTrack(tpcP)) continue;
1115 if(fStandAlone==kTRUE) {
1116 if(!(tpcP->GetStatus()&AliESDtrack::kITSpureSA))continue;
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();
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
1132 Printf("ERROR: wrong track type \n");
1141 if(tpcP->E()>leadingEnergy){
1142 leadingTrack=iTrack;
1143 leadingEnergy=tpcP->E();
1148 fqRec->Fill(tpcP->Charge());
1151 Double_t fSigmaPt = tpcP->GetSigma1Pt2();
1152 fSigmaPt= sqrt(fSigmaPt);
1153 fSigmaPt= fSigmaPt *(tpcP->Pt()*tpcP->Pt());
1155 if(TMath::Abs(fSigmaPt) < 1.e-10) continue;
1157 fSigmaPtHist->Fill(TMath::Log10(fSigmaPt));
1160 // hits in ITS layer
1162 if(tpcP->HasPointOnITSLayer(0))
1164 else if(!tpcP->HasPointOnITSLayer(0)
1165 && tpcP->HasPointOnITSLayer(1))
1167 else if(!tpcP->HasPointOnITSLayer(0)
1168 && !tpcP->HasPointOnITSLayer(1)
1169 && tpcP->HasPointOnITSLayer(2))
1171 else if(!tpcP->HasPointOnITSLayer(0)
1172 && !tpcP->HasPointOnITSLayer(1)
1173 && !tpcP->HasPointOnITSLayer(2)
1174 && tpcP->HasPointOnITSLayer(3))
1176 else if(!tpcP->HasPointOnITSLayer(0)
1177 && !tpcP->HasPointOnITSLayer(1)
1178 && !tpcP->HasPointOnITSLayer(2)
1179 && !tpcP->HasPointOnITSLayer(3)
1180 && tpcP->HasPointOnITSLayer(4))
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))
1194 //-------------------
1195 Float_t fXVertexCor = 0.;
1196 Float_t fYVertexCor = 0.;
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();
1203 fqPtRec[cas]->Fill(tpcP->Charge()/tpcP->Pt());
1207 fHistRECpt->Fill(tpcP->Pt());
1208 fEta->Fill(tpcP->Eta());
1209 fEtavPt->Fill(tpcP->Eta(), TMath::Log(tpcP->Pt()));
1210 fPhivPt->Fill(tpcP->Phi(), TMath::Log(tpcP->Pt()));
1211 fEtaPhi->Fill(tpcP->Eta(), phiIn);
1212 fThetaRec->Fill(tpcP->Theta());
1213 fPhiRec->Fill(phiIn);
1214 fVx->Fill(tpcP->Xv());
1215 fVy->Fill(tpcP->Yv());
1216 fVz->Fill(tpcP->Zv());
1219 fEtaPt->Fill(tpcP->Eta()/tpcP->Pt());
1220 fQPt->Fill(tpcP->Charge()/tpcP->Pt());
1221 fDca->Fill(fSignedDca);
1222 fRecQPtPhi->Fill(tpcP->Charge()/tpcP->Pt(), phiIn);
1227 tpcP->GetImpactParameters(fXY,fZ);
1228 fDiffDcaD->Fill(fSignedDca+fXY);
1230 if(fTrackType==2) fCompareTPCparam->Fill(fZ,tpcPin->GetTgl());
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);
1236 fITSlayerEta->Fill(itsLayer, tpcP->Eta());
1237 fITSlayerPhi->Fill(itsLayer, tpcP->Phi());
1242 //for positive particles
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());
1248 fRecPhiPos->Fill(TMath::RadToDeg()*phiIn);
1251 fRecPhiPosLadder[cas]->Fill(TMath::RadToDeg()*phiIn);
1252 fRecPhiPosVz->Fill(TMath::RadToDeg()*phiIn,tpcP->Zv());
1253 fSignedDcaPosVz->Fill(fSignedDca,tpcP->Zv());
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());
1261 fRecDcaPos->Fill(fSignedDca);
1262 fRecDcaPosPhi->Fill(fSignedDca, phiIn);
1263 fRecPtPosPhi->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1264 fRecEtaPtPosPhi->Fill(tpcP->Eta()/tpcP->Pt(), phiIn);
1265 fRecEtaPosPhi->Fill(tpcP->Eta(), phiIn);
1266 fRecDPos->Fill(fXY);
1267 fSignDcaPos[cas]->Fill(fSignedDca);
1270 fDcaSigmaPos[cas]->Fill(fSignedDca, TMath::Log10(fSigmaPt));
1272 fPtSigmaPos[cas]->Fill(TMath::Log10(fSigmaPt));
1275 fRecPtPosEtaPos->Fill(tpcP->Pt());
1276 fRec1PtPosEtaPos->Fill(1/tpcP->Pt());
1277 fRecPhiPosEtaPos->Fill(phiIn);
1278 fRecDcaPosPhiEtaPos->Fill(fSignedDca, phiIn);
1279 fRecDcaPosPtEtaPos->Fill(fSignedDca, TMath::Log10(tpcP->Pt()));
1280 fRecPtPosPhiEtaPos->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1281 //fRecDcaPhiPtPosEtaPos->Fill(phiIn, tpcP->Pt(), fSignedDca);
1285 fRecPtPosEtaNeg->Fill(tpcP->Pt());
1286 fRec1PtPosEtaNeg->Fill(1/tpcP->Pt());
1287 fRecPhiPosEtaNeg->Fill(phiIn);
1288 fRecDcaPosPhiEtaNeg->Fill(fSignedDca, phiIn);
1289 fRecDcaPosPtEtaNeg->Fill(fSignedDca, TMath::Log10(tpcP->Pt()));
1290 fRecPtPosPhiEtaNeg->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1291 //fRecDcaPhiPtPosEtaNeg->Fill(phiIn, tpcP->Pt(), fSignedDca);
1295 //and negative particles
1297 fRecPtNeg->Fill(tpcP->Pt());
1298 fRecPtNegLadder[cas]->Fill(tpcP->Pt());
1299 fRecPtNegVz->Fill(TMath::Log10(tpcP->Pt()),tpcP->Zv());
1301 fRecPhiNeg->Fill(TMath::RadToDeg()*phiIn);
1302 fRecPhiNegLadder[cas]->Fill(TMath::RadToDeg()*phiIn);
1303 fRecPhiNegVz->Fill(TMath::RadToDeg()*phiIn,tpcP->Zv());
1304 fSignedDcaNegVz->Fill(fSignedDca,tpcP->Zv());
1305 fRecEtaPtNegVz->Fill(tpcP->Eta()/tpcP->Pt(),tpcP->Zv());
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());
1312 fRecDcaNeg->Fill(fSignedDca);
1313 fRecDcaNegInv->Fill(-fSignedDca);
1314 fRecDcaNegPhi->Fill(fSignedDca, phiIn);
1315 fRecPtNegPhi->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1316 fRecEtaNegPhi->Fill(tpcP->Eta(), phiIn);
1317 fRecEtaPtNegPhi->Fill(tpcP->Eta()/tpcP->Pt(), phiIn);
1318 fRecDNeg->Fill(fXY);
1319 fSignDcaNeg[cas]->Fill(fSignedDca);
1320 fSignDcaNegInv[cas]->Fill(-fSignedDca);
1323 fDcaSigmaNeg[cas]->Fill(fSignedDca,TMath::Log10(fSigmaPt));
1325 fPtSigmaNeg[cas]->Fill(TMath::Log10(fSigmaPt));
1329 fRecPtNegEtaPos->Fill(tpcP->Pt());
1330 fRec1PtNegEtaPos->Fill(1/tpcP->Pt());
1331 fRecPhiNegEtaPos->Fill(phiIn);
1332 fRecDcaNegPhiEtaPos->Fill(fSignedDca, phiIn);
1333 fRecDcaNegPtEtaPos->Fill(fSignedDca, TMath::Log10(tpcP->Pt()));
1334 fRecPtNegPhiEtaPos->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1335 //fRecDcaPhiPtNegEtaPos->Fill(phiIn, tpcP->Pt(), fSignedDca);
1339 fRecPtNegEtaNeg->Fill(tpcP->Pt());
1340 fRec1PtNegEtaNeg->Fill(1/tpcP->Pt());
1341 fRecPhiNegEtaNeg->Fill(phiIn);
1342 fRecDcaNegPhiEtaNeg->Fill(fSignedDca, phiIn);
1343 fRecDcaNegPtEtaNeg->Fill(fSignedDca, TMath::Log10(tpcP->Pt()));
1344 fRecPtNegPhiEtaNeg->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1345 //fRecDcaPhiPtNegEtaNeg->Fill(phiIn, tpcP->Pt(), fSignedDca);
1352 //all particles with positive eta
1354 fRecQPtPosEta->Fill(tpcP->Charge()/tpcP->Pt());
1355 fRecPtPosEta->Fill(tpcP->Pt());
1356 fRecPhiPosEta->Fill(TMath::RadToDeg()*phiIn);
1357 fRecQPtPosEtaVz->Fill(tpcP->Charge()/tpcP->Pt(),tpcP->Zv());
1358 fRecDcaPosEta->Fill(fSignedDca);
1359 fRecDPosEta->Fill(fXY);
1361 //all particles with negative eta (and eta==0)
1363 fRecQPtNegEta->Fill(tpcP->Charge()/tpcP->Pt());
1364 fRecPtNegEta->Fill(tpcP->Pt());
1365 fRecPhiNegEta->Fill(TMath::RadToDeg()*phiIn);
1366 fRecQPtNegEtaVz->Fill(tpcP->Charge()/tpcP->Pt(),tpcP->Zv());
1367 fRecDcaNegEta->Fill(fSignedDca);
1368 fRecDNegEta->Fill(fXY);
1373 fRecPtTpcSector[Int_t(phiIn*
1374 TMath::RadToDeg()/20)]->Fill(tpcP->Pt());
1375 fRecEtaTpcSector[Int_t(phiIn*
1376 TMath::RadToDeg()/20)]->Fill(tpcP->Eta());
1377 fSignedDcaTpcSector[Int_t(phiIn*
1378 TMath::RadToDeg()/20)]->Fill(fSignedDca);
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());
1386 // // another track loop
1387 // for (Int_t iTrack2 = 0; iTrack2 < event->GetNumberOfTracks(); iTrack2++) {
1389 // if(LeadingTrack==iTrack2) continue;
1391 // AliVParticle *track2 = event->GetTrack(iTrack2);
1392 // AliESDtrack* esdtrack2 = dynamic_cast<AliESDtrack*>(track2);
1394 // Printf("ERROR: Could not receive track %d", iTrack);
1397 // if (!fCuts->AcceptTrack(esdtrack2)) continue;
1398 // //propagate to dca
1399 // esdtrack2->PropagateToDCA(event->GetPrimaryVertex(),
1400 // event->GetMagneticField(), 10000.);
1402 // fDeltaPhiLeading->Fill((LeadingPhi-esdtrack2->Phi())*TMath::RadToDeg(),
1403 // LeadingPhi*TMath::RadToDeg() );
1407 // }//second track loop
1409 // if(fTrackType==2) delete tpcP; // delete in case of TPCOnlyTrack
1413 fNumberAfterCut->Fill(fNTracksAccepted);
1415 //prevent mem leak for TPConly track
1416 if(fTrackType==2&&tpcP){
1422 // Post output data.
1423 // PostData(1, fHistPt);
1424 PostData(1, fHists);
1431 //________________________________________________________________________
1432 void AliAnalysisTaskQASym::Terminate(Option_t *)