8 #include "TParticlePDG.h"
13 #include "AliAnalysisTask.h"
14 #include "AliAnalysisManager.h"
16 #include "AliESDEvent.h"
18 #include "AliESDVertex.h"
19 #include "AliESDInputHandler.h"
20 #include "AliESDtrackCuts.h"
21 #include "AliMultiplicity.h"
24 #include "AliAnalysisTaskQASym.h"
25 #include "AliExternalTrackParam.h"
26 #include "AliTrackReference.h"
28 #include "AliHeader.h"
29 #include "AliGenEventHeader.h"
30 #include "AliGenDPMjetEventHeader.h"
32 // Analysis Task for basic QA on the ESD
34 // Authors: Jan Fiete Grosse-Oetringhaus, Christian Klein-Boesing,
35 // Andreas Morsch, Eva Sicking
37 ClassImp(AliAnalysisTaskQASym)
39 //________________________________________________________________________
40 AliAnalysisTaskQASym::AliAnalysisTaskQASym(const char *name)
41 : AliAnalysisTaskSE(name)
110 for(Int_t i = 0;i<18;++i){
111 fRecPtTpcSector[i] = 0;
112 fRecEtaTpcSector[i] = 0;
113 fSignedDcaTpcSector[i] = 0;
114 fRecQPtTpcSector[i] = 0;
115 fRecEtaPtTpcSector[i] = 0;
118 for(Int_t i = 0;i< 7;++i){
119 fRecPtPosLadder[i] = 0;
120 fRecPtNegLadder[i] = 0;
121 fRecPhiPosLadder[i] = 0;
122 fRecPhiNegLadder[i] = 0;
123 fRecEtaPosLadder[i] = 0;
124 fRecEtaNegLadder[i] = 0;
127 fSignDcaNegInv[i] = 0;
135 DefineOutput(1, TList::Class());
142 //________________________________________________________________________
143 void AliAnalysisTaskQASym::UserCreateOutputObjects()
148 Double_t range = 300.;
151 fHists = new TList();
152 // test = new TNtuple("test","test",
153 // "pt:phi:theta:x:y:z:charge");
154 fHistRECpt = new TH1F("fHistRECpt",
157 fEta = new TH1F("fEta",
160 fEtaPhi = new TH2F("fEtaPhi",
162 200, -2., 2., 128, 0., 2. * TMath::Pi());
164 fThetaRec = new TH1F("fThetaRec",
166 180, 0., TMath::Pi());
167 fPhiRec = new TH1F("fPhiRec",
169 180, 0., 2*TMath::Pi());
170 fNumber = new TH1F("fNumber",
171 "number of tracks per event",
173 fVx = new TH1F("fVx",
176 fVy = new TH1F("fVy",
179 fVz = new TH1F("fVz",
183 fEtaPt = new TH1F("fEtaPt",
187 fQPt = new TH1F("fQPt",
191 fDca = new TH1F("fDca",
196 fqRec = new TH1F("fqRec",
197 " charge all reconstructed particle",
200 fsigmaPt = new TH1F("fsigmaPt",
201 "Log_{10}(#sigma_{p_{T}})",
208 for(Int_t ITSlayer_case=0;ITSlayer_case<7;ITSlayer_case++){
210 fSignDcaPos[ITSlayer_case] = new TH1F(Form("fSignDcaPos%d", ITSlayer_case),
213 fSignDcaPos[ITSlayer_case]->GetXaxis()->SetTitle("dca");
214 fSignDcaPos[ITSlayer_case]->GetYaxis()->SetTitle("");
217 fSignDcaNeg[ITSlayer_case] = new TH1F(Form("fSignDcaNeg%d", ITSlayer_case),
220 fSignDcaNeg[ITSlayer_case]->GetXaxis()->SetTitle("dca");
221 fSignDcaNeg[ITSlayer_case]->GetYaxis()->SetTitle("");
223 fSignDcaNegInv[ITSlayer_case] = new TH1F(Form("fSignDcaNegInv%d", ITSlayer_case),
224 " inverse Signed dca ",
226 fSignDcaNegInv[ITSlayer_case]->GetXaxis()->SetTitle("-dca");
227 fSignDcaNegInv[ITSlayer_case]->GetYaxis()->SetTitle("");
232 fPtSigmaPos[ITSlayer_case] = new TH1F(Form("fPtSigmaPos%d", ITSlayer_case),
235 fPtSigmaPos[ITSlayer_case]->GetXaxis()->SetTitle("Log_{10}(#sigma_{pT})");
236 fPtSigmaPos[ITSlayer_case]->GetYaxis()->SetTitle("");
239 fPtSigmaNeg[ITSlayer_case] = new TH1F(Form("fPtSigmaNeg%d",ITSlayer_case),
242 fPtSigmaNeg[ITSlayer_case]->GetXaxis()->SetTitle("Log_{10}(#sigma_{pT})");
243 fPtSigmaNeg[ITSlayer_case]->GetYaxis()->SetTitle("");
249 fqPtRec[ITSlayer_case] = new TH1F(Form("fqPtRec%d",ITSlayer_case),
252 fqPtRec[ITSlayer_case]->GetXaxis()->SetTitle("q_{tr}/p_{T, tr} (GeV/c)");
253 fqPtRec[ITSlayer_case]->GetYaxis()->SetTitle("");
259 fDcaSigmaPos[ITSlayer_case] = new TH2F(Form("fDcaSigmaPos%d", ITSlayer_case),
260 " p_{T} shift vs #sigma_{pT} ",
261 200, -range, range,200, -4., 4. );
262 fDcaSigmaPos[ITSlayer_case]->GetXaxis()->SetTitle("signed DCA)");
263 fDcaSigmaPos[ITSlayer_case]->GetYaxis()->SetTitle("log_{10}(#sigma_{pT})");
266 fDcaSigmaNeg[ITSlayer_case] = new TH2F(Form("fDcaSigmaNeg%d", ITSlayer_case),
267 " p_{T} shift vs #sigma_{pT} ",
268 200, -range, range,200, -4., 4. );
269 fDcaSigmaNeg[ITSlayer_case]->GetXaxis()->SetTitle("signed DCA");
270 fDcaSigmaNeg[ITSlayer_case]->GetYaxis()->SetTitle("log_{10}(#sigma_{pT})");
277 // YIELDs---------- positive and negative particles
279 fRecPtPos = new TH1F("fRecPtPos",
282 fRecPtPos->GetXaxis()->SetTitle("p_{T} (GeV/c)");
283 fRecPtNeg = new TH1F("fRecPtNeg",
286 fRecPtNeg->GetXaxis()->SetTitle("p_{T} (GeV/c)");
289 fRecPhiPos = new TH1F("fRecPhiPos",
292 fRecPhiPos->GetXaxis()->SetTitle("#phi (deg)");
294 fRecPhiNeg = new TH1F("fRecPhiNeg",
297 fRecPhiNeg->GetXaxis()->SetTitle("#phi (deg)");
299 fRecEtaPos = new TH1F("fRecEtaPos",
302 fRecEtaPos->GetXaxis()->SetTitle("#eta");
304 fRecEtaNeg = new TH1F("fRecEtaNeg",
307 fRecEtaNeg->GetXaxis()->SetTitle("#eta");
309 fRecEtaPtPos = new TH1F("fRecEtaPtPos",
312 fRecEtaPtPos->GetXaxis()->SetTitle("#eta/p_{T}");
314 fRecEtaPtNeg = new TH1F("fRecEtaPtNeg",
317 fRecEtaPtNeg->GetXaxis()->SetTitle("#eta/p_{T}");
319 fRecDcaPos = new TH1F("fRecDcaPos",
322 fRecDcaPos->GetXaxis()->SetTitle("dca (cm)");
323 fRecDcaNeg = new TH1F("fRecDcaNeg",
326 fRecDcaNeg->GetXaxis()->SetTitle("dca (cm)");
328 fRecDcaNegInv = new TH1F("fRecDcaNegInv",
331 fRecDcaNegInv->GetXaxis()->SetTitle("dca (cm)");
334 fRecDPos = new TH1F("fRecDPos",
337 fRecDPos->GetXaxis()->SetTitle("d (cm)");
338 fRecDNeg = new TH1F("fRecDNeg",
341 fRecDNeg->GetXaxis()->SetTitle("d (cm)");
344 // YIELDs ---------------- positive and negative eta
347 fRecQPtPosEta = new TH1F("fRecQPtPosEta",
350 fRecQPtPosEta->GetXaxis()->SetTitle("q/p_{T} ");
352 fRecQPtNegEta = new TH1F("fRecQPtNegEta",
355 fRecQPtNegEta->GetXaxis()->SetTitle("q/p_{T}");
357 fRecPtPosEta = new TH1F("fRecPtPosEta",
360 fRecPtPosEta->GetXaxis()->SetTitle("p_{T} (GeV/c)");
362 fRecPtNegEta = new TH1F("fRecPtNegEta",
365 fRecPtNegEta->GetXaxis()->SetTitle("p_{T} (GeV/c)");
367 fRecPhiPosEta = new TH1F("fRecPhiPosEta",
370 fRecPhiPosEta->GetXaxis()->SetTitle("#phi (deg)");
372 fRecPhiNegEta = new TH1F("fRecPhiNegEta",
375 fRecPhiNegEta->GetXaxis()->SetTitle("#phi (deg)");
377 fRecDcaPosEta = new TH1F("fRecDcaPosEta",
380 fRecDcaPosEta->GetXaxis()->SetTitle("dca (cm)");
381 fRecDcaNegEta = new TH1F("fRecDcaNegEta",
384 fRecDcaNegEta->GetXaxis()->SetTitle("dca (cm)");
386 fRecDPosEta = new TH1F("fRecDPosEta",
389 fRecDPosEta->GetXaxis()->SetTitle("d (cm)");
390 fRecDNegEta = new TH1F("fRecDNegEta",
393 fRecDNegEta->GetXaxis()->SetTitle("d (cm)");
397 // YIELDs ---------------- for TPC sectors
398 for(Int_t sector=0; sector<18;sector++){
401 fRecPtTpcSector[sector] = new TH1F(Form("fRecPtTpcSector%02d",sector),
402 Form("p_{T} distribution: TPC sector %d",
403 sector),100, 0., pt);
404 fRecPtTpcSector[sector]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
406 fRecEtaTpcSector[sector] = new TH1F(Form("fRecEtaTpcSector%02d",sector),
407 Form("#eta distribution: TPC sector %d",
408 sector),200, -2., 2.);
409 fRecEtaTpcSector[sector]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
412 fSignedDcaTpcSector[sector] = new TH1F(Form("fSignedDcaTpcSector%02d",sector),
413 Form("dca distribution: TPC sector %d",
414 sector),200, -range, range );
415 fSignedDcaTpcSector[sector]->GetXaxis()->SetTitle("dca");
417 fRecQPtTpcSector[sector] = new TH1F(Form("fRecQPtTpcSector%02d",sector),
418 Form("Q/ p_{T} distribution: TPC sector %d",
419 sector),100, -1., 1.);
420 fRecQPtTpcSector[sector]->GetXaxis()->SetTitle("Q/p_{T} (GeV/c)");
422 fRecEtaPtTpcSector[sector] = new TH1F(Form("fRecEtaPtTpcSector%02d",sector),
423 Form("#eta/ p_{T} distribution: TPC sector %d",
424 sector),100, -1., 1.);
425 fRecEtaPtTpcSector[sector]->GetXaxis()->SetTitle("#eta/p_{T} (GeV/c)");
429 for(Int_t i=0;i<7;i++){
430 fRecPtPosLadder[i] = new TH1F(Form("fRecPtPosLadder%d", i),
431 " p_{T} distribution",
433 fRecPtPosLadder[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
434 fRecPtNegLadder[i] = new TH1F(Form("fRecPtNegLadder%d",i),
435 " p_{T} distribution ",
437 fRecPtNegLadder[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
440 fRecPhiPosLadder[i] = new TH1F(Form("fRecPhiPosLadder%d",i),
441 "#phi distribution: all pos eta",
443 fRecPhiPosLadder[i]->GetXaxis()->SetTitle("#phi (deg)");
445 fRecPhiNegLadder[i] = new TH1F(Form("fRecPhiNegLadder%d", i),
446 "#phi distribution: all neg eta",
448 fRecPhiNegLadder[i]->GetXaxis()->SetTitle("#phi (deg)");
452 fRecEtaPosLadder[i] = new TH1F(Form("fRecEtaPosLadder%d",i),
455 fRecEtaPosLadder[i]->GetXaxis()->SetTitle("#eta)");
457 fRecEtaNegLadder[i] = new TH1F(Form("fRecEtaNegLadder%d", i),
460 fRecEtaNegLadder[i]->GetXaxis()->SetTitle("#eta");
465 fRecPtPosVz = new TH2F("fRecPtPosVz",
466 "p_{T} distribution vs Vz()",
467 100, -1., 2., 200,-vzmax,vzmax);
468 fRecPtPosVz->GetXaxis()->SetTitle("log_{10}(p_{T})");
470 fRecPtNegVz = new TH2F("fRecPtNegVz",
471 "p_{T} distribution vs Vz()",
472 100, -1., 2.,200,-vzmax,vzmax);
473 fRecPtNegVz->GetXaxis()->SetTitle("Log_{10}(p_{T})");
476 fRecEtaPosVz= new TH2F("fRecEtaPosVz",
477 "#eta distribution vs Vz()",
478 100, -2., 2., 200,-vzmax,vzmax);
479 fRecEtaPosVz->GetXaxis()->SetTitle("#eta");
480 fRecEtaNegVz = new TH2F("fRecEtaNegVz",
481 "#eta distribution vs Vz()",
482 100, -2., 2.,200,-vzmax,vzmax);
483 fRecEtaNegVz->GetXaxis()->SetTitle("#eta");
485 fRecPhiPosVz= new TH2F("fRecPhiPosVz",
486 "#eta distribution vs Vz()",
487 361, 0., 360., 200,-vzmax,vzmax);
488 fRecPhiPosVz->GetXaxis()->SetTitle("#phi (deg)");
489 fRecPhiNegVz = new TH2F("fRecPhiNegVz",
491 361, 0., 360.,200,-vzmax,vzmax);
492 fRecPhiNegVz->GetXaxis()->SetTitle("#phi (deg)");
494 fSignedDcaPosVz= new TH2F("fSignedDcaPosVz",
495 "#eta distribution vs Vz()",
496 200, -range, range, 200,-vzmax,vzmax);
497 fSignedDcaPosVz->GetXaxis()->SetTitle("dca (cm)");
498 fSignedDcaNegVz = new TH2F("fSignedDcaNegVz",
500 200, -range, range,200,-vzmax,vzmax);
501 fSignedDcaNegVz->GetXaxis()->SetTitle("dca (cm)");
503 fRecQPtPosEtaVz= new TH2F("fRecQPtPosEtaVz",
504 " Q/p_{T} distribution vs Vz()",
505 100, -1., 1., 200,-vzmax,vzmax);
506 fRecQPtPosEtaVz->GetXaxis()->SetTitle("Q/p_{T}");
507 fRecQPtNegEtaVz = new TH2F("fRecQPtNegEtaVz",
508 " Q/p_{T} distribution vs Vz()",
509 100, -1., 1.,200,-vzmax,vzmax);
510 fRecQPtNegEtaVz->GetXaxis()->SetTitle("Q/p_{T}");
513 fRecEtaPtPosVz= new TH2F("fRecEtaPtPosVz",
514 " #eta/p_{T} distribution vs Vz()",
515 100, -1., 1., 200,-vzmax,vzmax);
516 fRecEtaPtPosVz->GetXaxis()->SetTitle("#eta/p_{T");
517 fRecEtaPtNegVz = new TH2F("fRecEtaPtNegVz",
518 " #eta/p_{T} distribution vs Vz()",
519 100, -1., 1.,200,-vzmax,vzmax);
520 fRecEtaPtNegVz->GetXaxis()->SetTitle("#eta/p_{T}");
523 fDeltaPhiAll = new TH1F("fDeltaPhiAll",
524 " #Delta #phi",200,-360,360);
525 fDeltaPhiAll->GetXaxis()->SetTitle("#Delta #phi");
528 fDeltaPhiLeading = new TH2F("fDeltaPhiLeading",
529 " #Delta #phi",361,-360,360, 361,0, 360);
530 fDeltaPhiLeading->GetXaxis()->SetTitle("#Delta #phi (deg.)");
531 fDeltaPhiLeading->GetYaxis()->SetTitle("#phi_{leading particle} (deg.)");
533 fDiffDcaD = new TH1F("fDiffDcaD",
541 fHists->Add(fHistRECpt);
543 fHists->Add(fEtaPhi);
544 fHists->Add(fThetaRec);
545 fHists->Add(fPhiRec);
546 fHists->Add(fNumber);
555 fHists->Add(fDeltaPhiAll);
556 fHists->Add(fDeltaPhiLeading);
557 fHists->Add(fDiffDcaD);
560 fHists->Add(fsigmaPt);
562 fHists->Add(fRecPtPos);
563 fHists->Add(fRecPtNeg);
564 fHists->Add(fRecPhiPos);
565 fHists->Add(fRecPhiNeg);
566 fHists->Add(fRecEtaPos);
567 fHists->Add(fRecEtaNeg);
568 fHists->Add(fRecEtaPtPos);
569 fHists->Add(fRecEtaPtNeg);
570 fHists->Add(fRecDcaPos);
571 fHists->Add(fRecDcaNeg);
572 fHists->Add(fRecDcaNegInv);
573 fHists->Add(fRecDPos);
574 fHists->Add(fRecDNeg);
577 fHists->Add(fRecQPtPosEta);
578 fHists->Add(fRecQPtNegEta);
579 fHists->Add(fRecPtPosEta);
580 fHists->Add(fRecPtNegEta);
581 fHists->Add(fRecPhiPosEta);
582 fHists->Add(fRecPhiNegEta);
583 fHists->Add(fRecDcaPosEta);
584 fHists->Add(fRecDcaNegEta);
585 fHists->Add(fRecDPosEta);
586 fHists->Add(fRecDNegEta);
589 for(Int_t i=0;i<18;i++){
590 fHists->Add(fRecPtTpcSector[i]);
591 fHists->Add(fRecEtaTpcSector[i]);
592 fHists->Add(fSignedDcaTpcSector[i]);
593 fHists->Add(fRecQPtTpcSector[i]);
594 fHists->Add(fRecEtaPtTpcSector[i]);
597 for(Int_t i=0;i<7;i++){
598 fHists->Add(fRecPtPosLadder[i]);
599 fHists->Add(fRecPtNegLadder[i]);
600 fHists->Add(fRecPhiPosLadder[i]);
601 fHists->Add(fRecPhiNegLadder[i]);
602 fHists->Add(fRecEtaPosLadder[i]);
603 fHists->Add(fRecEtaNegLadder[i]);
606 fHists->Add(fRecPtPosVz);
607 fHists->Add(fRecPtNegVz);
608 fHists->Add(fRecEtaPosVz);
609 fHists->Add(fRecEtaNegVz);
610 fHists->Add(fRecPhiPosVz);
611 fHists->Add(fRecPhiNegVz);
612 fHists->Add(fSignedDcaPosVz);
613 fHists->Add(fSignedDcaNegVz);
614 fHists->Add(fRecQPtPosEtaVz);
615 fHists->Add(fRecQPtNegEtaVz);
616 fHists->Add(fRecEtaPtPosVz);
617 fHists->Add(fRecEtaPtNegVz);
620 for(Int_t i=0;i<7;i++){
621 fHists->Add(fSignDcaPos[i]);
622 fHists->Add(fSignDcaNeg[i]);
623 fHists->Add(fSignDcaNegInv[i]);
625 fHists->Add(fPtSigmaPos[i]);
626 fHists->Add(fPtSigmaNeg[i]);
627 fHists->Add(fqPtRec[i]);
629 fHists->Add(fDcaSigmaPos[i]);
630 fHists->Add(fDcaSigmaNeg[i]);
637 for (Int_t i=0; i<fHists->GetEntries(); ++i) {
638 TH1 *h1 = dynamic_cast<TH1*>(fHists->At(i));
640 // Printf("%s ",h1->GetName());
649 //__________________________________________________________
651 void AliAnalysisTaskQASym::UserExec(Option_t *)
653 printf("I'm here \n");
654 AliVEvent *event = InputEvent();
656 Printf("ERROR: Could not retrieve event");
662 AliESDEvent* esd = dynamic_cast<AliESDEvent*>(event);
664 Printf("We are reading from ESD");
669 Printf("There are %d tracks in this event", event->GetNumberOfTracks());
672 Int_t LeadingTrack = 0;
673 Float_t LeadingEnergy = -20.;
674 Float_t LeadingPhi = 0;//TMath::Pi();
677 if(event->GetNumberOfTracks()!=0) fNumber->Fill(event->GetNumberOfTracks());
679 const AliVVertex* vertex = event->GetPrimaryVertex();
680 Float_t vz = vertex->GetZ();
681 if (TMath::Abs(vz) > 10.) return;
683 for (Int_t iTrack = 0; iTrack < event->GetNumberOfTracks(); iTrack++) {
686 AliVParticle *track = event->GetTrack(iTrack);
687 AliESDtrack *esdtrack = dynamic_cast<AliESDtrack*>(track);
689 Printf("ERROR: Could not receive track %d", iTrack);
693 if (!fCuts->AcceptTrack(esdtrack)) continue;
694 //const AliExternalTrackParam * tpcP = esdtrack->GetTPCInnerParam();
695 const AliExternalTrackParam * tpcP = esdtrack;
699 if (tpcP->Pt() > 50.) {
700 printf("%5d %5d %13.3f %13.3f \n", event->GetPeriodNumber(), event->GetOrbitNumber(),
701 tpcP->Pt(), esdtrack->Pt());
705 if(tpcP->E()>LeadingEnergy){
707 LeadingEnergy=tpcP->E();
708 LeadingPhi=tpcP->Phi();
715 esdtrack->PropagateToDCA(event->GetPrimaryVertex(),
716 event->GetMagneticField(), 10000.);
719 // if(tpcP->Pt()<2.)continue;
722 fqRec->Fill(tpcP->Charge());
725 Double_t sigmapt = tpcP->GetSigma1Pt2();
726 sigmapt= sqrt(sigmapt);
727 sigmapt= sigmapt *(tpcP->Pt()*tpcP->Pt());
729 if(sigmapt == 0.)continue;
730 fsigmaPt->Fill(TMath::Log10(sigmapt));
740 if(esdtrack->HasPointOnITSLayer(0))
742 else if(!esdtrack->HasPointOnITSLayer(0)
743 && esdtrack->HasPointOnITSLayer(1))
745 else if(!esdtrack->HasPointOnITSLayer(0)
746 && !esdtrack->HasPointOnITSLayer(1)
747 && esdtrack->HasPointOnITSLayer(2))
749 else if(!esdtrack->HasPointOnITSLayer(0)
750 && !esdtrack->HasPointOnITSLayer(1)
751 && !esdtrack->HasPointOnITSLayer(2)
752 && esdtrack->HasPointOnITSLayer(3))
754 else if(!esdtrack->HasPointOnITSLayer(0)
755 && !esdtrack->HasPointOnITSLayer(1)
756 && !esdtrack->HasPointOnITSLayer(2)
757 && !esdtrack->HasPointOnITSLayer(3)
758 && esdtrack->HasPointOnITSLayer(4))
760 else if( !esdtrack->HasPointOnITSLayer(0)
761 && !esdtrack->HasPointOnITSLayer(1)
762 && !esdtrack->HasPointOnITSLayer(2)
763 && !esdtrack->HasPointOnITSLayer(3)
764 && !esdtrack->HasPointOnITSLayer(4)
765 && esdtrack->HasPointOnITSLayer(5))
772 //-------------------
774 sdca_tr = (tpcP->Py()*tpcP->Xv()
775 - tpcP->Px()*tpcP->Yv())/tpcP->Pt();
779 fqPtRec[cas]->Fill(tpcP->Charge()/tpcP->Pt());
782 // test->Fill(tpcP->Pt(),tpcP->Phi(), tpcP->Theta(),
783 // tpcP->Xv(),tpcP->Yv(), tpcP->Zv(), tpcP->Charge());
784 fHistRECpt->Fill(tpcP->Pt());
785 fEta->Fill(tpcP->Eta());
786 fThetaRec->Fill(tpcP->Theta());
787 fPhiRec->Fill(tpcP->Phi());
788 fVx->Fill(tpcP->Xv());
789 fVy->Fill(tpcP->Yv());
790 fVz->Fill(tpcP->Zv());
793 fEtaPt->Fill(tpcP->Eta()/tpcP->Pt());
794 fQPt->Fill(tpcP->Charge()/tpcP->Pt());
800 esdtrack->GetImpactParameters(xy,z);
801 fDiffDcaD->Fill(sdca_tr+xy);
804 //for positive particles
805 if(tpcP->Charge()>0){
806 fRecPtPos->Fill(tpcP->Pt());
807 fRecPtPosLadder[cas]->Fill(tpcP->Pt());
808 fRecPtPosVz->Fill(TMath::Log10(tpcP->Pt()),tpcP->Zv());
809 fRecPhiPos->Fill(TMath::RadToDeg()*tpcP->Phi());
812 fRecPhiPosLadder[cas]->Fill(TMath::RadToDeg()*tpcP->Phi());
813 fRecPhiPosVz->Fill(TMath::RadToDeg()*tpcP->Phi(),tpcP->Zv());
814 fSignedDcaPosVz->Fill(sdca_tr,tpcP->Zv());
816 fRecEtaPos->Fill(tpcP->Eta());
817 fRecEtaPosLadder[cas]->Fill(tpcP->Eta());
818 fRecEtaPtPos->Fill(tpcP->Eta()/tpcP->Pt());
819 fRecEtaPosVz->Fill(tpcP->Eta(),tpcP->Zv());
820 fRecEtaPtPosVz->Fill(tpcP->Eta()/tpcP->Pt(),tpcP->Zv());
822 fRecDcaPos->Fill(sdca_tr);
824 fSignDcaPos[cas]->Fill(sdca_tr);
827 fDcaSigmaPos[cas]->Fill(sdca_tr, TMath::Log10(sigmapt));
829 fPtSigmaPos[cas]->Fill(TMath::Log10(sigmapt));
831 //and negative particles
833 fRecPtNeg->Fill(tpcP->Pt());
834 fRecPtNegLadder[cas]->Fill(tpcP->Pt());
835 fRecPtNegVz->Fill(TMath::Log10(tpcP->Pt()),tpcP->Zv());
837 fRecPhiNeg->Fill(TMath::RadToDeg()*tpcP->Phi());
838 fRecPhiNegLadder[cas]->Fill(TMath::RadToDeg()*tpcP->Phi());
839 fRecPhiNegVz->Fill(TMath::RadToDeg()*tpcP->Phi(),tpcP->Zv());
840 fSignedDcaNegVz->Fill(sdca_tr,tpcP->Zv());
841 fRecEtaPtNegVz->Fill(tpcP->Eta()/tpcP->Pt(),tpcP->Zv());
843 fRecEtaNeg->Fill(tpcP->Eta());
844 fRecEtaNegLadder[cas]->Fill(tpcP->Eta());
845 fRecEtaPtNeg->Fill(tpcP->Eta()/tpcP->Pt());
846 fRecEtaNegVz->Fill(tpcP->Eta(),tpcP->Zv());
848 fRecDcaNeg->Fill(sdca_tr);
849 fRecDcaNegInv->Fill(-sdca_tr);
851 fSignDcaNeg[cas]->Fill(sdca_tr);
852 fSignDcaNegInv[cas]->Fill(-sdca_tr);
855 fDcaSigmaNeg[cas]->Fill(sdca_tr,TMath::Log10(sigmapt));
857 fPtSigmaNeg[cas]->Fill(TMath::Log10(sigmapt));
862 //all particles with positive eta
864 fRecQPtPosEta->Fill(tpcP->Charge()/tpcP->Pt());
865 fRecPtPosEta->Fill(tpcP->Pt());
866 fRecPhiPosEta->Fill(TMath::RadToDeg()*tpcP->Phi());
867 fRecQPtPosEtaVz->Fill(tpcP->Charge()/tpcP->Pt(),tpcP->Zv());
868 fRecDcaPosEta->Fill(sdca_tr);
869 fRecDPosEta->Fill(xy);
871 //all particles with negative eta (and eta==0)
873 fRecQPtNegEta->Fill(tpcP->Charge()/tpcP->Pt());
874 fRecPtNegEta->Fill(tpcP->Pt());
875 fRecPhiNegEta->Fill(TMath::RadToDeg()*tpcP->Phi());
876 fRecQPtNegEtaVz->Fill(tpcP->Charge()/tpcP->Pt(),tpcP->Zv());
877 fRecDcaNegEta->Fill(sdca_tr);
878 fRecDNegEta->Fill(xy);
883 //spectren detected by TPC sectors
884 //pt cut on 1 GeV/c ?!
885 // if(tpcP->Pt()<1.) continue;
886 fRecPtTpcSector[Int_t(tpcP->Phi()*
887 TMath::RadToDeg()/20)]->Fill(tpcP->Pt());
888 fRecEtaTpcSector[Int_t(tpcP->Phi()*
889 TMath::RadToDeg()/20)]->Fill(tpcP->Eta());
890 fSignedDcaTpcSector[Int_t(tpcP->Phi()*
891 TMath::RadToDeg()/20)]->Fill(sdca_tr);
892 fRecQPtTpcSector[Int_t(tpcP->Phi()*
893 TMath::RadToDeg()/20)]->Fill(tpcP->Charge()/tpcP->Pt());
894 fRecEtaPtTpcSector[Int_t(tpcP->Phi()*
895 TMath::RadToDeg()/20)]->Fill(tpcP->Eta()/tpcP->Pt());
902 // another track loop
903 for (Int_t iTrack2 = 0; iTrack2 < event->GetNumberOfTracks(); iTrack2++) {
905 if(LeadingTrack==iTrack2) continue;
907 AliVParticle *track2 = event->GetTrack(iTrack2);
908 AliESDtrack* esdtrack2 = dynamic_cast<AliESDtrack*>(track2);
910 Printf("ERROR: Could not receive track %d", iTrack);
913 if (!fCuts->AcceptTrack(esdtrack2)) continue;
915 esdtrack2->PropagateToDCA(event->GetPrimaryVertex(),
916 event->GetMagneticField(), 10000.);
918 fDeltaPhiLeading->Fill((LeadingPhi-esdtrack2->Phi())*TMath::RadToDeg(),
919 LeadingPhi*TMath::RadToDeg() );
930 // PostData(1, fHistPt);
938 //________________________________________________________________________
939 void AliAnalysisTaskQASym::Terminate(Option_t *)