9 #include "TParticlePDG.h"
14 #include "AliAnalysisTask.h"
15 #include "AliAnalysisManager.h"
17 #include "AliESDEvent.h"
19 #include "AliESDVertex.h"
20 #include "AliESDInputHandler.h"
21 #include "AliESDtrackCuts.h"
22 #include "AliMultiplicity.h"
24 #include "AliAnalysisTaskQASym.h"
25 #include "AliExternalTrackParam.h"
26 #include "AliTrackReference.h"
27 #include "AliHeader.h"
28 #include "AliGenEventHeader.h"
29 #include "AliGenDPMjetEventHeader.h"
31 // Analysis Task for basic QA on the ESD
33 // Authors: Jan Fiete Grosse-Oetringhaus, Christian Klein-Boesing,
34 // Andreas Morsch, Eva Sicking
36 ClassImp(AliAnalysisTaskQASym)
38 //________________________________________________________________________
39 AliAnalysisTaskQASym::AliAnalysisTaskQASym(const char *name)
40 : AliAnalysisTaskSE(name)
132 ,fRecDcaPosPhiEtaPos(0)
133 ,fRecDcaNegPhiEtaPos(0)
134 ,fRecDcaPosPhiEtaNeg(0)
135 ,fRecDcaNegPhiEtaNeg(0)
137 ,fRecDcaPosPtEtaPos(0)
138 ,fRecDcaNegPtEtaPos(0)
139 ,fRecDcaPosPtEtaNeg(0)
140 ,fRecDcaNegPtEtaNeg(0)
142 ,fRecPtPosPhiEtaPos(0)
143 ,fRecPtNegPhiEtaPos(0)
144 ,fRecPtPosPhiEtaNeg(0)
145 ,fRecPtNegPhiEtaNeg(0)
148 ,fRecDcaPhiPtPosEtaPos(0)
149 ,fRecDcaPhiPtNegEtaPos(0)
150 ,fRecDcaPhiPtPosEtaNeg(0)
151 ,fRecDcaPhiPtNegEtaNeg(0)
166 for(Int_t i = 0;i<18;++i){
167 fRecPtTpcSector[i] = 0;
168 fRecEtaTpcSector[i] = 0;
169 fSignedDcaTpcSector[i] = 0;
170 fRecQPtTpcSector[i] = 0;
171 fRecEtaPtTpcSector[i] = 0;
174 for(Int_t i = 0;i< 7;++i){
175 fRecPtPosLadder[i] = 0;
176 fRecPtNegLadder[i] = 0;
177 fRecPhiPosLadder[i] = 0;
178 fRecPhiNegLadder[i] = 0;
179 fRecEtaPosLadder[i] = 0;
180 fRecEtaNegLadder[i] = 0;
183 fSignDcaNegInv[i] = 0;
191 DefineOutput(1, TList::Class());
198 //________________________________________________________________________
199 void AliAnalysisTaskQASym::UserCreateOutputObjects()
204 Bool_t oldStatus = TH1::AddDirectoryStatus();
205 TH1::AddDirectory(kFALSE);
207 Double_t range = 0.2;
210 fHists = new TList();
211 // test = new TNtuple("test","test",
212 // "pt:phi:theta:x:y:z:charge");
213 fHistRECpt = new TH1F("fHistRECpt",
216 fEta = new TH1F("fEta",
219 fEtavPt = new TH2F("fEtavPt",
223 fCompareTPCparam = new TH2F("fCompareTPCparam",
225 100, -1., 1.,100,-5, 5);
227 fEtaPhi = new TH2F("fEtaPhi",
229 200, -2., 2., 128, 0., 2. * TMath::Pi());
231 fThetaRec = new TH1F("fThetaRec",
233 180, 0., TMath::Pi());
234 fPhiRec = new TH1F("fPhiRec",
236 180, 0., 2*TMath::Pi());
237 fNumber = new TH1F("fNumber",
238 "number of tracks per event",
240 fVx = new TH1F("fVx",
243 fVy = new TH1F("fVy",
246 fVz = new TH1F("fVz",
250 fEtaPt = new TH1F("fEtaPt",
254 fQPt = new TH1F("fQPt",
258 fDca = new TH1F("fDca",
260 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
263 fqRec = new TH1F("fqRec",
264 " charge all reconstructed particle",
267 fsigmaPt = new TH1F("fsigmaPt",
268 "Log_{10}(#sigma_{p_{T}})",
275 for(Int_t ITSlayer_case=0;ITSlayer_case<7;ITSlayer_case++){
277 fSignDcaPos[ITSlayer_case] = new TH1F(Form("fSignDcaPos%d", ITSlayer_case),
279 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
280 fSignDcaPos[ITSlayer_case]->GetXaxis()->SetTitle("dca");
281 fSignDcaPos[ITSlayer_case]->GetYaxis()->SetTitle("");
284 fSignDcaNeg[ITSlayer_case] = new TH1F(Form("fSignDcaNeg%d", ITSlayer_case),
286 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
287 fSignDcaNeg[ITSlayer_case]->GetXaxis()->SetTitle("dca");
288 fSignDcaNeg[ITSlayer_case]->GetYaxis()->SetTitle("");
290 fSignDcaNegInv[ITSlayer_case] = new TH1F(Form("fSignDcaNegInv%d", ITSlayer_case),
291 " inverse Signed dca ",
292 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
293 fSignDcaNegInv[ITSlayer_case]->GetXaxis()->SetTitle("-dca");
294 fSignDcaNegInv[ITSlayer_case]->GetYaxis()->SetTitle("");
299 fPtSigmaPos[ITSlayer_case] = new TH1F(Form("fPtSigmaPos%d", ITSlayer_case),
302 fPtSigmaPos[ITSlayer_case]->GetXaxis()->SetTitle("Log_{10}(#sigma_{pT})");
303 fPtSigmaPos[ITSlayer_case]->GetYaxis()->SetTitle("");
306 fPtSigmaNeg[ITSlayer_case] = new TH1F(Form("fPtSigmaNeg%d",ITSlayer_case),
309 fPtSigmaNeg[ITSlayer_case]->GetXaxis()->SetTitle("Log_{10}(#sigma_{pT})");
310 fPtSigmaNeg[ITSlayer_case]->GetYaxis()->SetTitle("");
316 fqPtRec[ITSlayer_case] = new TH1F(Form("fqPtRec%d",ITSlayer_case),
319 fqPtRec[ITSlayer_case]->GetXaxis()->SetTitle("q_{tr}/p_{T, tr} (GeV/c)");
320 fqPtRec[ITSlayer_case]->GetYaxis()->SetTitle("");
326 fDcaSigmaPos[ITSlayer_case] = new TH2F(Form("fDcaSigmaPos%d", ITSlayer_case),
327 " p_{T} shift vs #sigma_{pT} ",
328 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9),200, -4., 4. );
329 fDcaSigmaPos[ITSlayer_case]->GetXaxis()->SetTitle("signed DCA)");
330 fDcaSigmaPos[ITSlayer_case]->GetYaxis()->SetTitle("log_{10}(#sigma_{pT})");
333 fDcaSigmaNeg[ITSlayer_case] = new TH2F(Form("fDcaSigmaNeg%d", ITSlayer_case),
334 " p_{T} shift vs #sigma_{pT} ",
335 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9),200, -4., 4. );
336 fDcaSigmaNeg[ITSlayer_case]->GetXaxis()->SetTitle("signed DCA");
337 fDcaSigmaNeg[ITSlayer_case]->GetYaxis()->SetTitle("log_{10}(#sigma_{pT})");
344 // YIELDs---------- positive and negative particles
346 fRecPtPos = new TH1F("fRecPtPos",
349 fRecPtPos->GetXaxis()->SetTitle("p_{T} (GeV/c)");
350 fRecPtNeg = new TH1F("fRecPtNeg",
353 fRecPtNeg->GetXaxis()->SetTitle("p_{T} (GeV/c)");
356 fRecPhiPos = new TH1F("fRecPhiPos",
359 fRecPhiPos->GetXaxis()->SetTitle("#phi (deg)");
361 fRecPhiNeg = new TH1F("fRecPhiNeg",
364 fRecPhiNeg->GetXaxis()->SetTitle("#phi (deg)");
366 fRecEtaPos = new TH1F("fRecEtaPos",
369 fRecEtaPos->GetXaxis()->SetTitle("#eta");
371 fRecEtaNeg = new TH1F("fRecEtaNeg",
374 fRecEtaNeg->GetXaxis()->SetTitle("#eta");
376 fRecEtaPtPos = new TH1F("fRecEtaPtPos",
379 fRecEtaPtPos->GetXaxis()->SetTitle("#eta/p_{T}");
381 fRecEtaPtNeg = new TH1F("fRecEtaPtNeg",
384 fRecEtaPtNeg->GetXaxis()->SetTitle("#eta/p_{T}");
386 fRecDcaPos = new TH1F("fRecDcaPos",
388 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
389 fRecDcaPos->GetXaxis()->SetTitle("dca (cm)");
390 fRecDcaNeg = new TH1F("fRecDcaNeg",
392 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
393 fRecDcaNeg->GetXaxis()->SetTitle("dca (cm)");
395 fRecDcaNegInv = new TH1F("fRecDcaNegInv",
397 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
398 fRecDcaNegInv->GetXaxis()->SetTitle("dca (cm)");
401 fRecDPos = new TH1F("fRecDPos",
403 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
404 fRecDPos->GetXaxis()->SetTitle("d (cm)");
405 fRecDNeg = new TH1F("fRecDNeg",
407 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
408 fRecDNeg->GetXaxis()->SetTitle("d (cm)");
411 // YIELDs ---------------- positive and negative eta
414 fRecQPtPosEta = new TH1F("fRecQPtPosEta",
417 fRecQPtPosEta->GetXaxis()->SetTitle("q/p_{T} ");
419 fRecQPtNegEta = new TH1F("fRecQPtNegEta",
422 fRecQPtNegEta->GetXaxis()->SetTitle("q/p_{T}");
424 fRecPtPosEta = new TH1F("fRecPtPosEta",
427 fRecPtPosEta->GetXaxis()->SetTitle("p_{T} (GeV/c)");
429 fRecPtNegEta = new TH1F("fRecPtNegEta",
432 fRecPtNegEta->GetXaxis()->SetTitle("p_{T} (GeV/c)");
434 fRecPhiPosEta = new TH1F("fRecPhiPosEta",
437 fRecPhiPosEta->GetXaxis()->SetTitle("#phi (deg)");
439 fRecPhiNegEta = new TH1F("fRecPhiNegEta",
442 fRecPhiNegEta->GetXaxis()->SetTitle("#phi (deg)");
444 fRecDcaPosEta = new TH1F("fRecDcaPosEta",
446 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
447 fRecDcaPosEta->GetXaxis()->SetTitle("dca (cm)");
448 fRecDcaNegEta = new TH1F("fRecDcaNegEta",
450 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
451 fRecDcaNegEta->GetXaxis()->SetTitle("dca (cm)");
453 fRecDPosEta = new TH1F("fRecDPosEta",
455 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
456 fRecDPosEta->GetXaxis()->SetTitle("d (cm)");
457 fRecDNegEta = new TH1F("fRecDNegEta",
460 fRecDNegEta->GetXaxis()->SetTitle("d (cm)");
462 fRecDcaPosPhi = new TH2F("fRecDcaPosPhi",
464 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2);
465 fRecDcaPosPhi->GetXaxis()->SetTitle("dca (cm)");
466 fRecDcaPosPhi->GetYaxis()->SetTitle("#phi (rad.)");
467 fRecDcaNegPhi = new TH2F("fRecDcaNegPhi",
469 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2);
470 fRecDcaNegPhi->GetXaxis()->SetTitle("dca (cm)");
471 fRecDcaNegPhi->GetYaxis()->SetTitle("#phi (rad.)");
473 fRecPtPosPhi = new TH2F("fRecPtPosPhi",
475 100, -2.5, 2., 180, 0, TMath::Pi()*2);
476 fRecPtPosPhi->GetXaxis()->SetTitle("log_{10}(p_{T})");
477 fRecPtPosPhi->GetYaxis()->SetTitle("#phi (rad.)");
478 fRecPtNegPhi = new TH2F("fRecPtNegPhi",
480 100,-2.5 , 2., 180, 0, TMath::Pi()*2);
481 fRecPtNegPhi->GetXaxis()->SetTitle("log_{10}(p_{T})");
482 fRecPtNegPhi->GetYaxis()->SetTitle("#phi (rad.)");
484 fRecEtaPosPhi = new TH2F("fRecEtaPosPhi",
486 100, -1.5, 1.5, 180, 0, TMath::Pi()*2);
487 fRecEtaPosPhi->GetXaxis()->SetTitle("#eta");
488 fRecEtaPosPhi->GetYaxis()->SetTitle("#phi (rad.)");
489 fRecEtaNegPhi = new TH2F("fRecEtaNegPhi",
491 100, -1.5, 1.5, 180, 0, TMath::Pi()*2);
492 fRecEtaNegPhi->GetXaxis()->SetTitle("#eta");
493 fRecEtaNegPhi->GetYaxis()->SetTitle("#phi (rad.)");
495 fRecQPtPhi = new TH2F("fRecQPtPhi",
496 " charge/p_T vs. phi",
497 100,-1. , 1., 180, 0, TMath::Pi()*2);
498 fRecQPtPhi->GetXaxis()->SetTitle("charge/p_{T}");
499 fRecQPtPhi->GetYaxis()->SetTitle("#phi (rad.)");
501 fRecEtaPtPosPhi = new TH2F("fRecEtaPtPosPhi",
503 100, -5, 5., 180, 0, TMath::Pi()*2);
504 fRecEtaPtPosPhi->GetXaxis()->SetTitle("#eta/p_{T}");
505 fRecEtaPtPosPhi->GetYaxis()->SetTitle("#phi (rad.)");
506 fRecEtaPtNegPhi = new TH2F("fRecEtaPtNegPhi",
508 100,-5 , 5., 180, 0, TMath::Pi()*2);
509 fRecEtaPtNegPhi->GetXaxis()->SetTitle("#eta/p_{T}");
510 fRecEtaPtNegPhi->GetYaxis()->SetTitle("#phi (rad.)");
516 fRecDcaPosPhiEtaPos = new TH2F("fRecDcaPosPhiEtaPos",
518 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2);
519 fRecDcaPosPhiEtaPos->GetXaxis()->SetTitle("dca (cm)");
520 fRecDcaPosPhiEtaPos->GetYaxis()->SetTitle("#phi (rad.)");
521 fRecDcaNegPhiEtaPos = new TH2F("fRecDcaNegPhiEtaPos",
523 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2);
524 fRecDcaNegPhiEtaPos->GetXaxis()->SetTitle("dca (cm)");
525 fRecDcaNegPhiEtaPos->GetYaxis()->SetTitle("#phi (rad.)");
527 fRecPtPosPhiEtaPos = new TH2F("fRecPtPosPhiEtaPos",
529 100, -2.5, 2., 180, 0, TMath::Pi()*2);
530 fRecPtPosPhiEtaPos->GetXaxis()->SetTitle("log_{10}(p_{T})");
531 fRecPtPosPhiEtaPos->GetYaxis()->SetTitle("#phi (rad.)");
532 fRecPtNegPhiEtaPos = new TH2F("fRecPtNegPhiEtaPos",
534 100,-2.5 , 2., 180, 0, TMath::Pi()*2);
535 fRecPtNegPhiEtaPos->GetXaxis()->SetTitle("log_{10}(p_{T})");
536 fRecPtNegPhiEtaPos->GetYaxis()->SetTitle("#phi (rad.)");
539 fRecDcaPosPhiEtaNeg = new TH2F("fRecDcaPosPhiEtaNeg",
541 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2);
542 fRecDcaPosPhiEtaNeg->GetXaxis()->SetTitle("dca (cm)");
543 fRecDcaPosPhiEtaNeg->GetYaxis()->SetTitle("#phi (rad.)");
544 fRecDcaNegPhiEtaNeg = new TH2F("fRecDcaNegPhiEtaNeg",
546 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2);
547 fRecDcaNegPhiEtaNeg->GetXaxis()->SetTitle("dca (cm)");
548 fRecDcaNegPhiEtaNeg->GetYaxis()->SetTitle("#phi (rad.)");
550 fRecPtPosPhiEtaNeg = new TH2F("fRecPtPosPhiEtaNeg",
552 100, -2.5, 2., 180, 0, TMath::Pi()*2);
553 fRecPtPosPhiEtaNeg->GetXaxis()->SetTitle("log_{10}(p_{T})");
554 fRecPtPosPhiEtaNeg->GetYaxis()->SetTitle("#phi (rad.)");
555 fRecPtNegPhiEtaNeg = new TH2F("fRecPtNegPhiEtaNeg",
557 100,-2.5 , 2., 180, 0, TMath::Pi()*2);
558 fRecPtNegPhiEtaNeg->GetXaxis()->SetTitle("log_{10}(p_{T})");
559 fRecPtNegPhiEtaNeg->GetYaxis()->SetTitle("#phi (rad.)");
562 fRecDcaPosPtEtaPos = new TH2F("fRecDcaPosPtEtaPos",
564 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2);
565 fRecDcaPosPtEtaPos->GetXaxis()->SetTitle("dca (cm)");
566 fRecDcaPosPtEtaPos->GetYaxis()->SetTitle("log_{10}(p_{T})");
568 fRecDcaPosPtEtaNeg = new TH2F("fRecDcaPosPtEtaNeg",
570 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2);
571 fRecDcaPosPtEtaNeg->GetXaxis()->SetTitle("dca (cm)");
572 fRecDcaPosPtEtaNeg->GetYaxis()->SetTitle("log_{10}(p_{T})");
574 fRecDcaNegPtEtaPos = new TH2F("fRecDcaNegPtEtaPos",
576 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2);
577 fRecDcaNegPtEtaPos->GetXaxis()->SetTitle("dca (cm)");
578 fRecDcaNegPtEtaPos->GetYaxis()->SetTitle("log_{10}(p_{T})");
580 fRecDcaNegPtEtaNeg = new TH2F("fRecDcaNegPtEtaNeg",
582 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2);
583 fRecDcaNegPtEtaNeg->GetXaxis()->SetTitle("dca (cm)");
584 fRecDcaNegPtEtaNeg->GetYaxis()->SetTitle("log_{10}(p_{T})");
588 // YIELDs ---------------- for TPC sectors
589 for(Int_t sector=0; sector<18;sector++){
592 fRecPtTpcSector[sector] = new TH1F(Form("fRecPtTpcSector%02d",sector),
593 Form("p_{T} distribution: TPC sector %d",
594 sector),100, 0., pt);
595 fRecPtTpcSector[sector]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
597 fRecEtaTpcSector[sector] = new TH1F(Form("fRecEtaTpcSector%02d",sector),
598 Form("#eta distribution: TPC sector %d",
599 sector),200, -2., 2.);
600 fRecEtaTpcSector[sector]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
603 fSignedDcaTpcSector[sector] = new TH1F(Form("fSignedDcaTpcSector%02d",sector),
604 Form("dca distribution: TPC sector %d",
605 sector),200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9) );
606 fSignedDcaTpcSector[sector]->GetXaxis()->SetTitle("dca");
608 fRecQPtTpcSector[sector] = new TH1F(Form("fRecQPtTpcSector%02d",sector),
609 Form("Q/ p_{T} distribution: TPC sector %d",
610 sector),100, -1., 1.);
611 fRecQPtTpcSector[sector]->GetXaxis()->SetTitle("Q/p_{T} (GeV/c)");
613 fRecEtaPtTpcSector[sector] = new TH1F(Form("fRecEtaPtTpcSector%02d",sector),
614 Form("#eta/ p_{T} distribution: TPC sector %d",
615 sector),100, -1., 1.);
616 fRecEtaPtTpcSector[sector]->GetXaxis()->SetTitle("#eta/p_{T} (GeV/c)");
620 for(Int_t i=0;i<7;i++){
621 fRecPtPosLadder[i] = new TH1F(Form("fRecPtPosLadder%d", i),
622 " p_{T} distribution",
624 fRecPtPosLadder[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
625 fRecPtNegLadder[i] = new TH1F(Form("fRecPtNegLadder%d",i),
626 " p_{T} distribution ",
628 fRecPtNegLadder[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
631 fRecPhiPosLadder[i] = new TH1F(Form("fRecPhiPosLadder%d",i),
632 "#phi distribution: all pos eta",
634 fRecPhiPosLadder[i]->GetXaxis()->SetTitle("#phi (deg)");
636 fRecPhiNegLadder[i] = new TH1F(Form("fRecPhiNegLadder%d", i),
637 "#phi distribution: all neg eta",
639 fRecPhiNegLadder[i]->GetXaxis()->SetTitle("#phi (deg)");
643 fRecEtaPosLadder[i] = new TH1F(Form("fRecEtaPosLadder%d",i),
646 fRecEtaPosLadder[i]->GetXaxis()->SetTitle("#eta)");
648 fRecEtaNegLadder[i] = new TH1F(Form("fRecEtaNegLadder%d", i),
651 fRecEtaNegLadder[i]->GetXaxis()->SetTitle("#eta");
656 fRecPtPosVz = new TH2F("fRecPtPosVz",
657 "p_{T} distribution vs Vz()",
658 100, -1., 2., 200,-vzmax,vzmax);
659 fRecPtPosVz->GetXaxis()->SetTitle("log_{10}(p_{T})");
661 fRecPtNegVz = new TH2F("fRecPtNegVz",
662 "p_{T} distribution vs Vz()",
663 100, -1., 2.,200,-vzmax,vzmax);
664 fRecPtNegVz->GetXaxis()->SetTitle("Log_{10}(p_{T})");
667 fRecEtaPosVz= new TH2F("fRecEtaPosVz",
668 "#eta distribution vs Vz()",
669 100, -2., 2., 200,-vzmax,vzmax);
670 fRecEtaPosVz->GetXaxis()->SetTitle("#eta");
671 fRecEtaNegVz = new TH2F("fRecEtaNegVz",
672 "#eta distribution vs Vz()",
673 100, -2., 2.,200,-vzmax,vzmax);
674 fRecEtaNegVz->GetXaxis()->SetTitle("#eta");
676 fRecPhiPosVz= new TH2F("fRecPhiPosVz",
677 "#eta distribution vs Vz()",
678 361, 0., 360., 200,-vzmax,vzmax);
679 fRecPhiPosVz->GetXaxis()->SetTitle("#phi (deg)");
680 fRecPhiNegVz = new TH2F("fRecPhiNegVz",
682 361, 0., 360.,200,-vzmax,vzmax);
683 fRecPhiNegVz->GetXaxis()->SetTitle("#phi (deg)");
685 fSignedDcaPosVz= new TH2F("fSignedDcaPosVz",
686 "#eta distribution vs Vz()",
687 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200,-vzmax,vzmax);
688 fSignedDcaPosVz->GetXaxis()->SetTitle("dca (cm)");
689 fSignedDcaNegVz = new TH2F("fSignedDcaNegVz",
691 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9),200,-vzmax,vzmax);
692 fSignedDcaNegVz->GetXaxis()->SetTitle("dca (cm)");
694 fRecQPtPosEtaVz= new TH2F("fRecQPtPosEtaVz",
695 " Q/p_{T} distribution vs Vz()",
696 100, -1., 1., 200,-vzmax,vzmax);
697 fRecQPtPosEtaVz->GetXaxis()->SetTitle("Q/p_{T}");
698 fRecQPtNegEtaVz = new TH2F("fRecQPtNegEtaVz",
699 " Q/p_{T} distribution vs Vz()",
700 100, -1., 1.,200,-vzmax,vzmax);
701 fRecQPtNegEtaVz->GetXaxis()->SetTitle("Q/p_{T}");
704 fRecEtaPtPosVz= new TH2F("fRecEtaPtPosVz",
705 " #eta/p_{T} distribution vs Vz()",
706 100, -1., 1., 200,-vzmax,vzmax);
707 fRecEtaPtPosVz->GetXaxis()->SetTitle("#eta/p_{T");
708 fRecEtaPtNegVz = new TH2F("fRecEtaPtNegVz",
709 " #eta/p_{T} distribution vs Vz()",
710 100, -1., 1.,200,-vzmax,vzmax);
711 fRecEtaPtNegVz->GetXaxis()->SetTitle("#eta/p_{T}");
714 fDeltaPhiAll = new TH1F("fDeltaPhiAll",
715 " #Delta #phi",200,-360,360);
716 fDeltaPhiAll->GetXaxis()->SetTitle("#Delta #phi");
719 fDeltaPhiLeading = new TH2F("fDeltaPhiLeading",
720 " #Delta #phi",361,-360,360, 361,0, 360);
721 fDeltaPhiLeading->GetXaxis()->SetTitle("#Delta #phi (deg.)");
722 fDeltaPhiLeading->GetYaxis()->SetTitle("#phi_{leading particle} (deg.)");
724 fDiffDcaD = new TH1F("fDiffDcaD",
729 fRecPtPosEtaPos = new TH1F("fRecPtPosEtaPos",
730 "p_{T} distribution",100,0,pt);
731 fRecPtPosEtaPos->GetXaxis()->SetTitle("p_{T} (GeV/c)");
733 fRecPtNegEtaPos = new TH1F("fRecPtNegEtaPos",
734 "p_{T} distribution",100,0,pt);
735 fRecPtNegEtaPos->GetXaxis()->SetTitle("p_{T} (GeV/c)");
737 fRecPtPosEtaNeg = new TH1F("fRecPtPosEtaNeg",
738 "p_{T} distribution",100,0,pt);
739 fRecPtPosEtaNeg->GetXaxis()->SetTitle("p_{T} (GeV/c)");
741 fRecPtNegEtaNeg = new TH1F("fRecPtNegEtaNeg",
742 "p_{T} distribution",100,0,pt);
743 fRecPtNegEtaNeg->GetXaxis()->SetTitle("p_{T} (GeV/c)");
747 fRec1PtPosEtaPos = new TH1F("fRec1PtPosEtaPos",
748 "1/p_{T} distribution",100,0,0.5);
749 fRec1PtPosEtaPos->GetXaxis()->SetTitle("p_{T} (c/GeV)");
751 fRec1PtNegEtaPos = new TH1F("fRec1PtNegEtaPos",
752 "1/p_{T} distribution",100,0,0.5);
753 fRec1PtNegEtaPos->GetXaxis()->SetTitle("p_{T} (c/GeV)");
755 fRec1PtPosEtaNeg = new TH1F("fRec1PtPosEtaNeg",
756 "1/p_{T} distribution",100,0,0.5);
757 fRec1PtPosEtaNeg->GetXaxis()->SetTitle("p_{T} (c/GeV)");
759 fRec1PtNegEtaNeg = new TH1F("fRec1PtNegEtaNeg",
760 "1/p_{T} distribution",100,0,0.5);
761 fRec1PtNegEtaNeg->GetXaxis()->SetTitle("1/p_{T} (c/GeV)");
765 fRecPhiPosEtaPos = new TH1F("fRecPhiPosEtaPos",
766 "#phi",180,0,2*TMath::Pi());
767 fRecPhiPosEtaPos->GetXaxis()->SetTitle("#phi (rad.)");
769 fRecPhiNegEtaPos = new TH1F("fRecPhiNegEtaPos",
770 "#phi",180,0,2*TMath::Pi());
771 fRecPhiNegEtaPos->GetXaxis()->SetTitle("#phi (rad.)");
773 fRecPhiPosEtaNeg = new TH1F("fRecPhiPosEtaNeg",
774 "#phi",180,0,2*TMath::Pi());
775 fRecPhiPosEtaNeg->GetXaxis()->SetTitle("#phi (rad.)");
777 fRecPhiNegEtaNeg = new TH1F("fRecPhiNegEtaNeg",
778 "#phi",180,0,2*TMath::Pi());
779 fRecPhiNegEtaNeg->GetXaxis()->SetTitle("#phi (rad.)");
783 fRecDcaPhiPtPosEtaPos = new TH3F("fRecDcaPhiPtPosEtaPos",
787 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
788 fRecDcaPhiPtPosEtaPos->GetXaxis()->SetTitle("#phi (rad.)");
789 fRecDcaPhiPtPosEtaPos->GetYaxis()->SetTitle("p_{T} (GeV/c)");
790 fRecDcaPhiPtPosEtaPos->GetZaxis()->SetTitle("dca (cm)");
792 fRecDcaPhiPtPosEtaNeg = new TH3F("fRecDcaPhiPtPosEtaNeg",
796 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
797 fRecDcaPhiPtPosEtaNeg->GetZaxis()->SetTitle("dca (cm)");
798 fRecDcaPhiPtPosEtaNeg->GetXaxis()->SetTitle("#phi (rad.)");
799 fRecDcaPhiPtPosEtaNeg->GetYaxis()->SetTitle("p_{T} (GeV/c)");
801 fRecDcaPhiPtNegEtaPos = new TH3F("fRecDcaPhiPtNegEtaPos",
805 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
806 fRecDcaPhiPtNegEtaPos->GetZaxis()->SetTitle("dca (cm)");
807 fRecDcaPhiPtNegEtaPos->GetXaxis()->SetTitle("#phi (rad.)");
808 fRecDcaPhiPtNegEtaPos->GetYaxis()->SetTitle("p_{T} (GeV/c)");
810 fRecDcaPhiPtNegEtaNeg = new TH3F("fRecDcaPhiPtNegEtaNeg",
814 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
815 fRecDcaPhiPtNegEtaNeg->GetZaxis()->SetTitle("dca (cm)");
816 fRecDcaPhiPtNegEtaNeg->GetYaxis()->SetTitle("#phi (rad.)");
817 fRecDcaPhiPtNegEtaNeg->GetXaxis()->SetTitle("p_{T} (GeV/c)");
824 fHists->Add(fHistRECpt);
826 fHists->Add(fEtavPt);
827 fHists->Add(fCompareTPCparam);
828 fHists->Add(fEtaPhi);
829 fHists->Add(fThetaRec);
830 fHists->Add(fPhiRec);
831 fHists->Add(fNumber);
840 fHists->Add(fDeltaPhiAll);
841 fHists->Add(fDeltaPhiLeading);
842 fHists->Add(fDiffDcaD);
845 fHists->Add(fsigmaPt);
847 fHists->Add(fRecPtPos);
848 fHists->Add(fRecPtNeg);
849 fHists->Add(fRecPhiPos);
850 fHists->Add(fRecPhiNeg);
851 fHists->Add(fRecEtaPos);
852 fHists->Add(fRecEtaNeg);
853 fHists->Add(fRecEtaPtPos);
854 fHists->Add(fRecEtaPtNeg);
855 fHists->Add(fRecDcaPos);
856 fHists->Add(fRecDcaNeg);
857 fHists->Add(fRecDcaNegInv);
858 fHists->Add(fRecDPos);
859 fHists->Add(fRecDNeg);
862 fHists->Add(fRecQPtPosEta);
863 fHists->Add(fRecQPtNegEta);
864 fHists->Add(fRecPtPosEta);
865 fHists->Add(fRecPtNegEta);
866 fHists->Add(fRecPhiPosEta);
867 fHists->Add(fRecPhiNegEta);
868 fHists->Add(fRecDcaPosEta);
869 fHists->Add(fRecDcaNegEta);
870 fHists->Add(fRecDPosEta);
871 fHists->Add(fRecDNegEta);
874 for(Int_t i=0;i<18;i++){
875 fHists->Add(fRecPtTpcSector[i]);
876 fHists->Add(fRecEtaTpcSector[i]);
877 fHists->Add(fSignedDcaTpcSector[i]);
878 fHists->Add(fRecQPtTpcSector[i]);
879 fHists->Add(fRecEtaPtTpcSector[i]);
882 for(Int_t i=0;i<7;i++){
883 fHists->Add(fRecPtPosLadder[i]);
884 fHists->Add(fRecPtNegLadder[i]);
885 fHists->Add(fRecPhiPosLadder[i]);
886 fHists->Add(fRecPhiNegLadder[i]);
887 fHists->Add(fRecEtaPosLadder[i]);
888 fHists->Add(fRecEtaNegLadder[i]);
891 fHists->Add(fRecPtPosVz);
892 fHists->Add(fRecPtNegVz);
893 fHists->Add(fRecEtaPosVz);
894 fHists->Add(fRecEtaNegVz);
895 fHists->Add(fRecPhiPosVz);
896 fHists->Add(fRecPhiNegVz);
897 fHists->Add(fSignedDcaPosVz);
898 fHists->Add(fSignedDcaNegVz);
899 fHists->Add(fRecQPtPosEtaVz);
900 fHists->Add(fRecQPtNegEtaVz);
901 fHists->Add(fRecEtaPtPosVz);
902 fHists->Add(fRecEtaPtNegVz);
905 for(Int_t i=0;i<7;i++){
906 fHists->Add(fSignDcaPos[i]);
907 fHists->Add(fSignDcaNeg[i]);
908 fHists->Add(fSignDcaNegInv[i]);
910 fHists->Add(fPtSigmaPos[i]);
911 fHists->Add(fPtSigmaNeg[i]);
912 fHists->Add(fqPtRec[i]);
914 fHists->Add(fDcaSigmaPos[i]);
915 fHists->Add(fDcaSigmaNeg[i]);
920 fHists->Add(fRecDcaPosPhi);
921 fHists->Add(fRecDcaNegPhi);
922 fHists->Add(fRecPtPosPhi);
923 fHists->Add(fRecPtNegPhi);
924 fHists->Add(fRecEtaPosPhi);
925 fHists->Add(fRecEtaNegPhi);
926 fHists->Add(fRecQPtPhi);
927 fHists->Add(fRecEtaPtPosPhi);
928 fHists->Add(fRecEtaPtNegPhi);
930 fHists->Add(fRecPtPosEtaPos);
931 fHists->Add(fRecPtNegEtaPos);
932 fHists->Add(fRecPtPosEtaNeg);
933 fHists->Add(fRecPtNegEtaNeg);
935 fHists->Add(fRec1PtPosEtaPos);
936 fHists->Add(fRec1PtNegEtaPos);
937 fHists->Add(fRec1PtPosEtaNeg);
938 fHists->Add(fRec1PtNegEtaNeg);
941 fHists->Add(fRecPhiPosEtaPos);
942 fHists->Add(fRecPhiNegEtaPos);
943 fHists->Add(fRecPhiPosEtaNeg);
944 fHists->Add(fRecPhiNegEtaNeg);
946 fHists->Add(fRecDcaPosPhiEtaPos);
947 fHists->Add(fRecDcaNegPhiEtaPos);
948 fHists->Add(fRecPtPosPhiEtaPos);
949 fHists->Add(fRecPtNegPhiEtaPos);
950 fHists->Add(fRecDcaPosPhiEtaNeg);
951 fHists->Add(fRecDcaNegPhiEtaNeg);
952 fHists->Add(fRecPtPosPhiEtaNeg);
953 fHists->Add(fRecPtNegPhiEtaNeg);
955 fHists->Add(fRecDcaPosPtEtaPos);
956 fHists->Add(fRecDcaNegPtEtaPos);
957 fHists->Add(fRecDcaPosPtEtaNeg);
958 fHists->Add(fRecDcaNegPtEtaNeg);
960 fHists->Add(fRecDcaPhiPtPosEtaPos);
961 fHists->Add(fRecDcaPhiPtPosEtaNeg);
962 fHists->Add(fRecDcaPhiPtNegEtaPos);
963 fHists->Add(fRecDcaPhiPtNegEtaNeg);
969 // for (Int_t i=0; i<fHists->GetEntries(); ++i) {
970 // TH1 *h1 = dynamic_cast<TH1*>(fHists->At(i));
972 // // Printf("%s ",h1->GetName());
978 TH1::AddDirectory(oldStatus);
981 //__________________________________________________________
983 void AliAnalysisTaskQASym::UserExec(Option_t *)
985 AliVEvent *event = InputEvent();
987 Printf("ERROR: Could not retrieve event");
993 AliESDEvent* esd = dynamic_cast<AliESDEvent*>(event);
995 Printf("We are reading from ESD");
1002 if(fDebug>1)Printf("There are %d tracks in this event", event->GetNumberOfTracks());
1005 Int_t leadingTrack = 0;
1006 Float_t leadingEnergy = -20.;
1007 Float_t leadingPhi = 0;//TMath::Pi();
1010 if(event->GetNumberOfTracks()!=0) fNumber->Fill(event->GetNumberOfTracks());
1012 const AliVVertex* vertex = event->GetPrimaryVertex();
1013 Float_t vz = vertex->GetZ();
1014 if (TMath::Abs(vz) > 10.) return;
1016 AliESDtrack *tpcP = 0x0;
1018 for (Int_t iTrack = 0; iTrack < event->GetNumberOfTracks(); iTrack++) {
1020 //prevent mem leak for TPConly track
1021 if(fTrackType==2&&tpcP){
1026 AliVParticle *track = event->GetTrack(iTrack);
1027 AliESDtrack *esdtrack = dynamic_cast<AliESDtrack*>(track);
1028 esdtrack->PropagateToDCA(event->GetPrimaryVertex(),
1029 event->GetMagneticField(), 10000.);
1032 Printf("ERROR: Could not receive track %d", iTrack);
1036 // run Task for global tracks or ITS tracks or TPC tracks
1037 const AliExternalTrackParam *tpcPin = 0x0;
1040 //Fill all histograms with global tracks
1042 phiIn = tpcP->Phi();
1043 if (!tpcP) continue;
1044 if (!fCuts->AcceptTrack(tpcP)) continue;
1046 else if(fTrackType==1){
1047 //Fill all histograms with ITS tracks
1049 phiIn = tpcP->Phi();
1050 if (!tpcP) continue;
1051 if (!fCuts->AcceptTrack(tpcP)) continue;
1053 else if(fTrackType==2){
1054 //Fill all histograms with TPC track information
1055 tpcPin = esdtrack->GetInnerParam();
1056 if (!tpcPin) continue;
1057 phiIn=tpcPin->Phi();
1059 tpcP = AliESDtrackCuts::GetTPCOnlyTrack(dynamic_cast<AliESDEvent*>(event),esdtrack->GetID());
1060 if (!tpcP) continue;
1061 if (!fCuts->AcceptTrack(tpcP)) continue;
1062 if(tpcP->GetNcls(1)>160)continue;//jacek's track cut
1063 if(tpcP->GetConstrainedChi2TPC()<0)continue; // jacek's track cut
1066 Printf("ERROR: wrong track type \n");
1073 if(tpcP->E()>leadingEnergy){
1074 leadingTrack=iTrack;
1075 leadingEnergy=tpcP->E();
1080 fqRec->Fill(tpcP->Charge());
1083 Double_t sigmapt = tpcP->GetSigma1Pt2();
1084 sigmapt= sqrt(sigmapt);
1085 sigmapt= sigmapt *(tpcP->Pt()*tpcP->Pt());
1087 if(sigmapt == 0.)continue;
1088 fsigmaPt->Fill(TMath::Log10(sigmapt));
1091 // hits in ITS layer
1093 if(tpcP->HasPointOnITSLayer(0))
1095 else if(!tpcP->HasPointOnITSLayer(0)
1096 && tpcP->HasPointOnITSLayer(1))
1098 else if(!tpcP->HasPointOnITSLayer(0)
1099 && !tpcP->HasPointOnITSLayer(1)
1100 && tpcP->HasPointOnITSLayer(2))
1102 else if(!tpcP->HasPointOnITSLayer(0)
1103 && !tpcP->HasPointOnITSLayer(1)
1104 && !tpcP->HasPointOnITSLayer(2)
1105 && tpcP->HasPointOnITSLayer(3))
1107 else if(!tpcP->HasPointOnITSLayer(0)
1108 && !tpcP->HasPointOnITSLayer(1)
1109 && !tpcP->HasPointOnITSLayer(2)
1110 && !tpcP->HasPointOnITSLayer(3)
1111 && tpcP->HasPointOnITSLayer(4))
1113 else if( !tpcP->HasPointOnITSLayer(0)
1114 && !tpcP->HasPointOnITSLayer(1)
1115 && !tpcP->HasPointOnITSLayer(2)
1116 && !tpcP->HasPointOnITSLayer(3)
1117 && !tpcP->HasPointOnITSLayer(4)
1118 && tpcP->HasPointOnITSLayer(5))
1125 //-------------------
1127 xvertexcor = tpcP->Xv() - vertex->GetX(); // coordinate corrected for vertex position
1128 yvertexcor = tpcP->Yv() - vertex->GetY(); // "
1129 sdca = (tpcP->Py()*xvertexcor - tpcP->Px()*yvertexcor)/tpcP->Pt();
1132 fqPtRec[cas]->Fill(tpcP->Charge()/tpcP->Pt());
1136 fHistRECpt->Fill(tpcP->Pt());
1137 fEta->Fill(tpcP->Eta());
1138 fEtavPt->Fill(tpcP->Eta(), tpcP->Pt());
1139 fEtaPhi->Fill(tpcP->Eta(), phiIn);
1140 fThetaRec->Fill(tpcP->Theta());
1141 fPhiRec->Fill(phiIn);
1142 fVx->Fill(tpcP->Xv());
1143 fVy->Fill(tpcP->Yv());
1144 fVz->Fill(tpcP->Zv());
1147 fEtaPt->Fill(tpcP->Eta()/tpcP->Pt());
1148 fQPt->Fill(tpcP->Charge()/tpcP->Pt());
1150 fRecQPtPhi->Fill(tpcP->Charge()/tpcP->Pt(), phiIn);
1153 tpcP->GetImpactParameters(xy,z);
1154 fDiffDcaD->Fill(sdca+xy);
1156 if(fTrackType==2) fCompareTPCparam->Fill(z,tpcPin->GetTgl());
1158 //for positive particles
1160 if(tpcP->Charge()>0){
1161 fRecPtPos->Fill(tpcP->Pt());
1162 fRecPtPosLadder[cas]->Fill(tpcP->Pt());
1163 fRecPtPosVz->Fill(TMath::Log10(tpcP->Pt()),tpcP->Zv());
1164 fRecPhiPos->Fill(TMath::RadToDeg()*phiIn);
1167 fRecPhiPosLadder[cas]->Fill(TMath::RadToDeg()*phiIn);
1168 fRecPhiPosVz->Fill(TMath::RadToDeg()*phiIn,tpcP->Zv());
1169 fSignedDcaPosVz->Fill(sdca,tpcP->Zv());
1171 fRecEtaPos->Fill(tpcP->Eta());
1172 fRecEtaPosLadder[cas]->Fill(tpcP->Eta());
1173 fRecEtaPtPos->Fill(tpcP->Eta()/tpcP->Pt());
1174 fRecEtaPosVz->Fill(tpcP->Eta(),tpcP->Zv());
1175 fRecEtaPtPosVz->Fill(tpcP->Eta()/tpcP->Pt(),tpcP->Zv());
1177 fRecDcaPos->Fill(sdca);
1178 fRecDcaPosPhi->Fill(sdca, phiIn);
1179 fRecPtPosPhi->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1180 fRecEtaPtPosPhi->Fill(tpcP->Eta()/tpcP->Pt(), phiIn);
1181 fRecEtaPosPhi->Fill(tpcP->Eta(), phiIn);
1183 fSignDcaPos[cas]->Fill(sdca);
1186 fDcaSigmaPos[cas]->Fill(sdca, TMath::Log10(sigmapt));
1188 fPtSigmaPos[cas]->Fill(TMath::Log10(sigmapt));
1191 fRecPtPosEtaPos->Fill(tpcP->Pt());
1192 fRec1PtPosEtaPos->Fill(1/tpcP->Pt());
1193 fRecPhiPosEtaPos->Fill(phiIn);
1194 fRecDcaPosPhiEtaPos->Fill(sdca, phiIn);
1195 fRecDcaPosPtEtaPos->Fill(sdca, TMath::Log10(tpcP->Pt()));
1196 fRecPtPosPhiEtaPos->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1197 fRecDcaPhiPtPosEtaPos->Fill(phiIn, tpcP->Pt(), sdca);
1201 fRecPtPosEtaNeg->Fill(tpcP->Pt());
1202 fRec1PtPosEtaNeg->Fill(1/tpcP->Pt());
1203 fRecPhiPosEtaNeg->Fill(phiIn);
1204 fRecDcaPosPhiEtaNeg->Fill(sdca, phiIn);
1205 fRecDcaPosPtEtaNeg->Fill(sdca, TMath::Log10(tpcP->Pt()));
1206 fRecPtPosPhiEtaNeg->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1207 fRecDcaPhiPtPosEtaNeg->Fill(phiIn, tpcP->Pt(), sdca);
1211 //and negative particles
1213 fRecPtNeg->Fill(tpcP->Pt());
1214 fRecPtNegLadder[cas]->Fill(tpcP->Pt());
1215 fRecPtNegVz->Fill(TMath::Log10(tpcP->Pt()),tpcP->Zv());
1217 fRecPhiNeg->Fill(TMath::RadToDeg()*phiIn);
1218 fRecPhiNegLadder[cas]->Fill(TMath::RadToDeg()*phiIn);
1219 fRecPhiNegVz->Fill(TMath::RadToDeg()*phiIn,tpcP->Zv());
1220 fSignedDcaNegVz->Fill(sdca,tpcP->Zv());
1221 fRecEtaPtNegVz->Fill(tpcP->Eta()/tpcP->Pt(),tpcP->Zv());
1223 fRecEtaNeg->Fill(tpcP->Eta());
1224 fRecEtaNegLadder[cas]->Fill(tpcP->Eta());
1225 fRecEtaPtNeg->Fill(tpcP->Eta()/tpcP->Pt());
1226 fRecEtaNegVz->Fill(tpcP->Eta(),tpcP->Zv());
1228 fRecDcaNeg->Fill(sdca);
1229 fRecDcaNegInv->Fill(-sdca);
1230 fRecDcaNegPhi->Fill(sdca, phiIn);
1231 fRecPtNegPhi->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1232 fRecEtaNegPhi->Fill(tpcP->Eta(), phiIn);
1233 fRecEtaPtNegPhi->Fill(tpcP->Eta()/tpcP->Pt(), phiIn);
1235 fSignDcaNeg[cas]->Fill(sdca);
1236 fSignDcaNegInv[cas]->Fill(-sdca);
1239 fDcaSigmaNeg[cas]->Fill(sdca,TMath::Log10(sigmapt));
1241 fPtSigmaNeg[cas]->Fill(TMath::Log10(sigmapt));
1245 fRecPtNegEtaPos->Fill(tpcP->Pt());
1246 fRec1PtNegEtaPos->Fill(1/tpcP->Pt());
1247 fRecPhiNegEtaPos->Fill(phiIn);
1248 fRecDcaNegPhiEtaPos->Fill(sdca, phiIn);
1249 fRecDcaNegPtEtaPos->Fill(sdca, TMath::Log10(tpcP->Pt()));
1250 fRecPtNegPhiEtaPos->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1251 fRecDcaPhiPtNegEtaPos->Fill(phiIn, tpcP->Pt(), sdca);
1255 fRecPtNegEtaNeg->Fill(tpcP->Pt());
1256 fRec1PtNegEtaNeg->Fill(1/tpcP->Pt());
1257 fRecPhiNegEtaNeg->Fill(phiIn);
1258 fRecDcaNegPhiEtaNeg->Fill(sdca, phiIn);
1259 fRecDcaNegPtEtaNeg->Fill(sdca, TMath::Log10(tpcP->Pt()));
1260 fRecPtNegPhiEtaNeg->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1261 fRecDcaPhiPtNegEtaNeg->Fill(phiIn, tpcP->Pt(), sdca);
1268 //all particles with positive eta
1270 fRecQPtPosEta->Fill(tpcP->Charge()/tpcP->Pt());
1271 fRecPtPosEta->Fill(tpcP->Pt());
1272 fRecPhiPosEta->Fill(TMath::RadToDeg()*phiIn);
1273 fRecQPtPosEtaVz->Fill(tpcP->Charge()/tpcP->Pt(),tpcP->Zv());
1274 fRecDcaPosEta->Fill(sdca);
1275 fRecDPosEta->Fill(xy);
1277 //all particles with negative eta (and eta==0)
1279 fRecQPtNegEta->Fill(tpcP->Charge()/tpcP->Pt());
1280 fRecPtNegEta->Fill(tpcP->Pt());
1281 fRecPhiNegEta->Fill(TMath::RadToDeg()*phiIn);
1282 fRecQPtNegEtaVz->Fill(tpcP->Charge()/tpcP->Pt(),tpcP->Zv());
1283 fRecDcaNegEta->Fill(sdca);
1284 fRecDNegEta->Fill(xy);
1289 fRecPtTpcSector[Int_t(phiIn*
1290 TMath::RadToDeg()/20)]->Fill(tpcP->Pt());
1291 fRecEtaTpcSector[Int_t(phiIn*
1292 TMath::RadToDeg()/20)]->Fill(tpcP->Eta());
1293 fSignedDcaTpcSector[Int_t(phiIn*
1294 TMath::RadToDeg()/20)]->Fill(sdca);
1295 fRecQPtTpcSector[Int_t(phiIn*
1296 TMath::RadToDeg()/20)]->Fill(tpcP->Charge()/tpcP->Pt());
1297 fRecEtaPtTpcSector[Int_t(phiIn*
1298 TMath::RadToDeg()/20)]->Fill(tpcP->Eta()/tpcP->Pt());
1302 // // another track loop
1303 // for (Int_t iTrack2 = 0; iTrack2 < event->GetNumberOfTracks(); iTrack2++) {
1305 // if(LeadingTrack==iTrack2) continue;
1307 // AliVParticle *track2 = event->GetTrack(iTrack2);
1308 // AliESDtrack* esdtrack2 = dynamic_cast<AliESDtrack*>(track2);
1310 // Printf("ERROR: Could not receive track %d", iTrack);
1313 // if (!fCuts->AcceptTrack(esdtrack2)) continue;
1314 // //propagate to dca
1315 // esdtrack2->PropagateToDCA(event->GetPrimaryVertex(),
1316 // event->GetMagneticField(), 10000.);
1318 // fDeltaPhiLeading->Fill((LeadingPhi-esdtrack2->Phi())*TMath::RadToDeg(),
1319 // LeadingPhi*TMath::RadToDeg() );
1323 // }//second track loop
1325 // if(fTrackType==2) delete tpcP; // delete in case of TPCOnlyTrack
1329 //prevent mem leak for TPConly track
1330 if(fTrackType==2&&tpcP){
1337 // Post output data.
1338 // PostData(1, fHistPt);
1339 PostData(1, fHists);
1346 //________________________________________________________________________
1347 void AliAnalysisTaskQASym::Terminate(Option_t *)