#include "AliCentrality.h"
#include "AliVCluster.h"
#include "AliVParticle.h"
+#include "AliVTrack.h"
#include "AliEmcalJet.h"
#include "AliVEventHandler.h"
#include "AliLog.h"
//________________________________________________________________________
AliAnalysisTaskSAJF::AliAnalysisTaskSAJF() :
- AliAnalysisTaskEmcal("AliAnalysisTaskSAJF"),
+ AliAnalysisTaskEmcalJet("AliAnalysisTaskSAJF"),
fMinRC2LJ(1.0),
fEmbJetsName("EmbJets"),
fRandTracksName("TracksRandomized"),
fRandCaloName("CaloClustersRandomized"),
fRhoName("Rho"),
+ fSkipEventsWithNoJets(kTRUE),
fEmbJets(0),
fRandTracks(0),
fRandCaloClusters(0),
fHistJetPhiEta[i] = 0;
fHistJetsPt[i] = 0;
fHistJetsPtArea[i] = 0;
- fHistJetsPtTrack[i] = 0;
- fHistJetsPtClus[i] = 0;
- fHistJetsPtNonBias[i] = 0;
fHistLeadingJetPt[i] = 0;
fHist2LeadingJetPt[i] = 0;
fHistJetsNEFvsPt[i] = 0;
fHistClusEtBkg[i] = 0;
fHistRho[i] = 0;
fHistCorrJetsPt[i] = 0;
- fHistCorrJetsPtClus[i] = 0;
- fHistCorrJetsPtTrack[i] = 0;
- fHistCorrJetsPtNonBias[i] = 0;
fHistCorrLeadingJetPt[i] = 0;
fHistRCPt[i] = 0;
fHistRCPtExLJ[i] = 0;
//________________________________________________________________________
AliAnalysisTaskSAJF::AliAnalysisTaskSAJF(const char *name) :
- AliAnalysisTaskEmcal(name),
+ AliAnalysisTaskEmcalJet(name),
fMinRC2LJ(1.0),
fEmbJetsName("EmbJets"),
fRandTracksName("TracksRandomized"),
fRandCaloName("CaloClustersRandomized"),
fRhoName("Rho"),
+ fSkipEventsWithNoJets(kTRUE),
fEmbJets(0),
fRandTracks(0),
fRandCaloClusters(0),
fHistJetPhiEta[i] = 0;
fHistJetsPt[i] = 0;
fHistJetsPtArea[i] = 0;
- fHistJetsPtTrack[i] = 0;
- fHistJetsPtClus[i] = 0;
- fHistJetsPtNonBias[i] = 0;
fHistLeadingJetPt[i] = 0;
fHist2LeadingJetPt[i] = 0;
fHistJetsNEFvsPt[i] = 0;
fHistClusEtBkg[i] = 0;
fHistRho[i] = 0;
fHistCorrJetsPt[i] = 0;
- fHistCorrJetsPtClus[i] = 0;
- fHistCorrJetsPtTrack[i] = 0;
- fHistCorrJetsPtNonBias[i] = 0;
fHistCorrLeadingJetPt[i] = 0;
fHistRCPt[i] = 0;
fHistRCPtExLJ[i] = 0;
//________________________________________________________________________
void AliAnalysisTaskSAJF::UserCreateOutputObjects()
{
- AliAnalysisTaskEmcal::UserCreateOutputObjects();
+ AliAnalysisTaskEmcalJet::UserCreateOutputObjects();
// Create histograms
- const Float_t binWidth = (fMaxPt - fMinPt) / fNbins;
+ const Float_t binWidth = (fMaxBinPt - fMinBinPt) / fNbins;
OpenFile(1);
fOutput = new TList();
fHistCentrality->GetYaxis()->SetTitle("counts");
fOutput->Add(fHistCentrality);
- fHistRejectedEvents = new TH1F("fHistRejectedEvents","fHistRejectedEvents", 5, 0, 5);
+ fHistRejectedEvents = new TH1F("fHistRejectedEvents","fHistRejectedEvents", 6, 0, 6);
fHistRejectedEvents->GetXaxis()->SetTitle("Reason");
fHistRejectedEvents->GetYaxis()->SetTitle("counts");
fHistRejectedEvents->GetXaxis()->SetBinLabel(1, "Rho <= 0");
fHistRejectedEvents->GetXaxis()->SetBinLabel(2, "Max Jet <= 0");
fHistRejectedEvents->GetXaxis()->SetBinLabel(3, "Max Jet not found");
+ fHistRejectedEvents->GetXaxis()->SetBinLabel(4, "No jets");
fOutput->Add(fHistRejectedEvents);
- fHistRhoVSleadJetPt = new TH2F("fHistRhoVSleadJetPt","fHistRhoVSleadJetPt", fNbins, fMinPt, fMaxPt, fNbins, fMinPt, fMaxPt);
+ fHistRhoVSleadJetPt = new TH2F("fHistRhoVSleadJetPt","fHistRhoVSleadJetPt", fNbins, fMinBinPt, fMaxBinPt, fNbins, fMinBinPt, fMaxBinPt);
fHistRhoVSleadJetPt->GetXaxis()->SetTitle("#rho * area [GeV/c]");
fHistRhoVSleadJetPt->GetYaxis()->SetTitle("Leading jet p_{T} [GeV/c]");
fOutput->Add(fHistRhoVSleadJetPt);
- fHistRCPhiEta = new TH2F("fHistRCPhiEta","Phi-Eta distribution of rigid cones", 20, -2, 2, 32, 0, 6.4);
+ fHistRCPhiEta = new TH2F("fHistRCPhiEta","Phi-Eta distribution of rigid cones", 40, -2, 2, 64, 0, 6.4);
fHistRCPhiEta->GetXaxis()->SetTitle("#eta");
fHistRCPhiEta->GetYaxis()->SetTitle("#phi");
fOutput->Add(fHistRCPhiEta);
- fHistRCPtExLJVSDPhiLJ = new TH2F("fHistRCPtExLJVSDPhiLJ","fHistRCPtExLJVSDPhiLJ", fNbins, fMinPt, fMaxPt, 128, -1.6, 4.8);
+ fHistRCPtExLJVSDPhiLJ = new TH2F("fHistRCPtExLJVSDPhiLJ","fHistRCPtExLJVSDPhiLJ", fNbins, fMinBinPt, fMaxBinPt, 128, -1.6, 4.8);
fHistRCPtExLJVSDPhiLJ->GetXaxis()->SetTitle("rigid cone p_{T} [GeV/c]");
fHistRCPtExLJVSDPhiLJ->GetYaxis()->SetTitle("#Delta#phi");
fOutput->Add(fHistRCPtExLJVSDPhiLJ);
- fHistRhoVSRCPt = new TH2F("fHistRhoVSRCPt","fHistRhoVSRCPt", fNbins, fMinPt, fMaxPt, fNbins, fMinPt, fMaxPt);
+ fHistRhoVSRCPt = new TH2F("fHistRhoVSRCPt","fHistRhoVSRCPt", fNbins, fMinBinPt, fMaxBinPt, fNbins, fMinBinPt, fMaxBinPt);
fHistRhoVSRCPt->GetXaxis()->SetTitle("#rho * area [GeV/c]");
fHistRhoVSRCPt->GetYaxis()->SetTitle("rigid cone p_{T} [GeV/c]");
fOutput->Add(fHistRhoVSRCPt);
- fHistEmbJetPhiEta = new TH2F("fHistEmbJetPhiEta","Phi-Eta distribution of embedded jets", 20, -2, 2, 32, 0, 6.4);
+ fHistEmbJetPhiEta = new TH2F("fHistEmbJetPhiEta","Phi-Eta distribution of embedded jets", 40, -2, 2, 64, 0, 6.4);
fHistEmbJetPhiEta->GetXaxis()->SetTitle("#eta");
fHistEmbJetPhiEta->GetYaxis()->SetTitle("#phi");
fOutput->Add(fHistEmbJetPhiEta);
- fHistEmbPartPhiEta = new TH2F("fHistEmbPartPhiEta","Phi-Eta distribution of embedded particles", 20, -2, 2, 32, 0, 6.4);
+ fHistEmbPartPhiEta = new TH2F("fHistEmbPartPhiEta","Phi-Eta distribution of embedded particles", 40, -2, 2, 64, 0, 6.4);
fHistEmbPartPhiEta->GetXaxis()->SetTitle("#eta");
fHistEmbPartPhiEta->GetYaxis()->SetTitle("#phi");
fOutput->Add(fHistEmbPartPhiEta);
- fHistRhoVSEmbBkg = new TH2F("fHistRhoVSEmbBkg","fHistRhoVSEmbBkg", fNbins, fMinPt, fMaxPt, fNbins, fMinPt, fMaxPt);
+ fHistRhoVSEmbBkg = new TH2F("fHistRhoVSEmbBkg","fHistRhoVSEmbBkg", fNbins, fMinBinPt, fMaxBinPt, fNbins, fMinBinPt, fMaxBinPt);
fHistRhoVSEmbBkg->GetXaxis()->SetTitle("rho * area [GeV/c]");
fHistRhoVSEmbBkg->GetYaxis()->SetTitle("background of embedded track [GeV/c]");
fOutput->Add(fHistRhoVSEmbBkg);
for (Int_t i = 0; i < 4; i++) {
histname = "fHistJetPhiEta_";
histname += i;
- fHistJetPhiEta[i] = new TH2F(histname.Data(), histname.Data(), 20, -2, 2, 32, 0, 6.4);
+ fHistJetPhiEta[i] = new TH2F(histname.Data(), histname.Data(), 40, -2, 2, 64, 0, 6.4);
fHistJetPhiEta[i]->GetXaxis()->SetTitle("#eta");
fHistJetPhiEta[i]->GetYaxis()->SetTitle("#phi");
fOutput->Add(fHistJetPhiEta[i]);
histname = "fHistJetsPt_";
histname += i;
- fHistJetsPt[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinPt, fMaxPt);
+ fHistJetsPt[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt);
fHistJetsPt[i]->GetXaxis()->SetTitle("p_{T} [GeV/c]");
fHistJetsPt[i]->GetYaxis()->SetTitle("counts");
fOutput->Add(fHistJetsPt[i]);
histname = "fHistJetsPtArea_";
histname += i;
- fHistJetsPtArea[i] = new TH2F(histname.Data(), histname.Data(), fNbins, fMinPt, fMaxPt, 20, 0, fJetRadius * fJetRadius * TMath::Pi() * 1.5);
+ fHistJetsPtArea[i] = new TH2F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt, 20, 0, fJetRadius * fJetRadius * TMath::Pi() * 1.5);
fHistJetsPtArea[i]->GetXaxis()->SetTitle("p_{T} [GeV/c]");
fHistJetsPtArea[i]->GetYaxis()->SetTitle("area");
fOutput->Add(fHistJetsPtArea[i]);
- if (fAnaType == kEMCAL) {
- histname = "fHistJetsPtClus_";
- histname += i;
- fHistJetsPtClus[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinPt, fMaxPt);
- fHistJetsPtClus[i]->GetXaxis()->SetTitle("p_{T} [GeV/c]");
- fHistJetsPtClus[i]->GetYaxis()->SetTitle("counts");
- fOutput->Add(fHistJetsPtClus[i]);
- }
-
- histname = "fHistJetsPtTrack_";
- histname += i;
- fHistJetsPtTrack[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinPt, fMaxPt);
- fHistJetsPtTrack[i]->GetXaxis()->SetTitle("p_{T} [GeV/c]");
- fHistJetsPtTrack[i]->GetYaxis()->SetTitle("counts");
- fOutput->Add(fHistJetsPtTrack[i]);
-
- histname = "fHistJetsPtNonBias_";
- histname += i;
- fHistJetsPtNonBias[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinPt, fMaxPt);
- fHistJetsPtNonBias[i]->GetXaxis()->SetTitle("p_{T} [GeV/c]");
- fHistJetsPtNonBias[i]->GetYaxis()->SetTitle("counts");
- fOutput->Add(fHistJetsPtNonBias[i]);
-
histname = "fHistLeadingJetPt_";
histname += i;
- fHistLeadingJetPt[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinPt, fMaxPt);
+ fHistLeadingJetPt[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt);
fHistLeadingJetPt[i]->GetXaxis()->SetTitle("p_{T} [GeV]");
fHistLeadingJetPt[i]->GetYaxis()->SetTitle("counts");
fOutput->Add(fHistLeadingJetPt[i]);
histname = "fHist2LeadingJetPt_";
histname += i;
- fHist2LeadingJetPt[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinPt, fMaxPt);
+ fHist2LeadingJetPt[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt);
fHist2LeadingJetPt[i]->GetXaxis()->SetTitle("p_{T} [GeV]");
fHist2LeadingJetPt[i]->GetYaxis()->SetTitle("counts");
fOutput->Add(fHist2LeadingJetPt[i]);
histname = "fHistJetsZvsPt_";
histname += i;
- fHistJetsZvsPt[i] = new TH2F(histname.Data(), histname.Data(), fNbins, 0, 1.2, fNbins, fMinPt, fMaxPt);
+ fHistJetsZvsPt[i] = new TH2F(histname.Data(), histname.Data(), fNbins, 0, 1.2, fNbins, fMinBinPt, fMaxBinPt);
fHistJetsZvsPt[i]->GetXaxis()->SetTitle("Z");
fHistJetsZvsPt[i]->GetYaxis()->SetTitle("p_{T} [GeV/c]");
fOutput->Add(fHistJetsZvsPt[i]);
if (fAnaType == kEMCAL) {
histname = "fHistJetsNEFvsPt_";
histname += i;
- fHistJetsNEFvsPt[i] = new TH2F(histname.Data(), histname.Data(), fNbins, 0, 1.2, fNbins, fMinPt, fMaxPt);
+ fHistJetsNEFvsPt[i] = new TH2F(histname.Data(), histname.Data(), fNbins, 0, 1.2, fNbins, fMinBinPt, fMaxBinPt);
fHistJetsNEFvsPt[i]->GetXaxis()->SetTitle("NEF");
fHistJetsNEFvsPt[i]->GetYaxis()->SetTitle("p_{T} [GeV/c]");
fOutput->Add(fHistJetsNEFvsPt[i]);
histname = "fHistClusEtLJ_";
histname += i;
- fHistClusEtLJ[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinPt, fMaxPt / 5);
+ fHistClusEtLJ[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt / 5);
fHistClusEtLJ[i]->GetXaxis()->SetTitle("E_{T} [GeV]");
fHistClusEtLJ[i]->GetYaxis()->SetTitle("counts");
fOutput->Add(fHistClusEtLJ[i]);
histname = "fHistClusEtBkg_";
histname += i;
- fHistClusEtBkg[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinPt, fMaxPt / 5);
+ fHistClusEtBkg[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt / 5);
fHistClusEtBkg[i]->GetXaxis()->SetTitle("E_{T} [GeV]");
fHistClusEtBkg[i]->GetYaxis()->SetTitle("counts");
fOutput->Add(fHistClusEtBkg[i]);
histname = "fHistTracksPtLJ_";
histname += i;
- fHistTracksPtLJ[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinPt, fMaxPt / 5);
+ fHistTracksPtLJ[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt / 5);
fHistTracksPtLJ[i]->GetXaxis()->SetTitle("p_{T} [GeV/c]");
fHistTracksPtLJ[i]->GetYaxis()->SetTitle("counts");
fOutput->Add(fHistTracksPtLJ[i]);
histname = "fHistTracksPtBkg_";
histname += i;
- fHistTracksPtBkg[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinPt, fMaxPt / 5);
+ fHistTracksPtBkg[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt / 5);
fHistTracksPtBkg[i]->GetXaxis()->SetTitle("p_{T} [GeV/c]");
fHistTracksPtBkg[i]->GetYaxis()->SetTitle("counts");
fOutput->Add(fHistTracksPtBkg[i]);
histname = "fHistRho_";
histname += i;
- fHistRho[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinPt, fMaxPt * 2);
+ fHistRho[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt * 2);
fHistRho[i]->GetXaxis()->SetTitle("p_{T} [GeV/c]");
fHistRho[i]->GetYaxis()->SetTitle("counts");
fOutput->Add(fHistRho[i]);
histname = "fHistCorrJetsPt_";
histname += i;
- fHistCorrJetsPt[i] = new TH1F(histname.Data(), histname.Data(), fNbins * 2, -fMaxPt, fMaxPt);
+ fHistCorrJetsPt[i] = new TH1F(histname.Data(), histname.Data(), fNbins * 2, -fMaxBinPt, fMaxBinPt);
fHistCorrJetsPt[i]->GetXaxis()->SetTitle("p_{T} [GeV/c]");
fHistCorrJetsPt[i]->GetYaxis()->SetTitle("counts");
fOutput->Add(fHistCorrJetsPt[i]);
- if (fAnaType == kEMCAL) {
- histname = "fHistCorrJetsPtClus_";
- histname += i;
- fHistCorrJetsPtClus[i] = new TH1F(histname.Data(), histname.Data(), fNbins * 2, -fMaxPt, fMaxPt);
- fHistCorrJetsPtClus[i]->GetXaxis()->SetTitle("p_{T} [GeV/c]");
- fHistCorrJetsPtClus[i]->GetYaxis()->SetTitle("counts");
- fOutput->Add(fHistCorrJetsPtClus[i]);
- }
-
- histname = "fHistCorrJetsPtTrack_";
- histname += i;
- fHistCorrJetsPtTrack[i] = new TH1F(histname.Data(), histname.Data(), fNbins * 2, -fMaxPt, fMaxPt);
- fHistCorrJetsPtTrack[i]->GetXaxis()->SetTitle("p_{T} [GeV/c]");
- fHistCorrJetsPtTrack[i]->GetYaxis()->SetTitle("counts");
- fOutput->Add(fHistCorrJetsPtTrack[i]);
-
- histname = "fHistCorrJetsPtNonBias_";
- histname += i;
- fHistCorrJetsPtNonBias[i] = new TH1F(histname.Data(), histname.Data(), fNbins * 2, -fMaxPt, fMaxPt);
- fHistCorrJetsPtNonBias[i]->GetXaxis()->SetTitle("p_{T} [GeV/c]");
- fHistCorrJetsPtNonBias[i]->GetYaxis()->SetTitle("counts");
- fOutput->Add(fHistCorrJetsPtNonBias[i]);
-
histname = "fHistCorrLeadingJetPt_";
histname += i;
- fHistCorrLeadingJetPt[i] = new TH1F(histname.Data(), histname.Data(), fNbins * 2, -fMaxPt, fMaxPt);
+ fHistCorrLeadingJetPt[i] = new TH1F(histname.Data(), histname.Data(), fNbins * 2, -fMaxBinPt, fMaxBinPt);
fHistCorrLeadingJetPt[i]->GetXaxis()->SetTitle("p_{T} [GeV/c]");
fHistCorrLeadingJetPt[i]->GetYaxis()->SetTitle("counts");
fOutput->Add(fHistCorrLeadingJetPt[i]);
histname = "fHistRCPt_";
histname += i;
- fHistRCPt[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinPt, fMaxPt * 2);
+ fHistRCPt[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt * 2);
fHistRCPt[i]->GetXaxis()->SetTitle("rigid cone p_{T} [GeV/c]");
fHistRCPt[i]->GetYaxis()->SetTitle("counts");
fOutput->Add(fHistRCPt[i]);
histname = "fHistRCPtExLJ_";
histname += i;
- fHistRCPtExLJ[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinPt, fMaxPt * 2);
+ fHistRCPtExLJ[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt * 2);
fHistRCPtExLJ[i]->GetXaxis()->SetTitle("rigid cone p_{T} [GeV/c]");
fHistRCPtExLJ[i]->GetYaxis()->SetTitle("counts");
fOutput->Add(fHistRCPtExLJ[i]);
histname = "fHistRCPtRand_";
histname += i;
- fHistRCPtRand[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinPt, fMaxPt * 2);
+ fHistRCPtRand[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt * 2);
fHistRCPtRand[i]->GetXaxis()->SetTitle("rigid cone p_{T} [GeV/c]");
fHistRCPtRand[i]->GetYaxis()->SetTitle("counts");
fOutput->Add(fHistRCPtRand[i]);
histname = "fHistDeltaPtRC_";
histname += i;
- fHistDeltaPtRC[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinPt - fMaxPt / 2 + binWidth / 2, fMinPt + fMaxPt / 2 + binWidth / 2);
+ fHistDeltaPtRC[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinBinPt - fMaxBinPt / 2 + binWidth / 2, fMinBinPt + fMaxBinPt / 2 + binWidth / 2);
fHistDeltaPtRC[i]->GetXaxis()->SetTitle("#deltap_{T} [GeV/c]");
fHistDeltaPtRC[i]->GetYaxis()->SetTitle("counts");
fOutput->Add(fHistDeltaPtRC[i]);
histname = "fHistDeltaPtRCExLJ_";
histname += i;
- fHistDeltaPtRCExLJ[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinPt - fMaxPt / 2 + binWidth / 2, fMinPt + fMaxPt / 2 + binWidth / 2);
+ fHistDeltaPtRCExLJ[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinBinPt - fMaxBinPt / 2 + binWidth / 2, fMinBinPt + fMaxBinPt / 2 + binWidth / 2);
fHistDeltaPtRCExLJ[i]->GetXaxis()->SetTitle("#deltap_{T} [GeV/c]");
fHistDeltaPtRCExLJ[i]->GetYaxis()->SetTitle("counts");
fOutput->Add(fHistDeltaPtRCExLJ[i]);
histname = "fHistDeltaPtRCRand_";
histname += i;
- fHistDeltaPtRCRand[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinPt - fMaxPt / 2 + binWidth / 2, fMinPt + fMaxPt / 2 + binWidth / 2);
+ fHistDeltaPtRCRand[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinBinPt - fMaxBinPt / 2 + binWidth / 2, fMinBinPt + fMaxBinPt / 2 + binWidth / 2);
fHistDeltaPtRCRand[i]->GetXaxis()->SetTitle("#deltap_{T} [GeV/c]");
fHistDeltaPtRCRand[i]->GetYaxis()->SetTitle("counts");
fOutput->Add(fHistDeltaPtRCRand[i]);
histname = "fHistEmbJets_";
histname += i;
- fHistEmbJets[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinPt, fMaxPt);
+ fHistEmbJets[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt);
fHistEmbJets[i]->GetXaxis()->SetTitle("embedded jet p_{T} [GeV/c]");
fHistEmbJets[i]->GetYaxis()->SetTitle("counts");
fOutput->Add(fHistEmbJets[i]);
histname = "fHistEmbPart_";
histname += i;
- fHistEmbPart[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinPt, fMaxPt);
+ fHistEmbPart[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt);
fHistEmbPart[i]->GetXaxis()->SetTitle("embedded particle p_{T} [GeV/c]");
fHistEmbPart[i]->GetYaxis()->SetTitle("counts");
fOutput->Add(fHistEmbPart[i]);
histname = "fHistDeltaPtEmb_";
histname += i;
- fHistDeltaPtEmb[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinPt - fMaxPt / 2 + binWidth / 2, fMinPt + fMaxPt / 2 + binWidth / 2);
+ fHistDeltaPtEmb[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinBinPt - fMaxBinPt / 2 + binWidth / 2, fMinBinPt + fMaxBinPt / 2 + binWidth / 2);
fHistDeltaPtEmb[i]->GetXaxis()->SetTitle("#deltap_{T} [GeV/c]");
fHistDeltaPtEmb[i]->GetYaxis()->SetTitle("counts");
fOutput->Add(fHistDeltaPtEmb[i]);
}
//________________________________________________________________________
-void AliAnalysisTaskSAJF::RetrieveEventObjects()
+Bool_t AliAnalysisTaskSAJF::RetrieveEventObjects()
{
- AliAnalysisTaskEmcal::RetrieveEventObjects();
+ if(!AliAnalysisTaskEmcalJet::RetrieveEventObjects())
+ return kFALSE;
+
+ fRho = -1;
+
+ if (strcmp(fRhoName,"")) {
+ TParameter<Double_t> *rho = dynamic_cast<TParameter<Double_t>*>(InputEvent()->FindListObject(fRhoName));
+
+ if (rho) {
+ fRho = rho->GetVal();
+ }
+ else {
+ AliWarning(Form("Could not retrieve rho %s!", fRhoName.Data()));
+ }
+ }
if (strcmp(fEmbJetsName,"")) {
fEmbJets = dynamic_cast<TClonesArray*>(InputEvent()->FindListObject(fEmbJetsName));
}
}
-
- fRho = -1;
-
- if (strcmp(fRhoName,"")) {
- TParameter<Double_t> *rho = dynamic_cast<TParameter<Double_t>*>(InputEvent()->FindListObject(fRhoName));
-
- if (rho) {
- fRho = rho->GetVal();
- }
- else {
- AliWarning(Form("Could not retrieve rho %s!", fRhoName.Data()));
- }
- }
+ return kTRUE;
}
//________________________________________________________________________
-void AliAnalysisTaskSAJF::FillHistograms()
+Bool_t AliAnalysisTaskSAJF::FillHistograms()
{
if (fRho < 0) {
- fHistRejectedEvents->Fill("Rho <= 0",1);
- return;
+ fHistRejectedEvents->Fill("Rho <= 0", 1);
+ return kFALSE;
}
Int_t maxJetIndex = -1;
// General histograms
// _________________________________
- DoJetLoop(maxJetIndex, max2JetIndex);
+ GetLeadingJets(maxJetIndex, max2JetIndex);
- if (maxJetIndex < 0) {
- fHistRejectedEvents->Fill("Max Jet <= 0",1);
- return;
+ if (fSkipEventsWithNoJets && maxJetIndex < 0) {
+ fHistRejectedEvents->Fill("No jets", 1);
+ return kFALSE;
}
AliEmcalJet* jet = dynamic_cast<AliEmcalJet*>(fJets->At(maxJetIndex));
- if (!jet) {
- fHistRejectedEvents->Fill("Max Jet not found",1);
- return;
+ if (fSkipEventsWithNoJets && !jet) {
+ fHistRejectedEvents->Fill("Max Jet not found", 1);
+ return kFALSE;
}
- fHistCentrality->Fill(fCent);
+ Float_t maxJetCorrPt = 0;
+
+ if (jet)
+ maxJetCorrPt = jet->Pt() - fRho * jet->Area();
- fHistLeadingJetPt[fCentBin]->Fill(jet->Pt());
- fHistRhoVSleadJetPt->Fill(fRho * jet->Area(), jet->Pt());
+ if (fSkipEventsWithNoJets && maxJetCorrPt <= 0) {
+ fHistRejectedEvents->Fill("Max Jet <= 0", 1);
+ return kFALSE;
+ }
- jet->SortConstituents();
+ fHistCentrality->Fill(fCent);
+ fHistRho[fCentBin]->Fill(fRho);
+
+ if (jet) {
+ fHistLeadingJetPt[fCentBin]->Fill(jet->Pt());
+ fHistRhoVSleadJetPt->Fill(fRho * jet->Area(), jet->Pt());
+ fHistCorrLeadingJetPt[fCentBin]->Fill(maxJetCorrPt);
+ }
AliEmcalJet* jet2 = 0;
if (max2JetIndex >= 0)
jet2 = dynamic_cast<AliEmcalJet*>(fJets->At(max2JetIndex));
- if (jet2) {
+ if (jet2)
fHist2LeadingJetPt[fCentBin]->Fill(jet2->Pt());
- jet2->SortConstituents();
- }
-
- fHistRho[fCentBin]->Fill(fRho);
- Float_t maxJetCorrPt = jet->Pt() - fRho * jet->Area();
- if (maxJetCorrPt > 0)
- fHistCorrLeadingJetPt[fCentBin]->Fill(maxJetCorrPt);
+ DoJetLoop();
DoTrackLoop(maxJetIndex);
// _________________________________
if (!fEmbJets)
- return;
+ return kTRUE;
AliEmcalJet *embJet = 0;
TObject *maxPart = 0;
fHistEmbPartPhiEta->Fill(clusVec.Eta(), clusVec.Phi());
}
else {
- AliVParticle *track = dynamic_cast<AliVParticle*>(maxPart);
+ AliVTrack *track = dynamic_cast<AliVTrack*>(maxPart);
if (track) {
fHistEmbPartPhiEta->Fill(track->Eta(), track->Phi());
}
else {
- AliWarning(Form("%s - Embedded particle type not found or not recognized (neither AliVCluster nor AliVParticle)!", GetName()));
- return;
+ AliWarning(Form("%s - Embedded particle type not found or not recognized (neither AliVCluster nor AliVTrack)!", GetName()));
+ return kTRUE;
}
}
else {
AliWarning(Form("%s - Embedded jet not found in the event!", GetName()));
}
+
+ return kTRUE;
}
//________________________________________________________________________
-void AliAnalysisTaskSAJF::DoJetLoop(Int_t &maxJetIndex, Int_t &max2JetIndex)
+void AliAnalysisTaskSAJF::GetLeadingJets(Int_t &maxJetIndex, Int_t &max2JetIndex)
{
if (!fJets)
return;
Float_t corrPt = jet->Pt() - fRho * jet->Area();
- fHistJetsPtNonBias[fCentBin]->Fill(jet->Pt());
- fHistCorrJetsPtNonBias[fCentBin]->Fill(corrPt);
-
- if (jet->MaxTrackPt() > fPtBiasJetTrack) {
- fHistJetsPtTrack[fCentBin]->Fill(jet->Pt());
- fHistCorrJetsPtTrack[fCentBin]->Fill(corrPt);
+ if (maxJetIndex == -1 || maxJetPt < corrPt) {
+ max2JetPt = maxJetPt;
+ max2JetIndex = maxJetIndex;
+ maxJetPt = corrPt;
+ maxJetIndex = ij;
}
-
- if (fAnaType == kEMCAL && jet->MaxClusterPt() > fPtBiasJetClus) {
- fHistJetsPtClus[fCentBin]->Fill(jet->Pt());
- fHistCorrJetsPtClus[fCentBin]->Fill(corrPt);
+ else if (max2JetIndex == -1 || max2JetPt < corrPt) {
+ max2JetPt = corrPt;
+ max2JetIndex = ij;
}
-
- if (jet->MaxTrackPt() < fPtBiasJetTrack && (fAnaType == kTPC || jet->MaxClusterPt() < fPtBiasJetClus))
- continue;
+ } //jet loop
+}
+
+
+//________________________________________________________________________
+void AliAnalysisTaskSAJF::DoJetLoop()
+{
+ if (!fJets)
+ return;
+
+ Int_t njets = fJets->GetEntriesFast();
+
+ for (Int_t ij = 0; ij < njets; ij++) {
+
+ AliEmcalJet* jet = dynamic_cast<AliEmcalJet*>(fJets->At(ij));
+
+ if (!jet) {
+ AliError(Form("Could not receive jet %d", ij));
+ continue;
+ }
+
+ if (!AcceptJet(jet))
+ continue;
+
+ Float_t corrPt = jet->Pt() - fRho * jet->Area();
fHistJetsPt[fCentBin]->Fill(jet->Pt());
fHistJetsPtArea[fCentBin]->Fill(corrPt, jet->Area());
}
}
}
-
- if (maxJetPt < jet->Pt()) {
- max2JetPt = maxJetPt;
- max2JetIndex = maxJetIndex;
- maxJetPt = jet->Pt();
- maxJetIndex = ij;
- }
- else if (max2JetPt < jet->Pt()) {
- max2JetPt = jet->Pt();
- max2JetIndex = ij;
- }
} //jet loop
}
Int_t ntracks = fTracks->GetEntriesFast();
for(Int_t iTracks = 0; iTracks < ntracks; iTracks++) {
- AliVParticle* track = dynamic_cast<AliVParticle*>(fTracks->At(iTracks));
+ AliVTrack* track = dynamic_cast<AliVTrack*>(fTracks->At(iTracks));
if(!track) {
AliError(Form("Could not retrieve track %d",iTracks));
continue;
if (tracks) {
Int_t ntracks = tracks->GetEntriesFast();
for(Int_t iTracks = 0; iTracks < ntracks; iTracks++) {
- AliVParticle* track = dynamic_cast<AliVParticle*>(tracks->At(iTracks));
+ AliVTrack* track = dynamic_cast<AliVTrack*>(tracks->At(iTracks));
if(!track) {
AliError(Form("Could not retrieve track %d",iTracks));
continue;
//________________________________________________________________________
void AliAnalysisTaskSAJF::Init()
{
- AliAnalysisTaskEmcal::Init();
+ AliAnalysisTaskEmcalJet::Init();
const Float_t semiDiag = TMath::Sqrt((fMaxPhi - fMinPhi) * (fMaxPhi - fMinPhi) + (fMaxEta - fMinEta) * (fMaxEta - fMinEta)) / 2;
if (fMinRC2LJ > semiDiag * 0.5) {
class TH1F;
class TH2F;
-#include "AliAnalysisTaskEmcal.h"
+#include "AliAnalysisTaskEmcalJet.h"
-class AliAnalysisTaskSAJF : public AliAnalysisTaskEmcal {
+class AliAnalysisTaskSAJF : public AliAnalysisTaskEmcalJet {
public:
AliAnalysisTaskSAJF();
void Terminate(Option_t *option);
void Init();
- void SetJetMinRC2LJ(Float_t d) { fMinRC2LJ = d ; }
- void SetEmbJetsName(const char *n) { fEmbJetsName = n ; }
- void SetRandTracksName(const char *n) { fRandTracksName = n ; }
- void SetRandClusName(const char *n) { fRandCaloName = n ; }
- void SetRhoName(const char *n) { fRhoName = n ; }
+ void SetJetMinRC2LJ(Float_t d) { fMinRC2LJ = d ; }
+ void SetEmbJetsName(const char *n) { fEmbJetsName = n ; }
+ void SetRandTracksName(const char *n) { fRandTracksName = n ; }
+ void SetRandClusName(const char *n) { fRandCaloName = n ; }
+ void SetRhoName(const char *n) { fRhoName = n ; }
+ void SetSkipEventsWithNoJets(Bool_t s) { fSkipEventsWithNoJets = s ; }
protected:
- void RetrieveEventObjects() ;
- void FillHistograms() ;
- void DoJetLoop(Int_t &maxJetIndex, Int_t &max2JetIndex) ;
+ Bool_t RetrieveEventObjects() ;
+ Bool_t FillHistograms() ;
+ void GetLeadingJets(Int_t &maxJetIndex, Int_t &max2JetIndex) ;
+ void DoJetLoop() ;
void DoEmbJetLoop(AliEmcalJet* &embJet, TObject* &maxPart) ;
void DoTrackLoop(Int_t maxJetIndex) ;
void DoClusterLoop(Int_t maxJetIndex) ;
TString fRandTracksName; // Name of randomized track collection
TString fRandCaloName; // Name of randomized calo cluster collection
TString fRhoName; // Name of rho object
+ Bool_t fSkipEventsWithNoJets; // Whether or not skip events with no jets
TClonesArray *fEmbJets; //!Embedded Jets
TClonesArray *fRandTracks; //!Randomized tracks
TH2F *fHistJetPhiEta[4]; //!Phi-Eta distribution of jets
TH1F *fHistJetsPt[4]; //!Inclusive jet pt spectrum
TH2F *fHistJetsPtArea[4]; //!Jet pt vs. area
- TH1F *fHistJetsPtClus[4]; //!Inclusive jet pt spectrum cluster biased
- TH1F *fHistJetsPtTrack[4]; //!Inclusive jet pt spectrum track biased
- TH1F *fHistJetsPtNonBias[4]; //!Non biased inclusive jet pt spectrum
TH1F *fHistLeadingJetPt[4]; //!Leading jet pt spectrum
TH1F *fHist2LeadingJetPt[4]; //!Second leading jet pt spectrum
TH2F *fHistJetsNEFvsPt[4]; //!Jet neutral energy fraction vs. jet pt
TH1F *fHistRho[4]; //!Rho distribution
TH2F *fHistRhoVSleadJetPt; //!Area(leadjetarea) * rho vs. leading jet pt
TH1F *fHistCorrJetsPt[4]; //!Corrected inclusive jet pt spectrum
- TH1F *fHistCorrJetsPtClus[4]; //!Corrected inclusive jet pt spectrum cluster biased
- TH1F *fHistCorrJetsPtTrack[4]; //!Corrected inclusive jet pt spectrum track biased
- TH1F *fHistCorrJetsPtNonBias[4]; //!Non biased corrected inclusive jet pt spectrum
TH1F *fHistCorrLeadingJetPt[4]; //!Corrected leading jet pt spectrum
// Random cones
//________________________________________________________________________
AliAnalysisTaskSAQA::AliAnalysisTaskSAQA() :
- AliAnalysisTaskEmcal("AliAnalysisTaskSAQA"),
+ AliAnalysisTaskEmcalJet("AliAnalysisTaskSAQA"),
fCellEnergyCut(0.1),
fDoEoverP(kFALSE),
fTrgClusName("ClustersL1GAMMAFEE"),
fHistMaxL1ThrCent(0),
fHistTracksPt(0),
fHistTrPhiEta(0),
+ fHistTrEmcPhiEta(0),
fHistClustersEnergy(0),
fHistClusPhiEta(0),
- fHistJetsPt(0),
fHistJetsPhiEta(0),
fHistJetsPtArea(0),
fHistEoverP(0),
fHistTrackPhi[i] = 0;
fHistTrackEta[i] = 0;
}
+
+ for (Int_t i = 0; i < 4; i++) {
+ fHistJetsPtTrack[i] = 0;
+ fHistJetsPtClus[i] = 0;
+ fHistJetsPt[i] = 0;
+ }
}
//________________________________________________________________________
AliAnalysisTaskSAQA::AliAnalysisTaskSAQA(const char *name) :
- AliAnalysisTaskEmcal(name),
+ AliAnalysisTaskEmcalJet(name),
fCellEnergyCut(0.1),
fDoEoverP(kFALSE),
fTrgClusName("ClustersL1GAMMAFEE"),
fHistMaxL1ThrCent(0),
fHistTracksPt(0),
fHistTrPhiEta(0),
+ fHistTrEmcPhiEta(0),
fHistClustersEnergy(0),
fHistClusPhiEta(0),
- fHistJetsPt(0),
fHistJetsPhiEta(0),
fHistJetsPtArea(0),
fHistEoverP(0),
fHistTrackPhi[i] = 0;
fHistTrackEta[i] = 0;
}
+
+ for (Int_t i = 0; i < 4; i++) {
+ fHistJetsPtTrack[i] = 0;
+ fHistJetsPtClus[i] = 0;
+ fHistJetsPt[i] = 0;
+ }
}
//________________________________________________________________________
OpenFile(1);
fOutput = new TList();
- fOutput->SetOwner(); // IMPORTANT!
+ fOutput->SetOwner();
fHistCentrality = new TH1F("fHistCentrality","Event centrality distribution", fNbins, 0, 100);
fHistCentrality->GetXaxis()->SetTitle("Centrality (%)");
fHistTracksCent->GetYaxis()->SetTitle("No. of tracks");
fOutput->Add(fHistTracksCent);
- fHistClusCent = new TH2F("fHistClusCent","Clusters vs. centrality", fNbins, 0, 100, fNbins, 0, 2000);
- fHistClusCent->GetXaxis()->SetTitle("Centrality (%)");
- fHistClusCent->GetYaxis()->SetTitle("No. of clusters");
- fOutput->Add(fHistClusCent);
-
- fHistMaxL1FastORCent = new TH2F("fHistMaxL1FastORCent","fHistMaxL1ClusCent", 100, 0, 100, 250, 0, 250);
- fHistMaxL1FastORCent->GetXaxis()->SetTitle("Centrality [%]");
- fHistMaxL1FastORCent->GetYaxis()->SetTitle("Maximum L1 FastOR");
- fOutput->Add(fHistMaxL1FastORCent);
-
- fHistMaxL1ClusCent = new TH2F("fHistMaxL1ClusCent","fHistMaxL1ClusCent", 100, 0, 100, 250, 0, 250);
- fHistMaxL1ClusCent->GetXaxis()->SetTitle("Centrality [%]");
- fHistMaxL1ClusCent->GetYaxis()->SetTitle("Maximum L1 trigger cluster");
- fOutput->Add(fHistMaxL1ClusCent);
-
- fHistMaxL1ThrCent = new TH2F("fHistMaxL1ThrCent","fHistMaxL1ThrCent", 100, 0, 100, 250, 0, 250);
- fHistMaxL1ThrCent->GetXaxis()->SetTitle("Centrality [%]");
- fHistMaxL1ThrCent->GetYaxis()->SetTitle("Maximum L1 threshold");
- fOutput->Add(fHistMaxL1ThrCent);
+ if (fAnaType == kEMCAL) {
+ fHistClusCent = new TH2F("fHistClusCent","Clusters vs. centrality", fNbins, 0, 100, fNbins, 0, 2000);
+ fHistClusCent->GetXaxis()->SetTitle("Centrality (%)");
+ fHistClusCent->GetYaxis()->SetTitle("No. of clusters");
+ fOutput->Add(fHistClusCent);
+
+ fHistMaxL1FastORCent = new TH2F("fHistMaxL1FastORCent","fHistMaxL1ClusCent", 100, 0, 100, 250, 0, 250);
+ fHistMaxL1FastORCent->GetXaxis()->SetTitle("Centrality [%]");
+ fHistMaxL1FastORCent->GetYaxis()->SetTitle("Maximum L1 FastOR");
+ fOutput->Add(fHistMaxL1FastORCent);
- fHistTracksPt = new TH1F("fHistTracksPt","P_{T} spectrum of reconstructed tracks", fNbins, fMinPt, fMaxPt);
- fHistTracksPt->GetXaxis()->SetTitle("P_{T} [GeV/c]");
+ fHistMaxL1ClusCent = new TH2F("fHistMaxL1ClusCent","fHistMaxL1ClusCent", 100, 0, 100, 250, 0, 250);
+ fHistMaxL1ClusCent->GetXaxis()->SetTitle("Centrality [%]");
+ fHistMaxL1ClusCent->GetYaxis()->SetTitle("Maximum L1 trigger cluster");
+ fOutput->Add(fHistMaxL1ClusCent);
+
+ fHistMaxL1ThrCent = new TH2F("fHistMaxL1ThrCent","fHistMaxL1ThrCent", 100, 0, 100, 250, 0, 250);
+ fHistMaxL1ThrCent->GetXaxis()->SetTitle("Centrality [%]");
+ fHistMaxL1ThrCent->GetYaxis()->SetTitle("Maximum L1 threshold");
+ fOutput->Add(fHistMaxL1ThrCent);
+ }
+
+ fHistTracksPt = new TH1F("fHistTracksPt","p_{T} spectrum of reconstructed tracks", fNbins, fMinBinPt, fMaxBinPt);
+ fHistTracksPt->GetXaxis()->SetTitle("p_{T} [GeV/c]");
fHistTracksPt->GetYaxis()->SetTitle("counts");
fOutput->Add(fHistTracksPt);
- fHistTrPhiEta = new TH2F("fHistTrPhiEta","Phi-Eta distribution of tracks", 20, -2, 2, 32, 0, 6.4);
+ fHistTrPhiEta = new TH2F("fHistTrPhiEta","Phi-Eta distribution of tracks", 80, -2, 2, 128, 0, 6.4);
fHistTrPhiEta->GetXaxis()->SetTitle("#eta");
fHistTrPhiEta->GetYaxis()->SetTitle("#phi");
fOutput->Add(fHistTrPhiEta);
- fHistClustersEnergy = new TH1F("fHistClustersEnergy","Energy spectrum of clusters", fNbins, fMinPt, fMaxPt);
- fHistClustersEnergy->GetXaxis()->SetTitle("E [GeV]");
- fHistClustersEnergy->GetYaxis()->SetTitle("counts");
- fOutput->Add(fHistClustersEnergy);
-
- fHistClusPhiEta = new TH2F("fHistClusPhiEta","Phi-Eta distribution of clusters", 20, -2, 2, 32, 0, 6.4);
- fHistClusPhiEta->GetXaxis()->SetTitle("#eta");
- fHistClusPhiEta->GetYaxis()->SetTitle("#phi");
- fOutput->Add(fHistClusPhiEta);
-
- fHistJetsPt = new TH1F("fHistJetsPt","P_{T} spectrum of reconstructed jets", fNbins, fMinPt, fMaxPt);
- fHistJetsPt->GetXaxis()->SetTitle("P_{T} [GeV/c]");
- fHistJetsPt->GetYaxis()->SetTitle("counts");
- fOutput->Add(fHistJetsPt);
+ fHistTrEmcPhiEta = new TH2F("fHistTrEmcPhiEta","Phi-Eta emcal distribution of tracks", 80, -2, 2, 128, 0, 6.4);
+ fHistTrEmcPhiEta->GetXaxis()->SetTitle("#eta");
+ fHistTrEmcPhiEta->GetYaxis()->SetTitle("#phi");
+ fOutput->Add(fHistTrEmcPhiEta);
+
+ if (fAnaType == kEMCAL) {
+ fHistClustersEnergy = new TH1F("fHistClustersEnergy","Energy spectrum of clusters", fNbins, fMinBinPt, fMaxBinPt);
+ fHistClustersEnergy->GetXaxis()->SetTitle("E [GeV]");
+ fHistClustersEnergy->GetYaxis()->SetTitle("counts");
+ fOutput->Add(fHistClustersEnergy);
+
+ fHistClusPhiEta = new TH2F("fHistClusPhiEta","Phi-Eta distribution of clusters", 80, -2, 2, 128, 0, 6.4);
+ fHistClusPhiEta->GetXaxis()->SetTitle("#eta");
+ fHistClusPhiEta->GetYaxis()->SetTitle("#phi");
+ fOutput->Add(fHistClusPhiEta);
+ }
- fHistJetsPhiEta = new TH2F("fHistJetsPhiEta","Phi-Eta distribution of jets", 20, -2, 2, 32, 0, 6.4);
+ fHistJetsPhiEta = new TH2F("fHistJetsPhiEta","Phi-Eta distribution of jets", 80, -2, 2, 128, 0, 6.4);
fHistJetsPhiEta->GetXaxis()->SetTitle("#eta");
fHistJetsPhiEta->GetYaxis()->SetTitle("#phi");
fOutput->Add(fHistJetsPhiEta);
- fHistJetsPtArea = new TH2F("fHistJetsPtArea","P_{T} vs. area of reconstructed jets", fNbins, fMinPt, fMaxPt, 20, 0, fJetRadius * fJetRadius * TMath::Pi() * 1.5);
- fHistJetsPtArea->GetXaxis()->SetTitle("P_{T} [GeV/c]");
+ fHistJetsPtArea = new TH2F("fHistJetsPtArea","p_{T} vs. area of reconstructed jets", fNbins, fMinBinPt, fMaxBinPt, 20, 0, fJetRadius * fJetRadius * TMath::Pi() * 1.5);
+ fHistJetsPtArea->GetXaxis()->SetTitle("p_{T} [GeV/c]");
fHistJetsPtArea->GetYaxis()->SetTitle("area");
fOutput->Add(fHistJetsPtArea);
- if (fDoEoverP) {
- fHistEoverP = new TH2F("fHistEoverP","E/P vs. E", fNbins, fMinPt, fMaxPt, fNbins, 0, 10);
- fHistEoverP->GetXaxis()->SetTitle("E [GeV]");
- fHistEoverP->GetYaxis()->SetTitle("E/P [c]");
- fOutput->Add(fHistEoverP);
+ if (fAnaType == kEMCAL) {
+ if (fDoEoverP) {
+ fHistEoverP = new TH2F("fHistEoverP","E/P vs. E", fNbins, fMinBinPt, fMaxBinPt, fNbins, 0, 10);
+ fHistEoverP->GetXaxis()->SetTitle("E [GeV]");
+ fHistEoverP->GetYaxis()->SetTitle("E/P [c]");
+ fOutput->Add(fHistEoverP);
+ }
+
+ fHistCellsEnergy = new TH1F("fHistCellsEnergy","Energy spectrum of cells", fNbins, fMinBinPt, fMaxBinPt);
+ fHistCellsEnergy->GetXaxis()->SetTitle("E [GeV]");
+ fHistCellsEnergy->GetYaxis()->SetTitle("counts");
+ fOutput->Add(fHistCellsEnergy);
+
+ fHistChVSneCells = new TH2F("fHistChVSneCells","Charged energy vs. neutral (cells) energy", fNbins, fMinBinPt * 4, fMaxBinPt * 4, fNbins, fMinBinPt * 4, fMaxBinPt * 4);
+ fHistChVSneCells->GetXaxis()->SetTitle("E [GeV]");
+ fHistChVSneCells->GetYaxis()->SetTitle("P [GeV/c]");
+ fOutput->Add(fHistChVSneCells);
+
+ fHistChVSneClus = new TH2F("fHistChVSneClus","Charged energy vs. neutral (clusters) energy", fNbins, fMinBinPt * 4, fMaxBinPt * 4, fNbins, fMinBinPt * 4, fMaxBinPt * 4);
+ fHistChVSneClus->GetXaxis()->SetTitle("E [GeV]");
+ fHistChVSneClus->GetYaxis()->SetTitle("P [GeV/c]");
+ fOutput->Add(fHistChVSneClus);
+
+ fHistChVSneCorrCells = new TH2F("fHistChVSneCorrCells","Charged energy vs. neutral (corrected cells) energy", fNbins, fMinBinPt * 4, fMaxBinPt * 4, fNbins, fMinBinPt * 4, fMaxBinPt * 4);
+ fHistChVSneCorrCells->GetXaxis()->SetTitle("E [GeV]");
+ fHistChVSneCorrCells->GetYaxis()->SetTitle("P [GeV/c]");
+ fOutput->Add(fHistChVSneCorrCells);
}
-
- fHistCellsEnergy = new TH1F("fHistCellsEnergy","Energy spectrum of cells", fNbins, fMinPt, fMaxPt);
- fHistCellsEnergy->GetXaxis()->SetTitle("E [GeV]");
- fHistCellsEnergy->GetYaxis()->SetTitle("counts");
- fOutput->Add(fHistCellsEnergy);
-
- fHistChVSneCells = new TH2F("fHistChVSneCells","Charged energy vs. neutral (cells) energy", fNbins, fMinPt * 4, fMaxPt * 4, fNbins, fMinPt * 4, fMaxPt * 4);
- fHistChVSneCells->GetXaxis()->SetTitle("E [GeV]");
- fHistChVSneCells->GetYaxis()->SetTitle("P [GeV/c]");
- fOutput->Add(fHistChVSneCells);
-
- fHistChVSneClus = new TH2F("fHistChVSneClus","Charged energy vs. neutral (clusters) energy", fNbins, fMinPt * 4, fMaxPt * 4, fNbins, fMinPt * 4, fMaxPt * 4);
- fHistChVSneClus->GetXaxis()->SetTitle("E [GeV]");
- fHistChVSneClus->GetYaxis()->SetTitle("P [GeV/c]");
- fOutput->Add(fHistChVSneClus);
-
- fHistChVSneCorrCells = new TH2F("fHistChVSneCorrCells","Charged energy vs. neutral (corrected cells) energy", fNbins, fMinPt * 4, fMaxPt * 4, fNbins, fMinPt * 4, fMaxPt * 4);
- fHistChVSneCorrCells->GetXaxis()->SetTitle("E [GeV]");
- fHistChVSneCorrCells->GetYaxis()->SetTitle("P [GeV/c]");
- fOutput->Add(fHistChVSneCorrCells);
for (Int_t i = 0; i < 5; i++) {
TString histnamephi("fHistTrackPhi_");
fHistTrackPhi[4]->SetLineColor(kBlack);
fHistTrackEta[4]->SetLineColor(kBlack);
+ TString histname;
+
+ for (Int_t i = 0; i < 4; i++) {
+ if (fAnaType == kEMCAL) {
+ histname = "fHistJetsPtClus_";
+ histname += i;
+ fHistJetsPtClus[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt);
+ fHistJetsPtClus[i]->GetXaxis()->SetTitle("p_{T} [GeV/c]");
+ fHistJetsPtClus[i]->GetYaxis()->SetTitle("counts");
+ fOutput->Add(fHistJetsPtClus[i]);
+ }
+
+ histname = "fHistJetsPtTrack_";
+ histname += i;
+ fHistJetsPtTrack[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt);
+ fHistJetsPtTrack[i]->GetXaxis()->SetTitle("p_{T} [GeV/c]");
+ fHistJetsPtTrack[i]->GetYaxis()->SetTitle("counts");
+ fOutput->Add(fHistJetsPtTrack[i]);
+
+ histname = "fHistJetsPt_";
+ histname += i;
+ fHistJetsPt[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt);
+ fHistJetsPt[i]->GetXaxis()->SetTitle("p_{T} [GeV/c]");
+ fHistJetsPt[i]->GetYaxis()->SetTitle("counts");
+ fOutput->Add(fHistJetsPt[i]);
+ }
+
PostData(1, fOutput); // Post data for ALL output slots >0 here, to get at least an empty histogram
}
//________________________________________________________________________
-void AliAnalysisTaskSAQA::RetrieveEventObjects()
+Bool_t AliAnalysisTaskSAQA::RetrieveEventObjects()
{
- AliAnalysisTaskEmcal::RetrieveEventObjects();
+ if(!AliAnalysisTaskEmcalJet::RetrieveEventObjects())
+ return kFALSE;
if (strcmp(fTrgClusName,"")) {
fTrgClusters = dynamic_cast<TClonesArray*>(InputEvent()->FindListObject(fTrgClusName));
AliWarning(Form("Could not retrieve trigger clusters!"));
}
}
+
+ return kTRUE;
}
//________________________________________________________________________
-void AliAnalysisTaskSAQA::FillHistograms()
+Bool_t AliAnalysisTaskSAQA::FillHistograms()
{
fHistCentrality->Fill(fCent);
if (fTracks)
if (fCaloClusters)
fHistClusCent->Fill(fCent, fCaloClusters->GetEntriesFast());
- Float_t clusSum = DoClusterLoop();
-
Float_t trackSum = DoTrackLoop();
- Float_t cellSum = 0, cellCutSum = 0;
- DoCellLoop(cellSum, cellCutSum);
-
- fHistChVSneCells->Fill(cellSum, trackSum);
- fHistChVSneClus->Fill(clusSum, trackSum);
- fHistChVSneCorrCells->Fill(cellCutSum, trackSum);
-
DoJetLoop();
- Float_t maxTrgClus = DoTriggerClusLoop();
- fHistMaxL1ClusCent->Fill(fCent, maxTrgClus);
-
- Int_t maxL1amp = -1;
- Int_t maxL1thr = -1;
+ if (fAnaType == kEMCAL) {
+ Float_t clusSum = DoClusterLoop();
- DoTriggerPrimitives(maxL1amp, maxL1thr);
+ Float_t cellSum = 0, cellCutSum = 0;
+
+ DoCellLoop(cellSum, cellCutSum);
+
+ fHistChVSneCells->Fill(cellSum, trackSum);
+ fHistChVSneClus->Fill(clusSum, trackSum);
+ fHistChVSneCorrCells->Fill(cellCutSum, trackSum);
- if (maxL1amp > -1)
- fHistMaxL1FastORCent->Fill(fCent, maxL1amp);
+ Float_t maxTrgClus = DoTriggerClusLoop();
+ fHistMaxL1ClusCent->Fill(fCent, maxTrgClus);
+
+ Int_t maxL1amp = -1;
+ Int_t maxL1thr = -1;
+
+ DoTriggerPrimitives(maxL1amp, maxL1thr);
+
+ if (maxL1amp > -1)
+ fHistMaxL1FastORCent->Fill(fCent, maxL1amp);
+
+ if (maxL1thr > -1)
+ fHistMaxL1ThrCent->Fill(fCent, maxL1thr);
+ }
- if (maxL1thr > -1)
- fHistMaxL1ThrCent->Fill(fCent, maxL1thr);
+ return kTRUE;
}
//________________________________________________________________________
for(Int_t i = 0; i < ntracks; i++) {
- AliVParticle* track = dynamic_cast<AliVParticle*>(fTracks->At(i)); // pointer to reconstructed to track
+ AliVTrack* track = dynamic_cast<AliVTrack*>(fTracks->At(i)); // pointer to reconstructed to track
if(!track) {
AliError(Form("Could not retrieve track %d",i));
continue;
Int_t label = track->GetLabel();
fHistTrPhiEta->Fill(track->Eta(), track->Phi());
+ fHistTrEmcPhiEta->Fill(track->GetTrackEtaOnEMCal(), track->GetTrackPhiOnEMCal());
fHistTrackEta[4]->Fill(track->Eta());
fHistTrackPhi[4]->Fill(track->Phi());
if (!fDoEoverP)
continue;
- AliVTrack *vtrack = dynamic_cast<AliVTrack*>(track);
- if (!vtrack)
- continue;
-
- Int_t clId = vtrack->GetEMCALcluster();
+ Int_t clId = track->GetEMCALcluster();
if (clId > -1 && clId < nclusters && fCaloClusters) {
AliVCluster* cluster = dynamic_cast<AliVCluster*>(fCaloClusters->At(i));
if (cluster) {
continue;
}
- if (!AcceptJet(jet))
+ if (!AcceptJet(jet, kFALSE))
continue;
+
+ fHistJetsPt[fCentBin]->Fill(jet->Pt());
+
+ if (jet->MaxTrackPt() > fPtBiasJetTrack)
+ fHistJetsPtTrack[fCentBin]->Fill(jet->Pt());
+
+ if (fAnaType == kEMCAL && jet->MaxClusterPt() > fPtBiasJetClus)
+ fHistJetsPtClus[fCentBin]->Fill(jet->Pt());
- fHistJetsPt->Fill(jet->Pt());
fHistJetsPtArea->Fill(jet->Pt(), jet->Area());
fHistJetsPhiEta->Fill(jet->Eta(), jet->Phi());
}
class TH1F;
class TH2F;
-#include "AliAnalysisTaskEmcal.h"
+#include "AliAnalysisTaskEmcalJet.h"
-class AliAnalysisTaskSAQA : public AliAnalysisTaskEmcal {
+class AliAnalysisTaskSAQA : public AliAnalysisTaskEmcalJet {
public:
AliAnalysisTaskSAQA();
AliAnalysisTaskSAQA(const char *name);
protected:
- void FillHistograms() ;
- void RetrieveEventObjects() ;
+ Bool_t FillHistograms() ;
+ Bool_t RetrieveEventObjects() ;
void DoCellLoop(Float_t &sum, Float_t &sum_cut) ;
void DoTriggerPrimitives(Int_t &maxL1amp, Int_t &maxL1thr) ;
Float_t DoTriggerClusLoop() ;
TH1F *fHistTracksPt; //!Pt spectrum of tracks
TH2F *fHistTrPhiEta; //!Phi-Eta distribution of tracks
+ TH2F *fHistTrEmcPhiEta; //!Phi-Eta emcal distribution of tracks
TH1F *fHistClustersEnergy; //!Energy spectrum of clusters
TH2F *fHistClusPhiEta; //!Phi-Eta distribution of clusters
- TH1F *fHistJetsPt; //!Pt spectrum of jets
TH2F *fHistJetsPhiEta; //!Phi-Eta distribution of jets
TH2F *fHistJetsPtArea; //!Pt vs. area of jets
+ TH1F *fHistJetsPtClus[4]; //!Inclusive jet pt spectrum cluster biased
+ TH1F *fHistJetsPtTrack[4]; //!Inclusive jet pt spectrum track biased
+ TH1F *fHistJetsPt[4]; //!Non biased inclusive jet pt spectrum
TH2F *fHistEoverP; //!E/P vs. E
//________________________________________________________________________
AliJetResponseMaker::AliJetResponseMaker() :
- AliAnalysisTaskEmcal("AliJetResponseMaker"),
+ AliAnalysisTaskEmcalJet("AliJetResponseMaker"),
fMCTracksName("MCParticles"),
fMCJetsName("MCJets"),
fMaxDistance(0.2),
//________________________________________________________________________
AliJetResponseMaker::AliJetResponseMaker(const char *name) :
- AliAnalysisTaskEmcal(name),
+ AliAnalysisTaskEmcalJet(name),
fMCTracksName("MCParticles"),
fMCJetsName("MCJets"),
fMaxDistance(0.2),
fHistJetPhiEta->GetYaxis()->SetTitle("#phi");
fOutput->Add(fHistJetPhiEta);
- fHistJetsPt = new TH1F("fHistJetsPt", "fHistJetsPt", fNbins, fMinPt, fMaxPt);
+ fHistJetsPt = new TH1F("fHistJetsPt", "fHistJetsPt", fNbins, fMinBinPt, fMaxBinPt);
fHistJetsPt->GetXaxis()->SetTitle("p_{T} [GeV/c]");
fHistJetsPt->GetYaxis()->SetTitle("counts");
fOutput->Add(fHistJetsPt);
- fHistJetsPtNonBias = new TH1F("fHistJetsPtNonBias", "fHistJetsPtNonBias", fNbins, fMinPt, fMaxPt);
+ fHistJetsPtNonBias = new TH1F("fHistJetsPtNonBias", "fHistJetsPtNonBias", fNbins, fMinBinPt, fMaxBinPt);
fHistJetsPtNonBias->GetXaxis()->SetTitle("p_{T} [GeV/c]");
fHistJetsPtNonBias->GetYaxis()->SetTitle("counts");
fOutput->Add(fHistJetsPtNonBias);
- fHistJetsZvsPt = new TH2F("fHistJetsZvsPt", "fHistJetsZvsPt", fNbins, 0, 1.2, fNbins, fMinPt, fMaxPt);
+ fHistJetsZvsPt = new TH2F("fHistJetsZvsPt", "fHistJetsZvsPt", fNbins, 0, 1.2, fNbins, fMinBinPt, fMaxBinPt);
fHistJetsZvsPt->GetXaxis()->SetTitle("Z");
fHistJetsZvsPt->GetYaxis()->SetTitle("p_{T} [GeV/c]");
fOutput->Add(fHistJetsZvsPt);
if (fAnaType == kEMCAL) {
- fHistJetsNEFvsPt = new TH2F("fHistJetsNEFvsPt", "fHistJetsNEFvsPt", fNbins, 0, 1.2, fNbins, fMinPt, fMaxPt);
+ fHistJetsNEFvsPt = new TH2F("fHistJetsNEFvsPt", "fHistJetsNEFvsPt", fNbins, 0, 1.2, fNbins, fMinBinPt, fMaxBinPt);
fHistJetsNEFvsPt->GetXaxis()->SetTitle("NEF");
fHistJetsNEFvsPt->GetYaxis()->SetTitle("p_{T} [GeV/c]");
fOutput->Add(fHistJetsNEFvsPt);
fHistMCJetPhiEta->GetYaxis()->SetTitle("#phi");
fOutput->Add(fHistMCJetPhiEta);
- fHistMCJetsPt = new TH1F("fHistMCJetsPt", "fHistMCJetsPt", fNbins, fMinPt, fMaxPt);
+ fHistMCJetsPt = new TH1F("fHistMCJetsPt", "fHistMCJetsPt", fNbins, fMinBinPt, fMaxBinPt);
fHistMCJetsPt->GetXaxis()->SetTitle("p_{T} [GeV/c]");
fHistMCJetsPt->GetYaxis()->SetTitle("counts");
fOutput->Add(fHistMCJetsPt);
- fHistMCJetsPtNonBias = new TH1F("fHistMCJetsPtNonBias", "fHistMCJetsPtNonBias", fNbins, fMinPt, fMaxPt);
+ fHistMCJetsPtNonBias = new TH1F("fHistMCJetsPtNonBias", "fHistMCJetsPtNonBias", fNbins, fMinBinPt, fMaxBinPt);
fHistMCJetsPtNonBias->GetXaxis()->SetTitle("p_{T} [GeV/c]");
fHistMCJetsPtNonBias->GetYaxis()->SetTitle("counts");
fOutput->Add(fHistMCJetsPtNonBias);
- fHistMCJetsZvsPt = new TH2F("fHistMCJetsZvsPt", "fHistMCJetsZvsPt", fNbins, 0, 1.2, fNbins, fMinPt, fMaxPt);
+ fHistMCJetsZvsPt = new TH2F("fHistMCJetsZvsPt", "fHistMCJetsZvsPt", fNbins, 0, 1.2, fNbins, fMinBinPt, fMaxBinPt);
fHistMCJetsZvsPt->GetXaxis()->SetTitle("Z");
fHistMCJetsZvsPt->GetYaxis()->SetTitle("p_{T} [GeV/c]");
fOutput->Add(fHistMCJetsZvsPt);
if (fAnaType == kEMCAL) {
- fHistMCJetsNEFvsPt = new TH2F("fHistMCJetsNEFvsPt", "fHistMCJetsNEFvsPt", fNbins, 0, 1.2, fNbins, fMinPt, fMaxPt);
+ fHistMCJetsNEFvsPt = new TH2F("fHistMCJetsNEFvsPt", "fHistMCJetsNEFvsPt", fNbins, 0, 1.2, fNbins, fMinBinPt, fMaxBinPt);
fHistMCJetsNEFvsPt->GetXaxis()->SetTitle("NEF");
fHistMCJetsNEFvsPt->GetYaxis()->SetTitle("p_{T} [GeV/c]");
fOutput->Add(fHistMCJetsNEFvsPt);
fHistClosestDeltaEta->GetYaxis()->SetTitle("counts");
fOutput->Add(fHistClosestDeltaEta);
- fHistClosestDeltaPt = new TH1F("fHistClosestDeltaPt", "fHistClosestDeltaPt", fNbins, -fMaxPt / 2, fMaxPt / 2);
+ fHistClosestDeltaPt = new TH1F("fHistClosestDeltaPt", "fHistClosestDeltaPt", fNbins, -fMaxBinPt / 2, fMaxBinPt / 2);
fHistClosestDeltaPt->GetXaxis()->SetTitle("#Delta p_{T}");
fHistClosestDeltaPt->GetYaxis()->SetTitle("counts");
fOutput->Add(fHistClosestDeltaPt);
- fHistPartvsDetecPt = new TH2F("fHistPartvsDetecPt", "fHistPartvsDetecPt", fNbins, fMinPt, fMaxPt, fNbins, fMinPt, fMaxPt);
+ fHistPartvsDetecPt = new TH2F("fHistPartvsDetecPt", "fHistPartvsDetecPt", fNbins, fMinBinPt, fMaxBinPt, fNbins, fMinBinPt, fMaxBinPt);
fHistPartvsDetecPt->GetXaxis()->SetTitle("p_{T}^{det}");
fHistPartvsDetecPt->GetYaxis()->SetTitle("p_{T}^{rec}");
fOutput->Add(fHistPartvsDetecPt);
}
//________________________________________________________________________
-void AliJetResponseMaker::FillHistograms()
+Bool_t AliJetResponseMaker::FillHistograms()
{
// Fill histograms.
fHistMCJetsZvsPt->Fill(track->Pt() / jet->Pt(), jet->Pt());
}
}
+
+ return kTRUE;
}
//________________________________________________________________________
}
//________________________________________________________________________
-void AliJetResponseMaker::RetrieveEventObjects()
+Bool_t AliJetResponseMaker::RetrieveEventObjects()
{
// Retrieve event objects.
- AliAnalysisTaskEmcal::RetrieveEventObjects();
+ if(!AliAnalysisTaskEmcalJet::RetrieveEventObjects())
+ return kFALSE;
if (!fMCJetsName.IsNull()) {
fMCJets = dynamic_cast<TClonesArray*>(InputEvent()->FindListObject(fMCJetsName));
AliWarning(Form("Could not retrieve MC tracks %s!", fMCTracksName.Data()));
}
}
+
+ return kTRUE;
}
//________________________________________________________________________
class TH1F;
class TH2F;
-#include "AliAnalysisTaskEmcal.h"
+#include "AliAnalysisTaskEmcalJet.h"
-class AliJetResponseMaker : public AliAnalysisTaskEmcal {
+class AliJetResponseMaker : public AliAnalysisTaskEmcalJet {
public:
AliJetResponseMaker();
AliJetResponseMaker(const char *name);
protected:
void DoJetLoop(TClonesArray *jets1, TClonesArray *jets2);
- void FillHistograms();
- void RetrieveEventObjects();
+ Bool_t FillHistograms();
+ Bool_t RetrieveEventObjects();
TString fMCTracksName; // name of MC particle collection
TString fMCJetsName; // name of MC jet collection