3 // Jet sample analysis task.
7 #include <TClonesArray.h>
11 #include <TLorentzVector.h>
13 #include "AliVCluster.h"
14 #include "AliVTrack.h"
15 #include "AliEmcalJet.h"
16 #include "AliRhoParameter.h"
18 #include "AliJetContainer.h"
19 #include "AliParticleContainer.h"
20 #include "AliClusterContainer.h"
22 #include "AliAnalysisTaskEmcalJetSample.h"
24 ClassImp(AliAnalysisTaskEmcalJetSample)
26 //________________________________________________________________________
27 AliAnalysisTaskEmcalJetSample::AliAnalysisTaskEmcalJetSample() :
28 AliAnalysisTaskEmcalJet("AliAnalysisTaskEmcalJetSample", kTRUE),
34 // Default constructor.
36 for (Int_t i = 0; i < 4; i++) {
38 fHistClustersPt[i] = 0;
39 fHistLeadingJetPt[i] = 0;
40 fHistJetsPhiEta[i] = 0;
41 fHistJetsPtArea[i] = 0;
42 fHistJetsPtLeadHad[i] = 0;
43 fHistJetsCorrPtArea[i] = 0;
46 SetMakeGeneralHistograms(kTRUE);
49 //________________________________________________________________________
50 AliAnalysisTaskEmcalJetSample::AliAnalysisTaskEmcalJetSample(const char *name) :
51 AliAnalysisTaskEmcalJet(name, kTRUE),
56 // Standard constructor.
59 for (Int_t i = 0; i < 4; i++) {
61 fHistClustersPt[i] = 0;
62 fHistLeadingJetPt[i] = 0;
63 fHistJetsPhiEta[i] = 0;
64 fHistJetsPtArea[i] = 0;
65 fHistJetsPtLeadHad[i] = 0;
66 fHistJetsCorrPtArea[i] = 0;
69 SetMakeGeneralHistograms(kTRUE);
72 //________________________________________________________________________
73 AliAnalysisTaskEmcalJetSample::~AliAnalysisTaskEmcalJetSample()
78 //________________________________________________________________________
79 void AliAnalysisTaskEmcalJetSample::UserCreateOutputObjects()
81 // Create user output.
83 AliAnalysisTaskEmcalJet::UserCreateOutputObjects();
85 fJetsCont = GetJetContainer(0);
86 fTracksCont = fJetsCont->GetParticleContainer();
87 fCaloClustersCont = fJetsCont->GetClusterContainer();
91 for (Int_t i = 0; i < 4; i++) {
92 if (fParticleCollArray.GetEntriesFast()>0) {
93 histname = "fHistTracksPt_";
95 fHistTracksPt[i] = new TH1F(histname.Data(), histname.Data(), fNbins / 2, fMinBinPt, fMaxBinPt / 2);
96 fHistTracksPt[i]->GetXaxis()->SetTitle("p_{T,track} (GeV/c)");
97 fHistTracksPt[i]->GetYaxis()->SetTitle("counts");
98 fOutput->Add(fHistTracksPt[i]);
101 if (fClusterCollArray.GetEntriesFast()>0) {
102 histname = "fHistClustersPt_";
104 fHistClustersPt[i] = new TH1F(histname.Data(), histname.Data(), fNbins / 2, fMinBinPt, fMaxBinPt / 2);
105 fHistClustersPt[i]->GetXaxis()->SetTitle("p_{T,clus} (GeV/c)");
106 fHistClustersPt[i]->GetYaxis()->SetTitle("counts");
107 fOutput->Add(fHistClustersPt[i]);
110 if (fJetCollArray.GetEntriesFast()>0) {
111 histname = "fHistLeadingJetPt_";
113 fHistLeadingJetPt[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt);
114 fHistLeadingJetPt[i]->GetXaxis()->SetTitle("p_{T}^{raw} (GeV/c)");
115 fHistLeadingJetPt[i]->GetYaxis()->SetTitle("counts");
116 fOutput->Add(fHistLeadingJetPt[i]);
118 histname = "fHistJetsPhiEta_";
120 fHistJetsPhiEta[i] = new TH2F(histname.Data(), histname.Data(), 50, -1, 1, 101, 0, TMath::Pi()*2 + TMath::Pi()/200);
121 fHistJetsPhiEta[i]->GetXaxis()->SetTitle("#eta");
122 fHistJetsPhiEta[i]->GetYaxis()->SetTitle("#phi");
123 fOutput->Add(fHistJetsPhiEta[i]);
125 histname = "fHistJetsPtArea_";
127 fHistJetsPtArea[i] = new TH2F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt, 30, 0, 3);
128 fHistJetsPtArea[i]->GetXaxis()->SetTitle("p_{T}^{raw} (GeV/c)");
129 fHistJetsPtArea[i]->GetYaxis()->SetTitle("area");
130 fOutput->Add(fHistJetsPtArea[i]);
132 histname = "fHistJetsPtLeadHad_";
134 fHistJetsPtLeadHad[i] = new TH2F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt, fNbins / 2, fMinBinPt, fMaxBinPt / 2);
135 fHistJetsPtLeadHad[i]->GetXaxis()->SetTitle("p_{T}^{raw} (GeV/c)");
136 fHistJetsPtLeadHad[i]->GetYaxis()->SetTitle("p_{T,lead} (GeV/c)");
137 fHistJetsPtLeadHad[i]->GetZaxis()->SetTitle("counts");
138 fOutput->Add(fHistJetsPtLeadHad[i]);
140 if (!(GetJetContainer()->GetRhoName().IsNull())) {
141 histname = "fHistJetsCorrPtArea_";
143 fHistJetsCorrPtArea[i] = new TH2F(histname.Data(), histname.Data(), fNbins*2, -fMaxBinPt, fMaxBinPt, 30, 0, 3);
144 fHistJetsCorrPtArea[i]->GetXaxis()->SetTitle("p_{T}^{corr} [GeV/c]");
145 fHistJetsCorrPtArea[i]->GetYaxis()->SetTitle("area");
146 fOutput->Add(fHistJetsCorrPtArea[i]);
150 PostData(1, fOutput); // Post data for ALL output slots > 0 here.
153 //________________________________________________________________________
154 Bool_t AliAnalysisTaskEmcalJetSample::FillHistograms()
159 AliVParticle *track = fTracksCont->GetNextAcceptParticle(0);
161 fHistTracksPt[fCentBin]->Fill(track->Pt());
163 track = fTracksCont->GetNextAcceptParticle();
167 if (fCaloClustersCont) {
168 AliVCluster *cluster = fCaloClustersCont->GetNextAcceptCluster(0);
171 TLorentzVector nPart;
172 cluster->GetMomentum(nPart, fVertex);
173 fHistClustersPt[fCentBin]->Fill(nPart.Pt());
175 cluster = fCaloClustersCont->GetNextAcceptCluster();
180 AliEmcalJet *jet = fJetsCont->GetNextAcceptJet(0);
183 fHistJetsPtArea[fCentBin]->Fill(jet->Pt(), jet->Area());
184 fHistJetsPhiEta[fCentBin]->Fill(jet->Eta(), jet->Phi());
186 Float_t ptLeading = GetLeadingHadronPt(jet);
187 fHistJetsPtLeadHad[fCentBin]->Fill(jet->Pt(), ptLeading);
189 Float_t corrPt = jet->Pt() - fJetsCont->GetRhoVal() * jet->Area();
190 fHistJetsCorrPtArea[fCentBin]->Fill(corrPt, jet->Area());
192 jet = fJetsCont->GetNextAcceptJet();
195 jet = fJetsCont->GetLeadingJet();
196 fHistLeadingJetPt[fCentBin]->Fill(jet->Pt());
202 //________________________________________________________________________
203 void AliAnalysisTaskEmcalJetSample::ExecOnce() {
205 AliAnalysisTaskEmcalJet::ExecOnce();
207 if (fJetsCont && fJetsCont->GetArray() == 0) fJetsCont = 0;
208 if (fTracksCont && fTracksCont->GetArray() == 0) fTracksCont = 0;
209 if (fCaloClustersCont && fCaloClustersCont->GetArray() == 0) fCaloClustersCont = 0;
213 //________________________________________________________________________
214 Bool_t AliAnalysisTaskEmcalJetSample::Run()
216 // Run analysis code here, if needed. It will be executed before FillHistograms().
218 return kTRUE; // If return kFALSE FillHistogram() will NOT be executed.
221 //________________________________________________________________________
222 void AliAnalysisTaskEmcalJetSample::Terminate(Option_t *)
224 // Called once at the end of the analysis.