]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskSAJF.cxx
bug-fix: rotation of sub-leading jet in di-jet
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / UserTasks / AliAnalysisTaskSAJF.cxx
1 //
2 // Jet analysis task.
3 //
4 // Author: S.Aiola
5
6 #include <TClonesArray.h>
7 #include <TH2F.h>
8 #include <TH3F.h>
9 #include <THnSparse.h>
10 #include <TList.h>
11 #include <TLorentzVector.h>
12
13 #include "AliVCluster.h"
14 #include "AliVParticle.h"
15 #include "AliEmcalJet.h"
16 #include "AliRhoParameter.h"
17 #include "AliLog.h"
18
19 #include "AliAnalysisTaskSAJF.h"
20
21 ClassImp(AliAnalysisTaskSAJF)
22
23 //________________________________________________________________________
24 AliAnalysisTaskSAJF::AliAnalysisTaskSAJF() : 
25   AliAnalysisTaskEmcalJet("AliAnalysisTaskSAJF", kTRUE),
26   fHistoType(1),
27   fHistTracksJetPt(0),
28   fHistClustersJetPt(0),
29   fHistTracksPtDist(0),
30   fHistClustersPtDist(0),
31   fHistJetObservables(0),
32   fHistJetPtEtaPhi(0),
33   fHistJetPtArea(0),
34   fHistJetPtEP(0),
35   fHistJetPtNEF(0),
36   fHistJetPtZ(0),
37   fHistJetPtLeadingPartPt(0),
38   fHistJetCorrPtEtaPhi(0),
39   fHistJetCorrPtArea(0),
40   fHistJetCorrPtEP(0),
41   fHistJetCorrPtNEF(0),
42   fHistJetCorrPtZ(0),
43   fHistJetCorrPtLeadingPartPt(0),
44   fHistJetPtCorrPt(0),
45   fHistJetPtMCPt(0),
46   fHistJetMCPtCorrPt(0)
47 {
48   // Default constructor.
49
50   SetMakeGeneralHistograms(kTRUE);
51 }
52
53 //________________________________________________________________________
54 AliAnalysisTaskSAJF::AliAnalysisTaskSAJF(const char *name) : 
55   AliAnalysisTaskEmcalJet(name, kTRUE),
56   fHistoType(1),
57   fHistTracksJetPt(0),
58   fHistClustersJetPt(0),
59   fHistTracksPtDist(0),
60   fHistClustersPtDist(0),
61   fHistJetObservables(0),
62   fHistJetPtEtaPhi(0),
63   fHistJetPtArea(0),
64   fHistJetPtEP(0),
65   fHistJetPtNEF(0),
66   fHistJetPtZ(0),
67   fHistJetPtLeadingPartPt(0),
68   fHistJetCorrPtEtaPhi(0),
69   fHistJetCorrPtArea(0),
70   fHistJetCorrPtEP(0),
71   fHistJetCorrPtNEF(0),
72   fHistJetCorrPtZ(0),
73   fHistJetCorrPtLeadingPartPt(0),
74   fHistJetPtCorrPt(0),
75   fHistJetPtMCPt(0),
76   fHistJetMCPtCorrPt(0)
77 {
78   // Standard constructor.
79
80   SetMakeGeneralHistograms(kTRUE);
81 }
82
83 //________________________________________________________________________
84 void AliAnalysisTaskSAJF::AllocateTHnSparse()
85 {
86     TString title[20]= {""};
87   Int_t nbins[20]  = {0};
88   Double_t min[20] = {0.};
89   Double_t max[20] = {0.};
90   Int_t dim = 0;
91
92   if (fForceBeamType != kpp) {
93     title[dim] = "Centrality (%)";
94     nbins[dim] = 22;
95     min[dim] = -5;
96     max[dim] = 105;
97     dim++;
98     
99     title[dim] = "#phi_{jet} - #psi_{RP}";
100     nbins[dim] = 100;
101     min[dim] = 0;
102     max[dim] = TMath::Pi();
103     dim++;
104   }
105
106   title[dim] = "#eta";
107   nbins[dim] = 100;
108   min[dim] = -1;
109   max[dim] = 1;
110   dim++;
111
112   title[dim] = "#phi_{jet} (rad)";
113   nbins[dim] = 201;
114   min[dim] = 0;
115   max[dim] = 2*TMath::Pi()*nbins[dim]/(nbins[dim]-1);
116   dim++;
117
118   title[dim] = "p_{T} (GeV/c)";
119   nbins[dim] = fNbins;
120   min[dim] = fMinBinPt;
121   max[dim] = fMaxBinPt;
122   dim++;
123
124   if (fIsEmbedded) {
125     title[dim] = "p_{T}^{MC} (GeV/c)";
126     nbins[dim] = fNbins;
127     min[dim] = fMinBinPt;
128     max[dim] = fMaxBinPt;
129     dim++;
130   }
131
132   if (!GetRhoName().IsNull()) {
133     title[dim] = "p_{T}^{corr} (GeV/c)";
134     nbins[dim] = fNbins*2;
135     min[dim] = -fMaxBinPt;
136     max[dim] = fMaxBinPt;
137     dim++;
138   }
139
140   title[dim] = "A_{jet}";
141   nbins[dim] = 150;
142   min[dim] = 0;
143   max[dim] = 1.5;
144   dim++;
145
146   title[dim] = "NEF";
147   nbins[dim] = 102;
148   min[dim] = 0;
149   max[dim] = 1.02;
150   dim++;
151
152   title[dim] = "Z";
153   nbins[dim] = 102;
154   min[dim] = 0;
155   max[dim] = 1.02;
156   dim++;
157
158   title[dim] = "No. of constituents";
159   nbins[dim] = 250;
160   min[dim] = -0.5;
161   max[dim] = 249.5;
162   dim++;
163
164   title[dim] = "p_{T,particle}^{leading} (GeV/c)";
165   nbins[dim] = 120;
166   min[dim] = 0;
167   max[dim] = 120;
168   dim++;
169
170   fHistJetObservables = new THnSparseD("fHistJetObservables","fHistJetObservables",dim,nbins,min,max);
171   fOutput->Add(fHistJetObservables);
172   for (Int_t i = 0; i < dim; i++)
173     fHistJetObservables->GetAxis(i)->SetTitle(title[i]);
174 }
175
176 //________________________________________________________________________
177 void AliAnalysisTaskSAJF::AllocateTHX()
178 {
179   fHistJetPtEtaPhi = new TH3*[fNcentBins];
180   fHistJetPtArea = new TH2*[fNcentBins];
181   fHistJetPtEP = new TH2*[fNcentBins];
182   fHistJetPtNEF = new TH2*[fNcentBins];
183   fHistJetPtZ = new TH2*[fNcentBins];
184   fHistJetPtLeadingPartPt = new TH2*[fNcentBins];
185   fHistJetCorrPtEtaPhi = new TH3*[fNcentBins];
186   fHistJetCorrPtArea = new TH2*[fNcentBins];
187   fHistJetCorrPtEP = new TH2*[fNcentBins];
188   fHistJetCorrPtNEF = new TH2*[fNcentBins];
189   fHistJetCorrPtZ = new TH2*[fNcentBins];
190   fHistJetCorrPtLeadingPartPt = new TH2*[fNcentBins];
191   fHistJetPtCorrPt = new TH2*[fNcentBins];
192   fHistJetPtMCPt = new TH2*[fNcentBins];
193   fHistJetMCPtCorrPt = new TH2*[fNcentBins];
194
195   for (Int_t i = 0; i < fNcentBins; i++) {
196     TString histname;
197
198     histname = "fHistJetPtEtaPhi_";
199     histname += i;
200     fHistJetPtEtaPhi[i] = new TH3F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt, 20, -1, 1, 41, 0, 2*TMath::Pi()*41/40);
201     fHistJetPtEtaPhi[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
202     fHistJetPtEtaPhi[i]->GetYaxis()->SetTitle("#eta");
203     fHistJetPtEtaPhi[i]->GetZaxis()->SetTitle("#phi_{jet} (rad)");
204     fOutput->Add(fHistJetPtEtaPhi[i]);
205       
206     histname = "fHistJetPtArea_";
207     histname += i;
208     fHistJetPtArea[i] = new TH2F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt, 150, 0, 1.5);
209     fHistJetPtArea[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
210     fHistJetPtArea[i]->GetYaxis()->SetTitle("A_{jet}");
211     fHistJetPtArea[i]->GetZaxis()->SetTitle("counts");
212     fOutput->Add(fHistJetPtArea[i]);
213
214     histname = "fHistJetPtEP_";
215     histname += i;
216     fHistJetPtEP[i] = new TH2F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt, 100, 0, TMath::Pi());
217     fHistJetPtEP[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
218     fHistJetPtEP[i]->GetYaxis()->SetTitle("#phi_{jet} - #psi_{RP}");
219     fHistJetPtEP[i]->GetZaxis()->SetTitle("counts");
220     fOutput->Add(fHistJetPtEP[i]);
221
222     histname = "fHistJetPtNEF_";
223     histname += i;
224     fHistJetPtNEF[i] = new TH2F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt, 102, 0, 1.02);
225     fHistJetPtNEF[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
226     fHistJetPtNEF[i]->GetYaxis()->SetTitle("NEF");
227     fHistJetPtNEF[i]->GetZaxis()->SetTitle("counts");
228     fOutput->Add(fHistJetPtNEF[i]);
229
230     histname = "fHistJetPtZ_";
231     histname += i;
232     fHistJetPtZ[i] = new TH2F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt, 102, 0, 1.02);
233     fHistJetPtZ[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
234     fHistJetPtZ[i]->GetYaxis()->SetTitle("z");
235     fHistJetPtZ[i]->GetZaxis()->SetTitle("counts");
236     fOutput->Add(fHistJetPtZ[i]);
237
238     histname = "fHistJetPtLeadingPartPt_";
239     histname += i;
240     fHistJetPtLeadingPartPt[i] = new TH2F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt, 120, 0, 120);
241     fHistJetPtLeadingPartPt[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
242     fHistJetPtLeadingPartPt[i]->GetYaxis()->SetTitle("p_{T,particle}^{leading} (GeV/c)");
243     fHistJetPtLeadingPartPt[i]->GetZaxis()->SetTitle("counts");
244     fOutput->Add(fHistJetPtLeadingPartPt[i]);
245
246     if (!GetRhoName().IsNull()) {
247       histname = "fHistJetCorrPtEtaPhi_";
248       histname += i;
249       fHistJetCorrPtEtaPhi[i] = new TH3F(histname.Data(), histname.Data(), fNbins*2, -fMaxBinPt, fMaxBinPt, 20, -1, 1, 41, 0, 2*TMath::Pi()*201/200);
250       fHistJetCorrPtEtaPhi[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
251       fHistJetCorrPtEtaPhi[i]->GetYaxis()->SetTitle("#eta");
252       fHistJetCorrPtEtaPhi[i]->GetZaxis()->SetTitle("#phi_{jet} (rad)");
253       fOutput->Add(fHistJetCorrPtEtaPhi[i]);
254       
255       histname = "fHistJetCorrPtArea_";
256       histname += i;
257       fHistJetCorrPtArea[i] = new TH2F(histname.Data(), histname.Data(), fNbins*2, -fMaxBinPt, fMaxBinPt, 150, 0, 1.5);
258       fHistJetCorrPtArea[i]->GetXaxis()->SetTitle("p_{T}^{corr} (GeV/c)");
259       fHistJetCorrPtArea[i]->GetYaxis()->SetTitle("A_{jet}");
260       fHistJetCorrPtArea[i]->GetZaxis()->SetTitle("counts");
261       fOutput->Add(fHistJetCorrPtArea[i]);
262
263       histname = "fHistJetCorrPtEP_";
264       histname += i;
265       fHistJetCorrPtEP[i] = new TH2F(histname.Data(), histname.Data(), fNbins*2, -fMaxBinPt, fMaxBinPt, 100, 0, TMath::Pi());
266       fHistJetCorrPtEP[i]->GetXaxis()->SetTitle("p_{T}^{corr} (GeV/c)");
267       fHistJetCorrPtEP[i]->GetYaxis()->SetTitle("#phi_{jet} - #psi_{RP}");
268       fHistJetCorrPtEP[i]->GetZaxis()->SetTitle("counts");
269       fOutput->Add(fHistJetCorrPtEP[i]);
270
271       histname = "fHistJetCorrPtNEF_";
272       histname += i;
273       fHistJetCorrPtNEF[i] = new TH2F(histname.Data(), histname.Data(), fNbins*2, -fMaxBinPt, fMaxBinPt, 102, 0, 1.02);
274       fHistJetCorrPtNEF[i]->GetXaxis()->SetTitle("p_{T}^{corr} (GeV/c)");
275       fHistJetCorrPtNEF[i]->GetYaxis()->SetTitle("NEF");
276       fHistJetCorrPtNEF[i]->GetZaxis()->SetTitle("counts");
277       fOutput->Add(fHistJetCorrPtNEF[i]);
278
279       histname = "fHistJetCorrPtZ_";
280       histname += i;
281       fHistJetCorrPtZ[i] = new TH2F(histname.Data(), histname.Data(), fNbins*2, -fMaxBinPt, fMaxBinPt, 102, 0, 1.02);
282       fHistJetCorrPtZ[i]->GetXaxis()->SetTitle("p_{T}^{corr} (GeV/c)");
283       fHistJetCorrPtZ[i]->GetYaxis()->SetTitle("z");
284       fHistJetCorrPtZ[i]->GetZaxis()->SetTitle("counts");
285       fOutput->Add(fHistJetCorrPtZ[i]);
286
287       histname = "fHistJetCorrPtLeadingPartPt_";
288       histname += i;
289       fHistJetCorrPtLeadingPartPt[i] = new TH2F(histname.Data(), histname.Data(), fNbins*2, -fMaxBinPt, fMaxBinPt, 120, 0, 120);
290       fHistJetCorrPtLeadingPartPt[i]->GetXaxis()->SetTitle("p_{T}^{corr} (GeV/c)");
291       fHistJetCorrPtLeadingPartPt[i]->GetYaxis()->SetTitle("p_{T,particle}^{leading} (GeV/c)");
292       fHistJetCorrPtLeadingPartPt[i]->GetZaxis()->SetTitle("counts");
293       fOutput->Add(fHistJetCorrPtLeadingPartPt[i]);
294
295       histname = "fHistJetPtCorrPt_";
296       histname += i;
297       fHistJetPtCorrPt[i] = new TH2F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt, fNbins*2, -fMaxBinPt, fMaxBinPt);
298       fHistJetPtCorrPt[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
299       fHistJetPtCorrPt[i]->GetYaxis()->SetTitle("p_{T}^{corr} (GeV/c)");
300       fHistJetPtCorrPt[i]->GetZaxis()->SetTitle("counts");
301       fOutput->Add(fHistJetPtCorrPt[i]);
302
303       if (fIsEmbedded) {
304         histname = "fHistJetMCPtCorrPt_";
305         histname += i;
306         fHistJetMCPtCorrPt[i] = new TH2F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt, fNbins*2, -fMaxBinPt, fMaxBinPt);
307         fHistJetMCPtCorrPt[i]->GetXaxis()->SetTitle("p_{T}^{MC} (GeV/c)");
308         fHistJetMCPtCorrPt[i]->GetYaxis()->SetTitle("p_{T}^{corr} (GeV/c)");
309         fHistJetMCPtCorrPt[i]->GetZaxis()->SetTitle("counts");
310         fOutput->Add(fHistJetMCPtCorrPt[i]);
311       }
312     }
313
314     if (fIsEmbedded) {
315       histname = "fHistJetPtMCPt_";
316       histname += i;
317       fHistJetPtMCPt[i] = new TH2F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt, fNbins, fMinBinPt, fMaxBinPt);
318       fHistJetPtMCPt[i]->GetXaxis()->SetTitle("p_{T} (GeV/c)");
319       fHistJetPtMCPt[i]->GetYaxis()->SetTitle("p_{T}^{MC} (GeV/c)");
320       fHistJetPtMCPt[i]->GetZaxis()->SetTitle("counts");
321       fOutput->Add(fHistJetPtMCPt[i]);
322     }
323   }
324 }
325
326 //________________________________________________________________________
327 void AliAnalysisTaskSAJF::UserCreateOutputObjects()
328 {
329   // Create user output.
330
331   AliAnalysisTaskEmcalJet::UserCreateOutputObjects();
332
333   if (fHistoType == 0) 
334     AllocateTHX();
335   else
336     AllocateTHnSparse();
337
338   fHistTracksJetPt = new TH2*[fNcentBins];
339   fHistClustersJetPt = new TH2*[fNcentBins];
340   fHistTracksPtDist = new TH2*[fNcentBins];
341   fHistClustersPtDist = new TH2*[fNcentBins];
342
343   for (Int_t i = 0; i < fNcentBins; i++) {
344     TString histname;
345
346     if (fParticleCollArray.GetEntriesFast() > 0) {
347       histname = "fHistTracksJetPt_";
348       histname += i;
349       fHistTracksJetPt[i] = new TH2F(histname.Data(), histname.Data(), fNbins / 2, fMinBinPt, fMaxBinPt / 2, fNbins, fMinBinPt, fMaxBinPt);
350       fHistTracksJetPt[i]->GetXaxis()->SetTitle("p_{T,track} (GeV/c)");
351       fHistTracksJetPt[i]->GetYaxis()->SetTitle("p_{T,jet} (GeV/c)");
352       fHistTracksJetPt[i]->GetZaxis()->SetTitle("counts");
353       fOutput->Add(fHistTracksJetPt[i]);
354       
355       histname = "fHistTracksPtDist_";
356       histname += i;
357       fHistTracksPtDist[i] = new TH2F(histname.Data(), histname.Data(), fNbins / 2, fMinBinPt, fMaxBinPt / 2, 100, 0, 5);
358       fHistTracksPtDist[i]->GetXaxis()->SetTitle("p_{T,track} (GeV/c)");
359       fHistTracksPtDist[i]->GetYaxis()->SetTitle("d");
360       fHistTracksPtDist[i]->GetZaxis()->SetTitle("counts");
361       fOutput->Add(fHistTracksPtDist[i]);
362     }
363
364     if (fClusterCollArray.GetEntriesFast() > 0) {
365       histname = "fHistClustersJetPt_";
366       histname += i;
367       fHistClustersJetPt[i] = new TH2F(histname.Data(), histname.Data(), fNbins / 2, fMinBinPt, fMaxBinPt / 2, fNbins, fMinBinPt, fMaxBinPt);
368       fHistClustersJetPt[i]->GetXaxis()->SetTitle("p_{T,clus} (GeV/c)");
369       fHistClustersJetPt[i]->GetYaxis()->SetTitle("p_{T,jet} (GeV/c)");
370       fHistClustersJetPt[i]->GetZaxis()->SetTitle("counts");
371       fOutput->Add(fHistClustersJetPt[i]);
372
373       histname = "fHistClustersPtDist_";
374       histname += i;
375       fHistClustersPtDist[i] = new TH2F(histname.Data(), histname.Data(), fNbins / 2, fMinBinPt, fMaxBinPt / 2, 100, 0, 5);
376       fHistClustersPtDist[i]->GetXaxis()->SetTitle("p_{T,clus} (GeV/c)");
377       fHistClustersPtDist[i]->GetYaxis()->SetTitle("d");
378       fHistClustersPtDist[i]->GetZaxis()->SetTitle("counts");
379       fOutput->Add(fHistClustersPtDist[i]);
380     }
381   }
382
383   PostData(1, fOutput); // Post data for ALL output slots >0 here, to get at least an empty histogram
384
385 }
386
387 //________________________________________________________________________
388 Bool_t AliAnalysisTaskSAJF::FillHistograms()
389 {
390   // Fill histograms.
391
392   if (!fJets) {
393     AliError(Form("%s - Jet array not provided, returning...", GetName()));
394     return kFALSE;
395   }
396
397   for (Int_t ij = 0; ij < fJets->GetEntriesFast(); ij++) {
398
399     AliEmcalJet* jet = static_cast<AliEmcalJet*>(fJets->At(ij));
400
401     if (!jet) {
402       AliError(Form("Could not receive jet %d", ij));
403       continue;
404     }
405
406     if (!AcceptJet(jet))
407       continue;
408
409     Float_t ptLeading = GetLeadingHadronPt(jet);
410     Float_t corrPt = jet->Pt() - fRhoVal * jet->Area();
411
412     // Fill THnSparse
413     Double_t ep = jet->Phi() - fEPV0;
414     while (ep < 0) ep += TMath::Pi();
415     while (ep >= TMath::Pi()) ep -= TMath::Pi();
416
417     FillJetHisto(fCent, ep, jet->Eta(), jet->Phi(), jet->Pt(), jet->MCPt(), corrPt, jet->Area(), 
418                  jet->NEF(), ptLeading/jet->Pt(), jet->GetNumberOfConstituents(), ptLeading);
419
420     if (fTracks) {
421       for (Int_t it = 0; it < jet->GetNumberOfTracks(); it++) {
422         AliVParticle *track = jet->TrackAt(it, fTracks);
423         if (track) {
424           fHistTracksJetPt[fCentBin]->Fill(track->Pt(), jet->Pt());
425           Double_t dist = TMath::Sqrt((track->Eta() - jet->Eta()) * (track->Eta() - jet->Eta()) + (track->Phi() - jet->Phi()) * (track->Phi() - jet->Phi()));
426           fHistTracksPtDist[fCentBin]->Fill(track->Pt(), dist);
427         }
428       }
429     }
430
431     if (fCaloClusters) {
432       for (Int_t ic = 0; ic < jet->GetNumberOfClusters(); ic++) {
433         AliVCluster *cluster = jet->ClusterAt(ic, fCaloClusters);
434         
435         if (cluster) {
436           TLorentzVector nPart;
437           cluster->GetMomentum(nPart, fVertex);
438
439           fHistClustersJetPt[fCentBin]->Fill(nPart.Pt(), jet->Pt());
440           Double_t dist = TMath::Sqrt((nPart.Eta() - jet->Eta()) * (nPart.Eta() - jet->Eta()) + (nPart.Phi() - jet->Phi()) * (nPart.Phi() - jet->Phi()));
441           fHistClustersPtDist[fCentBin]->Fill(nPart.Pt(), dist);
442         }
443       }
444     }
445   } //jet loop 
446
447   return kTRUE;
448 }
449
450 //________________________________________________________________________
451 void AliAnalysisTaskSAJF::FillJetHisto(Double_t cent, Double_t ep, Double_t eta, Double_t phi, Double_t pt, Double_t MCpt, Double_t corrpt, Double_t area, 
452                                        Double_t NEF, Double_t z, Int_t n, Double_t leadingpt)
453 {
454   if (fHistoType == 0) {
455     fHistJetPtEtaPhi[fCentBin]->Fill(pt,eta,phi);
456     fHistJetPtArea[fCentBin]->Fill(pt,area);
457     fHistJetPtEP[fCentBin]->Fill(pt,ep);
458     fHistJetPtNEF[fCentBin]->Fill(pt,NEF);
459     fHistJetPtZ[fCentBin]->Fill(pt,z);
460     fHistJetPtLeadingPartPt[fCentBin]->Fill(pt,leadingpt);
461     if (fHistJetCorrPtEtaPhi[fCentBin]) {
462       fHistJetCorrPtEtaPhi[fCentBin]->Fill(corrpt,eta,phi);
463       fHistJetCorrPtArea[fCentBin]->Fill(corrpt,area);
464       fHistJetCorrPtEP[fCentBin]->Fill(corrpt,ep);
465       fHistJetCorrPtNEF[fCentBin]->Fill(corrpt,NEF);
466       fHistJetCorrPtZ[fCentBin]->Fill(corrpt,z);
467       fHistJetCorrPtLeadingPartPt[fCentBin]->Fill(corrpt,leadingpt);
468       fHistJetPtCorrPt[fCentBin]->Fill(pt,corrpt);
469       if (fIsEmbedded)
470         fHistJetMCPtCorrPt[fCentBin]->Fill(MCpt,corrpt);
471     }
472     if (fIsEmbedded)
473       fHistJetPtMCPt[fCentBin]->Fill(pt,MCpt);
474   }
475   else {
476  
477     Double_t contents[20]={0};
478
479     for (Int_t i = 0; i < fHistJetObservables->GetNdimensions(); i++) {
480       TString title(fHistJetObservables->GetAxis(i)->GetTitle());
481       if (title=="Centrality (%)")
482         contents[i] = cent;
483       else if (title=="#phi_{jet} - #psi_{RP}")
484         contents[i] = ep;
485       else if (title=="#eta")
486         contents[i] = eta;
487       else if (title=="#phi_{jet} (rad)")
488         contents[i] = phi;
489       else if (title=="p_{T} (GeV/c)")
490         contents[i] = pt;
491       else if (title=="p_{T}^{MC} (GeV/c)")
492         contents[i] = MCpt;
493       else if (title=="p_{T}^{corr} (GeV/c)")
494         contents[i] = corrpt;
495       else if (title=="A_{jet}")
496         contents[i] = area;
497       else if (title=="NEF")
498         contents[i] = NEF;
499       else if (title=="Z")
500         contents[i] = z;
501       else if (title=="No. of constituents")
502         contents[i] = n;
503       else if (title=="p_{T,particle}^{leading} (GeV/c)")
504         contents[i] = leadingpt;
505       else 
506         AliWarning(Form("Unable to fill dimension %s!",title.Data()));
507     }
508
509     fHistJetObservables->Fill(contents);
510   }
511 }