]>
Commit | Line | Data |
---|---|---|
00514d01 | 1 | // $Id$ |
91f4b7c5 | 2 | // |
297edd60 | 3 | // Jet analysis task. |
91f4b7c5 | 4 | // |
297edd60 | 5 | // Author: S.Aiola |
25283b37 | 6 | |
25283b37 | 7 | #include <TClonesArray.h> |
8 | #include <TH1F.h> | |
9 | #include <TH2F.h> | |
a487deae | 10 | #include <TH3F.h> |
25283b37 | 11 | #include <TList.h> |
12 | #include <TLorentzVector.h> | |
25283b37 | 13 | |
f0a0fd33 | 14 | #include "AliVCluster.h" |
df43b607 | 15 | #include "AliVParticle.h" |
6fd5039f | 16 | #include "AliVTrack.h" |
25283b37 | 17 | #include "AliEmcalJet.h" |
e44e8726 | 18 | #include "AliRhoParameter.h" |
55264f20 | 19 | #include "AliLog.h" |
25283b37 | 20 | |
00514d01 | 21 | #include "AliAnalysisTaskSAJF.h" |
25283b37 | 22 | |
00514d01 | 23 | ClassImp(AliAnalysisTaskSAJF) |
25283b37 | 24 | |
25 | //________________________________________________________________________ | |
00514d01 | 26 | AliAnalysisTaskSAJF::AliAnalysisTaskSAJF() : |
1f03e093 | 27 | AliAnalysisTaskEmcalJet("AliAnalysisTaskSAJF", kTRUE), |
624bef5b | 28 | fNjetsVsCent(0) |
226f511d | 29 | |
25283b37 | 30 | { |
31 | // Default constructor. | |
f0a0fd33 | 32 | |
33 | for (Int_t i = 0; i < 4; i++) { | |
e44e8726 | 34 | fHistEvents[i] = 0; |
5ce8ae64 | 35 | fHistLeadingJetPhiEta[i] = 0; |
36 | fHistLeadingJetPtArea[i] = 0; | |
37 | fHistLeadingJetCorrPtArea[i] = 0; | |
59f16b27 | 38 | fHistRhoVSleadJetPt[i] = 0; |
a487deae | 39 | fHistJetPhiEta[i] = 0; |
40 | fHistJetsPtArea[i] = 0; | |
41 | fHistJetsCorrPtArea[i] = 0; | |
b12a85c3 | 42 | fHistJetsNEFvsPt[i] = 0; |
63fac07f | 43 | fHistJetsCEFvsCEFPt[i] = 0; |
b12a85c3 | 44 | fHistJetsZvsPt[i] = 0; |
58285fc6 | 45 | fHistConstituents[i] = 0; |
a487deae | 46 | fHistTracksJetPt[i] = 0; |
47 | fHistClustersJetPt[i] = 0; | |
7030f36f | 48 | fHistTracksPtDist[i] = 0; |
49 | fHistClustersPtDist[i] = 0; | |
624bef5b | 50 | fHistJetNconstVsPt[i] = 0; |
f0a0fd33 | 51 | } |
a487deae | 52 | |
53 | SetMakeGeneralHistograms(kTRUE); | |
25283b37 | 54 | } |
55 | ||
56 | //________________________________________________________________________ | |
00514d01 | 57 | AliAnalysisTaskSAJF::AliAnalysisTaskSAJF(const char *name) : |
1f03e093 | 58 | AliAnalysisTaskEmcalJet(name, kTRUE), |
624bef5b | 59 | fNjetsVsCent(0) |
25283b37 | 60 | { |
61 | // Standard constructor. | |
62 | ||
f0a0fd33 | 63 | for (Int_t i = 0; i < 4; i++) { |
e44e8726 | 64 | fHistEvents[i] = 0; |
5ce8ae64 | 65 | fHistLeadingJetPhiEta[i] = 0; |
66 | fHistLeadingJetPtArea[i] = 0; | |
67 | fHistLeadingJetCorrPtArea[i] = 0; | |
59f16b27 | 68 | fHistRhoVSleadJetPt[i] = 0; |
a487deae | 69 | fHistJetPhiEta[i] = 0; |
70 | fHistJetsPtArea[i] = 0; | |
71 | fHistJetsCorrPtArea[i] = 0; | |
b12a85c3 | 72 | fHistJetsNEFvsPt[i] = 0; |
63fac07f | 73 | fHistJetsCEFvsCEFPt[i] = 0; |
b12a85c3 | 74 | fHistJetsZvsPt[i] = 0; |
58285fc6 | 75 | fHistConstituents[i] = 0; |
a487deae | 76 | fHistTracksJetPt[i] = 0; |
77 | fHistClustersJetPt[i] = 0; | |
7030f36f | 78 | fHistTracksPtDist[i] = 0; |
79 | fHistClustersPtDist[i] = 0; | |
624bef5b | 80 | fHistJetNconstVsPt[i] = 0; |
f0a0fd33 | 81 | } |
a487deae | 82 | |
83 | SetMakeGeneralHistograms(kTRUE); | |
25283b37 | 84 | } |
85 | ||
86 | //________________________________________________________________________ | |
00514d01 | 87 | AliAnalysisTaskSAJF::~AliAnalysisTaskSAJF() |
25283b37 | 88 | { |
16d143bd | 89 | // Destructor. |
25283b37 | 90 | } |
91 | ||
92 | //________________________________________________________________________ | |
00514d01 | 93 | void AliAnalysisTaskSAJF::UserCreateOutputObjects() |
25283b37 | 94 | { |
16d143bd | 95 | // Create user output. |
df43b607 | 96 | |
16d143bd | 97 | AliAnalysisTaskEmcalJet::UserCreateOutputObjects(); |
a825589f | 98 | |
624bef5b | 99 | fNjetsVsCent = new TH2F("fNjetsVsCent","fNjetsVsCent", 100, 0, 100, 150, -0.5, 149.5); |
100 | fNjetsVsCent->GetXaxis()->SetTitle("Centrality (%)"); | |
101 | fNjetsVsCent->GetYaxis()->SetTitle("# of jets"); | |
102 | fOutput->Add(fNjetsVsCent); | |
103 | ||
a487deae | 104 | const Int_t nbinsZ = 12; |
105 | Float_t binsZ[nbinsZ+1] = {0,1,2,3,4,5,6,7,8,9,10,20,1000}; | |
106 | ||
107 | Float_t *binsPt = GenerateFixedBinArray(fNbins, fMinBinPt, fMaxBinPt); | |
108 | Float_t *binsCorrPt = GenerateFixedBinArray(fNbins*2, -fMaxBinPt, fMaxBinPt); | |
109 | Float_t *binsArea = GenerateFixedBinArray(30, 0, fJetRadius * fJetRadius * TMath::Pi() * 3); | |
110 | Float_t *binsEta = GenerateFixedBinArray(50,-1, 1); | |
111 | Float_t *binsPhi = GenerateFixedBinArray(101, 0, TMath::Pi() * 2.02); | |
112 | Float_t *bins120 = GenerateFixedBinArray(120, 0, 1.2); | |
624bef5b | 113 | Float_t *bins150 = GenerateFixedBinArray(150, -0.5, 149.5); |
b5ee47fb | 114 | |
f0a0fd33 | 115 | TString histname; |
116 | ||
117 | for (Int_t i = 0; i < 4; i++) { | |
e44e8726 | 118 | histname = "fHistEvents_"; |
119 | histname += i; | |
120 | fHistEvents[i] = new TH1F(histname,histname, 6, 0, 6); | |
121 | fHistEvents[i]->GetXaxis()->SetTitle("Event state"); | |
122 | fHistEvents[i]->GetYaxis()->SetTitle("counts"); | |
a5621834 | 123 | fHistEvents[i]->GetXaxis()->SetBinLabel(1, "No jets"); |
e22bc1b8 | 124 | fHistEvents[i]->GetXaxis()->SetBinLabel(2, "Max jet not found"); |
a5621834 | 125 | fHistEvents[i]->GetXaxis()->SetBinLabel(3, "Rho == 0"); |
e22bc1b8 | 126 | fHistEvents[i]->GetXaxis()->SetBinLabel(4, "Max jet <= 0"); |
a5621834 | 127 | fHistEvents[i]->GetXaxis()->SetBinLabel(5, "OK"); |
e44e8726 | 128 | fOutput->Add(fHistEvents[i]); |
129 | ||
5ce8ae64 | 130 | histname = "fHistLeadingJetPhiEta_"; |
f0a0fd33 | 131 | histname += i; |
5ce8ae64 | 132 | fHistLeadingJetPhiEta[i] = new TH2F(histname.Data(), histname.Data(), 50,-1, 1, 101, 0, TMath::Pi() * 2.02); |
133 | fHistLeadingJetPhiEta[i]->GetXaxis()->SetTitle("#eta"); | |
134 | fHistLeadingJetPhiEta[i]->GetYaxis()->SetTitle("#phi"); | |
135 | fOutput->Add(fHistLeadingJetPhiEta[i]); | |
136 | ||
137 | histname = "fHistLeadingJetPtArea_"; | |
138 | histname += i; | |
139 | fHistLeadingJetPtArea[i] = new TH2F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt, 30, 0, fJetRadius * fJetRadius * TMath::Pi() * 3); | |
140 | fHistLeadingJetPtArea[i]->GetXaxis()->SetTitle("p_{T}^{raw} (GeV/c)"); | |
141 | fHistLeadingJetPtArea[i]->GetYaxis()->SetTitle("area"); | |
142 | fOutput->Add(fHistLeadingJetPtArea[i]); | |
b5ee47fb | 143 | |
63fac07f | 144 | if (!fRhoName.IsNull()) { |
5ce8ae64 | 145 | histname = "fHistLeadingJetCorrPtArea_"; |
63fac07f | 146 | histname += i; |
5ce8ae64 | 147 | fHistLeadingJetCorrPtArea[i] = new TH2F(histname.Data(), histname.Data(), fNbins * 2, -fMaxBinPt, fMaxBinPt, 30, 0, fJetRadius * fJetRadius * TMath::Pi() * 3); |
148 | fHistLeadingJetCorrPtArea[i]->GetXaxis()->SetTitle("p_{T}^{corr} (GeV/c)"); | |
149 | fHistLeadingJetCorrPtArea[i]->GetYaxis()->SetTitle("area"); | |
150 | fOutput->Add(fHistLeadingJetCorrPtArea[i]); | |
63fac07f | 151 | |
152 | histname = "fHistRhoVSleadJetPt_"; | |
153 | histname += i; | |
154 | fHistRhoVSleadJetPt[i] = new TH2F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt*2, fNbins, fMinBinPt, fMaxBinPt); | |
155 | fHistRhoVSleadJetPt[i]->GetXaxis()->SetTitle("#rho * area (GeV/c)"); | |
156 | fHistRhoVSleadJetPt[i]->GetYaxis()->SetTitle("Leading jet p_{T} (GeV/c)"); | |
157 | fOutput->Add(fHistRhoVSleadJetPt[i]); | |
158 | } | |
59f16b27 | 159 | |
a487deae | 160 | histname = "fHistJetPhiEta_"; |
161 | histname += i; | |
162 | fHistJetPhiEta[i] = new TH3F(histname.Data(), histname.Data(), | |
163 | 50, binsEta, | |
164 | 101, binsPhi, | |
165 | nbinsZ, binsZ); | |
166 | fHistJetPhiEta[i]->GetXaxis()->SetTitle("#eta"); | |
167 | fHistJetPhiEta[i]->GetYaxis()->SetTitle("#phi"); | |
168 | fHistJetPhiEta[i]->GetZaxis()->SetTitle("p_{T,lead} (GeV/c)"); | |
169 | fOutput->Add(fHistJetPhiEta[i]); | |
170 | ||
171 | histname = "fHistJetsPtArea_"; | |
172 | histname += i; | |
173 | fHistJetsPtArea[i] = new TH3F(histname.Data(), histname.Data(), | |
174 | fNbins, binsPt, | |
175 | 30, binsArea, | |
176 | nbinsZ, binsZ); | |
177 | fHistJetsPtArea[i]->GetXaxis()->SetTitle("p_{T}^{raw} (GeV/c)"); | |
178 | fHistJetsPtArea[i]->GetYaxis()->SetTitle("area"); | |
179 | fHistJetsPtArea[i]->GetZaxis()->SetTitle("p_{T,lead} (GeV/c)"); | |
180 | fOutput->Add(fHistJetsPtArea[i]); | |
181 | ||
b12a85c3 | 182 | histname = "fHistJetsZvsPt_"; |
b5ee47fb | 183 | histname += i; |
a487deae | 184 | fHistJetsZvsPt[i] = new TH3F(histname.Data(), histname.Data(), |
185 | 120, bins120, | |
186 | fNbins, binsPt, | |
187 | nbinsZ, binsZ); | |
b12a85c3 | 188 | fHistJetsZvsPt[i]->GetXaxis()->SetTitle("Z"); |
a487deae | 189 | fHistJetsZvsPt[i]->GetYaxis()->SetTitle("p_{T}^{raw} (GeV/c)"); |
190 | fHistJetsZvsPt[i]->GetZaxis()->SetTitle("p_{T,lead} (GeV/c)"); | |
b12a85c3 | 191 | fOutput->Add(fHistJetsZvsPt[i]); |
192 | ||
63fac07f | 193 | histname = "fHistJetsNEFvsPt_"; |
194 | histname += i; | |
195 | fHistJetsNEFvsPt[i] = new TH3F(histname.Data(), histname.Data(), | |
196 | 120, bins120, | |
197 | fNbins, binsPt, | |
198 | nbinsZ, binsZ); | |
199 | fHistJetsNEFvsPt[i]->GetXaxis()->SetTitle("NEF"); | |
200 | fHistJetsNEFvsPt[i]->GetYaxis()->SetTitle("p_{T}^{raw} (GeV/c)"); | |
201 | fHistJetsNEFvsPt[i]->GetZaxis()->SetTitle("p_{T,lead} (GeV/c)"); | |
202 | fOutput->Add(fHistJetsNEFvsPt[i]); | |
203 | ||
204 | histname = "fHistJetsCEFvsCEFPt_"; | |
2bddb6ae | 205 | histname += i; |
63fac07f | 206 | fHistJetsCEFvsCEFPt[i] = new TH3F(histname.Data(), histname.Data(), |
207 | 120, bins120, | |
208 | fNbins, binsPt, | |
a487deae | 209 | nbinsZ, binsZ); |
63fac07f | 210 | fHistJetsCEFvsCEFPt[i]->GetXaxis()->SetTitle("1-NEF"); |
211 | fHistJetsCEFvsCEFPt[i]->GetYaxis()->SetTitle("(1-NEF)*p_{T}^{raw} (GeV/c)"); | |
212 | fHistJetsCEFvsCEFPt[i]->GetZaxis()->SetTitle("p_{T,lead} (GeV/c)"); | |
213 | fOutput->Add(fHistJetsCEFvsCEFPt[i]); | |
214 | ||
215 | if (!fRhoName.IsNull()) { | |
216 | histname = "fHistJetsCorrPtArea_"; | |
217 | histname += i; | |
218 | fHistJetsCorrPtArea[i] = new TH3F(histname.Data(), histname.Data(), | |
219 | fNbins * 2, binsCorrPt, | |
220 | 30, binsArea, | |
221 | nbinsZ, binsZ); | |
222 | fHistJetsCorrPtArea[i]->GetXaxis()->SetTitle("p_{T}^{corr} [GeV/c]"); | |
223 | fHistJetsCorrPtArea[i]->GetYaxis()->SetTitle("area"); | |
224 | fOutput->Add(fHistJetsCorrPtArea[i]); | |
225 | } | |
2bddb6ae | 226 | |
a487deae | 227 | histname = "fHistConstituents_"; |
a55e4f1d | 228 | histname += i; |
624bef5b | 229 | fHistConstituents[i] = new TH2F(histname.Data(), histname.Data(), 100, 1, 101, 100, -0.5, 99.5); |
a487deae | 230 | fHistConstituents[i]->GetXaxis()->SetTitle("p_{T,part} (GeV/c)"); |
231 | fHistConstituents[i]->GetYaxis()->SetTitle("no. of particles"); | |
624bef5b | 232 | fHistConstituents[i]->GetZaxis()->SetTitle("counts"); |
a487deae | 233 | fOutput->Add(fHistConstituents[i]); |
a55e4f1d | 234 | |
a487deae | 235 | histname = "fHistTracksJetPt_"; |
a55e4f1d | 236 | histname += i; |
a487deae | 237 | fHistTracksJetPt[i] = new TH2F(histname.Data(), histname.Data(), fNbins / 2, fMinBinPt, fMaxBinPt / 2, fNbins, fMinBinPt, fMaxBinPt); |
238 | fHistTracksJetPt[i]->GetXaxis()->SetTitle("p_{T,track} (GeV/c)"); | |
239 | fHistTracksJetPt[i]->GetYaxis()->SetTitle("p_{T,jet} (GeV/c)"); | |
240 | fHistTracksJetPt[i]->GetZaxis()->SetTitle("counts"); | |
241 | fOutput->Add(fHistTracksJetPt[i]); | |
242 | ||
7030f36f | 243 | histname = "fHistTracksPtDist_"; |
244 | histname += i; | |
245 | fHistTracksPtDist[i] = new TH2F(histname.Data(), histname.Data(), fNbins / 2, fMinBinPt, fMaxBinPt / 2, 100, 0, 5); | |
246 | fHistTracksPtDist[i]->GetXaxis()->SetTitle("p_{T,track} (GeV/c)"); | |
247 | fHistTracksPtDist[i]->GetYaxis()->SetTitle("d"); | |
248 | fHistTracksPtDist[i]->GetZaxis()->SetTitle("counts"); | |
249 | fOutput->Add(fHistTracksPtDist[i]); | |
250 | ||
a487deae | 251 | if (!fCaloName.IsNull()) { |
252 | histname = "fHistClustersJetPt_"; | |
e44e8726 | 253 | histname += i; |
a487deae | 254 | fHistClustersJetPt[i] = new TH2F(histname.Data(), histname.Data(), fNbins / 2, fMinBinPt, fMaxBinPt / 2, fNbins, fMinBinPt, fMaxBinPt); |
255 | fHistClustersJetPt[i]->GetXaxis()->SetTitle("p_{T,clus} (GeV/c)"); | |
256 | fHistClustersJetPt[i]->GetYaxis()->SetTitle("p_{T,jet} (GeV/c)"); | |
257 | fHistClustersJetPt[i]->GetZaxis()->SetTitle("counts"); | |
258 | fOutput->Add(fHistClustersJetPt[i]); | |
7030f36f | 259 | |
260 | histname = "fHistClustersPtDist_"; | |
261 | histname += i; | |
262 | fHistClustersPtDist[i] = new TH2F(histname.Data(), histname.Data(), fNbins / 2, fMinBinPt, fMaxBinPt / 2, 100, 0, 5); | |
263 | fHistClustersPtDist[i]->GetXaxis()->SetTitle("p_{T,clus} (GeV/c)"); | |
264 | fHistClustersPtDist[i]->GetYaxis()->SetTitle("d"); | |
265 | fHistClustersPtDist[i]->GetZaxis()->SetTitle("counts"); | |
266 | fOutput->Add(fHistClustersPtDist[i]); | |
e44e8726 | 267 | } |
624bef5b | 268 | |
269 | histname = "fHistJetNconstVsPt_"; | |
270 | histname += i; | |
271 | fHistJetNconstVsPt[i] = new TH3F(histname.Data(), histname.Data(), 150, bins150, fNbins, binsPt, nbinsZ, binsZ); | |
272 | fHistJetNconstVsPt[i]->GetXaxis()->SetTitle("# of constituents"); | |
273 | fHistJetNconstVsPt[i]->GetYaxis()->SetTitle("p_{T,jet} (GeV/c)"); | |
274 | fHistJetNconstVsPt[i]->GetZaxis()->SetTitle("p_{T,lead} (GeV/c)"); | |
275 | fOutput->Add(fHistJetNconstVsPt[i]); | |
e82e282c | 276 | } |
277 | ||
25283b37 | 278 | PostData(1, fOutput); // Post data for ALL output slots >0 here, to get at least an empty histogram |
25283b37 | 279 | |
9f52c61f | 280 | delete[] binsPt; |
281 | delete[] binsCorrPt; | |
282 | delete[] binsArea; | |
283 | delete[] binsEta; | |
284 | delete[] binsPhi; | |
285 | delete[] bins120; | |
2bee31e9 | 286 | } |
287 | ||
55264f20 | 288 | //________________________________________________________________________ |
6fd5039f | 289 | Bool_t AliAnalysisTaskSAJF::FillHistograms() |
25283b37 | 290 | { |
16d143bd | 291 | // Fill histograms. |
292 | ||
a487deae | 293 | if (!fJets) { |
294 | AliError(Form("%s - Jet array not provided, returning...", GetName())); | |
295 | return kFALSE; | |
296 | } | |
297 | ||
298 | if (fJets->GetEntriesFast() < 1) { // no jets in array, skipping | |
299 | fHistEvents[fCentBin]->Fill("No jets", 1); | |
300 | return kTRUE; | |
301 | } | |
25283b37 | 302 | |
ca5c29fa | 303 | static Int_t sortedJets[9999] = {-1}; |
304 | GetSortedArray(sortedJets, fJets, fRhoVal); | |
55264f20 | 305 | |
ca5c29fa | 306 | if (sortedJets[0] < 0) { // no accepted jets, skipping |
e44e8726 | 307 | fHistEvents[fCentBin]->Fill("No jets", 1); |
308 | return kTRUE; | |
fb9ac42f | 309 | } |
c554a987 | 310 | |
e44e8726 | 311 | // OK, event accepted |
11d4d636 | 312 | |
a5621834 | 313 | if (fRhoVal == 0) |
314 | fHistEvents[fCentBin]->Fill("Rho == 0", 1); | |
a487deae | 315 | else |
316 | fHistEvents[fCentBin]->Fill("OK", 1); | |
6fd5039f | 317 | |
ca5c29fa | 318 | for (Int_t i = 0; i < fNLeadingJets && i < fJets->GetEntriesFast(); i++) { |
319 | AliEmcalJet* jet = static_cast<AliEmcalJet*>(fJets->At(sortedJets[i])); | |
320 | ||
321 | if (!jet) { | |
322 | AliError(Form("Could not receive jet %d", sortedJets[i])); | |
323 | continue; | |
324 | } | |
325 | ||
326 | if (!AcceptJet(jet)) | |
327 | continue; | |
a487deae | 328 | |
5ce8ae64 | 329 | fHistLeadingJetPhiEta[fCentBin]->Fill(jet->Eta(), jet->Phi()); |
330 | fHistLeadingJetPtArea[fCentBin]->Fill(jet->Pt(), jet->Area()); | |
331 | ||
ca5c29fa | 332 | Float_t corrPt = jet->Pt() - fRhoVal * jet->Area(); |
55264f20 | 333 | |
5ce8ae64 | 334 | if (fHistLeadingJetCorrPtArea[fCentBin]) |
335 | fHistLeadingJetCorrPtArea[fCentBin]->Fill(corrPt, jet->Area()); | |
ca5c29fa | 336 | |
63fac07f | 337 | if (i==0 && fHistRhoVSleadJetPt[fCentBin]) |
ca5c29fa | 338 | fHistRhoVSleadJetPt[fCentBin]->Fill(fRhoVal, jet->Pt()); |
339 | } | |
b5ee47fb | 340 | |
624bef5b | 341 | Int_t njets = DoJetLoop(); |
342 | ||
343 | fNjetsVsCent->Fill(fCent, njets); | |
6fd5039f | 344 | |
345 | return kTRUE; | |
55264f20 | 346 | } |
347 | ||
6fd5039f | 348 | //________________________________________________________________________ |
624bef5b | 349 | Int_t AliAnalysisTaskSAJF::DoJetLoop() |
6fd5039f | 350 | { |
16d143bd | 351 | // Do the jet loop. |
352 | ||
6fd5039f | 353 | if (!fJets) |
624bef5b | 354 | return 0; |
6fd5039f | 355 | |
16d143bd | 356 | const Int_t njets = fJets->GetEntriesFast(); |
624bef5b | 357 | Int_t nAccJets = 0; |
6fd5039f | 358 | |
58285fc6 | 359 | TH1F constituents("constituents", "constituents", |
360 | fHistConstituents[0]->GetNbinsX(), fHistConstituents[0]->GetXaxis()->GetXmin(), fHistConstituents[0]->GetXaxis()->GetXmax()); | |
361 | ||
6fd5039f | 362 | for (Int_t ij = 0; ij < njets; ij++) { |
363 | ||
e44e8726 | 364 | AliEmcalJet* jet = static_cast<AliEmcalJet*>(fJets->At(ij)); |
6fd5039f | 365 | |
366 | if (!jet) { | |
367 | AliError(Form("Could not receive jet %d", ij)); | |
368 | continue; | |
369 | } | |
370 | ||
e44e8726 | 371 | if (!AcceptJet(jet)) |
6fd5039f | 372 | continue; |
373 | ||
4643d2e8 | 374 | Float_t corrPt = jet->Pt() - fRhoVal * jet->Area(); |
226f511d | 375 | |
83888eef | 376 | Float_t ptLeading = GetLeadingHadronPt(jet); |
e44e8726 | 377 | |
a487deae | 378 | fHistJetPhiEta[fCentBin]->Fill(jet->Eta(), jet->Phi(), ptLeading); |
379 | fHistJetsPtArea[fCentBin]->Fill(jet->Pt(), jet->Area(), ptLeading); | |
63fac07f | 380 | if (fHistJetsCorrPtArea[fCentBin]) |
381 | fHistJetsCorrPtArea[fCentBin]->Fill(corrPt, jet->Area(), ptLeading); | |
624bef5b | 382 | fHistJetNconstVsPt[fCentBin]->Fill(jet->GetNumberOfConstituents(), jet->Pt(), ptLeading); |
226f511d | 383 | |
63fac07f | 384 | fHistJetsNEFvsPt[fCentBin]->Fill(jet->NEF(), jet->Pt(), ptLeading); |
385 | fHistJetsCEFvsCEFPt[fCentBin]->Fill(1-jet->NEF(), (1-jet->NEF())*jet->Pt(), ptLeading); | |
a825589f | 386 | |
6e8d91c9 | 387 | if (fTracks) { |
388 | for (Int_t it = 0; it < jet->GetNumberOfTracks(); it++) { | |
389 | AliVParticle *track = jet->TrackAt(it, fTracks); | |
a825589f | 390 | if (track) { |
a487deae | 391 | fHistJetsZvsPt[fCentBin]->Fill(track->Pt() / jet->Pt(), jet->Pt(), ptLeading); |
58285fc6 | 392 | constituents.Fill(track->Pt()); |
a487deae | 393 | fHistTracksJetPt[fCentBin]->Fill(track->Pt(), jet->Pt()); |
7030f36f | 394 | Double_t dist = TMath::Sqrt((track->Eta() - jet->Eta()) * (track->Eta() - jet->Eta()) + (track->Phi() - jet->Phi()) * (track->Phi() - jet->Phi())); |
395 | fHistTracksPtDist[fCentBin]->Fill(track->Pt(), dist); | |
a825589f | 396 | } |
6e8d91c9 | 397 | } |
35789a2d | 398 | } |
a55e4f1d | 399 | |
6e8d91c9 | 400 | if (fCaloClusters) { |
401 | for (Int_t ic = 0; ic < jet->GetNumberOfClusters(); ic++) { | |
402 | AliVCluster *cluster = jet->ClusterAt(ic, fCaloClusters); | |
403 | ||
404 | if (cluster) { | |
405 | TLorentzVector nPart; | |
406 | cluster->GetMomentum(nPart, fVertex); | |
a487deae | 407 | fHistJetsZvsPt[fCentBin]->Fill(nPart.Et() / jet->Pt(), jet->Pt(), ptLeading); |
58285fc6 | 408 | constituents.Fill(nPart.Pt()); |
a487deae | 409 | fHistClustersJetPt[fCentBin]->Fill(nPart.Pt(), jet->Pt()); |
7030f36f | 410 | Double_t dist = TMath::Sqrt((nPart.Eta() - jet->Eta()) * (nPart.Eta() - jet->Eta()) + (nPart.Phi() - jet->Phi()) * (nPart.Phi() - jet->Phi())); |
411 | fHistClustersPtDist[fCentBin]->Fill(nPart.Pt(), dist); | |
6e8d91c9 | 412 | } |
55264f20 | 413 | } |
f0a0fd33 | 414 | } |
a825589f | 415 | |
58285fc6 | 416 | for (Int_t i = 1; i <= constituents.GetNbinsX(); i++) { |
624bef5b | 417 | fHistConstituents[fCentBin]->Fill(constituents.GetBinCenter(i), constituents.GetBinContent(i)); |
58285fc6 | 418 | } |
419 | ||
420 | constituents.Reset(); | |
624bef5b | 421 | nAccJets++; |
25283b37 | 422 | } //jet loop |
624bef5b | 423 | |
424 | return nAccJets; | |
55264f20 | 425 | } |
e82e282c | 426 | |
25283b37 | 427 | //________________________________________________________________________ |
00514d01 | 428 | void AliAnalysisTaskSAJF::Terminate(Option_t *) |
25283b37 | 429 | { |
430 | // Called once at the end of the analysis. | |
431 | } |