#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"
ClassImp(AliAnalysisTaskQASym)
-//________________________________________________________________________
-AliAnalysisTaskQASym::AliAnalysisTaskQASym(const char *name)
- : AliAnalysisTaskSE(name)
+ //________________________________________________________________________
+ AliAnalysisTaskQASym::AliAnalysisTaskQASym(const char *name)
+ : AliAnalysisTaskSE(name)
+ ,fTrackType(0)
+ ,fStandAlone(0)
+ ,fLow(0)
+ ,fHigh(100)
,fFieldOn(kTRUE)
,fHists(0)
,fHistRECpt(0)
,fEta(0)
+ ,fEtaWidth(0)
+ ,fPhiWidth(0)
+ ,fDcaWidth(0)
+ ,fPtWidth(0)
+ ,fEtaPhi(0)
,fEtaPt(0)
,fQPt(0)
,fDca(0)
+ ,fDcaZ(0)
,fqRec(0)
- ,fsigmaPt(0)
-
+ ,fSigmaPtHist(0)
+
,fRecPtPos(0)
,fRecPtNeg(0)
,fRecPhiPos(0)
,fRecDcaNegInv(0)
,fRecDPos(0)
,fRecDNeg(0)
-
+
+
,fRecQPtPosEta(0)
,fRecQPtNegEta(0)
,fRecPtPosEta(0)
,fRecDcaNegEta(0)
,fRecDPosEta(0)
,fRecDNegEta(0)
-
+
,fRecPtPosVz(0)
,fRecPtNegVz(0)
,fRecEtaPosVz(0)
,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)
+ ,fNVertexSPD(0)
+ ,fNVertexTracks(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)
+ ,fPhivPt(0)
+
+ ,fCompareTPCparam(0)
+
+ ,fITSlayer(0)
+ ,fITSlayerEta(0)
+ ,fITSlayerPhi(0)
,fCuts(0)
-
-
{
- // Constructor
+ // Constructor
+ for(Int_t i = 0;i<4;++i){
+ fVertexX[i]=0;
+ fVertexY[i]=0;
+ fVertexZ[i]=0;
+ }
+
for(Int_t i = 0;i<18;++i){
fRecPtTpcSector[i] = 0;
fRecEtaTpcSector[i] = 0;
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());
// Create histograms
// Called once
- Double_t range = 300.;
+ Bool_t oldStatus = TH1::AddDirectoryStatus();
+ TH1::AddDirectory(kFALSE);
+
+ 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., pt);
+ 200, 0., pt);
fEta = new TH1F("fEta",
- " #eta",
- 200, -2., 2.);
+ " #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, -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());
+ " #theta",
+ 180, 0., TMath::Pi());
fPhiRec = new TH1F("fPhiRec",
- " #phi",
- 180, 0., 2*TMath::Pi());
+ " #phi",
+ 180, 0., 2*TMath::Pi());
fNumber = new TH1F("fNumber",
"number of tracks per event",
- 50, 0.5, 49.5);
+ 500, -5, 4995);
+ fNumberAfterCut = new TH1F("fNumberAfterCut",
+ "number of tracks per event after cuts",
+ 500, -5, 4995);
fVx = new TH1F("fVx",
- "X of vertex",
- 500, -500., 500.);
+ "X of first track point",
+ 100, -1., 1.);
fVy = new TH1F("fVy",
- "Y of vertex",
- 500, -500., 500.);
+ "Y of first track point",
+ 100, -1., 1.);
fVz = new TH1F("fVz",
- "Z of vertex",
- 500, -500., 500.);
-
+ "Z of first track point",
+ 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.);
+ " #eta/p_{T} ",
+ 100, -1., 1.);
fQPt = new TH1F("fQPt",
- " charge/p_{T} ",
- 100, -1., 1.);
+ " charge/p_{T} ",
+ 100, -1., 1.);
fDca = new TH1F("fDca",
- " dca ",
- 200, -range, range);
+ " dca ",
+ 200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
+
+ fDcaZ = new TH1F("fDcaZ", "fDcaZ ",200, -3, 3);// limits fitting those of track cuts
fqRec = new TH1F("fqRec",
- " charge all reconstructed particle",
- 21, -9.5, 10.5);
+ " charge all reconstructed particle",
+ 21, -9.5, 10.5);
- fsigmaPt = new TH1F("fsigmaPt",
- "Log_{10}(#sigma_{p_{T}})",
- 200, -2., 8.);
-
-
-
+ fSigmaPtHist = new TH1F("fSigmaPtHist",
+ "Log_{10}(#sigma_{p_{T}})",
+ 200, -4., 8.);
+
+
+ TString lable[4]={"", "SPD", "Track", "TPC"};
+ for(Int_t i=0;i<4;i++){
+ fVertexX[i] = new TH1F(Form("fVertexX%s",lable[i].Data()),
+ Form("fVertexX%s",lable[i].Data()),
+ 250, -1., 1.);
+ fVertexY[i] = new TH1F(Form("fVertexY%s",lable[i].Data()),
+ Form("fVertexY%s",lable[i].Data()),
+ 250, -1., 1.);
+ if(i==1 || i==2){
+ fVertexZ[i] = new TH1F(Form("fVertexZ%s",lable[i].Data()),
+ Form("fVertexZ%s",lable[i].Data()),
+ 200, -5., 5.);
+ }
+ else{
+ fVertexZ[i] = new TH1F(Form("fVertexZ%s",lable[i].Data()),
+ Form("fVertexZ%s",lable[i].Data()),
+ 200, -50., 50.);
+ }
+ }
//------------
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, range);
+ " 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, range);
+ " 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, range);
+ " 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, -2., 8.);
+ " #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, -2., 8.);
+ " #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.);
+ "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, range,200, -4., 4. );
+ " 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, range,200, -4., 4. );
+ " 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
+ // 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)");
+ 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)");
+ 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, range);
- fRecDcaPos->GetXaxis()->SetTitle("dca (cm)");
- fRecDcaNeg = new TH1F("fRecDcaNeg",
- " dca",
- 100, -range, range);
- fRecDcaNeg->GetXaxis()->SetTitle("dca (cm)");
-
- fRecDcaNegInv = new TH1F("fRecDcaNegInv",
- " dca",
- 100, -range, range);
- fRecDcaNegInv->GetXaxis()->SetTitle("dca (cm)");
-
-
- fRecDPos = new TH1F("fRecDPos",
- " d",
- 100, -range, range);
- fRecDPos->GetXaxis()->SetTitle("d (cm)");
- fRecDNeg = new TH1F("fRecDNeg",
- "d",
- 100, -range, range);
- 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, range);
- fRecDcaPosEta->GetXaxis()->SetTitle("dca (cm)");
- fRecDcaNegEta = new TH1F("fRecDcaNegEta",
- " dca",
- 100, -range, range);
- fRecDcaNegEta->GetXaxis()->SetTitle("dca (cm)");
-
- fRecDPosEta = new TH1F("fRecDPosEta",
- " d",
- 100, -range, range);
- fRecDPosEta->GetXaxis()->SetTitle("d (cm)");
- fRecDNegEta = new TH1F("fRecDNegEta",
+ 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)");
+ 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++){
+ // 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)");
+ 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)");
+ 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, range );
- fSignedDcaTpcSector[sector]->GetXaxis()->SetTitle("dca");
+ 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)");
+ 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)");
+ 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)");
+ }
+ // 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)");
+ 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)");
+ 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");
- }
+ fRecEtaNegLadder[i] = new TH1F(Form("fRecEtaNegLadder%d", i),
+ "#eta distribution",
+ 200, -2., 2.);
+ fRecEtaNegLadder[i]->GetXaxis()->SetTitle("#eta");
+ }
- Double_t vzmax = 30;
+ 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})");
+ 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})");
+ 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",
+ 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()",
- 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, range, 200,-vzmax,vzmax);
- fSignedDcaPosVz->GetXaxis()->SetTitle("dca (cm)");
- fSignedDcaNegVz = new TH2F("fSignedDcaNegVz",
- "dca vs Vz()",
- 200, -range, range,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}");
+ 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, -5., 5.);
-
+ 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)");
+
+ 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(test);
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(fNVertexSPD);
+ fHists->Add(fNVertexTracks);
fHists->Add(fEtaPt);
fHists->Add(fQPt);
fHists->Add(fDca);
+ fHists->Add(fDcaZ);
fHists->Add(fDeltaPhiAll);
fHists->Add(fDeltaPhiLeading);
fHists->Add(fDiffDcaD);
fHists->Add(fqRec);
- fHists->Add(fsigmaPt);
+ fHists->Add(fSigmaPtHist);
fHists->Add(fRecPtPos);
fHists->Add(fRecPtNeg);
fHists->Add(fRecDPosEta);
fHists->Add(fRecDNegEta);
-
+ for(Int_t i=0;i<4;i++){
+ fHists->Add(fVertexX[i]);
+ fHists->Add(fVertexY[i]);
+ fHists->Add(fVertexZ[i]);
+ }
for(Int_t i=0;i<18;i++){
fHists->Add(fRecPtTpcSector[i]);
fHists->Add(fRecEtaTpcSector[i]);
}
-
-
- for (Int_t i=0; i<fHists->GetEntries(); ++i) {
- TH1 *h1 = dynamic_cast<TH1*>(fHists->At(i));
- if (h1){
- // Printf("%s ",h1->GetName());
- h1->Sumw2();
+ 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;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]);
}
}
- // BKC
+
+// for (Int_t i=0; i<fHists->GetEntries(); ++i) {
+// TH1 *h1 = dynamic_cast<TH1*>(fHists->At(i));
+// if (h1){
+// // Printf("%s ",h1->GetName());
+// h1->Sumw2();
+// }
+// }
+
+ TH1::AddDirectory(oldStatus);
+ PostData(1, fHists);
}
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");
- return;
+ Printf("ERROR: Could not retrieve event");
+ return;
}
if(Entry()==0){
- AliESDEvent* esd = dynamic_cast<AliESDEvent*>(event);
+ AliESDEvent* esd = static_cast<AliESDEvent*>(event);
if(esd){
Printf("We are reading from ESD");
}
}
- Printf("There are %d tracks in this event", event->GetNumberOfTracks());
+
+
+ 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();
+
+
+ //check vertices
+ AliESDEvent* esd = static_cast<AliESDEvent*>(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
+ Float_t vx = 0;
+ Float_t vy = 0;
+ Float_t vz = 0;
+
+ //primary vertex: contribution from different vertexers
+ const AliVVertex* vertex = event->GetPrimaryVertex();
+ if(!vertex) return;
+ vx = vertex->GetX();
+ vy = vertex->GetY();
+ vz = vertex->GetZ();
+ if(vertex->GetNContributors()>0){
+ fVertexX[0]->Fill(vx);
+ fVertexY[0]->Fill(vy);
+ fVertexZ[0]->Fill(vz);
+ }
+
- Int_t LeadingTrack = 0;
- Float_t LeadingEnergy = -20.;
- Float_t LeadingPhi = 0;//TMath::Pi();
+ const AliVVertex* vertexSPD = esd->GetPrimaryVertexSPD();
+ if(vertexSPD){
+ if(vertexSPD->GetNContributors()>0){
+ fVertexX[1]->Fill(vertexSPD->GetX());
+ fVertexY[1]->Fill(vertexSPD->GetY());
+ fVertexZ[1]->Fill(vertexSPD->GetZ());
+ }
+ }
+
+ const AliVVertex* vertexTrack = esd->GetPrimaryVertexTracks();
+ if(vertexTrack){
+ if(vertexTrack->GetNContributors()>0){
+ fVertexX[2]->Fill(vertexTrack->GetX());
+ fVertexY[2]->Fill(vertexTrack->GetY());
+ fVertexZ[2]->Fill(vertexTrack->GetZ());
+ }
+ }
+
+ const AliVVertex* vertexTPC = esd->GetPrimaryVertexTPC();
+ if(vertexTPC){
+ if(vertexTPC->GetNContributors()>0){
+ fVertexX[3]->Fill(vertexTPC->GetX());
+ fVertexY[3]->Fill(vertexTPC->GetY());
+ fVertexZ[3]->Fill(vertexTPC->GetZ());
+ }
+ }
+
+ //cuts on general vertex
+ if(vertex->GetNContributors()<1) return;
+ if (TMath::Abs(vz) > 10.) return;
+
+ fNumber->Fill(event->GetNumberOfTracks());
+
+ AliESDtrack *tpcP = 0x0;
+ Int_t fNTracksAccepted=0;
+ const Int_t arrSize = event->GetNumberOfTracks();
+ Float_t * phiArray = new Float_t[arrSize];
+ Float_t * etaArray = new Float_t[arrSize];
+ Float_t * ptArray = new Float_t[arrSize];
+ Float_t * dcaArray = new Float_t[arrSize];
+ Int_t * chargeArray = new Int_t [arrSize];
+ Bool_t * acceptedArray = new Bool_t [arrSize];
+
+ 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;
+
+ }
- if(event->GetNumberOfTracks()!=0) fNumber->Fill(event->GetNumberOfTracks());
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<AliESDtrack*>(track);
+ AliESDtrack *esdtrack = static_cast<AliESDtrack*>(track);
+ esdtrack->PropagateToDCA(event->GetPrimaryVertex(),
+ event->GetMagneticField(), 10000.);
+
if (!track) {
Printf("ERROR: Could not receive track %d", iTrack);
continue;
}
-
- if (!fCuts->AcceptTrack(esdtrack)) continue;
- const AliExternalTrackParam * tpcP = esdtrack->GetTPCInnerParam();
- if (!tpcP) continue;
-
-
-
- if(tpcP->E()>LeadingEnergy){
- LeadingTrack=iTrack;
- LeadingEnergy=tpcP->E();
- LeadingPhi=tpcP->Phi();
+ //__________
+ // 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;
+ if (!tpcP) continue;
+ if (!fCuts->AcceptTrack(tpcP)) continue;
+ phiIn = tpcP->Phi();
}
-
+ 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(fStandAlone==kFALSE){
+ 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(static_cast<AliESDEvent*>(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;
+ }
+ //___________
+ //
+
+ 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;
+ leadingEnergy=tpcP->E();
+ leadingPhi=phiIn;
+ }
+
- //propagate to dca
- esdtrack->PropagateToDCA(event->GetPrimaryVertex(),
- event->GetMagneticField(), 10000.);
-
-
- // if(tpcP->Pt()<2.)continue;
-
-
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
Int_t cas=-1;
- if(esdtrack->HasPointOnITSLayer(0))
+ if(tpcP->HasPointOnITSLayer(0))
cas=0;
- else if(!esdtrack->HasPointOnITSLayer(0)
- && esdtrack->HasPointOnITSLayer(1))
+ else if(!tpcP->HasPointOnITSLayer(0)
+ && tpcP->HasPointOnITSLayer(1))
cas=1;
- else if(!esdtrack->HasPointOnITSLayer(0)
- && !esdtrack->HasPointOnITSLayer(1)
- && esdtrack->HasPointOnITSLayer(2))
+ else if(!tpcP->HasPointOnITSLayer(0)
+ && !tpcP->HasPointOnITSLayer(1)
+ && tpcP->HasPointOnITSLayer(2))
cas=2;
- else if(!esdtrack->HasPointOnITSLayer(0)
- && !esdtrack->HasPointOnITSLayer(1)
- && !esdtrack->HasPointOnITSLayer(2)
- && esdtrack->HasPointOnITSLayer(3))
+ else if(!tpcP->HasPointOnITSLayer(0)
+ && !tpcP->HasPointOnITSLayer(1)
+ && !tpcP->HasPointOnITSLayer(2)
+ && tpcP->HasPointOnITSLayer(3))
cas=3;
- else if(!esdtrack->HasPointOnITSLayer(0)
- && !esdtrack->HasPointOnITSLayer(1)
- && !esdtrack->HasPointOnITSLayer(2)
- && !esdtrack->HasPointOnITSLayer(3)
- && esdtrack->HasPointOnITSLayer(4))
+ else if(!tpcP->HasPointOnITSLayer(0)
+ && !tpcP->HasPointOnITSLayer(1)
+ && !tpcP->HasPointOnITSLayer(2)
+ && !tpcP->HasPointOnITSLayer(3)
+ && tpcP->HasPointOnITSLayer(4))
cas=4;
- else if( !esdtrack->HasPointOnITSLayer(0)
- && !esdtrack->HasPointOnITSLayer(1)
- && !esdtrack->HasPointOnITSLayer(2)
- && !esdtrack->HasPointOnITSLayer(3)
- && !esdtrack->HasPointOnITSLayer(4)
- && esdtrack->HasPointOnITSLayer(5))
+ 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 fXVertexCor = 0.;
+ Float_t fYVertexCor = 0.;
- sdca_tr = (tpcP->Py()*tpcP->Xv()
- - tpcP->Px()*tpcP->Yv())/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());
- test->Fill(tpcP->Pt(),tpcP->Phi(), tpcP->Theta(),
- tpcP->Xv(),tpcP->Yv(), tpcP->Zv(), tpcP->Charge());
+
fHistRECpt->Fill(tpcP->Pt());
fEta->Fill(tpcP->Eta());
+ 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(tpcP->Phi());
+ 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_tr);
+ fDca->Fill(fSignedDca);
+ dcaArray[iTrack]=fSignedDca;
+ fRecQPtPhi->Fill(tpcP->Charge()/tpcP->Pt(), phiIn);
+ Float_t fXY = 0.;
+ Float_t fZ = 0.;
-
-
- esdtrack->GetImpactParameters(xy,z);
- fDiffDcaD->Fill(sdca_tr+xy);
-
+ tpcP->GetImpactParameters(fXY,fZ);
+ fDiffDcaD->Fill(fSignedDca+fXY);
+ fDcaZ->Fill(fZ);
+ 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()*tpcP->Phi());
-
-
- fRecPhiPosLadder[cas]->Fill(TMath::RadToDeg()*tpcP->Phi());
- fRecPhiPosVz->Fill(TMath::RadToDeg()*tpcP->Phi(),tpcP->Zv());
- fSignedDcaPosVz->Fill(sdca_tr,tpcP->Zv());
+ fRecPhiPos->Fill(TMath::RadToDeg()*phiIn);
+
+
+ fRecPhiPosLadder[cas]->Fill(TMath::RadToDeg()*phiIn);
+ fRecPhiPosVz->Fill(TMath::RadToDeg()*phiIn,tpcP->Zv());
+ fSignedDcaPosVz->Fill(fSignedDca,tpcP->Zv());
fRecEtaPos->Fill(tpcP->Eta());
fRecEtaPosLadder[cas]->Fill(tpcP->Eta());
fRecEtaPosVz->Fill(tpcP->Eta(),tpcP->Zv());
fRecEtaPtPosVz->Fill(tpcP->Eta()/tpcP->Pt(),tpcP->Zv());
- fRecDcaPos->Fill(sdca_tr);
- fRecDPos->Fill(xy);
- fSignDcaPos[cas]->Fill(sdca_tr);
+ 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(fXY);
+ fSignDcaPos[cas]->Fill(fSignedDca);
- fDcaSigmaPos[cas]->Fill(sdca_tr, 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(fSignedDca, phiIn);
+ fRecDcaPosPtEtaPos->Fill(fSignedDca, TMath::Log10(tpcP->Pt()));
+ fRecPtPosPhiEtaPos->Fill(TMath::Log10(tpcP->Pt()), phiIn);
+ //fRecDcaPhiPtPosEtaPos->Fill(phiIn, tpcP->Pt(), fSignedDca);
+ }
+ //neg eta
+ else{
+ fRecPtPosEtaNeg->Fill(tpcP->Pt());
+ fRec1PtPosEtaNeg->Fill(1/tpcP->Pt());
+ fRecPhiPosEtaNeg->Fill(phiIn);
+ fRecDcaPosPhiEtaNeg->Fill(fSignedDca, phiIn);
+ fRecDcaPosPtEtaNeg->Fill(fSignedDca, TMath::Log10(tpcP->Pt()));
+ fRecPtPosPhiEtaNeg->Fill(TMath::Log10(tpcP->Pt()), phiIn);
+ //fRecDcaPhiPtPosEtaNeg->Fill(phiIn, tpcP->Pt(), fSignedDca);
+ }
+
}
//and negative particles
else {
fRecPtNegLadder[cas]->Fill(tpcP->Pt());
fRecPtNegVz->Fill(TMath::Log10(tpcP->Pt()),tpcP->Zv());
- fRecPhiNeg->Fill(TMath::RadToDeg()*tpcP->Phi());
- fRecPhiNegLadder[cas]->Fill(TMath::RadToDeg()*tpcP->Phi());
- fRecPhiNegVz->Fill(TMath::RadToDeg()*tpcP->Phi(),tpcP->Zv());
- fSignedDcaNegVz->Fill(sdca_tr,tpcP->Zv());
+ fRecPhiNeg->Fill(TMath::RadToDeg()*phiIn);
+ fRecPhiNegLadder[cas]->Fill(TMath::RadToDeg()*phiIn);
+ fRecPhiNegVz->Fill(TMath::RadToDeg()*phiIn,tpcP->Zv());
+ fSignedDcaNegVz->Fill(fSignedDca,tpcP->Zv());
fRecEtaPtNegVz->Fill(tpcP->Eta()/tpcP->Pt(),tpcP->Zv());
fRecEtaNeg->Fill(tpcP->Eta());
fRecEtaPtNeg->Fill(tpcP->Eta()/tpcP->Pt());
fRecEtaNegVz->Fill(tpcP->Eta(),tpcP->Zv());
- fRecDcaNeg->Fill(sdca_tr);
- fRecDcaNegInv->Fill(-sdca_tr);
- fRecDNeg->Fill(xy);
- fSignDcaNeg[cas]->Fill(sdca_tr);
- fSignDcaNegInv[cas]->Fill(-sdca_tr);
+ 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(fXY);
+ fSignDcaNeg[cas]->Fill(fSignedDca);
+ fSignDcaNegInv[cas]->Fill(-fSignedDca);
- fDcaSigmaNeg[cas]->Fill(sdca_tr,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(fSignedDca, phiIn);
+ fRecDcaNegPtEtaPos->Fill(fSignedDca, TMath::Log10(tpcP->Pt()));
+ fRecPtNegPhiEtaPos->Fill(TMath::Log10(tpcP->Pt()), phiIn);
+ //fRecDcaPhiPtNegEtaPos->Fill(phiIn, tpcP->Pt(), fSignedDca);
+ }
+ //neg eta
+ else{
+ fRecPtNegEtaNeg->Fill(tpcP->Pt());
+ fRec1PtNegEtaNeg->Fill(1/tpcP->Pt());
+ fRecPhiNegEtaNeg->Fill(phiIn);
+ fRecDcaNegPhiEtaNeg->Fill(fSignedDca, phiIn);
+ fRecDcaNegPtEtaNeg->Fill(fSignedDca, TMath::Log10(tpcP->Pt()));
+ fRecPtNegPhiEtaNeg->Fill(TMath::Log10(tpcP->Pt()), phiIn);
+ //fRecDcaPhiPtNegEtaNeg->Fill(phiIn, tpcP->Pt(), fSignedDca);
+ }
+
}
if(tpcP->Eta()>0){
fRecQPtPosEta->Fill(tpcP->Charge()/tpcP->Pt());
fRecPtPosEta->Fill(tpcP->Pt());
- fRecPhiPosEta->Fill(TMath::RadToDeg()*tpcP->Phi());
+ fRecPhiPosEta->Fill(TMath::RadToDeg()*phiIn);
fRecQPtPosEtaVz->Fill(tpcP->Charge()/tpcP->Pt(),tpcP->Zv());
- fRecDcaPosEta->Fill(sdca_tr);
- fRecDPosEta->Fill(xy);
+ fRecDcaPosEta->Fill(fSignedDca);
+ fRecDPosEta->Fill(fXY);
}
//all particles with negative eta (and eta==0)
else{
fRecQPtNegEta->Fill(tpcP->Charge()/tpcP->Pt());
fRecPtNegEta->Fill(tpcP->Pt());
- fRecPhiNegEta->Fill(TMath::RadToDeg()*tpcP->Phi());
+ fRecPhiNegEta->Fill(TMath::RadToDeg()*phiIn);
fRecQPtNegEtaVz->Fill(tpcP->Charge()/tpcP->Pt(),tpcP->Zv());
- fRecDcaNegEta->Fill(sdca_tr);
- fRecDNegEta->Fill(xy);
+ fRecDcaNegEta->Fill(fSignedDca);
+ fRecDNegEta->Fill(fXY);
}
-
- //spectren detected by TPC sectors
- //pt cut on 1 GeV/c ?!
- // if(tpcP->Pt()<1.) continue;
- fRecPtTpcSector[Int_t(tpcP->Phi()*
+
+ fRecPtTpcSector[Int_t(phiIn*
TMath::RadToDeg()/20)]->Fill(tpcP->Pt());
- fRecEtaTpcSector[Int_t(tpcP->Phi()*
- TMath::RadToDeg()/20)]->Fill(tpcP->Eta());
- fSignedDcaTpcSector[Int_t(tpcP->Phi()*
- TMath::RadToDeg()/20)]->Fill(sdca_tr);
- fRecQPtTpcSector[Int_t(tpcP->Phi()*
- TMath::RadToDeg()/20)]->Fill(tpcP->Charge()/tpcP->Pt());
- fRecEtaPtTpcSector[Int_t(tpcP->Phi()*
- TMath::RadToDeg()/20)]->Fill(tpcP->Eta()/tpcP->Pt());
+ fRecEtaTpcSector[Int_t(phiIn*
+ TMath::RadToDeg()/20)]->Fill(tpcP->Eta());
+ fSignedDcaTpcSector[Int_t(phiIn*
+ TMath::RadToDeg()/20)]->Fill(fSignedDca);
+ 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++) {
+// // 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<AliESDtrack*>(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.);
+// if(LeadingTrack==iTrack2) continue;
+
+// AliVParticle *track2 = event->GetTrack(iTrack2);
+// AliESDtrack* esdtrack2 = static_cast<AliESDtrack*>(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() );
+// fDeltaPhiLeading->Fill((LeadingPhi-esdtrack2->Phi())*TMath::RadToDeg(),
+// LeadingPhi*TMath::RadToDeg() );
- }//second track loop
+// }//second track loop
+
+ // if(fTrackType==2) delete tpcP; // delete in case of TPCOnlyTrack
+
}//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;
+ }
+
+ if(phiArray){
+ delete[] phiArray;
+ phiArray=0;
+ }
+
+ if(etaArray){
+ delete[] etaArray;
+ etaArray=0;
+ }
+
+ if(dcaArray){
+ delete[] dcaArray;
+ dcaArray=0;
+ }
+
+ if(ptArray){
+ delete[] ptArray;
+ ptArray=0;
+ }
+
+ if(chargeArray){
+ delete[] chargeArray;
+ chargeArray=0;
+ }
+
+ if(acceptedArray){
+ delete[] acceptedArray;
+ acceptedArray=0;
+ }
+
// Post output data.
// PostData(1, fHistPt);
PostData(1, fHists);