#include "TParticle.h"
#include "TParticlePDG.h"
#include "TProfile.h"
-#include "TNtuple.h"
-#include "TFile.h"
#include "AliAnalysisTask.h"
#include "AliAnalysisManager.h"
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)
,fPhiRec(0)
,fThetaRec(0)
,fNumber(0)
+ ,fNumberAfterCut(0)
,fVx(0)
,fVy(0)
,fVz(0)
- ,fVertexX(0)
- ,fVertexY(0)
- ,fVertexZ(0)
- ,test(0)
-
+ ,fNVertexSPD(0)
+ ,fNVertexTracks(0)
,fRecDcaPosPhi(0)
,fRecDcaNegPhi(0)
,fRecPtPosPhi(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)
{
// 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());
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}",
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());
180, 0., 2*TMath::Pi());
fNumber = new TH1F("fNumber",
"number of tracks per event",
- 200, -0.5, 199.5);
+ 500, -5, 4995);
+ fNumberAfterCut = new TH1F("fNumberAfterCut",
+ "number of tracks per event after cuts",
+ 500, -5, 4995);
fVx = new TH1F("fVx",
"X of first track point",
100, -1., 1.);
fVz = new TH1F("fVz",
"Z of first track point",
200, -50., 50.);
- fVertexX = new TH1F("fVerteX",
- "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} ",
" 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);
- fsigmaPt = new TH1F("fsigmaPt",
+ 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++){
fRecEtaNegLadder[i]->GetXaxis()->SetTitle("#eta");
}
- Double_t vzmax = 15;
+ Double_t vzmax = 15.;
fRecPtPosVz = new TH2F("fRecPtPosVz",
"p_{T} distribution vs Vz()",
// 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);
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]);
// 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; i<fHists->GetEntries(); ++i) {
// h1->Sumw2();
// }
// }
- // BKC
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");
if(Entry()==0){
- AliESDEvent* esd = dynamic_cast<AliESDEvent*>(event);
+ AliESDEvent* esd = static_cast<AliESDEvent*>(event);
if(esd){
Printf("We are reading from ESD");
}
Float_t leadingPhi = 0;//TMath::Pi();
- if(event->GetNumberOfTracks()!=0) fNumber->Fill(event->GetNumberOfTracks());
+ //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->GetNContributors()==0) return;
- Float_t vx = vertex->GetX();
- Float_t vy = vertex->GetY();
- Float_t vz = vertex->GetZ();
+ 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);
+ }
+
+
- fVertexX->Fill(vx);
- fVertexY->Fill(vy);
- fVertexZ->Fill(vz);
+ 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;
+
+ }
+
+
for (Int_t iTrack = 0; iTrack < event->GetNumberOfTracks(); iTrack++) {
}
AliVParticle *track = event->GetTrack(iTrack);
- AliESDtrack *esdtrack = dynamic_cast<AliESDtrack*>(track);
+ AliESDtrack *esdtrack = static_cast<AliESDtrack*>(track);
esdtrack->PropagateToDCA(event->GetPrimaryVertex(),
event->GetMagneticField(), 10000.);
//__________
// 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;
- phiIn = tpcP->Phi();
if (!tpcP) continue;
if (!fCuts->AcceptTrack(tpcP)) continue;
+ phiIn = tpcP->Phi();
}
else if(fTrackType==1){
//Fill all histograms with ITS tracks
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
if (!tpcPin) continue;
phiIn=tpcPin->Phi();
- tpcP = AliESDtrackCuts::GetTPCOnlyTrack(dynamic_cast<AliESDEvent*>(event),esdtrack->GetID());
+ 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
//___________
//
+
+ 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;
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
//-------------------
+ 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());
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);
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);
-
- if(fTrackType==2) fCompareTPCparam->Fill(z,tpcPin->GetTgl());
+ tpcP->GetImpactParameters(fXY,fZ);
+ fDiffDcaD->Fill(fSignedDca+fXY);
+ fDcaZ->Fill(fZ);
- //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());
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);
}
}
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());
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);
}
}
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{
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);
}
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*
// if(LeadingTrack==iTrack2) continue;
// AliVParticle *track2 = event->GetTrack(iTrack2);
-// AliESDtrack* esdtrack2 = dynamic_cast<AliESDtrack*>(track2);
+// AliESDtrack* esdtrack2 = static_cast<AliESDtrack*>(track2);
// if (!track2) {
// Printf("ERROR: Could not receive track %d", iTrack);
// continue;
}//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);