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 "AliAODJet.h"
44 #include "AliAODJetEventBackground.h"
45 #include "AliMCParticle.h"
46 #include "AliAODMCParticle.h"
47 #include "AliMCEventHandler.h"
48 #include "AliMCEvent.h"
51 #include "AliAODHeader.h"
52 #include "AliAODMCHeader.h"
53 //#include "AliGenPythiaEventHeader.h"
54 #include "AliJetKineReaderHeader.h"
55 #include "AliGenCocktailEventHeader.h"
56 #include "AliInputEventHandler.h"
57 #include "AliGenEventHeader.h"
58 #include "AliGenDPMjetEventHeader.h"
62 #include "AliAnalysisTaskJetHadronCorrelation.h"
63 #include "AliAnalysisTaskPhiCorrelations.h"
64 //#include "AliAnalysisHelperJetTasks.h"
65 #include "AliPWG4HighPtQAMC.h"
70 ClassImp(AliAnalysisTaskJetHadronCorrelation)
72 //________________________________________________________________________
73 AliAnalysisTaskJetHadronCorrelation::AliAnalysisTaskJetHadronCorrelation():
91 fJetRecEtaWindow(0.5), // eta window for rec jets
93 fHistList(0x0), // Output list
99 fH1leadJetAKT04_pt (0x0),
100 fH1leadJetAKT04_pt_dijet (0x0),
101 fH1subJetAKT04_pt_dijet (0x0),
102 fH2JetsJetAKT04_dphi (0x0),
103 fH2JetsJetAKT04_deta (0x0),
104 fH2JetsJetAKT04_Aj (0x0),
105 fH2JetsJetAKT04_pt (0x0),
106 fH1JetMCAKT04_pt (0x0),
107 fH1leadJetMCAKT04_pt (0x0),
108 fH1leadJetMCAKT04_pt_dijet (0x0),
109 fH1subJetMCAKT04_pt_dijet (0x0),
110 fH2JetsJetMCAKT04_dphi (0x0),
111 fH2JetsJetMCAKT04_deta (0x0),
112 fH2JetsJetMCAKT04_Aj (0x0),
113 fH2JetsJetMCAKT04_pt (0x0)
120 for(int j=0;j<5;j++){
121 fH1AKT04_ndiJ_ediv[j]=0;
122 fH1leadJetMCAKT04_dphiResolution [j]=0;
123 fH1subJetMCAKT04_dphiResolution [j]=0;
124 for(int k=0;k<5;k++){
125 fH1JetHadronAKT04_dphi_ediv [j][k]=0;
126 fH1JetHadronAKT04_dphi_tptweight_ediv [j][k]=0;
127 fH1JetHadronAKT04_dphi_tJptweight_ediv [j][k]=0;
131 for(int j=0;j<5;j++){
132 fH1AKT04_ndiJ_ediv[j]=0;
133 for(int k=0;k<5;k++){
134 fH1JetHadronAKT04_dphi_ediv [j][k]=0;
135 fH1JetHadronAKT04_dphi_tptweight_ediv [j][k]=0;
136 fH1JetHadronAKT04_dphi_tJptweight_ediv [j][k]=0;
142 // Default constructor
145 //________________________________________________________________________
146 AliAnalysisTaskJetHadronCorrelation::AliAnalysisTaskJetHadronCorrelation(const char *name):
147 AliAnalysisTaskSE(name),
148 fUseAODInput(kFALSE),
164 fJetRecEtaWindow(0.5), // eta window for rec jets
166 fHistList(0x0), // Output list
172 fH1JetAKT04_pt (0x0),
173 fH1leadJetAKT04_pt (0x0),
174 fH1leadJetAKT04_pt_dijet (0x0),
175 fH1subJetAKT04_pt_dijet (0x0),
176 fH2JetsJetAKT04_dphi (0x0),
177 fH2JetsJetAKT04_deta (0x0),
178 fH2JetsJetAKT04_Aj (0x0),
179 fH2JetsJetAKT04_pt (0x0),
180 fH1JetMCAKT04_pt (0x0),
181 fH1leadJetMCAKT04_pt (0x0),
182 fH1leadJetMCAKT04_pt_dijet (0x0),
183 fH1subJetMCAKT04_pt_dijet (0x0),
184 fH2JetsJetMCAKT04_dphi (0x0),
185 fH2JetsJetMCAKT04_deta (0x0),
186 fH2JetsJetMCAKT04_Aj (0x0),
187 fH2JetsJetMCAKT04_pt (0x0)
192 for(int j=0;j<5;j++){
193 fH1AKT04_ndiJ_ediv[j]=0;
194 fH1leadJetMCAKT04_dphiResolution [j]=0;
195 fH1subJetMCAKT04_dphiResolution [j]=0;
196 for(int k=0;k<5;k++){
197 fH1JetHadronAKT04_dphi_ediv [j][k]=0;
198 fH1JetHadronAKT04_dphi_tptweight_ediv [j][k]=0;
199 fH1JetHadronAKT04_dphi_tJptweight_ediv [j][k]=0;
203 for(int j=0;j<5;j++){
204 fH1AKT04_ndiJ_ediv[j]=0;
205 for(int k=0;k<5;k++){
206 fH1JetHadronAKT04_dphi_ediv [j][k]=0;
207 fH1JetHadronAKT04_dphi_tptweight_ediv [j][k]=0;
208 fH1JetHadronAKT04_dphi_tJptweight_ediv [j][k]=0;
213 // Default constructor
217 // Define input and output slots here
218 // Input slot #0 works with a TChain
219 DefineInput(0, TChain::Class());
220 // Output slot #0 id reserved by the base class for AOD
221 // Output slot #1 writes into a TH1 container
222 DefineOutput(1, TList::Class());
226 //________________________________________________________________________
227 void AliAnalysisTaskJetHadronCorrelation::UserCreateOutputObjects()
233 fHistList = new TList();fHistList->SetOwner(kTRUE); cout<<"TList is created for output "<<endl;
234 //if (!fHistList){ fHistList = new TList();fHistList->SetOwner(kTRUE); cout<<"TList is created for output "<<endl;}
236 Bool_t oldStatus = TH1::AddDirectoryStatus();
237 TH1::AddDirectory(kFALSE);
239 Float_t pi=TMath::Pi();
240 //gStyle->SetPalette(1);
245 fH1Xsec = new TProfile("Xsec" ,"Xsec" ,1,0,1);
246 fH1Trials = new TH1F ("Trials" ,"Trials" ,1,0,1);
247 fH1JetMCAKT04_pt = new TH1F("JetMCAKT04_pt" ,"JetMCAKT04_pt" ,400,0,400);
248 fH1leadJetMCAKT04_pt = new TH1F("leadJetMCAKT04_pt" ,"leadJetMCAKT04_pt" ,400,0,400);
249 fH1leadJetMCAKT04_pt_dijet = new TH1F("leadJetMCAKT04_pt_dijet","leadJetMCAKT04_pt_dijet",400,0,400);
250 fH1subJetMCAKT04_pt_dijet = new TH1F("subJetMCAKT04_pt_dijet" ,"subJetMCAKT04_pt_dijet" ,400,0,400);
251 fH1JetAKT04_pt = new TH1F("JetAKT04_pt" ,"JetAKT04_pt" ,400,0,400);
252 fH1leadJetAKT04_pt = new TH1F("leadJetAKT04_pt" ,"leadJetAKT04_pt" ,400,0,400);
253 fH1leadJetAKT04_pt_dijet = new TH1F("leadJetAKT04_pt_dijet" ,"leadJetAKT04_pt_dijet" ,400,0,400);
254 fH1subJetAKT04_pt_dijet = new TH1F("subJetAKT04_pt_dijet" ,"subJetAKT04_pt_dijet" ,400,0,400);
255 histname = Form("JetsJetMCAKT04_dphi");
256 fH2JetsJetMCAKT04_dphi = new TH2F(histname,histname,200,0,400,100,-2*pi,2*pi);
257 histname = Form("JetsJetMCAKT04_deta");
258 fH2JetsJetMCAKT04_deta = new TH2F(histname,histname,200,0,400,100,-1.5,1.5);
259 histname = Form("JetsJetMCAKT04_Aj");
260 fH2JetsJetMCAKT04_Aj = new TH2F(histname,histname,200,0,400,100,0,1.2);
261 histname = Form("JetsJetMCAKT04_pt");
262 fH2JetsJetMCAKT04_pt = new TH2F(histname,histname,200,0,400,200,0,400);
263 histname = Form("JetsJetAKT04_dphi");
264 fH2JetsJetAKT04_dphi = new TH2F(histname,histname,200,0,400,100,-2*pi,2*pi);
265 histname = Form("JetsJetAKT04_deta");
266 fH2JetsJetAKT04_deta = new TH2F(histname,histname,200,0,400,100,-1.5,1.5);
267 histname = Form("JetsJetAKT04_Aj");
268 fH2JetsJetAKT04_Aj = new TH2F(histname,histname,200,0,400,100,0,1.2);
269 histname = Form("JetsJetAKT04_pt");
270 fH2JetsJetAKT04_pt = new TH2F(histname,histname,200,0,400,200,0,400);
271 for(int j=0;j<5;j++){
272 histname = Form("AKT04_ndiJ_ediv%d",j);
273 fH1AKT04_ndiJ_ediv[j]= new TH1F(histname,histname,1,1,2);
274 histname = Form("leadJetMCAKT04_dphiResolution%d",j);
275 fH1leadJetMCAKT04_dphiResolution[j] = new TH1F(histname,histname,200,-2*pi,2*pi);
276 histname = Form("subJetMCAKT04_dphiResolution%d",j);
277 fH1subJetMCAKT04_dphiResolution[j] = new TH1F(histname,histname,200,-2*pi,2*pi);
278 for(int k=0;k<5;k++){
279 histname = Form("JetHadronAKT04_dphi_ediv%d%d",j,k);
280 fH1JetHadronAKT04_dphi_ediv [j][k]= new TH1F(histname,histname,200,-2*pi,2*pi);
281 histname = Form("JetHadronAKT04_dphi_tptweight_ediv%d%d",j,k);
282 fH1JetHadronAKT04_dphi_tptweight_ediv [j][k]= new TH1F(histname,histname,200,-2*pi,2*pi);
283 histname = Form("JetHadronAKT04_dphi_tJptweight_ediv%d%d",j,k);
284 fH1JetHadronAKT04_dphi_tJptweight_ediv [j][k]= new TH1F(histname,histname,200,-2*pi,2*pi);
287 fHistList->Add(fH1Xsec);
288 fHistList->Add(fH1Trials);
289 fHistList->Add(fH1JetMCAKT04_pt );
290 fHistList->Add(fH1leadJetMCAKT04_pt );
291 fHistList->Add(fH1leadJetMCAKT04_pt_dijet);
292 fHistList->Add(fH1subJetMCAKT04_pt_dijet );
293 fHistList->Add(fH1JetAKT04_pt );
294 fHistList->Add(fH1leadJetAKT04_pt );
295 fHistList->Add(fH1leadJetAKT04_pt_dijet );
296 fHistList->Add(fH1subJetAKT04_pt_dijet );
297 fHistList->Add(fH2JetsJetMCAKT04_dphi);
298 fHistList->Add(fH2JetsJetMCAKT04_deta);
299 fHistList->Add(fH2JetsJetMCAKT04_Aj );
300 fHistList->Add(fH2JetsJetMCAKT04_pt );
301 fHistList->Add(fH2JetsJetAKT04_dphi );
302 fHistList->Add(fH2JetsJetAKT04_deta );
303 fHistList->Add(fH2JetsJetAKT04_Aj );
304 fHistList->Add(fH2JetsJetAKT04_pt );
305 for(int j=0;j<5;j++){
306 fHistList->Add(fH1AKT04_ndiJ_ediv [j]);
307 fHistList->Add(fH1leadJetMCAKT04_dphiResolution [j]);
308 fHistList->Add(fH1subJetMCAKT04_dphiResolution [j]);
309 for(int k=0;k<5;k++){
310 fHistList->Add(fH1JetHadronAKT04_dphi_ediv [j][k]);
311 fHistList->Add(fH1JetHadronAKT04_dphi_tptweight_ediv [j][k]);
312 fHistList->Add(fH1JetHadronAKT04_dphi_tJptweight_ediv [j][k]);
317 fH1Events = new TH1F("Events" ,"Events" ,1,0,1);
318 fH1JetAKT04_pt = new TH1F("JetAKT04_pt" ,"JetAKT04_pt" ,400,0,400);
319 fH1leadJetAKT04_pt = new TH1F("leadJetAKT04_pt" ,"leadJetAKT04_pt" ,400,0,400);
320 fH1leadJetAKT04_pt_dijet = new TH1F("leadJetAKT04_pt_dijet" ,"leadJetAKT04_pt_dijet" ,400,0,400);
321 fH1subJetAKT04_pt_dijet = new TH1F("subJetAKT04_pt_dijet" ,"subJetAKT04_pt_dijet" ,400,0,400);
322 histname = Form("JetsJetAKT04_dphi");
323 fH2JetsJetAKT04_dphi = new TH2F(histname,histname,200,0,400,100,-2*pi,2*pi);
324 histname = Form("JetsJetAKT04_deta");
325 fH2JetsJetAKT04_deta = new TH2F(histname,histname,200,0,400,100,-1.5,1.5);
326 histname = Form("JetsJetAKT04_Aj");
327 fH2JetsJetAKT04_Aj = new TH2F(histname,histname,200,0,400,100,0,1.2);
328 histname = Form("JetsJetAKT04_pt");
329 fH2JetsJetAKT04_pt = new TH2F(histname,histname,200,0,400,200,0,400);
330 for(int j=0;j<5;j++){
331 histname = Form("AKT04_ndiJ_ediv%d",j);
332 fH1AKT04_ndiJ_ediv[j]= new TH1F(histname,histname,1,1,2);
333 for(int k=0;k<5;k++){
334 histname = Form("JetHadronAKT04_dphi_ediv%d%d",j,k);
335 fH1JetHadronAKT04_dphi_ediv [j][k]= new TH1F(histname,histname,200,-2*pi,2*pi);
336 histname = Form("JetHadronAKT04_dphi_tptweight_ediv%d%d",j,k);
337 fH1JetHadronAKT04_dphi_tptweight_ediv [j][k]= new TH1F(histname,histname,200,-2*pi,2*pi);
338 histname = Form("JetHadronAKT04_dphi_tJptweight_ediv%d%d",j,k);
339 fH1JetHadronAKT04_dphi_tJptweight_ediv [j][k]= new TH1F(histname,histname,200,-2*pi,2*pi);
342 fHistList->Add(fH1Events);
343 fHistList->Add(fH1JetAKT04_pt );
344 fHistList->Add(fH1leadJetAKT04_pt );
345 fHistList->Add(fH1leadJetAKT04_pt_dijet);
346 fHistList->Add(fH1subJetAKT04_pt_dijet );
347 fHistList->Add(fH2JetsJetAKT04_dphi );
348 fHistList->Add(fH2JetsJetAKT04_deta );
349 fHistList->Add(fH2JetsJetAKT04_Aj );
350 fHistList->Add(fH2JetsJetAKT04_pt );
351 for(int j=0;j<5;j++){
352 fHistList->Add(fH1AKT04_ndiJ_ediv [j]);
353 for(int k=0;k<5;k++){
354 fHistList->Add(fH1JetHadronAKT04_dphi_ediv [j][k]);
355 fHistList->Add(fH1JetHadronAKT04_dphi_tptweight_ediv [j][k]);
356 fHistList->Add(fH1JetHadronAKT04_dphi_tJptweight_ediv [j][k]);
363 // =========== Switch on Sumw2 for all histos ===========
364 for (Int_t i=0; i<fHistList->GetEntries(); ++i)
366 TH1 *h1 = dynamic_cast<TH1*>(fHistList->At(i));
372 THnSparse *hn = dynamic_cast<THnSparse*>(fHistList->At(i));
375 TH1::AddDirectory(oldStatus);
380 PostData(1,fHistList);
384 //----------------------------------------------------------------------
385 void AliAnalysisTaskJetHadronCorrelation::Init()
388 if (fDebug) printf("AnalysisTaskJetHadronCorrelation::Init() \n");
392 Bool_t AliAnalysisTaskJetHadronCorrelation::Notify()
397 fAODIn = dynamic_cast<AliAODEvent*>(InputEvent());
398 fAODOut = AODEvent();
399 if(fNonStdFile.Length()!=0){
400 AliAODHandler *aodH = dynamic_cast<AliAODHandler*>(AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler());
401 fAODExtension = (aodH?aodH->GetExtension(fNonStdFile.Data()):0);
403 if(fDebug>1)Printf("AODExtension found for %s ",fNonStdFile.Data());
407 TTree *tree = AliAnalysisManager::GetAnalysisManager()->GetTree();
412 TFile *curfile = tree->GetCurrentFile();
414 Error("Notify","No current file");
420 AliPWG4HighPtQAMC::PythiaInfoFromFile(curfile->GetName(),fxsec,ftrial);
421 //cout<<" Xsec "<<fxsec<<" trial "<<ftrial<<endl;
422 fH1Xsec ->Fill(0.,fxsec);
423 fH1Trials->Fill(0.,ftrial);
425 //else fH1Events->Fill(0.,ftrial);
429 printf("Reading File %s ",fInputHandler->GetTree()->GetCurrentFile()->GetName());
432 void AliAnalysisTaskJetHadronCorrelation::FinishTaskOutput()
438 //________________________________________________________________________
439 void AliAnalysisTaskJetHadronCorrelation::UserExec(Option_t *)
443 // Main loop (called each event)
444 // Execute analysis for current event
447 TObject* handler = AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler();
448 if( handler && handler->InheritsFrom("AliAODInputHandler") ) {
449 fAOD = ((AliAODInputHandler*)handler)->GetEvent();
450 if(fUseAODInput) fAODIn = fAOD;
451 if (fDebug > 1) Printf("%s:%d AOD event from input", (char*)__FILE__,__LINE__);
454 handler = AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler();
455 if( handler && handler->InheritsFrom("AliAODHandler") ) {
456 fAOD = ((AliAODHandler*)handler)->GetAOD();
458 if (fDebug > 1) Printf("%s:%d AOD event from output", (char*)__FILE__,__LINE__);
462 if(!fAODIn && !fUseAODInput){ // case we have AOD in input & output and want jets from output
463 TObject* outHandler = AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler();
464 if( outHandler && outHandler->InheritsFrom("AliAODHandler") ) {
465 fAODIn = ((AliAODHandler*)outHandler)->GetAOD();
466 if (fDebug > 1) Printf("%s:%d jets from output AOD", (char*)__FILE__,__LINE__);
470 if(fNonStdFile.Length()!=0){
471 // case we have an AOD extension - fetch the jets from the extended output
473 AliAODHandler *aodH = dynamic_cast<AliAODHandler*>(AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler());
474 fAODExtension = (aodH?aodH->GetExtension(fNonStdFile.Data()):0);
476 if(fDebug>1)Printf("AODExtension not found for %s",fNonStdFile.Data());
482 //fAODIn = dynamic_cast<AliAODEvent*>(InputEvent());
484 Printf("ERROR %s : fAODIn not available",(char*)__FILE__);
488 AliInputEventHandler* inputHandler = (AliInputEventHandler*)
489 ((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler());
490 if(!(inputHandler->IsEventSelected() & AliVEvent::kMB)){
491 if (fDebug > 1 ) Printf(" Trigger Selection: event REJECTED ... ");
494 if(!IsMC)fH1Events->Fill(0);
496 // start jet analysis
499 Double_t Jet_pt [20][1000];
500 Double_t Jet_eta[20][1000];
501 Double_t Jet_phi[20][1000];
502 Double_t subJet_n [20];
503 Double_t subJet_pt [20][1000];
504 Double_t subJet_eta[20][1000];
505 Double_t subJet_phi[20][1000];
507 Double_t Track_pt [1000];
508 Double_t Track_eta[1000];
509 Double_t Track_phi[1000];
512 for(int i=0;i<20;i++){
515 for(int j=0;j<1000;j++){
520 subJet_phi[i][j]=999.;
521 subJet_eta[i][j]=999.;
528 //////-----------------------------------------------------------------------------------
531 int nLJetAOD=999; double ptLJetAOD=0;double phiLJetAOD=999.;double etaLJetAOD=999.;int nsLJetAOD=900;double ptsLJetAOD=0;double phisLJetAOD=900.;double etasLJetAOD=900.;
532 int nLJetMC2=999; double ptLJetMC2=0;double phiLJetMC2=999.;double etaLJetMC2=999.;int nsLJetMC2=900;double ptsLJetMC2=0;double phisLJetMC2=900.;double etasLJetMC2=900.;
533 int nLJetMC =999; double ptLJetMC =0;double phiLJetMC =999.;double etaLJetMC =999.;int nsLJetMC =900;double ptsLJetMC =0;double phisLJetMC =900.;double etasLJetMC =900.;
534 bool findLJetAOD=false;bool findsLJetAOD=false;bool findsLJetAOD_temp=false;
535 bool findLJetMC2=false;bool findsLJetMC2=false;bool findsLJetMC2_temp=false;
536 bool findLJetMC =false;bool findsLJetMC =false;bool findsLJetMC_temp =false;
537 bool findsLJet=false;
542 cAdd += Form("%02d_",(int)((Radius+0.01)*10.));
543 cAdd += Form("B%d",(int)BackM);
544 cAdd += Form("_Filter%05d",Filtermask);
545 cAdd += Form("_Cut%05d",(int)(1000.*TrackPtcut));
546 cAdd += Form("_Skip%02d",SkipCone);
547 TString Branchname_gen,Branchname_gen2,Branchname_rec;
548 //Branchname_gen = Form("clustersMCKINE_%s%s",JFAlg.Data(),cAdd.Data());
549 //Branchname_gen2 = Form("clustersMCKINE2_%s%s",JFAlg.Data(),cAdd.Data());
550 Branchname_gen = Form("clustersAODMC_%s%s",JFAlg.Data(),cAdd.Data());
551 Branchname_gen2 = Form("clustersAODMC2_%s%s",JFAlg.Data(),cAdd.Data());
552 Branchname_rec = Form("clustersAOD_%s%s",JFAlg.Data(),cAdd.Data());
555 for(int algorithm=0;algorithm<3;algorithm++){
556 //for LHC11a1 LHC11a2
557 if(algorithm==0)fJetBranch = Branchname_rec.Data();
558 if(algorithm==1)fJetBranch = Branchname_gen2.Data();
559 if(algorithm==2)fJetBranch = Branchname_gen.Data();
561 if((!IsMC&&(algorithm==1||algorithm==2)))continue;
563 TClonesArray* jets = dynamic_cast <TClonesArray*> (fAODIn->FindListObject(fJetBranch.Data()));
565 printf(" Tere are no Branch named %s \n",fJetBranch.Data());
568 Int_t nj = jets->GetEntriesFast();
569 if (fDebug) printf("There are %5d jets in the event \n", nj);
571 Jet_n[algorithm] = nj;
572 int nLjet_in05_pthdiv[20][20];
573 int nsLjet_in05_pthdiv[20][20];
574 for(int i=0;i<20;i++){
575 for(int j=0;j<20;j++){
576 nLjet_in05_pthdiv [i][j]=0;
577 nsLjet_in05_pthdiv[i][j]=0;
580 //Find Leading Jet -------------------------------------------------------
581 for(int njet =0;njet<nj;njet++){
582 jetsAOD = (AliAODJet*) (jets->At(njet));
583 Jet_pt [algorithm][njet] = jetsAOD->Pt();
584 Jet_phi [algorithm][njet] = jetsAOD->Phi();
585 Jet_eta [algorithm][njet] = jetsAOD->Eta();
586 //TRefArray *reftracks = jetsAOD->GetRefTracks();
587 double eta_cut_Jet=0.5;
588 if((TMath::Abs(Jet_eta[algorithm][njet])<eta_cut_Jet)&&(Jet_pt[algorithm][njet]>10.)){
590 fH1JetAKT04_pt->Fill(Jet_pt[algorithm][njet]);
591 if(Jet_pt[algorithm][njet]>ptLJetAOD){
593 nLJetAOD=njet;ptLJetAOD=Jet_pt[algorithm][njet];phiLJetAOD=Jet_phi[algorithm][njet];etaLJetAOD=Jet_eta[algorithm][njet];
597 fH1JetMCAKT04_pt->Fill(Jet_pt[algorithm][njet]);
598 if(Jet_pt[algorithm][njet]>ptLJetMC2){
600 nLJetMC2=njet;ptLJetMC2=Jet_pt[algorithm][njet];phiLJetMC2=Jet_phi[algorithm][njet];etaLJetMC2=Jet_eta[algorithm][njet];
604 if(Jet_pt[algorithm][njet]>ptLJetMC){
606 nLJetMC=njet;ptLJetMC=Jet_pt[algorithm][njet];phiLJetMC=Jet_phi[algorithm][njet];etaLJetMC=Jet_eta[algorithm][njet];
611 //Leading Jet -----------------------------------------------------------
613 if(algorithm==0){nLJet=nLJetAOD;fH1leadJetAKT04_pt->Fill(Jet_pt[algorithm][nLJet]);}
614 if(algorithm==1){nLJet=nLJetMC2;fH1leadJetMCAKT04_pt->Fill(Jet_pt[algorithm][nLJet]);}
615 if(algorithm==2){nLJet=nLJetMC2;}
618 //Find Sub leading Jet ==================================================
619 for(int njet=0;njet<nj;njet++){
620 if(njet==nLJet)continue;
621 jetsAOD = (AliAODJet *)jets->At(njet);
622 subJet_pt [algorithm][njet] = jetsAOD->Pt();
623 subJet_phi[algorithm][njet] = jetsAOD->Phi();
624 subJet_eta[algorithm][njet] = jetsAOD->Eta();
625 double eta_cut_Jet=0.5;
626 if((TMath::Abs(subJet_eta[algorithm][njet])<eta_cut_Jet) && (subJet_pt[algorithm][njet]>10.)){
627 if(subJet_pt[algorithm][njet]>ptsLJetAOD&&algorithm==0){
628 findsLJetAOD_temp=true;
629 nsLJetAOD=njet;ptsLJetAOD=Jet_pt[algorithm][njet];phisLJetAOD=Jet_phi[algorithm][njet];etasLJetAOD=Jet_eta[algorithm][njet];
631 if(subJet_pt[algorithm][njet]>ptsLJetMC2 &&algorithm==1){
632 findsLJetMC2_temp=true;
633 nsLJetMC2=njet;ptsLJetMC2=Jet_pt[algorithm][njet];phisLJetMC2=Jet_phi[algorithm][njet];etasLJetMC2=Jet_eta[algorithm][njet];
635 if(subJet_pt[algorithm][njet]>ptsLJetMC &&algorithm==2){
636 findsLJetMC_temp=true;
637 nsLJetMC =njet;ptsLJetMC =Jet_pt[algorithm][njet];phisLJetMC =Jet_phi[algorithm][njet];etasLJetMC =Jet_eta[algorithm][njet];
641 ////Sub leading Jet ======================================================
643 double Leading_pt=0.;double Leading_phi=999.;double Leading_eta=999.;double sLeading_pt=0.;double sLeading_phi=999.;double sLeading_eta=999.;
644 if(algorithm==0){Leading_pt=ptLJetAOD;Leading_phi=phiLJetAOD;Leading_eta=etaLJetAOD;sLeading_pt=ptsLJetAOD;sLeading_phi=phisLJetAOD;sLeading_eta=etasLJetAOD;}
645 if(algorithm==1){Leading_pt=ptLJetMC2;Leading_phi=phiLJetMC2;Leading_eta=etaLJetMC2;sLeading_pt=ptsLJetMC2;sLeading_phi=phisLJetMC2;sLeading_eta=etasLJetMC2;}
646 if(algorithm==2){Leading_pt=ptLJetMC ;Leading_phi=phiLJetMC ;Leading_eta=etaLJetMC ;sLeading_pt=ptsLJetMC ;sLeading_phi=phisLJetMC ;sLeading_eta=etasLJetMC ;}
648 ////Di-Jet event trigger +++++++++++++++++++++++++++++++++++++++++++++++
649 double DPhi = DeltaPhi(Leading_phi,sLeading_phi);
650 double DEta = Leading_eta-sLeading_eta;
652 fH2JetsJetAKT04_dphi->Fill(Leading_pt,DPhi);
653 fH2JetsJetAKT04_deta->Fill(Leading_pt,DEta);
656 fH2JetsJetMCAKT04_dphi->Fill(Leading_pt,DPhi);
657 fH2JetsJetMCAKT04_deta->Fill(Leading_pt,DEta);
659 if((TMath::Cos(DPhi)<-0.5)&&(Leading_pt>10.)&&(sLeading_pt>10.)){
660 if(algorithm==0)findsLJetAOD=true;
661 if(algorithm==1)findsLJetMC=true;
663 double Aj = (Leading_pt-sLeading_pt)/(Leading_pt+sLeading_pt);
665 fH1leadJetAKT04_pt_dijet->Fill(Leading_pt);
666 fH1subJetAKT04_pt_dijet ->Fill(sLeading_pt);
667 fH2JetsJetAKT04_Aj->Fill(Leading_pt,Aj);
668 fH2JetsJetAKT04_pt->Fill(Leading_pt,sLeading_pt);
671 fH1leadJetMCAKT04_pt_dijet->Fill(Leading_pt);
672 fH1subJetMCAKT04_pt_dijet ->Fill(sLeading_pt);
673 fH2JetsJetMCAKT04_Aj->Fill(Leading_pt,Aj);
674 fH2JetsJetMCAKT04_pt->Fill(Leading_pt,sLeading_pt);
677 if(algorithm==0)findsLJet=findsLJetAOD;
678 if(algorithm==1)findsLJet=findsLJetMC2;
679 if(algorithm==2)findsLJet=findsLJetMC;
680 ////++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
682 if(algorithm>=2)continue;
684 if((findsLJet)&&(Leading_pt>10.)&&(sLeading_pt>10.)){
685 for(int eb=0;eb<5;eb++){//count number of Di-Jet in pt bin
686 if(TMath::Abs(Leading_pt -20.*(eb+1))<10.){
687 if(algorithm==0)fH1AKT04_ndiJ_ediv[eb]->Fill(1);
690 fJetBranch = "tracks";
691 TClonesArray* tracks = dynamic_cast <TClonesArray*> (fAODIn->FindListObject(fJetBranch.Data()));
694 Int_t nt = tracks->GetEntriesFast();
695 AliAODTrack* trackAOD;
697 for(int njet=0;njet<Jet_n[algorithm];njet++){
698 if(njet!=nLJet)continue;
699 double eta_cut_Jet=0.5;
700 if(TMath::Abs(Jet_eta[algorithm][njet])<eta_cut_Jet){
701 for(int eb=0;eb<5;eb++){
702 if(TMath::Abs(Jet_pt[algorithm][njet] -20.*(eb+1))<10.){
703 for(int ntrack =0;ntrack<nt;ntrack++){
704 trackAOD = (AliAODTrack*) (tracks->At(ntrack));
705 if(trackAOD->TestFilterMask(Filtermask)){
706 Track_pt [ntrack] = trackAOD->Pt();
707 Track_phi [ntrack] = trackAOD->Phi();
708 Track_eta [ntrack] = trackAOD->Eta();
709 double DelPhi = DeltaPhi(Jet_phi[algorithm][njet],Track_phi[ntrack]);
710 if(TMath::Abs(Track_eta[ntrack])<0.9){
711 for(int teb=0;teb<5;teb++){
712 if(teb==0){if(!(Track_pt[ntrack]>0.15))continue;}
713 if(teb==1){if(!((Track_pt[ntrack]<1.5)&&(Track_pt[ntrack]>0.15)))continue;}
714 if(teb==2){if(!((Track_pt[ntrack]<3.0)&&(Track_pt[ntrack]>1.5)))continue;}
715 if(teb==3){if(!((Track_pt[ntrack]<4.5)&&(Track_pt[ntrack]>3.0)))continue;}
716 if(teb==4){if(!(Track_pt[ntrack]>4.5))continue;}
718 fH1JetHadronAKT04_dphi_ediv [eb][teb]->Fill(DelPhi);
719 fH1JetHadronAKT04_dphi_tptweight_ediv [eb][teb]->Fill(DelPhi,Track_pt[ntrack]);
720 fH1JetHadronAKT04_dphi_tJptweight_ediv [eb][teb]->Fill(DelPhi,Track_pt[ntrack]/Jet_pt[algorithm][njet]);
733 for(int eb=0;eb<5;eb++){
735 if(TMath::Abs(ptLJetAOD -20.*(eb+1))<10.){
736 DPhi = DeltaPhi(phiLJetMC,phiLJetAOD);
737 fH1leadJetMCAKT04_dphiResolution[eb]->Fill(DPhi);
738 DPhi = DeltaPhi(phisLJetMC,phisLJetAOD);
739 fH1subJetMCAKT04_dphiResolution[eb]->Fill(DPhi);
748 PostData(1, fHistList);
752 //________________________________________________________________________
753 void AliAnalysisTaskJetHadronCorrelation::Terminate(Option_t *)
755 // Terminate analysis
756 if (fDebug) printf("AnalysisTaskPt: Terminate() \n");
761 Int_t AliAnalysisTaskJetHadronCorrelation::GetListOfJets(TList *list,TClonesArray* jarray,Int_t type){
763 if(fDebug>2)Printf("%s:%d Selecting jets with cuts %d",(char*)__FILE__,__LINE__,type);
767 Printf("%s:%d no Jet array",(char*)__FILE__,__LINE__);
772 for(int ij=0;ij<jarray->GetEntries();ij++){
773 AliAODJet* jet = (AliAODJet*)jarray->At(ij);
776 // No cut at all, main purpose here is sorting
782 if(JetSelected(jet)){
796 Bool_t AliAnalysisTaskJetHadronCorrelation::JetSelected(AliAODJet *jet){
797 Bool_t selected = false;
799 if(!jet)return selected;
801 if(fabs(jet->Eta())<fJetRecEtaWindow&&jet->Pt()>fMinJetPt){
809 Double_t AliAnalysisTaskJetHadronCorrelation::DeltaPhi(Double_t phi1,Double_t phi2){
810 Float_t pi=TMath::Pi();
811 Double_t dphi = phi1-phi2;
812 if (dphi<(-1./2*pi))dphi = dphi +2*pi;
813 else if(dphi>( 3./2*pi))dphi = dphi -2*pi;
817 //Float_t AliAnalysisTaskJetHadronCorrelation::GetTotalEvents(const char* currFile){
818 // Float_t totalevent;
819 // //TString file_es(currFile);
820 // //if(file_es.Contains("root_archive.zip#")){
821 // // Ssiz_t pos1 = file_es.Index("root_archive",12,TString::kExact);
822 // // Ssiz_t pos = file_es.Index("#",1,pos1,TString::kExact);
823 // // file_es.Replace(pos+1,20,"");
826 // // // not an archive take the basename....
827 // // file_es.ReplaceAll(gSystem->BaseName(file_es.Data()),"");
830 // //TString cAdd = "";
831 // //cAdd += Form("%02d_",(int)((Radius+0.01)*10.));
832 // //cAdd += Form("B%d",(int)BackM);
833 // //cAdd += Form("_Filter%05d",Filtermask);
834 // //cAdd += Form("_Cut%05d",(int)(1000.*TrackPtcut));
835 // //cAdd += Form("_Skip%02d",SkipCone);
836 // //TString Dirname,Listname;
837 // //Dirname = Form("PWG4_cluster_AOD__%s%s",JFAlg.Data(),cAdd.Data());
838 // //Listname = Form("pwg4cluster_AOD__%s%s",JFAlg.Data(),cAdd.Data());
840 // //TFile *feventstat = TFile::Open(Form("%s%s",file_es.Data(),"JetTasksOutput.root"));
841 // //gROOT->Cd(Dirname.Data());
842 // //TList *templist = (TList*)gROOT->FindObject(Listname.Data());
843 // //TH1F* temphist = (TH1F*)templist->FindObject("fh1Trials");
844 // //totalevent = temphist->Integral();
845 // ////cout<<temphist->Integral()<<endl;
846 // //delete feventstat;
847 // return totalevent;