#include "TChain.h" #include "TTree.h" #include "TH1F.h" #include "TH2F.h" #include "TH3F.h" #include "TCanvas.h" #include "TList.h" #include "TParticle.h" #include "TParticlePDG.h" #include "TProfile.h" #include "TNtuple.h" #include "TFile.h" #include "AliAnalysisTask.h" #include "AliAnalysisManager.h" #include "AliESDEvent.h" #include "AliLog.h" #include "AliESDVertex.h" #include "AliESDInputHandler.h" #include "AliESDtrackCuts.h" #include "AliMultiplicity.h" #include "AliAnalysisTaskQASym.h" #include "AliExternalTrackParam.h" #include "AliTrackReference.h" #include "AliHeader.h" #include "AliGenEventHeader.h" #include "AliGenDPMjetEventHeader.h" // Analysis Task for basic QA on the ESD // Authors: Jan Fiete Grosse-Oetringhaus, Christian Klein-Boesing, // Andreas Morsch, Eva Sicking ClassImp(AliAnalysisTaskQASym) //________________________________________________________________________ AliAnalysisTaskQASym::AliAnalysisTaskQASym(const char *name) : AliAnalysisTaskSE(name) ,fTrackType(0) ,fStandAlone(0) ,fFieldOn(kTRUE) ,fHists(0) ,fHistRECpt(0) ,fEta(0) ,fEtaPhi(0) ,fEtaPt(0) ,fQPt(0) ,fDca(0) ,fqRec(0) ,fsigmaPt(0) ,fRecPtPos(0) ,fRecPtNeg(0) ,fRecPhiPos(0) ,fRecPhiNeg(0) ,fRecEtaPos(0) ,fRecEtaNeg(0) ,fRecEtaPtPos(0) ,fRecEtaPtNeg(0) ,fRecDcaPos(0) ,fRecDcaNeg(0) ,fRecDcaNegInv(0) ,fRecDPos(0) ,fRecDNeg(0) ,fRecQPtPosEta(0) ,fRecQPtNegEta(0) ,fRecPtPosEta(0) ,fRecPtNegEta(0) ,fRecPhiPosEta(0) ,fRecPhiNegEta(0) ,fRecDcaPosEta(0) ,fRecDcaNegEta(0) ,fRecDPosEta(0) ,fRecDNegEta(0) ,fRecPtPosVz(0) ,fRecPtNegVz(0) ,fRecEtaPosVz(0) ,fRecEtaNegVz(0) ,fRecPhiPosVz(0) ,fRecPhiNegVz(0) ,fSignedDcaPosVz(0) ,fSignedDcaNegVz(0) ,fRecQPtPosEtaVz(0) ,fRecQPtNegEtaVz(0) ,fRecEtaPtPosVz(0) ,fRecEtaPtNegVz(0) ,fDeltaPhiAll(0) ,fDeltaPhiLeading(0) ,fDiffDcaD(0) ,fPhiRec(0) ,fThetaRec(0) ,fNumber(0) ,fVx(0) ,fVy(0) ,fVz(0) ,fVertexX(0) ,fVertexY(0) ,fVertexZ(0) ,fRecDcaPosPhi(0) ,fRecDcaNegPhi(0) ,fRecPtPosPhi(0) ,fRecPtNegPhi(0) ,fRecEtaPosPhi(0) ,fRecEtaNegPhi(0) ,fRecQPtPhi(0) ,fRecEtaPtPosPhi(0) ,fRecEtaPtNegPhi(0) ,fRecPtPosEtaPos(0) ,fRecPtNegEtaPos(0) ,fRecPtPosEtaNeg(0) ,fRecPtNegEtaNeg(0) ,fRec1PtPosEtaPos(0) ,fRec1PtNegEtaPos(0) ,fRec1PtPosEtaNeg(0) ,fRec1PtNegEtaNeg(0) ,fRecPhiPosEtaPos(0) ,fRecPhiNegEtaPos(0) ,fRecPhiPosEtaNeg(0) ,fRecPhiNegEtaNeg(0) ,fRecDcaPosPhiEtaPos(0) ,fRecDcaNegPhiEtaPos(0) ,fRecDcaPosPhiEtaNeg(0) ,fRecDcaNegPhiEtaNeg(0) ,fRecDcaPosPtEtaPos(0) ,fRecDcaNegPtEtaPos(0) ,fRecDcaPosPtEtaNeg(0) ,fRecDcaNegPtEtaNeg(0) ,fRecPtPosPhiEtaPos(0) ,fRecPtNegPhiEtaPos(0) ,fRecPtPosPhiEtaNeg(0) ,fRecPtNegPhiEtaNeg(0) // ,fRecDcaPhiPtPosEtaPos(0) // ,fRecDcaPhiPtNegEtaPos(0) // ,fRecDcaPhiPtPosEtaNeg(0) // ,fRecDcaPhiPtNegEtaNeg(0) ,fEtavPt(0) ,fCompareTPCparam(0) ,fITSlayer(0) ,fCuts(0) { // Constructor for(Int_t i = 0;i<18;++i){ fRecPtTpcSector[i] = 0; fRecEtaTpcSector[i] = 0; fSignedDcaTpcSector[i] = 0; fRecQPtTpcSector[i] = 0; fRecEtaPtTpcSector[i] = 0; } for(Int_t i = 0;i< 7;++i){ fRecPtPosLadder[i] = 0; fRecPtNegLadder[i] = 0; fRecPhiPosLadder[i] = 0; fRecPhiNegLadder[i] = 0; fRecEtaPosLadder[i] = 0; fRecEtaNegLadder[i] = 0; fSignDcaPos[i] = 0; fSignDcaNeg[i] = 0; fSignDcaNegInv[i] = 0; fPtSigmaPos[i] =0; fPtSigmaNeg[i] =0; fqPtRec[i] =0; fDcaSigmaPos[i] =0; fDcaSigmaNeg[i] =0; } DefineOutput(1, TList::Class()); } //________________________________________________________________________ void AliAnalysisTaskQASym::UserCreateOutputObjects() { // Create histograms // Called once Bool_t oldStatus = TH1::AddDirectoryStatus(); TH1::AddDirectory(kFALSE); Double_t range = 0.3; Double_t pt = 20.; fHists = new TList(); fHistRECpt = new TH1F("fHistRECpt", " p_{T}", 200, 0., pt); fEta = new TH1F("fEta", " #eta", 200, -2., 2.); fEtavPt = new TH2F("fEtavPt", " #eta -p_{T}", 200, -2., 2., 100, 0, 1.5); fCompareTPCparam = new TH2F("fCompareTPCparam", "fCompareTPCparam", 100, -1., 1.,100,-5, 5); fITSlayer = new TH1F("fITslayer", "fITslayer", 8, -1.5, 6.5); fEtaPhi = new TH2F("fEtaPhi", " #eta - #phi", 200, -2., 2., 128, 0., 2. * TMath::Pi()); fThetaRec = new TH1F("fThetaRec", " #theta", 180, 0., TMath::Pi()); fPhiRec = new TH1F("fPhiRec", " #phi", 180, 0., 2*TMath::Pi()); fNumber = new TH1F("fNumber", "number of tracks per event", 200, -0.5, 199.5); fVx = new TH1F("fVx", "X of first track point", 100, -1., 1.); fVy = new TH1F("fVy", "Y of first track point", 100, -1., 1.); fVz = new TH1F("fVz", "Z of first track point", 200, -50., 50.); fVertexX = new TH1F("fVertexX", "X of vertex", 100, -1., 1.); fVertexY = new TH1F("fVertexY", "Y of vertex", 100, -1., 1.); fVertexZ = new TH1F("fVertexZ", "Z of vertex", 200, -50., 50.); fEtaPt = new TH1F("fEtaPt", " #eta/p_{T} ", 100, -1., 1.); fQPt = new TH1F("fQPt", " charge/p_{T} ", 100, -1., 1.); fDca = new TH1F("fDca", " dca ", 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9)); fqRec = new TH1F("fqRec", " charge all reconstructed particle", 21, -9.5, 10.5); fsigmaPt = new TH1F("fsigmaPt", "Log_{10}(#sigma_{p_{T}})", 200, -4., 8.); //------------ for(Int_t ITSlayer_case=0;ITSlayer_case<7;ITSlayer_case++){ fSignDcaPos[ITSlayer_case] = new TH1F(Form("fSignDcaPos%d", ITSlayer_case), " Signed dca", 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9)); fSignDcaPos[ITSlayer_case]->GetXaxis()->SetTitle("dca"); fSignDcaPos[ITSlayer_case]->GetYaxis()->SetTitle(""); fSignDcaNeg[ITSlayer_case] = new TH1F(Form("fSignDcaNeg%d", ITSlayer_case), " Signed dcas", 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9)); fSignDcaNeg[ITSlayer_case]->GetXaxis()->SetTitle("dca"); fSignDcaNeg[ITSlayer_case]->GetYaxis()->SetTitle(""); fSignDcaNegInv[ITSlayer_case] = new TH1F(Form("fSignDcaNegInv%d", ITSlayer_case), " inverse Signed dca ", 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9)); fSignDcaNegInv[ITSlayer_case]->GetXaxis()->SetTitle("-dca"); fSignDcaNegInv[ITSlayer_case]->GetYaxis()->SetTitle(""); fPtSigmaPos[ITSlayer_case] = new TH1F(Form("fPtSigmaPos%d", ITSlayer_case), " #sigma_{pT} ", 208, -4., 8.); fPtSigmaPos[ITSlayer_case]->GetXaxis()->SetTitle("Log_{10}(#sigma_{pT})"); fPtSigmaPos[ITSlayer_case]->GetYaxis()->SetTitle(""); fPtSigmaNeg[ITSlayer_case] = new TH1F(Form("fPtSigmaNeg%d",ITSlayer_case), " #sigma_{pT}", 208, -4., 8.); fPtSigmaNeg[ITSlayer_case]->GetXaxis()->SetTitle("Log_{10}(#sigma_{pT})"); fPtSigmaNeg[ITSlayer_case]->GetYaxis()->SetTitle(""); fqPtRec[ITSlayer_case] = new TH1F(Form("fqPtRec%d",ITSlayer_case), "q/ p_{T}", 200, -100., 100.); fqPtRec[ITSlayer_case]->GetXaxis()->SetTitle("q_{tr}/p_{T, tr} (GeV/c)"); fqPtRec[ITSlayer_case]->GetYaxis()->SetTitle(""); fDcaSigmaPos[ITSlayer_case] = new TH2F(Form("fDcaSigmaPos%d", ITSlayer_case), " p_{T} shift vs #sigma_{pT} ", 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9),200, -4., 4. ); fDcaSigmaPos[ITSlayer_case]->GetXaxis()->SetTitle("signed DCA)"); fDcaSigmaPos[ITSlayer_case]->GetYaxis()->SetTitle("log_{10}(#sigma_{pT})"); fDcaSigmaNeg[ITSlayer_case] = new TH2F(Form("fDcaSigmaNeg%d", ITSlayer_case), " p_{T} shift vs #sigma_{pT} ", 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9),200, -4., 4. ); fDcaSigmaNeg[ITSlayer_case]->GetXaxis()->SetTitle("signed DCA"); fDcaSigmaNeg[ITSlayer_case]->GetYaxis()->SetTitle("log_{10}(#sigma_{pT})"); } // YIELDs---------- positive and negative particles fRecPtPos = new TH1F("fRecPtPos", " p_{T}", 100, 0.,pt); fRecPtPos->GetXaxis()->SetTitle("p_{T} (GeV/c)"); fRecPtNeg = new TH1F("fRecPtNeg", " p_{T} ", 100, 0., pt); fRecPtNeg->GetXaxis()->SetTitle("p_{T} (GeV/c)"); fRecPhiPos = new TH1F("fRecPhiPos", "#phi", 361, 0., 360.); fRecPhiPos->GetXaxis()->SetTitle("#phi (deg)"); fRecPhiNeg = new TH1F("fRecPhiNeg", "#phi ", 361, 0., 360.); fRecPhiNeg->GetXaxis()->SetTitle("#phi (deg)"); fRecEtaPos = new TH1F("fRecEtaPos", "#eta", 200, -2., 2.); fRecEtaPos->GetXaxis()->SetTitle("#eta"); fRecEtaNeg = new TH1F("fRecEtaNeg", "#eta", 200, -2., 2.); fRecEtaNeg->GetXaxis()->SetTitle("#eta"); fRecEtaPtPos = new TH1F("fRecEtaPtPos", "#eta/p_{T}", 200, -0.1, .1); fRecEtaPtPos->GetXaxis()->SetTitle("#eta/p_{T}"); fRecEtaPtNeg = new TH1F("fRecEtaPtNeg", "#eta/p_{T}", 200, -.1, .1); fRecEtaPtNeg->GetXaxis()->SetTitle("#eta/p_{T}"); fRecDcaPos = new TH1F("fRecDcaPos", " dca", 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9)); fRecDcaPos->GetXaxis()->SetTitle("dca (cm)"); fRecDcaNeg = new TH1F("fRecDcaNeg", " dca", 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9)); fRecDcaNeg->GetXaxis()->SetTitle("dca (cm)"); fRecDcaNegInv = new TH1F("fRecDcaNegInv", " dca", 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9)); fRecDcaNegInv->GetXaxis()->SetTitle("dca (cm)"); fRecDPos = new TH1F("fRecDPos", " d", 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9)); fRecDPos->GetXaxis()->SetTitle("d (cm)"); fRecDNeg = new TH1F("fRecDNeg", "d", 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9)); fRecDNeg->GetXaxis()->SetTitle("d (cm)"); // YIELDs ---------------- positive and negative eta fRecQPtPosEta = new TH1F("fRecQPtPosEta", "q/p_{T}", 200, -0.5, 0.5); fRecQPtPosEta->GetXaxis()->SetTitle("q/p_{T} "); fRecQPtNegEta = new TH1F("fRecQPtNegEta", "q/p_{T}", 200, -0.5, 0.5); fRecQPtNegEta->GetXaxis()->SetTitle("q/p_{T}"); fRecPtPosEta = new TH1F("fRecPtPosEta", " p_{T} ", 100, 0., pt); fRecPtPosEta->GetXaxis()->SetTitle("p_{T} (GeV/c)"); fRecPtNegEta = new TH1F("fRecPtNegEta", " p_{T}", 100, 0., pt); fRecPtNegEta->GetXaxis()->SetTitle("p_{T} (GeV/c)"); fRecPhiPosEta = new TH1F("fRecPhiPosEta", "#phi", 361, 0., 360); fRecPhiPosEta->GetXaxis()->SetTitle("#phi (deg)"); fRecPhiNegEta = new TH1F("fRecPhiNegEta", "#phi ", 361, 0, 360); fRecPhiNegEta->GetXaxis()->SetTitle("#phi (deg)"); fRecDcaPosEta = new TH1F("fRecDcaPosEta", " dca ", 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9)); fRecDcaPosEta->GetXaxis()->SetTitle("dca (cm)"); fRecDcaNegEta = new TH1F("fRecDcaNegEta", " dca", 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9)); fRecDcaNegEta->GetXaxis()->SetTitle("dca (cm)"); fRecDPosEta = new TH1F("fRecDPosEta", " d", 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9)); fRecDPosEta->GetXaxis()->SetTitle("d (cm)"); fRecDNegEta = new TH1F("fRecDNegEta", "d", 100, -5., 5.); fRecDNegEta->GetXaxis()->SetTitle("d (cm)"); fRecDcaPosPhi = new TH2F("fRecDcaPosPhi", " dca vs. phi", 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2); fRecDcaPosPhi->GetXaxis()->SetTitle("dca (cm)"); fRecDcaPosPhi->GetYaxis()->SetTitle("#phi (rad.)"); fRecDcaNegPhi = new TH2F("fRecDcaNegPhi", " dca vs. phi", 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2); fRecDcaNegPhi->GetXaxis()->SetTitle("dca (cm)"); fRecDcaNegPhi->GetYaxis()->SetTitle("#phi (rad.)"); fRecPtPosPhi = new TH2F("fRecPtPosPhi", " log(p_T) vs. phi", 100, -2.5, 2., 180, 0, TMath::Pi()*2); fRecPtPosPhi->GetXaxis()->SetTitle("log_{10}(p_{T})"); fRecPtPosPhi->GetYaxis()->SetTitle("#phi (rad.)"); fRecPtNegPhi = new TH2F("fRecPtNegPhi", " log(p_T) vs. phi", 100,-2.5 , 2., 180, 0, TMath::Pi()*2); fRecPtNegPhi->GetXaxis()->SetTitle("log_{10}(p_{T})"); fRecPtNegPhi->GetYaxis()->SetTitle("#phi (rad.)"); fRecEtaPosPhi = new TH2F("fRecEtaPosPhi", " eta vs. phi", 100, -1.5, 1.5, 180, 0, TMath::Pi()*2); fRecEtaPosPhi->GetXaxis()->SetTitle("#eta"); fRecEtaPosPhi->GetYaxis()->SetTitle("#phi (rad.)"); fRecEtaNegPhi = new TH2F("fRecEtaNegPhi", " eta vs. phi", 100, -1.5, 1.5, 180, 0, TMath::Pi()*2); fRecEtaNegPhi->GetXaxis()->SetTitle("#eta"); fRecEtaNegPhi->GetYaxis()->SetTitle("#phi (rad.)"); fRecQPtPhi = new TH2F("fRecQPtPhi", " charge/p_T vs. phi", 100,-1. , 1., 180, 0, TMath::Pi()*2); fRecQPtPhi->GetXaxis()->SetTitle("charge/p_{T}"); fRecQPtPhi->GetYaxis()->SetTitle("#phi (rad.)"); fRecEtaPtPosPhi = new TH2F("fRecEtaPtPosPhi", " eta/p_T vs. phi", 100, -5, 5., 180, 0, TMath::Pi()*2); fRecEtaPtPosPhi->GetXaxis()->SetTitle("#eta/p_{T}"); fRecEtaPtPosPhi->GetYaxis()->SetTitle("#phi (rad.)"); fRecEtaPtNegPhi = new TH2F("fRecEtaPtNegPhi", " eta/p_T vs. phi", 100,-5 , 5., 180, 0, TMath::Pi()*2); fRecEtaPtNegPhi->GetXaxis()->SetTitle("#eta/p_{T}"); fRecEtaPtNegPhi->GetYaxis()->SetTitle("#phi (rad.)"); fRecDcaPosPhiEtaPos = new TH2F("fRecDcaPosPhiEtaPos", " dca vs. phi", 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2); fRecDcaPosPhiEtaPos->GetXaxis()->SetTitle("dca (cm)"); fRecDcaPosPhiEtaPos->GetYaxis()->SetTitle("#phi (rad.)"); fRecDcaNegPhiEtaPos = new TH2F("fRecDcaNegPhiEtaPos", " dca vs. phi", 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2); fRecDcaNegPhiEtaPos->GetXaxis()->SetTitle("dca (cm)"); fRecDcaNegPhiEtaPos->GetYaxis()->SetTitle("#phi (rad.)"); fRecPtPosPhiEtaPos = new TH2F("fRecPtPosPhiEtaPos", " log(p_T) vs. phi", 100, -2.5, 2., 180, 0, TMath::Pi()*2); fRecPtPosPhiEtaPos->GetXaxis()->SetTitle("log_{10}(p_{T})"); fRecPtPosPhiEtaPos->GetYaxis()->SetTitle("#phi (rad.)"); fRecPtNegPhiEtaPos = new TH2F("fRecPtNegPhiEtaPos", " log(p_T) vs. phi", 100,-2.5 , 2., 180, 0, TMath::Pi()*2); fRecPtNegPhiEtaPos->GetXaxis()->SetTitle("log_{10}(p_{T})"); fRecPtNegPhiEtaPos->GetYaxis()->SetTitle("#phi (rad.)"); fRecDcaPosPhiEtaNeg = new TH2F("fRecDcaPosPhiEtaNeg", " dca vs. phi", 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2); fRecDcaPosPhiEtaNeg->GetXaxis()->SetTitle("dca (cm)"); fRecDcaPosPhiEtaNeg->GetYaxis()->SetTitle("#phi (rad.)"); fRecDcaNegPhiEtaNeg = new TH2F("fRecDcaNegPhiEtaNeg", " dca vs. phi", 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 180, 0, TMath::Pi()*2); fRecDcaNegPhiEtaNeg->GetXaxis()->SetTitle("dca (cm)"); fRecDcaNegPhiEtaNeg->GetYaxis()->SetTitle("#phi (rad.)"); fRecPtPosPhiEtaNeg = new TH2F("fRecPtPosPhiEtaNeg", " log(p_T) vs. phi", 100, -2.5, 2., 180, 0, TMath::Pi()*2); fRecPtPosPhiEtaNeg->GetXaxis()->SetTitle("log_{10}(p_{T})"); fRecPtPosPhiEtaNeg->GetYaxis()->SetTitle("#phi (rad.)"); fRecPtNegPhiEtaNeg = new TH2F("fRecPtNegPhiEtaNeg", " log(p_T) vs. phi", 100,-2.5 , 2., 180, 0, TMath::Pi()*2); fRecPtNegPhiEtaNeg->GetXaxis()->SetTitle("log_{10}(p_{T})"); fRecPtNegPhiEtaNeg->GetYaxis()->SetTitle("#phi (rad.)"); //new fRecDcaPosPtEtaPos = new TH2F("fRecDcaPosPtEtaPos", " dca vs. pt", 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2); fRecDcaPosPtEtaPos->GetXaxis()->SetTitle("dca (cm)"); fRecDcaPosPtEtaPos->GetYaxis()->SetTitle("log_{10}(p_{T})"); fRecDcaPosPtEtaNeg = new TH2F("fRecDcaPosPtEtaNeg", " dca vs. pt", 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2); fRecDcaPosPtEtaNeg->GetXaxis()->SetTitle("dca (cm)"); fRecDcaPosPtEtaNeg->GetYaxis()->SetTitle("log_{10}(p_{T})"); fRecDcaNegPtEtaPos = new TH2F("fRecDcaNegPtEtaPos", " dca vs. pt", 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2); fRecDcaNegPtEtaPos->GetXaxis()->SetTitle("dca (cm)"); fRecDcaNegPtEtaPos->GetYaxis()->SetTitle("log_{10}(p_{T})"); fRecDcaNegPtEtaNeg = new TH2F("fRecDcaNegPtEtaNeg", " dca vs. pt", 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2); fRecDcaNegPtEtaNeg->GetXaxis()->SetTitle("dca (cm)"); fRecDcaNegPtEtaNeg->GetYaxis()->SetTitle("log_{10}(p_{T})"); // YIELDs ---------------- for TPC sectors for(Int_t sector=0; sector<18;sector++){ fRecPtTpcSector[sector] = new TH1F(Form("fRecPtTpcSector%02d",sector), Form("p_{T} distribution: TPC sector %d", sector),100, 0., pt); fRecPtTpcSector[sector]->GetXaxis()->SetTitle("p_{T} (GeV/c)"); fRecEtaTpcSector[sector] = new TH1F(Form("fRecEtaTpcSector%02d",sector), Form("#eta distribution: TPC sector %d", sector),200, -2., 2.); fRecEtaTpcSector[sector]->GetXaxis()->SetTitle("p_{T} (GeV/c)"); fSignedDcaTpcSector[sector] = new TH1F(Form("fSignedDcaTpcSector%02d",sector), Form("dca distribution: TPC sector %d", sector),200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9) ); fSignedDcaTpcSector[sector]->GetXaxis()->SetTitle("dca"); fRecQPtTpcSector[sector] = new TH1F(Form("fRecQPtTpcSector%02d",sector), Form("Q/ p_{T} distribution: TPC sector %d", sector),100, -1., 1.); fRecQPtTpcSector[sector]->GetXaxis()->SetTitle("Q/p_{T} (GeV/c)"); fRecEtaPtTpcSector[sector] = new TH1F(Form("fRecEtaPtTpcSector%02d",sector), Form("#eta/ p_{T} distribution: TPC sector %d", sector),100, -1., 1.); fRecEtaPtTpcSector[sector]->GetXaxis()->SetTitle("#eta/p_{T} (GeV/c)"); } // YIELDS ITS ladder for(Int_t i=0;i<7;i++){ fRecPtPosLadder[i] = new TH1F(Form("fRecPtPosLadder%d", i), " p_{T} distribution", 100, 0., pt); fRecPtPosLadder[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)"); fRecPtNegLadder[i] = new TH1F(Form("fRecPtNegLadder%d",i), " p_{T} distribution ", 100, 0., pt); fRecPtNegLadder[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)"); fRecPhiPosLadder[i] = new TH1F(Form("fRecPhiPosLadder%d",i), "#phi distribution: all pos eta", 361, 0., 360); fRecPhiPosLadder[i]->GetXaxis()->SetTitle("#phi (deg)"); fRecPhiNegLadder[i] = new TH1F(Form("fRecPhiNegLadder%d", i), "#phi distribution: all neg eta", 361, 0, 360); fRecPhiNegLadder[i]->GetXaxis()->SetTitle("#phi (deg)"); fRecEtaPosLadder[i] = new TH1F(Form("fRecEtaPosLadder%d",i), "#eta distribution", 200, -2., 2.); fRecEtaPosLadder[i]->GetXaxis()->SetTitle("#eta)"); fRecEtaNegLadder[i] = new TH1F(Form("fRecEtaNegLadder%d", i), "#eta distribution", 200, -2., 2.); fRecEtaNegLadder[i]->GetXaxis()->SetTitle("#eta"); } Double_t vzmax = 15; fRecPtPosVz = new TH2F("fRecPtPosVz", "p_{T} distribution vs Vz()", 100, -1., 2., 200,-vzmax,vzmax); fRecPtPosVz->GetXaxis()->SetTitle("log_{10}(p_{T})"); fRecPtNegVz = new TH2F("fRecPtNegVz", "p_{T} distribution vs Vz()", 100, -1., 2.,200,-vzmax,vzmax); fRecPtNegVz->GetXaxis()->SetTitle("Log_{10}(p_{T})"); fRecEtaPosVz= new TH2F("fRecEtaPosVz", "#eta distribution vs Vz()", 100, -2., 2., 200,-vzmax,vzmax); fRecEtaPosVz->GetXaxis()->SetTitle("#eta"); fRecEtaNegVz = new TH2F("fRecEtaNegVz", "#eta distribution vs Vz()", 100, -2., 2.,200,-vzmax,vzmax); fRecEtaNegVz->GetXaxis()->SetTitle("#eta"); fRecPhiPosVz= new TH2F("fRecPhiPosVz", "#eta distribution vs Vz()", 361, 0., 360., 200,-vzmax,vzmax); fRecPhiPosVz->GetXaxis()->SetTitle("#phi (deg)"); fRecPhiNegVz = new TH2F("fRecPhiNegVz", "dca vs Vz()", 361, 0., 360.,200,-vzmax,vzmax); fRecPhiNegVz->GetXaxis()->SetTitle("#phi (deg)"); fSignedDcaPosVz= new TH2F("fSignedDcaPosVz", "#eta distribution vs Vz()", 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200,-vzmax,vzmax); fSignedDcaPosVz->GetXaxis()->SetTitle("dca (cm)"); fSignedDcaNegVz = new TH2F("fSignedDcaNegVz", "dca vs Vz()", 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9),200,-vzmax,vzmax); fSignedDcaNegVz->GetXaxis()->SetTitle("dca (cm)"); fRecQPtPosEtaVz= new TH2F("fRecQPtPosEtaVz", " Q/p_{T} distribution vs Vz()", 100, -1., 1., 200,-vzmax,vzmax); fRecQPtPosEtaVz->GetXaxis()->SetTitle("Q/p_{T}"); fRecQPtNegEtaVz = new TH2F("fRecQPtNegEtaVz", " Q/p_{T} distribution vs Vz()", 100, -1., 1.,200,-vzmax,vzmax); fRecQPtNegEtaVz->GetXaxis()->SetTitle("Q/p_{T}"); fRecEtaPtPosVz= new TH2F("fRecEtaPtPosVz", " #eta/p_{T} distribution vs Vz()", 100, -1., 1., 200,-vzmax,vzmax); fRecEtaPtPosVz->GetXaxis()->SetTitle("#eta/p_{T"); fRecEtaPtNegVz = new TH2F("fRecEtaPtNegVz", " #eta/p_{T} distribution vs Vz()", 100, -1., 1.,200,-vzmax,vzmax); fRecEtaPtNegVz->GetXaxis()->SetTitle("#eta/p_{T}"); //new fDeltaPhiAll = new TH1F("fDeltaPhiAll", " #Delta #phi",200,-360,360); fDeltaPhiAll->GetXaxis()->SetTitle("#Delta #phi"); fDeltaPhiLeading = new TH2F("fDeltaPhiLeading", " #Delta #phi",361,-360,360, 361,0, 360); fDeltaPhiLeading->GetXaxis()->SetTitle("#Delta #phi (deg.)"); fDeltaPhiLeading->GetYaxis()->SetTitle("#phi_{leading particle} (deg.)"); fDiffDcaD = new TH1F("fDiffDcaD", "dca-d", 200, -1., 1.); fRecPtPosEtaPos = new TH1F("fRecPtPosEtaPos", "p_{T} distribution",100,0,pt); fRecPtPosEtaPos->GetXaxis()->SetTitle("p_{T} (GeV/c)"); fRecPtNegEtaPos = new TH1F("fRecPtNegEtaPos", "p_{T} distribution",100,0,pt); fRecPtNegEtaPos->GetXaxis()->SetTitle("p_{T} (GeV/c)"); fRecPtPosEtaNeg = new TH1F("fRecPtPosEtaNeg", "p_{T} distribution",100,0,pt); fRecPtPosEtaNeg->GetXaxis()->SetTitle("p_{T} (GeV/c)"); fRecPtNegEtaNeg = new TH1F("fRecPtNegEtaNeg", "p_{T} distribution",100,0,pt); fRecPtNegEtaNeg->GetXaxis()->SetTitle("p_{T} (GeV/c)"); fRec1PtPosEtaPos = new TH1F("fRec1PtPosEtaPos", "1/p_{T} distribution",100,0,0.5); fRec1PtPosEtaPos->GetXaxis()->SetTitle("p_{T} (c/GeV)"); fRec1PtNegEtaPos = new TH1F("fRec1PtNegEtaPos", "1/p_{T} distribution",100,0,0.5); fRec1PtNegEtaPos->GetXaxis()->SetTitle("p_{T} (c/GeV)"); fRec1PtPosEtaNeg = new TH1F("fRec1PtPosEtaNeg", "1/p_{T} distribution",100,0,0.5); fRec1PtPosEtaNeg->GetXaxis()->SetTitle("p_{T} (c/GeV)"); fRec1PtNegEtaNeg = new TH1F("fRec1PtNegEtaNeg", "1/p_{T} distribution",100,0,0.5); fRec1PtNegEtaNeg->GetXaxis()->SetTitle("1/p_{T} (c/GeV)"); fRecPhiPosEtaPos = new TH1F("fRecPhiPosEtaPos", "#phi",180,0,2*TMath::Pi()); fRecPhiPosEtaPos->GetXaxis()->SetTitle("#phi (rad.)"); fRecPhiNegEtaPos = new TH1F("fRecPhiNegEtaPos", "#phi",180,0,2*TMath::Pi()); fRecPhiNegEtaPos->GetXaxis()->SetTitle("#phi (rad.)"); fRecPhiPosEtaNeg = new TH1F("fRecPhiPosEtaNeg", "#phi",180,0,2*TMath::Pi()); fRecPhiPosEtaNeg->GetXaxis()->SetTitle("#phi (rad.)"); fRecPhiNegEtaNeg = new TH1F("fRecPhiNegEtaNeg", "#phi",180,0,2*TMath::Pi()); fRecPhiNegEtaNeg->GetXaxis()->SetTitle("#phi (rad.)"); // fRecDcaPhiPtPosEtaPos = new TH3F("fRecDcaPhiPtPosEtaPos", // "#phi- p_{T} - DCA", // 180,0,2*TMath::Pi(), // 100,0,pt, // 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9)); // fRecDcaPhiPtPosEtaPos->GetXaxis()->SetTitle("#phi (rad.)"); // fRecDcaPhiPtPosEtaPos->GetYaxis()->SetTitle("p_{T} (GeV/c)"); // fRecDcaPhiPtPosEtaPos->GetZaxis()->SetTitle("dca (cm)"); // fRecDcaPhiPtPosEtaNeg = new TH3F("fRecDcaPhiPtPosEtaNeg", // "#phi- p_{T} - DCA", // 180,0,2*TMath::Pi(), // 100,0,pt, // 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9)); // fRecDcaPhiPtPosEtaNeg->GetZaxis()->SetTitle("dca (cm)"); // fRecDcaPhiPtPosEtaNeg->GetXaxis()->SetTitle("#phi (rad.)"); // fRecDcaPhiPtPosEtaNeg->GetYaxis()->SetTitle("p_{T} (GeV/c)"); // fRecDcaPhiPtNegEtaPos = new TH3F("fRecDcaPhiPtNegEtaPos", // "#phi- p_{T} - DCA", // 180,0,2*TMath::Pi(), // 100,0,pt, // 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9)); // fRecDcaPhiPtNegEtaPos->GetZaxis()->SetTitle("dca (cm)"); // fRecDcaPhiPtNegEtaPos->GetXaxis()->SetTitle("#phi (rad.)"); // fRecDcaPhiPtNegEtaPos->GetYaxis()->SetTitle("p_{T} (GeV/c)"); // fRecDcaPhiPtNegEtaNeg = new TH3F("fRecDcaPhiPtNegEtaNeg", // "#phi- p_{T} - DCA", // 180,0,2*TMath::Pi(), // 100,0,pt, // 100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9)); // fRecDcaPhiPtNegEtaNeg->GetZaxis()->SetTitle("dca (cm)"); // fRecDcaPhiPtNegEtaNeg->GetYaxis()->SetTitle("#phi (rad.)"); // fRecDcaPhiPtNegEtaNeg->GetXaxis()->SetTitle("p_{T} (GeV/c)"); fHists->SetOwner(); fHists->Add(fHistRECpt); fHists->Add(fEta); fHists->Add(fEtavPt); fHists->Add(fCompareTPCparam); fHists->Add(fITSlayer); fHists->Add(fEtaPhi); fHists->Add(fThetaRec); fHists->Add(fPhiRec); fHists->Add(fNumber); fHists->Add(fVx); fHists->Add(fVy); fHists->Add(fVz); fHists->Add(fVertexX); fHists->Add(fVertexY); fHists->Add(fVertexZ); fHists->Add(fEtaPt); fHists->Add(fQPt); fHists->Add(fDca); fHists->Add(fDeltaPhiAll); fHists->Add(fDeltaPhiLeading); fHists->Add(fDiffDcaD); fHists->Add(fqRec); fHists->Add(fsigmaPt); fHists->Add(fRecPtPos); fHists->Add(fRecPtNeg); fHists->Add(fRecPhiPos); fHists->Add(fRecPhiNeg); fHists->Add(fRecEtaPos); fHists->Add(fRecEtaNeg); fHists->Add(fRecEtaPtPos); fHists->Add(fRecEtaPtNeg); fHists->Add(fRecDcaPos); fHists->Add(fRecDcaNeg); fHists->Add(fRecDcaNegInv); fHists->Add(fRecDPos); fHists->Add(fRecDNeg); fHists->Add(fRecQPtPosEta); fHists->Add(fRecQPtNegEta); fHists->Add(fRecPtPosEta); fHists->Add(fRecPtNegEta); fHists->Add(fRecPhiPosEta); fHists->Add(fRecPhiNegEta); fHists->Add(fRecDcaPosEta); fHists->Add(fRecDcaNegEta); fHists->Add(fRecDPosEta); fHists->Add(fRecDNegEta); for(Int_t i=0;i<18;i++){ fHists->Add(fRecPtTpcSector[i]); fHists->Add(fRecEtaTpcSector[i]); fHists->Add(fSignedDcaTpcSector[i]); fHists->Add(fRecQPtTpcSector[i]); fHists->Add(fRecEtaPtTpcSector[i]); } for(Int_t i=0;i<7;i++){ fHists->Add(fRecPtPosLadder[i]); fHists->Add(fRecPtNegLadder[i]); fHists->Add(fRecPhiPosLadder[i]); fHists->Add(fRecPhiNegLadder[i]); fHists->Add(fRecEtaPosLadder[i]); fHists->Add(fRecEtaNegLadder[i]); } fHists->Add(fRecPtPosVz); fHists->Add(fRecPtNegVz); fHists->Add(fRecEtaPosVz); fHists->Add(fRecEtaNegVz); fHists->Add(fRecPhiPosVz); fHists->Add(fRecPhiNegVz); fHists->Add(fSignedDcaPosVz); fHists->Add(fSignedDcaNegVz); fHists->Add(fRecQPtPosEtaVz); fHists->Add(fRecQPtNegEtaVz); fHists->Add(fRecEtaPtPosVz); fHists->Add(fRecEtaPtNegVz); for(Int_t i=0;i<7;i++){ fHists->Add(fSignDcaPos[i]); fHists->Add(fSignDcaNeg[i]); fHists->Add(fSignDcaNegInv[i]); fHists->Add(fPtSigmaPos[i]); fHists->Add(fPtSigmaNeg[i]); fHists->Add(fqPtRec[i]); fHists->Add(fDcaSigmaPos[i]); fHists->Add(fDcaSigmaNeg[i]); } fHists->Add(fRecDcaPosPhi); fHists->Add(fRecDcaNegPhi); fHists->Add(fRecPtPosPhi); fHists->Add(fRecPtNegPhi); fHists->Add(fRecEtaPosPhi); fHists->Add(fRecEtaNegPhi); fHists->Add(fRecQPtPhi); fHists->Add(fRecEtaPtPosPhi); fHists->Add(fRecEtaPtNegPhi); fHists->Add(fRecPtPosEtaPos); fHists->Add(fRecPtNegEtaPos); fHists->Add(fRecPtPosEtaNeg); fHists->Add(fRecPtNegEtaNeg); fHists->Add(fRec1PtPosEtaPos); fHists->Add(fRec1PtNegEtaPos); fHists->Add(fRec1PtPosEtaNeg); fHists->Add(fRec1PtNegEtaNeg); fHists->Add(fRecPhiPosEtaPos); fHists->Add(fRecPhiNegEtaPos); fHists->Add(fRecPhiPosEtaNeg); fHists->Add(fRecPhiNegEtaNeg); fHists->Add(fRecDcaPosPhiEtaPos); fHists->Add(fRecDcaNegPhiEtaPos); fHists->Add(fRecPtPosPhiEtaPos); fHists->Add(fRecPtNegPhiEtaPos); fHists->Add(fRecDcaPosPhiEtaNeg); fHists->Add(fRecDcaNegPhiEtaNeg); fHists->Add(fRecPtPosPhiEtaNeg); fHists->Add(fRecPtNegPhiEtaNeg); fHists->Add(fRecDcaPosPtEtaPos); fHists->Add(fRecDcaNegPtEtaPos); fHists->Add(fRecDcaPosPtEtaNeg); fHists->Add(fRecDcaNegPtEtaNeg); // fHists->Add(fRecDcaPhiPtPosEtaPos); // fHists->Add(fRecDcaPhiPtPosEtaNeg); // fHists->Add(fRecDcaPhiPtNegEtaPos); // fHists->Add(fRecDcaPhiPtNegEtaNeg); // for (Int_t i=0; iGetEntries(); ++i) { // TH1 *h1 = dynamic_cast(fHists->At(i)); // if (h1){ // // Printf("%s ",h1->GetName()); // h1->Sumw2(); // } // } // BKC TH1::AddDirectory(oldStatus); } //__________________________________________________________ void AliAnalysisTaskQASym::UserExec(Option_t *) { AliVEvent *event = InputEvent(); if (!event) { Printf("ERROR: Could not retrieve event"); return; } if(Entry()==0){ AliESDEvent* esd = dynamic_cast(event); if(esd){ Printf("We are reading from ESD"); } } if(fDebug>1)Printf("There are %d tracks in this event", event->GetNumberOfTracks()); Int_t leadingTrack = 0; Float_t leadingEnergy = -20.; Float_t leadingPhi = 0;//TMath::Pi(); if(event->GetNumberOfTracks()!=0) fNumber->Fill(event->GetNumberOfTracks()); const AliVVertex* vertex = event->GetPrimaryVertex(); if(vertex->GetNContributors()==0) return; Float_t vx = vertex->GetX(); Float_t vy = vertex->GetY(); Float_t vz = vertex->GetZ(); fVertexX->Fill(vx); fVertexY->Fill(vy); fVertexZ->Fill(vz); if (TMath::Abs(vz) > 10.) return; AliESDtrack *tpcP = 0x0; for (Int_t iTrack = 0; iTrack < event->GetNumberOfTracks(); iTrack++) { //prevent mem leak for TPConly track if(fTrackType==2&&tpcP){ delete tpcP; tpcP = 0; } AliVParticle *track = event->GetTrack(iTrack); AliESDtrack *esdtrack = dynamic_cast(track); esdtrack->PropagateToDCA(event->GetPrimaryVertex(), event->GetMagneticField(), 10000.); if (!track) { Printf("ERROR: Could not receive track %d", iTrack); continue; } //__________ // run Task for global tracks or ITS tracks or TPC tracks const AliExternalTrackParam *tpcPin = 0x0; Double_t phiIn=0; if(fTrackType==0){ //Fill all histograms with global tracks tpcP = esdtrack; phiIn = tpcP->Phi(); if (!tpcP) continue; if (!fCuts->AcceptTrack(tpcP)) continue; } else if(fTrackType==1){ //Fill all histograms with ITS tracks tpcP = esdtrack; phiIn = tpcP->Phi(); if (!tpcP) continue; if (!fCuts->AcceptTrack(tpcP)) continue; if(fStandAlone==kTRUE) { if(!(tpcP->GetStatus()&AliESDtrack::kITSpureSA))continue; } } else if(fTrackType==2){ //Fill all histograms with TPC track information tpcPin = esdtrack->GetInnerParam(); if (!tpcPin) continue; phiIn=tpcPin->Phi(); tpcP = AliESDtrackCuts::GetTPCOnlyTrack(dynamic_cast(event),esdtrack->GetID()); if (!tpcP) continue; if (!fCuts->AcceptTrack(tpcP)) continue; if(tpcP->GetNcls(1)>160)continue;//jacek's track cut if(tpcP->GetConstrainedChi2TPC()<0)continue; // jacek's track cut } else{ Printf("ERROR: wrong track type \n"); continue; } //___________ // if(tpcP->E()>leadingEnergy){ leadingTrack=iTrack; leadingEnergy=tpcP->E(); leadingPhi=phiIn; } fqRec->Fill(tpcP->Charge()); Double_t sigmapt = tpcP->GetSigma1Pt2(); sigmapt= sqrt(sigmapt); sigmapt= sigmapt *(tpcP->Pt()*tpcP->Pt()); if(TMath::Abs(sigmapt) < 1.e-10) continue; fsigmaPt->Fill(TMath::Log10(sigmapt)); // hits in ITS layer Int_t cas=-1; if(tpcP->HasPointOnITSLayer(0)) cas=0; else if(!tpcP->HasPointOnITSLayer(0) && tpcP->HasPointOnITSLayer(1)) cas=1; else if(!tpcP->HasPointOnITSLayer(0) && !tpcP->HasPointOnITSLayer(1) && tpcP->HasPointOnITSLayer(2)) cas=2; else if(!tpcP->HasPointOnITSLayer(0) && !tpcP->HasPointOnITSLayer(1) && !tpcP->HasPointOnITSLayer(2) && tpcP->HasPointOnITSLayer(3)) cas=3; else if(!tpcP->HasPointOnITSLayer(0) && !tpcP->HasPointOnITSLayer(1) && !tpcP->HasPointOnITSLayer(2) && !tpcP->HasPointOnITSLayer(3) && tpcP->HasPointOnITSLayer(4)) cas=4; else if( !tpcP->HasPointOnITSLayer(0) && !tpcP->HasPointOnITSLayer(1) && !tpcP->HasPointOnITSLayer(2) && !tpcP->HasPointOnITSLayer(3) && !tpcP->HasPointOnITSLayer(4) && tpcP->HasPointOnITSLayer(5)) cas=5; else cas=6; //------------------- Float_t xvertexcor = 0.; Float_t yvertexcor = 0.; xvertexcor = tpcP->Xv() - vertex->GetX(); // coordinate corrected for vertex position yvertexcor = tpcP->Yv() - vertex->GetY(); // " Double_t sdca = (tpcP->Py()*xvertexcor - tpcP->Px()*yvertexcor)/tpcP->Pt(); fqPtRec[cas]->Fill(tpcP->Charge()/tpcP->Pt()); fHistRECpt->Fill(tpcP->Pt()); fEta->Fill(tpcP->Eta()); fEtavPt->Fill(tpcP->Eta(), tpcP->Pt()); fEtaPhi->Fill(tpcP->Eta(), phiIn); fThetaRec->Fill(tpcP->Theta()); fPhiRec->Fill(phiIn); fVx->Fill(tpcP->Xv()); fVy->Fill(tpcP->Yv()); fVz->Fill(tpcP->Zv()); fEtaPt->Fill(tpcP->Eta()/tpcP->Pt()); fQPt->Fill(tpcP->Charge()/tpcP->Pt()); fDca->Fill(sdca); fRecQPtPhi->Fill(tpcP->Charge()/tpcP->Pt(), phiIn); Float_t xy = 0.; Float_t z = 0.; tpcP->GetImpactParameters(xy,z); fDiffDcaD->Fill(sdca+xy); if(fTrackType==2) fCompareTPCparam->Fill(z,tpcPin->GetTgl()); if(fTrackType!=2){//for global and ITS tracks for(Int_t itsLayer=0;itsLayer<6;itsLayer++){ if(tpcP->HasPointOnITSLayer(itsLayer)){ fITSlayer->Fill(itsLayer); } } } //for positive particles if(tpcP->Charge()>0){ fRecPtPos->Fill(tpcP->Pt()); fRecPtPosLadder[cas]->Fill(tpcP->Pt()); fRecPtPosVz->Fill(TMath::Log10(tpcP->Pt()),tpcP->Zv()); fRecPhiPos->Fill(TMath::RadToDeg()*phiIn); fRecPhiPosLadder[cas]->Fill(TMath::RadToDeg()*phiIn); fRecPhiPosVz->Fill(TMath::RadToDeg()*phiIn,tpcP->Zv()); fSignedDcaPosVz->Fill(sdca,tpcP->Zv()); fRecEtaPos->Fill(tpcP->Eta()); fRecEtaPosLadder[cas]->Fill(tpcP->Eta()); fRecEtaPtPos->Fill(tpcP->Eta()/tpcP->Pt()); fRecEtaPosVz->Fill(tpcP->Eta(),tpcP->Zv()); fRecEtaPtPosVz->Fill(tpcP->Eta()/tpcP->Pt(),tpcP->Zv()); fRecDcaPos->Fill(sdca); fRecDcaPosPhi->Fill(sdca, phiIn); fRecPtPosPhi->Fill(TMath::Log10(tpcP->Pt()), phiIn); fRecEtaPtPosPhi->Fill(tpcP->Eta()/tpcP->Pt(), phiIn); fRecEtaPosPhi->Fill(tpcP->Eta(), phiIn); fRecDPos->Fill(xy); fSignDcaPos[cas]->Fill(sdca); fDcaSigmaPos[cas]->Fill(sdca, TMath::Log10(sigmapt)); fPtSigmaPos[cas]->Fill(TMath::Log10(sigmapt)); //pos eta if(tpcP->Eta()>0){ fRecPtPosEtaPos->Fill(tpcP->Pt()); fRec1PtPosEtaPos->Fill(1/tpcP->Pt()); fRecPhiPosEtaPos->Fill(phiIn); fRecDcaPosPhiEtaPos->Fill(sdca, phiIn); fRecDcaPosPtEtaPos->Fill(sdca, TMath::Log10(tpcP->Pt())); fRecPtPosPhiEtaPos->Fill(TMath::Log10(tpcP->Pt()), phiIn); //fRecDcaPhiPtPosEtaPos->Fill(phiIn, tpcP->Pt(), sdca); } //neg eta else{ fRecPtPosEtaNeg->Fill(tpcP->Pt()); fRec1PtPosEtaNeg->Fill(1/tpcP->Pt()); fRecPhiPosEtaNeg->Fill(phiIn); fRecDcaPosPhiEtaNeg->Fill(sdca, phiIn); fRecDcaPosPtEtaNeg->Fill(sdca, TMath::Log10(tpcP->Pt())); fRecPtPosPhiEtaNeg->Fill(TMath::Log10(tpcP->Pt()), phiIn); //fRecDcaPhiPtPosEtaNeg->Fill(phiIn, tpcP->Pt(), sdca); } } //and negative particles else { fRecPtNeg->Fill(tpcP->Pt()); fRecPtNegLadder[cas]->Fill(tpcP->Pt()); fRecPtNegVz->Fill(TMath::Log10(tpcP->Pt()),tpcP->Zv()); fRecPhiNeg->Fill(TMath::RadToDeg()*phiIn); fRecPhiNegLadder[cas]->Fill(TMath::RadToDeg()*phiIn); fRecPhiNegVz->Fill(TMath::RadToDeg()*phiIn,tpcP->Zv()); fSignedDcaNegVz->Fill(sdca,tpcP->Zv()); fRecEtaPtNegVz->Fill(tpcP->Eta()/tpcP->Pt(),tpcP->Zv()); fRecEtaNeg->Fill(tpcP->Eta()); fRecEtaNegLadder[cas]->Fill(tpcP->Eta()); fRecEtaPtNeg->Fill(tpcP->Eta()/tpcP->Pt()); fRecEtaNegVz->Fill(tpcP->Eta(),tpcP->Zv()); fRecDcaNeg->Fill(sdca); fRecDcaNegInv->Fill(-sdca); fRecDcaNegPhi->Fill(sdca, phiIn); fRecPtNegPhi->Fill(TMath::Log10(tpcP->Pt()), phiIn); fRecEtaNegPhi->Fill(tpcP->Eta(), phiIn); fRecEtaPtNegPhi->Fill(tpcP->Eta()/tpcP->Pt(), phiIn); fRecDNeg->Fill(xy); fSignDcaNeg[cas]->Fill(sdca); fSignDcaNegInv[cas]->Fill(-sdca); fDcaSigmaNeg[cas]->Fill(sdca,TMath::Log10(sigmapt)); fPtSigmaNeg[cas]->Fill(TMath::Log10(sigmapt)); //pos eta if(tpcP->Eta()>0){ fRecPtNegEtaPos->Fill(tpcP->Pt()); fRec1PtNegEtaPos->Fill(1/tpcP->Pt()); fRecPhiNegEtaPos->Fill(phiIn); fRecDcaNegPhiEtaPos->Fill(sdca, phiIn); fRecDcaNegPtEtaPos->Fill(sdca, TMath::Log10(tpcP->Pt())); fRecPtNegPhiEtaPos->Fill(TMath::Log10(tpcP->Pt()), phiIn); //fRecDcaPhiPtNegEtaPos->Fill(phiIn, tpcP->Pt(), sdca); } //neg eta else{ fRecPtNegEtaNeg->Fill(tpcP->Pt()); fRec1PtNegEtaNeg->Fill(1/tpcP->Pt()); fRecPhiNegEtaNeg->Fill(phiIn); fRecDcaNegPhiEtaNeg->Fill(sdca, phiIn); fRecDcaNegPtEtaNeg->Fill(sdca, TMath::Log10(tpcP->Pt())); fRecPtNegPhiEtaNeg->Fill(TMath::Log10(tpcP->Pt()), phiIn); //fRecDcaPhiPtNegEtaNeg->Fill(phiIn, tpcP->Pt(), sdca); } } //all particles with positive eta if(tpcP->Eta()>0){ fRecQPtPosEta->Fill(tpcP->Charge()/tpcP->Pt()); fRecPtPosEta->Fill(tpcP->Pt()); fRecPhiPosEta->Fill(TMath::RadToDeg()*phiIn); fRecQPtPosEtaVz->Fill(tpcP->Charge()/tpcP->Pt(),tpcP->Zv()); fRecDcaPosEta->Fill(sdca); fRecDPosEta->Fill(xy); } //all particles with negative eta (and eta==0) else{ fRecQPtNegEta->Fill(tpcP->Charge()/tpcP->Pt()); fRecPtNegEta->Fill(tpcP->Pt()); fRecPhiNegEta->Fill(TMath::RadToDeg()*phiIn); fRecQPtNegEtaVz->Fill(tpcP->Charge()/tpcP->Pt(),tpcP->Zv()); fRecDcaNegEta->Fill(sdca); fRecDNegEta->Fill(xy); } fRecPtTpcSector[Int_t(phiIn* TMath::RadToDeg()/20)]->Fill(tpcP->Pt()); fRecEtaTpcSector[Int_t(phiIn* TMath::RadToDeg()/20)]->Fill(tpcP->Eta()); fSignedDcaTpcSector[Int_t(phiIn* TMath::RadToDeg()/20)]->Fill(sdca); fRecQPtTpcSector[Int_t(phiIn* TMath::RadToDeg()/20)]->Fill(tpcP->Charge()/tpcP->Pt()); fRecEtaPtTpcSector[Int_t(phiIn* TMath::RadToDeg()/20)]->Fill(tpcP->Eta()/tpcP->Pt()); // // another track loop // for (Int_t iTrack2 = 0; iTrack2 < event->GetNumberOfTracks(); iTrack2++) { // if(LeadingTrack==iTrack2) continue; // AliVParticle *track2 = event->GetTrack(iTrack2); // AliESDtrack* esdtrack2 = dynamic_cast(track2); // if (!track2) { // Printf("ERROR: Could not receive track %d", iTrack); // continue; // } // if (!fCuts->AcceptTrack(esdtrack2)) continue; // //propagate to dca // esdtrack2->PropagateToDCA(event->GetPrimaryVertex(), // event->GetMagneticField(), 10000.); // fDeltaPhiLeading->Fill((LeadingPhi-esdtrack2->Phi())*TMath::RadToDeg(), // LeadingPhi*TMath::RadToDeg() ); // }//second track loop // if(fTrackType==2) delete tpcP; // delete in case of TPCOnlyTrack }//first track loop //prevent mem leak for TPConly track if(fTrackType==2&&tpcP){ delete tpcP; tpcP = 0; } // Post output data. // PostData(1, fHistPt); PostData(1, fHists); } //________________________________________________________________________ void AliAnalysisTaskQASym::Terminate(Option_t *) { }