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)
160 for(Int_t i = 0;i<18;++i){
161 fRecPtTpcSector[i] = 0;
162 fRecEtaTpcSector[i] = 0;
163 fSignedDcaTpcSector[i] = 0;
164 fRecQPtTpcSector[i] = 0;
165 fRecEtaPtTpcSector[i] = 0;
168 for(Int_t i = 0;i< 7;++i){
169 fRecPtPosLadder[i] = 0;
170 fRecPtNegLadder[i] = 0;
171 fRecPhiPosLadder[i] = 0;
172 fRecPhiNegLadder[i] = 0;
173 fRecEtaPosLadder[i] = 0;
174 fRecEtaNegLadder[i] = 0;
177 fSignDcaNegInv[i] = 0;
185 DefineOutput(1, TList::Class());
192 //________________________________________________________________________
193 void AliAnalysisTaskQASym::UserCreateOutputObjects()
198 Bool_t oldStatus = TH1::AddDirectoryStatus();
199 TH1::AddDirectory(kFALSE);
201 Double_t range = 0.3;
204 fHists = new TList();
206 fHistRECpt = new TH1F("fHistRECpt",
209 fEta = new TH1F("fEta",
212 fEtavPt = new TH2F("fEtavPt",
216 fCompareTPCparam = new TH2F("fCompareTPCparam",
218 100, -1., 1.,100,-5, 5);
220 fITSlayer = new TH1F("fITslayer",
224 fEtaPhi = new TH2F("fEtaPhi",
226 200, -2., 2., 128, 0., 2. * TMath::Pi());
228 fThetaRec = new TH1F("fThetaRec",
230 180, 0., TMath::Pi());
231 fPhiRec = new TH1F("fPhiRec",
233 180, 0., 2*TMath::Pi());
234 fNumber = new TH1F("fNumber",
235 "number of tracks per event",
237 fVx = new TH1F("fVx",
238 "X of first track point",
240 fVy = new TH1F("fVy",
241 "Y of first track point",
243 fVz = new TH1F("fVz",
244 "Z of first track point",
246 fVertexX = new TH1F("fVertexX",
249 fVertexY = new TH1F("fVertexY",
252 fVertexZ = new TH1F("fVertexZ",
256 fEtaPt = new TH1F("fEtaPt",
260 fQPt = new TH1F("fQPt",
264 fDca = new TH1F("fDca",
266 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
269 fqRec = new TH1F("fqRec",
270 " charge all reconstructed particle",
273 fsigmaPt = new TH1F("fsigmaPt",
274 "Log_{10}(#sigma_{p_{T}})",
281 for(Int_t ITSlayer_case=0;ITSlayer_case<7;ITSlayer_case++){
283 fSignDcaPos[ITSlayer_case] = new TH1F(Form("fSignDcaPos%d", ITSlayer_case),
285 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
286 fSignDcaPos[ITSlayer_case]->GetXaxis()->SetTitle("dca");
287 fSignDcaPos[ITSlayer_case]->GetYaxis()->SetTitle("");
290 fSignDcaNeg[ITSlayer_case] = new TH1F(Form("fSignDcaNeg%d", ITSlayer_case),
292 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
293 fSignDcaNeg[ITSlayer_case]->GetXaxis()->SetTitle("dca");
294 fSignDcaNeg[ITSlayer_case]->GetYaxis()->SetTitle("");
296 fSignDcaNegInv[ITSlayer_case] = new TH1F(Form("fSignDcaNegInv%d", ITSlayer_case),
297 " inverse Signed dca ",
298 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
299 fSignDcaNegInv[ITSlayer_case]->GetXaxis()->SetTitle("-dca");
300 fSignDcaNegInv[ITSlayer_case]->GetYaxis()->SetTitle("");
305 fPtSigmaPos[ITSlayer_case] = new TH1F(Form("fPtSigmaPos%d", ITSlayer_case),
308 fPtSigmaPos[ITSlayer_case]->GetXaxis()->SetTitle("Log_{10}(#sigma_{pT})");
309 fPtSigmaPos[ITSlayer_case]->GetYaxis()->SetTitle("");
312 fPtSigmaNeg[ITSlayer_case] = new TH1F(Form("fPtSigmaNeg%d",ITSlayer_case),
315 fPtSigmaNeg[ITSlayer_case]->GetXaxis()->SetTitle("Log_{10}(#sigma_{pT})");
316 fPtSigmaNeg[ITSlayer_case]->GetYaxis()->SetTitle("");
322 fqPtRec[ITSlayer_case] = new TH1F(Form("fqPtRec%d",ITSlayer_case),
325 fqPtRec[ITSlayer_case]->GetXaxis()->SetTitle("q_{tr}/p_{T, tr} (GeV/c)");
326 fqPtRec[ITSlayer_case]->GetYaxis()->SetTitle("");
332 fDcaSigmaPos[ITSlayer_case] = new TH2F(Form("fDcaSigmaPos%d", ITSlayer_case),
333 " p_{T} shift vs #sigma_{pT} ",
334 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9),200, -4., 4. );
335 fDcaSigmaPos[ITSlayer_case]->GetXaxis()->SetTitle("signed DCA)");
336 fDcaSigmaPos[ITSlayer_case]->GetYaxis()->SetTitle("log_{10}(#sigma_{pT})");
339 fDcaSigmaNeg[ITSlayer_case] = new TH2F(Form("fDcaSigmaNeg%d", ITSlayer_case),
340 " p_{T} shift vs #sigma_{pT} ",
341 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9),200, -4., 4. );
342 fDcaSigmaNeg[ITSlayer_case]->GetXaxis()->SetTitle("signed DCA");
343 fDcaSigmaNeg[ITSlayer_case]->GetYaxis()->SetTitle("log_{10}(#sigma_{pT})");
350 // YIELDs---------- positive and negative particles
352 fRecPtPos = new TH1F("fRecPtPos",
355 fRecPtPos->GetXaxis()->SetTitle("p_{T} (GeV/c)");
356 fRecPtNeg = new TH1F("fRecPtNeg",
359 fRecPtNeg->GetXaxis()->SetTitle("p_{T} (GeV/c)");
362 fRecPhiPos = new TH1F("fRecPhiPos",
365 fRecPhiPos->GetXaxis()->SetTitle("#phi (deg)");
367 fRecPhiNeg = new TH1F("fRecPhiNeg",
370 fRecPhiNeg->GetXaxis()->SetTitle("#phi (deg)");
372 fRecEtaPos = new TH1F("fRecEtaPos",
375 fRecEtaPos->GetXaxis()->SetTitle("#eta");
377 fRecEtaNeg = new TH1F("fRecEtaNeg",
380 fRecEtaNeg->GetXaxis()->SetTitle("#eta");
382 fRecEtaPtPos = new TH1F("fRecEtaPtPos",
385 fRecEtaPtPos->GetXaxis()->SetTitle("#eta/p_{T}");
387 fRecEtaPtNeg = new TH1F("fRecEtaPtNeg",
390 fRecEtaPtNeg->GetXaxis()->SetTitle("#eta/p_{T}");
392 fRecDcaPos = new TH1F("fRecDcaPos",
394 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
395 fRecDcaPos->GetXaxis()->SetTitle("dca (cm)");
396 fRecDcaNeg = new TH1F("fRecDcaNeg",
398 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
399 fRecDcaNeg->GetXaxis()->SetTitle("dca (cm)");
401 fRecDcaNegInv = new TH1F("fRecDcaNegInv",
403 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
404 fRecDcaNegInv->GetXaxis()->SetTitle("dca (cm)");
407 fRecDPos = new TH1F("fRecDPos",
409 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
410 fRecDPos->GetXaxis()->SetTitle("d (cm)");
411 fRecDNeg = new TH1F("fRecDNeg",
413 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
414 fRecDNeg->GetXaxis()->SetTitle("d (cm)");
417 // YIELDs ---------------- positive and negative eta
420 fRecQPtPosEta = new TH1F("fRecQPtPosEta",
423 fRecQPtPosEta->GetXaxis()->SetTitle("q/p_{T} ");
425 fRecQPtNegEta = new TH1F("fRecQPtNegEta",
428 fRecQPtNegEta->GetXaxis()->SetTitle("q/p_{T}");
430 fRecPtPosEta = new TH1F("fRecPtPosEta",
433 fRecPtPosEta->GetXaxis()->SetTitle("p_{T} (GeV/c)");
435 fRecPtNegEta = new TH1F("fRecPtNegEta",
438 fRecPtNegEta->GetXaxis()->SetTitle("p_{T} (GeV/c)");
440 fRecPhiPosEta = new TH1F("fRecPhiPosEta",
443 fRecPhiPosEta->GetXaxis()->SetTitle("#phi (deg)");
445 fRecPhiNegEta = new TH1F("fRecPhiNegEta",
448 fRecPhiNegEta->GetXaxis()->SetTitle("#phi (deg)");
450 fRecDcaPosEta = new TH1F("fRecDcaPosEta",
452 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
453 fRecDcaPosEta->GetXaxis()->SetTitle("dca (cm)");
454 fRecDcaNegEta = new TH1F("fRecDcaNegEta",
456 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
457 fRecDcaNegEta->GetXaxis()->SetTitle("dca (cm)");
459 fRecDPosEta = new TH1F("fRecDPosEta",
461 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
462 fRecDPosEta->GetXaxis()->SetTitle("d (cm)");
463 fRecDNegEta = new TH1F("fRecDNegEta",
466 fRecDNegEta->GetXaxis()->SetTitle("d (cm)");
468 fRecDcaPosPhi = new TH2F("fRecDcaPosPhi",
470 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2);
471 fRecDcaPosPhi->GetXaxis()->SetTitle("dca (cm)");
472 fRecDcaPosPhi->GetYaxis()->SetTitle("#phi (rad.)");
473 fRecDcaNegPhi = new TH2F("fRecDcaNegPhi",
475 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2);
476 fRecDcaNegPhi->GetXaxis()->SetTitle("dca (cm)");
477 fRecDcaNegPhi->GetYaxis()->SetTitle("#phi (rad.)");
479 fRecPtPosPhi = new TH2F("fRecPtPosPhi",
481 100, -2.5, 2., 180, 0, TMath::Pi()*2);
482 fRecPtPosPhi->GetXaxis()->SetTitle("log_{10}(p_{T})");
483 fRecPtPosPhi->GetYaxis()->SetTitle("#phi (rad.)");
484 fRecPtNegPhi = new TH2F("fRecPtNegPhi",
486 100,-2.5 , 2., 180, 0, TMath::Pi()*2);
487 fRecPtNegPhi->GetXaxis()->SetTitle("log_{10}(p_{T})");
488 fRecPtNegPhi->GetYaxis()->SetTitle("#phi (rad.)");
490 fRecEtaPosPhi = new TH2F("fRecEtaPosPhi",
492 100, -1.5, 1.5, 180, 0, TMath::Pi()*2);
493 fRecEtaPosPhi->GetXaxis()->SetTitle("#eta");
494 fRecEtaPosPhi->GetYaxis()->SetTitle("#phi (rad.)");
495 fRecEtaNegPhi = new TH2F("fRecEtaNegPhi",
497 100, -1.5, 1.5, 180, 0, TMath::Pi()*2);
498 fRecEtaNegPhi->GetXaxis()->SetTitle("#eta");
499 fRecEtaNegPhi->GetYaxis()->SetTitle("#phi (rad.)");
501 fRecQPtPhi = new TH2F("fRecQPtPhi",
502 " charge/p_T vs. phi",
503 100,-1. , 1., 180, 0, TMath::Pi()*2);
504 fRecQPtPhi->GetXaxis()->SetTitle("charge/p_{T}");
505 fRecQPtPhi->GetYaxis()->SetTitle("#phi (rad.)");
507 fRecEtaPtPosPhi = new TH2F("fRecEtaPtPosPhi",
509 100, -5, 5., 180, 0, TMath::Pi()*2);
510 fRecEtaPtPosPhi->GetXaxis()->SetTitle("#eta/p_{T}");
511 fRecEtaPtPosPhi->GetYaxis()->SetTitle("#phi (rad.)");
512 fRecEtaPtNegPhi = new TH2F("fRecEtaPtNegPhi",
514 100,-5 , 5., 180, 0, TMath::Pi()*2);
515 fRecEtaPtNegPhi->GetXaxis()->SetTitle("#eta/p_{T}");
516 fRecEtaPtNegPhi->GetYaxis()->SetTitle("#phi (rad.)");
522 fRecDcaPosPhiEtaPos = new TH2F("fRecDcaPosPhiEtaPos",
524 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2);
525 fRecDcaPosPhiEtaPos->GetXaxis()->SetTitle("dca (cm)");
526 fRecDcaPosPhiEtaPos->GetYaxis()->SetTitle("#phi (rad.)");
527 fRecDcaNegPhiEtaPos = new TH2F("fRecDcaNegPhiEtaPos",
529 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2);
530 fRecDcaNegPhiEtaPos->GetXaxis()->SetTitle("dca (cm)");
531 fRecDcaNegPhiEtaPos->GetYaxis()->SetTitle("#phi (rad.)");
533 fRecPtPosPhiEtaPos = new TH2F("fRecPtPosPhiEtaPos",
535 100, -2.5, 2., 180, 0, TMath::Pi()*2);
536 fRecPtPosPhiEtaPos->GetXaxis()->SetTitle("log_{10}(p_{T})");
537 fRecPtPosPhiEtaPos->GetYaxis()->SetTitle("#phi (rad.)");
538 fRecPtNegPhiEtaPos = new TH2F("fRecPtNegPhiEtaPos",
540 100,-2.5 , 2., 180, 0, TMath::Pi()*2);
541 fRecPtNegPhiEtaPos->GetXaxis()->SetTitle("log_{10}(p_{T})");
542 fRecPtNegPhiEtaPos->GetYaxis()->SetTitle("#phi (rad.)");
545 fRecDcaPosPhiEtaNeg = new TH2F("fRecDcaPosPhiEtaNeg",
547 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2);
548 fRecDcaPosPhiEtaNeg->GetXaxis()->SetTitle("dca (cm)");
549 fRecDcaPosPhiEtaNeg->GetYaxis()->SetTitle("#phi (rad.)");
550 fRecDcaNegPhiEtaNeg = new TH2F("fRecDcaNegPhiEtaNeg",
552 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2);
553 fRecDcaNegPhiEtaNeg->GetXaxis()->SetTitle("dca (cm)");
554 fRecDcaNegPhiEtaNeg->GetYaxis()->SetTitle("#phi (rad.)");
556 fRecPtPosPhiEtaNeg = new TH2F("fRecPtPosPhiEtaNeg",
558 100, -2.5, 2., 180, 0, TMath::Pi()*2);
559 fRecPtPosPhiEtaNeg->GetXaxis()->SetTitle("log_{10}(p_{T})");
560 fRecPtPosPhiEtaNeg->GetYaxis()->SetTitle("#phi (rad.)");
561 fRecPtNegPhiEtaNeg = new TH2F("fRecPtNegPhiEtaNeg",
563 100,-2.5 , 2., 180, 0, TMath::Pi()*2);
564 fRecPtNegPhiEtaNeg->GetXaxis()->SetTitle("log_{10}(p_{T})");
565 fRecPtNegPhiEtaNeg->GetYaxis()->SetTitle("#phi (rad.)");
568 fRecDcaPosPtEtaPos = new TH2F("fRecDcaPosPtEtaPos",
570 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2);
571 fRecDcaPosPtEtaPos->GetXaxis()->SetTitle("dca (cm)");
572 fRecDcaPosPtEtaPos->GetYaxis()->SetTitle("log_{10}(p_{T})");
574 fRecDcaPosPtEtaNeg = new TH2F("fRecDcaPosPtEtaNeg",
576 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2);
577 fRecDcaPosPtEtaNeg->GetXaxis()->SetTitle("dca (cm)");
578 fRecDcaPosPtEtaNeg->GetYaxis()->SetTitle("log_{10}(p_{T})");
580 fRecDcaNegPtEtaPos = new TH2F("fRecDcaNegPtEtaPos",
582 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2);
583 fRecDcaNegPtEtaPos->GetXaxis()->SetTitle("dca (cm)");
584 fRecDcaNegPtEtaPos->GetYaxis()->SetTitle("log_{10}(p_{T})");
586 fRecDcaNegPtEtaNeg = new TH2F("fRecDcaNegPtEtaNeg",
588 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2);
589 fRecDcaNegPtEtaNeg->GetXaxis()->SetTitle("dca (cm)");
590 fRecDcaNegPtEtaNeg->GetYaxis()->SetTitle("log_{10}(p_{T})");
594 // YIELDs ---------------- for TPC sectors
595 for(Int_t sector=0; sector<18;sector++){
598 fRecPtTpcSector[sector] = new TH1F(Form("fRecPtTpcSector%02d",sector),
599 Form("p_{T} distribution: TPC sector %d",
600 sector),100, 0., pt);
601 fRecPtTpcSector[sector]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
603 fRecEtaTpcSector[sector] = new TH1F(Form("fRecEtaTpcSector%02d",sector),
604 Form("#eta distribution: TPC sector %d",
605 sector),200, -2., 2.);
606 fRecEtaTpcSector[sector]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
609 fSignedDcaTpcSector[sector] = new TH1F(Form("fSignedDcaTpcSector%02d",sector),
610 Form("dca distribution: TPC sector %d",
611 sector),200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9) );
612 fSignedDcaTpcSector[sector]->GetXaxis()->SetTitle("dca");
614 fRecQPtTpcSector[sector] = new TH1F(Form("fRecQPtTpcSector%02d",sector),
615 Form("Q/ p_{T} distribution: TPC sector %d",
616 sector),100, -1., 1.);
617 fRecQPtTpcSector[sector]->GetXaxis()->SetTitle("Q/p_{T} (GeV/c)");
619 fRecEtaPtTpcSector[sector] = new TH1F(Form("fRecEtaPtTpcSector%02d",sector),
620 Form("#eta/ p_{T} distribution: TPC sector %d",
621 sector),100, -1., 1.);
622 fRecEtaPtTpcSector[sector]->GetXaxis()->SetTitle("#eta/p_{T} (GeV/c)");
626 for(Int_t i=0;i<7;i++){
627 fRecPtPosLadder[i] = new TH1F(Form("fRecPtPosLadder%d", i),
628 " p_{T} distribution",
630 fRecPtPosLadder[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
631 fRecPtNegLadder[i] = new TH1F(Form("fRecPtNegLadder%d",i),
632 " p_{T} distribution ",
634 fRecPtNegLadder[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
637 fRecPhiPosLadder[i] = new TH1F(Form("fRecPhiPosLadder%d",i),
638 "#phi distribution: all pos eta",
640 fRecPhiPosLadder[i]->GetXaxis()->SetTitle("#phi (deg)");
642 fRecPhiNegLadder[i] = new TH1F(Form("fRecPhiNegLadder%d", i),
643 "#phi distribution: all neg eta",
645 fRecPhiNegLadder[i]->GetXaxis()->SetTitle("#phi (deg)");
649 fRecEtaPosLadder[i] = new TH1F(Form("fRecEtaPosLadder%d",i),
652 fRecEtaPosLadder[i]->GetXaxis()->SetTitle("#eta)");
654 fRecEtaNegLadder[i] = new TH1F(Form("fRecEtaNegLadder%d", i),
657 fRecEtaNegLadder[i]->GetXaxis()->SetTitle("#eta");
662 fRecPtPosVz = new TH2F("fRecPtPosVz",
663 "p_{T} distribution vs Vz()",
664 100, -1., 2., 200,-vzmax,vzmax);
665 fRecPtPosVz->GetXaxis()->SetTitle("log_{10}(p_{T})");
667 fRecPtNegVz = new TH2F("fRecPtNegVz",
668 "p_{T} distribution vs Vz()",
669 100, -1., 2.,200,-vzmax,vzmax);
670 fRecPtNegVz->GetXaxis()->SetTitle("Log_{10}(p_{T})");
673 fRecEtaPosVz= new TH2F("fRecEtaPosVz",
674 "#eta distribution vs Vz()",
675 100, -2., 2., 200,-vzmax,vzmax);
676 fRecEtaPosVz->GetXaxis()->SetTitle("#eta");
677 fRecEtaNegVz = new TH2F("fRecEtaNegVz",
678 "#eta distribution vs Vz()",
679 100, -2., 2.,200,-vzmax,vzmax);
680 fRecEtaNegVz->GetXaxis()->SetTitle("#eta");
682 fRecPhiPosVz= new TH2F("fRecPhiPosVz",
683 "#eta distribution vs Vz()",
684 361, 0., 360., 200,-vzmax,vzmax);
685 fRecPhiPosVz->GetXaxis()->SetTitle("#phi (deg)");
686 fRecPhiNegVz = new TH2F("fRecPhiNegVz",
688 361, 0., 360.,200,-vzmax,vzmax);
689 fRecPhiNegVz->GetXaxis()->SetTitle("#phi (deg)");
691 fSignedDcaPosVz= new TH2F("fSignedDcaPosVz",
692 "#eta distribution vs Vz()",
693 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200,-vzmax,vzmax);
694 fSignedDcaPosVz->GetXaxis()->SetTitle("dca (cm)");
695 fSignedDcaNegVz = new TH2F("fSignedDcaNegVz",
697 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9),200,-vzmax,vzmax);
698 fSignedDcaNegVz->GetXaxis()->SetTitle("dca (cm)");
700 fRecQPtPosEtaVz= new TH2F("fRecQPtPosEtaVz",
701 " Q/p_{T} distribution vs Vz()",
702 100, -1., 1., 200,-vzmax,vzmax);
703 fRecQPtPosEtaVz->GetXaxis()->SetTitle("Q/p_{T}");
704 fRecQPtNegEtaVz = new TH2F("fRecQPtNegEtaVz",
705 " Q/p_{T} distribution vs Vz()",
706 100, -1., 1.,200,-vzmax,vzmax);
707 fRecQPtNegEtaVz->GetXaxis()->SetTitle("Q/p_{T}");
710 fRecEtaPtPosVz= new TH2F("fRecEtaPtPosVz",
711 " #eta/p_{T} distribution vs Vz()",
712 100, -1., 1., 200,-vzmax,vzmax);
713 fRecEtaPtPosVz->GetXaxis()->SetTitle("#eta/p_{T");
714 fRecEtaPtNegVz = new TH2F("fRecEtaPtNegVz",
715 " #eta/p_{T} distribution vs Vz()",
716 100, -1., 1.,200,-vzmax,vzmax);
717 fRecEtaPtNegVz->GetXaxis()->SetTitle("#eta/p_{T}");
720 fDeltaPhiAll = new TH1F("fDeltaPhiAll",
721 " #Delta #phi",200,-360,360);
722 fDeltaPhiAll->GetXaxis()->SetTitle("#Delta #phi");
725 fDeltaPhiLeading = new TH2F("fDeltaPhiLeading",
726 " #Delta #phi",361,-360,360, 361,0, 360);
727 fDeltaPhiLeading->GetXaxis()->SetTitle("#Delta #phi (deg.)");
728 fDeltaPhiLeading->GetYaxis()->SetTitle("#phi_{leading particle} (deg.)");
730 fDiffDcaD = new TH1F("fDiffDcaD",
735 fRecPtPosEtaPos = new TH1F("fRecPtPosEtaPos",
736 "p_{T} distribution",100,0,pt);
737 fRecPtPosEtaPos->GetXaxis()->SetTitle("p_{T} (GeV/c)");
739 fRecPtNegEtaPos = new TH1F("fRecPtNegEtaPos",
740 "p_{T} distribution",100,0,pt);
741 fRecPtNegEtaPos->GetXaxis()->SetTitle("p_{T} (GeV/c)");
743 fRecPtPosEtaNeg = new TH1F("fRecPtPosEtaNeg",
744 "p_{T} distribution",100,0,pt);
745 fRecPtPosEtaNeg->GetXaxis()->SetTitle("p_{T} (GeV/c)");
747 fRecPtNegEtaNeg = new TH1F("fRecPtNegEtaNeg",
748 "p_{T} distribution",100,0,pt);
749 fRecPtNegEtaNeg->GetXaxis()->SetTitle("p_{T} (GeV/c)");
753 fRec1PtPosEtaPos = new TH1F("fRec1PtPosEtaPos",
754 "1/p_{T} distribution",100,0,0.5);
755 fRec1PtPosEtaPos->GetXaxis()->SetTitle("p_{T} (c/GeV)");
757 fRec1PtNegEtaPos = new TH1F("fRec1PtNegEtaPos",
758 "1/p_{T} distribution",100,0,0.5);
759 fRec1PtNegEtaPos->GetXaxis()->SetTitle("p_{T} (c/GeV)");
761 fRec1PtPosEtaNeg = new TH1F("fRec1PtPosEtaNeg",
762 "1/p_{T} distribution",100,0,0.5);
763 fRec1PtPosEtaNeg->GetXaxis()->SetTitle("p_{T} (c/GeV)");
765 fRec1PtNegEtaNeg = new TH1F("fRec1PtNegEtaNeg",
766 "1/p_{T} distribution",100,0,0.5);
767 fRec1PtNegEtaNeg->GetXaxis()->SetTitle("1/p_{T} (c/GeV)");
771 fRecPhiPosEtaPos = new TH1F("fRecPhiPosEtaPos",
772 "#phi",180,0,2*TMath::Pi());
773 fRecPhiPosEtaPos->GetXaxis()->SetTitle("#phi (rad.)");
775 fRecPhiNegEtaPos = new TH1F("fRecPhiNegEtaPos",
776 "#phi",180,0,2*TMath::Pi());
777 fRecPhiNegEtaPos->GetXaxis()->SetTitle("#phi (rad.)");
779 fRecPhiPosEtaNeg = new TH1F("fRecPhiPosEtaNeg",
780 "#phi",180,0,2*TMath::Pi());
781 fRecPhiPosEtaNeg->GetXaxis()->SetTitle("#phi (rad.)");
783 fRecPhiNegEtaNeg = new TH1F("fRecPhiNegEtaNeg",
784 "#phi",180,0,2*TMath::Pi());
785 fRecPhiNegEtaNeg->GetXaxis()->SetTitle("#phi (rad.)");
789 // fRecDcaPhiPtPosEtaPos = new TH3F("fRecDcaPhiPtPosEtaPos",
790 // "#phi- p_{T} - DCA",
791 // 180,0,2*TMath::Pi(),
793 // 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
794 // fRecDcaPhiPtPosEtaPos->GetXaxis()->SetTitle("#phi (rad.)");
795 // fRecDcaPhiPtPosEtaPos->GetYaxis()->SetTitle("p_{T} (GeV/c)");
796 // fRecDcaPhiPtPosEtaPos->GetZaxis()->SetTitle("dca (cm)");
798 // fRecDcaPhiPtPosEtaNeg = new TH3F("fRecDcaPhiPtPosEtaNeg",
799 // "#phi- p_{T} - DCA",
800 // 180,0,2*TMath::Pi(),
802 // 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
803 // fRecDcaPhiPtPosEtaNeg->GetZaxis()->SetTitle("dca (cm)");
804 // fRecDcaPhiPtPosEtaNeg->GetXaxis()->SetTitle("#phi (rad.)");
805 // fRecDcaPhiPtPosEtaNeg->GetYaxis()->SetTitle("p_{T} (GeV/c)");
807 // fRecDcaPhiPtNegEtaPos = new TH3F("fRecDcaPhiPtNegEtaPos",
808 // "#phi- p_{T} - DCA",
809 // 180,0,2*TMath::Pi(),
811 // 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
812 // fRecDcaPhiPtNegEtaPos->GetZaxis()->SetTitle("dca (cm)");
813 // fRecDcaPhiPtNegEtaPos->GetXaxis()->SetTitle("#phi (rad.)");
814 // fRecDcaPhiPtNegEtaPos->GetYaxis()->SetTitle("p_{T} (GeV/c)");
816 // fRecDcaPhiPtNegEtaNeg = new TH3F("fRecDcaPhiPtNegEtaNeg",
817 // "#phi- p_{T} - DCA",
818 // 180,0,2*TMath::Pi(),
820 // 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
821 // fRecDcaPhiPtNegEtaNeg->GetZaxis()->SetTitle("dca (cm)");
822 // fRecDcaPhiPtNegEtaNeg->GetYaxis()->SetTitle("#phi (rad.)");
823 // fRecDcaPhiPtNegEtaNeg->GetXaxis()->SetTitle("p_{T} (GeV/c)");
830 fHists->Add(fHistRECpt);
832 fHists->Add(fEtavPt);
833 fHists->Add(fCompareTPCparam);
834 fHists->Add(fITSlayer);
835 fHists->Add(fEtaPhi);
836 fHists->Add(fThetaRec);
837 fHists->Add(fPhiRec);
838 fHists->Add(fNumber);
842 fHists->Add(fVertexX);
843 fHists->Add(fVertexY);
844 fHists->Add(fVertexZ);
850 fHists->Add(fDeltaPhiAll);
851 fHists->Add(fDeltaPhiLeading);
852 fHists->Add(fDiffDcaD);
855 fHists->Add(fsigmaPt);
857 fHists->Add(fRecPtPos);
858 fHists->Add(fRecPtNeg);
859 fHists->Add(fRecPhiPos);
860 fHists->Add(fRecPhiNeg);
861 fHists->Add(fRecEtaPos);
862 fHists->Add(fRecEtaNeg);
863 fHists->Add(fRecEtaPtPos);
864 fHists->Add(fRecEtaPtNeg);
865 fHists->Add(fRecDcaPos);
866 fHists->Add(fRecDcaNeg);
867 fHists->Add(fRecDcaNegInv);
868 fHists->Add(fRecDPos);
869 fHists->Add(fRecDNeg);
872 fHists->Add(fRecQPtPosEta);
873 fHists->Add(fRecQPtNegEta);
874 fHists->Add(fRecPtPosEta);
875 fHists->Add(fRecPtNegEta);
876 fHists->Add(fRecPhiPosEta);
877 fHists->Add(fRecPhiNegEta);
878 fHists->Add(fRecDcaPosEta);
879 fHists->Add(fRecDcaNegEta);
880 fHists->Add(fRecDPosEta);
881 fHists->Add(fRecDNegEta);
884 for(Int_t i=0;i<18;i++){
885 fHists->Add(fRecPtTpcSector[i]);
886 fHists->Add(fRecEtaTpcSector[i]);
887 fHists->Add(fSignedDcaTpcSector[i]);
888 fHists->Add(fRecQPtTpcSector[i]);
889 fHists->Add(fRecEtaPtTpcSector[i]);
892 for(Int_t i=0;i<7;i++){
893 fHists->Add(fRecPtPosLadder[i]);
894 fHists->Add(fRecPtNegLadder[i]);
895 fHists->Add(fRecPhiPosLadder[i]);
896 fHists->Add(fRecPhiNegLadder[i]);
897 fHists->Add(fRecEtaPosLadder[i]);
898 fHists->Add(fRecEtaNegLadder[i]);
901 fHists->Add(fRecPtPosVz);
902 fHists->Add(fRecPtNegVz);
903 fHists->Add(fRecEtaPosVz);
904 fHists->Add(fRecEtaNegVz);
905 fHists->Add(fRecPhiPosVz);
906 fHists->Add(fRecPhiNegVz);
907 fHists->Add(fSignedDcaPosVz);
908 fHists->Add(fSignedDcaNegVz);
909 fHists->Add(fRecQPtPosEtaVz);
910 fHists->Add(fRecQPtNegEtaVz);
911 fHists->Add(fRecEtaPtPosVz);
912 fHists->Add(fRecEtaPtNegVz);
915 for(Int_t i=0;i<7;i++){
916 fHists->Add(fSignDcaPos[i]);
917 fHists->Add(fSignDcaNeg[i]);
918 fHists->Add(fSignDcaNegInv[i]);
920 fHists->Add(fPtSigmaPos[i]);
921 fHists->Add(fPtSigmaNeg[i]);
922 fHists->Add(fqPtRec[i]);
924 fHists->Add(fDcaSigmaPos[i]);
925 fHists->Add(fDcaSigmaNeg[i]);
930 fHists->Add(fRecDcaPosPhi);
931 fHists->Add(fRecDcaNegPhi);
932 fHists->Add(fRecPtPosPhi);
933 fHists->Add(fRecPtNegPhi);
934 fHists->Add(fRecEtaPosPhi);
935 fHists->Add(fRecEtaNegPhi);
936 fHists->Add(fRecQPtPhi);
937 fHists->Add(fRecEtaPtPosPhi);
938 fHists->Add(fRecEtaPtNegPhi);
940 fHists->Add(fRecPtPosEtaPos);
941 fHists->Add(fRecPtNegEtaPos);
942 fHists->Add(fRecPtPosEtaNeg);
943 fHists->Add(fRecPtNegEtaNeg);
945 fHists->Add(fRec1PtPosEtaPos);
946 fHists->Add(fRec1PtNegEtaPos);
947 fHists->Add(fRec1PtPosEtaNeg);
948 fHists->Add(fRec1PtNegEtaNeg);
951 fHists->Add(fRecPhiPosEtaPos);
952 fHists->Add(fRecPhiNegEtaPos);
953 fHists->Add(fRecPhiPosEtaNeg);
954 fHists->Add(fRecPhiNegEtaNeg);
956 fHists->Add(fRecDcaPosPhiEtaPos);
957 fHists->Add(fRecDcaNegPhiEtaPos);
958 fHists->Add(fRecPtPosPhiEtaPos);
959 fHists->Add(fRecPtNegPhiEtaPos);
960 fHists->Add(fRecDcaPosPhiEtaNeg);
961 fHists->Add(fRecDcaNegPhiEtaNeg);
962 fHists->Add(fRecPtPosPhiEtaNeg);
963 fHists->Add(fRecPtNegPhiEtaNeg);
965 fHists->Add(fRecDcaPosPtEtaPos);
966 fHists->Add(fRecDcaNegPtEtaPos);
967 fHists->Add(fRecDcaPosPtEtaNeg);
968 fHists->Add(fRecDcaNegPtEtaNeg);
970 // fHists->Add(fRecDcaPhiPtPosEtaPos);
971 // fHists->Add(fRecDcaPhiPtPosEtaNeg);
972 // fHists->Add(fRecDcaPhiPtNegEtaPos);
973 // fHists->Add(fRecDcaPhiPtNegEtaNeg);
979 // for (Int_t i=0; i<fHists->GetEntries(); ++i) {
980 // TH1 *h1 = dynamic_cast<TH1*>(fHists->At(i));
982 // // Printf("%s ",h1->GetName());
988 TH1::AddDirectory(oldStatus);
991 //__________________________________________________________
993 void AliAnalysisTaskQASym::UserExec(Option_t *)
995 AliVEvent *event = InputEvent();
997 Printf("ERROR: Could not retrieve event");
1003 AliESDEvent* esd = dynamic_cast<AliESDEvent*>(event);
1005 Printf("We are reading from ESD");
1012 if(fDebug>1)Printf("There are %d tracks in this event", event->GetNumberOfTracks());
1015 Int_t leadingTrack = 0;
1016 Float_t leadingEnergy = -20.;
1017 Float_t leadingPhi = 0;//TMath::Pi();
1020 if(event->GetNumberOfTracks()!=0) fNumber->Fill(event->GetNumberOfTracks());
1022 const AliVVertex* vertex = event->GetPrimaryVertex();
1023 if(vertex->GetNContributors()==0) return;
1024 Float_t vx = vertex->GetX();
1025 Float_t vy = vertex->GetY();
1026 Float_t vz = vertex->GetZ();
1032 if (TMath::Abs(vz) > 10.) return;
1034 AliESDtrack *tpcP = 0x0;
1036 for (Int_t iTrack = 0; iTrack < event->GetNumberOfTracks(); iTrack++) {
1038 //prevent mem leak for TPConly track
1039 if(fTrackType==2&&tpcP){
1044 AliVParticle *track = event->GetTrack(iTrack);
1045 AliESDtrack *esdtrack = dynamic_cast<AliESDtrack*>(track);
1046 esdtrack->PropagateToDCA(event->GetPrimaryVertex(),
1047 event->GetMagneticField(), 10000.);
1050 Printf("ERROR: Could not receive track %d", iTrack);
1054 // run Task for global tracks or ITS tracks or TPC tracks
1055 const AliExternalTrackParam *tpcPin = 0x0;
1059 //Fill all histograms with global tracks
1061 phiIn = tpcP->Phi();
1062 if (!tpcP) continue;
1063 if (!fCuts->AcceptTrack(tpcP)) continue;
1065 else if(fTrackType==1){
1066 //Fill all histograms with ITS tracks
1068 phiIn = tpcP->Phi();
1069 if (!tpcP) continue;
1070 if (!fCuts->AcceptTrack(tpcP)) continue;
1071 if(fStandAlone==kTRUE) {
1072 if(!(tpcP->GetStatus()&AliESDtrack::kITSpureSA))continue;
1075 else if(fTrackType==2){
1076 //Fill all histograms with TPC track information
1077 tpcPin = esdtrack->GetInnerParam();
1078 if (!tpcPin) continue;
1079 phiIn=tpcPin->Phi();
1081 tpcP = AliESDtrackCuts::GetTPCOnlyTrack(dynamic_cast<AliESDEvent*>(event),esdtrack->GetID());
1082 if (!tpcP) continue;
1083 if (!fCuts->AcceptTrack(tpcP)) continue;
1084 if(tpcP->GetNcls(1)>160)continue;//jacek's track cut
1085 if(tpcP->GetConstrainedChi2TPC()<0)continue; // jacek's track cut
1088 Printf("ERROR: wrong track type \n");
1095 if(tpcP->E()>leadingEnergy){
1096 leadingTrack=iTrack;
1097 leadingEnergy=tpcP->E();
1102 fqRec->Fill(tpcP->Charge());
1105 Double_t sigmapt = tpcP->GetSigma1Pt2();
1106 sigmapt= sqrt(sigmapt);
1107 sigmapt= sigmapt *(tpcP->Pt()*tpcP->Pt());
1109 if(TMath::Abs(sigmapt) < 1.e-10) continue;
1111 fsigmaPt->Fill(TMath::Log10(sigmapt));
1114 // hits in ITS layer
1116 if(tpcP->HasPointOnITSLayer(0))
1118 else if(!tpcP->HasPointOnITSLayer(0)
1119 && tpcP->HasPointOnITSLayer(1))
1121 else if(!tpcP->HasPointOnITSLayer(0)
1122 && !tpcP->HasPointOnITSLayer(1)
1123 && tpcP->HasPointOnITSLayer(2))
1125 else if(!tpcP->HasPointOnITSLayer(0)
1126 && !tpcP->HasPointOnITSLayer(1)
1127 && !tpcP->HasPointOnITSLayer(2)
1128 && tpcP->HasPointOnITSLayer(3))
1130 else if(!tpcP->HasPointOnITSLayer(0)
1131 && !tpcP->HasPointOnITSLayer(1)
1132 && !tpcP->HasPointOnITSLayer(2)
1133 && !tpcP->HasPointOnITSLayer(3)
1134 && tpcP->HasPointOnITSLayer(4))
1136 else if( !tpcP->HasPointOnITSLayer(0)
1137 && !tpcP->HasPointOnITSLayer(1)
1138 && !tpcP->HasPointOnITSLayer(2)
1139 && !tpcP->HasPointOnITSLayer(3)
1140 && !tpcP->HasPointOnITSLayer(4)
1141 && tpcP->HasPointOnITSLayer(5))
1148 //-------------------
1149 Float_t xvertexcor = 0.;
1150 Float_t yvertexcor = 0.;
1152 xvertexcor = tpcP->Xv() - vertex->GetX(); // coordinate corrected for vertex position
1153 yvertexcor = tpcP->Yv() - vertex->GetY(); // "
1154 Double_t sdca = (tpcP->Py()*xvertexcor - tpcP->Px()*yvertexcor)/tpcP->Pt();
1157 fqPtRec[cas]->Fill(tpcP->Charge()/tpcP->Pt());
1161 fHistRECpt->Fill(tpcP->Pt());
1162 fEta->Fill(tpcP->Eta());
1163 fEtavPt->Fill(tpcP->Eta(), tpcP->Pt());
1164 fEtaPhi->Fill(tpcP->Eta(), phiIn);
1165 fThetaRec->Fill(tpcP->Theta());
1166 fPhiRec->Fill(phiIn);
1167 fVx->Fill(tpcP->Xv());
1168 fVy->Fill(tpcP->Yv());
1169 fVz->Fill(tpcP->Zv());
1172 fEtaPt->Fill(tpcP->Eta()/tpcP->Pt());
1173 fQPt->Fill(tpcP->Charge()/tpcP->Pt());
1175 fRecQPtPhi->Fill(tpcP->Charge()/tpcP->Pt(), phiIn);
1180 tpcP->GetImpactParameters(xy,z);
1181 fDiffDcaD->Fill(sdca+xy);
1183 if(fTrackType==2) fCompareTPCparam->Fill(z,tpcPin->GetTgl());
1185 if(fTrackType!=2){//for global and ITS tracks
1186 for(Int_t itsLayer=0;itsLayer<6;itsLayer++){
1187 if(tpcP->HasPointOnITSLayer(itsLayer)){
1188 fITSlayer->Fill(itsLayer);
1193 //for positive particles
1195 if(tpcP->Charge()>0){
1196 fRecPtPos->Fill(tpcP->Pt());
1197 fRecPtPosLadder[cas]->Fill(tpcP->Pt());
1198 fRecPtPosVz->Fill(TMath::Log10(tpcP->Pt()),tpcP->Zv());
1199 fRecPhiPos->Fill(TMath::RadToDeg()*phiIn);
1202 fRecPhiPosLadder[cas]->Fill(TMath::RadToDeg()*phiIn);
1203 fRecPhiPosVz->Fill(TMath::RadToDeg()*phiIn,tpcP->Zv());
1204 fSignedDcaPosVz->Fill(sdca,tpcP->Zv());
1206 fRecEtaPos->Fill(tpcP->Eta());
1207 fRecEtaPosLadder[cas]->Fill(tpcP->Eta());
1208 fRecEtaPtPos->Fill(tpcP->Eta()/tpcP->Pt());
1209 fRecEtaPosVz->Fill(tpcP->Eta(),tpcP->Zv());
1210 fRecEtaPtPosVz->Fill(tpcP->Eta()/tpcP->Pt(),tpcP->Zv());
1212 fRecDcaPos->Fill(sdca);
1213 fRecDcaPosPhi->Fill(sdca, phiIn);
1214 fRecPtPosPhi->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1215 fRecEtaPtPosPhi->Fill(tpcP->Eta()/tpcP->Pt(), phiIn);
1216 fRecEtaPosPhi->Fill(tpcP->Eta(), phiIn);
1218 fSignDcaPos[cas]->Fill(sdca);
1221 fDcaSigmaPos[cas]->Fill(sdca, TMath::Log10(sigmapt));
1223 fPtSigmaPos[cas]->Fill(TMath::Log10(sigmapt));
1226 fRecPtPosEtaPos->Fill(tpcP->Pt());
1227 fRec1PtPosEtaPos->Fill(1/tpcP->Pt());
1228 fRecPhiPosEtaPos->Fill(phiIn);
1229 fRecDcaPosPhiEtaPos->Fill(sdca, phiIn);
1230 fRecDcaPosPtEtaPos->Fill(sdca, TMath::Log10(tpcP->Pt()));
1231 fRecPtPosPhiEtaPos->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1232 //fRecDcaPhiPtPosEtaPos->Fill(phiIn, tpcP->Pt(), sdca);
1236 fRecPtPosEtaNeg->Fill(tpcP->Pt());
1237 fRec1PtPosEtaNeg->Fill(1/tpcP->Pt());
1238 fRecPhiPosEtaNeg->Fill(phiIn);
1239 fRecDcaPosPhiEtaNeg->Fill(sdca, phiIn);
1240 fRecDcaPosPtEtaNeg->Fill(sdca, TMath::Log10(tpcP->Pt()));
1241 fRecPtPosPhiEtaNeg->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1242 //fRecDcaPhiPtPosEtaNeg->Fill(phiIn, tpcP->Pt(), sdca);
1246 //and negative particles
1248 fRecPtNeg->Fill(tpcP->Pt());
1249 fRecPtNegLadder[cas]->Fill(tpcP->Pt());
1250 fRecPtNegVz->Fill(TMath::Log10(tpcP->Pt()),tpcP->Zv());
1252 fRecPhiNeg->Fill(TMath::RadToDeg()*phiIn);
1253 fRecPhiNegLadder[cas]->Fill(TMath::RadToDeg()*phiIn);
1254 fRecPhiNegVz->Fill(TMath::RadToDeg()*phiIn,tpcP->Zv());
1255 fSignedDcaNegVz->Fill(sdca,tpcP->Zv());
1256 fRecEtaPtNegVz->Fill(tpcP->Eta()/tpcP->Pt(),tpcP->Zv());
1258 fRecEtaNeg->Fill(tpcP->Eta());
1259 fRecEtaNegLadder[cas]->Fill(tpcP->Eta());
1260 fRecEtaPtNeg->Fill(tpcP->Eta()/tpcP->Pt());
1261 fRecEtaNegVz->Fill(tpcP->Eta(),tpcP->Zv());
1263 fRecDcaNeg->Fill(sdca);
1264 fRecDcaNegInv->Fill(-sdca);
1265 fRecDcaNegPhi->Fill(sdca, phiIn);
1266 fRecPtNegPhi->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1267 fRecEtaNegPhi->Fill(tpcP->Eta(), phiIn);
1268 fRecEtaPtNegPhi->Fill(tpcP->Eta()/tpcP->Pt(), phiIn);
1270 fSignDcaNeg[cas]->Fill(sdca);
1271 fSignDcaNegInv[cas]->Fill(-sdca);
1274 fDcaSigmaNeg[cas]->Fill(sdca,TMath::Log10(sigmapt));
1276 fPtSigmaNeg[cas]->Fill(TMath::Log10(sigmapt));
1280 fRecPtNegEtaPos->Fill(tpcP->Pt());
1281 fRec1PtNegEtaPos->Fill(1/tpcP->Pt());
1282 fRecPhiNegEtaPos->Fill(phiIn);
1283 fRecDcaNegPhiEtaPos->Fill(sdca, phiIn);
1284 fRecDcaNegPtEtaPos->Fill(sdca, TMath::Log10(tpcP->Pt()));
1285 fRecPtNegPhiEtaPos->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1286 //fRecDcaPhiPtNegEtaPos->Fill(phiIn, tpcP->Pt(), sdca);
1290 fRecPtNegEtaNeg->Fill(tpcP->Pt());
1291 fRec1PtNegEtaNeg->Fill(1/tpcP->Pt());
1292 fRecPhiNegEtaNeg->Fill(phiIn);
1293 fRecDcaNegPhiEtaNeg->Fill(sdca, phiIn);
1294 fRecDcaNegPtEtaNeg->Fill(sdca, TMath::Log10(tpcP->Pt()));
1295 fRecPtNegPhiEtaNeg->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1296 //fRecDcaPhiPtNegEtaNeg->Fill(phiIn, tpcP->Pt(), sdca);
1303 //all particles with positive eta
1305 fRecQPtPosEta->Fill(tpcP->Charge()/tpcP->Pt());
1306 fRecPtPosEta->Fill(tpcP->Pt());
1307 fRecPhiPosEta->Fill(TMath::RadToDeg()*phiIn);
1308 fRecQPtPosEtaVz->Fill(tpcP->Charge()/tpcP->Pt(),tpcP->Zv());
1309 fRecDcaPosEta->Fill(sdca);
1310 fRecDPosEta->Fill(xy);
1312 //all particles with negative eta (and eta==0)
1314 fRecQPtNegEta->Fill(tpcP->Charge()/tpcP->Pt());
1315 fRecPtNegEta->Fill(tpcP->Pt());
1316 fRecPhiNegEta->Fill(TMath::RadToDeg()*phiIn);
1317 fRecQPtNegEtaVz->Fill(tpcP->Charge()/tpcP->Pt(),tpcP->Zv());
1318 fRecDcaNegEta->Fill(sdca);
1319 fRecDNegEta->Fill(xy);
1324 fRecPtTpcSector[Int_t(phiIn*
1325 TMath::RadToDeg()/20)]->Fill(tpcP->Pt());
1326 fRecEtaTpcSector[Int_t(phiIn*
1327 TMath::RadToDeg()/20)]->Fill(tpcP->Eta());
1328 fSignedDcaTpcSector[Int_t(phiIn*
1329 TMath::RadToDeg()/20)]->Fill(sdca);
1330 fRecQPtTpcSector[Int_t(phiIn*
1331 TMath::RadToDeg()/20)]->Fill(tpcP->Charge()/tpcP->Pt());
1332 fRecEtaPtTpcSector[Int_t(phiIn*
1333 TMath::RadToDeg()/20)]->Fill(tpcP->Eta()/tpcP->Pt());
1337 // // another track loop
1338 // for (Int_t iTrack2 = 0; iTrack2 < event->GetNumberOfTracks(); iTrack2++) {
1340 // if(LeadingTrack==iTrack2) continue;
1342 // AliVParticle *track2 = event->GetTrack(iTrack2);
1343 // AliESDtrack* esdtrack2 = dynamic_cast<AliESDtrack*>(track2);
1345 // Printf("ERROR: Could not receive track %d", iTrack);
1348 // if (!fCuts->AcceptTrack(esdtrack2)) continue;
1349 // //propagate to dca
1350 // esdtrack2->PropagateToDCA(event->GetPrimaryVertex(),
1351 // event->GetMagneticField(), 10000.);
1353 // fDeltaPhiLeading->Fill((LeadingPhi-esdtrack2->Phi())*TMath::RadToDeg(),
1354 // LeadingPhi*TMath::RadToDeg() );
1358 // }//second track loop
1360 // if(fTrackType==2) delete tpcP; // delete in case of TPCOnlyTrack
1364 //prevent mem leak for TPConly track
1365 if(fTrackType==2&&tpcP){
1371 // Post output data.
1372 // PostData(1, fHistPt);
1373 PostData(1, fHists);
1380 //________________________________________________________________________
1381 void AliAnalysisTaskQASym::Terminate(Option_t *)