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)
134 ,fRecDcaPosPhiEtaPos(0)
135 ,fRecDcaNegPhiEtaPos(0)
136 ,fRecDcaPosPhiEtaNeg(0)
137 ,fRecDcaNegPhiEtaNeg(0)
139 ,fRecDcaPosPtEtaPos(0)
140 ,fRecDcaNegPtEtaPos(0)
141 ,fRecDcaPosPtEtaNeg(0)
142 ,fRecDcaNegPtEtaNeg(0)
144 ,fRecPtPosPhiEtaPos(0)
145 ,fRecPtNegPhiEtaPos(0)
146 ,fRecPtPosPhiEtaNeg(0)
147 ,fRecPtNegPhiEtaNeg(0)
150 // ,fRecDcaPhiPtPosEtaPos(0)
151 // ,fRecDcaPhiPtNegEtaPos(0)
152 // ,fRecDcaPhiPtPosEtaNeg(0)
153 // ,fRecDcaPhiPtNegEtaNeg(0)
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;
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;
186 fSignDcaNegInv[i] = 0;
194 DefineOutput(1, TList::Class());
201 //________________________________________________________________________
202 void AliAnalysisTaskQASym::UserCreateOutputObjects()
207 Bool_t oldStatus = TH1::AddDirectoryStatus();
208 TH1::AddDirectory(kFALSE);
210 Double_t range = 0.3;
213 fHists = new TList();
214 // test = new TNtuple("test","test",
215 // "pt:phi:theta:x:y:z:charge");
216 fHistRECpt = new TH1F("fHistRECpt",
219 fEta = new TH1F("fEta",
222 fEtavPt = new TH2F("fEtavPt",
226 fCompareTPCparam = new TH2F("fCompareTPCparam",
228 100, -1., 1.,100,-5, 5);
230 fITSlayer = new TH1F("fITslayer",
234 fEtaPhi = new TH2F("fEtaPhi",
236 200, -2., 2., 128, 0., 2. * TMath::Pi());
238 fThetaRec = new TH1F("fThetaRec",
240 180, 0., TMath::Pi());
241 fPhiRec = new TH1F("fPhiRec",
243 180, 0., 2*TMath::Pi());
244 fNumber = new TH1F("fNumber",
245 "number of tracks per event",
247 fVx = new TH1F("fVx",
248 "X of first track point",
250 fVy = new TH1F("fVy",
251 "Y of first track point",
253 fVz = new TH1F("fVz",
254 "Z of first track point",
256 fVertexX = new TH1F("fVertexX",
259 fVertexY = new TH1F("fVertexY",
262 fVertexZ = new TH1F("fVertexZ",
266 fEtaPt = new TH1F("fEtaPt",
270 fQPt = new TH1F("fQPt",
274 fDca = new TH1F("fDca",
276 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
279 fqRec = new TH1F("fqRec",
280 " charge all reconstructed particle",
283 fsigmaPt = new TH1F("fsigmaPt",
284 "Log_{10}(#sigma_{p_{T}})",
291 for(Int_t ITSlayer_case=0;ITSlayer_case<7;ITSlayer_case++){
293 fSignDcaPos[ITSlayer_case] = new TH1F(Form("fSignDcaPos%d", ITSlayer_case),
295 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
296 fSignDcaPos[ITSlayer_case]->GetXaxis()->SetTitle("dca");
297 fSignDcaPos[ITSlayer_case]->GetYaxis()->SetTitle("");
300 fSignDcaNeg[ITSlayer_case] = new TH1F(Form("fSignDcaNeg%d", ITSlayer_case),
302 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
303 fSignDcaNeg[ITSlayer_case]->GetXaxis()->SetTitle("dca");
304 fSignDcaNeg[ITSlayer_case]->GetYaxis()->SetTitle("");
306 fSignDcaNegInv[ITSlayer_case] = new TH1F(Form("fSignDcaNegInv%d", ITSlayer_case),
307 " inverse Signed dca ",
308 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
309 fSignDcaNegInv[ITSlayer_case]->GetXaxis()->SetTitle("-dca");
310 fSignDcaNegInv[ITSlayer_case]->GetYaxis()->SetTitle("");
315 fPtSigmaPos[ITSlayer_case] = new TH1F(Form("fPtSigmaPos%d", ITSlayer_case),
318 fPtSigmaPos[ITSlayer_case]->GetXaxis()->SetTitle("Log_{10}(#sigma_{pT})");
319 fPtSigmaPos[ITSlayer_case]->GetYaxis()->SetTitle("");
322 fPtSigmaNeg[ITSlayer_case] = new TH1F(Form("fPtSigmaNeg%d",ITSlayer_case),
325 fPtSigmaNeg[ITSlayer_case]->GetXaxis()->SetTitle("Log_{10}(#sigma_{pT})");
326 fPtSigmaNeg[ITSlayer_case]->GetYaxis()->SetTitle("");
332 fqPtRec[ITSlayer_case] = new TH1F(Form("fqPtRec%d",ITSlayer_case),
335 fqPtRec[ITSlayer_case]->GetXaxis()->SetTitle("q_{tr}/p_{T, tr} (GeV/c)");
336 fqPtRec[ITSlayer_case]->GetYaxis()->SetTitle("");
342 fDcaSigmaPos[ITSlayer_case] = new TH2F(Form("fDcaSigmaPos%d", ITSlayer_case),
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. );
345 fDcaSigmaPos[ITSlayer_case]->GetXaxis()->SetTitle("signed DCA)");
346 fDcaSigmaPos[ITSlayer_case]->GetYaxis()->SetTitle("log_{10}(#sigma_{pT})");
349 fDcaSigmaNeg[ITSlayer_case] = new TH2F(Form("fDcaSigmaNeg%d", ITSlayer_case),
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. );
352 fDcaSigmaNeg[ITSlayer_case]->GetXaxis()->SetTitle("signed DCA");
353 fDcaSigmaNeg[ITSlayer_case]->GetYaxis()->SetTitle("log_{10}(#sigma_{pT})");
360 // YIELDs---------- positive and negative particles
362 fRecPtPos = new TH1F("fRecPtPos",
365 fRecPtPos->GetXaxis()->SetTitle("p_{T} (GeV/c)");
366 fRecPtNeg = new TH1F("fRecPtNeg",
369 fRecPtNeg->GetXaxis()->SetTitle("p_{T} (GeV/c)");
372 fRecPhiPos = new TH1F("fRecPhiPos",
375 fRecPhiPos->GetXaxis()->SetTitle("#phi (deg)");
377 fRecPhiNeg = new TH1F("fRecPhiNeg",
380 fRecPhiNeg->GetXaxis()->SetTitle("#phi (deg)");
382 fRecEtaPos = new TH1F("fRecEtaPos",
385 fRecEtaPos->GetXaxis()->SetTitle("#eta");
387 fRecEtaNeg = new TH1F("fRecEtaNeg",
390 fRecEtaNeg->GetXaxis()->SetTitle("#eta");
392 fRecEtaPtPos = new TH1F("fRecEtaPtPos",
395 fRecEtaPtPos->GetXaxis()->SetTitle("#eta/p_{T}");
397 fRecEtaPtNeg = new TH1F("fRecEtaPtNeg",
400 fRecEtaPtNeg->GetXaxis()->SetTitle("#eta/p_{T}");
402 fRecDcaPos = new TH1F("fRecDcaPos",
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",
408 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
409 fRecDcaNeg->GetXaxis()->SetTitle("dca (cm)");
411 fRecDcaNegInv = new TH1F("fRecDcaNegInv",
413 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
414 fRecDcaNegInv->GetXaxis()->SetTitle("dca (cm)");
417 fRecDPos = new TH1F("fRecDPos",
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",
423 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
424 fRecDNeg->GetXaxis()->SetTitle("d (cm)");
427 // YIELDs ---------------- positive and negative eta
430 fRecQPtPosEta = new TH1F("fRecQPtPosEta",
433 fRecQPtPosEta->GetXaxis()->SetTitle("q/p_{T} ");
435 fRecQPtNegEta = new TH1F("fRecQPtNegEta",
438 fRecQPtNegEta->GetXaxis()->SetTitle("q/p_{T}");
440 fRecPtPosEta = new TH1F("fRecPtPosEta",
443 fRecPtPosEta->GetXaxis()->SetTitle("p_{T} (GeV/c)");
445 fRecPtNegEta = new TH1F("fRecPtNegEta",
448 fRecPtNegEta->GetXaxis()->SetTitle("p_{T} (GeV/c)");
450 fRecPhiPosEta = new TH1F("fRecPhiPosEta",
453 fRecPhiPosEta->GetXaxis()->SetTitle("#phi (deg)");
455 fRecPhiNegEta = new TH1F("fRecPhiNegEta",
458 fRecPhiNegEta->GetXaxis()->SetTitle("#phi (deg)");
460 fRecDcaPosEta = new TH1F("fRecDcaPosEta",
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",
466 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
467 fRecDcaNegEta->GetXaxis()->SetTitle("dca (cm)");
469 fRecDPosEta = new TH1F("fRecDPosEta",
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",
476 fRecDNegEta->GetXaxis()->SetTitle("d (cm)");
478 fRecDcaPosPhi = new TH2F("fRecDcaPosPhi",
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",
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.)");
489 fRecPtPosPhi = new TH2F("fRecPtPosPhi",
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",
496 100,-2.5 , 2., 180, 0, TMath::Pi()*2);
497 fRecPtNegPhi->GetXaxis()->SetTitle("log_{10}(p_{T})");
498 fRecPtNegPhi->GetYaxis()->SetTitle("#phi (rad.)");
500 fRecEtaPosPhi = new TH2F("fRecEtaPosPhi",
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",
507 100, -1.5, 1.5, 180, 0, TMath::Pi()*2);
508 fRecEtaNegPhi->GetXaxis()->SetTitle("#eta");
509 fRecEtaNegPhi->GetYaxis()->SetTitle("#phi (rad.)");
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.)");
517 fRecEtaPtPosPhi = new TH2F("fRecEtaPtPosPhi",
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",
524 100,-5 , 5., 180, 0, TMath::Pi()*2);
525 fRecEtaPtNegPhi->GetXaxis()->SetTitle("#eta/p_{T}");
526 fRecEtaPtNegPhi->GetYaxis()->SetTitle("#phi (rad.)");
532 fRecDcaPosPhiEtaPos = new TH2F("fRecDcaPosPhiEtaPos",
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",
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.)");
543 fRecPtPosPhiEtaPos = new TH2F("fRecPtPosPhiEtaPos",
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",
550 100,-2.5 , 2., 180, 0, TMath::Pi()*2);
551 fRecPtNegPhiEtaPos->GetXaxis()->SetTitle("log_{10}(p_{T})");
552 fRecPtNegPhiEtaPos->GetYaxis()->SetTitle("#phi (rad.)");
555 fRecDcaPosPhiEtaNeg = new TH2F("fRecDcaPosPhiEtaNeg",
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",
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.)");
566 fRecPtPosPhiEtaNeg = new TH2F("fRecPtPosPhiEtaNeg",
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",
573 100,-2.5 , 2., 180, 0, TMath::Pi()*2);
574 fRecPtNegPhiEtaNeg->GetXaxis()->SetTitle("log_{10}(p_{T})");
575 fRecPtNegPhiEtaNeg->GetYaxis()->SetTitle("#phi (rad.)");
578 fRecDcaPosPtEtaPos = new TH2F("fRecDcaPosPtEtaPos",
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})");
584 fRecDcaPosPtEtaNeg = new TH2F("fRecDcaPosPtEtaNeg",
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})");
590 fRecDcaNegPtEtaPos = new TH2F("fRecDcaNegPtEtaPos",
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})");
596 fRecDcaNegPtEtaNeg = new TH2F("fRecDcaNegPtEtaNeg",
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})");
604 // YIELDs ---------------- for TPC sectors
605 for(Int_t sector=0; sector<18;sector++){
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)");
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)");
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");
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)");
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)");
636 for(Int_t i=0;i<7;i++){
637 fRecPtPosLadder[i] = new TH1F(Form("fRecPtPosLadder%d", i),
638 " p_{T} distribution",
640 fRecPtPosLadder[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
641 fRecPtNegLadder[i] = new TH1F(Form("fRecPtNegLadder%d",i),
642 " p_{T} distribution ",
644 fRecPtNegLadder[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
647 fRecPhiPosLadder[i] = new TH1F(Form("fRecPhiPosLadder%d",i),
648 "#phi distribution: all pos eta",
650 fRecPhiPosLadder[i]->GetXaxis()->SetTitle("#phi (deg)");
652 fRecPhiNegLadder[i] = new TH1F(Form("fRecPhiNegLadder%d", i),
653 "#phi distribution: all neg eta",
655 fRecPhiNegLadder[i]->GetXaxis()->SetTitle("#phi (deg)");
659 fRecEtaPosLadder[i] = new TH1F(Form("fRecEtaPosLadder%d",i),
662 fRecEtaPosLadder[i]->GetXaxis()->SetTitle("#eta)");
664 fRecEtaNegLadder[i] = new TH1F(Form("fRecEtaNegLadder%d", i),
667 fRecEtaNegLadder[i]->GetXaxis()->SetTitle("#eta");
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})");
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})");
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",
688 "#eta distribution vs Vz()",
689 100, -2., 2.,200,-vzmax,vzmax);
690 fRecEtaNegVz->GetXaxis()->SetTitle("#eta");
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",
698 361, 0., 360.,200,-vzmax,vzmax);
699 fRecPhiNegVz->GetXaxis()->SetTitle("#phi (deg)");
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",
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)");
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}");
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}");
730 fDeltaPhiAll = new TH1F("fDeltaPhiAll",
731 " #Delta #phi",200,-360,360);
732 fDeltaPhiAll->GetXaxis()->SetTitle("#Delta #phi");
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.)");
740 fDiffDcaD = new TH1F("fDiffDcaD",
745 fRecPtPosEtaPos = new TH1F("fRecPtPosEtaPos",
746 "p_{T} distribution",100,0,pt);
747 fRecPtPosEtaPos->GetXaxis()->SetTitle("p_{T} (GeV/c)");
749 fRecPtNegEtaPos = new TH1F("fRecPtNegEtaPos",
750 "p_{T} distribution",100,0,pt);
751 fRecPtNegEtaPos->GetXaxis()->SetTitle("p_{T} (GeV/c)");
753 fRecPtPosEtaNeg = new TH1F("fRecPtPosEtaNeg",
754 "p_{T} distribution",100,0,pt);
755 fRecPtPosEtaNeg->GetXaxis()->SetTitle("p_{T} (GeV/c)");
757 fRecPtNegEtaNeg = new TH1F("fRecPtNegEtaNeg",
758 "p_{T} distribution",100,0,pt);
759 fRecPtNegEtaNeg->GetXaxis()->SetTitle("p_{T} (GeV/c)");
763 fRec1PtPosEtaPos = new TH1F("fRec1PtPosEtaPos",
764 "1/p_{T} distribution",100,0,0.5);
765 fRec1PtPosEtaPos->GetXaxis()->SetTitle("p_{T} (c/GeV)");
767 fRec1PtNegEtaPos = new TH1F("fRec1PtNegEtaPos",
768 "1/p_{T} distribution",100,0,0.5);
769 fRec1PtNegEtaPos->GetXaxis()->SetTitle("p_{T} (c/GeV)");
771 fRec1PtPosEtaNeg = new TH1F("fRec1PtPosEtaNeg",
772 "1/p_{T} distribution",100,0,0.5);
773 fRec1PtPosEtaNeg->GetXaxis()->SetTitle("p_{T} (c/GeV)");
775 fRec1PtNegEtaNeg = new TH1F("fRec1PtNegEtaNeg",
776 "1/p_{T} distribution",100,0,0.5);
777 fRec1PtNegEtaNeg->GetXaxis()->SetTitle("1/p_{T} (c/GeV)");
781 fRecPhiPosEtaPos = new TH1F("fRecPhiPosEtaPos",
782 "#phi",180,0,2*TMath::Pi());
783 fRecPhiPosEtaPos->GetXaxis()->SetTitle("#phi (rad.)");
785 fRecPhiNegEtaPos = new TH1F("fRecPhiNegEtaPos",
786 "#phi",180,0,2*TMath::Pi());
787 fRecPhiNegEtaPos->GetXaxis()->SetTitle("#phi (rad.)");
789 fRecPhiPosEtaNeg = new TH1F("fRecPhiPosEtaNeg",
790 "#phi",180,0,2*TMath::Pi());
791 fRecPhiPosEtaNeg->GetXaxis()->SetTitle("#phi (rad.)");
793 fRecPhiNegEtaNeg = new TH1F("fRecPhiNegEtaNeg",
794 "#phi",180,0,2*TMath::Pi());
795 fRecPhiNegEtaNeg->GetXaxis()->SetTitle("#phi (rad.)");
799 // fRecDcaPhiPtPosEtaPos = new TH3F("fRecDcaPhiPtPosEtaPos",
800 // "#phi- p_{T} - DCA",
801 // 180,0,2*TMath::Pi(),
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)");
808 // fRecDcaPhiPtPosEtaNeg = new TH3F("fRecDcaPhiPtPosEtaNeg",
809 // "#phi- p_{T} - DCA",
810 // 180,0,2*TMath::Pi(),
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)");
817 // fRecDcaPhiPtNegEtaPos = new TH3F("fRecDcaPhiPtNegEtaPos",
818 // "#phi- p_{T} - DCA",
819 // 180,0,2*TMath::Pi(),
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)");
826 // fRecDcaPhiPtNegEtaNeg = new TH3F("fRecDcaPhiPtNegEtaNeg",
827 // "#phi- p_{T} - DCA",
828 // 180,0,2*TMath::Pi(),
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)");
840 fHists->Add(fHistRECpt);
842 fHists->Add(fEtavPt);
843 fHists->Add(fCompareTPCparam);
844 fHists->Add(fITSlayer);
845 fHists->Add(fEtaPhi);
846 fHists->Add(fThetaRec);
847 fHists->Add(fPhiRec);
848 fHists->Add(fNumber);
852 fHists->Add(fVertexX);
853 fHists->Add(fVertexY);
854 fHists->Add(fVertexZ);
860 fHists->Add(fDeltaPhiAll);
861 fHists->Add(fDeltaPhiLeading);
862 fHists->Add(fDiffDcaD);
865 fHists->Add(fsigmaPt);
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);
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);
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]);
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]);
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);
925 for(Int_t i=0;i<7;i++){
926 fHists->Add(fSignDcaPos[i]);
927 fHists->Add(fSignDcaNeg[i]);
928 fHists->Add(fSignDcaNegInv[i]);
930 fHists->Add(fPtSigmaPos[i]);
931 fHists->Add(fPtSigmaNeg[i]);
932 fHists->Add(fqPtRec[i]);
934 fHists->Add(fDcaSigmaPos[i]);
935 fHists->Add(fDcaSigmaNeg[i]);
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);
950 fHists->Add(fRecPtPosEtaPos);
951 fHists->Add(fRecPtNegEtaPos);
952 fHists->Add(fRecPtPosEtaNeg);
953 fHists->Add(fRecPtNegEtaNeg);
955 fHists->Add(fRec1PtPosEtaPos);
956 fHists->Add(fRec1PtNegEtaPos);
957 fHists->Add(fRec1PtPosEtaNeg);
958 fHists->Add(fRec1PtNegEtaNeg);
961 fHists->Add(fRecPhiPosEtaPos);
962 fHists->Add(fRecPhiNegEtaPos);
963 fHists->Add(fRecPhiPosEtaNeg);
964 fHists->Add(fRecPhiNegEtaNeg);
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);
975 fHists->Add(fRecDcaPosPtEtaPos);
976 fHists->Add(fRecDcaNegPtEtaPos);
977 fHists->Add(fRecDcaPosPtEtaNeg);
978 fHists->Add(fRecDcaNegPtEtaNeg);
980 // fHists->Add(fRecDcaPhiPtPosEtaPos);
981 // fHists->Add(fRecDcaPhiPtPosEtaNeg);
982 // fHists->Add(fRecDcaPhiPtNegEtaPos);
983 // fHists->Add(fRecDcaPhiPtNegEtaNeg);
989 // for (Int_t i=0; i<fHists->GetEntries(); ++i) {
990 // TH1 *h1 = dynamic_cast<TH1*>(fHists->At(i));
992 // // Printf("%s ",h1->GetName());
998 TH1::AddDirectory(oldStatus);
1001 //__________________________________________________________
1003 void AliAnalysisTaskQASym::UserExec(Option_t *)
1005 AliVEvent *event = InputEvent();
1007 Printf("ERROR: Could not retrieve event");
1013 AliESDEvent* esd = dynamic_cast<AliESDEvent*>(event);
1015 Printf("We are reading from ESD");
1022 if(fDebug>1)Printf("There are %d tracks in this event", event->GetNumberOfTracks());
1025 Int_t leadingTrack = 0;
1026 Float_t leadingEnergy = -20.;
1027 Float_t leadingPhi = 0;//TMath::Pi();
1030 if(event->GetNumberOfTracks()!=0) fNumber->Fill(event->GetNumberOfTracks());
1032 const AliVVertex* vertex = event->GetPrimaryVertex();
1033 if(vertex->GetNContributors()==0) return;
1034 Float_t vx = vertex->GetX();
1035 Float_t vy = vertex->GetY();
1036 Float_t vz = vertex->GetZ();
1042 if (TMath::Abs(vz) > 10.) return;
1044 AliESDtrack *tpcP = 0x0;
1046 for (Int_t iTrack = 0; iTrack < event->GetNumberOfTracks(); iTrack++) {
1048 //prevent mem leak for TPConly track
1049 if(fTrackType==2&&tpcP){
1054 AliVParticle *track = event->GetTrack(iTrack);
1055 AliESDtrack *esdtrack = dynamic_cast<AliESDtrack*>(track);
1056 esdtrack->PropagateToDCA(event->GetPrimaryVertex(),
1057 event->GetMagneticField(), 10000.);
1060 Printf("ERROR: Could not receive track %d", iTrack);
1064 // run Task for global tracks or ITS tracks or TPC tracks
1065 const AliExternalTrackParam *tpcPin = 0x0;
1069 //Fill all histograms with global tracks
1071 phiIn = tpcP->Phi();
1072 if (!tpcP) continue;
1073 if (!fCuts->AcceptTrack(tpcP)) continue;
1075 else if(fTrackType==1){
1076 //Fill all histograms with ITS tracks
1078 phiIn = tpcP->Phi();
1079 if (!tpcP) continue;
1080 if (!fCuts->AcceptTrack(tpcP)) continue;
1081 if(fStandAlone==kTRUE) {
1082 if(!(tpcP->GetStatus()&AliESDtrack::kITSpureSA))continue;
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();
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
1098 Printf("ERROR: wrong track type \n");
1105 if(tpcP->E()>leadingEnergy){
1106 leadingTrack=iTrack;
1107 leadingEnergy=tpcP->E();
1112 fqRec->Fill(tpcP->Charge());
1115 Double_t sigmapt = tpcP->GetSigma1Pt2();
1116 sigmapt= sqrt(sigmapt);
1117 sigmapt= sigmapt *(tpcP->Pt()*tpcP->Pt());
1119 if(sigmapt == 0.)continue;
1120 fsigmaPt->Fill(TMath::Log10(sigmapt));
1123 // hits in ITS layer
1125 if(tpcP->HasPointOnITSLayer(0))
1127 else if(!tpcP->HasPointOnITSLayer(0)
1128 && tpcP->HasPointOnITSLayer(1))
1130 else if(!tpcP->HasPointOnITSLayer(0)
1131 && !tpcP->HasPointOnITSLayer(1)
1132 && tpcP->HasPointOnITSLayer(2))
1134 else if(!tpcP->HasPointOnITSLayer(0)
1135 && !tpcP->HasPointOnITSLayer(1)
1136 && !tpcP->HasPointOnITSLayer(2)
1137 && tpcP->HasPointOnITSLayer(3))
1139 else if(!tpcP->HasPointOnITSLayer(0)
1140 && !tpcP->HasPointOnITSLayer(1)
1141 && !tpcP->HasPointOnITSLayer(2)
1142 && !tpcP->HasPointOnITSLayer(3)
1143 && tpcP->HasPointOnITSLayer(4))
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))
1157 //-------------------
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();
1164 fqPtRec[cas]->Fill(tpcP->Charge()/tpcP->Pt());
1168 fHistRECpt->Fill(tpcP->Pt());
1169 fEta->Fill(tpcP->Eta());
1170 fEtavPt->Fill(tpcP->Eta(), tpcP->Pt());
1171 fEtaPhi->Fill(tpcP->Eta(), phiIn);
1172 fThetaRec->Fill(tpcP->Theta());
1173 fPhiRec->Fill(phiIn);
1174 fVx->Fill(tpcP->Xv());
1175 fVy->Fill(tpcP->Yv());
1176 fVz->Fill(tpcP->Zv());
1179 fEtaPt->Fill(tpcP->Eta()/tpcP->Pt());
1180 fQPt->Fill(tpcP->Charge()/tpcP->Pt());
1182 fRecQPtPhi->Fill(tpcP->Charge()/tpcP->Pt(), phiIn);
1185 tpcP->GetImpactParameters(xy,z);
1186 fDiffDcaD->Fill(sdca+xy);
1188 if(fTrackType==2) fCompareTPCparam->Fill(z,tpcPin->GetTgl());
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);
1198 //for positive particles
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());
1204 fRecPhiPos->Fill(TMath::RadToDeg()*phiIn);
1207 fRecPhiPosLadder[cas]->Fill(TMath::RadToDeg()*phiIn);
1208 fRecPhiPosVz->Fill(TMath::RadToDeg()*phiIn,tpcP->Zv());
1209 fSignedDcaPosVz->Fill(sdca,tpcP->Zv());
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());
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);
1223 fSignDcaPos[cas]->Fill(sdca);
1226 fDcaSigmaPos[cas]->Fill(sdca, TMath::Log10(sigmapt));
1228 fPtSigmaPos[cas]->Fill(TMath::Log10(sigmapt));
1231 fRecPtPosEtaPos->Fill(tpcP->Pt());
1232 fRec1PtPosEtaPos->Fill(1/tpcP->Pt());
1233 fRecPhiPosEtaPos->Fill(phiIn);
1234 fRecDcaPosPhiEtaPos->Fill(sdca, phiIn);
1235 fRecDcaPosPtEtaPos->Fill(sdca, TMath::Log10(tpcP->Pt()));
1236 fRecPtPosPhiEtaPos->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1237 //fRecDcaPhiPtPosEtaPos->Fill(phiIn, tpcP->Pt(), sdca);
1241 fRecPtPosEtaNeg->Fill(tpcP->Pt());
1242 fRec1PtPosEtaNeg->Fill(1/tpcP->Pt());
1243 fRecPhiPosEtaNeg->Fill(phiIn);
1244 fRecDcaPosPhiEtaNeg->Fill(sdca, phiIn);
1245 fRecDcaPosPtEtaNeg->Fill(sdca, TMath::Log10(tpcP->Pt()));
1246 fRecPtPosPhiEtaNeg->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1247 //fRecDcaPhiPtPosEtaNeg->Fill(phiIn, tpcP->Pt(), sdca);
1251 //and negative particles
1253 fRecPtNeg->Fill(tpcP->Pt());
1254 fRecPtNegLadder[cas]->Fill(tpcP->Pt());
1255 fRecPtNegVz->Fill(TMath::Log10(tpcP->Pt()),tpcP->Zv());
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());
1261 fRecEtaPtNegVz->Fill(tpcP->Eta()/tpcP->Pt(),tpcP->Zv());
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());
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);
1275 fSignDcaNeg[cas]->Fill(sdca);
1276 fSignDcaNegInv[cas]->Fill(-sdca);
1279 fDcaSigmaNeg[cas]->Fill(sdca,TMath::Log10(sigmapt));
1281 fPtSigmaNeg[cas]->Fill(TMath::Log10(sigmapt));
1285 fRecPtNegEtaPos->Fill(tpcP->Pt());
1286 fRec1PtNegEtaPos->Fill(1/tpcP->Pt());
1287 fRecPhiNegEtaPos->Fill(phiIn);
1288 fRecDcaNegPhiEtaPos->Fill(sdca, phiIn);
1289 fRecDcaNegPtEtaPos->Fill(sdca, TMath::Log10(tpcP->Pt()));
1290 fRecPtNegPhiEtaPos->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1291 //fRecDcaPhiPtNegEtaPos->Fill(phiIn, tpcP->Pt(), sdca);
1295 fRecPtNegEtaNeg->Fill(tpcP->Pt());
1296 fRec1PtNegEtaNeg->Fill(1/tpcP->Pt());
1297 fRecPhiNegEtaNeg->Fill(phiIn);
1298 fRecDcaNegPhiEtaNeg->Fill(sdca, phiIn);
1299 fRecDcaNegPtEtaNeg->Fill(sdca, TMath::Log10(tpcP->Pt()));
1300 fRecPtNegPhiEtaNeg->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1301 //fRecDcaPhiPtNegEtaNeg->Fill(phiIn, tpcP->Pt(), sdca);
1308 //all particles with positive eta
1310 fRecQPtPosEta->Fill(tpcP->Charge()/tpcP->Pt());
1311 fRecPtPosEta->Fill(tpcP->Pt());
1312 fRecPhiPosEta->Fill(TMath::RadToDeg()*phiIn);
1313 fRecQPtPosEtaVz->Fill(tpcP->Charge()/tpcP->Pt(),tpcP->Zv());
1314 fRecDcaPosEta->Fill(sdca);
1315 fRecDPosEta->Fill(xy);
1317 //all particles with negative eta (and eta==0)
1319 fRecQPtNegEta->Fill(tpcP->Charge()/tpcP->Pt());
1320 fRecPtNegEta->Fill(tpcP->Pt());
1321 fRecPhiNegEta->Fill(TMath::RadToDeg()*phiIn);
1322 fRecQPtNegEtaVz->Fill(tpcP->Charge()/tpcP->Pt(),tpcP->Zv());
1323 fRecDcaNegEta->Fill(sdca);
1324 fRecDNegEta->Fill(xy);
1329 fRecPtTpcSector[Int_t(phiIn*
1330 TMath::RadToDeg()/20)]->Fill(tpcP->Pt());
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());
1342 // // another track loop
1343 // for (Int_t iTrack2 = 0; iTrack2 < event->GetNumberOfTracks(); iTrack2++) {
1345 // if(LeadingTrack==iTrack2) continue;
1347 // AliVParticle *track2 = event->GetTrack(iTrack2);
1348 // AliESDtrack* esdtrack2 = dynamic_cast<AliESDtrack*>(track2);
1350 // Printf("ERROR: Could not receive track %d", iTrack);
1353 // if (!fCuts->AcceptTrack(esdtrack2)) continue;
1354 // //propagate to dca
1355 // esdtrack2->PropagateToDCA(event->GetPrimaryVertex(),
1356 // event->GetMagneticField(), 10000.);
1358 // fDeltaPhiLeading->Fill((LeadingPhi-esdtrack2->Phi())*TMath::RadToDeg(),
1359 // LeadingPhi*TMath::RadToDeg() );
1363 // }//second track loop
1365 // if(fTrackType==2) delete tpcP; // delete in case of TPCOnlyTrack
1369 //prevent mem leak for TPConly track
1370 if(fTrackType==2&&tpcP){
1376 // Post output data.
1377 // PostData(1, fHistPt);
1378 PostData(1, fHists);
1385 //________________________________________________________________________
1386 void AliAnalysisTaskQASym::Terminate(Option_t *)