fTriggerSelection(0),
fCentralityPercentileMin(0.),
fCentralityPercentileMax(5.),
-fFilterBit(128),
+fFilterBit(1),
fDCAxyCut(-1),
fDCAzCut(-1),
fData2011(kFALSE),
fCutTPCmultiplicityOutliersAOD(kFALSE),
fPIDcuts(kFALSE),
fCentralityEstimator("V0M"),
-fContourCutList(0),
+fContoursFile(0),
+fCutContourList(0),
fListQA(0x0),
fListQAtpctof(0x0),
fListQAInfo(0x0),
fHistBetavsPTOFbeforePID(0),
fHistdEdxvsPTPCbeforePID(0),
fhistNsigmaP(0),
-fhistNsigmaPt(0),
+fhistTPCnSigmavsP(0),
fHistBetavsPTOFafterPID(0),
-fHistdEdxvsPTPCafterPID(0)
-//fSparseSpecies(0),
+fHistdEdxvsPTPCafterPID(0),
+fHistBetavsPTOFafterPIDTPCTOF(0),
+fHistdEdxvsPTPCafterPIDTPCTOF(0),
+fHistBetavsPTOFafterPIDTPConly(0),
+fHistdEdxvsPTPCafterPIDTPConly(0),
+fHistPion_BetavsPTOFafterPIDTPCTOF(0),
+fHistPion_dEdxvsPTPCafterPIDTPCTOF(0),
+fHistKaon_BetavsPTOFafterPIDTPCTOF(0),
+fHistKaon_dEdxvsPTPCafterPIDTPCTOF(0),
+fHistProton_BetavsPTOFafterPIDTPCTOF(0),
+fHistProton_dEdxvsPTPCafterPIDTPCTOF(0),
+fhistPionEtaDistAfter(0),
+fhistKaonEtaDistAfter(0),
+fhistProtonEtaDistAfter(0)
+ //fSparseSpecies(0),
//fvalueSpecies(0)
{
- for(int i=0;i<150;i++){fContourCut[i]= NULL;}
+ for(int i=0;i<150;i++){
+ fCutContour[i]= NULL;
+ fCutGraph[i]=NULL;
+ }
}
fCutTPCmultiplicityOutliersAOD(kFALSE),
fPIDcuts(kFALSE),
fCentralityEstimator("V0M"),
-fContourCutList(0),
+fContoursFile(0),
+fCutContourList(0),
fListQA(0x0),
fListQAtpctof(0x0),
fListQAInfo(0x0),
fHistBetavsPTOFbeforePID(0),
fHistdEdxvsPTPCbeforePID(0),
fhistNsigmaP(0),
-fhistNsigmaPt(0),
+fhistTPCnSigmavsP(0),
fHistBetavsPTOFafterPID(0),
-fHistdEdxvsPTPCafterPID(0)
+fHistdEdxvsPTPCafterPID(0),
+fHistBetavsPTOFafterPIDTPCTOF(0),
+fHistdEdxvsPTPCafterPIDTPCTOF(0),
+fHistBetavsPTOFafterPIDTPConly(0),
+fHistdEdxvsPTPCafterPIDTPConly(0),
+fHistPion_BetavsPTOFafterPIDTPCTOF(0),
+fHistPion_dEdxvsPTPCafterPIDTPCTOF(0),
+fHistKaon_BetavsPTOFafterPIDTPCTOF(0),
+fHistKaon_dEdxvsPTPCafterPIDTPCTOF(0),
+fHistProton_BetavsPTOFafterPIDTPCTOF(0),
+fHistProton_dEdxvsPTPCafterPIDTPCTOF(0),
+fhistPionEtaDistAfter(0),
+fhistKaonEtaDistAfter(0),
+fhistProtonEtaDistAfter(0)
//fSparseSpecies(0),
-//fvalueSpecies(0)
+//fvalueSpecies(0)root
{
- //fvalueSpecies = new Double_t[9];
//Default Constructor
- //fContourCut[3][50]=NULL;
+ //fCutContour[150]=NULL;
+ //fCutGraph[150]=NULL;
DefineInput(0,TChain::Class());
DefineOutput(1,TList::Class());
}
{
//Destructor
- for(int i=0;i<150;i++){delete fContourCut[i];}
+ fContoursFile->Close();
+ for(int i=0;i<150;i++){
+ delete fCutContour[i];
+ delete fCutGraph[i];
+ }
+
// delete fPID;
// delete fPIDqa;
if(fPIDcuts && pWithinRange){// for pions, kaons and protons only
if(ispecie==AliPID::kPion || ispecie==AliPID::kKaon || ispecie==AliPID::kProton){
int index = 50*i+p_bin;
- if(fContourCut[index]->IsInside(nSigmaTOF,nSigmaTPC)){
+
+ if(fCutContour[index]->IsInside(nSigmaTOF,nSigmaTPC)){//p_bin>7
TH3 *hist1 = (TH3*)fListQAtpctof->At(ispecie);
if (hist1){
hist1->Fill(nSigmaTPC,nSigmaTOF,p);}
+ }
+ if(p_bin>7 && fCutContour[index]->IsInside(nSigmaTOF,nSigmaTPC)){//p_bin>7
+ if ( (track->IsOn(AliAODTrack::kITSin)) && (track->IsOn(AliAODTrack::kTOFpid)) ) {
+ TH2F *HistBetavsPTOFafterPID = (TH2F*)fListQAInfo->At(13);
+ HistBetavsPTOFafterPID ->Fill(track->P()*track->Charge(),beta);
+ }
+ TH2F *HistdEdxvsPTPCafterPID = (TH2F*)fListQAInfo->At(14);
+ HistdEdxvsPTPCafterPID -> Fill(track->P()*track->Charge(),dEdx); //TPC signal
+ }
- TH3 *hist2 = (TH3*)fListQAtpctof->At(ispecie+AliPID::kSPECIESC);
- if (hist2){
- hist2->Fill(nSigmaTPC,nSigmaTOF,pT);}
-
+ if(p_bin<8 && nSigmaTPC<3 && nSigmaTPC>-3){//p_bin<8
if ( (track->IsOn(AliAODTrack::kITSin)) && (track->IsOn(AliAODTrack::kTOFpid)) ) {
TH2F *HistBetavsPTOFafterPID = (TH2F*)fListQAInfo->At(13);
HistBetavsPTOFafterPID ->Fill(track->P()*track->Charge(),beta);
}
TH2F *HistdEdxvsPTPCafterPID = (TH2F*)fListQAInfo->At(14);
HistdEdxvsPTPCafterPID -> Fill(track->P()*track->Charge(),dEdx); //TPC signal
+ }
+
+ TH2F *hTPCnSigmavsP = (TH2F*)fListQAtpctof->At(ispecie+AliPID::kSPECIESC);
+ if (hTPCnSigmavsP){
+ hTPCnSigmavsP->Fill(track->P()*track->Charge(),nSigmaTPC);}
+
+ //=======================With TPC+TOF nsigma method Only!==============================
+ if(fCutContour[index]->IsInside(nSigmaTOF,nSigmaTPC)){
+
+ if ( (track->IsOn(AliAODTrack::kITSin)) && (track->IsOn(AliAODTrack::kTOFpid)) ) {
+ TH2F *HistBetavsPTOFafterPIDTPCTOF = (TH2F*)fListQAInfo->At(15);
+ HistBetavsPTOFafterPIDTPCTOF ->Fill(track->P()*track->Charge(),beta);
+ if(ispecie==AliPID::kPion){
+ TH2F *HistPion_BetavsPTOFafterPIDTPCTOF = (TH2F*)fListQAInfo->At(19);
+ HistPion_BetavsPTOFafterPIDTPCTOF ->Fill(track->P()*track->Charge(),beta);
+ }
+ if(ispecie==AliPID::kKaon){
+ TH2F *HistKaon_BetavsPTOFafterPIDTPCTOF = (TH2F*)fListQAInfo->At(21);
+ HistKaon_BetavsPTOFafterPIDTPCTOF ->Fill(track->P()*track->Charge(),beta);
+ }
+ if(ispecie==AliPID::kProton){
+ TH2F *HistProton_BetavsPTOFafterPIDTPCTOF = (TH2F*)fListQAInfo->At(23);
+ HistProton_BetavsPTOFafterPIDTPCTOF ->Fill(track->P()*track->Charge(),beta);
+ }
+ }
+ TH2F *HistdEdxvsPTPCafterPIDTPCTOF = (TH2F*)fListQAInfo->At(16);
+ HistdEdxvsPTPCafterPIDTPCTOF -> Fill(track->P()*track->Charge(),dEdx); //TPC signal
+ if(ispecie==AliPID::kPion){
+ TH2F *HistPion_dEdxvsPTPCafterPIDTPCTOF = (TH2F*)fListQAInfo->At(20);
+ HistPion_dEdxvsPTPCafterPIDTPCTOF -> Fill(track->P()*track->Charge(),dEdx); //TPC signal
+ TH1F *HistPionEta = (TH1F*)fListQAInfo->At(25);
+ HistPionEta->Fill(eta);
+ }
+ if(ispecie==AliPID::kKaon){
+ TH2F *HistKaon_dEdxvsPTPCafterPIDTPCTOF = (TH2F*)fListQAInfo->At(22);
+ HistKaon_dEdxvsPTPCafterPIDTPCTOF -> Fill(track->P()*track->Charge(),dEdx); //TPC signal
+ TH1F *HistKaonEta = (TH1F*)fListQAInfo->At(26);
+ HistKaonEta->Fill(eta);
+ }
+ if(ispecie==AliPID::kProton){
+ TH2F *HistProton_dEdxvsPTPCafterPIDTPCTOF = (TH2F*)fListQAInfo->At(24);
+ HistProton_dEdxvsPTPCafterPIDTPCTOF -> Fill(track->P()*track->Charge(),dEdx); //TPC signal
+ TH1F *HistProtonEta = (TH1F*)fListQAInfo->At(27);
+ HistProtonEta->Fill(eta);
+ }
+
+ }
+ //======================With TPC nsigma Only!
+ if(nSigmaTPC<3 && nSigmaTPC>-3){
+ if ( (track->IsOn(AliAODTrack::kITSin)) && (track->IsOn(AliAODTrack::kTOFpid)) ) {
+ TH2F *HistBetavsPTOFafterPIDTPConly = (TH2F*)fListQAInfo->At(17);
+ HistBetavsPTOFafterPIDTPConly ->Fill(track->P()*track->Charge(),beta);
+ }
+ TH2F *HistdEdxvsPTPCafterPIDTPConly = (TH2F*)fListQAInfo->At(18);
+ HistdEdxvsPTPCafterPIDTPConly -> Fill(track->P()*track->Charge(),dEdx); //TPC signal
}
+ //========================================================================================
+
+
}
}
-
+ if(!fPIDcuts){
+ TH3 *hist1 = (TH3*)fListQAtpctof->At(ispecie);
+ if (hist1){
+ hist1->Fill(nSigmaTPC,nSigmaTOF,p);}
+
+ TH2F *hTPCnSigmavsP = (TH2F*)fListQAtpctof->At(ispecie+AliPID::kSPECIESC);
+ if (hTPCnSigmavsP){
+ hTPCnSigmavsP->Fill(track->P()*track->Charge(),nSigmaTPC);}
+
+ }
}
}//probMis
}//track loop
- TH2F *HistTPCvsGlobalMultAfter = (TH2F*) fListQAInfo->At(15);
+ TH2F *HistTPCvsGlobalMultAfter = (TH2F*) fListQAInfo->At(19);
HistTPCvsGlobalMultAfter->Fill(multGlobal,multTPC);
}
//______________________________________________________________________________
void AliAnalysisTaskPIDconfig::GetPIDContours()
{
- if(fContourCutList){cout<<"+++++++++++++++++The contour file has been retrieved+++++++++++++++++++"<<endl;}
+ fContoursFile = new TFile(Form("$ALICE_ROOT/PWGCF/FLOW/database/PIDCutContours_%i-%i.root",fCentralityPercentileMin,fCentralityPercentileMax));
- TGraph *CutGraph[150];
- //TCutG *cut[3][10];
+ fCutContourList=(TDirectory*)fContoursFile->Get("Filterbit1");
+ if(!fCutContourList){printf("The contour file is empty"); return;}
+
Double_t pBinning[50];
for(int b=0;b<50;b++){pBinning[b]=b;}
TString species[3] = {"pion","kaon","proton"};
for(int i=0;i<150;i++){
int ispecie = i/50;
int iPbin = i%50;
- TList *Species_contours = (TList*)fContourCutList->Get(species[ispecie]);
- if(Species_contours){cout<<"Species_contours exists"<<endl;}
+ TList *Species_contours = (TList*)fCutContourList->Get(species[ispecie]);
+ //if(Species_contours){cout<<"Species_contours exists"<<endl;}
TString Graph_Name = "contourlines_";
Graph_Name += species[ispecie];
Graph_Name += Form("%.f%.f-%i%icent",pBinning[iPbin],pBinning[iPbin]+1,fCentralityPercentileMin,fCentralityPercentileMax);
- cout<<Graph_Name<<endl;
- CutGraph[i] = (TGraph*)Species_contours->FindObject(Graph_Name);
+ //cout<<Graph_Name<<endl;
+ fCutGraph[i] = (TGraph*)Species_contours->FindObject(Graph_Name);
- if(!CutGraph[i]){cout<<"Contour Graph does not exist"<<endl; continue;}
+ if(!fCutGraph[i]){cout<<"Contour Graph does not exist"<<endl; continue;}
- fContourCut[i] = new TCutG(Graph_Name.Data(),CutGraph[i]->GetN(),CutGraph[i]->GetX(),CutGraph[i]->GetY());
- if(!fContourCut[i]){cout<<"i = "<<i<<endl;}
+ fCutContour[i] = new TCutG(Graph_Name.Data(),fCutGraph[i]->GetN(),fCutGraph[i]->GetX(),fCutGraph[i]->GetY());
}
fhistNsigmaP = new TH3F(Form("NsigmaP_TPC_TOF_%s",AliPID::ParticleName(ispecie)),Form("TPC n#sigma vs. TOF n#sigma %s vs. p ;TPC n#sigma;TOF n#sigma;p [GeV]",AliPID::ParticleName(ispecie)),200,-20,20,200,-20,20,60,0.1,6);
fListQAtpctof->Add(fhistNsigmaP);
}
- //TPC and TOF signal vs. transverse momentum
+
+ //TPC signal vs. momentum
for (Int_t ispecie=0; ispecie<AliPID::kSPECIESC; ++ispecie){
- fhistNsigmaPt = new TH3F(Form("NsigmaPt_TPC_TOF_%s",AliPID::ParticleName(ispecie)),Form("TPC n#sigma vs. TOF n#sigma %s vs. Pt ;TPC n#sigma;TOF n#sigma;pT [GeV]",AliPID::ParticleName(ispecie)),200,-20,20,200,-20,20,60,0.1,6);
- fListQAtpctof->Add(fhistNsigmaPt);
+ fhistTPCnSigmavsP = new TH2F(Form("NsigmaP_TPC_%s",AliPID::ParticleName(ispecie)),Form("TPC n#sigma %s vs. p ;p [GeV];TPC n#sigma",AliPID::ParticleName(ispecie)),60,0,6,125,-5,20);
+ fListQAtpctof->Add(fhistTPCnSigmavsP);
}
}
fhistPhiDistBefore = new TH1F("Phi Distribution Before Cuts","Phi Distribution Before Cuts",200,0,6.4);
fListQAInfo->Add(fhistPhiDistBefore);
- fhistEtaDistBefore = new TH1F("Eta Distribution Before Cuts","Eta Distribution Before Cuts",200,-10,10);
+ fhistEtaDistBefore = new TH1F("Eta Distribution Before Cuts","Eta Distribution Before Cuts",100,-2,2);
fListQAInfo->Add(fhistEtaDistBefore);
fhistDCAAfter = new TH2F("DCA xy vs z (after)","DCA after",200,0,10,200,0,10);
fHistdEdxvsPTPCafterPID = new TH2F("momentum vs dEdx after PID","momentum vs dEdx after PID",1000,-10.,10.,1000,0,1000);
fListQAInfo->Add(fHistdEdxvsPTPCafterPID);
+ fHistBetavsPTOFafterPIDTPCTOF = new TH2F("momentum vs beta after PID TPC+TOF","momentum vs beta after PID TPC+TOF",1000,-10.,10.,1000,0,1.2);
+ fListQAInfo->Add(fHistBetavsPTOFafterPIDTPCTOF);
+
+ fHistdEdxvsPTPCafterPIDTPCTOF = new TH2F("momentum vs dEdx after PID TPC+TOF","momentum vs dEdx after PID TPC+TOF",1000,-10.,10.,1000,0,1000);
+ fListQAInfo->Add(fHistdEdxvsPTPCafterPIDTPCTOF);
+
+ fHistBetavsPTOFafterPIDTPConly = new TH2F("momentum vs beta after PID TPC only","momentum vs beta after PID TPC only",1000,-10.,10.,1000,0,1.2);
+ fListQAInfo->Add(fHistBetavsPTOFafterPIDTPConly);
+
+ fHistdEdxvsPTPCafterPIDTPConly = new TH2F("momentum vs dEdx after PID TPC only","momentum vs dEdx after PID TPC only",1000,-10.,10.,1000,0,1000);
+ fListQAInfo->Add(fHistdEdxvsPTPCafterPIDTPConly);
+
+ fHistPion_BetavsPTOFafterPIDTPCTOF = new TH2F("Pion momentum vs beta after PID TPC+TOF","Pion momentum vs beta after PID TPC+TOF",1000,-10.,10.,1000,0,1.2);
+ fListQAInfo->Add(fHistPion_BetavsPTOFafterPIDTPCTOF);
+
+ fHistPion_dEdxvsPTPCafterPIDTPCTOF = new TH2F("Pion momentum vs dEdx after PID TPC+TOF","Pion momentum vs dEdx after PID TPC+TOF",1000,-10.,10.,1000,0,1000);
+ fListQAInfo->Add(fHistPion_dEdxvsPTPCafterPIDTPCTOF);
+
+ fHistKaon_BetavsPTOFafterPIDTPCTOF = new TH2F("Kaon momentum vs beta after PID TPC+TOF","Kaon momentum vs beta after PID TPC+TOF",1000,-10.,10.,1000,0,1.2);
+ fListQAInfo->Add(fHistKaon_BetavsPTOFafterPIDTPCTOF);
+
+ fHistKaon_dEdxvsPTPCafterPIDTPCTOF = new TH2F("Kaon momentum vs dEdx after PID TPC+TOF","Kaon momentum vs dEdx after PID TPC+TOF",1000,-10.,10.,1000,0,1000);
+ fListQAInfo->Add(fHistKaon_dEdxvsPTPCafterPIDTPCTOF);
+
+ fHistProton_BetavsPTOFafterPIDTPCTOF = new TH2F("Proton momentum vs beta after PID TPC+TOF","Proton momentum vs beta after PID TPC+TOF",1000,-10.,10.,1000,0,1.2);
+ fListQAInfo->Add(fHistProton_BetavsPTOFafterPIDTPCTOF);
+
+ fHistProton_dEdxvsPTPCafterPIDTPCTOF = new TH2F("Proton momentum vs dEdx after PID TPC+TOF","Proton momentum vs dEdx after PID TPC+TOF",1000,-10.,10.,1000,0,1000);
+ fListQAInfo->Add(fHistProton_dEdxvsPTPCafterPIDTPCTOF);
+
+ fhistPionEtaDistAfter = new TH1F("Pion Eta Distribution After PID Cuts","Pion Eta Distribution After PID Cuts",100,-2,2);
+ fListQAInfo->Add(fhistPionEtaDistAfter);
+
+ fhistKaonEtaDistAfter = new TH1F("Kaon Eta Distribution After PID Cuts","Kaon Eta Distribution After PID Cuts",100,-2,2);
+ fListQAInfo->Add(fhistKaonEtaDistAfter);
+
+ fhistProtonEtaDistAfter = new TH1F("Proton Eta Distribution After PID Cuts","Proton Eta Distribution PID After Cuts",100,-2,2);
+ fListQAInfo->Add(fhistProtonEtaDistAfter);
+
fTPCvsGlobalMultAfter = new TH2F("TPC vs. Global Multiplicity After","TPC vs. Global Multiplicity After",500,0,6000,500,0,6000);
fListQAInfo->Add(fTPCvsGlobalMultAfter);