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 "AliAODTrack.h"
42 #include "AliAODJet.h"
43 #include "AliAODJetEventBackground.h"
44 #include "AliMCParticle.h"
45 #include "AliAODMCParticle.h"
46 #include "AliMCEventHandler.h"
47 #include "AliMCEvent.h"
50 #include "AliAODHeader.h"
51 #include "AliAODMCHeader.h"
52 //#include "AliGenPythiaEventHeader.h"
53 #include "AliJetKineReaderHeader.h"
54 #include "AliGenCocktailEventHeader.h"
55 #include "AliInputEventHandler.h"
56 #include "AliGenEventHeader.h"
57 #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():
90 fJetRecEtaWindow(0.5), // eta window for rec jets
92 fHistList(0x0), // Output list
98 fH1leadJetAKT04_pt (0x0),
99 fH1leadJetAKT04_pt_dijet (0x0),
100 fH1subJetAKT04_pt_dijet (0x0),
101 fH2JetsJetAKT04_dphi (0x0),
102 fH2JetsJetAKT04_deta (0x0),
103 fH2JetsJetAKT04_Aj (0x0),
104 fH2JetsJetAKT04_pt (0x0),
105 fH1JetMCAKT04_pt (0x0),
106 fH1leadJetMCAKT04_pt (0x0),
107 fH1leadJetMCAKT04_pt_dijet (0x0),
108 fH1subJetMCAKT04_pt_dijet (0x0),
109 fH2JetsJetMCAKT04_dphi (0x0),
110 fH2JetsJetMCAKT04_deta (0x0),
111 fH2JetsJetMCAKT04_Aj (0x0),
112 fH2JetsJetMCAKT04_pt (0x0)
119 for(int j=0;j<5;j++){
120 fH1AKT04_ndiJ_ediv[j]=0;
121 fH1leadJetMCAKT04_dphiResolution [j]=0;
122 fH1subJetMCAKT04_dphiResolution [j]=0;
123 for(int k=0;k<5;k++){
124 fH1JetHadronAKT04_dphi_ediv [j][k]=0;
125 fH1JetHadronAKT04_dphi_tptweight_ediv [j][k]=0;
126 fH1JetHadronAKT04_dphi_tJptweight_ediv [j][k]=0;
130 for(int j=0;j<5;j++){
131 fH1AKT04_ndiJ_ediv[j]=0;
132 for(int k=0;k<5;k++){
133 fH1JetHadronAKT04_dphi_ediv [j][k]=0;
134 fH1JetHadronAKT04_dphi_tptweight_ediv [j][k]=0;
135 fH1JetHadronAKT04_dphi_tJptweight_ediv [j][k]=0;
141 // Default constructor
144 //________________________________________________________________________
145 AliAnalysisTaskJetHadronCorrelation::AliAnalysisTaskJetHadronCorrelation(const char *name):
146 AliAnalysisTaskSE(name),
147 fUseAODInput(kFALSE),
163 fJetRecEtaWindow(0.5), // eta window for rec jets
165 fHistList(0x0), // Output list
171 fH1JetAKT04_pt (0x0),
172 fH1leadJetAKT04_pt (0x0),
173 fH1leadJetAKT04_pt_dijet (0x0),
174 fH1subJetAKT04_pt_dijet (0x0),
175 fH2JetsJetAKT04_dphi (0x0),
176 fH2JetsJetAKT04_deta (0x0),
177 fH2JetsJetAKT04_Aj (0x0),
178 fH2JetsJetAKT04_pt (0x0),
179 fH1JetMCAKT04_pt (0x0),
180 fH1leadJetMCAKT04_pt (0x0),
181 fH1leadJetMCAKT04_pt_dijet (0x0),
182 fH1subJetMCAKT04_pt_dijet (0x0),
183 fH2JetsJetMCAKT04_dphi (0x0),
184 fH2JetsJetMCAKT04_deta (0x0),
185 fH2JetsJetMCAKT04_Aj (0x0),
186 fH2JetsJetMCAKT04_pt (0x0)
191 for(int j=0;j<5;j++){
192 fH1AKT04_ndiJ_ediv[j]=0;
193 fH1leadJetMCAKT04_dphiResolution [j]=0;
194 fH1subJetMCAKT04_dphiResolution [j]=0;
195 for(int k=0;k<5;k++){
196 fH1JetHadronAKT04_dphi_ediv [j][k]=0;
197 fH1JetHadronAKT04_dphi_tptweight_ediv [j][k]=0;
198 fH1JetHadronAKT04_dphi_tJptweight_ediv [j][k]=0;
202 for(int j=0;j<5;j++){
203 fH1AKT04_ndiJ_ediv[j]=0;
204 for(int k=0;k<5;k++){
205 fH1JetHadronAKT04_dphi_ediv [j][k]=0;
206 fH1JetHadronAKT04_dphi_tptweight_ediv [j][k]=0;
207 fH1JetHadronAKT04_dphi_tJptweight_ediv [j][k]=0;
212 // Default constructor
216 // Define input and output slots here
217 // Input slot #0 works with a TChain
218 DefineInput(0, TChain::Class());
219 // Output slot #0 id reserved by the base class for AOD
220 // Output slot #1 writes into a TH1 container
221 DefineOutput(1, TList::Class());
225 //________________________________________________________________________
226 void AliAnalysisTaskJetHadronCorrelation::UserCreateOutputObjects()
232 fHistList = new TList();fHistList->SetOwner(kTRUE); cout<<"TList is created for output "<<endl;
233 //if (!fHistList){ fHistList = new TList();fHistList->SetOwner(kTRUE); cout<<"TList is created for output "<<endl;}
235 Bool_t oldStatus = TH1::AddDirectoryStatus();
236 TH1::AddDirectory(kFALSE);
238 Float_t pi=TMath::Pi();
239 //gStyle->SetPalette(1);
244 fH1Xsec = new TProfile("Xsec" ,"Xsec" ,1,0,1);
245 fH1Trials = new TH1F ("Trials" ,"Trials" ,1,0,1);
246 fH1JetMCAKT04_pt = new TH1F("JetMCAKT04_pt" ,"JetMCAKT04_pt" ,400,0,400);
247 fH1leadJetMCAKT04_pt = new TH1F("leadJetMCAKT04_pt" ,"leadJetMCAKT04_pt" ,400,0,400);
248 fH1leadJetMCAKT04_pt_dijet = new TH1F("leadJetMCAKT04_pt_dijet","leadJetMCAKT04_pt_dijet",400,0,400);
249 fH1subJetMCAKT04_pt_dijet = new TH1F("subJetMCAKT04_pt_dijet" ,"subJetMCAKT04_pt_dijet" ,400,0,400);
250 fH1JetAKT04_pt = new TH1F("JetAKT04_pt" ,"JetAKT04_pt" ,400,0,400);
251 fH1leadJetAKT04_pt = new TH1F("leadJetAKT04_pt" ,"leadJetAKT04_pt" ,400,0,400);
252 fH1leadJetAKT04_pt_dijet = new TH1F("leadJetAKT04_pt_dijet" ,"leadJetAKT04_pt_dijet" ,400,0,400);
253 fH1subJetAKT04_pt_dijet = new TH1F("subJetAKT04_pt_dijet" ,"subJetAKT04_pt_dijet" ,400,0,400);
254 histname = Form("JetsJetMCAKT04_dphi");
255 fH2JetsJetMCAKT04_dphi = new TH2F(histname,histname,200,0,400,100,-2*pi,2*pi);
256 histname = Form("JetsJetMCAKT04_deta");
257 fH2JetsJetMCAKT04_deta = new TH2F(histname,histname,200,0,400,100,-1.5,1.5);
258 histname = Form("JetsJetMCAKT04_Aj");
259 fH2JetsJetMCAKT04_Aj = new TH2F(histname,histname,200,0,400,100,0,1.2);
260 histname = Form("JetsJetMCAKT04_pt");
261 fH2JetsJetMCAKT04_pt = new TH2F(histname,histname,200,0,400,200,0,400);
262 histname = Form("JetsJetAKT04_dphi");
263 fH2JetsJetAKT04_dphi = new TH2F(histname,histname,200,0,400,100,-2*pi,2*pi);
264 histname = Form("JetsJetAKT04_deta");
265 fH2JetsJetAKT04_deta = new TH2F(histname,histname,200,0,400,100,-1.5,1.5);
266 histname = Form("JetsJetAKT04_Aj");
267 fH2JetsJetAKT04_Aj = new TH2F(histname,histname,200,0,400,100,0,1.2);
268 histname = Form("JetsJetAKT04_pt");
269 fH2JetsJetAKT04_pt = new TH2F(histname,histname,200,0,400,200,0,400);
270 for(int j=0;j<5;j++){
271 histname = Form("AKT04_ndiJ_ediv%d",j);
272 fH1AKT04_ndiJ_ediv[j]= new TH1F(histname,histname,1,1,2);
273 histname = Form("leadJetMCAKT04_dphiResolution%d",j);
274 fH1leadJetMCAKT04_dphiResolution[j] = new TH1F(histname,histname,200,-2*pi,2*pi);
275 histname = Form("subJetMCAKT04_dphiResolution%d",j);
276 fH1subJetMCAKT04_dphiResolution[j] = new TH1F(histname,histname,200,-2*pi,2*pi);
277 for(int k=0;k<5;k++){
278 histname = Form("JetHadronAKT04_dphi_ediv%d%d",j,k);
279 fH1JetHadronAKT04_dphi_ediv [j][k]= new TH1F(histname,histname,200,-2*pi,2*pi);
280 histname = Form("JetHadronAKT04_dphi_tptweight_ediv%d%d",j,k);
281 fH1JetHadronAKT04_dphi_tptweight_ediv [j][k]= new TH1F(histname,histname,200,-2*pi,2*pi);
282 histname = Form("JetHadronAKT04_dphi_tJptweight_ediv%d%d",j,k);
283 fH1JetHadronAKT04_dphi_tJptweight_ediv [j][k]= new TH1F(histname,histname,200,-2*pi,2*pi);
286 fHistList->Add(fH1Xsec);
287 fHistList->Add(fH1Trials);
288 fHistList->Add(fH1JetMCAKT04_pt );
289 fHistList->Add(fH1leadJetMCAKT04_pt );
290 fHistList->Add(fH1leadJetMCAKT04_pt_dijet);
291 fHistList->Add(fH1subJetMCAKT04_pt_dijet );
292 fHistList->Add(fH1JetAKT04_pt );
293 fHistList->Add(fH1leadJetAKT04_pt );
294 fHistList->Add(fH1leadJetAKT04_pt_dijet );
295 fHistList->Add(fH1subJetAKT04_pt_dijet );
296 fHistList->Add(fH2JetsJetMCAKT04_dphi);
297 fHistList->Add(fH2JetsJetMCAKT04_deta);
298 fHistList->Add(fH2JetsJetMCAKT04_Aj );
299 fHistList->Add(fH2JetsJetMCAKT04_pt );
300 fHistList->Add(fH2JetsJetAKT04_dphi );
301 fHistList->Add(fH2JetsJetAKT04_deta );
302 fHistList->Add(fH2JetsJetAKT04_Aj );
303 fHistList->Add(fH2JetsJetAKT04_pt );
304 for(int j=0;j<5;j++){
305 fHistList->Add(fH1AKT04_ndiJ_ediv [j]);
306 fHistList->Add(fH1leadJetMCAKT04_dphiResolution [j]);
307 fHistList->Add(fH1subJetMCAKT04_dphiResolution [j]);
308 for(int k=0;k<5;k++){
309 fHistList->Add(fH1JetHadronAKT04_dphi_ediv [j][k]);
310 fHistList->Add(fH1JetHadronAKT04_dphi_tptweight_ediv [j][k]);
311 fHistList->Add(fH1JetHadronAKT04_dphi_tJptweight_ediv [j][k]);
316 fH1Events = new TH1F("Events" ,"Events" ,1,0,1);
317 fH1JetAKT04_pt = new TH1F("JetAKT04_pt" ,"JetAKT04_pt" ,400,0,400);
318 fH1leadJetAKT04_pt = new TH1F("leadJetAKT04_pt" ,"leadJetAKT04_pt" ,400,0,400);
319 fH1leadJetAKT04_pt_dijet = new TH1F("leadJetAKT04_pt_dijet" ,"leadJetAKT04_pt_dijet" ,400,0,400);
320 fH1subJetAKT04_pt_dijet = new TH1F("subJetAKT04_pt_dijet" ,"subJetAKT04_pt_dijet" ,400,0,400);
321 histname = Form("JetsJetAKT04_dphi");
322 fH2JetsJetAKT04_dphi = new TH2F(histname,histname,200,0,400,100,-2*pi,2*pi);
323 histname = Form("JetsJetAKT04_deta");
324 fH2JetsJetAKT04_deta = new TH2F(histname,histname,200,0,400,100,-1.5,1.5);
325 histname = Form("JetsJetAKT04_Aj");
326 fH2JetsJetAKT04_Aj = new TH2F(histname,histname,200,0,400,100,0,1.2);
327 histname = Form("JetsJetAKT04_pt");
328 fH2JetsJetAKT04_pt = new TH2F(histname,histname,200,0,400,200,0,400);
329 for(int j=0;j<5;j++){
330 histname = Form("AKT04_ndiJ_ediv%d",j);
331 fH1AKT04_ndiJ_ediv[j]= new TH1F(histname,histname,1,1,2);
332 for(int k=0;k<5;k++){
333 histname = Form("JetHadronAKT04_dphi_ediv%d%d",j,k);
334 fH1JetHadronAKT04_dphi_ediv [j][k]= new TH1F(histname,histname,200,-2*pi,2*pi);
335 histname = Form("JetHadronAKT04_dphi_tptweight_ediv%d%d",j,k);
336 fH1JetHadronAKT04_dphi_tptweight_ediv [j][k]= new TH1F(histname,histname,200,-2*pi,2*pi);
337 histname = Form("JetHadronAKT04_dphi_tJptweight_ediv%d%d",j,k);
338 fH1JetHadronAKT04_dphi_tJptweight_ediv [j][k]= new TH1F(histname,histname,200,-2*pi,2*pi);
341 fHistList->Add(fH1Events);
342 fHistList->Add(fH1JetAKT04_pt );
343 fHistList->Add(fH1leadJetAKT04_pt );
344 fHistList->Add(fH1leadJetAKT04_pt_dijet);
345 fHistList->Add(fH1subJetAKT04_pt_dijet );
346 fHistList->Add(fH2JetsJetAKT04_dphi );
347 fHistList->Add(fH2JetsJetAKT04_deta );
348 fHistList->Add(fH2JetsJetAKT04_Aj );
349 fHistList->Add(fH2JetsJetAKT04_pt );
350 for(int j=0;j<5;j++){
351 fHistList->Add(fH1AKT04_ndiJ_ediv [j]);
352 for(int k=0;k<5;k++){
353 fHistList->Add(fH1JetHadronAKT04_dphi_ediv [j][k]);
354 fHistList->Add(fH1JetHadronAKT04_dphi_tptweight_ediv [j][k]);
355 fHistList->Add(fH1JetHadronAKT04_dphi_tJptweight_ediv [j][k]);
362 // =========== Switch on Sumw2 for all histos ===========
363 for (Int_t i=0; i<fHistList->GetEntries(); ++i)
365 TH1 *h1 = dynamic_cast<TH1*>(fHistList->At(i));
371 THnSparse *hn = dynamic_cast<THnSparse*>(fHistList->At(i));
374 TH1::AddDirectory(oldStatus);
379 PostData(1,fHistList);
383 //----------------------------------------------------------------------
384 void AliAnalysisTaskJetHadronCorrelation::Init()
387 if (fDebug) printf("AnalysisTaskJetHadronCorrelation::Init() \n");
391 Bool_t AliAnalysisTaskJetHadronCorrelation::Notify()
396 fAODIn = dynamic_cast<AliAODEvent*>(InputEvent());
397 fAODOut = AODEvent();
398 if(fNonStdFile.Length()!=0){
399 AliAODHandler *aodH = dynamic_cast<AliAODHandler*>(AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler());
400 fAODExtension = (aodH?aodH->GetExtension(fNonStdFile.Data()):0);
402 if(fDebug>1)Printf("AODExtension found for %s ",fNonStdFile.Data());
406 TTree *tree = AliAnalysisManager::GetAnalysisManager()->GetTree();
411 TFile *curfile = tree->GetCurrentFile();
413 Error("Notify","No current file");
419 AliPWG4HighPtQAMC::PythiaInfoFromFile(curfile->GetName(),fxsec,ftrial);
420 //cout<<" Xsec "<<fxsec<<" trial "<<ftrial<<endl;
421 fH1Xsec ->Fill(0.,fxsec);
422 fH1Trials->Fill(0.,ftrial);
425 totalEvent = GetTotalEvents(curfile->GetName());
426 fH1Events->Fill(0.,totalEvent);
431 printf("Reading File %s ",fInputHandler->GetTree()->GetCurrentFile()->GetName());
434 void AliAnalysisTaskJetHadronCorrelation::FinishTaskOutput()
440 //________________________________________________________________________
441 void AliAnalysisTaskJetHadronCorrelation::UserExec(Option_t *)
445 // Main loop (called each event)
446 // Execute analysis for current event
448 // start jet analysis
451 Double_t Jet_pt [20][1000];
452 Double_t Jet_eta[20][1000];
453 Double_t Jet_phi[20][1000];
454 Double_t subJet_n [20];
455 Double_t subJet_pt [20][1000];
456 Double_t subJet_eta[20][1000];
457 Double_t subJet_phi[20][1000];
459 Double_t Track_pt [1000];
460 Double_t Track_eta[1000];
461 Double_t Track_phi[1000];
464 for(int i=0;i<20;i++){
467 for(int j=0;j<1000;j++){
472 subJet_phi[i][j]=999.;
473 subJet_eta[i][j]=999.;
480 fAODIn = dynamic_cast<AliAODEvent*>(InputEvent());
482 Printf("ERROR: fAODIn not available");
486 //////-----------------------------------------------------------------------------------
489 int nLJetAOD=999; double ptLJetAOD=0;double phiLJetAOD=999.;double etaLJetAOD=999.;int nsLJetAOD=900;double ptsLJetAOD=0;double phisLJetAOD=900.;double etasLJetAOD=900.;
490 int nLJetMC2=999; double ptLJetMC2=0;double phiLJetMC2=999.;double etaLJetMC2=999.;int nsLJetMC2=900;double ptsLJetMC2=0;double phisLJetMC2=900.;double etasLJetMC2=900.;
491 int nLJetMC =999; double ptLJetMC =0;double phiLJetMC =999.;double etaLJetMC =999.;int nsLJetMC =900;double ptsLJetMC =0;double phisLJetMC =900.;double etasLJetMC =900.;
492 bool findLJetAOD=false;bool findsLJetAOD=false;bool findsLJetAOD_temp=false;
493 bool findLJetMC2=false;bool findsLJetMC2=false;bool findsLJetMC2_temp=false;
494 bool findLJetMC =false;bool findsLJetMC =false;bool findsLJetMC_temp =false;
495 bool findsLJet=false;
500 cAdd += Form("%02d_",(int)((Radius+0.01)*10.));
501 cAdd += Form("B%d",(int)BackM);
502 cAdd += Form("_Filter%05d",Filtermask);
503 cAdd += Form("_Cut%05d",(int)(1000.*TrackPtcut));
504 cAdd += Form("_Skip%02d",SkipCone);
505 TString Branchname_gen,Branchname_gen2,Branchname_rec;
506 //Branchname_gen = Form("clustersMCKINE_%s%s",JFAlg.Data(),cAdd.Data());
507 //Branchname_gen2 = Form("clustersMCKINE2_%s%s",JFAlg.Data(),cAdd.Data());
508 Branchname_gen = Form("clustersAODMC_%s%s",JFAlg.Data(),cAdd.Data());
509 Branchname_gen2 = Form("clustersAODMC2_%s%s",JFAlg.Data(),cAdd.Data());
510 Branchname_rec = Form("clustersAOD_%s%s",JFAlg.Data(),cAdd.Data());
513 for(int algorithm=0;algorithm<3;algorithm++){
514 //for LHC11a1 LHC11a2
515 if(algorithm==0)fJetBranch = Branchname_rec.Data();
516 if(algorithm==1)fJetBranch = Branchname_gen2.Data();
517 if(algorithm==2)fJetBranch = Branchname_gen.Data();
519 if((!IsMC&&(algorithm==1||algorithm==2)))continue;
521 TClonesArray* jets = dynamic_cast <TClonesArray*> (fAODIn->FindListObject(fJetBranch.Data()));
523 printf(" Tere are no Branch named %s \n",fJetBranch.Data());
526 Int_t nj = jets->GetEntriesFast();
527 if (fDebug) printf("There are %5d jets in the event \n", nj);
529 Jet_n[algorithm] = nj;
530 int nLjet_in05_pthdiv[20][20];
531 int nsLjet_in05_pthdiv[20][20];
532 for(int i=0;i<20;i++){
533 for(int j=0;j<20;j++){
534 nLjet_in05_pthdiv [i][j]=0;
535 nsLjet_in05_pthdiv[i][j]=0;
538 //Find Leading Jet -------------------------------------------------------
539 for(int njet =0;njet<nj;njet++){
540 jetsAOD = (AliAODJet*) (jets->At(njet));
541 Jet_pt [algorithm][njet] = jetsAOD->Pt();
542 Jet_phi [algorithm][njet] = jetsAOD->Phi();
543 Jet_eta [algorithm][njet] = jetsAOD->Eta();
544 //TRefArray *reftracks = jetsAOD->GetRefTracks();
545 double eta_cut_Jet=0.5;
546 if((TMath::Abs(Jet_eta[algorithm][njet])<eta_cut_Jet)&&(Jet_pt[algorithm][njet]>10.)){
548 fH1JetAKT04_pt->Fill(Jet_pt[algorithm][njet]);
549 if(Jet_pt[algorithm][njet]>ptLJetAOD){
551 nLJetAOD=njet;ptLJetAOD=Jet_pt[algorithm][njet];phiLJetAOD=Jet_phi[algorithm][njet];etaLJetAOD=Jet_eta[algorithm][njet];
555 fH1JetMCAKT04_pt->Fill(Jet_pt[algorithm][njet]);
556 if(Jet_pt[algorithm][njet]>ptLJetMC2){
558 nLJetMC2=njet;ptLJetMC2=Jet_pt[algorithm][njet];phiLJetMC2=Jet_phi[algorithm][njet];etaLJetMC2=Jet_eta[algorithm][njet];
562 if(Jet_pt[algorithm][njet]>ptLJetMC){
564 nLJetMC=njet;ptLJetMC=Jet_pt[algorithm][njet];phiLJetMC=Jet_phi[algorithm][njet];etaLJetMC=Jet_eta[algorithm][njet];
569 //Leading Jet -----------------------------------------------------------
571 if(algorithm==0){nLJet=nLJetAOD;fH1leadJetAKT04_pt->Fill(Jet_pt[algorithm][nLJet]);}
572 if(algorithm==1){nLJet=nLJetMC2;fH1leadJetMCAKT04_pt->Fill(Jet_pt[algorithm][nLJet]);}
573 if(algorithm==2){nLJet=nLJetMC2;}
576 //Find Sub leading Jet ==================================================
577 for(int njet=0;njet<nj;njet++){
578 if(njet==nLJet)continue;
579 jetsAOD = (AliAODJet *)jets->At(njet);
580 subJet_pt [algorithm][njet] = jetsAOD->Pt();
581 subJet_phi[algorithm][njet] = jetsAOD->Phi();
582 subJet_eta[algorithm][njet] = jetsAOD->Eta();
583 double eta_cut_Jet=0.5;
584 if((TMath::Abs(subJet_eta[algorithm][njet])<eta_cut_Jet) && (subJet_pt[algorithm][njet]>10.)){
585 if(subJet_pt[algorithm][njet]>ptsLJetAOD&&algorithm==0){
586 findsLJetAOD_temp=true;
587 nsLJetAOD=njet;ptsLJetAOD=Jet_pt[algorithm][njet];phisLJetAOD=Jet_phi[algorithm][njet];etasLJetAOD=Jet_eta[algorithm][njet];
589 if(subJet_pt[algorithm][njet]>ptsLJetMC2 &&algorithm==1){
590 findsLJetMC2_temp=true;
591 nsLJetMC2=njet;ptsLJetMC2=Jet_pt[algorithm][njet];phisLJetMC2=Jet_phi[algorithm][njet];etasLJetMC2=Jet_eta[algorithm][njet];
593 if(subJet_pt[algorithm][njet]>ptsLJetMC &&algorithm==2){
594 findsLJetMC_temp=true;
595 nsLJetMC =njet;ptsLJetMC =Jet_pt[algorithm][njet];phisLJetMC =Jet_phi[algorithm][njet];etasLJetMC =Jet_eta[algorithm][njet];
599 ////Sub leading Jet ======================================================
601 double Leading_pt=0.;double Leading_phi=999.;double Leading_eta=999.;double sLeading_pt=0.;double sLeading_phi=999.;double sLeading_eta=999.;
602 if(algorithm==0){Leading_pt=ptLJetAOD;Leading_phi=phiLJetAOD;Leading_eta=etaLJetAOD;sLeading_pt=ptsLJetAOD;sLeading_phi=phisLJetAOD;sLeading_eta=etasLJetAOD;}
603 if(algorithm==1){Leading_pt=ptLJetMC2;Leading_phi=phiLJetMC2;Leading_eta=etaLJetMC2;sLeading_pt=ptsLJetMC2;sLeading_phi=phisLJetMC2;sLeading_eta=etasLJetMC2;}
604 if(algorithm==2){Leading_pt=ptLJetMC ;Leading_phi=phiLJetMC ;Leading_eta=etaLJetMC ;sLeading_pt=ptsLJetMC ;sLeading_phi=phisLJetMC ;sLeading_eta=etasLJetMC ;}
606 ////Di-Jet event trigger +++++++++++++++++++++++++++++++++++++++++++++++
607 double DPhi = DeltaPhi(Leading_phi,sLeading_phi);
608 double DEta = Leading_eta-sLeading_eta;
610 fH2JetsJetAKT04_dphi->Fill(Leading_pt,DPhi);
611 fH2JetsJetAKT04_deta->Fill(Leading_pt,DEta);
614 fH2JetsJetMCAKT04_dphi->Fill(Leading_pt,DPhi);
615 fH2JetsJetMCAKT04_deta->Fill(Leading_pt,DEta);
617 if((TMath::Cos(DPhi)<-0.5)&&(Leading_pt>10.)&&(sLeading_pt>10.)){
618 if(algorithm==0)findsLJetAOD=true;
619 if(algorithm==1)findsLJetMC=true;
621 double Aj = (Leading_pt-sLeading_pt)/(Leading_pt+sLeading_pt);
623 fH1leadJetAKT04_pt_dijet->Fill(Leading_pt);
624 fH1subJetAKT04_pt_dijet ->Fill(sLeading_pt);
625 fH2JetsJetAKT04_Aj->Fill(Leading_pt,Aj);
626 fH2JetsJetAKT04_pt->Fill(Leading_pt,sLeading_pt);
629 fH1leadJetMCAKT04_pt_dijet->Fill(Leading_pt);
630 fH1subJetMCAKT04_pt_dijet ->Fill(sLeading_pt);
631 fH2JetsJetMCAKT04_Aj->Fill(Leading_pt,Aj);
632 fH2JetsJetMCAKT04_pt->Fill(Leading_pt,sLeading_pt);
635 if(algorithm==0)findsLJet=findsLJetAOD;
636 if(algorithm==1)findsLJet=findsLJetMC2;
637 if(algorithm==2)findsLJet=findsLJetMC;
638 ////++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
640 if(algorithm>=2)continue;
642 if((findsLJet)&&(Leading_pt>10.)&&(sLeading_pt>10.)){
643 for(int eb=0;eb<5;eb++){//count number of Di-Jet in pt bin
644 if(TMath::Abs(Leading_pt -20.*(eb+1))<10.){
645 if(algorithm==0)fH1AKT04_ndiJ_ediv[eb]->Fill(1);
648 fJetBranch = "tracks";
649 TClonesArray* tracks = dynamic_cast <TClonesArray*> (fAODIn->FindListObject(fJetBranch.Data()));
652 Int_t nt = tracks->GetEntriesFast();
653 AliAODTrack* trackAOD;
655 for(int njet=0;njet<Jet_n[algorithm];njet++){
656 if(njet!=nLJet)continue;
657 double eta_cut_Jet=0.5;
658 if(TMath::Abs(Jet_eta[algorithm][njet])<eta_cut_Jet){
659 for(int eb=0;eb<5;eb++){
660 if(TMath::Abs(Jet_pt[algorithm][njet] -20.*(eb+1))<10.){
661 for(int ntrack =0;ntrack<nt;ntrack++){
662 trackAOD = (AliAODTrack*) (tracks->At(ntrack));
663 if(trackAOD->TestFilterMask(Filtermask)){
664 Track_pt [ntrack] = trackAOD->Pt();
665 Track_phi [ntrack] = trackAOD->Phi();
666 Track_eta [ntrack] = trackAOD->Eta();
667 double DelPhi = DeltaPhi(Jet_phi[algorithm][njet],Track_phi[ntrack]);
668 if(TMath::Abs(Track_eta[ntrack])<0.9){
669 for(int teb=0;teb<5;teb++){
670 if(teb==0){if(!(Track_pt[ntrack]>0.15))continue;}
671 if(teb==1){if(!((Track_pt[ntrack]<1.5)&&(Track_pt[ntrack]>0.15)))continue;}
672 if(teb==2){if(!((Track_pt[ntrack]<3.0)&&(Track_pt[ntrack]>1.5)))continue;}
673 if(teb==3){if(!((Track_pt[ntrack]<4.5)&&(Track_pt[ntrack]>3.0)))continue;}
674 if(teb==4){if(!(Track_pt[ntrack]>4.5))continue;}
676 fH1JetHadronAKT04_dphi_ediv [eb][teb]->Fill(DelPhi);
677 fH1JetHadronAKT04_dphi_tptweight_ediv [eb][teb]->Fill(DelPhi,Track_pt[ntrack]);
678 fH1JetHadronAKT04_dphi_tJptweight_ediv [eb][teb]->Fill(DelPhi,Track_pt[ntrack]/Jet_pt[algorithm][njet]);
691 for(int eb=0;eb<5;eb++){
693 if(TMath::Abs(ptLJetAOD -20.*(eb+1))<10.){
694 DPhi = DeltaPhi(phiLJetMC,phiLJetAOD);
695 fH1leadJetMCAKT04_dphiResolution[eb]->Fill(DPhi);
696 DPhi = DeltaPhi(phisLJetMC,phisLJetAOD);
697 fH1subJetMCAKT04_dphiResolution[eb]->Fill(DPhi);
706 PostData(1, fHistList);
710 //________________________________________________________________________
711 void AliAnalysisTaskJetHadronCorrelation::Terminate(Option_t *)
713 // Terminate analysis
714 if (fDebug) printf("AnalysisTaskPt: Terminate() \n");
719 Int_t AliAnalysisTaskJetHadronCorrelation::GetListOfJets(TList *list,TClonesArray* jarray,Int_t type){
721 if(fDebug>2)Printf("%s:%d Selecting jets with cuts %d",(char*)__FILE__,__LINE__,type);
725 Printf("%s:%d no Jet array",(char*)__FILE__,__LINE__);
730 for(int ij=0;ij<jarray->GetEntries();ij++){
731 AliAODJet* jet = (AliAODJet*)jarray->At(ij);
734 // No cut at all, main purpose here is sorting
740 if(JetSelected(jet)){
754 Bool_t AliAnalysisTaskJetHadronCorrelation::JetSelected(AliAODJet *jet){
755 Bool_t selected = false;
757 if(!jet)return selected;
759 if(fabs(jet->Eta())<fJetRecEtaWindow&&jet->Pt()>fMinJetPt){
767 Double_t AliAnalysisTaskJetHadronCorrelation::DeltaPhi(Double_t phi1,Double_t phi2){
768 Float_t pi=TMath::Pi();
769 Double_t dphi = phi1-phi2;
770 if (dphi<(-1./2*pi))dphi = dphi +2*pi;
771 else if(dphi>( 3./2*pi))dphi = dphi -2*pi;
775 Float_t AliAnalysisTaskJetHadronCorrelation::GetTotalEvents(const char* currFile){
777 TString file_es(currFile);
778 if(file_es.Contains("root_archive.zip#")){
779 Ssiz_t pos1 = file_es.Index("root_archive",12,TString::kExact);
780 Ssiz_t pos = file_es.Index("#",1,pos1,TString::kExact);
781 file_es.Replace(pos+1,20,"");
784 // not an archive take the basename....
785 file_es.ReplaceAll(gSystem->BaseName(file_es.Data()),"");
789 cAdd += Form("%02d_",(int)((Radius+0.01)*10.));
790 cAdd += Form("B%d",(int)BackM);
791 cAdd += Form("_Filter%05d",Filtermask);
792 cAdd += Form("_Cut%05d",(int)(1000.*TrackPtcut));
793 cAdd += Form("_Skip%02d",SkipCone);
794 TString Dirname,Listname;
795 Dirname = Form("PWG4_cluster_AOD__%s%s",JFAlg.Data(),cAdd.Data());
796 Listname = Form("pwg4cluster_AOD__%s%s",JFAlg.Data(),cAdd.Data());
798 TFile *feventstat = TFile::Open(Form("%s%s",file_es.Data(),"JetTasksOutput.root"));
799 gROOT->Cd(Dirname.Data());
800 TList *templist = (TList*)gROOT->FindObject(Listname.Data());
801 TH1F* temphist = (TH1F*)templist->FindObject("fh1Trials");
802 totalevent = temphist->Integral();
803 //cout<<temphist->Integral()<<endl;