]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetSpectra.cxx
fix warning for uninitialized fLocalRho
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / UserTasks / AliAnalysisTaskEmcalJetSpectra.cxx
1 // $Id$
2 //
3 // Jet spectrum task.
4 //
5 // Author: R.Reed, M.Connors
6
7 #include "AliAnalysisTaskEmcalJetSpectra.h"
8
9 #include <TCanvas.h>
10 #include <TChain.h>
11 #include <TClonesArray.h>
12 #include <TH1F.h>
13 #include <TH2F.h>
14 #include <THnSparse.h>
15 #include <TList.h>
16 #include <TLorentzVector.h>
17 #include <TParameter.h>
18 #include <TParticle.h>
19 #include <TTree.h>
20 #include <TVector3.h>
21
22 #include "AliAODEvent.h"
23 #include "AliAnalysisManager.h"
24 #include "AliAnalysisTask.h"
25 #include "AliCentrality.h"
26 #include "AliESDEvent.h"
27 #include "AliESDInputHandler.h"
28 #include "AliEmcalJet.h"
29 #include "AliVCluster.h"
30 #include "AliRhoParameter.h"
31 #include "AliEmcalParticle.h"
32 #include "AliLocalRhoParameter.h"
33 #include "AliAnalysisTaskLocalRho.h"
34
35 ClassImp(AliAnalysisTaskEmcalJetSpectra)
36
37 //________________________________________________________________________
38 AliAnalysisTaskEmcalJetSpectra::AliAnalysisTaskEmcalJetSpectra() : 
39   AliAnalysisTaskEmcalJet("spectra",kFALSE), 
40   fLocalRhoVal(0),
41   fHistRhovsCent(0),
42   fHistNjetvsCent(0),
43   fHistGLvsLOCrho(0),
44   fHistRhovsdEPLOC(0), fHistRhovsdEPGL(0),
45   fHistJetPtvsdEPLOC(0), fHistJetPtvsdEPGL(0),
46   fHistRhovsEPLOC(0), fHistRhovsEPGL(0),
47   fHistJetPtvsEPLOC(0), fHistJetPtvsEPGL(0),
48   fHistCorJetPt(0), fHistCorJetPtGL(0)
49 {
50   // Default constructor.
51   for (Int_t i = 0;i<6;++i){
52     fHistJetPtvsTrackPt[i]      = 0;
53     fHistRawJetPtvsTrackPt[i]   = 0;
54     fHistTrackPt[i]             = 0;
55     fHistEP0[i]                 = 0;
56     fHistEP0A[i]                = 0;
57     fHistEP0C[i]                = 0;
58     fHistEPAvsC[i]              = 0;
59     fHistJetPtvsdEP[i]          = 0;
60     fHistJetPtvsdEPBias[i]      = 0;
61     fHistJetPtvsEP[i]           = 0;
62     fHistJetPtvsEPBias[i]       = 0;
63     fHistRhovsEP[i]             = 0;
64     fHistCorJetPtfromLocalRho[i]= 0;
65     fHistCorJetPtfromGlobalRho[i] = 0;
66
67     fHistCorJetPtfromLocalRhoIN[i]  = 0;
68     fHistCorJetPtfromLocalRhoOUT[i] = 0;
69     fHistCorJetPtfromGlobalRhoIN[i] = 0;
70     fHistCorJetPtfromGlobalRhoOUT[i]= 0;
71     fHistRhodEPcentLOC[i]       = 0;
72     fHistRhodEPcentGL[i]        = 0;
73     fHistCorJetPtdEPcentLOC[i]  = 0;
74     fHistCorJetPtdEPcentGL[i]   = 0;
75     fHistRhoEPcentLOC[i]        = 0;
76     fHistRhoEPcentGL[i]         = 0;
77     fHistCorJetPtEPcentLOC[i]   = 0;
78     fHistCorJetPtEPcentGL[i]    = 0;
79
80   }
81
82   SetMakeGeneralHistograms(kTRUE);
83     
84 }
85
86 //________________________________________________________________________
87 AliAnalysisTaskEmcalJetSpectra::AliAnalysisTaskEmcalJetSpectra(const char *name) :
88   AliAnalysisTaskEmcalJet(name,kTRUE),
89   fLocalRhoVal(0),
90   fHistRhovsCent(0),
91   fHistNjetvsCent(0),
92   fHistGLvsLOCrho(0),
93   fHistRhovsdEPLOC(0), fHistRhovsdEPGL(0),
94   fHistJetPtvsdEPLOC(0), fHistJetPtvsdEPGL(0),
95   fHistRhovsEPLOC(0), fHistRhovsEPGL(0),
96   fHistJetPtvsEPLOC(0), fHistJetPtvsEPGL(0),
97   fHistCorJetPt(0), fHistCorJetPtGL(0)
98  { 
99    for (Int_t i = 0;i<6;++i){
100     fHistJetPtvsTrackPt[i]      = 0;
101     fHistRawJetPtvsTrackPt[i]   = 0;
102     fHistTrackPt[i]             = 0;
103     fHistEP0[i]                 = 0;
104     fHistEP0A[i]                = 0;
105     fHistEP0C[i]                = 0;
106     fHistEPAvsC[i]              = 0;
107     fHistJetPtvsdEP[i]          = 0;
108     fHistJetPtvsdEPBias[i]      = 0;
109     fHistJetPtvsEP[i]           = 0;
110     fHistJetPtvsEPBias[i]       = 0;
111     fHistRhovsEP[i]             = 0;
112     fHistCorJetPtfromLocalRho[i]= 0;
113     fHistCorJetPtfromGlobalRho[i] = 0;
114
115     fHistCorJetPtfromLocalRhoIN[i]  = 0;
116     fHistCorJetPtfromLocalRhoOUT[i] = 0;
117     fHistCorJetPtfromGlobalRhoIN[i] = 0;
118     fHistCorJetPtfromGlobalRhoOUT[i]= 0;
119     fHistRhodEPcentLOC[i]       = 0;
120     fHistRhodEPcentGL[i]        = 0;
121     fHistCorJetPtdEPcentLOC[i]  = 0;
122     fHistCorJetPtdEPcentGL[i]   = 0;
123     fHistRhoEPcentLOC[i]        = 0;
124     fHistRhoEPcentGL[i]         = 0;
125     fHistCorJetPtEPcentLOC[i]   = 0;
126     fHistCorJetPtEPcentGL[i]    = 0;
127
128    }
129   
130    SetMakeGeneralHistograms(kTRUE);
131  }
132
133 //________________________________________________________________________
134 void AliAnalysisTaskEmcalJetSpectra::UserCreateOutputObjects()
135 {
136
137   if (! fCreateHisto) return;
138
139   AliAnalysisTaskEmcalJet::UserCreateOutputObjects();
140
141   fHistRhovsCent             = new TH2F("RhovsCent",              "RhovsCent",             100, 0.0, 100.0, 500, 0, 500);
142   fHistNjetvsCent            = new TH2F("NjetvsCent",             "NjetvsCent",            100, 0.0, 100.0, 100, 0, 100);
143
144   fHistGLvsLOCrho            = new TH2F("GLvsLOCrho", "GLvsLOCrho", 400, 0.0, 400.0, 400, 0.0, 400.0);
145
146   fHistRhovsdEPLOC           = new TH2F("RhovsdEPLOC", "RhovsdEPLOC",400,0,400, 144,-1*TMath::Pi(),1*TMath::Pi());
147   fHistRhovsdEPGL            = new TH2F("RhovsdEPGL", "RhovsdEPGL",400,0,400, 144,-1*TMath::Pi(),1*TMath::Pi());
148   fHistJetPtvsdEPLOC         = new TH2F("JetPtvsdEPLOC", "JetPtvsdEPLOC", 500, -250, 250, 144,-1*TMath::Pi(),1*TMath::Pi());
149   fHistJetPtvsdEPGL          = new TH2F("JetPtvsdEPGL", "JetPtvsdEPGL", 500, -250, 250, 144,-1*TMath::Pi(),1*TMath::Pi()); 
150   fHistRhovsEPLOC            = new TH2F("RhovsEPLOC", "RhovsEPLOC",400,0,400, 144,-1*TMath::Pi(),1*TMath::Pi());
151   fHistRhovsEPGL             = new TH2F("RhovsEPGL", "RhovsEPGL",400,0,400, 144,-1*TMath::Pi(),1*TMath::Pi());
152   fHistJetPtvsEPLOC          = new TH2F("JetPtvsEPLOC", "JetPtvsEPLOC", 500, -250, 250, 144,-1*TMath::Pi(),1*TMath::Pi());
153   fHistJetPtvsEPGL           = new TH2F("JetPtvsEPGL", "JetPtvsEPGL", 500, -250, 250, 144,-1*TMath::Pi(),1*TMath::Pi());
154
155   fHistCorJetPtGL            = new TH1F("NjetvsCorrJetPtGL", "NjetvsCorrJetPtGL", 500, -250, 250);
156   fHistCorJetPt              = new TH1F("NjetvsCorrJetPt", "NjetvsCorrJetPt", 500, -250, 250);
157
158   TString name;
159   TString title;
160   for (Int_t i = 0;i<6;++i){
161     name = TString(Form("JetPtvsTrackPt_%i",i));
162     title = TString(Form("Jet pT vs Leading Track pT cent bin %i",i));
163     fHistJetPtvsTrackPt[i] = new TH2F(name,title,1000,-500,500,100,0,100);
164     fOutput->Add(fHistJetPtvsTrackPt[i]);
165     name = TString(Form("RawJetPtvsTrackPt_%i",i));
166     title = TString(Form("Raw Jet pT vs Leading Track pT cent bin %i",i));
167     fHistRawJetPtvsTrackPt[i] = new TH2F(name,title,1000,-500,500,100,0,100);
168     fOutput->Add(fHistRawJetPtvsTrackPt[i]);
169     name = TString(Form("TrackPt_%i",i));
170     title = TString(Form("Track pT cent bin %i",i));
171     fHistTrackPt[i] = new TH1F(name,title,1000,0,200);
172     fOutput->Add(fHistTrackPt[i]);
173    
174     name = TString(Form("EP0_%i",i));
175     title = TString(Form("EP VZero cent bin %i",i));
176     fHistEP0[i] = new TH1F(name,title,100,-TMath::Pi(),TMath::Pi());
177     fOutput->Add(fHistEP0[i]);
178     name = TString(Form("EP0A_%i",i));
179     title = TString(Form("EP VZero cent bin %i",i));
180     fHistEP0A[i] = new TH1F(name,title,100,-TMath::Pi(),TMath::Pi());
181     fOutput->Add(fHistEP0A[i]);
182     name = TString(Form("EP0C_%i",i));
183     title = TString(Form("EP VZero cent bin %i",i));
184     fHistEP0C[i] = new TH1F(name,title,100,-TMath::Pi(),TMath::Pi());
185     fOutput->Add(fHistEP0C[i]);
186     name = TString(Form("EPAvsC_%i",i));
187     title = TString(Form("EP VZero cent bin %i",i));
188     fHistEPAvsC[i] = new TH2F(name,title,100,-TMath::Pi(),TMath::Pi(),100,-TMath::Pi(),TMath::Pi());
189     fOutput->Add(fHistEPAvsC[i]);
190     name = TString(Form("JetPtvsdEP_%i",i));
191     title = TString(Form("Jet pt vs dEP cent bin %i",i));
192     fHistJetPtvsdEP[i] = new TH2F(name,title,1000,-500,500,400,-2*TMath::Pi(),2*TMath::Pi());
193     fOutput->Add(fHistJetPtvsdEP[i]);
194     name = TString(Form("JetPtvsdEPBias_%i",i));
195     title = TString(Form("Bias Jet pt vs dEP cent bin %i",i));
196     fHistJetPtvsdEPBias[i] = new TH2F(name,title,1000,-500,500,400,-2*TMath::Pi(),2*TMath::Pi());
197     fOutput->Add(fHistJetPtvsdEPBias[i]);
198     name = TString(Form("JetPtvsEP_%i",i));
199     title = TString(Form("Jet pt vs EP cent bin %i",i));
200     fHistJetPtvsEP[i] = new TH2F(name,title,1000,-500,500,400,-2*TMath::Pi(),2*TMath::Pi());
201     fOutput->Add(fHistJetPtvsEP[i]);
202     name = TString(Form("JetPtvsEPBias_%i",i));
203     title = TString(Form("Bias Jet pt vs EP cent bin %i",i));
204     fHistJetPtvsEPBias[i] = new TH2F(name,title,1000,-500,500,400,-2*TMath::Pi(),2*TMath::Pi());
205     fOutput->Add(fHistJetPtvsEPBias[i]);
206     name = TString(Form("RhovsEP_%i",i));
207     title = TString(Form("Rho vs EP cent bin %i",i));
208     fHistRhovsEP[i] = new TH2F(name,title,500,0,500,400,-2*TMath::Pi(),2*TMath::Pi());
209     fOutput->Add(fHistRhovsEP[i]);
210       
211       name = TString(Form("NjetvsCorrJetPtfromLocalRho_%i",i));
212       title = TString(Form("Njets vs Corrected jet pT from Local Rho cent bin %i",i));
213       fHistCorJetPtfromLocalRho[i] = new TH1F(name,title, 500, -250,250);
214       fOutput->Add(fHistCorJetPtfromLocalRho[i]);
215   
216       name = TString(Form("NjetvsCorrJetPtfromGlobalRho_%i",i));
217       title = TString(Form("Njets vs Corrected jet pT from Global Rho cent bin %i",i));
218       fHistCorJetPtfromGlobalRho[i] = new TH1F(name,title, 500, -250,250);
219       fOutput->Add(fHistCorJetPtfromGlobalRho[i]);
220
221       name = TString(Form("NjetvsCorrJetPtfromGlobalRhoIN_%i",i));
222       title = TString(Form("Njets vs Corrected jet pT from Global Rho IN PLANE cent bin %i",i));
223       fHistCorJetPtfromGlobalRhoIN[i] = new TH1F(name,title, 500, -250,250);
224       fOutput->Add(fHistCorJetPtfromGlobalRhoIN[i]);
225
226       name = TString(Form("NjetvsCorrJetPtfromGlobalRhoOUT_%i",i));
227       title = TString(Form("Njets vs Corrected jet pT from Global Rho OUT PLANE cent bin %i",i));
228       fHistCorJetPtfromGlobalRhoOUT[i] = new TH1F(name,title, 500, -250, 250);
229       fOutput->Add(fHistCorJetPtfromGlobalRhoOUT[i]);
230
231       name = TString(Form("RhovsdEPcentGLOBAL_%i",i));
232       title = TString(Form("Rho vs delta Event Plane angle for Global Rho cent bin %i",i));
233       fHistRhodEPcentGL[i] = new TH2F(name,title,400,0,400, 144,-1*TMath::Pi(),1*TMath::Pi());
234       fOutput->Add(fHistRhodEPcentGL[i]);
235
236       name = TString(Form("JePtvsdEPcentGLOBAL_%i",i));
237       title = TString(Form("Jet Pt vs delta Event Plane angle for Global Rho cent bin %i",i));
238       fHistCorJetPtdEPcentGL[i] = new TH2F(name,title, 500, -250, 250, 144,-1*TMath::Pi(),1*TMath::Pi());
239       fOutput->Add(fHistCorJetPtdEPcentGL[i]);
240
241     name = TString(Form("NjetvsCorrJetPtfromLocalRhoIN_%i",i));
242     title = TString(Form("Njets vs Corrected jet pT from Local Rho IN PLANE cent bin %i",i));
243     fHistCorJetPtfromLocalRhoIN[i] = new TH1F(name,title, 500, -250, 250);
244     fOutput->Add(fHistCorJetPtfromLocalRhoIN[i]);
245
246     name = TString(Form("NjetvsCorrJetPtfromLocalRhoOUT_%i",i));
247     title = TString(Form("Njets vs Corrected jet pT from Local Rho OUT PLANE cent bin %i",i));
248     fHistCorJetPtfromLocalRhoOUT[i] = new TH1F(name,title, 500, -250, 250);
249     fOutput->Add(fHistCorJetPtfromLocalRhoOUT[i]);
250
251     name = TString(Form("RhovsdEPcentLOCAL_%i",i));
252     title = TString(Form("Rho vs delta Event Plane angle for Local Rho cent bin %i",i));
253     fHistRhodEPcentLOC[i] = new TH2F(name,title,400,0,400, 144,-1*TMath::Pi(),1*TMath::Pi());
254     fOutput->Add(fHistRhodEPcentLOC[i]);
255
256     name = TString(Form("JetPtvsdEPcentLOCAL_%i",i));
257     title = TString(Form("Jet Pt vs delta Event Plane angle for Local Rho cent bin %i",i));
258     fHistCorJetPtdEPcentLOC[i] = new TH2F(name,title, 500, -250, 250, 144,-1*TMath::Pi(),1*TMath::Pi());
259     fOutput->Add(fHistCorJetPtdEPcentLOC[i]);
260
261
262       name = TString(Form("RhovsEPcentGLOBAL_%i",i));
263       title = TString(Form("Rho vs Event Plane angle for Global Rho cent bin %i",i));
264       fHistRhoEPcentGL[i] = new TH2F(name,title,400,0,400, 144,-1*TMath::Pi(),1*TMath::Pi());
265       fOutput->Add(fHistRhoEPcentGL[i]);
266
267     name = TString(Form("RhovsEPcentLOCAL_%i",i));
268     title = TString(Form("Rho vs Event Plane angle for Local Rho cent bin %i",i));
269     fHistRhoEPcentLOC[i] = new TH2F(name,title,400,0,400, 144,-1*TMath::Pi(),1*TMath::Pi());
270     fOutput->Add(fHistRhoEPcentLOC[i]);
271
272     name = TString(Form("JetPtvsEPcentLOCAL_%i",i));
273     title = TString(Form("Jet Pt vs Event Plane angle for Local Rho cent bin %i",i));
274     fHistCorJetPtEPcentLOC[i] = new TH2F(name,title, 500, -250, 250, 144,-1*TMath::Pi(),1*TMath::Pi());
275     fOutput->Add(fHistCorJetPtEPcentLOC[i]);
276
277
278       name = TString(Form("JetPtvsEPcentGLOBAL_%i",i));
279       title = TString(Form("Jet Pt vs Event Plane angle for Global Rho cent bin %i",i));
280       fHistCorJetPtEPcentGL[i] = new TH2F(name,title, 500, -250, 250, 144,-1*TMath::Pi(),1*TMath::Pi());
281       fOutput->Add(fHistCorJetPtEPcentGL[i]);
282
283   }
284
285   
286   fOutput->Add(fHistRhovsCent);
287   fOutput->Add(fHistNjetvsCent);
288
289   fOutput->Add(fHistGLvsLOCrho);
290
291   fOutput->Add(fHistRhovsdEPLOC);
292   fOutput->Add(fHistRhovsdEPGL);
293   fOutput->Add(fHistJetPtvsdEPLOC);
294   fOutput->Add(fHistJetPtvsdEPGL);
295
296   fOutput->Add(fHistRhovsEPLOC);
297   fOutput->Add(fHistJetPtvsEPLOC);
298
299   fOutput->Add(fHistCorJetPtGL);
300   fOutput->Add(fHistCorJetPt);
301   fOutput->Add(fHistRhovsEPGL);
302   fOutput->Add(fHistJetPtvsEPGL);
303
304    PostData(1, fOutput);
305 }
306
307 //________________________________________________________________________
308
309 Int_t AliAnalysisTaskEmcalJetSpectra::GetCentBin(Double_t cent) const 
310 {
311   // Get centrality bin.
312
313   Int_t centbin = -1;
314   if (cent>=0 && cent<10)
315     centbin = 0;
316   else if (cent>=10 && cent<20)
317     centbin = 1;
318   else if (cent>=20 && cent<30)
319     centbin = 2;
320   else if (cent>=30 && cent<40)
321     centbin = 3;
322   else if (cent>=40 && cent<50)
323     centbin = 4;
324   else if (cent>=50 && cent<90)
325     centbin = 5;
326   return centbin;
327 }
328
329 //________________________________________________________________________
330
331 Float_t AliAnalysisTaskEmcalJetSpectra:: RelativePhi(Double_t mphi,Double_t vphi) const
332 {
333   if (vphi < -1*TMath::Pi()) vphi += (2*TMath::Pi());
334   else if (vphi > TMath::Pi()) vphi -= (2*TMath::Pi());
335   if (mphi < -1*TMath::Pi()) mphi += (2*TMath::Pi());
336   else if (mphi > TMath::Pi()) mphi -= (2*TMath::Pi());
337   double dphi = mphi-vphi;
338   if (dphi < -1*TMath::Pi()) dphi += (2*TMath::Pi());
339   else if (dphi > TMath::Pi()) dphi -= (2*TMath::Pi());
340
341   return dphi;//dphi in [-Pi, Pi]                                                                                                    
342 }
343
344
345 //________________________________________________________________________
346 Bool_t AliAnalysisTaskEmcalJetSpectra::Run()
347 {
348   Int_t centbin = GetCentBin(fCent);
349   //for pp analyses we will just use the first centrality bin
350   if (centbin == -1)
351     centbin = 0;
352
353   if (!fTracks)
354     return kTRUE;
355   
356   const Int_t nTrack = fTracks->GetEntriesFast();
357   for (int i = 0;i<nTrack;i++){
358     AliVParticle *track = static_cast<AliVParticle*>(fTracks->At(i));
359     if (! track)
360       continue;
361     fHistTrackPt[centbin]->Fill(track->Pt());
362   }
363     
364     if(!fLocalRho) {
365         AliWarning(Form("%s: No LocalRho object found, attempting to get it from Event based on name!",GetName()));
366         fLocalRho = GetLocalRhoFromEvent(fLocalRhoName);
367     }
368
369
370   fHistEP0[centbin]->Fill(fEPV0);
371   fHistEP0A[centbin]->Fill(fEPV0A);
372   fHistEP0C[centbin]->Fill(fEPV0C);
373   fHistEPAvsC[centbin]->Fill(fEPV0A,fEPV0C);
374   fRho = GetRhoFromEvent(fRhoName);
375   fRhoVal = fRho->GetVal();
376   fHistRhovsCent->Fill(fCent,fRhoVal);
377   fHistRhovsEP[centbin]->Fill(fRhoVal,fEPV0);
378   const Int_t Njets = fJets->GetEntriesFast();
379
380   Int_t NjetAcc = 0;
381   for (Int_t iJets = 0; iJets < Njets; ++iJets) {
382      AliEmcalJet *jet = static_cast<AliEmcalJet*>(fJets->At(iJets));
383      if (!jet)
384        continue; 
385      if (jet->Area()==0)
386        continue;
387      if (jet->Pt()<0.1)
388        continue;
389      if (jet->MaxTrackPt()>100)
390        continue;
391      if (! AcceptJet(jet))
392        continue;
393      //  jets.push_back(jet);
394      NjetAcc++;
395      Double_t jetPt = -500;
396      jetPt = jet->Pt()-jet->Area()*fRhoVal;    
397      fHistJetPtvsTrackPt[centbin]->Fill(jetPt,jet->MaxTrackPt());
398      fHistRawJetPtvsTrackPt[centbin]->Fill(jet->Pt(),jet->MaxTrackPt());
399      fHistJetPtvsdEP[centbin]->Fill(jetPt,RelativePhi((fEPV0+TMath::Pi()),jet->Phi()));
400      fHistJetPtvsEP[centbin]->Fill(jetPt,fEPV0);
401
402      // get local rho value
403      fLocalRhoVal = fLocalRho->GetLocalVal(jet->Phi(), 0.2);
404      Double_t jetPtLocal = jet->Pt() - jet->Area()*fLocalRhoVal;
405
406      // calculate relative angle between jet and event plane       
407      Float_t dEP = -500;              // initialize angle between jet and event plane
408      dEP = RelativeEPJET(jet->Phi(),fEPV0);
409
410      fHistCorJetPtfromLocalRho[centbin]->Fill(jetPtLocal);
411      fHistCorJetPtfromGlobalRho[centbin]->Fill(jetPt);
412
413      fHistRhodEPcentLOC[centbin]->Fill(fLocalRhoVal,dEP);
414  
415      fHistRhovsdEPLOC->Fill(fLocalRhoVal,dEP);
416      fHistJetPtvsdEPLOC->Fill(jetPtLocal,dEP);
417
418      fHistRhoEPcentGL[centbin]->Fill(fRhoVal,fEPV0);
419      fHistRhoEPcentLOC[centbin]->Fill(fLocalRhoVal,fEPV0);
420
421      fHistCorJetPtEPcentGL[centbin]->Fill(jetPt,fEPV0);
422      fHistCorJetPtEPcentLOC[centbin]->Fill(jetPt,fEPV0);
423
424      fHistRhovsEPGL->Fill(fRhoVal,fEPV0);
425      fHistRhovsEPLOC->Fill(fLocalRhoVal,fEPV0);
426      fHistJetPtvsEPGL->Fill(jetPt,fEPV0);
427      fHistJetPtvsEPLOC->Fill(jetPtLocal,fEPV0);
428
429      fHistCorJetPt->Fill(jetPtLocal);
430      fHistCorJetPtGL->Fill(jetPt);
431
432      fHistGLvsLOCrho->Fill(fRhoVal,fLocalRhoVal);
433
434      // apply max track bias
435      if (jet->MaxTrackPt()>5.0){
436        fHistJetPtvsdEPBias[centbin]->Fill(jetPt,RelativePhi((fEPV0+TMath::Pi()),jet->Phi()));
437        fHistJetPtvsEPBias[centbin]->Fill(jetPt,fEPV0);
438      }
439   
440      // in plane and out of plane histo's
441      if( dEP>0 && dEP<=(TMath::Pi()/6) ){
442         // we are IN plane, lets fill some histo's
443         fHistCorJetPtfromLocalRhoIN[centbin]->Fill(jetPtLocal);
444         fHistCorJetPtfromGlobalRhoIN[centbin]->Fill(jetPt);
445      }else if( dEP>(TMath::Pi()/3) && dEP<=(TMath::Pi()/2) ){
446         // we are OUT of PLANE, lets fill some histo's
447         fHistCorJetPtfromLocalRhoOUT[centbin]->Fill(jetPtLocal);
448         fHistCorJetPtfromGlobalRhoOUT[centbin]->Fill(jetPt);
449      }
450
451   }
452
453   fHistNjetvsCent->Fill(fCent,NjetAcc);
454   return kTRUE;
455 }      
456
457
458 //_________________________________________________________________________
459 Float_t AliAnalysisTaskEmcalJetSpectra:: RelativeEPJET(Double_t jetAng, Double_t EPAng) const
460 { // function to calculate angle between jet and EP in the 1st quadrant (0,Pi/2)
461   Double_t dphi = (EPAng - jetAng);
462     
463   // ran into trouble with a few dEP<-Pi so trying this...
464   if( dphi<-1*TMath::Pi() ){
465     dphi = dphi + 1*TMath::Pi();
466   }
467
468   if( (dphi>0) && (dphi<1*TMath::Pi()/2) ){
469     // Do nothing! we are in quadrant 1
470   }else if( (dphi>1*TMath::Pi()/2) && (dphi<1*TMath::Pi()) ){
471     dphi = 1*TMath::Pi() - dphi;
472   }else if( (dphi<0) && (dphi>-1*TMath::Pi()/2) ){
473     dphi = fabs(dphi);
474   }else if( (dphi<-1*TMath::Pi()/2) && (dphi>-1*TMath::Pi()) ){
475     dphi = dphi + 1*TMath::Pi();
476   }
477
478   // test
479   if( dphi < 0 || dphi > TMath::Pi()/2 )
480     AliWarning(Form("%s: dPHI is outside of restricted range: [0,Pi/2]",GetName()));
481
482   return dphi;   // dphi in [0, Pi/2]
483 }
484
485
486
487