]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGJE/UserTasks/AliAnalysisTaskJetHadronCorrelation.cxx
using correct branch name
[u/mrichter/AliRoot.git] / PWGJE / UserTasks / AliAnalysisTaskJetHadronCorrelation.cxx
CommitLineData
32de1459 1//#include <string.h>
2//#include <TStyle.h>
3#include <list>
4#include <string>
5
6#include "TTree.h"
7#include "TCanvas.h"
8#include "AliAnalysisTask.h"
9#include "AliInputEventHandler.h"
10#include "AliESDtrack.h"
11#include "AliAODVertex.h"
12#include "AliAODCluster.h"
13
14#include <TROOT.h>
15#include <TRandom.h>
16#include <TSystem.h>
17#include <TInterpreter.h>
18#include <TChain.h>
19#include <TFile.h>
20#include <TKey.h>
21#include <TH1F.h>
22#include <TH2F.h>
23#include <TH3F.h>
24#include <TProfile.h>
25#include <TList.h>
26#include <TLorentzVector.h>
27#include <TClonesArray.h>
28#include <TRefArray.h>
29
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"
48#include "AliStack.h"
49
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"
58
59
60
61#include "AliAnalysisTaskJetHadronCorrelation.h"
62#include "AliAnalysisTaskPhiCorrelations.h"
63//#include "AliAnalysisHelperJetTasks.h"
64#include "AliPWG4HighPtQAMC.h"
65
66
67
68
69ClassImp(AliAnalysisTaskJetHadronCorrelation)
70
71 //________________________________________________________________________
72 AliAnalysisTaskJetHadronCorrelation::AliAnalysisTaskJetHadronCorrelation():
73 AliAnalysisTaskSE(),
74 fUseAODInput(kFALSE),
75 fFillAOD(kFALSE),
76 fJetBranch("jets"),
77 fNonStdFile(""),
78 fAODIn(0x0),
79 fAODOut(0x0),
80 fAODExtension(0x0),
81 JFAlg("ANTIKT"),
82 Radius(0.4),
83 Filtermask(256),
84 BackM(0),
85 TrackPtcut(0.15),
86 SkipCone(0),
87 IsMC(kTRUE),
88 fxsec(0.),
89 ftrial(1.),
90 fJetRecEtaWindow(0.5), // eta window for rec jets
91 fMinJetPt(10),
92 fHistList(0x0), // Output list
93 fIfiles(0),
94 fH1Events(0x0),
95 fH1Xsec(0x0),
96 fH1Trials(0x0),
97 fH1JetAKT04_pt (0x0),
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)
113
114
115{
116
117
118 if(IsMC){
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;
127 }
128 }
129 }else{
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;
136 }
137 }
138 }
139
140
141 // Default constructor
142}
143
144//________________________________________________________________________
145AliAnalysisTaskJetHadronCorrelation::AliAnalysisTaskJetHadronCorrelation(const char *name):
146 AliAnalysisTaskSE(name),
147 fUseAODInput(kFALSE),
148 fFillAOD(kFALSE),
149 fJetBranch("jets"),
150 fNonStdFile(""),
151 fAODIn(0x0),
152 fAODOut(0x0),
153 fAODExtension(0x0),
154 JFAlg("ANTIKT"),
155 Radius(0.4),
156 Filtermask(256),
157 BackM(0),
158 TrackPtcut(0.15),
159 SkipCone(0),
160 IsMC(kTRUE),
161 fxsec(0.),
162 ftrial(1.),
163 fJetRecEtaWindow(0.5), // eta window for rec jets
164 fMinJetPt(10),
165 fHistList(0x0), // Output list
166 fIfiles(0),
167
168 fH1Events(0x0),
169 fH1Xsec(0x0),
170 fH1Trials(0x0),
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)
187
188
189{
190 if(IsMC){
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;
199 }
200 }
201 }else{
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;
208 }
209 }
210 }
211
212 // Default constructor
213
214 // Constructor
215
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());
222
223}
224
225//________________________________________________________________________
226void AliAnalysisTaskJetHadronCorrelation::UserCreateOutputObjects()
227{
228 // Create histograms
229 // Called once
230
231
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;}
234
235 Bool_t oldStatus = TH1::AddDirectoryStatus();
236 TH1::AddDirectory(kFALSE);
237
238 Float_t pi=TMath::Pi();
239 //gStyle->SetPalette(1);
240
241
242 char *histname;
243 if(IsMC){
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);
284 }
285 }
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]);
312 }
313 }
314 }
315 else{
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);
339 }
340 }
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]);
356 }
357 }
358 }
359
360
361
362 // =========== Switch on Sumw2 for all histos ===========
363 for (Int_t i=0; i<fHistList->GetEntries(); ++i)
364 {
365 TH1 *h1 = dynamic_cast<TH1*>(fHistList->At(i));
366 if (h1)
367 {
368 h1->Sumw2();
369 continue;
370 }
371 THnSparse *hn = dynamic_cast<THnSparse*>(fHistList->At(i));
372 if(hn)hn->Sumw2();
373 }
374 TH1::AddDirectory(oldStatus);
375
376
377
378
379 PostData(1,fHistList);
380
381}
382
383//----------------------------------------------------------------------
384void AliAnalysisTaskJetHadronCorrelation::Init()
385{
386 // Initialization
387 if (fDebug) printf("AnalysisTaskJetHadronCorrelation::Init() \n");
388
389}
390
391Bool_t AliAnalysisTaskJetHadronCorrelation::Notify()
392{
393
394
395 fIfiles++;
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);
401 if(fAODExtension){
402 if(fDebug>1)Printf("AODExtension found for %s ",fNonStdFile.Data());
403 }
404 }
405
406 TTree *tree = AliAnalysisManager::GetAnalysisManager()->GetTree();
407 fxsec=0;
408 ftrial=1;
409
410 if(tree){
411 TFile *curfile = tree->GetCurrentFile();
412 if(!curfile){
413 Error("Notify","No current file");
414 return kFALSE;
415 }
416
417
418 if(IsMC){
419 AliPWG4HighPtQAMC::PythiaInfoFromFile(curfile->GetName(),fxsec,ftrial);
420 //cout<<" Xsec "<<fxsec<<" trial "<<ftrial<<endl;
421 fH1Xsec ->Fill(0.,fxsec);
422 fH1Trials->Fill(0.,ftrial);
423 }else{
424 Float_t totalEvent;
425 totalEvent = GetTotalEvents(curfile->GetName());
426 fH1Events->Fill(0.,totalEvent);
427 }
428
429 }
430
431 printf("Reading File %s ",fInputHandler->GetTree()->GetCurrentFile()->GetName());
432 return kTRUE;
433}
434void AliAnalysisTaskJetHadronCorrelation::FinishTaskOutput()
435{
436}
437
438
439
440//________________________________________________________________________
441void AliAnalysisTaskJetHadronCorrelation::UserExec(Option_t *)
442{
443
444
445 // Main loop (called each event)
446 // Execute analysis for current event
447
448 // start jet analysis
449
450 Double_t Jet_n [20];
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];
458 Double_t Track_n ;
459 Double_t Track_pt [1000];
460 Double_t Track_eta[1000];
461 Double_t Track_phi[1000];
462
463 Track_n=0;
464 for(int i=0;i<20;i++){
465 Jet_n[i]=0;
466 subJet_n[i]=0;
467 for(int j=0;j<1000;j++){
468 Jet_pt[i][j]=0.;
469 Jet_phi[i][j]=999.;
470 Jet_eta[i][j]=999.;
471 subJet_pt[i][j]=0.;
472 subJet_phi[i][j]=999.;
473 subJet_eta[i][j]=999.;
474 Track_pt [j]=0.;
475 Track_phi[j]=999.;
476 Track_eta[j]=999.;
477 }
478 }
479
480 fAODIn = dynamic_cast<AliAODEvent*>(InputEvent());
481 if (!fAODIn) {
482 Printf("ERROR: fAODIn not available");
483 return;
484 }
485
486 //////-----------------------------------------------------------------------------------
487
488
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;
496 int nLJet = 999;
497
498
499 TString cAdd = "";
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;
652845bc 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());
32de1459 510 Branchname_rec = Form("clustersAOD_%s%s",JFAlg.Data(),cAdd.Data());
511
512
513 for(int algorithm=0;algorithm<3;algorithm++){
514 //for LHC11a1 LHC11a2
32de1459 515 if(algorithm==0)fJetBranch = Branchname_rec.Data();
516 if(algorithm==1)fJetBranch = Branchname_gen2.Data();
517 if(algorithm==2)fJetBranch = Branchname_gen.Data();
518
519 if((!IsMC&&(algorithm==1||algorithm==2)))continue;
520
521 TClonesArray* jets = dynamic_cast <TClonesArray*> (fAODIn->FindListObject(fJetBranch.Data()));
652845bc 522 if(!jets){
523 printf(" Tere are no Branch named %s \n",fJetBranch.Data());
524 continue;
525 }
32de1459 526 Int_t nj = jets->GetEntriesFast();
527 if (fDebug) printf("There are %5d jets in the event \n", nj);
528 AliAODJet* jetsAOD;
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;
536 }
537 }
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.)){
547 if(algorithm==0){
548 fH1JetAKT04_pt->Fill(Jet_pt[algorithm][njet]);
549 if(Jet_pt[algorithm][njet]>ptLJetAOD){
550 findLJetAOD=true;
551 nLJetAOD=njet;ptLJetAOD=Jet_pt[algorithm][njet];phiLJetAOD=Jet_phi[algorithm][njet];etaLJetAOD=Jet_eta[algorithm][njet];
552 }
553 }
554 if(algorithm==1){
555 fH1JetMCAKT04_pt->Fill(Jet_pt[algorithm][njet]);
556 if(Jet_pt[algorithm][njet]>ptLJetMC2){
557 findLJetMC2=true;
558 nLJetMC2=njet;ptLJetMC2=Jet_pt[algorithm][njet];phiLJetMC2=Jet_phi[algorithm][njet];etaLJetMC2=Jet_eta[algorithm][njet];
559 }
560 }
561 if(algorithm==2){
562 if(Jet_pt[algorithm][njet]>ptLJetMC){
563 findLJetMC=true;
564 nLJetMC=njet;ptLJetMC=Jet_pt[algorithm][njet];phiLJetMC=Jet_phi[algorithm][njet];etaLJetMC=Jet_eta[algorithm][njet];
565 }
566 }
567 }
568 }//njet loop
569 //Leading Jet -----------------------------------------------------------
570
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;}
574
575 if(nj<2)continue;
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];
588 }
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];
592 }
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];
596 }
597 }
598 }
599 ////Sub leading Jet ======================================================
600
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 ;}
605
606 ////Di-Jet event trigger +++++++++++++++++++++++++++++++++++++++++++++++
607 double DPhi = DeltaPhi(Leading_phi,sLeading_phi);
608 double DEta = Leading_eta-sLeading_eta;
609 if(algorithm==0){
610 fH2JetsJetAKT04_dphi->Fill(Leading_pt,DPhi);
611 fH2JetsJetAKT04_deta->Fill(Leading_pt,DEta);
612 }
613 if(algorithm==1){
614 fH2JetsJetMCAKT04_dphi->Fill(Leading_pt,DPhi);
615 fH2JetsJetMCAKT04_deta->Fill(Leading_pt,DEta);
616 }
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;
620
621 double Aj = (Leading_pt-sLeading_pt)/(Leading_pt+sLeading_pt);
622 if(algorithm==0){
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);
627 }
628 if(algorithm==1){
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);
633 }
634 }
635 if(algorithm==0)findsLJet=findsLJetAOD;
636 if(algorithm==1)findsLJet=findsLJetMC2;
637 if(algorithm==2)findsLJet=findsLJetMC;
638 ////++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
639
640 if(algorithm>=2)continue;
641
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);
646 }
647 }
648 fJetBranch = "tracks";
649 TClonesArray* tracks = dynamic_cast <TClonesArray*> (fAODIn->FindListObject(fJetBranch.Data()));
a44fce29 650
651 if(!tracks)continue;
32de1459 652 Int_t nt = tracks->GetEntriesFast();
653 AliAODTrack* trackAOD;
654 Track_n = nt;
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;}
675 if(algorithm==0){
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]);
679 }
680 }
681 }
682 }
683 }//Track Loop
684 }
685 }
686 }//eta cut
687 }//Jet Loop
688 }// Di-Jet
689 }// algorithm LOOP
690 if(IsMC){
691 for(int eb=0;eb<5;eb++){
692 double DPhi;
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);
698 }
699 }
700 }
701
702
703
704
705
706 PostData(1, fHistList);
707 return;
708}
709
710//________________________________________________________________________
711void AliAnalysisTaskJetHadronCorrelation::Terminate(Option_t *)
712{
713 // Terminate analysis
714 if (fDebug) printf("AnalysisTaskPt: Terminate() \n");
715
716}
717
718
719Int_t AliAnalysisTaskJetHadronCorrelation::GetListOfJets(TList *list,TClonesArray* jarray,Int_t type){
720
721 if(fDebug>2)Printf("%s:%d Selecting jets with cuts %d",(char*)__FILE__,__LINE__,type);
722 Int_t iCount = 0;
723
724 if(!jarray){
725 Printf("%s:%d no Jet array",(char*)__FILE__,__LINE__);
726 return iCount;
727 }
728
729
730 for(int ij=0;ij<jarray->GetEntries();ij++){
731 AliAODJet* jet = (AliAODJet*)jarray->At(ij);
732 if(!jet)continue;
733 if(type==0){
734 // No cut at all, main purpose here is sorting
735 list->Add(jet);
736 iCount++;
737 }
738 else if(type == 1){
739 // eta cut
740 if(JetSelected(jet)){
741 list->Add(jet);
742 iCount++;
743 }
744 }
745 }
746
747 list->Sort();
748 return iCount;
749
750}
751
752
753
754Bool_t AliAnalysisTaskJetHadronCorrelation::JetSelected(AliAODJet *jet){
755 Bool_t selected = false;
756
757 if(!jet)return selected;
758
759 if(fabs(jet->Eta())<fJetRecEtaWindow&&jet->Pt()>fMinJetPt){
760 selected = kTRUE;
761 }
762 return selected;
763
764}
765
766
767Double_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;
772 return dphi;
773}
774
775Float_t AliAnalysisTaskJetHadronCorrelation::GetTotalEvents(const char* currFile){
776 Float_t totalevent;
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,"");
782 }
783 else {
784 // not an archive take the basename....
785 file_es.ReplaceAll(gSystem->BaseName(file_es.Data()),"");
786 }
787
788 TString cAdd = "";
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());
797
798 TFile *feventstat = TFile::Open(Form("%s%s",file_es.Data(),"JetTasksOutput.root"));
32de1459 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;
804 delete feventstat;
805 return totalevent;
806
807}
808
809