fCentMethod2(""),
fCentMethod3(""),
fDoV0QA(0),
+ fDoEPQA(0),
+ fDoLeadingObjectPosition(0),
+ fMaxCellsInCluster(30),
fCent2(0),
fCent3(0),
fVZERO(0),
fHistNCellsEnergy(0),
fHistFcrossEnergy(0),
fHistClusTimeEnergy(0),
+ fHistClusEnergyMinusCellEnergy(0),
fHistCellsAbsIdEnergy(0),
fHistChVSneCells(0),
fHistChVSneClus(0),
fHistDeltaPhiPt[i] = 0;
fHistDeltaPtvsPt[i] = 0;
fHistClusPhiEtaEnergy[i] = 0;
+ fHistClusDeltaPhiEPEnergy[i] = 0;
fHistClusMCEnergyFraction[i] = 0;
fHistJetsPhiEta[i] = 0;
fHistJetsPtArea[i] = 0;
fCentMethod2(""),
fCentMethod3(""),
fDoV0QA(0),
+ fDoEPQA(0),
+ fDoLeadingObjectPosition(0),
+ fMaxCellsInCluster(30),
fCent2(0),
fCent3(0),
fVZERO(0),
fHistNCellsEnergy(0),
fHistFcrossEnergy(0),
fHistClusTimeEnergy(0),
+ fHistClusEnergyMinusCellEnergy(0),
fHistCellsAbsIdEnergy(0),
fHistChVSneCells(0),
fHistChVSneClus(0),
fHistDeltaPhiPt[i] = 0;
fHistDeltaPtvsPt[i] = 0;
fHistClusPhiEtaEnergy[i] = 0;
+ fHistClusDeltaPhiEPEnergy[i] = 0;
fHistClusMCEnergyFraction[i] = 0;
fHistJetsPhiEta[i] = 0;
fHistJetsPtArea[i] = 0;
AliAnalysisTaskEmcalJet::UserCreateOutputObjects();
- if (!fTracksName.IsNull()) {
+ if (fParticleCollArray.GetEntriesFast()>0) {
if (!fParticleLevel && fIsMC) {
fHistTrNegativeLabels = new TH1F("fHistTrNegativeLabels","fHistTrNegativeLabels", 500, 0, 1);
fHistTrNegativeLabels->GetXaxis()->SetTitle("% of negative labels");
for (Int_t i = 0; i < fNcentBins; i++) {
for (Int_t j = 0; j < nlabels; j++) {
histname = Form("fHistTrPhiEtaPt_%d_%d",i,j);
- fHistTrPhiEtaPt[i][j] = new TH3F(histname,histname, 100, -1, 1, 201, 0, TMath::Pi() * 2.01, fNbins, fMinBinPt, fMaxBinPt);
+ fHistTrPhiEtaPt[i][j] = new TH3F(histname,histname, 100, -1, 1, 101, 0, TMath::Pi() * 2.02, fNbins, fMinBinPt, fMaxBinPt);
fHistTrPhiEtaPt[i][j]->GetXaxis()->SetTitle("#eta");
fHistTrPhiEtaPt[i][j]->GetYaxis()->SetTitle("#phi");
fHistTrPhiEtaPt[i][j]->GetZaxis()->SetTitle("p_{T} (GeV/c)");
if (!fParticleLevel) {
if (fIsMC) {
histname = Form("fHistTrPhiEtaZeroLab_%d",i);
- fHistTrPhiEtaZeroLab[i] = new TH2F(histname,histname, 100, -1, 1, 201, 0, TMath::Pi() * 2.01);
+ fHistTrPhiEtaZeroLab[i] = new TH2F(histname,histname, 100, -1, 1, 101, 0, TMath::Pi() * 2.02);
fHistTrPhiEtaZeroLab[i]->GetXaxis()->SetTitle("#eta");
fHistTrPhiEtaZeroLab[i]->GetYaxis()->SetTitle("#phi");
fHistTrPhiEtaZeroLab[i]->GetZaxis()->SetTitle("counts");
}
histname = Form("fHistTrEmcPhiEta_%d",i);
- fHistTrEmcPhiEta[i] = new TH2F(histname,histname, 100, -1, 1, 201, 0, TMath::Pi() * 2.01);
+ fHistTrEmcPhiEta[i] = new TH2F(histname,histname, 100, -1, 1, 101, 0, TMath::Pi() * 2.02);
fHistTrEmcPhiEta[i]->GetXaxis()->SetTitle("#eta");
fHistTrEmcPhiEta[i]->GetYaxis()->SetTitle("#phi");
fOutput->Add(fHistTrEmcPhiEta[i]);
fOutput->Add(fHistTrEmcPt[i]);
histname = Form("fHistTrPhiEtaNonProp_%d",i);
- fHistTrPhiEtaNonProp[i] = new TH2F(histname,histname, 100, -1, 1, 201, 0, TMath::Pi() * 2.01);
+ fHistTrPhiEtaNonProp[i] = new TH2F(histname,histname, 100, -1, 1, 101, 0, TMath::Pi() * 2.02);
fHistTrPhiEtaNonProp[i]->GetXaxis()->SetTitle("#eta");
fHistTrPhiEtaNonProp[i]->GetYaxis()->SetTitle("#phi");
fOutput->Add(fHistTrPhiEtaNonProp[i]);
fHistDeltaPtvsPt[i] = new TH2F(histname,histname, fNbins, fMinBinPt, fMaxBinPt, fNbins, -fMaxBinPt/2, fMaxBinPt/2);
fHistDeltaPtvsPt[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
fHistDeltaPtvsPt[i]->GetYaxis()->SetTitle("#deltap_{T} (GeV/c)");
+ fHistDeltaPtvsPt[i]->GetZaxis()->SetTitle("counts");
fOutput->Add(fHistDeltaPtvsPt[i]);
}
}
}
- if (!fCaloName.IsNull()) {
+ if (fClusterCollArray.GetEntriesFast()>0) {
TString histname;
for (Int_t i = 0; i < fNcentBins; i++) {
histname = "fHistClusPhiEtaEnergy_";
histname += i;
- fHistClusPhiEtaEnergy[i] = new TH3F(histname, histname, 100, -1.2, 1.2, 201, 0, TMath::Pi() * 2.01, fNbins, fMinBinPt, fMaxBinPt);
+ fHistClusPhiEtaEnergy[i] = new TH3F(histname, histname, 100, -1, 1, 101, 0, TMath::Pi() * 2.02, fNbins, fMinBinPt, fMaxBinPt);
fHistClusPhiEtaEnergy[i]->GetXaxis()->SetTitle("#eta");
fHistClusPhiEtaEnergy[i]->GetYaxis()->SetTitle("#phi");
fHistClusPhiEtaEnergy[i]->GetZaxis()->SetTitle("E_{cluster} (GeV)");
fOutput->Add(fHistClusPhiEtaEnergy[i]);
+ histname = "fHistClusDeltaPhiEPEnergy_";
+ histname += i;
+ fHistClusDeltaPhiEPEnergy[i] = new TH2F(histname, histname, fNbins, fMinBinPt, fMaxBinPt, 100, 0, TMath::Pi());
+ fHistClusDeltaPhiEPEnergy[i]->GetXaxis()->SetTitle("E_{cluster} (GeV)");
+ fHistClusDeltaPhiEPEnergy[i]->GetYaxis()->SetTitle("#phi_{cluster} - #psi_{RP}");
+ fOutput->Add(fHistClusDeltaPhiEPEnergy[i]);
+
if (fIsEmbedded) {
histname = "fHistClusMCEnergyFraction_";
histname += i;
fHistClusTimeEnergy->GetYaxis()->SetTitle("Time");
fOutput->Add(fHistClusTimeEnergy);
- fHistNCellsEnergy = new TH2F("fHistNCellsEnergy","Number of cells vs. energy of clusters", fNbins, fMinBinPt, fMaxBinPt, 30, 0, 30);
+ Int_t nbins = fMaxCellsInCluster;
+ while (nbins > fNbins) nbins /= 2;
+ fHistNCellsEnergy = new TH2F("fHistNCellsEnergy","Number of cells vs. energy of clusters", fNbins, fMinBinPt, fMaxBinPt, nbins, -0.5, fMaxCellsInCluster-0.5);
fHistNCellsEnergy->GetXaxis()->SetTitle("E_{cluster} (GeV)");
fHistNCellsEnergy->GetYaxis()->SetTitle("N_{cells}");
- fOutput->Add(fHistNCellsEnergy);
+ fOutput->Add(fHistNCellsEnergy);
fHistFcrossEnergy = new TH2F("fHistFcrossEnergy","fHistFcrossEnergy", fNbins, fMinBinPt, fMaxBinPt, 200, -3.5, 1.5);
fHistFcrossEnergy->GetXaxis()->SetTitle("E_{cluster} (GeV)");
fHistFcrossEnergy->GetYaxis()->SetTitle("F_{cross}");
fOutput->Add(fHistFcrossEnergy);
+
+ fHistClusEnergyMinusCellEnergy = new TH2F("fHistClusEnergyMinusCellEnergy","fHistClusEnergyMinusCellEnergy",
+ fNbins, fMinBinPt, fMaxBinPt, fNbins, -fMaxBinPt/2, fMaxBinPt/2);
+ fHistClusEnergyMinusCellEnergy->GetXaxis()->SetTitle("E_{cluster} (GeV)");
+ fHistClusEnergyMinusCellEnergy->GetYaxis()->SetTitle("E_{cluster} - #Sigma_{i}E_{cell,i} (GeV)");
+ fOutput->Add(fHistClusEnergyMinusCellEnergy);
fHistCellsAbsIdEnergy = new TH2F("fHistCellsAbsIdEnergy","fHistCellsAbsIdEnergy", 11600,0,11599,(Int_t)(fNbins / 2), fMinBinPt, fMaxBinPt / 2);
fHistCellsAbsIdEnergy->GetXaxis()->SetTitle("cell abs. Id");
fOutput->Add(fHistChVSneCorrCells);
}
- if (!fJetsName.IsNull()) {
+ if (fJetCollArray.GetEntriesFast()>0) {
TString histname;
for (Int_t i = 0; i < fNcentBins; i++) {
histname = "fHistJetsPhiEta_";
histname += i;
- fHistJetsPhiEta[i] = new TH2F(histname.Data(), histname.Data(), 100, -1.2, 1.2, 201, 0, TMath::Pi() * 2.01);
+ fHistJetsPhiEta[i] = new TH2F(histname.Data(), histname.Data(), 100, -1, 1, 101, 0, TMath::Pi() * 2.02);
fHistJetsPhiEta[i]->GetXaxis()->SetTitle("#eta");
fHistJetsPhiEta[i]->GetYaxis()->SetTitle("#phi");
fHistJetsPhiEta[i]->GetZaxis()->SetTitle("counts");
histname = "fHistJetsPtArea_";
histname += i;
- fHistJetsPtArea[i] = new TH2F(histname.Data(), histname.Data(), (Int_t)(fNbins * 2.5), fMinBinPt, fMaxBinPt * 2.5, 30, 0, fJetRadius * fJetRadius * TMath::Pi() * 3);
+ fHistJetsPtArea[i] = new TH2F(histname.Data(), histname.Data(), (Int_t)(fNbins * 2.5), fMinBinPt, fMaxBinPt * 2.5, 50, 0, 1.5);
fHistJetsPtArea[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
fHistJetsPtArea[i]->GetYaxis()->SetTitle("area");
fOutput->Add(fHistJetsPtArea[i]);
}
Int_t dim = 0;
- TString title[10];
- Int_t nbins[10] = {0};
- Double_t min[10] = {0};
- Double_t max[10] = {0};
+ TString title[20];
+ Int_t nbins[20] = {0};
+ Double_t min[20] = {0};
+ Double_t max[20] = {0};
if (fForceBeamType != AliAnalysisTaskEmcal::kpp) {
title[dim] = "Centrality %";
dim++;
}
- if (fDoV0QA) {
+ if (fDoV0QA==1) {
title[dim] = "V0A total multiplicity";
nbins[dim] = 200;
min[dim] = 0;
max[dim] = 20000;
dim++;
}
+ else if (fDoV0QA==2) {
+ title[dim] = "V0A+V0C total multiplicity";
+ nbins[dim] = 300;
+ min[dim] = 0;
+ max[dim] = 30000;
+ dim++;
+ }
if (!fRhoName.IsNull()) {
title[dim] = "#rho (GeV/c)";
max[dim] = 400;
dim++;
}
+
+ if (fDoEPQA) {
+ title[dim] = "#psi_{RP}";
+ nbins[dim] = 200;
+ min[dim] = -TMath::Pi();
+ max[dim] = TMath::Pi();
+ dim++;
+ }
}
- if (!fTracksName.IsNull()) {
+ if (fParticleCollArray.GetEntriesFast()>0) {
title[dim] = "No. of tracks";
- nbins[dim] = 6000;
+ nbins[dim] = 3000;
min[dim] = -0.5;
max[dim] = 6000-0.5;
dim++;
+
+ title[dim] = "p_{T,track}^{leading} (GeV/c)";
+ nbins[dim] = fNbins;
+ min[dim] = fMinBinPt;
+ max[dim] = fMaxBinPt;
+ dim++;
+
+ if (fDoLeadingObjectPosition) {
+ title[dim] = "#eta_{track}^{leading}";
+ nbins[dim] = 100;
+ min[dim] = -1;
+ max[dim] = 1;
+ dim++;
+
+ title[dim] = "#phi_{track}^{leading}";
+ nbins[dim] = 101;
+ min[dim] = 0;
+ max[dim] = TMath::Pi() * 2.02;
+ dim++;
+ }
}
- if (!fCaloName.IsNull()) {
+ if (fClusterCollArray.GetEntriesFast()>0) {
title[dim] = "No. of clusters";
- nbins[dim] = 4000;
+ nbins[dim] = 2000;
min[dim] = 0;
max[dim] = 4000-0.5;
dim++;
+
+ title[dim] = "E_{cluster}^{leading} (GeV)";
+ nbins[dim] = fNbins;
+ min[dim] = fMinBinPt;
+ max[dim] = fMaxBinPt;
+ dim++;
+
+ if (fDoLeadingObjectPosition) {
+ title[dim] = "#eta_{cluster}^{leading}";
+ nbins[dim] = 100;
+ min[dim] = -1;
+ max[dim] = 1;
+ dim++;
+
+ title[dim] = "#phi_{cluster}^{leading}";
+ nbins[dim] = 101;
+ min[dim] = 0;
+ max[dim] = TMath::Pi() * 2.02;
+ dim++;
+ }
}
if (!fCaloCellsName.IsNull()) {
title[dim] = "No. of cells";
- nbins[dim] = 6000;
+ nbins[dim] = 3000;
min[dim] = 0;
max[dim] = 6000-0.5;
dim++;
}
- if (!fJetsName.IsNull()) {
+ if (fJetCollArray.GetEntriesFast()>0) {
title[dim] = "No. of jets";
nbins[dim] = 200;
min[dim] = 0;
max[dim] = 200-0.5;
dim++;
+
+ title[dim] = "p_{T,jet}^{leading} (GeV/c)";
+ nbins[dim] = fNbins;
+ min[dim] = fMinBinPt;
+ max[dim] = fMaxBinPt;
+ dim++;
+
+ if (fDoLeadingObjectPosition) {
+ title[dim] = "#eta_{jet}^{leading}";
+ nbins[dim] = 100;
+ min[dim] = -1;
+ max[dim] = 1;
+ dim++;
+
+ title[dim] = "#phi_{jet}^{leading}";
+ nbins[dim] = 101;
+ min[dim] = 0;
+ max[dim] = TMath::Pi() * 2.02;
+ dim++;
+ }
}
fHistEventQA = new THnSparseF("fHistEventQA","fHistEventQA",dim,nbins,min,max);
Int_t nclusters = 0;
Int_t ncells = 0;
Int_t njets = 0;
+
+ Float_t leadingClusE = 0;
+ Float_t leadingClusEta = 0;
+ Float_t leadingClusPhi = 0;
+
+ Float_t leadingTrackPt = 0;
+ Float_t leadingTrackEta = 0;
+ Float_t leadingTrackPhi = 0;
+
+ Float_t leadingJetPt = 0;
+ Float_t leadingJetEta = 0;
+ Float_t leadingJetPhi = 0;
if (fTracks) {
- ntracks = DoTrackLoop(trackSum);
+ AliVParticle *leadingTrack = 0;
+
+ ntracks = DoTrackLoop(trackSum, leadingTrack);
AliDebug(2,Form("%d tracks found in the event", ntracks));
+
+ if (leadingTrack) {
+ leadingTrackPt = leadingTrack->Pt();
+ leadingTrackEta = leadingTrack->Eta();
+ leadingTrackPhi = leadingTrack->Phi();
+ }
}
if (fCaloClusters) {
- nclusters = DoClusterLoop(clusSum);
+ AliVCluster *leadingClus = 0;
+
+ nclusters = DoClusterLoop(clusSum, leadingClus);
AliDebug(2,Form("%d clusters found in the event", nclusters));
+ if (leadingClus) {
+ TLorentzVector leadingClusVect;
+ leadingClus->GetMomentum(leadingClusVect, fVertex);
+ leadingClusE = leadingClus->E();
+ leadingClusEta = leadingClusVect.Eta();
+ leadingClusPhi = leadingClusVect.Phi();
+ }
+
fHistChVSneClus->Fill(clusSum, trackSum);
}
}
if (fJets) {
- njets = DoJetLoop();
+ AliEmcalJet *leadingJet = 0;
+
+ njets = DoJetLoop(leadingJet);
AliDebug(2,Form("%d jets found in the event", njets));
+
+ if (leadingJet) {
+ leadingJetPt = leadingJet->Pt();
+ leadingJetEta = leadingJet->Eta();
+ leadingJetPhi = leadingJet->Phi();
+ }
}
- FillEventQAHisto(fCent, fCent2, fCent3, fV0ATotMult, fV0CTotMult, fRhoVal, ntracks, nclusters, ncells, njets);
+ FillEventQAHisto(fCent, fCent2, fCent3, fV0ATotMult, fV0CTotMult, fEPV0, fRhoVal,
+ ntracks, nclusters, ncells, njets,
+ leadingTrackPt, leadingTrackEta, leadingTrackPhi,
+ leadingClusE, leadingClusEta, leadingClusPhi,
+ leadingJetPt, leadingJetEta, leadingJetPhi);
return kTRUE;
}
//________________________________________________________________________
-void AliAnalysisTaskSAQA::FillEventQAHisto(Float_t cent, Float_t cent2, Float_t cent3, Float_t v0a, Float_t v0c, Float_t rho, Int_t ntracks, Int_t nclusters, Int_t ncells, Int_t njets)
+void AliAnalysisTaskSAQA::FillEventQAHisto(Float_t cent, Float_t cent2, Float_t cent3, Float_t v0a, Float_t v0c,
+ Float_t ep, Float_t rho, Int_t ntracks, Int_t nclusters, Int_t ncells, Int_t njets,
+ Float_t maxTrackPt, Float_t maxTrackEta, Float_t maxTrackPhi,
+ Float_t maxClusterE, Float_t maxClusterEta, Float_t maxClusterPhi,
+ Float_t maxJetPt, Float_t maxJetEta, Float_t maxJetPhi)
{
- Double_t contents[10]={0};
+ Double_t contents[20]={0};
for (Int_t i = 0; i < fHistEventQA->GetNdimensions(); i++) {
TString title(fHistEventQA->GetAxis(i)->GetTitle());
contents[i] = v0a;
else if (title=="V0C total multiplicity")
contents[i] = v0c;
+ else if (title=="V0A+V0C total multiplicity")
+ contents[i] = v0a+v0c;
+ else if (title=="#psi_{RP}")
+ contents[i] = ep;
else if (title=="#rho (GeV/c)")
contents[i] = rho;
else if (title=="No. of tracks")
contents[i] = ncells;
else if (title=="No. of jets")
contents[i] = njets;
+ else if (title=="p_{T,track}^{leading} (GeV/c)")
+ contents[i] = maxTrackPt;
+ else if (title=="#eta_{track}^{leading}")
+ contents[i] = maxTrackEta;
+ else if (title=="#phi_{track}^{leading}")
+ contents[i] = maxTrackPhi;
+ else if (title=="E_{cluster}^{leading} (GeV)")
+ contents[i] = maxClusterE;
+ else if (title=="#eta_{cluster}^{leading}")
+ contents[i] = maxClusterEta;
+ else if (title=="#phi_{cluster}^{leading}")
+ contents[i] = maxClusterPhi;
+ else if (title=="p_{T,jet}^{leading} (GeV/c)")
+ contents[i] = maxJetPt;
+ else if (title=="#eta_{jet}^{leading}")
+ contents[i] = maxJetEta;
+ else if (title=="#phi_{jet}^{leading}")
+ contents[i] = maxJetPhi;
else
AliWarning(Form("Unable to fill dimension %s!",title.Data()));
}
return ncells;
}
+//________________________________________________________________________
+Double_t AliAnalysisTaskSAQA::GetCellEnergySum(AliVCluster *cluster, AliVCaloCells *cells)
+{
+ Double_t sum = 0;
+ for (Int_t i = 0; i < cluster->GetNCells(); i++)
+ sum += cells->GetCellAmplitude(cluster->GetCellAbsId(i));
+ return sum;
+}
+
//________________________________________________________________________
Double_t AliAnalysisTaskSAQA::GetFcross(AliVCluster *cluster, AliVCaloCells *cells)
{
}
//________________________________________________________________________
-Int_t AliAnalysisTaskSAQA::DoClusterLoop(Float_t &sum)
+Int_t AliAnalysisTaskSAQA::DoClusterLoop(Float_t &sum, AliVCluster* &leading)
{
// Do cluster loop.
AliVCaloCells *cells = InputEvent()->GetEMCALCells();
sum = 0;
+ leading = 0;
// Cluster loop
const Int_t nclusters = fCaloClusters->GetEntriesFast();
sum += cluster->E();
+ if (!leading || leading->E() < cluster->E()) leading = cluster;
+
TLorentzVector nPart;
cluster->GetMomentum(nPart, fVertex);
fHistClusPhiEtaEnergy[fCentBin]->Fill(nPart.Eta(), nPart.Phi(), cluster->E());
+
+ Double_t ep = nPart.Phi() - fEPV0;
+ while (ep < 0) ep += TMath::Pi();
+ while (ep >= TMath::Pi()) ep -= TMath::Pi();
+ fHistClusDeltaPhiEPEnergy[fCentBin]->Fill(cluster->E(), ep);
+
fHistNCellsEnergy->Fill(cluster->E(), cluster->GetNCells());
fHistClusTimeEnergy->Fill(cluster->E(), cluster->GetTOF());
- if (cells)
- fHistFcrossEnergy->Fill(cluster->E(), GetFcross(cluster, cells));
+ if (cells) fHistFcrossEnergy->Fill(cluster->E(), GetFcross(cluster, cells));
+
+ if (cells) fHistClusEnergyMinusCellEnergy->Fill(cluster->E(), cluster->E() - GetCellEnergySum(cluster,cells));
if (fHistClusMCEnergyFraction[fCentBin])
fHistClusMCEnergyFraction[fCentBin]->Fill(cluster->GetMCEnergyFraction());
}
//________________________________________________________________________
-Int_t AliAnalysisTaskSAQA::DoTrackLoop(Float_t &sum)
+Int_t AliAnalysisTaskSAQA::DoTrackLoop(Float_t &sum, AliVParticle* &leading)
{
// Do track loop.
Int_t nAccTracks = 0;
sum = 0;
+ leading = 0;
const Int_t ntracks = fTracks->GetEntriesFast();
Int_t neg = 0;
sum += track->P();
+ if (!leading || leading->Pt() < track->Pt()) leading = track;
+
if (fParticleLevel) {
fHistTrPhiEtaPt[fCentBin][0]->Fill(track->Eta(), track->Phi(), track->Pt());
}
}
//________________________________________________________________________
-Int_t AliAnalysisTaskSAQA::DoJetLoop()
+Int_t AliAnalysisTaskSAQA::DoJetLoop(AliEmcalJet* &leading)
{
// Do jet loop.
Int_t nAccJets = 0;
+ leading = 0;
+
Int_t njets = fJets->GetEntriesFast();
for (Int_t ij = 0; ij < njets; ij++) {
if (!AcceptJet(jet))
continue;
+ if (!leading || leading->Pt() < jet->Pt()) leading = jet;
+
nAccJets++;
fHistJetsPhiEta[fCentBin]->Fill(jet->Eta(), jet->Phi());