//________________________________________________________________________
AliAnalysisTaskSAQA::AliAnalysisTaskSAQA() :
- AliAnalysisTaskEmcalJetDev("AliAnalysisTaskSAQA", kTRUE),
+ AliAnalysisTaskEmcalJet("AliAnalysisTaskSAQA", kTRUE),
fCellEnergyCut(0.1),
fParticleLevel(kFALSE),
fIsMC(kFALSE),
fCentMethod3(""),
fDoV0QA(0),
fDoEPQA(0),
+ fDoLeadingObjectPosition(0),
fMaxCellsInCluster(30),
fCent2(0),
fCent3(0),
fHistNCellsEnergy(0),
fHistFcrossEnergy(0),
fHistClusTimeEnergy(0),
+ fHistClusEnergyMinusCellEnergy(0),
fHistCellsAbsIdEnergy(0),
fHistChVSneCells(0),
fHistChVSneClus(0),
fHistTrPtNonProp[i] = 0;
fHistDeltaEtaPt[i] = 0;
fHistDeltaPhiPt[i] = 0;
- fHistDeltaPtvsPtvsMass[i] = 0;
+ fHistDeltaPtvsPt[i] = 0;
fHistClusPhiEtaEnergy[i] = 0;
+ fHistClusDeltaPhiEPEnergy[i] = 0;
fHistClusMCEnergyFraction[i] = 0;
fHistJetsPhiEta[i] = 0;
fHistJetsPtArea[i] = 0;
//________________________________________________________________________
AliAnalysisTaskSAQA::AliAnalysisTaskSAQA(const char *name) :
- AliAnalysisTaskEmcalJetDev(name, kTRUE),
+ AliAnalysisTaskEmcalJet(name, kTRUE),
fCellEnergyCut(0.1),
fParticleLevel(kFALSE),
fIsMC(kFALSE),
fCentMethod3(""),
fDoV0QA(0),
fDoEPQA(0),
+ fDoLeadingObjectPosition(0),
fMaxCellsInCluster(30),
fCent2(0),
fCent3(0),
fHistNCellsEnergy(0),
fHistFcrossEnergy(0),
fHistClusTimeEnergy(0),
+ fHistClusEnergyMinusCellEnergy(0),
fHistCellsAbsIdEnergy(0),
fHistChVSneCells(0),
fHistChVSneClus(0),
fHistTrPtNonProp[i] = 0;
fHistDeltaEtaPt[i] = 0;
fHistDeltaPhiPt[i] = 0;
- fHistDeltaPtvsPtvsMass[i] = 0;
+ fHistDeltaPtvsPt[i] = 0;
fHistClusPhiEtaEnergy[i] = 0;
+ fHistClusDeltaPhiEPEnergy[i] = 0;
fHistClusMCEnergyFraction[i] = 0;
fHistJetsPhiEta[i] = 0;
fHistJetsPtArea[i] = 0;
{
// Create histograms
- AliAnalysisTaskEmcalJetDev::UserCreateOutputObjects();
+ AliAnalysisTaskEmcalJet::UserCreateOutputObjects();
if (fParticleCollArray.GetEntriesFast()>0) {
if (!fParticleLevel && fIsMC) {
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]);
fHistDeltaPhiPt[i]->GetYaxis()->SetTitle("#delta#phi");
fOutput->Add(fHistDeltaPhiPt[i]);
- histname = Form("fHistDeltaPtvsPtvsMass_%d",i);
- fHistDeltaPtvsPtvsMass[i] = new TH3F(histname,histname, fNbins, fMinBinPt, fMaxBinPt, fNbins, -fMaxBinPt/2, fMaxBinPt/2, 30, 0, 3);
- fHistDeltaPtvsPtvsMass[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
- fHistDeltaPtvsPtvsMass[i]->GetYaxis()->SetTitle("#deltap_{T} (GeV/c)");
- fHistDeltaPtvsPtvsMass[i]->GetZaxis()->SetTitle("mass (GeV/c^{2})");
- fOutput->Add(fHistDeltaPtvsPtvsMass[i]);
+ histname = Form("fHistDeltaPtvsPt_%d",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]);
}
}
}
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;
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");
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");
Double_t min[20] = {0};
Double_t max[20] = {0};
- if (fForceBeamType != AliAnalysisTaskEmcalDev::kpp) {
+ if (fForceBeamType != AliAnalysisTaskEmcal::kpp) {
title[dim] = "Centrality %";
nbins[dim] = 101;
min[dim] = 0;
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 (fClusterCollArray.GetEntriesFast()>0) {
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()) {
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);
//________________________________________________________________________
void AliAnalysisTaskSAQA::ExecOnce()
{
- AliAnalysisTaskEmcalJetDev::ExecOnce();
+ AliAnalysisTaskEmcalJet::ExecOnce();
if (fDoV0QA) {
fVZERO = InputEvent()->GetVZEROData();
{
// Retrieve event objects.
- if (!AliAnalysisTaskEmcalJetDev::RetrieveEventObjects())
+ if (!AliAnalysisTaskEmcalJet::RetrieveEventObjects())
return kFALSE;
if (!fCentMethod2.IsNull() || !fCentMethod3.IsNull()) {
Int_t ncells = 0;
Int_t njets = 0;
- Float_t leadingTrack = 0;
- Float_t leadingClus = 0;
- Float_t leadingJet = 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) {
+ 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) {
+ 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) {
+ 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, fEPV0, fRhoVal, ntracks, nclusters, ncells, njets, leadingTrack, leadingClus, leadingJet);
+ 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 ep, Float_t rho, Int_t ntracks, Int_t nclusters, Int_t ncells, Int_t njets,
- Float_t maxtrack, Float_t maxcluster, Float_t maxjet)
+ 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[20]={0};
else if (title=="No. of jets")
contents[i] = njets;
else if (title=="p_{T,track}^{leading} (GeV/c)")
- contents[i] = maxtrack;
+ 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] = maxcluster;
+ 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] = maxjet;
+ 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, Float_t &leading)
+Int_t AliAnalysisTaskSAQA::DoClusterLoop(Float_t &sum, AliVCluster* &leading)
{
// Do cluster loop.
sum += cluster->E();
- if (leading < cluster->E()) leading = 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, Float_t &leading)
+Int_t AliAnalysisTaskSAQA::DoTrackLoop(Float_t &sum, AliVParticle* &leading)
{
// Do track loop.
sum += track->P();
- if (leading < track->Pt()) leading = track->P();
+ if (!leading || leading->Pt() < track->Pt()) leading = track;
if (fParticleLevel) {
fHistTrPhiEtaPt[fCentBin][0]->Fill(track->Eta(), track->Phi(), track->Pt());
fHistDeltaEtaPt[fCentBin]->Fill(vtrack->Pt(), vtrack->Eta() - vtrack->GetTrackEtaOnEMCal());
if (fHistDeltaPhiPt[fCentBin])
fHistDeltaPhiPt[fCentBin]->Fill(vtrack->Pt(), vtrack->Phi() - vtrack->GetTrackPhiOnEMCal());
- if (fHistDeltaPtvsPtvsMass[fCentBin])
- fHistDeltaPtvsPtvsMass[fCentBin]->Fill(vtrack->Pt(), vtrack->Pt() - vtrack->GetTrackPtOnEMCal(), vtrack->M());
+ if (fHistDeltaPtvsPt[fCentBin])
+ fHistDeltaPtvsPt[fCentBin]->Fill(vtrack->Pt(), vtrack->Pt() - vtrack->GetTrackPtOnEMCal());
}
if (fHistTrNegativeLabels)
}
//________________________________________________________________________
-Int_t AliAnalysisTaskSAQA::DoJetLoop(Float_t &leading)
+Int_t AliAnalysisTaskSAQA::DoJetLoop(AliEmcalJet* &leading)
{
// Do jet loop.
if (!AcceptJet(jet))
continue;
- if (leading < jet->Pt()) leading = jet->Pt();
+ if (!leading || leading->Pt() < jet->Pt()) leading = jet;
nAccJets++;