#include <TFile.h>
#include <TSystem.h>
#include <TF1.h>
+#include <TH3F.h>
#include <TH2D.h>
#include <TH1D.h>
#include <TH1I.h>
fNBinsY(0), fMinY(0), fMaxY(0),
fNBinsPt(0), fMinPt(0), fMaxPt(0),
fProtonContainer(0), fAntiProtonContainer(0),
- fHistEvents(0), fHistYPtProtons(0), fHistYPtAntiProtons(0),
+ fHistEvents(0), fHistYPtProtons(0), fHistYPtAntiProtons(0),
+ fHistEventStats(0),
fEffGridListProtons(0), fCorrectionListProtons2D(0),
fEfficiencyListProtons1D(0), fCorrectionListProtons1D(0),
fEffGridListAntiProtons(0), fCorrectionListAntiProtons2D(0),
fNBinsY(nbinsY), fMinY(fLowY), fMaxY(fHighY),
fNBinsPt(nbinsPt), fMinPt(fLowPt), fMaxPt(fHighPt),
fProtonContainer(0), fAntiProtonContainer(0),
- fHistEvents(0), fHistYPtProtons(0), fHistYPtAntiProtons(0),
+ fHistEvents(0), fHistYPtProtons(0), fHistYPtAntiProtons(0), fHistEventStats(0),
fEffGridListProtons(0), fCorrectionListProtons2D(0),
fEfficiencyListProtons1D(0), fCorrectionListProtons1D(0),
fEffGridListAntiProtons(0), fCorrectionListAntiProtons2D(0),
fQAAntiProtonsAcceptedList(0), fQAAntiProtonsRejectedList(0),
fInitQAFlag(kFALSE) {
//Default constructor
- if(!fInitQAFlag) InitQA();
- fHistEvents = new TH1I("fHistEvents","Analyzed events",1,0,1);
+ fHistEvents = new TH1I("fHistEvents","Analyzed events",2,0.5,2.5);
+ fHistEvents->GetXaxis()->SetBinLabel(1,"Analyzed events");
+ fHistEvents->GetXaxis()->SetBinLabel(2,"Events with (anti)protons");
fHistYPtProtons = new TH2D("fHistYPtProtons","Protons",
fNBinsY,fMinY,fMaxY,
kNSteps,2,iBin);
fAntiProtonContainer->SetBinLimits(0,binLimY); //rapidity or eta
fAntiProtonContainer->SetBinLimits(1,binLimPt); //pT
+
+ //Initialize the QA
+ if(!fInitQAFlag) InitQA();
}
//____________________________________________________________________//
fNBinsY(nbinsY), fMinY(gY[0]), fMaxY(gY[nbinsY]),
fNBinsPt(nbinsPt), fMinPt(gPt[0]), fMaxPt(gPt[nbinsPt]),
fProtonContainer(0), fAntiProtonContainer(0),
- fHistEvents(0), fHistYPtProtons(0), fHistYPtAntiProtons(0),
+ fHistEvents(0), fHistYPtProtons(0), fHistYPtAntiProtons(0), fHistEventStats(0),
fEffGridListProtons(0), fCorrectionListProtons2D(0),
fEfficiencyListProtons1D(0), fCorrectionListProtons1D(0),
fEffGridListAntiProtons(0), fCorrectionListAntiProtons2D(0),
fQAAntiProtonsAcceptedList(0), fQAAntiProtonsRejectedList(0),
fInitQAFlag(kFALSE) {
//Default constructor
- if(!fInitQAFlag) InitQA();
- fHistEvents = new TH1I("fHistEvents","Analyzed events",1,0,1);
+ fHistEvents = new TH1I("fHistEvents","Analyzed events",2,0.5,2.5);
+ fHistEvents->GetXaxis()->SetBinLabel(1,"Analyzed events");
+ fHistEvents->GetXaxis()->SetBinLabel(2,"Events with (anti)protons");
fHistYPtProtons = new TH2D("fHistYPtProtons","Protons",
fNBinsY,gY,fNBinsPt,gPt);
kNSteps,2,iBin);
fAntiProtonContainer->SetBinLimits(0,gY); //rapidity or eta
fAntiProtonContainer->SetBinLimits(1,gPt); //pT
+
+ //Initialize the QA
+ if(!fInitQAFlag) InitQA();
}
//____________________________________________________________________//
if(fHistEvents) delete fHistEvents;
if(fHistYPtProtons) delete fHistYPtProtons;
if(fHistYPtAntiProtons) delete fHistYPtAntiProtons;
+ if(fHistEventStats) delete fHistEventStats;
if(fProtonContainer) delete fProtonContainer;
if(fAntiProtonContainer) delete fAntiProtonContainer;
Int_t nbinsPt,
Float_t fLowPt, Float_t fHighPt) {
//Initializes the histograms
- if(!fInitQAFlag) InitQA();
fNBinsY = nbinsY;
fMinY = fLowY;
fMaxY = fHighY;
fMinPt = fLowPt;
fMaxPt = fHighPt;
- fHistEvents = new TH1I("fHistEvents","Analyzed events",1,0,1);
+ fHistEvents = new TH1I("fHistEvents","Analyzed events",2,0.5,2.5);
+ fHistEvents->GetXaxis()->SetBinLabel(1,"Analyzed events");
+ fHistEvents->GetXaxis()->SetBinLabel(2,"Events with (anti)protons");
fHistYPtProtons = new TH2D("fHistYPtProtons","Protons",
fNBinsY,fMinY,fMaxY,
kNSteps,2,iBin);
fAntiProtonContainer->SetBinLimits(0,binLimY); //rapidity
fAntiProtonContainer->SetBinLimits(1,binLimPt); //pT
+
+ //Initialize the QA
+ if(!fInitQAFlag) InitQA();
}
//____________________________________________________________________//
void AliProtonAnalysis::InitAnalysisHistograms(Int_t nbinsY, Double_t *gY,
Int_t nbinsPt, Double_t *gPt) {
//Initializes the histograms using asymmetric values - global tracking
- if(!fInitQAFlag) InitQA();
fNBinsY = nbinsY;
fMinY = gY[0];
fMaxY = gY[nbinsY];
fMinPt = gPt[0];
fMaxPt = gPt[nbinsPt];
- fHistEvents = new TH1I("fHistEvents","Analyzed events",1,0,1);
+ fHistEvents = new TH1I("fHistEvents","Analyzed events",2,0.5,2.5);
+ fHistEvents->GetXaxis()->SetBinLabel(1,"Analyzed events");
+ fHistEvents->GetXaxis()->SetBinLabel(2,"Events with (anti)protons");
fHistYPtProtons = new TH2D("fHistYPtProtons","Protons",
fNBinsY,gY,fNBinsPt,gPt);
kNSteps,2,iBin);
fAntiProtonContainer->SetBinLimits(0,gY); //rapidity
fAntiProtonContainer->SetBinLimits(1,gPt); //pT
+
+ //Initialize the QA
+ if(!fInitQAFlag) InitQA();
}
//____________________________________________________________________//
fHistEvents = (TH1I *)list->At(2);
fProtonContainer = (AliCFContainer *)list->At(3);
fAntiProtonContainer = (AliCFContainer *)list->At(4);
+ fHistEventStats = (TH1F *)list->At(5);
}
else if(!list) {
cout<<"Retrieving objects from the file... "<<endl;
fHistEvents = (TH1I *)file->Get("fHistEvents");
fProtonContainer = (AliCFContainer *)file->Get("containerProtons");
fAntiProtonContainer = (AliCFContainer *)file->Get("containerAntiProtons");
+ fHistEventStats = (TH1F *)file->Get("fHistEventStats");
}
if((!fHistYPtProtons)||(!fHistYPtAntiProtons)||(!fHistEvents)
- ||(!fProtonContainer)||(!fAntiProtonContainer)) {
+ ||(!fProtonContainer)||(!fAntiProtonContainer)||(!fHistEventStats)) {
cout<<"Input containers were not found!!!"<<endl;
status = kFALSE;
}
//Get the y histogram for protons
Int_t nAnalyzedEvents = GetNumberOfAnalyzedEvents();
- TH1D *fYProtons = (TH1D *)fHistYPtProtons->ProjectionX("fYProtons",0,fHistYPtProtons->GetYaxis()->GetNbins(),"");
- //TH1D *fYProtons = fProtonContainer->ShowProjection(0,0); //variable-step
+ //TH1D *fYProtons = (TH1D *)fHistYPtProtons->ProjectionX("fYProtons",0,fHistYPtProtons->GetYaxis()->GetNbins(),"");
+ TH1D *fYProtons = fProtonContainer->ShowProjection(0,kStepInPhaseSpace); //variable-step
fYProtons->SetStats(kFALSE);
fYProtons->GetYaxis()->SetTitle("(1/N_{events})(dN/dy)");
//Get the y histogram for antiprotons
Int_t nAnalyzedEvents = GetNumberOfAnalyzedEvents();
- TH1D *fYAntiProtons = (TH1D *)fHistYPtAntiProtons->ProjectionX("fYAntiProtons",0,fHistYPtAntiProtons->GetYaxis()->GetNbins(),"");
- //TH1D *fYAntiProtons = fAntiProtonContainer->ShowProjection(0,0);//variable-step
+ //TH1D *fYAntiProtons = (TH1D *)fHistYPtAntiProtons->ProjectionX("fYAntiProtons",0,fHistYPtAntiProtons->GetYaxis()->GetNbins(),"");
+ TH1D *fYAntiProtons = fAntiProtonContainer->ShowProjection(0,kStepInPhaseSpace);//variable-step
fYAntiProtons->SetStats(kFALSE);
fYAntiProtons->GetYaxis()->SetTitle("(1/N_{events})(dN/dy)");
//Get the Pt histogram for protons
Int_t nAnalyzedEvents = GetNumberOfAnalyzedEvents();
- TH1D *fPtProtons = (TH1D *)fHistYPtProtons->ProjectionY("fPtProtons",0,fHistYPtProtons->GetXaxis()->GetNbins(),"");
- //TH1D *fPtProtons = fProtonContainer->ShowProjection(1,0); //variable-step
+ //TH1D *fPtProtons = (TH1D *)fHistYPtProtons->ProjectionY("fPtProtons",0,fHistYPtProtons->GetXaxis()->GetNbins(),"");
+ TH1D *fPtProtons = fProtonContainer->ShowProjection(1,kStepInPhaseSpace); //variable-step
fPtProtons->SetStats(kFALSE);
fPtProtons->GetYaxis()->SetTitle("(1/N_{events})(dN/dP_{T})");
//Get the Pt histogram for antiprotons
Int_t nAnalyzedEvents = GetNumberOfAnalyzedEvents();
- TH1D *fPtAntiProtons = (TH1D *)fHistYPtAntiProtons->ProjectionY("fPtAntiProtons",0,fHistYPtProtons->GetXaxis()->GetNbins(),"");
- //TH1D *fPtAntiProtons = fAntiProtonContainer->ShowProjection(1,0); //variable-step
+ //TH1D *fPtAntiProtons = (TH1D *)fHistYPtAntiProtons->ProjectionY("fPtAntiProtons",0,fHistYPtProtons->GetXaxis()->GetNbins(),"");
+ TH1D *fPtAntiProtons = fAntiProtonContainer->ShowProjection(1,kStepInPhaseSpace); //variable-step
fPtAntiProtons->SetStats(kFALSE);
fPtAntiProtons->GetYaxis()->SetTitle("(1/N_{events})(dN/dP_{T})");
Int_t nIdentifiedProtons = 0, nIdentifiedAntiProtons = 0;
Int_t nSurvivedProtons = 0, nSurvivedAntiProtons = 0;
- fHistEvents->Fill(0); //number of analyzed events
+ fHistEvents->Fill(1); //number of analyzed events
Double_t containerInput[2] ;
Double_t gPt = 0.0, gP = 0.0;
nTracks = esd->GetNumberOfTracks();
track = &trackTPC ;
}*/
+ Int_t fIdxInt[200];
+ Int_t nClustersTPC = track->GetTPCclusters(fIdxInt);
+ Int_t npointsTPCdEdx = track->GetTPCsignalN();
+ Double_t dca[2] = {0.0,0.0}, cov[3] = {0.0,0.0,0.0}; //The impact parameters and their covariance.
+
if((fProtonAnalysisBase->GetAnalysisMode()==AliProtonAnalysisBase::kTPC)||(fProtonAnalysisBase->GetAnalysisMode()==AliProtonAnalysisBase::kHybrid)) {
AliExternalTrackParam *tpcTrack = (AliExternalTrackParam *)track->GetTPCInnerParam();
if(!tpcTrack) continue;
gPt = tpcTrack->Pt();
gP = tpcTrack->P();
+
+ tpcTrack->PropagateToDCA(vertex,
+ esd->GetMagneticField(),
+ 100.,dca,cov);
+
+ if(fProtonAnalysisBase->IsPrimary(esd,vertex,track)) {
+ if(fProtonAnalysisBase->IsAccepted(track)) {
+ ((TH2F *)(fQA2DList->At(0)))->Fill(gP,track->GetTPCsignal());
+ ((TH3F *)(fQA2DList->At(2)))->Fill(tpcTrack->Eta(),
+ tpcTrack->Phi()*180./TMath::Pi(),
+ npointsTPCdEdx);
+ ((TH3F *)(fQA2DList->At(4)))->Fill(tpcTrack->Eta(),
+ tpcTrack->Phi()*180./TMath::Pi(),
+ nClustersTPC);
+ ((TH3F *)(fQA2DList->At(6)))->Fill(gPt,
+ tpcTrack->Phi()*180./TMath::Pi(),
+ npointsTPCdEdx);
+ ((TH3F *)(fQA2DList->At(8)))->Fill(gPt,
+ tpcTrack->Phi()*180./TMath::Pi(),
+ nClustersTPC);
+ }//quality cuts
+ }//primary cuts
if(fProtonAnalysisBase->IsProton(track)) {
- FillQA(esd,vertex,track);
+ //Step: kStepIdentified
+ if(fProtonAnalysisBase->GetEtaMode())
+ containerInput[0] = tpcTrack->Eta();
+ else
+ containerInput[0] = fProtonAnalysisBase->Rapidity(tpcTrack->Px(),
+ tpcTrack->Py(),
+ tpcTrack->Pz());
+ containerInput[1] = gPt;
if(tpcTrack->Charge() > 0) {
nIdentifiedProtons += 1;
- if(fProtonAnalysisBase->GetEtaMode())
- containerInput[0] = tpcTrack->Eta();
- else
- containerInput[0] = fProtonAnalysisBase->Rapidity(tpcTrack->Px(),
- tpcTrack->Py(),
- tpcTrack->Pz());
- containerInput[1] = gPt;
- fProtonContainer->Fill(containerInput,0);
-
- if(!fProtonAnalysisBase->IsAccepted(esd,vertex,track)) continue;//track cuts
- if(fProtonAnalysisBase->GetEtaMode())
- containerInput[0] = tpcTrack->Eta();
- else
- containerInput[0] = fProtonAnalysisBase->Rapidity(tpcTrack->Px(),
- tpcTrack->Py(),
- tpcTrack->Pz());
- containerInput[1] = gPt;
- fProtonContainer->Fill(containerInput,1);
-
- if(!fProtonAnalysisBase->IsInPhaseSpace(track)) continue; //track outside the analyzed y-Pt
- nSurvivedProtons += 1;
- if(fProtonAnalysisBase->GetEtaMode()) {
- fHistYPtProtons->Fill(tpcTrack->Eta(),
- gPt);
- containerInput[0] = tpcTrack->Eta();
- }
- else {
- fHistYPtProtons->Fill(fProtonAnalysisBase->Rapidity(tpcTrack->Px(),
- tpcTrack->Py(),
- tpcTrack->Pz()),
- gPt);
- //fill the container
- containerInput[0] = fProtonAnalysisBase->Rapidity(tpcTrack->Px(),
- tpcTrack->Py(),
- tpcTrack->Pz());
- }
- containerInput[1] = gPt;
- fProtonContainer->Fill(containerInput,2);
+ fProtonContainer->Fill(containerInput,kStepIdentified);
}//protons
else if(tpcTrack->Charge() < 0) {
nIdentifiedAntiProtons += 1;
- if(fProtonAnalysisBase->GetEtaMode())
- containerInput[0] = tpcTrack->Eta();
- else
- containerInput[0] = fProtonAnalysisBase->Rapidity(tpcTrack->Px(),
- tpcTrack->Py(),
- tpcTrack->Pz());
- containerInput[1] = gPt;
- fAntiProtonContainer->Fill(containerInput,0);
+ fAntiProtonContainer->Fill(containerInput,kStepIdentified);
+ }//protons
+
+ //Step: kStepIsPrimary
+ if(fProtonAnalysisBase->IsPrimary(esd,vertex,track)) {
+ if(tpcTrack->Charge() > 0)
+ fProtonContainer->Fill(containerInput,kStepIsPrimary);
+ else if(tpcTrack->Charge() < 0)
+ fAntiProtonContainer->Fill(containerInput,kStepIsPrimary);
- if(!fProtonAnalysisBase->IsAccepted(esd,vertex,track)) continue;//track cuts
- if(fProtonAnalysisBase->GetEtaMode())
- containerInput[0] = tpcTrack->Eta();
- else
- containerInput[0] = fProtonAnalysisBase->Rapidity(tpcTrack->Px(),
- tpcTrack->Py(),
- tpcTrack->Pz());
- containerInput[1] = gPt;
- fAntiProtonContainer->Fill(containerInput,1);
+ FillQA(esd,vertex,track);
- if(!fProtonAnalysisBase->IsInPhaseSpace(track)) continue; //track outside the analyzed y-Pt
- nSurvivedAntiProtons += 1;
- if(fProtonAnalysisBase->GetEtaMode()) {
- fHistYPtAntiProtons->Fill(tpcTrack->Eta(),
- gPt);
- containerInput[0] = tpcTrack->Eta();
- }
- else {
- fHistYPtAntiProtons->Fill(fProtonAnalysisBase->Rapidity(tpcTrack->Px(),
- tpcTrack->Py(),
- tpcTrack->Pz()),
- gPt);
- //fill the container
- containerInput[0] = fProtonAnalysisBase->Rapidity(tpcTrack->Px(),
- tpcTrack->Py(),
- tpcTrack->Pz());
- }
- containerInput[1] = gPt;
- fAntiProtonContainer->Fill(containerInput,2);
- }//antiprotons
- }//proton check
+ //Step: kStepSurvived
+ if(fProtonAnalysisBase->IsAccepted(track)) {
+ ((TH2F *)(fQA2DList->At(1)))->Fill(gP,track->GetTPCsignal());
+ ((TH3F *)(fQA2DList->At(3)))->Fill(tpcTrack->Eta(),
+ tpcTrack->Phi()*180./TMath::Pi(),
+ npointsTPCdEdx);
+ ((TH3F *)(fQA2DList->At(5)))->Fill(tpcTrack->Eta(),
+ tpcTrack->Phi()*180./TMath::Pi(),
+ nClustersTPC);
+ ((TH3F *)(fQA2DList->At(7)))->Fill(gPt,
+ tpcTrack->Phi()*180./TMath::Pi(),
+ npointsTPCdEdx);
+ ((TH3F *)(fQA2DList->At(9)))->Fill(gPt,
+ tpcTrack->Phi()*180./TMath::Pi(),
+ nClustersTPC);
+
+ if(tpcTrack->Charge() > 0) {
+ fProtonContainer->Fill(containerInput,kStepSurvived);
+ ((TH2F *)(fQA2DList->At(10)))->Fill(tpcTrack->Eta(),
+ tpcTrack->Phi()*180./TMath::Pi());
+ ((TH2F *)(fQA2DList->At(12)))->Fill(tpcTrack->Pt(),
+ TMath::Abs(dca[0]));
+ ((TH2F *)(fQA2DList->At(13)))->Fill(tpcTrack->Pt(),
+ TMath::Abs(dca[1]));
+ }//protons
+ else if(tpcTrack->Charge() < 0) {
+ fAntiProtonContainer->Fill(containerInput,kStepSurvived);
+ ((TH2F *)(fQA2DList->At(11)))->Fill(tpcTrack->Eta(),
+ tpcTrack->Phi()*180./TMath::Pi());
+ ((TH2F *)(fQA2DList->At(14)))->Fill(tpcTrack->Pt(),
+ TMath::Abs(dca[0]));
+ ((TH2F *)(fQA2DList->At(15)))->Fill(tpcTrack->Pt(),
+ TMath::Abs(dca[1]));
+ }//antiprotons
+
+ //Step: kStepInPhaseSpace
+ if(fProtonAnalysisBase->IsInPhaseSpace(track)) {
+ if(tpcTrack->Charge() > 0) {
+ nSurvivedProtons += 1;
+ fHistYPtProtons->Fill(containerInput[0],
+ containerInput[1]);
+ fProtonContainer->Fill(containerInput,kStepInPhaseSpace);
+ }//protons
+ else if(tpcTrack->Charge() < 0) {
+ nSurvivedAntiProtons += 1;
+ fHistYPtAntiProtons->Fill(containerInput[0],
+ containerInput[1]);
+ fAntiProtonContainer->Fill(containerInput,kStepInPhaseSpace);
+ }//antiprotons
+ }//Step: kStepInPhaseSpace
+ }//Step: kStepSurvived
+ }//Step: kStepIsPrimary
+ }//Step: kStepIdentified
}//TPC only tracks
else if(fProtonAnalysisBase->GetAnalysisMode() == AliProtonAnalysisBase::kGlobal) {
gPt = track->Pt();
gP = track->P();
+ track->PropagateToDCA(vertex,
+ esd->GetMagneticField(),
+ 100.,dca,cov);
+
+ if(fProtonAnalysisBase->IsPrimary(esd,vertex,track)) {
+ if(fProtonAnalysisBase->IsAccepted(track)) {
+ ((TH2F *)(fQA2DList->At(0)))->Fill(gP,track->GetTPCsignal());
+ ((TH3F *)(fQA2DList->At(2)))->Fill(track->Eta(),
+ track->Phi()*180./TMath::Pi(),
+ npointsTPCdEdx);
+ ((TH3F *)(fQA2DList->At(4)))->Fill(track->Eta(),
+ track->Phi()*180./TMath::Pi(),
+ nClustersTPC);
+ ((TH3F *)(fQA2DList->At(6)))->Fill(gPt,
+ track->Phi()*180./TMath::Pi(),
+ npointsTPCdEdx);
+ ((TH3F *)(fQA2DList->At(8)))->Fill(gPt,
+ track->Phi()*180./TMath::Pi(),
+ nClustersTPC);
+ }//quality cuts
+ }//primary cuts
if(fProtonAnalysisBase->IsProton(track)) {
- FillQA(esd,vertex,track);
+ //Step: kStepIdentified
+ if(fProtonAnalysisBase->GetEtaMode())
+ containerInput[0] = track->Eta();
+ else
+ containerInput[0] = fProtonAnalysisBase->Rapidity(track->Px(),
+ track->Py(),
+ track->Pz());
+ containerInput[1] = gPt;
if(track->Charge() > 0) {
nIdentifiedProtons += 1;
- if(fProtonAnalysisBase->GetEtaMode())
- containerInput[0] = track->Eta();
- else
- containerInput[0] = fProtonAnalysisBase->Rapidity(track->Px(),
- track->Py(),
- track->Pz());
- containerInput[1] = gPt;
- fProtonContainer->Fill(containerInput,0);
-
- if(!fProtonAnalysisBase->IsAccepted(esd,vertex,track)) continue;//track cuts
- if(fProtonAnalysisBase->GetEtaMode())
- containerInput[0] = track->Eta();
- else
- containerInput[0] = fProtonAnalysisBase->Rapidity(track->Px(),
- track->Py(),
- track->Pz());
- containerInput[1] = gPt;
- fProtonContainer->Fill(containerInput,1);
-
- if(!fProtonAnalysisBase->IsInPhaseSpace(track)) continue; //track outside the analyzed y-Pt
- nSurvivedProtons += 1;
- if(fProtonAnalysisBase->GetEtaMode()) {
- fHistYPtProtons->Fill(track->Eta(),
- gPt);
- containerInput[0] = track->Eta();
- }
- else {
- fHistYPtProtons->Fill(fProtonAnalysisBase->Rapidity(track->Px(),
- track->Py(),
- track->Pz()),
- gPt);
- //fill the container
- containerInput[0] = fProtonAnalysisBase->Rapidity(track->Px(),
- track->Py(),
- track->Pz());
- }
- containerInput[1] = gPt;
- fProtonContainer->Fill(containerInput,2);
+ fProtonContainer->Fill(containerInput,kStepIdentified);
}//protons
else if(track->Charge() < 0) {
nIdentifiedAntiProtons += 1;
- if(fProtonAnalysisBase->GetEtaMode())
- containerInput[0] = track->Eta();
- else
- containerInput[0] = fProtonAnalysisBase->Rapidity(track->Px(),
- track->Py(),
- track->Pz());
- containerInput[1] = gPt;
- fAntiProtonContainer->Fill(containerInput,0);
-
- if(!fProtonAnalysisBase->IsAccepted(esd,vertex,track)) continue;//track cuts
- if(fProtonAnalysisBase->GetEtaMode())
- containerInput[0] = track->Eta();
- else
- containerInput[0] = fProtonAnalysisBase->Rapidity(track->Px(),
- track->Py(),
- track->Pz());
- containerInput[1] = gPt;
- fAntiProtonContainer->Fill(containerInput,1);
+ fAntiProtonContainer->Fill(containerInput,kStepIdentified);
+ }//protons
+
+ //Step: kStepIsPrimary
+ if(fProtonAnalysisBase->IsPrimary(esd,vertex,track)) {
+ if(track->Charge() > 0)
+ fProtonContainer->Fill(containerInput,kStepIsPrimary);
+ else if(track->Charge() < 0)
+ fAntiProtonContainer->Fill(containerInput,kStepIsPrimary);
+
+ FillQA(esd,vertex,track);
- if(!fProtonAnalysisBase->IsInPhaseSpace(track)) continue; //track outside the analyzed y-Pt
- nSurvivedAntiProtons += 1;
- if(fProtonAnalysisBase->GetEtaMode()) {
- fHistYPtAntiProtons->Fill(track->Eta(),
- gPt);
- containerInput[0] = track->Eta();
- }
- else {
- fHistYPtAntiProtons->Fill(fProtonAnalysisBase->Rapidity(track->Px(),
- track->Py(),
- track->Pz()),
- gPt);
- //fill the container
- containerInput[0] = fProtonAnalysisBase->Rapidity(track->Px(),
- track->Py(),
- track->Pz());
- }
- containerInput[1] = gPt;
- fAntiProtonContainer->Fill(containerInput,2);
- }//antiprotons
- }//proton check
- }//combined tracking
+ //Step: kStepSurvived
+ if(fProtonAnalysisBase->IsAccepted(track)) {
+ ((TH2F *)(fQA2DList->At(1)))->Fill(gP,track->GetTPCsignal());
+ ((TH3F *)(fQA2DList->At(3)))->Fill(track->Eta(),
+ track->Phi()*180./TMath::Pi(),
+ npointsTPCdEdx);
+ ((TH3F *)(fQA2DList->At(5)))->Fill(track->Eta(),
+ track->Phi()*180./TMath::Pi(),
+ nClustersTPC);
+ ((TH3F *)(fQA2DList->At(7)))->Fill(gPt,
+ track->Phi()*180./TMath::Pi(),
+ npointsTPCdEdx);
+ ((TH3F *)(fQA2DList->At(9)))->Fill(gPt,
+ track->Phi()*180./TMath::Pi(),
+ nClustersTPC);
+
+ if(track->Charge() > 0) {
+ fProtonContainer->Fill(containerInput,kStepSurvived);
+ ((TH2F *)(fQA2DList->At(10)))->Fill(track->Eta(),
+ track->Phi()*180./TMath::Pi());
+ ((TH2F *)(fQA2DList->At(12)))->Fill(track->Pt(),
+ TMath::Abs(dca[0]));
+ ((TH2F *)(fQA2DList->At(13)))->Fill(track->Pt(),
+ TMath::Abs(dca[1]));
+ }//protons
+ else if(track->Charge() < 0) {
+ fAntiProtonContainer->Fill(containerInput,kStepSurvived);
+ ((TH2F *)(fQA2DList->At(11)))->Fill(track->Eta(),
+ track->Phi()*180./TMath::Pi());
+ ((TH2F *)(fQA2DList->At(14)))->Fill(track->Pt(),
+ TMath::Abs(dca[0]));
+ ((TH2F *)(fQA2DList->At(15)))->Fill(track->Pt(),
+ TMath::Abs(dca[1]));
+ }//antiprotons
+
+ //Step: kStepInPhaseSpace
+ if(fProtonAnalysisBase->IsInPhaseSpace(track)) {
+ if(track->Charge() > 0) {
+ nSurvivedProtons += 1;
+ fHistYPtProtons->Fill(containerInput[0],
+ containerInput[1]);
+ fProtonContainer->Fill(containerInput,kStepInPhaseSpace);
+ }//protons
+ else if(track->Charge() < 0) {
+ nSurvivedAntiProtons += 1;
+ fHistYPtAntiProtons->Fill(containerInput[0],
+ containerInput[1]);
+ fAntiProtonContainer->Fill(containerInput,kStepInPhaseSpace);
+ }//antiprotons
+ }//Step: kStepInPhaseSpace
+ }//Step: kStepSurvived
+ }//Step: kStepIsPrimary
+ }//Step: kStepIdentified
+ }//Global tracking
}//track loop
+ if((nIdentifiedProtons > 0)||(nIdentifiedAntiProtons > 0))
+ fHistEvents->Fill(2); //number of analyzed events with at least one (anti)proton
+
if(fProtonAnalysisBase->GetDebugMode())
Printf("Initial number of tracks: %d | Identified (anti)protons: %d - %d | Survived (anti)protons: %d - %d",nTracks,nIdentifiedProtons,nIdentifiedAntiProtons,nSurvivedProtons,nSurvivedAntiProtons);
}
//____________________________________________________________________//
void AliProtonAnalysis::Analyze(AliAODEvent* const fAOD) {
//Main analysis part - AOD
- fHistEvents->Fill(0); //number of analyzed events
+ fHistEvents->Fill(1); //number of analyzed events
Int_t nTracks = fAOD->GetNumberOfTracks();
for(Int_t iTracks = 0; iTracks < nTracks; iTracks++) {
AliAODTrack* track = fAOD->GetTrack(iTracks);
void AliProtonAnalysis::Analyze(AliStack* const stack,
Bool_t iInclusive) {
//Main analysis part - MC
- fHistEvents->Fill(0); //number of analyzed events
+ fHistEvents->Fill(1); //number of analyzed events
Int_t nParticles = 0;
//inclusive protons -
fQA2DList = new TList();
fQA2DList->SetName("fQA2DList");
fGlobalQAList->Add(fQA2DList);
-
+
+ //dEdx plots
+ TH2F *gHistdEdxP = new TH2F("gHistdEdxP","dE/dx (TPC); P [GeV/c]; dE/dx [a.u]",1000,0.05,20.05,600,0,600);
+ fQA2DList->Add(gHistdEdxP);
+ TH2F *gHistProtonsdEdxP = new TH2F("gHistProtonsdEdxP","Accepted protons dE/dx (TPC); P [GeV/c]; dE/dx [a.u]",1000,0.05,20.05,600,0,600);
+ fQA2DList->Add(gHistProtonsdEdxP);
+
+ //eta-phi-Npoints(dEdx)
+ TH3F *gHistEtaPhiTPCdEdxNPoints = new TH3F("gHistEtaPhiTPCdEdxNPoints",
+ ";#eta;#phi;N_{points}(TPC)",
+ 18,-0.9,0.9,
+ 180,0,360,
+ 100,0,200);
+ gHistEtaPhiTPCdEdxNPoints->SetStats(kTRUE);
+ fQA2DList->Add(gHistEtaPhiTPCdEdxNPoints);
+ TH3F *gHistProtonsEtaPhiTPCdEdxNPoints = new TH3F("gHistProtonsEtaPhiTPCdEdxNPoints",
+ ";#eta;#phi;N_{points}(TPC)",
+ 18,-0.9,0.9,
+ 180,0,360,
+ 100,0,200);
+ gHistProtonsEtaPhiTPCdEdxNPoints->SetStats(kTRUE);
+ fQA2DList->Add(gHistProtonsEtaPhiTPCdEdxNPoints);
+
+ //eta-phi-Npoints
+ TH3F *gHistEtaPhiTPCNPoints = new TH3F("gHistEtaPhiTPCNPoints",
+ ";#eta;#phi;N_{points}(TPC)",
+ 18,-0.9,0.9,
+ 180,0,360,
+ 100,0,200);
+ gHistEtaPhiTPCNPoints->SetStats(kTRUE);
+ fQA2DList->Add(gHistEtaPhiTPCNPoints);
+ TH3F *gHistProtonsEtaPhiTPCNPoints = new TH3F("gHistProtonsEtaPhiTPCNPoints",
+ ";#eta;#phi;N_{points}(TPC)",
+ 18,-0.9,0.9,
+ 180,0,360,
+ 100,0,200);
+ gHistProtonsEtaPhiTPCNPoints->SetStats(kTRUE);
+ fQA2DList->Add(gHistProtonsEtaPhiTPCNPoints);
+
+ //pt-phi-Npoints(dEdx)
+ TH3F *gHistPtPhiTPCdEdxNPoints = new TH3F("gHistPtPhiTPCdEdxNPoints",
+ ";P_{T} [GeV/c];#phi;N_{points}(TPC)",
+ fNBinsPt,fMinPt,fMaxPt,
+ 180,0,360,
+ 100,0,200);
+ gHistPtPhiTPCdEdxNPoints->SetStats(kTRUE);
+ fQA2DList->Add(gHistPtPhiTPCdEdxNPoints);
+ TH3F *gHistProtonsPtPhiTPCdEdxNPoints = new TH3F("gHistProtonsPtPhiTPCdEdxNPoints",
+ ";P_{T} [GeV/c];#phi;N_{points}(TPC)",
+ fNBinsPt,fMinPt,fMaxPt,
+ 180,0,360,
+ 100,0,200);
+ gHistProtonsPtPhiTPCdEdxNPoints->SetStats(kTRUE);
+ fQA2DList->Add(gHistProtonsPtPhiTPCdEdxNPoints);
+
+ //pt-phi-Npoints
+ TH3F *gHistPtPhiTPCNPoints = new TH3F("gHistPtPhiTPCNPoints",
+ ";P_{T} [GeV/c];#phi;N_{points}(TPC)",
+ fNBinsPt,fMinPt,fMaxPt,
+ 180,0,360,
+ 100,0,200);
+ gHistPtPhiTPCNPoints->SetStats(kTRUE);
+ fQA2DList->Add(gHistPtPhiTPCNPoints);
+ TH3F *gHistProtonsPtPhiTPCNPoints = new TH3F("gHistProtonsPtPhiTPCNPoints",
+ ";P_{T} [GeV/c];#phi;N_{points}(TPC)",
+ fNBinsPt,fMinPt,fMaxPt,
+ 180,0,360,
+ 100,0,200);
+ gHistProtonsPtPhiTPCNPoints->SetStats(kTRUE);
+ fQA2DList->Add(gHistProtonsPtPhiTPCNPoints);
+
+ //eta-phi for protons & antiprotons
+ TH2F *gHistProtonsEtaPhi = new TH2F("gHistProtonsEtaPhi",
+ ";#eta;#phi",
+ 18,-0.9,0.9,
+ 180,0,360);
+ gHistProtonsEtaPhi->SetStats(kTRUE);
+ fQA2DList->Add(gHistProtonsEtaPhi);
+ TH2F *gHistAntiProtonsEtaPhi = new TH2F("gHistAntiProtonsEtaPhi",
+ ";#eta;#phi",
+ 18,-0.9,0.9,
+ 180,0,360);
+ gHistAntiProtonsEtaPhi->SetStats(kTRUE);
+ fQA2DList->Add(gHistAntiProtonsEtaPhi);
+
+ //dca vs pT for protons & antiprotons
+ TH2F *gHistProtonsDCAxyPt = new TH2F("gHistProtonsDCAxyPt",
+ ";P_{T} [GeV/c];dca_{xy} [cm]",
+ 16,0.3,1.1,
+ 1000,0,10);
+ gHistProtonsDCAxyPt->SetStats(kTRUE);
+ fQA2DList->Add(gHistProtonsDCAxyPt);
+ TH2F *gHistProtonsDCAzPt = new TH2F("gHistProtonsDCAzPt",
+ ";P_{T} [GeV/c];dca_{z} [cm]",
+ 16,0.3,1.1,
+ 1000,0,10);
+ gHistProtonsDCAzPt->SetStats(kTRUE);
+ fQA2DList->Add(gHistProtonsDCAzPt);
+ TH2F *gHistAntiProtonsDCAxyPt = new TH2F("gHistAntiProtonsDCAxyPt",
+ ";P_{T} [GeV/c];dca_{xy} [cm]",
+ 16,0.3,1.1,
+ 1000,0,10);
+ gHistAntiProtonsDCAxyPt->SetStats(kTRUE);
+ fQA2DList->Add(gHistAntiProtonsDCAxyPt);
+ TH2F *gHistAntiProtonsDCAzPt = new TH2F("gHistAntiProtonsDCAzPt",
+ ";P_{T} [GeV/c];dca_{z} [cm]",
+ 16,0.3,1.1,
+ 1000,0,10);
+ gHistAntiProtonsDCAzPt->SetStats(kTRUE);
+ fQA2DList->Add(gHistAntiProtonsDCAzPt);
+
//========================================================//
fQAProtonsAcceptedList = new TList();
fQAProtonsAcceptedList->SetName("fQAProtonsAcceptedList");