#include "AliHelperPID.h"\r
\r
#include "AliEbyEParticleRatioFluctuationTask.h"\r
-using std::cout;\r
-using std::endl;\r
-using std::cerr;\r
\r
ClassImp(AliEbyEParticleRatioFluctuationTask)\r
\r
//-----------------------------------------------------------------------\r
-AliEbyEParticleRatioFluctuationTask::AliEbyEParticleRatioFluctuationTask( const char *name ) : AliAnalysisTaskSE( name ), fThnList(NULL), fAnalysisType("AOD"), fAnalysisData("PbPb"), fCentralityEstimator("V0M"), fVxMax(3.), fVyMax(3.), fVzMax(10.), fDCAxy(2.4), fDCAz(3.2), fPtLowerLimit(0.2), fPtHigherLimit(5.), fEtaLowerLimit(-1.), fEtaHigherLimit(1.), fAODtrackCutBit(128), isQA(kFALSE), fDebug(kFALSE), fHelperPID(0x0),fEventCounter(NULL), fHistoCorrelation(NULL) { \r
+AliEbyEParticleRatioFluctuationTask::AliEbyEParticleRatioFluctuationTask( const char *name ) : AliAnalysisTaskSE( name ), \r
+ fThnList(NULL), \r
+ fAnalysisType("AOD"), \r
+ fAnalysisData("PbPb"), \r
+ fCentralityEstimator("V0M"), \r
+ fVxMax(3.), \r
+ fVyMax(3.), \r
+ fVzMax(10.), \r
+ fDCAxy(2.4), \r
+ fDCAz(3.2), \r
+ fPtLowerLimit(0.2), \r
+ fPtHigherLimit(5.), \r
+ fEtaLowerLimit(-1.), \r
+ fEtaHigherLimit(1.), \r
+ fTPCNClus(80),\r
+ fAODtrackCutBit(128), \r
+ isQA(kFALSE), \r
+ fDebug(kFALSE), \r
+ fHelperPID(0x0),\r
+ fEventCounter(NULL), \r
+ fHistoCorrelation(NULL) { \r
for(Int_t i = 0; i < 14; i++ ) fHistQA[i] = NULL;\r
- DefineOutput(1, TList::Class()); // Outpput....\r
+ DefineOutput(1, TList::Class()); //! Connect Outpput....\r
}\r
\r
AliEbyEParticleRatioFluctuationTask::~AliEbyEParticleRatioFluctuationTask() {\r
- //clean up\r
- if (fThnList) delete fThnList;\r
- if (fHelperPID) delete fThnList;\r
+ //! Cleaning up\r
+ if (fThnList) delete fThnList;\r
+ if (fHelperPID) delete fHelperPID;\r
}\r
\r
//---------------------------------------------------------------------------------\r
fThnList = new TList();\r
fThnList->SetOwner(kTRUE);\r
\r
- fEventCounter = new TH1D("fEventCounter","EventCounter", 250, 0.5,250.5);\r
+ fEventCounter = new TH1D("fEventCounter","EventCounter", 300, 0.5,300.5);\r
if (isQA) fThnList->Add(fEventCounter);\r
\r
- fHistQA[0] = new TH1D("fHistQAvx", "Histo Vx Selected", 5000, -5., 5.);\r
- fHistQA[1] = new TH1D("fHistQAvy", "Histo Vy Selected", 5000, -5., 5.);\r
- fHistQA[2] = new TH1D("fHistQAvz", "Histo Vz Selected", 5000, -25., 25.); \r
- fHistQA[3] = new TH1D("fHistQAvxA", "Histo Vx", 5000, -5., 5.);\r
- fHistQA[4] = new TH1D("fHistQAvyA", "Histo Vy", 5000, -5., 5.);\r
- fHistQA[5] = new TH1D("fHistQAvzA", "Histo Vz", 5000, -25., 25.);\r
+ fHistQA[0] = new TH2F("fHistQAvx", "Histo Vx Selected;Centrality;Vx", 100,0,100, 5000, -5., 5.);\r
+ fHistQA[1] = new TH2F("fHistQAvy", "Histo Vy Selected;Centrality;Vy", 100,0,100, 5000, -5., 5.);\r
+ fHistQA[2] = new TH2F("fHistQAvz", "Histo Vz Selected;Centrality;Vz", 100,0,100, 5000, -25., 25.); \r
+ fHistQA[3] = new TH2F("fHistQAvxA", "Histo Vx;Centrality;Vx", 100,0,100, 5000, -5., 5.);\r
+ fHistQA[4] = new TH2F("fHistQAvyA", "Histo Vy;Centrality;Vy", 100,0,100, 5000, -5., 5.);\r
+ fHistQA[5] = new TH2F("fHistQAvzA", "Histo Vz;Centrality;Vz", 100,0,100, 5000, -25., 25.);\r
\r
- fHistQA[6] = new TH1D("fHistQADcaXyA", "Histo DCAxy", 600, -15., 15.);\r
- fHistQA[7] = new TH1D("fHistQADcaZA", "Histo DCAz ", 600, -15., 15.); \r
- fHistQA[8] = new TH1D("fHistQAPtA","p_{T} distribution",1000,0,10);\r
- fHistQA[9] = new TH1D("fHistQAEtaA","#eta distribution",240,-1.2,1.2);\r
+ fHistQA[6] = new TH2F("fHistQADcaXyA", "Histo DCAxy;Centrality;DCAxy",100,0,100, 600, -15., 15.);\r
+ fHistQA[7] = new TH2F("fHistQADcaZA", "Histo DCAz;Centrality;DCAz ",100,0,100, 600, -15., 15.); \r
+ fHistQA[8] = new TH2F("fHistQAPtA","p_{T} distribution;Centrality;p_{T}",100,0,100,1000,0,10);\r
+ fHistQA[9] = new TH2F("fHistQAEtaA","#eta distribution;Centrality;#eta",100,0,100,240,-1.2,1.2);\r
\r
- fHistQA[10] = new TH1D("fHistQADcaXy", "Histo DCAxy after Selected", 600, -15., 15.);\r
- fHistQA[11] = new TH1D("fHistQADcaZ", "Histo DCAz Selected", 600, -15., 15.); \r
- fHistQA[12] = new TH1D("fHistQAPt","p_{T} distribution Selected",1000,0,10);\r
- fHistQA[13] = new TH1D("fHistQAEta","#eta distribution Selected",240,-1.2,1.2);\r
+ fHistQA[10] = new TH2F("fHistQADcaXy", "Histo DCAxy after Selected;Centrality;DCAxy", 100,0,100,600, -15., 15.);\r
+ fHistQA[11] = new TH2F("fHistQADcaZ", "Histo DCAz Selected;Centrality;DCAz", 100,0,100,600, -15., 15.); \r
+ fHistQA[12] = new TH2F("fHistQAPt","p_{T} distribution Selected;Centrality;p_{T}",100,0,100,1000,0,10);\r
+ fHistQA[13] = new TH2F("fHistQAEta","#eta distribution Selected;Centrality;#eta",100,0,100, 240,-1.2,1.2);\r
\r
if (isQA) for(Int_t i = 0; i < 14; i++) fThnList->Add(fHistQA[i]);\r
\r
\r
//----------------------------------------------------------------------------------\r
void AliEbyEParticleRatioFluctuationTask::UserExec( Option_t * ){\r
+\r
if (isQA) fEventCounter->Fill(1);\r
\r
AliAODEvent* event = dynamic_cast<AliAODEvent*>(InputEvent());\r
return;\r
}\r
\r
- if (!AcceptEvent(event)) return;\r
+ Int_t gCent = -1;\r
+ Float_t gRefMul = -1;\r
+ \r
+ AliAODHeader *aodHeader = event->GetHeader();\r
+ gCent = (Int_t)aodHeader->GetCentralityP()->GetCentralityPercentile(fCentralityEstimator.Data());\r
+ gRefMul = aodHeader->GetRefMultiplicity();\r
+ if (gCent < 0 || gCent > 100) return;\r
if (isQA) fEventCounter->Fill(2); \r
+\r
+ if (!AcceptEvent(event,gCent)) return;\r
\r
Int_t icharge = -1;\r
Int_t gCharge[2];\r
}\r
}\r
\r
- Float_t gCent = -1;\r
- Float_t gRefMul = -1;\r
\r
if(fAnalysisType == "AOD") {\r
- AliAODHeader *aodHeader = event->GetHeader();\r
- gCent = aodHeader->GetCentralityP()->GetCentralityPercentile(fCentralityEstimator.Data());\r
- gRefMul = aodHeader->GetRefMultiplicity();\r
- \r
- if (gCent < 0 || gCent > 100) return;\r
- if (isQA) fEventCounter->Fill(50+gCent);\r
+ if (isQA) {\r
+ fEventCounter->Fill(5);\r
+ fEventCounter->Fill(50+gCent);\r
+ }\r
\r
for (Int_t itrk = 0; itrk < event->GetNumberOfTracks(); itrk++) {\r
AliAODTrack* track = dynamic_cast<AliAODTrack *>(event->GetTrack(itrk));\r
if (!track) continue;\r
\r
- if (!AcceptTrack(track)) continue;\r
+ if (!AcceptTrack(track, gCent)) continue;\r
\r
Int_t a = fHelperPID->GetParticleSpecies((AliVTrack*) track,kTRUE);\r
+\r
if(a < 0 || a > 2) continue;\r
icharge = track->Charge() > 0 ? 0 : 1;\r
gCharge[icharge]++;\r
}\r
}\r
else if(fAnalysisType == "MCAOD") {\r
- TClonesArray *arrayMC = (TClonesArray*) event->GetList()->FindObject(AliAODMCParticle::StdBranchName());\r
+ TClonesArray *arrayMC= 0; \r
+ arrayMC = dynamic_cast<TClonesArray*> (event->GetList()->FindObject(AliAODMCParticle::StdBranchName()));\r
if (!arrayMC) {\r
- AliFatal("Error: MC particles branch not found!\n");\r
+ Printf("Error: MC particles branch not found!\n");\r
+ return;\r
}\r
AliAODMCHeader *mcHdr=0;\r
mcHdr=(AliAODMCHeader*)event->GetList()->FindObject(AliAODMCHeader::StdBranchName()); \r
if(!mcHdr) {\r
- printf("MC header branch not found!\n");\r
+ Printf("MC header branch not found!\n");\r
return;\r
}\r
\r
- AliAODHeader *aodHeader = event->GetHeader();\r
- AliCentrality* fcentrality = aodHeader->GetCentralityP();\r
- gCent = fcentrality ->GetCentralityPercentile(fCentralityEstimator.Data());\r
- if (gCent < 0 || gCent > 100) return;\r
- if (isQA) fEventCounter->Fill(50+gCent); \r
-\r
+ if (isQA) {\r
+ fEventCounter->Fill(5);\r
+ fEventCounter->Fill(50+gCent);\r
+ }\r
+ \r
Int_t nMC = arrayMC->GetEntries();\r
for (Int_t iMC = 0; iMC < nMC; iMC++) {\r
AliAODMCParticle *partMC = (AliAODMCParticle*) arrayMC->At(iMC);\r
- if(!AcceptMCTrack(partMC)) continue;\r
+ if(!AcceptMCTrack(partMC, gCent)) continue;\r
Int_t a = fHelperPID->GetMCParticleSpecie((AliVEvent*) event,(AliVTrack*)partMC,1);\r
if(a < 0 || a > 2) continue;\r
icharge = partMC->Charge() > 0 ? 0 : 1;\r
gPid[a][icharge]++;\r
}\r
}\r
- else return;\r
+ else {\r
+ printf(" No Event Type is Defined ");\r
+ return;\r
+ }\r
\r
- \r
if( (gCharge[0] + gCharge[1]) != 0 ) {\r
if (isQA) {\r
- fEventCounter->Fill(3); \r
+ fEventCounter->Fill(6); \r
fEventCounter->Fill(160 + gCent);\r
}\r
else { \r
}\r
\r
//___________________________________________________________\r
-Bool_t AliEbyEParticleRatioFluctuationTask::AcceptEvent(AliAODEvent *event) const {\r
+Bool_t AliEbyEParticleRatioFluctuationTask::AcceptEvent(AliAODEvent *event, Int_t cent) const {\r
Bool_t ver = kFALSE;\r
const AliAODVertex *vertex = event->GetPrimaryVertex();\r
if(vertex) {\r
if(fCov[5] != 0) {\r
\r
if(isQA) { \r
- fEventCounter->Fill(5);\r
- fHistQA[3]->Fill(vertex->GetX());\r
- fHistQA[4]->Fill(vertex->GetY());\r
- fHistQA[5]->Fill(vertex->GetZ());\r
+ fEventCounter->Fill(3);\r
+ fHistQA[3]->Fill(cent,vertex->GetX());\r
+ fHistQA[4]->Fill(cent,vertex->GetY());\r
+ fHistQA[5]->Fill(cent,vertex->GetZ());\r
}\r
\r
if(TMath::Abs(vertex->GetX()) < fVxMax) {\r
if(TMath::Abs(vertex->GetZ()) < fVzMax) {\r
ver = kTRUE;\r
if(isQA) { \r
- fEventCounter->Fill(6);\r
- fHistQA[0]->Fill(vertex->GetX());\r
- fHistQA[1]->Fill(vertex->GetY());\r
- fHistQA[2]->Fill(vertex->GetZ());\r
+ fEventCounter->Fill(4);\r
+ fHistQA[0]->Fill(cent,vertex->GetX());\r
+ fHistQA[1]->Fill(cent,vertex->GetY());\r
+ fHistQA[2]->Fill(cent,vertex->GetZ());\r
}\r
}\r
}\r
\r
\r
//___________________________________________________________\r
-Bool_t AliEbyEParticleRatioFluctuationTask::AcceptTrack(AliAODTrack *track) const {\r
- if(!track) return kFALSE;\r
- if (track->Charge() == 0 ) return kFALSE;\r
+Bool_t AliEbyEParticleRatioFluctuationTask::AcceptTrack(AliAODTrack *track, Int_t cent) const {\r
+ if(!track) return kFALSE;\r
+ if (track->Charge() == 0 ) return kFALSE;\r
\r
if(isQA) {\r
- fHistQA[6]->Fill(track->DCA());\r
- fHistQA[7]->Fill(track->ZAtDCA());\r
- fHistQA[8]->Fill(track->Pt());\r
- fHistQA[9]->Fill(track->Eta());\r
+ fHistQA[6]->Fill(cent,track->DCA());\r
+ fHistQA[7]->Fill(cent,track->ZAtDCA());\r
+ fHistQA[8]->Fill(cent,track->Pt());\r
+ fHistQA[9]->Fill(cent,track->Eta());\r
}\r
\r
if (!track->TestFilterBit(fAODtrackCutBit)) return kFALSE;\r
\r
if (track->Eta() < fEtaLowerLimit ||\r
- track->Eta() > fEtaHigherLimit) return kFALSE;\r
+ track->Eta() > fEtaHigherLimit) return kFALSE;\r
if (track->Pt() < fPtLowerLimit ||\r
- track->Pt() > fPtHigherLimit) return kFALSE; \r
- if ( track->DCA() > fDCAxy ) return kFALSE; \r
- if ( track->ZAtDCA() > fDCAz ) return kFALSE;\r
+ track->Pt() > fPtHigherLimit) return kFALSE; \r
+ if ( track->DCA() > fDCAxy ) return kFALSE; \r
+ if ( track->ZAtDCA() > fDCAz ) return kFALSE;\r
\r
if(isQA) {\r
- fHistQA[10]->Fill(track->DCA());\r
- fHistQA[11]->Fill(track->ZAtDCA());\r
- fHistQA[12]->Fill(track->Pt());\r
- fHistQA[13]->Fill(track->Eta());\r
+ fHistQA[10]->Fill(cent,track->DCA());\r
+ fHistQA[11]->Fill(cent,track->ZAtDCA());\r
+ fHistQA[12]->Fill(cent,track->Pt());\r
+ fHistQA[13]->Fill(cent,track->Eta());\r
}\r
\r
return kTRUE;\r
\r
\r
//___________________________________________________________\r
-Bool_t AliEbyEParticleRatioFluctuationTask::AcceptMCTrack(AliAODMCParticle *track) const {\r
+Bool_t AliEbyEParticleRatioFluctuationTask::AcceptMCTrack(AliAODMCParticle *track, Int_t cent) const {\r
if(!track) return kFALSE;\r
if(!track->IsPhysicalPrimary()) return kFALSE;\r
if (track->Charge() == 0 ) return kFALSE;\r
if(isQA) {\r
- fHistQA[8]->Fill(track->Pt());\r
- fHistQA[9]->Fill(track->Eta());\r
+ fHistQA[8]->Fill(cent,track->Pt());\r
+ fHistQA[9]->Fill(cent,track->Eta());\r
}\r
\r
if (track->Eta() < fEtaLowerLimit ||\r
track->Pt() > fPtHigherLimit) return kFALSE; \r
\r
if(isQA) {\r
- fHistQA[12]->Fill(track->Pt());\r
- fHistQA[13]->Fill(track->Eta());\r
+ fHistQA[12]->Fill(cent,track->Pt());\r
+ fHistQA[13]->Fill(cent,track->Eta());\r
}\r
\r
return kTRUE;\r