8 #include "AliAnalysisTask.h"
9 #include "AliInputEventHandler.h"
10 #include "AliESDtrack.h"
11 #include "AliAODVertex.h"
12 #include "AliAODCluster.h"
17 #include <TInterpreter.h>
26 #include <TLorentzVector.h>
27 #include <TClonesArray.h>
28 #include <TRefArray.h>
30 #include "TDatabasePDG.h"
31 #include "AliAnalysisManager.h"
32 #include "AliJetFinder.h"
33 #include "AliJetHeader.h"
34 #include "AliJetReader.h"
35 #include "AliJetReaderHeader.h"
36 #include "AliUA1JetHeaderV1.h"
37 #include "AliSISConeJetHeader.h"
38 #include "AliESDEvent.h"
39 #include "AliAODEvent.h"
40 #include "AliAODHandler.h"
41 #include "AliAODInputHandler.h"
42 #include "AliAODTrack.h"
43 #include "AliAODMCParticle.h"
44 #include "AliAODJet.h"
45 #include "AliAODJetEventBackground.h"
46 #include "AliMCParticle.h"
47 #include "AliAODMCParticle.h"
48 #include "AliMCEventHandler.h"
49 #include "AliMCEvent.h"
52 #include "AliAODHeader.h"
53 #include "AliAODMCHeader.h"
54 //#include "AliGenPythiaEventHeader.h"
55 #include "AliJetKineReaderHeader.h"
56 #include "AliGenCocktailEventHeader.h"
57 #include "AliInputEventHandler.h"
58 #include "AliGenEventHeader.h"
59 #include "AliGenDPMjetEventHeader.h"
61 #include "AliAnalysisTaskJetHadronCorrelation.h"
62 #include "AliAnalysisTaskPhiCorrelations.h"
63 //#include "AliAnalysisHelperJetTasks.h"
64 #include "AliPWG4HighPtQAMC.h"
69 ClassImp(AliAnalysisTaskJetHadronCorrelation)
71 //________________________________________________________________________
72 AliAnalysisTaskJetHadronCorrelation::AliAnalysisTaskJetHadronCorrelation():
91 fHistList(0x0), // Output list
100 fH1MCTrack_phi (0x0),
101 fH1MCTrack_eta (0x0),
102 fH1MCPrimTrack_pt (0x0),
103 fH1MCPrimTrack_phi (0x0),
104 fH1MCPrimTrack_eta (0x0),
109 fH1leadJet_pt_dijet (0x0),
110 fH1subJet_pt_dijet (0x0),
112 fH1leadJetMC_pt (0x0),
113 fH1leadJetMC_pt_dijet (0x0),
114 fH1subJetMC_pt_dijet (0x0),
115 fH2JetsJet_dphi (0x0),
116 fH2JetsJet_deta (0x0),
119 fH2JetsJetMC_dphi (0x0),
120 fH2JetsJetMC_deta (0x0),
121 fH2JetsJetMC_Aj (0x0),
122 fH2JetsJetMC_pt (0x0),
123 fH2Mult_Mtrack (0x0),
129 fH2Jet_pt_Mlead (0x0),
130 fH2Jet_pt_Munder (0x0),
131 fH2leadJetMCptResolution (0x0),
132 fH2TrackMCptResolution (0x0),
133 fH2TrackMCptEfficiency (0x0),
134 fH2AjCorrelation_MCRec (0x0),
135 fH2MleadCorrelation_MCRec(0x0)
137 for(int j=0;j<5;j++){
141 fH1leadJetMC_dphiResolution [j]=0;
142 fH1subJetMC_dphiResolution [j]=0;
143 fH1leadJetMC_Efficiency [j]=0;
144 fH1subJetMC_Efficiency [j]=0;
145 for(int k=0;k<5;k++){
146 fH1JetHadron_dphi_ediv [j][k]=0;
147 fH1JetHadron_dphi_tptweight_ediv [j][k]=0;
148 fH1JetHadron_dphi_tJptweight_ediv[j][k]=0;
149 fH1JetHadronMC_dphi_ediv [j][k]=0;
150 fH1JetHadronMC_dphi_tptweight_ediv [j][k]=0;
151 fH1JetHadronMC_dphi_tJptweight_ediv[j][k]=0;
152 fH1JetHadronMCPrim_dphi_ediv [j][k]=0;
153 fH1JetHadronMCPrim_dphi_tptweight_ediv [j][k]=0;
154 fH1JetHadronMCPrim_dphi_tJptweight_ediv[j][k]=0;
157 for(int j=0;j<3;j++){
158 fH1ndiJ_2040Mlead [j]=0;
159 fH1ndiJ_2040Aj [j]=0;
160 for(int k=0;k<5;k++){
161 fH1JetHadron_dphi_tptweight2040_Mleaddep[j][k]=0;
162 fH1JetHadron_dphi_tptweight2040_Ajdep [j][k]=0;
163 fH1JetHadronMC_dphi_tptweight2040_Mleaddep[j][k]=0;
164 fH1JetHadronMC_dphi_tptweight2040_Ajdep [j][k]=0;
165 fH1JetHadronMCPrim_dphi_tptweight2040_Mleaddep[j][k]=0;
166 fH1JetHadronMCPrim_dphi_tptweight2040_Ajdep [j][k]=0;
169 // Default constructor
172 //________________________________________________________________________
173 AliAnalysisTaskJetHadronCorrelation::AliAnalysisTaskJetHadronCorrelation(const char *name):
174 AliAnalysisTaskSE(name),
175 fUseAODInput(kFALSE),
192 fHistList(0x0), // Output list
201 fH1MCTrack_phi (0x0),
202 fH1MCTrack_eta (0x0),
203 fH1MCPrimTrack_pt (0x0),
204 fH1MCPrimTrack_phi (0x0),
205 fH1MCPrimTrack_eta (0x0),
210 fH1leadJet_pt_dijet (0x0),
211 fH1subJet_pt_dijet (0x0),
213 fH1leadJetMC_pt (0x0),
214 fH1leadJetMC_pt_dijet (0x0),
215 fH1subJetMC_pt_dijet (0x0),
216 fH2JetsJet_dphi (0x0),
217 fH2JetsJet_deta (0x0),
220 fH2JetsJetMC_dphi (0x0),
221 fH2JetsJetMC_deta (0x0),
222 fH2JetsJetMC_Aj (0x0),
223 fH2JetsJetMC_pt (0x0),
224 fH2Mult_Mtrack (0x0),
230 fH2Jet_pt_Mlead (0x0),
231 fH2Jet_pt_Munder (0x0),
232 fH2leadJetMCptResolution (0x0),
233 fH2TrackMCptResolution (0x0),
234 fH2TrackMCptEfficiency (0x0),
235 fH2AjCorrelation_MCRec (0x0),
236 fH2MleadCorrelation_MCRec(0x0)
239 for(int j=0;j<5;j++){
243 fH1leadJetMC_dphiResolution [j]=0;
244 fH1subJetMC_dphiResolution [j]=0;
245 fH1leadJetMC_Efficiency [j]=0;
246 fH1subJetMC_Efficiency [j]=0;
247 for(int k=0;k<5;k++){
248 fH1JetHadron_dphi_ediv [j][k]=0;
249 fH1JetHadron_dphi_tptweight_ediv [j][k]=0;
250 fH1JetHadron_dphi_tJptweight_ediv[j][k]=0;
251 fH1JetHadronMC_dphi_ediv [j][k]=0;
252 fH1JetHadronMC_dphi_tptweight_ediv [j][k]=0;
253 fH1JetHadronMC_dphi_tJptweight_ediv[j][k]=0;
254 fH1JetHadronMCPrim_dphi_ediv [j][k]=0;
255 fH1JetHadronMCPrim_dphi_tptweight_ediv [j][k]=0;
256 fH1JetHadronMCPrim_dphi_tJptweight_ediv[j][k]=0;
259 for(int j=0;j<3;j++){
260 fH1ndiJ_2040Mlead [j]=0;
261 fH1ndiJ_2040Aj [j]=0;
262 for(int k=0;k<5;k++){
263 fH1JetHadron_dphi_tptweight2040_Mleaddep[j][k]=0;
264 fH1JetHadron_dphi_tptweight2040_Ajdep [j][k]=0;
265 fH1JetHadronMC_dphi_tptweight2040_Mleaddep[j][k]=0;
266 fH1JetHadronMC_dphi_tptweight2040_Ajdep [j][k]=0;
267 fH1JetHadronMCPrim_dphi_tptweight2040_Mleaddep[j][k]=0;
268 fH1JetHadronMCPrim_dphi_tptweight2040_Ajdep [j][k]=0;
272 // Default constructor
274 // Define input and output slots here
275 // Input slot #0 works with a TChain
276 DefineInput(0, TChain::Class());
277 // Output slot #0 id reserved by the base class for AOD
278 // Output slot #1 writes into a TH1 container
279 DefineOutput(1, TList::Class());
282 //________________________________________________________________________
283 void AliAnalysisTaskJetHadronCorrelation::UserCreateOutputObjects()
288 fHistList = new TList();fHistList->SetOwner(kTRUE); cout<<"TList is created for output "<<endl;
289 //if (!fHistList){ fHistList = new TList();fHistList->SetOwner(kTRUE); cout<<"TList is created for output "<<endl;}
291 Bool_t oldStatus = TH1::AddDirectoryStatus();
292 TH1::AddDirectory(kFALSE);
293 Float_t pi=TMath::Pi();
298 fH1Events = new TH1F ("Events" ,"Events" ,1,0,1);
299 fH1Xsec = new TProfile("Xsec" ,"Xsec" ,1,0,1);
300 fH1Trials = new TH1F ("Trials" ,"Trials" ,1,0,1);
302 fH1Track_pt = new TH1F("Track_pt" ,"Track_pt" ,200,0,200);
303 fH1Track_phi = new TH1F("Track_phi" ,"Track_phi" ,100,0,2*pi);
304 fH1Track_eta = new TH1F("Track_eta" ,"Track_eta" ,100,-1.,1);
305 fH1MCTrack_pt = new TH1F("MCTrack_pt" ,"MCTrack_pt" ,200,0,200);
306 fH1MCTrack_phi = new TH1F("MCTrack_phi" ,"MCTrack_phi" ,100,0,2*pi);
307 fH1MCTrack_eta = new TH1F("MCTrack_eta" ,"MCTrack_eta" ,100,-1.,1);
308 fH1MCPrimTrack_pt = new TH1F("MCPrimTrack_pt" ,"MCPrimTrack_pt" ,200,0,200);
309 fH1MCPrimTrack_phi = new TH1F("MCPrimTrack_phi" ,"MCPrimTrack_phi" ,100,0,2*pi);
310 fH1MCPrimTrack_eta = new TH1F("MCPrimTrack_eta" ,"MCPrimTrack_eta" ,100,-1.,1);
311 fH1Jet_pt = new TH1F("Jet_pt" ,"Jet_pt" ,200,0,200);
312 fH1Jet_phi = new TH1F("Jet_phi" ,"Jet_pt" ,100,0,2*pi);
313 fH1Jet_eta = new TH1F("Jet_eta" ,"Jet_pt" ,100,-1.,1);
314 fH1leadJet_pt = new TH1F("leadJet_pt" ,"leadJet_pt" ,200,0,200);
315 fH1leadJet_pt_dijet = new TH1F("leadJet_pt_dijet" ,"leadJet_pt_dijet" ,200,0,200);
316 fH1subJet_pt_dijet = new TH1F("subJet_pt_dijet" ,"subJet_pt_dijet" ,200,0,200);
317 fH1JetMC_pt = new TH1F("JetMC_pt" ,"JetMC_pt" ,200,0,200);
318 fH1leadJetMC_pt = new TH1F("leadJetMC_pt" ,"leadJetMC_pt" ,200,0,200);
319 fH1leadJetMC_pt_dijet = new TH1F("leadJetMC_pt_dijet","leadJetMC_pt_dijet",200,0,200);
320 fH1subJetMC_pt_dijet = new TH1F("subJetMC_pt_dijet" ,"subJetMC_pt_dijet" ,200,0,200);
321 fH2JetsJet_dphi = new TH2F("JetsJet_dphi" ,"JetsJet_dphi" ,200,0,200,100,-2*pi,2*pi);
322 fH2JetsJet_deta = new TH2F("JetsJet_deta" ,"JetsJet_deta" ,200,0,200,100,-1.5,1.5);
323 fH2JetsJet_Aj = new TH2F("JetsJet_Aj" ,"JetsJet_Aj" ,200,0,200,100,0,1.2);
324 fH2JetsJet_pt = new TH2F("JetsJet_pt" ,"JetsJet_pt" ,200,0,200,200,0,200);
325 fH2JetsJetMC_dphi = new TH2F("JetsJetMC_dphi" ,"JetsJetMC_dphi" ,200,0,200,100,-2*pi,2*pi);
326 fH2JetsJetMC_deta = new TH2F("JetsJetMC_deta" ,"JetsJetMC_deta" ,200,0,200,100,-1.5,1.5);
327 fH2JetsJetMC_Aj = new TH2F("JetsJetMC_Aj" ,"JetsJetMC_Aj" ,200,0,200,100,0,1.2);
328 fH2JetsJetMC_pt = new TH2F("JetsJetMC_pt" ,"JetsJetMC_pt" ,200,0,200,200,0,200);
329 fH2Mult_Mtrack = new TH2F("Mult_Mtrack" ,"Mult_Mtrack" ,50,0,250,50,0,250);
330 fH2Mult_Mlead = new TH2F("Mult_Mlead" ,"Mult_Mlead" ,50,0,250,25,0,25);
331 fH2Mult_Mjet = new TH2F("Mult_Mjet" ,"Mult_Mjet" ,50,0,250,50,0,100);
332 fH2Mult_Njet = new TH2F("Mult_Njet" ,"Mult_Njet" ,50,0,250,50,0,50);
333 fH2Mult_Aj = new TH2F("Mult_Aj" ,"Mult_Aj" ,50,0,250,25,0,1.2);
334 fH2Mlead_Aj = new TH2F("Mlead_Aj" ,"Mlead_Aj" ,25,0,25,25,0,1.2);
335 fH2Jet_pt_Mlead = new TH2F("Jet_pt_Mlead" ,"Jet_pt_Mlead" ,50,0,200,25,0,25);
336 fH2Jet_pt_Munder = new TH2F("Jet_pt_Munder" ,"Jet_pt_Munder" ,50,0,200,25,0,5);
337 fH2leadJetMCptResolution = new TH2F("leadJetMCptResolution" ,"leadJetMCptResolution" ,200,0,200,200,0,200);
338 fH2TrackMCptResolution = new TH2F("TrackMCptResolution" ,"TrackMCptResolution" ,200,0,200,200,0,200);
339 fH2TrackMCptEfficiency = new TH2F("TrackMCptEfficiency" ,"TrackMCptEfficiency" ,200,0,200,100,0,1.2);
340 fH2AjCorrelation_MCRec = new TH2F("AjCorrelation_MCRec" ,"AjCorrelation_MCRec" ,60,0,1.2,60,0,1.2);
341 fH2MleadCorrelation_MCRec = new TH2F("MleadCorrelation_MCRec","MleadCorrelation_MCRec",60,0,60,60,0,60);
343 for(int j=0;j<5;j++){
344 histname = Form("ndiJ_ediv%d",j);
345 fH1ndiJ_ediv[j]= new TH1F(histname,histname,1,1,2);
346 histname = Form("Aj%d",j);
347 fH1Aj[j] = new TH1F(histname,histname,50,0,1.2);
348 histname = Form("Mlead%d",j);
349 fH1Mlead[j] = new TH1F(histname,histname,50,0,50);
350 histname = Form("leadJetMC_dphiResolution%d",j);
351 fH1leadJetMC_dphiResolution[j] = new TH1F(histname,histname,200,-2*pi,2*pi);
352 histname = Form("subJetMC_dphiResolution%d",j);
353 fH1subJetMC_dphiResolution[j] = new TH1F(histname,histname,200,-2*pi,2*pi);
354 histname = Form("leadJetMC_Efficiency%d",j);
355 fH1leadJetMC_Efficiency[j] = new TH1F(histname,histname,100,0,1.2);
356 histname = Form("subJetMC_Efficiency%d",j);
357 fH1subJetMC_Efficiency[j] = new TH1F(histname,histname,100,0,1.2);
358 for(int k=0;k<5;k++){
359 histname = Form("JetHadron_dphi_ediv%d%d",j,k);
360 fH1JetHadron_dphi_ediv [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);
361 histname = Form("JetHadron_dphi_tptweight_ediv%d%d",j,k);
362 fH1JetHadron_dphi_tptweight_ediv [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);
363 histname = Form("JetHadron_dphi_tJptweight_ediv%d%d",j,k);
364 fH1JetHadron_dphi_tJptweight_ediv [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);
365 histname = Form("JetHadronMC_dphi_ediv%d%d",j,k);
366 fH1JetHadronMC_dphi_ediv [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);
367 histname = Form("JetHadronMC_dphi_tptweight_ediv%d%d",j,k);
368 fH1JetHadronMC_dphi_tptweight_ediv [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);
369 histname = Form("JetHadronMC_dphi_tJptweight_ediv%d%d",j,k);
370 fH1JetHadronMC_dphi_tJptweight_ediv [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);
371 histname = Form("JetHadronMCPrim_dphi_ediv%d%d",j,k);
372 fH1JetHadronMCPrim_dphi_ediv [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);
373 histname = Form("JetHadronMCPrim_dphi_tptweight_ediv%d%d",j,k);
374 fH1JetHadronMCPrim_dphi_tptweight_ediv [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);
375 histname = Form("JetHadronMCPrim_dphi_tJptweight_ediv%d%d",j,k);
376 fH1JetHadronMCPrim_dphi_tJptweight_ediv [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);
379 for(int j=0;j<3;j++){
380 histname = Form("ndiJ_2040Mlead%d",j);
381 fH1ndiJ_2040Mlead[j]= new TH1F(histname,histname,1,1,2);
382 histname = Form("ndiJ_2040Aj%d",j);
383 fH1ndiJ_2040Aj[j]= new TH1F(histname,histname,1,1,2);
384 for(int k=0;k<5;k++){
385 histname = Form("JetHadron_dphi_tptweight2040_Mleaddep%d%d",j,k);
386 fH1JetHadron_dphi_tptweight2040_Mleaddep [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);
387 histname = Form("JetHadron_dphi_tptweight2040_Ajdep%d%d",j,k);
388 fH1JetHadron_dphi_tptweight2040_Ajdep [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);
389 histname = Form("JetHadronMC_dphi_tptweight2040_Mleaddep%d%d",j,k);
390 fH1JetHadronMC_dphi_tptweight2040_Mleaddep [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);
391 histname = Form("JetHadronMC_dphi_tptweight2040_Ajdep%d%d",j,k);
392 fH1JetHadronMC_dphi_tptweight2040_Ajdep [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);
393 histname = Form("JetHadronMCPrim_dphi_tptweight2040_Mleaddep%d%d",j,k);
394 fH1JetHadronMCPrim_dphi_tptweight2040_Mleaddep [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);
395 histname = Form("JetHadronMCPrim_dphi_tptweight2040_Ajdep%d%d",j,k);
396 fH1JetHadronMCPrim_dphi_tptweight2040_Ajdep [j][k]= new TH1F(histname,histname,200,-1./2.*pi,3./2.*pi);
402 fHistList->Add(fH1Events );
403 fHistList->Add(fH1Xsec );
404 fHistList->Add(fH1Trials );
405 fHistList->Add(fH1Track_pt );
406 fHistList->Add(fH1Track_phi );
407 fHistList->Add(fH1Track_eta );
408 fHistList->Add(fH1MCTrack_pt );
409 fHistList->Add(fH1MCTrack_phi );
410 fHistList->Add(fH1MCTrack_eta );
411 fHistList->Add(fH1MCPrimTrack_pt );
412 fHistList->Add(fH1MCPrimTrack_phi );
413 fHistList->Add(fH1MCPrimTrack_eta );
414 fHistList->Add(fH1Jet_pt );
415 fHistList->Add(fH1Jet_phi );
416 fHistList->Add(fH1Jet_eta );
417 fHistList->Add(fH1leadJet_pt );
418 fHistList->Add(fH1leadJet_pt_dijet );
419 fHistList->Add(fH1subJet_pt_dijet );
420 fHistList->Add(fH1JetMC_pt );
421 fHistList->Add(fH1leadJetMC_pt );
422 fHistList->Add(fH1leadJetMC_pt_dijet);
423 fHistList->Add(fH1subJetMC_pt_dijet );
424 fHistList->Add(fH2JetsJet_dphi );
425 fHistList->Add(fH2JetsJet_deta );
426 fHistList->Add(fH2JetsJet_Aj );
427 fHistList->Add(fH2JetsJet_pt );
428 fHistList->Add(fH2JetsJetMC_dphi );
429 fHistList->Add(fH2JetsJetMC_deta );
430 fHistList->Add(fH2JetsJetMC_Aj );
431 fHistList->Add(fH2JetsJetMC_pt );
432 fHistList->Add(fH2Mult_Mtrack );
433 fHistList->Add(fH2Mult_Mlead );
434 fHistList->Add(fH2Mult_Mjet );
435 fHistList->Add(fH2Mult_Njet );
436 fHistList->Add(fH2Mult_Aj );
437 fHistList->Add(fH2Mlead_Aj );
438 fHistList->Add(fH2Jet_pt_Mlead );
439 fHistList->Add(fH2Jet_pt_Munder );
440 fHistList->Add(fH2leadJetMCptResolution );
441 fHistList->Add(fH2TrackMCptResolution );
442 fHistList->Add(fH2TrackMCptEfficiency );
443 fHistList->Add(fH2AjCorrelation_MCRec );
444 fHistList->Add(fH2MleadCorrelation_MCRec);
445 for(int j=0;j<5;j++){
446 fHistList->Add(fH1ndiJ_ediv [j]);
447 fHistList->Add(fH1Aj [j]);
448 fHistList->Add(fH1Mlead [j]);
449 fHistList->Add(fH1leadJetMC_dphiResolution [j]);
450 fHistList->Add(fH1subJetMC_dphiResolution [j]);
451 fHistList->Add(fH1leadJetMC_Efficiency [j]);
452 fHistList->Add(fH1subJetMC_Efficiency [j]);
453 for(int k=0;k<5;k++){
454 fHistList->Add(fH1JetHadron_dphi_ediv [j][k]);
455 fHistList->Add(fH1JetHadron_dphi_tptweight_ediv [j][k]);
456 fHistList->Add(fH1JetHadron_dphi_tJptweight_ediv [j][k]);
457 fHistList->Add(fH1JetHadronMC_dphi_ediv [j][k]);
458 fHistList->Add(fH1JetHadronMC_dphi_tptweight_ediv [j][k]);
459 fHistList->Add(fH1JetHadronMC_dphi_tJptweight_ediv [j][k]);
460 fHistList->Add(fH1JetHadronMCPrim_dphi_ediv [j][k]);
461 fHistList->Add(fH1JetHadronMCPrim_dphi_tptweight_ediv [j][k]);
462 fHistList->Add(fH1JetHadronMCPrim_dphi_tJptweight_ediv [j][k]);
465 for(int j=0;j<3;j++){
466 fHistList->Add(fH1ndiJ_2040Mlead [j]);
467 fHistList->Add(fH1ndiJ_2040Aj [j]);
468 for(int k=0;k<5;k++){
469 fHistList->Add(fH1JetHadron_dphi_tptweight2040_Mleaddep [j][k]);
470 fHistList->Add(fH1JetHadron_dphi_tptweight2040_Ajdep [j][k]);
471 fHistList->Add(fH1JetHadronMC_dphi_tptweight2040_Mleaddep [j][k]);
472 fHistList->Add(fH1JetHadronMC_dphi_tptweight2040_Ajdep [j][k]);
473 fHistList->Add(fH1JetHadronMCPrim_dphi_tptweight2040_Mleaddep [j][k]);
474 fHistList->Add(fH1JetHadronMCPrim_dphi_tptweight2040_Ajdep [j][k]);
479 fHistList->Add(fH1Events );
480 fHistList->Add(fH1Track_pt );
481 fHistList->Add(fH1Track_phi );
482 fHistList->Add(fH1Track_eta );
483 fHistList->Add(fH1Jet_pt );
484 fHistList->Add(fH1Jet_phi );
485 fHistList->Add(fH1Jet_eta );
486 fHistList->Add(fH1leadJet_pt );
487 fHistList->Add(fH1leadJet_pt_dijet );
488 fHistList->Add(fH1subJet_pt_dijet );
489 fHistList->Add(fH2JetsJet_dphi );
490 fHistList->Add(fH2JetsJet_deta );
491 fHistList->Add(fH2JetsJet_Aj );
492 fHistList->Add(fH2JetsJet_pt );
493 fHistList->Add(fH2Mult_Mtrack );
494 fHistList->Add(fH2Mult_Mlead );
495 fHistList->Add(fH2Mult_Mjet );
496 fHistList->Add(fH2Mult_Njet );
497 fHistList->Add(fH2Mult_Aj );
498 fHistList->Add(fH2Mlead_Aj );
499 fHistList->Add(fH2Jet_pt_Mlead );
500 fHistList->Add(fH2Jet_pt_Munder );
501 for(int j=0;j<5;j++){
502 fHistList->Add(fH1ndiJ_ediv [j]);
503 fHistList->Add(fH1Aj [j]);
504 fHistList->Add(fH1Mlead [j]);
505 for(int k=0;k<5;k++){
506 fHistList->Add(fH1JetHadron_dphi_ediv [j][k]);
507 fHistList->Add(fH1JetHadron_dphi_tptweight_ediv [j][k]);
508 fHistList->Add(fH1JetHadron_dphi_tJptweight_ediv [j][k]);
511 for(int j=0;j<3;j++){
512 fHistList->Add(fH1ndiJ_2040Mlead [j]);
513 fHistList->Add(fH1ndiJ_2040Aj [j]);
514 for(int k=0;k<5;k++){
515 fHistList->Add(fH1JetHadron_dphi_tptweight2040_Mleaddep [j][k]);
516 fHistList->Add(fH1JetHadron_dphi_tptweight2040_Ajdep [j][k]);
521 // =========== Switch on Sumw2 for all histos ===========
522 for (Int_t i=0; i<fHistList->GetEntries(); ++i)
524 TH1 *h1 = dynamic_cast<TH1*>(fHistList->At(i));
530 THnSparse *hn = dynamic_cast<THnSparse*>(fHistList->At(i));
533 TH1::AddDirectory(oldStatus);
535 PostData(1,fHistList);
539 //----------------------------------------------------------------------
540 void AliAnalysisTaskJetHadronCorrelation::Init()
543 if (fDebug) printf("AnalysisTaskJetHadronCorrelation::Init() \n");
547 Bool_t AliAnalysisTaskJetHadronCorrelation::Notify()
551 fAODIn = dynamic_cast<AliAODEvent*>(InputEvent());
552 fAODOut = AODEvent();
553 if(fNonStdFile.Length()!=0){
554 AliAODHandler *aodH = dynamic_cast<AliAODHandler*>(AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler());
555 fAODExtension = (aodH?aodH->GetExtension(fNonStdFile.Data()):0);
557 if(fDebug>1)Printf("AODExtension found for %s ",fNonStdFile.Data());
561 TTree *tree = AliAnalysisManager::GetAnalysisManager()->GetTree();
566 TFile *curfile = tree->GetCurrentFile();
568 Error("Notify","No current file");
572 AliPWG4HighPtQAMC::PythiaInfoFromFile(curfile->GetName(),fxsec,ftrial);
573 fH1Xsec ->Fill(0.,fxsec);
574 fH1Trials->Fill(0.,ftrial);
579 printf("Reading File %s ",fInputHandler->GetTree()->GetCurrentFile()->GetName());
582 void AliAnalysisTaskJetHadronCorrelation::FinishTaskOutput()
588 //________________________________________________________________________
589 void AliAnalysisTaskJetHadronCorrelation::UserExec(Option_t *)
593 // Main loop (called each event)
594 // Execute analysis for current event
597 TObject* handler = AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler();
598 if( handler && handler->InheritsFrom("AliAODInputHandler") ) {
599 fAOD = ((AliAODInputHandler*)handler)->GetEvent();
600 if(fUseAODInput) fAODIn = fAOD;
601 if (fDebug > 1) Printf("%s:%d AOD event from input", (char*)__FILE__,__LINE__);
604 handler = AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler();
605 if( handler && handler->InheritsFrom("AliAODHandler") ) {
606 fAOD = ((AliAODHandler*)handler)->GetAOD();
608 if (fDebug > 1) Printf("%s:%d AOD event from output", (char*)__FILE__,__LINE__);
612 if(!fAODIn && !fUseAODInput){ // case we have AOD in input & output and want jets from output
613 TObject* outHandler = AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler();
614 if( outHandler && outHandler->InheritsFrom("AliAODHandler") ) {
615 fAODIn = ((AliAODHandler*)outHandler)->GetAOD();
616 if (fDebug > 1) Printf("%s:%d jets from output AOD", (char*)__FILE__,__LINE__);
620 Printf("ERROR %s : fAODIn not available",(char*)__FILE__);
624 AliInputEventHandler* inputHandler = (AliInputEventHandler*)
625 ((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler());
626 if(!(inputHandler->IsEventSelected() & AliVEvent::kMB)){
627 if (fDebug > 1 ) Printf(" Trigger Selection: event REJECTED ... ");
632 AliAODHeader* aliH = dynamic_cast <AliAODHeader*> (fAODIn->GetHeader());
634 Printf("ERROR: AliAODHeader not available");
637 double Mult = aliH->GetRefMultiplicity();
639 // start jet analysis -------------------------Init.
640 Float_t pi=TMath::Pi();
642 Double_t Jet_pt [20][5000];
643 Double_t Jet_phi [20][5000];
644 Double_t Jet_eta [20][5000];
645 Double_t Jet_area [20][5000];
646 Double_t subJet_pt [20][5000];
647 Double_t subJet_eta[20][5000];
649 Double_t Track_pt [5000];
650 Double_t Track_eta[5000];
651 Double_t Track_phi[5000];
653 Double_t MCTrack_pt [5000];
654 Double_t MCTrack_eta[5000];
655 Double_t MCTrack_phi[5000];
657 Track_n=0;MCTrack_n=0;
658 for(int i=0;i<20;i++){
659 for(int j=0;j<1000;j++){
665 subJet_eta[i][j]=999.;
675 int nLJetAOD=999; double ptLJetAOD=0;double phiLJetAOD=999.;double etaLJetAOD=999.;double ptsLJetAOD=0;double phisLJetAOD=900.;double etasLJetAOD=900.;
676 int nLJetMC2=999; double ptLJetMC2=0;double phiLJetMC2=999.;double etaLJetMC2=999.;double ptsLJetMC2=0;double phisLJetMC2=900.;double etasLJetMC2=900.;
677 int nLJetMC =999; double ptLJetMC =0;double phiLJetMC =999.;double etaLJetMC =999.;double ptsLJetMC =0;double phisLJetMC =900.;double etasLJetMC =900.;
678 bool findLJetAOD=false;
679 bool findLJetMC2=false;
680 bool findDiJet=false,findDiJetMC=false;
685 double Aj=99.,AjMC=99.;
686 double Mlead=99.,MleadMC=99.;
689 ////--------------------------------------------------------------------Init.
692 TString Branchname_gen,Branchname_gen2,Branchname_rec;
693 if((JFAlg=="ANTIKT")||(JFAlg=="KT")){
694 cAdd += Form("%02d_",(int)((Radius+0.01)*10.));
695 cAdd += Form("B%d",(int)BackM);
696 cAdd += Form("_Filter%05d",Filtermask);
697 cAdd += Form("_Cut%05d",(int)(1000.*TrackPtcut));
698 cAdd += Form("_Skip%02d",SkipCone);
699 Branchname_gen = Form("clustersAODMC_%s%s",JFAlg.Data(),cAdd.Data());
700 Branchname_gen2 = Form("clustersAODMC2_%s%s",JFAlg.Data(),cAdd.Data());
701 Branchname_rec = Form("clustersAOD_%s%s",JFAlg.Data(),cAdd.Data());
704 cAdd += Form("%02d_",(int)((Radius+0.01)*10.));
705 cAdd += Form("B%d",(int)BackM);
706 cAdd += Form("_Filter%05d",Filtermask);
707 cAdd += Form("_Cut%05d",(int)(1000.*TrackPtcut));
708 Branchname_gen = Form("jetsAODMC_%s%s",JFAlg.Data(),cAdd.Data());
709 Branchname_gen2 = Form("jetsAODMC2_%s%s",JFAlg.Data(),cAdd.Data());
710 Branchname_rec = Form("jetsAOD_%s%s",JFAlg.Data(),cAdd.Data());
715 //count number of tracks@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
716 //Reconstructed Track
717 TClonesArray* tracks = dynamic_cast <TClonesArray*> (fAODIn->GetTracks());
719 if (fDebug > 1) Printf("%s:%d could not get AODtracks", (char*)__FILE__,__LINE__);
723 Bool_t TrackEff[5000];
724 for(int i=0;i<5000;i++){
727 Int_t nt = fAODIn->GetNumberOfTracks();
728 AliAODTrack* trackAOD=NULL;
729 for(int ntrack =0;ntrack<nt;ntrack++){
730 trackAOD = (AliAODTrack*) (tracks->At(ntrack));
732 if(Filtermask!=272){if(trackAOD->TestFilterMask(Filtermask))bgoodT=true;}
733 else {if(trackAOD->IsHybridGlobalConstrainedGlobal())bgoodT=true;} //for hybrid Track cuts
735 if(TMath::Abs(trackAOD->Eta())<0.9){
737 fH1Track_pt ->Fill(trackAOD->Pt()*TrackEScale);
738 fH1Track_phi->Fill(trackAOD->Phi());
739 fH1Track_eta->Fill(trackAOD->Eta());
740 //cout<<"Scale "<<TrackEScale<<" org pt "<<trackAOD->Pt()<< " scaled pt "<< trackAOD->Pt()*TrackEScale <<endl;
742 // track pt resplution-------------------
743 Int_t MCID = TMath::Abs(trackAOD->GetLabel());
744 TClonesArray* mctracks = dynamic_cast <TClonesArray*> (fAODIn->GetList()->FindObject(AliAODMCParticle::StdBranchName()));
746 if (fDebug > 1) Printf("%s:%d could not get AODMCtracks", (char*)__FILE__,__LINE__);
749 AliAODMCParticle *trackMCAOD = (AliAODMCParticle*) mctracks->At(MCID);
750 fH2TrackMCptResolution->Fill(trackMCAOD->Pt(),trackAOD->Pt());
752 // --------------------------------------
758 TClonesArray* mctracks = dynamic_cast <TClonesArray*> (fAODIn->GetList()->FindObject(AliAODMCParticle::StdBranchName()));
760 if (fDebug > 1) Printf("%s:%d could not get AODMCtracks", (char*)__FILE__,__LINE__);
763 Int_t ntmc = mctracks->GetEntriesFast();
764 AliAODMCParticle* trackMCAOD;
766 for(int ntrack =0;ntrack<ntmc;ntrack++){
767 trackMCAOD = (AliAODMCParticle*) (mctracks->At(ntrack));
768 if((trackMCAOD->IsPhysicalPrimary())==1)lastprim=ntrack;
770 for(int ntrack =0;ntrack<ntmc;ntrack++){
771 trackMCAOD = (AliAODMCParticle*) (mctracks->At(ntrack));
772 if((trackMCAOD->GetPdgCode()>10)&&((trackMCAOD->GetMother())>1)&&(ntrack>lastprim)&&(trackMCAOD->Charge())){// for Decay particles
773 if(TMath::Abs(trackMCAOD->Eta())<0.9){
774 fH1MCTrack_pt ->Fill(trackMCAOD->Pt());
775 fH1MCTrack_phi->Fill(trackMCAOD->Phi());
776 fH1MCTrack_eta->Fill(trackMCAOD->Eta());
777 if(TrackEff[ntrack])fH2TrackMCptEfficiency->Fill(trackMCAOD->Pt(),1);
778 else fH2TrackMCptEfficiency->Fill(trackMCAOD->Pt(),0);
781 if((trackMCAOD->IsPhysicalPrimary())&&(trackMCAOD->Charge())){// for Physical particles
782 if(TMath::Abs(trackMCAOD->Eta())<0.9){
784 fH1MCTrack_pt ->Fill(trackMCAOD->Pt());
785 fH1MCTrack_phi->Fill(trackMCAOD->Phi());
786 fH1MCTrack_eta->Fill(trackMCAOD->Eta());
787 fH1MCPrimTrack_pt ->Fill(trackMCAOD->Pt());
788 fH1MCPrimTrack_phi->Fill(trackMCAOD->Phi());
789 fH1MCPrimTrack_eta->Fill(trackMCAOD->Eta());
790 if(TrackEff[ntrack])fH2TrackMCptEfficiency->Fill(trackMCAOD->Pt(),1);
791 else fH2TrackMCptEfficiency->Fill(trackMCAOD->Pt(),0);
796 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ count number of tracks
801 for(int algorithm=0;algorithm<3;algorithm++){
803 if(algorithm==0)fJetBranch = Branchname_rec.Data();
804 if(algorithm==1)fJetBranch = Branchname_gen2.Data();
805 if(algorithm==2)fJetBranch = Branchname_gen.Data();
807 if((!IsMC&&(algorithm==1||algorithm==2)))continue;
809 TClonesArray* jets = dynamic_cast <TClonesArray*> (fAODIn->FindListObject(fJetBranch.Data()));
811 printf(" Tere are no Branch named %s \n",fJetBranch.Data());
814 Int_t nj = jets->GetEntriesFast();
815 if (fDebug) printf("There are %5d jets in the event \n", nj);
817 //Find Leading Jet -------------------------------------------------------
818 for(int njet =0;njet<nj;njet++){
819 jetsAOD = (AliAODJet*) (jets->At(njet));
820 Jet_pt [algorithm][njet] = jetsAOD->Pt()*JetEScale;
821 Jet_phi [algorithm][njet] = jetsAOD->Phi();
822 Jet_eta [algorithm][njet] = jetsAOD->Eta();
823 Jet_area [algorithm][njet] = jetsAOD->EffectiveAreaCharged();
826 TRefArray *reftracks = jetsAOD->GetRefTracks();
827 if(algorithm==0){if(Jet_pt[algorithm][njet]>1.)Mjet_tot += reftracks->GetEntriesFast();Njet_tot++;}
828 double eta_cut_Jet=0.5;
829 if((TMath::Abs(Jet_eta[algorithm][njet])<eta_cut_Jet)&&(Jet_pt[algorithm][njet]>10.)){
831 fH1Jet_pt ->Fill(Jet_pt [algorithm][njet]);
832 fH1Jet_phi->Fill(Jet_phi[algorithm][njet]);
833 fH1Jet_eta->Fill(Jet_eta[algorithm][njet]);
834 if(Jet_pt[algorithm][njet]>ptLJetAOD){
836 nLJetAOD=njet;ptLJetAOD=Jet_pt[algorithm][njet];phiLJetAOD=Jet_phi[algorithm][njet];etaLJetAOD=Jet_eta[algorithm][njet];
840 fH1JetMC_pt->Fill(Jet_pt[algorithm][njet]);
841 if(Jet_pt[algorithm][njet]>ptLJetMC2){
843 nLJetMC2=njet;ptLJetMC2=Jet_pt[algorithm][njet];phiLJetMC2=Jet_phi[algorithm][njet];etaLJetMC2=Jet_eta[algorithm][njet];
847 if(Jet_pt[algorithm][njet]>ptLJetMC){
848 nLJetMC=njet;ptLJetMC=Jet_pt[algorithm][njet];phiLJetMC=Jet_phi[algorithm][njet];etaLJetMC=Jet_eta[algorithm][njet];
853 if(algorithm==0){nLJet=nLJetAOD;fH1leadJet_pt ->Fill(Jet_pt[algorithm][nLJet]);}
854 if(algorithm==1){nLJet=nLJetMC2;fH1leadJetMC_pt->Fill(Jet_pt[algorithm][nLJet]);}
855 if(algorithm==2){nLJet=nLJetMC;}
856 if(findLJetAOD&&(algorithm==0)){
857 jetsAOD = (AliAODJet*) (jets->At(nLJet));
858 TRefArray *reftracks = jetsAOD->GetRefTracks();
859 Mlead = reftracks->GetEntriesFast();
861 if(findLJetMC2&&(algorithm==1)){
862 jetsAOD = (AliAODJet*) (jets->At(nLJetMC2));
863 TRefArray *reftracks = jetsAOD->GetRefTracks();
864 MleadMC = reftracks->GetEntriesFast();
866 //----------------------------------------------------------- Leading Jet
868 //Find Sub leading Jet ==================================================
869 for(int njet=0;njet<nj;njet++){
870 if(njet==nLJet)continue;
871 jetsAOD = (AliAODJet *)jets->At(njet);
872 subJet_pt [algorithm][njet] = jetsAOD->Pt()*JetEScale;
873 subJet_eta[algorithm][njet] = jetsAOD->Eta();
874 double eta_cut_Jet=0.5;
875 if((TMath::Abs(subJet_eta[algorithm][njet])<eta_cut_Jet) && (subJet_pt[algorithm][njet]>10.)){
876 if(subJet_pt[algorithm][njet]>ptsLJetAOD&&algorithm==0){
877 ptsLJetAOD=Jet_pt[algorithm][njet];phisLJetAOD=Jet_phi[algorithm][njet];etasLJetAOD=Jet_eta[algorithm][njet];
879 if(subJet_pt[algorithm][njet]>ptsLJetMC2 &&algorithm==1){
880 ptsLJetMC2=Jet_pt[algorithm][njet];phisLJetMC2=Jet_phi[algorithm][njet];etasLJetMC2=Jet_eta[algorithm][njet];
882 if(subJet_pt[algorithm][njet]>ptsLJetMC &&algorithm==2){
883 ptsLJetMC =Jet_pt[algorithm][njet];phisLJetMC =Jet_phi[algorithm][njet];etasLJetMC =Jet_eta[algorithm][njet];
887 //====================================================== Sub leading Jet
889 double Leading_pt=0.;double Leading_phi=999.;double Leading_eta=999.;double sLeading_pt=0.;double sLeading_phi=999.;double sLeading_eta=999.;
890 if(algorithm==0){Leading_pt=ptLJetAOD;Leading_phi=phiLJetAOD;Leading_eta=etaLJetAOD;sLeading_pt=ptsLJetAOD;sLeading_phi=phisLJetAOD;sLeading_eta=etasLJetAOD;}
891 if(algorithm==1){Leading_pt=ptLJetMC2;Leading_phi=phiLJetMC2;Leading_eta=etaLJetMC2;sLeading_pt=ptsLJetMC2;sLeading_phi=phisLJetMC2;sLeading_eta=etasLJetMC2;}
892 if(algorithm==2){Leading_pt=ptLJetMC ;Leading_phi=phiLJetMC ;Leading_eta=etaLJetMC ;sLeading_pt=ptsLJetMC ;sLeading_phi=phisLJetMC ;sLeading_eta=etasLJetMC ;}
894 ////Di-Jet event trigger +++++++++++++++++++++++++++++++++++++++++++++++
895 double DPhi = DeltaPhi(Leading_phi,sLeading_phi);
896 double DEta = Leading_eta-sLeading_eta;
898 fH2JetsJet_dphi->Fill(Leading_pt,DPhi);
899 fH2JetsJet_deta->Fill(Leading_pt,DEta);
902 fH2JetsJetMC_dphi->Fill(Leading_pt,DPhi);
903 fH2JetsJetMC_deta->Fill(Leading_pt,DEta);
905 if((TMath::Cos(DPhi)<-0.5)&&(Leading_pt>10.)&&(sLeading_pt>10.)){
906 if(algorithm==0)Aj = (Leading_pt-sLeading_pt)/(Leading_pt+sLeading_pt);
907 if(algorithm==1)AjMC = (Leading_pt-sLeading_pt)/(Leading_pt+sLeading_pt);
909 fH1subJet_pt_dijet ->Fill(sLeading_pt);
910 fH1leadJet_pt_dijet->Fill(Leading_pt);
911 fH2JetsJet_Aj ->Fill(Leading_pt,Aj);
912 fH2JetsJet_pt ->Fill(Leading_pt,sLeading_pt);
913 fH2Mult_Aj ->Fill(Mult,Aj);
914 fH2Mlead_Aj ->Fill(Mlead,Aj);
915 for(int eb=0;eb<5;eb++){
916 if(TMath::Abs(Leading_pt -10.-20.*(eb))<10.){
917 fH1Aj[eb] ->Fill(Aj);
922 fH1leadJetMC_pt_dijet->Fill(Leading_pt);
923 fH1subJetMC_pt_dijet ->Fill(sLeading_pt);
924 fH2JetsJetMC_Aj ->Fill(Leading_pt,AjMC);
925 fH2JetsJetMC_pt ->Fill(Leading_pt,sLeading_pt);
931 ////+++++++++++++++++++++++++++++++++++++++++++++++ Di-Jet event trigger
933 if(algorithm!=0)continue;// for only data & reconstructed Jets
936 //Jet-Hadron Correlation###############################################
937 if((findDiJet)&&(Leading_pt>10.)&&(sLeading_pt>10.)){
938 double eta_cut_Jet=0.5;
939 if(TMath::Abs(Leading_eta)<eta_cut_Jet){
940 for(int eb=0;eb<5;eb++){
941 if(TMath::Abs(Leading_pt -10.-20.*(eb))<10.){
942 fH1ndiJ_ediv[eb]->Fill(1);
944 if((0<Mlead)&&Mlead<7) {fH1ndiJ_2040Mlead[0]->Fill(1);}
945 else if((7<=Mlead)&&(Mlead<10)) {fH1ndiJ_2040Mlead[1]->Fill(1);}
946 else {fH1ndiJ_2040Mlead[2]->Fill(1);}
947 if((0<Aj)&&(Aj<0.19)) {fH1ndiJ_2040Aj [0]->Fill(1);}
948 else if((0.19<=Aj)&&(Aj<0.38)) {fH1ndiJ_2040Aj [1]->Fill(1);}
949 else {fH1ndiJ_2040Aj [2]->Fill(1);}
951 fH1Mlead[eb]->Fill(Mlead);
952 for(int ntrack =0;ntrack<nt;ntrack++){
953 trackAOD = (AliAODTrack*) (fAODIn->GetTrack(ntrack));
955 if(Filtermask!=272){if(trackAOD->TestFilterMask(Filtermask))bgoodT=true;}
956 else{ if(trackAOD->IsHybridGlobalConstrainedGlobal())bgoodT=true;} //for hybrid Track cuts
958 Track_pt [ntrack] = (trackAOD->Pt()*TrackEScale);
959 Track_phi [ntrack] = trackAOD->Phi();
960 Track_eta [ntrack] = trackAOD->Eta();
962 //cout<<"Scale "<<TrackEScale<<" org pt "<<trackAOD->Pt()<< " scaled pt "<< trackAOD->Pt()*TrackEScale <<endl;
964 double DelPhi = DeltaPhi(Leading_phi,Track_phi[ntrack]);
965 if(TMath::Abs(Track_eta[ntrack])<0.9){
966 if((TMath::Abs(DelPhi-pi/2.)<pi/8.)||((DelPhi+pi/2.)<pi/8.)||(TMath::Abs(DelPhi-3./2.*pi)<pi/8.))Munder++;
967 for(int teb=0;teb<5;teb++){
968 if(teb==0){if(!( Track_pt[ntrack]>0.15))continue;}
969 if(teb==1){if(!((Track_pt[ntrack]<1.5)&&(Track_pt[ntrack]>0.15)))continue;}
970 if(teb==2){if(!((Track_pt[ntrack]<3.0)&&(Track_pt[ntrack]>1.5)))continue;}
971 if(teb==3){if(!((Track_pt[ntrack]<4.5)&&(Track_pt[ntrack]>3.0)))continue;}
972 if(teb==4){if(!( Track_pt[ntrack]>4.5))continue;}
973 fH1JetHadron_dphi_ediv [eb][teb]->Fill(DelPhi);
974 fH1JetHadron_dphi_tptweight_ediv [eb][teb]->Fill(DelPhi,Track_pt[ntrack]);
975 fH1JetHadron_dphi_tJptweight_ediv [eb][teb]->Fill(DelPhi,Track_pt[ntrack]/Leading_pt);
977 if((0<Mlead)&&Mlead<7) {fH1JetHadron_dphi_tptweight2040_Mleaddep[0][teb]->Fill(DelPhi,Track_pt[ntrack]);}
978 else if((7<=Mlead)&&(Mlead<10)){fH1JetHadron_dphi_tptweight2040_Mleaddep[1][teb]->Fill(DelPhi,Track_pt[ntrack]);}
979 else {fH1JetHadron_dphi_tptweight2040_Mleaddep[2][teb]->Fill(DelPhi,Track_pt[ntrack]);}
980 if((0<Aj)&&(Aj<0.19)) {fH1JetHadron_dphi_tptweight2040_Ajdep [0][teb]->Fill(DelPhi,Track_pt[ntrack]);}
981 else if((0.19<=Aj)&&(Aj<0.38)) {fH1JetHadron_dphi_tptweight2040_Ajdep [1][teb]->Fill(DelPhi,Track_pt[ntrack]);}
982 else {fH1JetHadron_dphi_tptweight2040_Ajdep [2][teb]->Fill(DelPhi,Track_pt[ntrack]);}
989 TClonesArray* mctracks = dynamic_cast <TClonesArray*> (fAODIn->GetList()->FindObject(AliAODMCParticle::StdBranchName()));
991 if (fDebug > 1) Printf("%s:%d could not get AODMCtracks", (char*)__FILE__,__LINE__);
994 Int_t ntmc = mctracks->GetEntriesFast();
995 AliAODMCParticle* trackMCAOD;
997 for(int ntrack =0;ntrack<ntmc;ntrack++){
998 trackMCAOD = (AliAODMCParticle*) (mctracks->At(ntrack));
999 if((trackMCAOD->IsPhysicalPrimary())==1)lastprim=ntrack;
1001 for(int ntrack =0;ntrack<ntmc;ntrack++){
1002 trackMCAOD = (AliAODMCParticle*) (mctracks->At(ntrack));
1003 if((trackMCAOD->GetPdgCode()>10)&&((trackMCAOD->GetMother())>1)&&(ntrack>lastprim)&&(trackMCAOD->Charge())){// for Decay particles
1004 MCTrack_pt [ntrack] = trackMCAOD->Pt();
1005 MCTrack_phi [ntrack] = trackMCAOD->Phi();
1006 MCTrack_eta [ntrack] = trackMCAOD->Eta();
1007 double DelPhi = DeltaPhi(Leading_phi,MCTrack_phi[ntrack]);
1008 if(TMath::Abs(MCTrack_eta[ntrack])<0.9){
1009 for(int teb=0;teb<5;teb++){
1010 if(teb==0){if(!( MCTrack_pt[ntrack]>0.15))continue;}
1011 if(teb==1){if(!((MCTrack_pt[ntrack]<1.5)&&(MCTrack_pt[ntrack]>0.15)))continue;}
1012 if(teb==2){if(!((MCTrack_pt[ntrack]<3.0)&&(MCTrack_pt[ntrack]>1.5)))continue;}
1013 if(teb==3){if(!((MCTrack_pt[ntrack]<4.5)&&(MCTrack_pt[ntrack]>3.0)))continue;}
1014 if(teb==4){if(!( MCTrack_pt[ntrack]>4.5))continue;}
1015 fH1JetHadronMC_dphi_ediv [eb][teb]->Fill(DelPhi);
1016 fH1JetHadronMC_dphi_tptweight_ediv [eb][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);
1017 fH1JetHadronMC_dphi_tJptweight_ediv [eb][teb]->Fill(DelPhi,MCTrack_pt[ntrack]/Leading_pt);
1019 if((0<Mlead)&&Mlead<7) {fH1JetHadronMC_dphi_tptweight2040_Mleaddep[0][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
1020 else if((7<=Mlead)&&(Mlead<10)){fH1JetHadronMC_dphi_tptweight2040_Mleaddep[1][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
1021 else {fH1JetHadronMC_dphi_tptweight2040_Mleaddep[2][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
1022 if((0<Aj)&&(Aj<0.19)) {fH1JetHadronMC_dphi_tptweight2040_Ajdep [0][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
1023 else if((0.19<=Aj)&&(Aj<0.38)) {fH1JetHadronMC_dphi_tptweight2040_Ajdep [1][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
1024 else {fH1JetHadronMC_dphi_tptweight2040_Ajdep [2][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
1029 if((trackMCAOD->IsPhysicalPrimary())&&(trackMCAOD->Charge())){// for Physical particles
1030 MCTrack_pt [ntrack] = trackMCAOD->Pt();
1031 MCTrack_phi [ntrack] = trackMCAOD->Phi();
1032 MCTrack_eta [ntrack] = trackMCAOD->Eta();
1033 double DelPhi = DeltaPhi(Leading_phi,MCTrack_phi[ntrack]);
1034 if(TMath::Abs(MCTrack_eta[ntrack])<0.9){
1035 for(int teb=0;teb<5;teb++){
1036 if(teb==0){if(!( MCTrack_pt[ntrack]>0.15))continue;}
1037 if(teb==1){if(!((MCTrack_pt[ntrack]<1.5)&&(MCTrack_pt[ntrack]>0.15)))continue;}
1038 if(teb==2){if(!((MCTrack_pt[ntrack]<3.0)&&(MCTrack_pt[ntrack]>1.5)))continue;}
1039 if(teb==3){if(!((MCTrack_pt[ntrack]<4.5)&&(MCTrack_pt[ntrack]>3.0)))continue;}
1040 if(teb==4){if(!( MCTrack_pt[ntrack]>4.5))continue;}
1041 fH1JetHadronMC_dphi_ediv [eb][teb]->Fill(DelPhi);
1042 fH1JetHadronMC_dphi_tptweight_ediv [eb][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);
1043 fH1JetHadronMC_dphi_tJptweight_ediv [eb][teb]->Fill(DelPhi,MCTrack_pt[ntrack]/Leading_pt);
1044 fH1JetHadronMCPrim_dphi_ediv [eb][teb]->Fill(DelPhi);
1045 fH1JetHadronMCPrim_dphi_tptweight_ediv [eb][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);
1046 fH1JetHadronMCPrim_dphi_tJptweight_ediv [eb][teb]->Fill(DelPhi,MCTrack_pt[ntrack]/Leading_pt);
1048 if((0<Mlead)&&Mlead<7) {fH1JetHadronMC_dphi_tptweight2040_Mleaddep[0][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
1049 else if((7<=Mlead)&&(Mlead<10)){fH1JetHadronMC_dphi_tptweight2040_Mleaddep[1][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
1050 else {fH1JetHadronMC_dphi_tptweight2040_Mleaddep[2][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
1051 if((0<Aj)&&(Aj<0.19)) {fH1JetHadronMC_dphi_tptweight2040_Ajdep [0][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
1052 else if((0.19<=Aj)&&(Aj<0.38)) {fH1JetHadronMC_dphi_tptweight2040_Ajdep [1][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
1053 else {fH1JetHadronMC_dphi_tptweight2040_Ajdep [2][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
1055 if((0<Mlead)&&Mlead<7) {fH1JetHadronMCPrim_dphi_tptweight2040_Mleaddep[0][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
1056 else if((7<=Mlead)&&(Mlead<10)){fH1JetHadronMCPrim_dphi_tptweight2040_Mleaddep[1][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
1057 else {fH1JetHadronMCPrim_dphi_tptweight2040_Mleaddep[2][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
1058 if((0<Aj)&&(Aj<0.19)) {fH1JetHadronMCPrim_dphi_tptweight2040_Ajdep [0][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
1059 else if((0.19<=Aj)&&(Aj<0.38)) {fH1JetHadronMCPrim_dphi_tptweight2040_Ajdep [1][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
1060 else {fH1JetHadronMCPrim_dphi_tptweight2040_Ajdep [2][teb]->Fill(DelPhi,MCTrack_pt[ntrack]);}
1068 }// Momentum Loop Jet
1069 fH2Jet_pt_Munder ->Fill(Leading_pt,(double)Munder/(1.8*pi/2.)*Jet_area[0][nLJet]);
1070 fH2Jet_pt_Mlead ->Fill(Leading_pt,Mlead);
1073 //############################################### Jet-Hadron Correlation
1076 for(int eb=0;eb<5;eb++){
1078 if(TMath::Abs(ptLJetAOD -10.-20.*(eb))<10.){
1079 DPhi = DeltaPhi(phiLJetMC,phiLJetAOD);
1080 DEta = etaLJetMC-etaLJetAOD;
1081 fH1leadJetMC_dphiResolution[eb]->Fill(DPhi);
1082 if(sqrt(pow(DPhi,2)+pow(DEta,2))<0.4)fH1leadJetMC_Efficiency[eb]->Fill(1);
1083 else fH1leadJetMC_Efficiency[eb]->Fill(0);
1084 DPhi = DeltaPhi(phisLJetMC,phisLJetAOD);
1085 DEta = etasLJetMC-etasLJetAOD;
1086 fH1subJetMC_dphiResolution[eb]->Fill(DPhi);
1087 if(sqrt(pow(DPhi,2)+pow(DEta,2))<0.4)fH1subJetMC_Efficiency[eb]->Fill(1);
1088 else fH1subJetMC_Efficiency[eb]->Fill(0);
1089 DPhi = DeltaPhi(phiLJetMC2,phiLJetAOD);
1090 DEta = etaLJetMC2-etaLJetAOD;
1092 if(sqrt(pow(DPhi,2)+pow(DEta,2))<0.4)fH2leadJetMCptResolution->Fill(ptLJetMC2,ptLJetAOD);
1093 if(findDiJetMC)fH2AjCorrelation_MCRec ->Fill(AjMC,Aj);
1094 if(findDiJetMC)fH2MleadCorrelation_MCRec->Fill(MleadMC,Mlead);
1097 fH2Mult_Mtrack->Fill(Mult,Track_n);
1098 fH2Mult_Mjet ->Fill(Mult,Mjet_tot);
1099 fH2Mult_Njet ->Fill(Mult,Njet_tot);
1100 if(findLJetAOD)fH2Mult_Mlead ->Fill(Mult,Mlead);
1103 fH2Mult_Mtrack->Fill(Mult,Track_n);
1104 fH2Mult_Mjet ->Fill(Mult,Mjet_tot);
1105 fH2Mult_Njet ->Fill(Mult,Njet_tot);
1106 if(findLJetAOD)fH2Mult_Mlead ->Fill(Mult,Mlead);
1109 PostData(1, fHistList);
1113 //________________________________________________________________________
1114 void AliAnalysisTaskJetHadronCorrelation::Terminate(Option_t *){
1115 // Terminate analysis
1116 if (fDebug) printf("AnalysisTaskPt: Terminate() \n");
1119 Double_t AliAnalysisTaskJetHadronCorrelation::DeltaPhi(Double_t phi1,Double_t phi2){
1120 Float_t pi=TMath::Pi();
1121 Double_t dphi = phi1-phi2;
1122 if (dphi<(-1./2*pi))dphi = dphi +2*pi;
1123 else if(dphi>( 3./2*pi))dphi = dphi -2*pi;