X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PWG1%2FAliAnalysisTaskQASym.cxx;h=d8ff0119dbcedbf1108d9e74dd5ab11f57d3f1eb;hb=bf34559d8be16e54597576f46eac79de17455c74;hp=537a1b929ec3938335cc026c50e7d8c18426401d;hpb=1fcb92efbfbab8566221af449352b29f2a64a4be;p=u%2Fmrichter%2FAliRoot.git diff --git a/PWG1/AliAnalysisTaskQASym.cxx b/PWG1/AliAnalysisTaskQASym.cxx index 537a1b929ec..d8ff0119dbc 100644 --- a/PWG1/AliAnalysisTaskQASym.cxx +++ b/PWG1/AliAnalysisTaskQASym.cxx @@ -8,8 +8,6 @@ #include "TParticle.h" #include "TParticlePDG.h" #include "TProfile.h" -#include "TNtuple.h" -#include "TFile.h" #include "AliAnalysisTask.h" #include "AliAnalysisManager.h" @@ -39,19 +37,24 @@ ClassImp(AliAnalysisTaskQASym) AliAnalysisTaskQASym::AliAnalysisTaskQASym(const char *name) : AliAnalysisTaskSE(name) ,fTrackType(0) + ,fStandAlone(0) + ,fLow(0) + ,fHigh(100000) ,fFieldOn(kTRUE) - ,fHists(0) - ,fHistRECpt(0) ,fEta(0) + ,fEtaWidth(0) + ,fPhiWidth(0) + ,fDcaWidth(0) + ,fPtWidth(0) ,fEtaPhi(0) ,fEtaPt(0) ,fQPt(0) ,fDca(0) ,fqRec(0) - ,fsigmaPt(0) - + ,fSigmaPtHist(0) + ,fRecPtPos(0) ,fRecPtNeg(0) ,fRecPhiPos(0) @@ -65,8 +68,8 @@ ClassImp(AliAnalysisTaskQASym) ,fRecDcaNegInv(0) ,fRecDPos(0) ,fRecDNeg(0) - - + + ,fRecQPtPosEta(0) ,fRecQPtNegEta(0) ,fRecPtPosEta(0) @@ -77,7 +80,7 @@ ClassImp(AliAnalysisTaskQASym) ,fRecDcaNegEta(0) ,fRecDPosEta(0) ,fRecDNegEta(0) - + ,fRecPtPosVz(0) ,fRecPtNegVz(0) ,fRecEtaPosVz(0) @@ -90,20 +93,24 @@ ClassImp(AliAnalysisTaskQASym) ,fRecQPtNegEtaVz(0) ,fRecEtaPtPosVz(0) ,fRecEtaPtNegVz(0) - - + + ,fDeltaPhiAll(0) ,fDeltaPhiLeading(0) ,fDiffDcaD(0) - + ,fPhiRec(0) ,fThetaRec(0) ,fNumber(0) + ,fNumberAfterCut(0) ,fVx(0) ,fVy(0) ,fVz(0) - ,test(0) - + ,fVertexX(0) + ,fVertexY(0) + ,fVertexZ(0) + ,fNVertexSPD(0) + ,fNVertexTracks(0) ,fRecDcaPosPhi(0) ,fRecDcaNegPhi(0) ,fRecPtPosPhi(0) @@ -145,20 +152,20 @@ ClassImp(AliAnalysisTaskQASym) ,fRecPtNegPhiEtaNeg(0) - ,fRecDcaPhiPtPosEtaPos(0) - ,fRecDcaPhiPtNegEtaPos(0) - ,fRecDcaPhiPtPosEtaNeg(0) - ,fRecDcaPhiPtNegEtaNeg(0) +// ,fRecDcaPhiPtPosEtaPos(0) +// ,fRecDcaPhiPtNegEtaPos(0) +// ,fRecDcaPhiPtPosEtaNeg(0) +// ,fRecDcaPhiPtNegEtaNeg(0) + ,fEtavPt(0) + ,fPhivPt(0) + ,fCompareTPCparam(0) - - ,sdca(0) - ,xy(0) - ,z(0) - ,xvertexcor(0) - ,yvertexcor(0) - + ,fITSlayer(0) + ,fITSlayerEta(0) + ,fITSlayerPhi(0) + ,fCuts(0) { @@ -188,6 +195,15 @@ ClassImp(AliAnalysisTaskQASym) fDcaSigmaNeg[i] =0; } + for(Int_t i = 0;i< 3;i++){ + for(Int_t j = 0;j< 2;j++){ + fEtaBinPt[i][j]=0; + fPhiBinPt[i][j]=0; + fDcaBinPt[i][j]=0; + fEtaPhiBinPt[i][j]=0; + } + } + DefineOutput(1, TList::Class()); @@ -204,30 +220,53 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects() Bool_t oldStatus = TH1::AddDirectoryStatus(); TH1::AddDirectory(kFALSE); - Double_t range = 0.2; + Double_t range = 0.3; Double_t pt = 20.; fHists = new TList(); - // test = new TNtuple("test","test", - // "pt:phi:theta:x:y:z:charge"); + fHistRECpt = new TH1F("fHistRECpt", " p_{T}", - 100, 0., 0.6); + 200, 0., pt); fEta = new TH1F("fEta", " #eta", 200, -2., 2.); + fEtaWidth = new TH1F("fEtaWidth", + " #eta", + 200, -2., 2.); + fPhiWidth = new TH1F("fPhiWidth", + " #phi", + 200, 0., 2*TMath::Pi()); + fDcaWidth = new TH1F("fDcaWidth", + "dca", + 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9)); + fPtWidth = new TH1F("fPtWidth", + "p_{T}", + 200, 0., pt); fEtavPt = new TH2F("fEtavPt", " #eta -p_{T}", 200, -2., 2., - 100, 0, 1.5); + 100, -3, 4); + fPhivPt = new TH2F("fPhivPt", + " #phi -p_{T}", + 200, 0, 2*TMath::Pi(), + 100, -3, 5); fCompareTPCparam = new TH2F("fCompareTPCparam", "fCompareTPCparam", 100, -1., 1.,100,-5, 5); - + + fITSlayer = new TH1F("fITSlayer", + "fITSlayer", + 8, -1.5, 6.5); + fITSlayerEta = new TH2F("fITSlayerEta", + "fITSlayerEta", + 8, -1.5, 6.5, 200, -2.,2.); + fITSlayerPhi = new TH2F("fITSlayerPhi", + "fITSlayerPhi", + 8, -1.5, 6.5, 200, 0,2*TMath::Pi()); fEtaPhi = new TH2F("fEtaPhi", " #eta - #phi", 200, -2., 2., 128, 0., 2. * TMath::Pi()); - fThetaRec = new TH1F("fThetaRec", " #theta", 180, 0., TMath::Pi()); @@ -236,17 +275,35 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects() 180, 0., 2*TMath::Pi()); fNumber = new TH1F("fNumber", "number of tracks per event", - 50, 0.5, 49.5); + 300, -0.5, 299.5); + fNumberAfterCut = new TH1F("fNumberAfterCut", + "number of tracks per event after cuts", + 300, -0.5, 299.5); fVx = new TH1F("fVx", - "X of vertex", + "X of first track point", 100, -1., 1.); fVy = new TH1F("fVy", - "Y of vertex", + "Y of first track point", 100, -1., 1.); fVz = new TH1F("fVz", - "Z of vertex", + "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.); + fNVertexSPD = new TH1F("fNVertexSPD", + "Number of SPD vertices", + 10, -0.5, 9.5); + fNVertexTracks = new TH1F("fNVertexTracks", + "Number of track vertices", + 10, -0.5, 9.5); + fEtaPt = new TH1F("fEtaPt", " #eta/p_{T} ", 100, -1., 1.); @@ -264,7 +321,7 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects() " charge all reconstructed particle", 21, -9.5, 10.5); - fsigmaPt = new TH1F("fsigmaPt", + fSigmaPtHist = new TH1F("fSigmaPtHist", "Log_{10}(#sigma_{p_{T}})", 200, -4., 8.); @@ -651,7 +708,7 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects() fRecEtaNegLadder[i]->GetXaxis()->SetTitle("#eta"); } - Double_t vzmax = 15; + Double_t vzmax = 15.; fRecPtPosVz = new TH2F("fRecPtPosVz", "p_{T} distribution vs Vz()", @@ -780,58 +837,92 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects() - 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)"); - - +// 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)"); + + TString charge[2]; + charge[0]="Pos"; + charge[1]="Neg"; + + for(Int_t i=0;i<3;i++){ + for(Int_t j=0;j<2;j++){ + fEtaBinPt[i][j] = new TH1F(Form("fEtaBinPt%d%s", i, charge[j].Data()), + "eta", + 200, -2., 2.); + fPhiBinPt[i][j] = new TH1F(Form("fPhiBinPt%d%s", i,charge[j].Data() ), + "phi", + 181, 0, 2*TMath::Pi()); + fDcaBinPt[i][j] = new TH1F(Form("fDcaBinPt%d%s", i, charge[j].Data()), + "DCA", + 200,-range*(1+Int_t(fTrackType/2)*9), + range*(1+Int_t(fTrackType/2)*9) ); + fEtaPhiBinPt[i][j]= new TH2F(Form("fEtaPhiBinPt%d%s", i, charge[j].Data()), + "eta-phi", + 200, -2., 2., 200, 0.,2*TMath::Pi()); + } + } fHists->SetOwner(); fHists->Add(fHistRECpt); fHists->Add(fEta); + fHists->Add(fEtaWidth); + fHists->Add(fPhiWidth); + fHists->Add(fDcaWidth); + fHists->Add(fPtWidth); fHists->Add(fEtavPt); + fHists->Add(fPhivPt); fHists->Add(fCompareTPCparam); + fHists->Add(fITSlayer); + fHists->Add(fITSlayerEta); + fHists->Add(fITSlayerPhi); fHists->Add(fEtaPhi); fHists->Add(fThetaRec); fHists->Add(fPhiRec); fHists->Add(fNumber); + fHists->Add(fNumberAfterCut); fHists->Add(fVx); fHists->Add(fVy); fHists->Add(fVz); + fHists->Add(fVertexX); + fHists->Add(fVertexY); + fHists->Add(fVertexZ); + fHists->Add(fNVertexSPD); + fHists->Add(fNVertexTracks); fHists->Add(fEtaPt); fHists->Add(fQPt); @@ -842,7 +933,7 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects() fHists->Add(fDiffDcaD); fHists->Add(fqRec); - fHists->Add(fsigmaPt); + fHists->Add(fSigmaPtHist); fHists->Add(fRecPtPos); fHists->Add(fRecPtNeg); @@ -957,13 +1048,19 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects() fHists->Add(fRecDcaPosPtEtaNeg); fHists->Add(fRecDcaNegPtEtaNeg); - fHists->Add(fRecDcaPhiPtPosEtaPos); - fHists->Add(fRecDcaPhiPtPosEtaNeg); - fHists->Add(fRecDcaPhiPtNegEtaPos); - fHists->Add(fRecDcaPhiPtNegEtaNeg); - - - + // fHists->Add(fRecDcaPhiPtPosEtaPos); + // fHists->Add(fRecDcaPhiPtPosEtaNeg); + // fHists->Add(fRecDcaPhiPtNegEtaPos); + // fHists->Add(fRecDcaPhiPtNegEtaNeg); + + for(Int_t i=0;i<3;i++){ + for(Int_t j=0;j<2;j++){ + fHists->Add(fEtaBinPt[i][j]); + fHists->Add(fPhiBinPt[i][j]); + fHists->Add(fDcaBinPt[i][j]); + fHists->Add(fEtaPhiBinPt[i][j]); + } + } // for (Int_t i=0; iGetEntries(); ++i) { @@ -973,7 +1070,6 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects() // h1->Sumw2(); // } // } - // BKC TH1::AddDirectory(oldStatus); } @@ -982,6 +1078,9 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects() void AliAnalysisTaskQASym::UserExec(Option_t *) { + // QA of global, TPC, ITS and ITS stand alone tracks + // exploiting basic symmetries + AliVEvent *event = InputEvent(); if (!event) { Printf("ERROR: Could not retrieve event"); @@ -1007,13 +1106,49 @@ void AliAnalysisTaskQASym::UserExec(Option_t *) Float_t leadingPhi = 0;//TMath::Pi(); - if(event->GetNumberOfTracks()!=0) fNumber->Fill(event->GetNumberOfTracks()); + //check vertices + AliESDEvent* esd = dynamic_cast(event); + Int_t nPileSPDVertices=1+esd->GetNumberOfPileupVerticesSPD(); // also SPD main vertex + Int_t nPileTrkVertices=esd->GetNumberOfPileupVerticesTracks(); + fNVertexSPD->Fill(nPileSPDVertices); + fNVertexTracks->Fill(nPileTrkVertices); + + //check primary vertex 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; + fNumber->Fill(event->GetNumberOfTracks()); + AliESDtrack *tpcP = 0x0; + Int_t fNTracksAccepted=0; + Float_t phiArray [event->GetNumberOfTracks()]; + Float_t etaArray [event->GetNumberOfTracks()]; + Float_t ptArray [event->GetNumberOfTracks()]; + Float_t dcaArray [event->GetNumberOfTracks()]; + Int_t chargeArray[event->GetNumberOfTracks()]; + Bool_t acceptedArray[event->GetNumberOfTracks()]; + + for (Int_t i = 0; i < event->GetNumberOfTracks(); i++) { + phiArray[i] = 0.; + etaArray[i] = 0.; + ptArray[i] = 0.; + dcaArray[i] = 0.; + chargeArray[i] = 0; + acceptedArray[i]= kFALSE; + + } + + for (Int_t iTrack = 0; iTrack < event->GetNumberOfTracks(); iTrack++) { @@ -1035,7 +1170,8 @@ void AliAnalysisTaskQASym::UserExec(Option_t *) //__________ // run Task for global tracks or ITS tracks or TPC tracks const AliExternalTrackParam *tpcPin = 0x0; - Double_t phiIn=0; + Double_t phiIn=0.; + if(fTrackType==0){ //Fill all histograms with global tracks tpcP = esdtrack; @@ -1049,6 +1185,12 @@ void AliAnalysisTaskQASym::UserExec(Option_t *) phiIn = tpcP->Phi(); if (!tpcP) continue; if (!fCuts->AcceptTrack(tpcP)) continue; + if(fStandAlone==kTRUE) { + if(!(tpcP->GetStatus()&AliESDtrack::kITSpureSA))continue; + } + else if(fStandAlone==kFALSE){ + if(tpcP->GetStatus()&AliESDtrack::kITSpureSA)continue; + } } else if(fTrackType==2){ //Fill all histograms with TPC track information @@ -1069,6 +1211,14 @@ void AliAnalysisTaskQASym::UserExec(Option_t *) //___________ // + + fNTracksAccepted++; + phiArray[iTrack] = phiIn; + etaArray[iTrack] = tpcP->Eta(); + ptArray[iTrack] = tpcP->Pt(); + chargeArray[iTrack] = tpcP->Charge(); + acceptedArray[iTrack]= kTRUE; + if(tpcP->E()>leadingEnergy){ leadingTrack=iTrack; @@ -1080,12 +1230,13 @@ void AliAnalysisTaskQASym::UserExec(Option_t *) fqRec->Fill(tpcP->Charge()); - Double_t sigmapt = tpcP->GetSigma1Pt2(); - sigmapt= sqrt(sigmapt); - sigmapt= sigmapt *(tpcP->Pt()*tpcP->Pt()); + Double_t fSigmaPt = tpcP->GetSigma1Pt2(); + fSigmaPt= sqrt(fSigmaPt); + fSigmaPt= fSigmaPt *(tpcP->Pt()*tpcP->Pt()); - if(sigmapt == 0.)continue; - fsigmaPt->Fill(TMath::Log10(sigmapt)); + if(TMath::Abs(fSigmaPt) < 1.e-10) continue; + + fSigmaPtHist->Fill(TMath::Log10(fSigmaPt)); // hits in ITS layer @@ -1123,10 +1274,12 @@ void AliAnalysisTaskQASym::UserExec(Option_t *) //------------------- + Float_t fXVertexCor = 0.; + Float_t fYVertexCor = 0.; - xvertexcor = tpcP->Xv() - vertex->GetX(); // coordinate corrected for vertex position - yvertexcor = tpcP->Yv() - vertex->GetY(); // " - sdca = (tpcP->Py()*xvertexcor - tpcP->Px()*yvertexcor)/tpcP->Pt(); + fXVertexCor = tpcP->Xv() - vertex->GetX(); // coordinate corrected for vertex position + fYVertexCor = tpcP->Yv() - vertex->GetY(); // " + Double_t fSignedDca = (tpcP->Py()*fXVertexCor - tpcP->Px()*fYVertexCor)/tpcP->Pt(); fqPtRec[cas]->Fill(tpcP->Charge()/tpcP->Pt()); @@ -1135,7 +1288,8 @@ void AliAnalysisTaskQASym::UserExec(Option_t *) fHistRECpt->Fill(tpcP->Pt()); fEta->Fill(tpcP->Eta()); - fEtavPt->Fill(tpcP->Eta(), tpcP->Pt()); + fEtavPt->Fill(tpcP->Eta(), TMath::Log(tpcP->Pt())); + fPhivPt->Fill(phiIn, TMath::Log(tpcP->Pt())); fEtaPhi->Fill(tpcP->Eta(), phiIn); fThetaRec->Fill(tpcP->Theta()); fPhiRec->Fill(phiIn); @@ -1146,27 +1300,40 @@ void AliAnalysisTaskQASym::UserExec(Option_t *) fEtaPt->Fill(tpcP->Eta()/tpcP->Pt()); fQPt->Fill(tpcP->Charge()/tpcP->Pt()); - fDca->Fill(sdca); + fDca->Fill(fSignedDca); + dcaArray[iTrack]=fSignedDca; fRecQPtPhi->Fill(tpcP->Charge()/tpcP->Pt(), phiIn); + Float_t fXY = 0.; + Float_t fZ = 0.; - tpcP->GetImpactParameters(xy,z); - fDiffDcaD->Fill(sdca+xy); + tpcP->GetImpactParameters(fXY,fZ); + fDiffDcaD->Fill(fSignedDca+fXY); - if(fTrackType==2) fCompareTPCparam->Fill(z,tpcPin->GetTgl()); - - //for positive particles + if(fTrackType==2) fCompareTPCparam->Fill(fZ,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); + fITSlayerEta->Fill(itsLayer, tpcP->Eta()); + fITSlayerPhi->Fill(itsLayer, tpcP->Phi()); + } + } + } + //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()); + fSignedDcaPosVz->Fill(fSignedDca,tpcP->Zv()); fRecEtaPos->Fill(tpcP->Eta()); fRecEtaPosLadder[cas]->Fill(tpcP->Eta()); @@ -1174,37 +1341,37 @@ void AliAnalysisTaskQASym::UserExec(Option_t *) fRecEtaPosVz->Fill(tpcP->Eta(),tpcP->Zv()); fRecEtaPtPosVz->Fill(tpcP->Eta()/tpcP->Pt(),tpcP->Zv()); - fRecDcaPos->Fill(sdca); - fRecDcaPosPhi->Fill(sdca, phiIn); + fRecDcaPos->Fill(fSignedDca); + fRecDcaPosPhi->Fill(fSignedDca, 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); + fRecDPos->Fill(fXY); + fSignDcaPos[cas]->Fill(fSignedDca); - fDcaSigmaPos[cas]->Fill(sdca, TMath::Log10(sigmapt)); + fDcaSigmaPos[cas]->Fill(fSignedDca, TMath::Log10(fSigmaPt)); - fPtSigmaPos[cas]->Fill(TMath::Log10(sigmapt)); + fPtSigmaPos[cas]->Fill(TMath::Log10(fSigmaPt)); //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())); + fRecDcaPosPhiEtaPos->Fill(fSignedDca, phiIn); + fRecDcaPosPtEtaPos->Fill(fSignedDca, TMath::Log10(tpcP->Pt())); fRecPtPosPhiEtaPos->Fill(TMath::Log10(tpcP->Pt()), phiIn); - fRecDcaPhiPtPosEtaPos->Fill(phiIn, tpcP->Pt(), sdca); + //fRecDcaPhiPtPosEtaPos->Fill(phiIn, tpcP->Pt(), fSignedDca); } //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())); + fRecDcaPosPhiEtaNeg->Fill(fSignedDca, phiIn); + fRecDcaPosPtEtaNeg->Fill(fSignedDca, TMath::Log10(tpcP->Pt())); fRecPtPosPhiEtaNeg->Fill(TMath::Log10(tpcP->Pt()), phiIn); - fRecDcaPhiPtPosEtaNeg->Fill(phiIn, tpcP->Pt(), sdca); + //fRecDcaPhiPtPosEtaNeg->Fill(phiIn, tpcP->Pt(), fSignedDca); } } @@ -1217,7 +1384,7 @@ void AliAnalysisTaskQASym::UserExec(Option_t *) fRecPhiNeg->Fill(TMath::RadToDeg()*phiIn); fRecPhiNegLadder[cas]->Fill(TMath::RadToDeg()*phiIn); fRecPhiNegVz->Fill(TMath::RadToDeg()*phiIn,tpcP->Zv()); - fSignedDcaNegVz->Fill(sdca,tpcP->Zv()); + fSignedDcaNegVz->Fill(fSignedDca,tpcP->Zv()); fRecEtaPtNegVz->Fill(tpcP->Eta()/tpcP->Pt(),tpcP->Zv()); fRecEtaNeg->Fill(tpcP->Eta()); @@ -1225,40 +1392,40 @@ void AliAnalysisTaskQASym::UserExec(Option_t *) fRecEtaPtNeg->Fill(tpcP->Eta()/tpcP->Pt()); fRecEtaNegVz->Fill(tpcP->Eta(),tpcP->Zv()); - fRecDcaNeg->Fill(sdca); - fRecDcaNegInv->Fill(-sdca); - fRecDcaNegPhi->Fill(sdca, phiIn); + fRecDcaNeg->Fill(fSignedDca); + fRecDcaNegInv->Fill(-fSignedDca); + fRecDcaNegPhi->Fill(fSignedDca, 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); + fRecDNeg->Fill(fXY); + fSignDcaNeg[cas]->Fill(fSignedDca); + fSignDcaNegInv[cas]->Fill(-fSignedDca); - fDcaSigmaNeg[cas]->Fill(sdca,TMath::Log10(sigmapt)); + fDcaSigmaNeg[cas]->Fill(fSignedDca,TMath::Log10(fSigmaPt)); - fPtSigmaNeg[cas]->Fill(TMath::Log10(sigmapt)); + fPtSigmaNeg[cas]->Fill(TMath::Log10(fSigmaPt)); //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())); + fRecDcaNegPhiEtaPos->Fill(fSignedDca, phiIn); + fRecDcaNegPtEtaPos->Fill(fSignedDca, TMath::Log10(tpcP->Pt())); fRecPtNegPhiEtaPos->Fill(TMath::Log10(tpcP->Pt()), phiIn); - fRecDcaPhiPtNegEtaPos->Fill(phiIn, tpcP->Pt(), sdca); + //fRecDcaPhiPtNegEtaPos->Fill(phiIn, tpcP->Pt(), fSignedDca); } //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())); + fRecDcaNegPhiEtaNeg->Fill(fSignedDca, phiIn); + fRecDcaNegPtEtaNeg->Fill(fSignedDca, TMath::Log10(tpcP->Pt())); fRecPtNegPhiEtaNeg->Fill(TMath::Log10(tpcP->Pt()), phiIn); - fRecDcaPhiPtNegEtaNeg->Fill(phiIn, tpcP->Pt(), sdca); + //fRecDcaPhiPtNegEtaNeg->Fill(phiIn, tpcP->Pt(), fSignedDca); } } @@ -1271,8 +1438,8 @@ void AliAnalysisTaskQASym::UserExec(Option_t *) fRecPtPosEta->Fill(tpcP->Pt()); fRecPhiPosEta->Fill(TMath::RadToDeg()*phiIn); fRecQPtPosEtaVz->Fill(tpcP->Charge()/tpcP->Pt(),tpcP->Zv()); - fRecDcaPosEta->Fill(sdca); - fRecDPosEta->Fill(xy); + fRecDcaPosEta->Fill(fSignedDca); + fRecDPosEta->Fill(fXY); } //all particles with negative eta (and eta==0) else{ @@ -1280,8 +1447,8 @@ void AliAnalysisTaskQASym::UserExec(Option_t *) fRecPtNegEta->Fill(tpcP->Pt()); fRecPhiNegEta->Fill(TMath::RadToDeg()*phiIn); fRecQPtNegEtaVz->Fill(tpcP->Charge()/tpcP->Pt(),tpcP->Zv()); - fRecDcaNegEta->Fill(sdca); - fRecDNegEta->Fill(xy); + fRecDcaNegEta->Fill(fSignedDca); + fRecDNegEta->Fill(fXY); } @@ -1291,7 +1458,7 @@ void AliAnalysisTaskQASym::UserExec(Option_t *) fRecEtaTpcSector[Int_t(phiIn* TMath::RadToDeg()/20)]->Fill(tpcP->Eta()); fSignedDcaTpcSector[Int_t(phiIn* - TMath::RadToDeg()/20)]->Fill(sdca); + TMath::RadToDeg()/20)]->Fill(fSignedDca); fRecQPtTpcSector[Int_t(phiIn* TMath::RadToDeg()/20)]->Fill(tpcP->Charge()/tpcP->Pt()); fRecEtaPtTpcSector[Int_t(phiIn* @@ -1326,13 +1493,47 @@ void AliAnalysisTaskQASym::UserExec(Option_t *) }//first track loop + fNumberAfterCut->Fill(fNTracksAccepted); + + //second track loop + + for (Int_t iT = 0; iT < event->GetNumberOfTracks(); iT++) { + if(acceptedArray[iT]){ + if(ptArray[iT]>0.2 && ptArray[iT]<1. ){ + fEtaBinPt[0][Bool_t(chargeArray[iT]>0)]->Fill(etaArray[iT]); + fDcaBinPt[0][Bool_t(chargeArray[iT]>0)]->Fill(dcaArray[iT]); + fPhiBinPt[0][Bool_t(chargeArray[iT]>0)]->Fill(phiArray[iT]); + fEtaPhiBinPt[0][Bool_t(chargeArray[iT]>0)]->Fill(etaArray[iT], phiArray[iT]); + } + else if(ptArray[iT]>1. && ptArray[iT]<5.){ + fEtaBinPt[1][Bool_t(chargeArray[iT]>0)]->Fill(etaArray[iT]); + fDcaBinPt[1][Bool_t(chargeArray[iT]>0)]->Fill(dcaArray[iT]); + fPhiBinPt[1][Bool_t(chargeArray[iT]>0)]->Fill(phiArray[iT]); + fEtaPhiBinPt[1][Bool_t(chargeArray[iT]>0)]->Fill(etaArray[iT], phiArray[iT]); + } + else if (ptArray[iT]>5.){ + fEtaBinPt[2][Bool_t(chargeArray[iT]>0)]->Fill(etaArray[iT]); + fDcaBinPt[2][Bool_t(chargeArray[iT]>0)]->Fill(dcaArray[iT]); + fPhiBinPt[2][Bool_t(chargeArray[iT]>0)]->Fill(phiArray[iT]); + fEtaPhiBinPt[2][Bool_t(chargeArray[iT]>0)]->Fill(etaArray[iT], phiArray[iT]); + } + + if(fNTracksAccepted>=fLow&&fNTracksAccepted<=fHigh){ + fEtaWidth->Fill(etaArray[iT]); + fPhiWidth->Fill(phiArray[iT]); + fDcaWidth->Fill(dcaArray[iT]); + fPtWidth->Fill(ptArray[iT]); + } + } + } + + //prevent mem leak for TPConly track if(fTrackType==2&&tpcP){ delete tpcP; tpcP = 0; } - // Post output data. // PostData(1, fHistPt);