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)
133 ,fRecDcaPosPhiEtaPos(0)
134 ,fRecDcaNegPhiEtaPos(0)
135 ,fRecDcaPosPhiEtaNeg(0)
136 ,fRecDcaNegPhiEtaNeg(0)
138 ,fRecDcaPosPtEtaPos(0)
139 ,fRecDcaNegPtEtaPos(0)
140 ,fRecDcaPosPtEtaNeg(0)
141 ,fRecDcaNegPtEtaNeg(0)
143 ,fRecPtPosPhiEtaPos(0)
144 ,fRecPtNegPhiEtaPos(0)
145 ,fRecPtPosPhiEtaNeg(0)
146 ,fRecPtNegPhiEtaNeg(0)
149 // ,fRecDcaPhiPtPosEtaPos(0)
150 // ,fRecDcaPhiPtNegEtaPos(0)
151 // ,fRecDcaPhiPtPosEtaNeg(0)
152 // ,fRecDcaPhiPtNegEtaNeg(0)
168 for(Int_t i = 0;i<18;++i){
169 fRecPtTpcSector[i] = 0;
170 fRecEtaTpcSector[i] = 0;
171 fSignedDcaTpcSector[i] = 0;
172 fRecQPtTpcSector[i] = 0;
173 fRecEtaPtTpcSector[i] = 0;
176 for(Int_t i = 0;i< 7;++i){
177 fRecPtPosLadder[i] = 0;
178 fRecPtNegLadder[i] = 0;
179 fRecPhiPosLadder[i] = 0;
180 fRecPhiNegLadder[i] = 0;
181 fRecEtaPosLadder[i] = 0;
182 fRecEtaNegLadder[i] = 0;
185 fSignDcaNegInv[i] = 0;
193 DefineOutput(1, TList::Class());
200 //________________________________________________________________________
201 void AliAnalysisTaskQASym::UserCreateOutputObjects()
206 Bool_t oldStatus = TH1::AddDirectoryStatus();
207 TH1::AddDirectory(kFALSE);
209 Double_t range = 0.3;
212 fHists = new TList();
213 // test = new TNtuple("test","test",
214 // "pt:phi:theta:x:y:z:charge");
215 fHistRECpt = new TH1F("fHistRECpt",
218 fEta = new TH1F("fEta",
221 fEtavPt = new TH2F("fEtavPt",
225 fCompareTPCparam = new TH2F("fCompareTPCparam",
227 100, -1., 1.,100,-5, 5);
229 fEtaPhi = new TH2F("fEtaPhi",
231 200, -2., 2., 128, 0., 2. * TMath::Pi());
233 fThetaRec = new TH1F("fThetaRec",
235 180, 0., TMath::Pi());
236 fPhiRec = new TH1F("fPhiRec",
238 180, 0., 2*TMath::Pi());
239 fNumber = new TH1F("fNumber",
240 "number of tracks per event",
242 fVx = new TH1F("fVx",
243 "X of first track point",
245 fVy = new TH1F("fVy",
246 "Y of first track point",
248 fVz = new TH1F("fVz",
249 "Z of first track point",
251 fVertexX = new TH1F("fVerteX",
254 fVertexY = new TH1F("fVertexY",
257 fVertexZ = new TH1F("fVertexZ",
261 fEtaPt = new TH1F("fEtaPt",
265 fQPt = new TH1F("fQPt",
269 fDca = new TH1F("fDca",
271 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
274 fqRec = new TH1F("fqRec",
275 " charge all reconstructed particle",
278 fsigmaPt = new TH1F("fsigmaPt",
279 "Log_{10}(#sigma_{p_{T}})",
286 for(Int_t ITSlayer_case=0;ITSlayer_case<7;ITSlayer_case++){
288 fSignDcaPos[ITSlayer_case] = new TH1F(Form("fSignDcaPos%d", ITSlayer_case),
290 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
291 fSignDcaPos[ITSlayer_case]->GetXaxis()->SetTitle("dca");
292 fSignDcaPos[ITSlayer_case]->GetYaxis()->SetTitle("");
295 fSignDcaNeg[ITSlayer_case] = new TH1F(Form("fSignDcaNeg%d", ITSlayer_case),
297 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
298 fSignDcaNeg[ITSlayer_case]->GetXaxis()->SetTitle("dca");
299 fSignDcaNeg[ITSlayer_case]->GetYaxis()->SetTitle("");
301 fSignDcaNegInv[ITSlayer_case] = new TH1F(Form("fSignDcaNegInv%d", ITSlayer_case),
302 " inverse Signed dca ",
303 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
304 fSignDcaNegInv[ITSlayer_case]->GetXaxis()->SetTitle("-dca");
305 fSignDcaNegInv[ITSlayer_case]->GetYaxis()->SetTitle("");
310 fPtSigmaPos[ITSlayer_case] = new TH1F(Form("fPtSigmaPos%d", ITSlayer_case),
313 fPtSigmaPos[ITSlayer_case]->GetXaxis()->SetTitle("Log_{10}(#sigma_{pT})");
314 fPtSigmaPos[ITSlayer_case]->GetYaxis()->SetTitle("");
317 fPtSigmaNeg[ITSlayer_case] = new TH1F(Form("fPtSigmaNeg%d",ITSlayer_case),
320 fPtSigmaNeg[ITSlayer_case]->GetXaxis()->SetTitle("Log_{10}(#sigma_{pT})");
321 fPtSigmaNeg[ITSlayer_case]->GetYaxis()->SetTitle("");
327 fqPtRec[ITSlayer_case] = new TH1F(Form("fqPtRec%d",ITSlayer_case),
330 fqPtRec[ITSlayer_case]->GetXaxis()->SetTitle("q_{tr}/p_{T, tr} (GeV/c)");
331 fqPtRec[ITSlayer_case]->GetYaxis()->SetTitle("");
337 fDcaSigmaPos[ITSlayer_case] = new TH2F(Form("fDcaSigmaPos%d", ITSlayer_case),
338 " p_{T} shift vs #sigma_{pT} ",
339 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9),200, -4., 4. );
340 fDcaSigmaPos[ITSlayer_case]->GetXaxis()->SetTitle("signed DCA)");
341 fDcaSigmaPos[ITSlayer_case]->GetYaxis()->SetTitle("log_{10}(#sigma_{pT})");
344 fDcaSigmaNeg[ITSlayer_case] = new TH2F(Form("fDcaSigmaNeg%d", ITSlayer_case),
345 " p_{T} shift vs #sigma_{pT} ",
346 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9),200, -4., 4. );
347 fDcaSigmaNeg[ITSlayer_case]->GetXaxis()->SetTitle("signed DCA");
348 fDcaSigmaNeg[ITSlayer_case]->GetYaxis()->SetTitle("log_{10}(#sigma_{pT})");
355 // YIELDs---------- positive and negative particles
357 fRecPtPos = new TH1F("fRecPtPos",
360 fRecPtPos->GetXaxis()->SetTitle("p_{T} (GeV/c)");
361 fRecPtNeg = new TH1F("fRecPtNeg",
364 fRecPtNeg->GetXaxis()->SetTitle("p_{T} (GeV/c)");
367 fRecPhiPos = new TH1F("fRecPhiPos",
370 fRecPhiPos->GetXaxis()->SetTitle("#phi (deg)");
372 fRecPhiNeg = new TH1F("fRecPhiNeg",
375 fRecPhiNeg->GetXaxis()->SetTitle("#phi (deg)");
377 fRecEtaPos = new TH1F("fRecEtaPos",
380 fRecEtaPos->GetXaxis()->SetTitle("#eta");
382 fRecEtaNeg = new TH1F("fRecEtaNeg",
385 fRecEtaNeg->GetXaxis()->SetTitle("#eta");
387 fRecEtaPtPos = new TH1F("fRecEtaPtPos",
390 fRecEtaPtPos->GetXaxis()->SetTitle("#eta/p_{T}");
392 fRecEtaPtNeg = new TH1F("fRecEtaPtNeg",
395 fRecEtaPtNeg->GetXaxis()->SetTitle("#eta/p_{T}");
397 fRecDcaPos = new TH1F("fRecDcaPos",
399 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
400 fRecDcaPos->GetXaxis()->SetTitle("dca (cm)");
401 fRecDcaNeg = new TH1F("fRecDcaNeg",
403 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
404 fRecDcaNeg->GetXaxis()->SetTitle("dca (cm)");
406 fRecDcaNegInv = new TH1F("fRecDcaNegInv",
408 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
409 fRecDcaNegInv->GetXaxis()->SetTitle("dca (cm)");
412 fRecDPos = new TH1F("fRecDPos",
414 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
415 fRecDPos->GetXaxis()->SetTitle("d (cm)");
416 fRecDNeg = new TH1F("fRecDNeg",
418 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
419 fRecDNeg->GetXaxis()->SetTitle("d (cm)");
422 // YIELDs ---------------- positive and negative eta
425 fRecQPtPosEta = new TH1F("fRecQPtPosEta",
428 fRecQPtPosEta->GetXaxis()->SetTitle("q/p_{T} ");
430 fRecQPtNegEta = new TH1F("fRecQPtNegEta",
433 fRecQPtNegEta->GetXaxis()->SetTitle("q/p_{T}");
435 fRecPtPosEta = new TH1F("fRecPtPosEta",
438 fRecPtPosEta->GetXaxis()->SetTitle("p_{T} (GeV/c)");
440 fRecPtNegEta = new TH1F("fRecPtNegEta",
443 fRecPtNegEta->GetXaxis()->SetTitle("p_{T} (GeV/c)");
445 fRecPhiPosEta = new TH1F("fRecPhiPosEta",
448 fRecPhiPosEta->GetXaxis()->SetTitle("#phi (deg)");
450 fRecPhiNegEta = new TH1F("fRecPhiNegEta",
453 fRecPhiNegEta->GetXaxis()->SetTitle("#phi (deg)");
455 fRecDcaPosEta = new TH1F("fRecDcaPosEta",
457 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
458 fRecDcaPosEta->GetXaxis()->SetTitle("dca (cm)");
459 fRecDcaNegEta = new TH1F("fRecDcaNegEta",
461 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
462 fRecDcaNegEta->GetXaxis()->SetTitle("dca (cm)");
464 fRecDPosEta = new TH1F("fRecDPosEta",
466 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
467 fRecDPosEta->GetXaxis()->SetTitle("d (cm)");
468 fRecDNegEta = new TH1F("fRecDNegEta",
471 fRecDNegEta->GetXaxis()->SetTitle("d (cm)");
473 fRecDcaPosPhi = new TH2F("fRecDcaPosPhi",
475 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2);
476 fRecDcaPosPhi->GetXaxis()->SetTitle("dca (cm)");
477 fRecDcaPosPhi->GetYaxis()->SetTitle("#phi (rad.)");
478 fRecDcaNegPhi = new TH2F("fRecDcaNegPhi",
480 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2);
481 fRecDcaNegPhi->GetXaxis()->SetTitle("dca (cm)");
482 fRecDcaNegPhi->GetYaxis()->SetTitle("#phi (rad.)");
484 fRecPtPosPhi = new TH2F("fRecPtPosPhi",
486 100, -2.5, 2., 180, 0, TMath::Pi()*2);
487 fRecPtPosPhi->GetXaxis()->SetTitle("log_{10}(p_{T})");
488 fRecPtPosPhi->GetYaxis()->SetTitle("#phi (rad.)");
489 fRecPtNegPhi = new TH2F("fRecPtNegPhi",
491 100,-2.5 , 2., 180, 0, TMath::Pi()*2);
492 fRecPtNegPhi->GetXaxis()->SetTitle("log_{10}(p_{T})");
493 fRecPtNegPhi->GetYaxis()->SetTitle("#phi (rad.)");
495 fRecEtaPosPhi = new TH2F("fRecEtaPosPhi",
497 100, -1.5, 1.5, 180, 0, TMath::Pi()*2);
498 fRecEtaPosPhi->GetXaxis()->SetTitle("#eta");
499 fRecEtaPosPhi->GetYaxis()->SetTitle("#phi (rad.)");
500 fRecEtaNegPhi = new TH2F("fRecEtaNegPhi",
502 100, -1.5, 1.5, 180, 0, TMath::Pi()*2);
503 fRecEtaNegPhi->GetXaxis()->SetTitle("#eta");
504 fRecEtaNegPhi->GetYaxis()->SetTitle("#phi (rad.)");
506 fRecQPtPhi = new TH2F("fRecQPtPhi",
507 " charge/p_T vs. phi",
508 100,-1. , 1., 180, 0, TMath::Pi()*2);
509 fRecQPtPhi->GetXaxis()->SetTitle("charge/p_{T}");
510 fRecQPtPhi->GetYaxis()->SetTitle("#phi (rad.)");
512 fRecEtaPtPosPhi = new TH2F("fRecEtaPtPosPhi",
514 100, -5, 5., 180, 0, TMath::Pi()*2);
515 fRecEtaPtPosPhi->GetXaxis()->SetTitle("#eta/p_{T}");
516 fRecEtaPtPosPhi->GetYaxis()->SetTitle("#phi (rad.)");
517 fRecEtaPtNegPhi = new TH2F("fRecEtaPtNegPhi",
519 100,-5 , 5., 180, 0, TMath::Pi()*2);
520 fRecEtaPtNegPhi->GetXaxis()->SetTitle("#eta/p_{T}");
521 fRecEtaPtNegPhi->GetYaxis()->SetTitle("#phi (rad.)");
527 fRecDcaPosPhiEtaPos = new TH2F("fRecDcaPosPhiEtaPos",
529 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2);
530 fRecDcaPosPhiEtaPos->GetXaxis()->SetTitle("dca (cm)");
531 fRecDcaPosPhiEtaPos->GetYaxis()->SetTitle("#phi (rad.)");
532 fRecDcaNegPhiEtaPos = new TH2F("fRecDcaNegPhiEtaPos",
534 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2);
535 fRecDcaNegPhiEtaPos->GetXaxis()->SetTitle("dca (cm)");
536 fRecDcaNegPhiEtaPos->GetYaxis()->SetTitle("#phi (rad.)");
538 fRecPtPosPhiEtaPos = new TH2F("fRecPtPosPhiEtaPos",
540 100, -2.5, 2., 180, 0, TMath::Pi()*2);
541 fRecPtPosPhiEtaPos->GetXaxis()->SetTitle("log_{10}(p_{T})");
542 fRecPtPosPhiEtaPos->GetYaxis()->SetTitle("#phi (rad.)");
543 fRecPtNegPhiEtaPos = new TH2F("fRecPtNegPhiEtaPos",
545 100,-2.5 , 2., 180, 0, TMath::Pi()*2);
546 fRecPtNegPhiEtaPos->GetXaxis()->SetTitle("log_{10}(p_{T})");
547 fRecPtNegPhiEtaPos->GetYaxis()->SetTitle("#phi (rad.)");
550 fRecDcaPosPhiEtaNeg = new TH2F("fRecDcaPosPhiEtaNeg",
552 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2);
553 fRecDcaPosPhiEtaNeg->GetXaxis()->SetTitle("dca (cm)");
554 fRecDcaPosPhiEtaNeg->GetYaxis()->SetTitle("#phi (rad.)");
555 fRecDcaNegPhiEtaNeg = new TH2F("fRecDcaNegPhiEtaNeg",
557 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2);
558 fRecDcaNegPhiEtaNeg->GetXaxis()->SetTitle("dca (cm)");
559 fRecDcaNegPhiEtaNeg->GetYaxis()->SetTitle("#phi (rad.)");
561 fRecPtPosPhiEtaNeg = new TH2F("fRecPtPosPhiEtaNeg",
563 100, -2.5, 2., 180, 0, TMath::Pi()*2);
564 fRecPtPosPhiEtaNeg->GetXaxis()->SetTitle("log_{10}(p_{T})");
565 fRecPtPosPhiEtaNeg->GetYaxis()->SetTitle("#phi (rad.)");
566 fRecPtNegPhiEtaNeg = new TH2F("fRecPtNegPhiEtaNeg",
568 100,-2.5 , 2., 180, 0, TMath::Pi()*2);
569 fRecPtNegPhiEtaNeg->GetXaxis()->SetTitle("log_{10}(p_{T})");
570 fRecPtNegPhiEtaNeg->GetYaxis()->SetTitle("#phi (rad.)");
573 fRecDcaPosPtEtaPos = new TH2F("fRecDcaPosPtEtaPos",
575 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2);
576 fRecDcaPosPtEtaPos->GetXaxis()->SetTitle("dca (cm)");
577 fRecDcaPosPtEtaPos->GetYaxis()->SetTitle("log_{10}(p_{T})");
579 fRecDcaPosPtEtaNeg = new TH2F("fRecDcaPosPtEtaNeg",
581 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2);
582 fRecDcaPosPtEtaNeg->GetXaxis()->SetTitle("dca (cm)");
583 fRecDcaPosPtEtaNeg->GetYaxis()->SetTitle("log_{10}(p_{T})");
585 fRecDcaNegPtEtaPos = new TH2F("fRecDcaNegPtEtaPos",
587 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2);
588 fRecDcaNegPtEtaPos->GetXaxis()->SetTitle("dca (cm)");
589 fRecDcaNegPtEtaPos->GetYaxis()->SetTitle("log_{10}(p_{T})");
591 fRecDcaNegPtEtaNeg = new TH2F("fRecDcaNegPtEtaNeg",
593 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2);
594 fRecDcaNegPtEtaNeg->GetXaxis()->SetTitle("dca (cm)");
595 fRecDcaNegPtEtaNeg->GetYaxis()->SetTitle("log_{10}(p_{T})");
599 // YIELDs ---------------- for TPC sectors
600 for(Int_t sector=0; sector<18;sector++){
603 fRecPtTpcSector[sector] = new TH1F(Form("fRecPtTpcSector%02d",sector),
604 Form("p_{T} distribution: TPC sector %d",
605 sector),100, 0., pt);
606 fRecPtTpcSector[sector]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
608 fRecEtaTpcSector[sector] = new TH1F(Form("fRecEtaTpcSector%02d",sector),
609 Form("#eta distribution: TPC sector %d",
610 sector),200, -2., 2.);
611 fRecEtaTpcSector[sector]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
614 fSignedDcaTpcSector[sector] = new TH1F(Form("fSignedDcaTpcSector%02d",sector),
615 Form("dca distribution: TPC sector %d",
616 sector),200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9) );
617 fSignedDcaTpcSector[sector]->GetXaxis()->SetTitle("dca");
619 fRecQPtTpcSector[sector] = new TH1F(Form("fRecQPtTpcSector%02d",sector),
620 Form("Q/ p_{T} distribution: TPC sector %d",
621 sector),100, -1., 1.);
622 fRecQPtTpcSector[sector]->GetXaxis()->SetTitle("Q/p_{T} (GeV/c)");
624 fRecEtaPtTpcSector[sector] = new TH1F(Form("fRecEtaPtTpcSector%02d",sector),
625 Form("#eta/ p_{T} distribution: TPC sector %d",
626 sector),100, -1., 1.);
627 fRecEtaPtTpcSector[sector]->GetXaxis()->SetTitle("#eta/p_{T} (GeV/c)");
631 for(Int_t i=0;i<7;i++){
632 fRecPtPosLadder[i] = new TH1F(Form("fRecPtPosLadder%d", i),
633 " p_{T} distribution",
635 fRecPtPosLadder[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
636 fRecPtNegLadder[i] = new TH1F(Form("fRecPtNegLadder%d",i),
637 " p_{T} distribution ",
639 fRecPtNegLadder[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
642 fRecPhiPosLadder[i] = new TH1F(Form("fRecPhiPosLadder%d",i),
643 "#phi distribution: all pos eta",
645 fRecPhiPosLadder[i]->GetXaxis()->SetTitle("#phi (deg)");
647 fRecPhiNegLadder[i] = new TH1F(Form("fRecPhiNegLadder%d", i),
648 "#phi distribution: all neg eta",
650 fRecPhiNegLadder[i]->GetXaxis()->SetTitle("#phi (deg)");
654 fRecEtaPosLadder[i] = new TH1F(Form("fRecEtaPosLadder%d",i),
657 fRecEtaPosLadder[i]->GetXaxis()->SetTitle("#eta)");
659 fRecEtaNegLadder[i] = new TH1F(Form("fRecEtaNegLadder%d", i),
662 fRecEtaNegLadder[i]->GetXaxis()->SetTitle("#eta");
667 fRecPtPosVz = new TH2F("fRecPtPosVz",
668 "p_{T} distribution vs Vz()",
669 100, -1., 2., 200,-vzmax,vzmax);
670 fRecPtPosVz->GetXaxis()->SetTitle("log_{10}(p_{T})");
672 fRecPtNegVz = new TH2F("fRecPtNegVz",
673 "p_{T} distribution vs Vz()",
674 100, -1., 2.,200,-vzmax,vzmax);
675 fRecPtNegVz->GetXaxis()->SetTitle("Log_{10}(p_{T})");
678 fRecEtaPosVz= new TH2F("fRecEtaPosVz",
679 "#eta distribution vs Vz()",
680 100, -2., 2., 200,-vzmax,vzmax);
681 fRecEtaPosVz->GetXaxis()->SetTitle("#eta");
682 fRecEtaNegVz = new TH2F("fRecEtaNegVz",
683 "#eta distribution vs Vz()",
684 100, -2., 2.,200,-vzmax,vzmax);
685 fRecEtaNegVz->GetXaxis()->SetTitle("#eta");
687 fRecPhiPosVz= new TH2F("fRecPhiPosVz",
688 "#eta distribution vs Vz()",
689 361, 0., 360., 200,-vzmax,vzmax);
690 fRecPhiPosVz->GetXaxis()->SetTitle("#phi (deg)");
691 fRecPhiNegVz = new TH2F("fRecPhiNegVz",
693 361, 0., 360.,200,-vzmax,vzmax);
694 fRecPhiNegVz->GetXaxis()->SetTitle("#phi (deg)");
696 fSignedDcaPosVz= new TH2F("fSignedDcaPosVz",
697 "#eta distribution vs Vz()",
698 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200,-vzmax,vzmax);
699 fSignedDcaPosVz->GetXaxis()->SetTitle("dca (cm)");
700 fSignedDcaNegVz = new TH2F("fSignedDcaNegVz",
702 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9),200,-vzmax,vzmax);
703 fSignedDcaNegVz->GetXaxis()->SetTitle("dca (cm)");
705 fRecQPtPosEtaVz= new TH2F("fRecQPtPosEtaVz",
706 " Q/p_{T} distribution vs Vz()",
707 100, -1., 1., 200,-vzmax,vzmax);
708 fRecQPtPosEtaVz->GetXaxis()->SetTitle("Q/p_{T}");
709 fRecQPtNegEtaVz = new TH2F("fRecQPtNegEtaVz",
710 " Q/p_{T} distribution vs Vz()",
711 100, -1., 1.,200,-vzmax,vzmax);
712 fRecQPtNegEtaVz->GetXaxis()->SetTitle("Q/p_{T}");
715 fRecEtaPtPosVz= new TH2F("fRecEtaPtPosVz",
716 " #eta/p_{T} distribution vs Vz()",
717 100, -1., 1., 200,-vzmax,vzmax);
718 fRecEtaPtPosVz->GetXaxis()->SetTitle("#eta/p_{T");
719 fRecEtaPtNegVz = new TH2F("fRecEtaPtNegVz",
720 " #eta/p_{T} distribution vs Vz()",
721 100, -1., 1.,200,-vzmax,vzmax);
722 fRecEtaPtNegVz->GetXaxis()->SetTitle("#eta/p_{T}");
725 fDeltaPhiAll = new TH1F("fDeltaPhiAll",
726 " #Delta #phi",200,-360,360);
727 fDeltaPhiAll->GetXaxis()->SetTitle("#Delta #phi");
730 fDeltaPhiLeading = new TH2F("fDeltaPhiLeading",
731 " #Delta #phi",361,-360,360, 361,0, 360);
732 fDeltaPhiLeading->GetXaxis()->SetTitle("#Delta #phi (deg.)");
733 fDeltaPhiLeading->GetYaxis()->SetTitle("#phi_{leading particle} (deg.)");
735 fDiffDcaD = new TH1F("fDiffDcaD",
740 fRecPtPosEtaPos = new TH1F("fRecPtPosEtaPos",
741 "p_{T} distribution",100,0,pt);
742 fRecPtPosEtaPos->GetXaxis()->SetTitle("p_{T} (GeV/c)");
744 fRecPtNegEtaPos = new TH1F("fRecPtNegEtaPos",
745 "p_{T} distribution",100,0,pt);
746 fRecPtNegEtaPos->GetXaxis()->SetTitle("p_{T} (GeV/c)");
748 fRecPtPosEtaNeg = new TH1F("fRecPtPosEtaNeg",
749 "p_{T} distribution",100,0,pt);
750 fRecPtPosEtaNeg->GetXaxis()->SetTitle("p_{T} (GeV/c)");
752 fRecPtNegEtaNeg = new TH1F("fRecPtNegEtaNeg",
753 "p_{T} distribution",100,0,pt);
754 fRecPtNegEtaNeg->GetXaxis()->SetTitle("p_{T} (GeV/c)");
758 fRec1PtPosEtaPos = new TH1F("fRec1PtPosEtaPos",
759 "1/p_{T} distribution",100,0,0.5);
760 fRec1PtPosEtaPos->GetXaxis()->SetTitle("p_{T} (c/GeV)");
762 fRec1PtNegEtaPos = new TH1F("fRec1PtNegEtaPos",
763 "1/p_{T} distribution",100,0,0.5);
764 fRec1PtNegEtaPos->GetXaxis()->SetTitle("p_{T} (c/GeV)");
766 fRec1PtPosEtaNeg = new TH1F("fRec1PtPosEtaNeg",
767 "1/p_{T} distribution",100,0,0.5);
768 fRec1PtPosEtaNeg->GetXaxis()->SetTitle("p_{T} (c/GeV)");
770 fRec1PtNegEtaNeg = new TH1F("fRec1PtNegEtaNeg",
771 "1/p_{T} distribution",100,0,0.5);
772 fRec1PtNegEtaNeg->GetXaxis()->SetTitle("1/p_{T} (c/GeV)");
776 fRecPhiPosEtaPos = new TH1F("fRecPhiPosEtaPos",
777 "#phi",180,0,2*TMath::Pi());
778 fRecPhiPosEtaPos->GetXaxis()->SetTitle("#phi (rad.)");
780 fRecPhiNegEtaPos = new TH1F("fRecPhiNegEtaPos",
781 "#phi",180,0,2*TMath::Pi());
782 fRecPhiNegEtaPos->GetXaxis()->SetTitle("#phi (rad.)");
784 fRecPhiPosEtaNeg = new TH1F("fRecPhiPosEtaNeg",
785 "#phi",180,0,2*TMath::Pi());
786 fRecPhiPosEtaNeg->GetXaxis()->SetTitle("#phi (rad.)");
788 fRecPhiNegEtaNeg = new TH1F("fRecPhiNegEtaNeg",
789 "#phi",180,0,2*TMath::Pi());
790 fRecPhiNegEtaNeg->GetXaxis()->SetTitle("#phi (rad.)");
794 // fRecDcaPhiPtPosEtaPos = new TH3F("fRecDcaPhiPtPosEtaPos",
795 // "#phi- p_{T} - DCA",
796 // 180,0,2*TMath::Pi(),
798 // 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
799 // fRecDcaPhiPtPosEtaPos->GetXaxis()->SetTitle("#phi (rad.)");
800 // fRecDcaPhiPtPosEtaPos->GetYaxis()->SetTitle("p_{T} (GeV/c)");
801 // fRecDcaPhiPtPosEtaPos->GetZaxis()->SetTitle("dca (cm)");
803 // fRecDcaPhiPtPosEtaNeg = new TH3F("fRecDcaPhiPtPosEtaNeg",
804 // "#phi- p_{T} - DCA",
805 // 180,0,2*TMath::Pi(),
807 // 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
808 // fRecDcaPhiPtPosEtaNeg->GetZaxis()->SetTitle("dca (cm)");
809 // fRecDcaPhiPtPosEtaNeg->GetXaxis()->SetTitle("#phi (rad.)");
810 // fRecDcaPhiPtPosEtaNeg->GetYaxis()->SetTitle("p_{T} (GeV/c)");
812 // fRecDcaPhiPtNegEtaPos = new TH3F("fRecDcaPhiPtNegEtaPos",
813 // "#phi- p_{T} - DCA",
814 // 180,0,2*TMath::Pi(),
816 // 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
817 // fRecDcaPhiPtNegEtaPos->GetZaxis()->SetTitle("dca (cm)");
818 // fRecDcaPhiPtNegEtaPos->GetXaxis()->SetTitle("#phi (rad.)");
819 // fRecDcaPhiPtNegEtaPos->GetYaxis()->SetTitle("p_{T} (GeV/c)");
821 // fRecDcaPhiPtNegEtaNeg = new TH3F("fRecDcaPhiPtNegEtaNeg",
822 // "#phi- p_{T} - DCA",
823 // 180,0,2*TMath::Pi(),
825 // 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
826 // fRecDcaPhiPtNegEtaNeg->GetZaxis()->SetTitle("dca (cm)");
827 // fRecDcaPhiPtNegEtaNeg->GetYaxis()->SetTitle("#phi (rad.)");
828 // fRecDcaPhiPtNegEtaNeg->GetXaxis()->SetTitle("p_{T} (GeV/c)");
835 fHists->Add(fHistRECpt);
837 fHists->Add(fEtavPt);
838 fHists->Add(fCompareTPCparam);
839 fHists->Add(fEtaPhi);
840 fHists->Add(fThetaRec);
841 fHists->Add(fPhiRec);
842 fHists->Add(fNumber);
846 fHists->Add(fVertexX);
847 fHists->Add(fVertexY);
848 fHists->Add(fVertexZ);
854 fHists->Add(fDeltaPhiAll);
855 fHists->Add(fDeltaPhiLeading);
856 fHists->Add(fDiffDcaD);
859 fHists->Add(fsigmaPt);
861 fHists->Add(fRecPtPos);
862 fHists->Add(fRecPtNeg);
863 fHists->Add(fRecPhiPos);
864 fHists->Add(fRecPhiNeg);
865 fHists->Add(fRecEtaPos);
866 fHists->Add(fRecEtaNeg);
867 fHists->Add(fRecEtaPtPos);
868 fHists->Add(fRecEtaPtNeg);
869 fHists->Add(fRecDcaPos);
870 fHists->Add(fRecDcaNeg);
871 fHists->Add(fRecDcaNegInv);
872 fHists->Add(fRecDPos);
873 fHists->Add(fRecDNeg);
876 fHists->Add(fRecQPtPosEta);
877 fHists->Add(fRecQPtNegEta);
878 fHists->Add(fRecPtPosEta);
879 fHists->Add(fRecPtNegEta);
880 fHists->Add(fRecPhiPosEta);
881 fHists->Add(fRecPhiNegEta);
882 fHists->Add(fRecDcaPosEta);
883 fHists->Add(fRecDcaNegEta);
884 fHists->Add(fRecDPosEta);
885 fHists->Add(fRecDNegEta);
888 for(Int_t i=0;i<18;i++){
889 fHists->Add(fRecPtTpcSector[i]);
890 fHists->Add(fRecEtaTpcSector[i]);
891 fHists->Add(fSignedDcaTpcSector[i]);
892 fHists->Add(fRecQPtTpcSector[i]);
893 fHists->Add(fRecEtaPtTpcSector[i]);
896 for(Int_t i=0;i<7;i++){
897 fHists->Add(fRecPtPosLadder[i]);
898 fHists->Add(fRecPtNegLadder[i]);
899 fHists->Add(fRecPhiPosLadder[i]);
900 fHists->Add(fRecPhiNegLadder[i]);
901 fHists->Add(fRecEtaPosLadder[i]);
902 fHists->Add(fRecEtaNegLadder[i]);
905 fHists->Add(fRecPtPosVz);
906 fHists->Add(fRecPtNegVz);
907 fHists->Add(fRecEtaPosVz);
908 fHists->Add(fRecEtaNegVz);
909 fHists->Add(fRecPhiPosVz);
910 fHists->Add(fRecPhiNegVz);
911 fHists->Add(fSignedDcaPosVz);
912 fHists->Add(fSignedDcaNegVz);
913 fHists->Add(fRecQPtPosEtaVz);
914 fHists->Add(fRecQPtNegEtaVz);
915 fHists->Add(fRecEtaPtPosVz);
916 fHists->Add(fRecEtaPtNegVz);
919 for(Int_t i=0;i<7;i++){
920 fHists->Add(fSignDcaPos[i]);
921 fHists->Add(fSignDcaNeg[i]);
922 fHists->Add(fSignDcaNegInv[i]);
924 fHists->Add(fPtSigmaPos[i]);
925 fHists->Add(fPtSigmaNeg[i]);
926 fHists->Add(fqPtRec[i]);
928 fHists->Add(fDcaSigmaPos[i]);
929 fHists->Add(fDcaSigmaNeg[i]);
934 fHists->Add(fRecDcaPosPhi);
935 fHists->Add(fRecDcaNegPhi);
936 fHists->Add(fRecPtPosPhi);
937 fHists->Add(fRecPtNegPhi);
938 fHists->Add(fRecEtaPosPhi);
939 fHists->Add(fRecEtaNegPhi);
940 fHists->Add(fRecQPtPhi);
941 fHists->Add(fRecEtaPtPosPhi);
942 fHists->Add(fRecEtaPtNegPhi);
944 fHists->Add(fRecPtPosEtaPos);
945 fHists->Add(fRecPtNegEtaPos);
946 fHists->Add(fRecPtPosEtaNeg);
947 fHists->Add(fRecPtNegEtaNeg);
949 fHists->Add(fRec1PtPosEtaPos);
950 fHists->Add(fRec1PtNegEtaPos);
951 fHists->Add(fRec1PtPosEtaNeg);
952 fHists->Add(fRec1PtNegEtaNeg);
955 fHists->Add(fRecPhiPosEtaPos);
956 fHists->Add(fRecPhiNegEtaPos);
957 fHists->Add(fRecPhiPosEtaNeg);
958 fHists->Add(fRecPhiNegEtaNeg);
960 fHists->Add(fRecDcaPosPhiEtaPos);
961 fHists->Add(fRecDcaNegPhiEtaPos);
962 fHists->Add(fRecPtPosPhiEtaPos);
963 fHists->Add(fRecPtNegPhiEtaPos);
964 fHists->Add(fRecDcaPosPhiEtaNeg);
965 fHists->Add(fRecDcaNegPhiEtaNeg);
966 fHists->Add(fRecPtPosPhiEtaNeg);
967 fHists->Add(fRecPtNegPhiEtaNeg);
969 fHists->Add(fRecDcaPosPtEtaPos);
970 fHists->Add(fRecDcaNegPtEtaPos);
971 fHists->Add(fRecDcaPosPtEtaNeg);
972 fHists->Add(fRecDcaNegPtEtaNeg);
974 // fHists->Add(fRecDcaPhiPtPosEtaPos);
975 // fHists->Add(fRecDcaPhiPtPosEtaNeg);
976 // fHists->Add(fRecDcaPhiPtNegEtaPos);
977 // fHists->Add(fRecDcaPhiPtNegEtaNeg);
983 // for (Int_t i=0; i<fHists->GetEntries(); ++i) {
984 // TH1 *h1 = dynamic_cast<TH1*>(fHists->At(i));
986 // // Printf("%s ",h1->GetName());
992 TH1::AddDirectory(oldStatus);
995 //__________________________________________________________
997 void AliAnalysisTaskQASym::UserExec(Option_t *)
999 AliVEvent *event = InputEvent();
1001 Printf("ERROR: Could not retrieve event");
1007 AliESDEvent* esd = dynamic_cast<AliESDEvent*>(event);
1009 Printf("We are reading from ESD");
1016 if(fDebug>1)Printf("There are %d tracks in this event", event->GetNumberOfTracks());
1019 Int_t leadingTrack = 0;
1020 Float_t leadingEnergy = -20.;
1021 Float_t leadingPhi = 0;//TMath::Pi();
1024 if(event->GetNumberOfTracks()!=0) fNumber->Fill(event->GetNumberOfTracks());
1026 const AliVVertex* vertex = event->GetPrimaryVertex();
1027 if(vertex->GetNContributors()==0) return;
1028 Float_t vx = vertex->GetX();
1029 Float_t vy = vertex->GetY();
1030 Float_t vz = vertex->GetZ();
1036 if (TMath::Abs(vz) > 10.) return;
1038 AliESDtrack *tpcP = 0x0;
1040 for (Int_t iTrack = 0; iTrack < event->GetNumberOfTracks(); iTrack++) {
1042 //prevent mem leak for TPConly track
1043 if(fTrackType==2&&tpcP){
1048 AliVParticle *track = event->GetTrack(iTrack);
1049 AliESDtrack *esdtrack = dynamic_cast<AliESDtrack*>(track);
1050 esdtrack->PropagateToDCA(event->GetPrimaryVertex(),
1051 event->GetMagneticField(), 10000.);
1054 Printf("ERROR: Could not receive track %d", iTrack);
1058 // run Task for global tracks or ITS tracks or TPC tracks
1059 const AliExternalTrackParam *tpcPin = 0x0;
1063 //Fill all histograms with global tracks
1065 phiIn = tpcP->Phi();
1066 if (!tpcP) continue;
1067 if (!fCuts->AcceptTrack(tpcP)) continue;
1069 else if(fTrackType==1){
1070 //Fill all histograms with ITS tracks
1072 phiIn = tpcP->Phi();
1073 if (!tpcP) continue;
1074 if (!fCuts->AcceptTrack(tpcP)) continue;
1076 else if(fTrackType==2){
1077 //Fill all histograms with TPC track information
1078 tpcPin = esdtrack->GetInnerParam();
1079 if (!tpcPin) continue;
1080 phiIn=tpcPin->Phi();
1082 tpcP = AliESDtrackCuts::GetTPCOnlyTrack(dynamic_cast<AliESDEvent*>(event),esdtrack->GetID());
1083 if (!tpcP) continue;
1084 if (!fCuts->AcceptTrack(tpcP)) continue;
1085 if(tpcP->GetNcls(1)>160)continue;//jacek's track cut
1086 if(tpcP->GetConstrainedChi2TPC()<0)continue; // jacek's track cut
1089 Printf("ERROR: wrong track type \n");
1096 if(tpcP->E()>leadingEnergy){
1097 leadingTrack=iTrack;
1098 leadingEnergy=tpcP->E();
1103 fqRec->Fill(tpcP->Charge());
1106 Double_t sigmapt = tpcP->GetSigma1Pt2();
1107 sigmapt= sqrt(sigmapt);
1108 sigmapt= sigmapt *(tpcP->Pt()*tpcP->Pt());
1110 if(sigmapt == 0.)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 //-------------------
1150 xvertexcor = tpcP->Xv() - vertex->GetX(); // coordinate corrected for vertex position
1151 yvertexcor = tpcP->Yv() - vertex->GetY(); // "
1152 sdca = (tpcP->Py()*xvertexcor - tpcP->Px()*yvertexcor)/tpcP->Pt();
1155 fqPtRec[cas]->Fill(tpcP->Charge()/tpcP->Pt());
1159 fHistRECpt->Fill(tpcP->Pt());
1160 fEta->Fill(tpcP->Eta());
1161 fEtavPt->Fill(tpcP->Eta(), tpcP->Pt());
1162 fEtaPhi->Fill(tpcP->Eta(), phiIn);
1163 fThetaRec->Fill(tpcP->Theta());
1164 fPhiRec->Fill(phiIn);
1165 fVx->Fill(tpcP->Xv());
1166 fVy->Fill(tpcP->Yv());
1167 fVz->Fill(tpcP->Zv());
1170 fEtaPt->Fill(tpcP->Eta()/tpcP->Pt());
1171 fQPt->Fill(tpcP->Charge()/tpcP->Pt());
1173 fRecQPtPhi->Fill(tpcP->Charge()/tpcP->Pt(), phiIn);
1176 tpcP->GetImpactParameters(xy,z);
1177 fDiffDcaD->Fill(sdca+xy);
1179 if(fTrackType==2) fCompareTPCparam->Fill(z,tpcPin->GetTgl());
1181 //for positive particles
1183 if(tpcP->Charge()>0){
1184 fRecPtPos->Fill(tpcP->Pt());
1185 fRecPtPosLadder[cas]->Fill(tpcP->Pt());
1186 fRecPtPosVz->Fill(TMath::Log10(tpcP->Pt()),tpcP->Zv());
1187 fRecPhiPos->Fill(TMath::RadToDeg()*phiIn);
1190 fRecPhiPosLadder[cas]->Fill(TMath::RadToDeg()*phiIn);
1191 fRecPhiPosVz->Fill(TMath::RadToDeg()*phiIn,tpcP->Zv());
1192 fSignedDcaPosVz->Fill(sdca,tpcP->Zv());
1194 fRecEtaPos->Fill(tpcP->Eta());
1195 fRecEtaPosLadder[cas]->Fill(tpcP->Eta());
1196 fRecEtaPtPos->Fill(tpcP->Eta()/tpcP->Pt());
1197 fRecEtaPosVz->Fill(tpcP->Eta(),tpcP->Zv());
1198 fRecEtaPtPosVz->Fill(tpcP->Eta()/tpcP->Pt(),tpcP->Zv());
1200 fRecDcaPos->Fill(sdca);
1201 fRecDcaPosPhi->Fill(sdca, phiIn);
1202 fRecPtPosPhi->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1203 fRecEtaPtPosPhi->Fill(tpcP->Eta()/tpcP->Pt(), phiIn);
1204 fRecEtaPosPhi->Fill(tpcP->Eta(), phiIn);
1206 fSignDcaPos[cas]->Fill(sdca);
1209 fDcaSigmaPos[cas]->Fill(sdca, TMath::Log10(sigmapt));
1211 fPtSigmaPos[cas]->Fill(TMath::Log10(sigmapt));
1214 fRecPtPosEtaPos->Fill(tpcP->Pt());
1215 fRec1PtPosEtaPos->Fill(1/tpcP->Pt());
1216 fRecPhiPosEtaPos->Fill(phiIn);
1217 fRecDcaPosPhiEtaPos->Fill(sdca, phiIn);
1218 fRecDcaPosPtEtaPos->Fill(sdca, TMath::Log10(tpcP->Pt()));
1219 fRecPtPosPhiEtaPos->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1220 //fRecDcaPhiPtPosEtaPos->Fill(phiIn, tpcP->Pt(), sdca);
1224 fRecPtPosEtaNeg->Fill(tpcP->Pt());
1225 fRec1PtPosEtaNeg->Fill(1/tpcP->Pt());
1226 fRecPhiPosEtaNeg->Fill(phiIn);
1227 fRecDcaPosPhiEtaNeg->Fill(sdca, phiIn);
1228 fRecDcaPosPtEtaNeg->Fill(sdca, TMath::Log10(tpcP->Pt()));
1229 fRecPtPosPhiEtaNeg->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1230 //fRecDcaPhiPtPosEtaNeg->Fill(phiIn, tpcP->Pt(), sdca);
1234 //and negative particles
1236 fRecPtNeg->Fill(tpcP->Pt());
1237 fRecPtNegLadder[cas]->Fill(tpcP->Pt());
1238 fRecPtNegVz->Fill(TMath::Log10(tpcP->Pt()),tpcP->Zv());
1240 fRecPhiNeg->Fill(TMath::RadToDeg()*phiIn);
1241 fRecPhiNegLadder[cas]->Fill(TMath::RadToDeg()*phiIn);
1242 fRecPhiNegVz->Fill(TMath::RadToDeg()*phiIn,tpcP->Zv());
1243 fSignedDcaNegVz->Fill(sdca,tpcP->Zv());
1244 fRecEtaPtNegVz->Fill(tpcP->Eta()/tpcP->Pt(),tpcP->Zv());
1246 fRecEtaNeg->Fill(tpcP->Eta());
1247 fRecEtaNegLadder[cas]->Fill(tpcP->Eta());
1248 fRecEtaPtNeg->Fill(tpcP->Eta()/tpcP->Pt());
1249 fRecEtaNegVz->Fill(tpcP->Eta(),tpcP->Zv());
1251 fRecDcaNeg->Fill(sdca);
1252 fRecDcaNegInv->Fill(-sdca);
1253 fRecDcaNegPhi->Fill(sdca, phiIn);
1254 fRecPtNegPhi->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1255 fRecEtaNegPhi->Fill(tpcP->Eta(), phiIn);
1256 fRecEtaPtNegPhi->Fill(tpcP->Eta()/tpcP->Pt(), phiIn);
1258 fSignDcaNeg[cas]->Fill(sdca);
1259 fSignDcaNegInv[cas]->Fill(-sdca);
1262 fDcaSigmaNeg[cas]->Fill(sdca,TMath::Log10(sigmapt));
1264 fPtSigmaNeg[cas]->Fill(TMath::Log10(sigmapt));
1268 fRecPtNegEtaPos->Fill(tpcP->Pt());
1269 fRec1PtNegEtaPos->Fill(1/tpcP->Pt());
1270 fRecPhiNegEtaPos->Fill(phiIn);
1271 fRecDcaNegPhiEtaPos->Fill(sdca, phiIn);
1272 fRecDcaNegPtEtaPos->Fill(sdca, TMath::Log10(tpcP->Pt()));
1273 fRecPtNegPhiEtaPos->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1274 //fRecDcaPhiPtNegEtaPos->Fill(phiIn, tpcP->Pt(), sdca);
1278 fRecPtNegEtaNeg->Fill(tpcP->Pt());
1279 fRec1PtNegEtaNeg->Fill(1/tpcP->Pt());
1280 fRecPhiNegEtaNeg->Fill(phiIn);
1281 fRecDcaNegPhiEtaNeg->Fill(sdca, phiIn);
1282 fRecDcaNegPtEtaNeg->Fill(sdca, TMath::Log10(tpcP->Pt()));
1283 fRecPtNegPhiEtaNeg->Fill(TMath::Log10(tpcP->Pt()), phiIn);
1284 //fRecDcaPhiPtNegEtaNeg->Fill(phiIn, tpcP->Pt(), sdca);
1291 //all particles with positive eta
1293 fRecQPtPosEta->Fill(tpcP->Charge()/tpcP->Pt());
1294 fRecPtPosEta->Fill(tpcP->Pt());
1295 fRecPhiPosEta->Fill(TMath::RadToDeg()*phiIn);
1296 fRecQPtPosEtaVz->Fill(tpcP->Charge()/tpcP->Pt(),tpcP->Zv());
1297 fRecDcaPosEta->Fill(sdca);
1298 fRecDPosEta->Fill(xy);
1300 //all particles with negative eta (and eta==0)
1302 fRecQPtNegEta->Fill(tpcP->Charge()/tpcP->Pt());
1303 fRecPtNegEta->Fill(tpcP->Pt());
1304 fRecPhiNegEta->Fill(TMath::RadToDeg()*phiIn);
1305 fRecQPtNegEtaVz->Fill(tpcP->Charge()/tpcP->Pt(),tpcP->Zv());
1306 fRecDcaNegEta->Fill(sdca);
1307 fRecDNegEta->Fill(xy);
1312 fRecPtTpcSector[Int_t(phiIn*
1313 TMath::RadToDeg()/20)]->Fill(tpcP->Pt());
1314 fRecEtaTpcSector[Int_t(phiIn*
1315 TMath::RadToDeg()/20)]->Fill(tpcP->Eta());
1316 fSignedDcaTpcSector[Int_t(phiIn*
1317 TMath::RadToDeg()/20)]->Fill(sdca);
1318 fRecQPtTpcSector[Int_t(phiIn*
1319 TMath::RadToDeg()/20)]->Fill(tpcP->Charge()/tpcP->Pt());
1320 fRecEtaPtTpcSector[Int_t(phiIn*
1321 TMath::RadToDeg()/20)]->Fill(tpcP->Eta()/tpcP->Pt());
1325 // // another track loop
1326 // for (Int_t iTrack2 = 0; iTrack2 < event->GetNumberOfTracks(); iTrack2++) {
1328 // if(LeadingTrack==iTrack2) continue;
1330 // AliVParticle *track2 = event->GetTrack(iTrack2);
1331 // AliESDtrack* esdtrack2 = dynamic_cast<AliESDtrack*>(track2);
1333 // Printf("ERROR: Could not receive track %d", iTrack);
1336 // if (!fCuts->AcceptTrack(esdtrack2)) continue;
1337 // //propagate to dca
1338 // esdtrack2->PropagateToDCA(event->GetPrimaryVertex(),
1339 // event->GetMagneticField(), 10000.);
1341 // fDeltaPhiLeading->Fill((LeadingPhi-esdtrack2->Phi())*TMath::RadToDeg(),
1342 // LeadingPhi*TMath::RadToDeg() );
1346 // }//second track loop
1348 // if(fTrackType==2) delete tpcP; // delete in case of TPCOnlyTrack
1352 //prevent mem leak for TPConly track
1353 if(fTrackType==2&&tpcP){
1359 // Post output data.
1360 // PostData(1, fHistPt);
1361 PostData(1, fHists);
1368 //________________________________________________________________________
1369 void AliAnalysisTaskQASym::Terminate(Option_t *)