2 // ******************************************
3 // This task computes several jet observables like
4 // the fraction of energy in inner and outer coronnas,
5 // jet-track correlations,triggered jet shapes and
6 // correlation strength distribution of particles inside jets.
7 // Author: lcunquei@cern.ch
8 // *******************************************
11 /**************************************************************************
12 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
14 * Author: The ALICE Off-line Project. *
15 * Contributors are mentioned in the code where appropriate. *
17 * Permission to use, copy, modify and distribute this software and its *
18 * documentation strictly for non-commercial purposes is hereby granted *
19 * without fee, provided that the above copyright notice appears in all *
20 * copies and that both the copyright notice and this permission notice *
21 * appear in the supporting documentation. The authors make no claims *
22 * about the suitability of this software for any purpose. It is *
23 * provided "as is" without express or implied warranty. *
24 **************************************************************************/
33 #include "THnSparse.h"
38 #include "AliAnalysisTask.h"
39 #include "AliAnalysisManager.h"
41 #include "AliVEvent.h"
42 #include "AliESDEvent.h"
43 #include "AliESDInputHandler.h"
44 #include "AliCentrality.h"
45 #include "AliAnalysisHelperJetTasks.h"
46 #include "AliInputEventHandler.h"
47 #include "AliAODJetEventBackground.h"
48 #include "AliAnalysisTaskFastEmbedding.h"
49 #include "AliAODEvent.h"
50 #include "AliAODHandler.h"
51 #include "AliAODJet.h"
53 #include "AliAnalysisTaskJetCore.h"
55 ClassImp(AliAnalysisTaskJetCore)
57 AliAnalysisTaskJetCore::AliAnalysisTaskJetCore() :
63 fBackgroundBranch(""),
66 fOfflineTrgMask(AliVEvent::kAny),
79 fAngStructCloseTracks(0),
90 fJetTriggerExcludeMask(AliAODJet::kHighTrackPtTriggered),
91 fJetPtFractionMin(0.5),
99 fHistEvtSelection(0x0),
102 fh2JetCoreMethod1C10(0x0),
103 fh2JetCoreMethod2C10(0x0),
104 fh2JetCoreMethod1C20(0x0),
105 fh2JetCoreMethod2C20(0x0),
106 fh2JetCoreMethod1C30(0x0),
107 fh2JetCoreMethod2C30(0x0),
108 fh2JetCoreMethod1C60(0x0),
109 fh2JetCoreMethod2C60(0x0),
112 fh2AngStructpt1C10(0x0),
113 fh2AngStructpt2C10(0x0),
114 fh2AngStructpt3C10(0x0),
115 fh2AngStructpt4C10(0x0),
116 fh2AngStructpt1C20(0x0),
117 fh2AngStructpt2C20(0x0),
118 fh2AngStructpt3C20(0x0),
119 fh2AngStructpt4C20(0x0),
120 fh2AngStructpt1C30(0x0),
121 fh2AngStructpt2C30(0x0),
122 fh2AngStructpt3C30(0x0),
123 fh2AngStructpt4C30(0x0),
124 fh2AngStructpt1C60(0x0),
125 fh2AngStructpt2C60(0x0),
126 fh2AngStructpt3C60(0x0),
127 fh2AngStructpt4C60(0x0),
128 fh2JetsumHT3R2a(0x0),
129 fh2JetsumHT3R2ap(0x0),
130 fh2JetsumHT3R4a(0x0),
131 fh2JetsumHT3R4ap(0x0),
132 fh2JetsumHT3R6a(0x0),
133 fh2JetsumHT3R6ap(0x0),
134 fh2JetsumHT3R8a(0x0),
135 fh2JetsumHT3R8ap(0x0),
136 fh2JetsumHT3R10a(0x0),
137 fh2JetsumHT3R10ap(0x0),
138 fh2JetsumHT3R2aa(0x0),
139 fh2JetsumHT3R2aap(0x0),
140 fh2JetsumHT3R4aa(0x0),
141 fh2JetsumHT3R4aap(0x0),
142 fh2JetsumHT3R6aa(0x0),
143 fh2JetsumHT3R6aap(0x0),
144 fh2JetsumHT3R8aa(0x0),
145 fh2JetsumHT3R8aap(0x0),
146 fh2JetsumHT3R10aa(0x0),
147 fh2JetsumHT3R10aap(0x0),
148 fh2JetsumHT3R2aaa(0x0),
149 fh2JetsumHT3R2aaap(0x0),
150 fh2JetsumHT3R4aaa(0x0),
151 fh2JetsumHT3R4aaap(0x0),
152 fh2JetsumHT3R6aaa(0x0),
153 fh2JetsumHT3R6aaap(0x0),
154 fh2JetsumHT3R8aaa(0x0),
155 fh2JetsumHT3R8aaap(0x0),
156 fh2JetsumHT3R10aaa(0x0),
157 fh2JetsumHT3R10aaap(0x0),
158 fh2JetsumHT3R2b(0x0),
159 fh2JetsumHT3R2bp(0x0),
160 fh2JetsumHT3R4b(0x0),
161 fh2JetsumHT3R4bp(0x0),
162 fh2JetsumHT3R6b(0x0),
163 fh2JetsumHT3R6bp(0x0),
164 fh2JetsumHT3R8b(0x0),
165 fh2JetsumHT3R8bp(0x0),
166 fh2JetsumHT3R10b(0x0),
167 fh2JetsumHT3R10bp(0x0),
168 fh2JetsumHT3R2bb(0x0),
169 fh2JetsumHT3R2bbp(0x0),
170 fh2JetsumHT3R4bb(0x0),
171 fh2JetsumHT3R4bbp(0x0),
172 fh2JetsumHT3R6bb(0x0),
173 fh2JetsumHT3R6bbp(0x0),
174 fh2JetsumHT3R8bb(0x0),
175 fh2JetsumHT3R8bbp(0x0),
176 fh2JetsumHT3R10bb(0x0),
177 fh2JetsumHT3R10bbp(0x0),
178 fh2JetsumHT3R2bbb(0x0),
179 fh2JetsumHT3R2bbbp(0x0),
180 fh2JetsumHT3R4bbb(0x0),
181 fh2JetsumHT3R4bbbp(0x0),
182 fh2JetsumHT3R6bbb(0x0),
183 fh2JetsumHT3R6bbbp(0x0),
184 fh2JetsumHT3R8bbb(0x0),
185 fh2JetsumHT3R8bbbp(0x0),
186 fh2JetsumHT3R10bbb(0x0),
187 fh2JetsumHT3R10bbbp(0x0),
190 fh2JetDensityA4(0x0),
191 fh3spectriggeredC10(0x0),
192 fh3spectriggeredC20(0x0),
193 fh3spectriggeredC3060(0x0),
199 // default Constructor
203 for(Int_t i=0; i<10; i++) {
204 for(Int_t j=0; j<6; j++) {
213 fJetBranchName[0] = "";
214 fJetBranchName[1] = "";
216 fListJets[0] = new TList;
217 fListJets[1] = new TList;
220 AliAnalysisTaskJetCore::AliAnalysisTaskJetCore(const char *name) :
221 AliAnalysisTaskSE(name),
226 fBackgroundBranch(""),
229 fOfflineTrgMask(AliVEvent::kAny),
241 fNInputTracksMax(-1),
242 fAngStructCloseTracks(0),
253 fJetTriggerExcludeMask(AliAODJet::kHighTrackPtTriggered),
254 fJetPtFractionMin(0.5),
262 fHistEvtSelection(0x0),
265 fh2JetCoreMethod1C10(0x0),
266 fh2JetCoreMethod2C10(0x0),
267 fh2JetCoreMethod1C20(0x0),
268 fh2JetCoreMethod2C20(0x0),
269 fh2JetCoreMethod1C30(0x0),
270 fh2JetCoreMethod2C30(0x0),
271 fh2JetCoreMethod1C60(0x0),
272 fh2JetCoreMethod2C60(0x0),
275 fh2AngStructpt1C10(0x0),
276 fh2AngStructpt2C10(0x0),
277 fh2AngStructpt3C10(0x0),
278 fh2AngStructpt4C10(0x0),
279 fh2AngStructpt1C20(0x0),
280 fh2AngStructpt2C20(0x0),
281 fh2AngStructpt3C20(0x0),
282 fh2AngStructpt4C20(0x0),
283 fh2AngStructpt1C30(0x0),
284 fh2AngStructpt2C30(0x0),
285 fh2AngStructpt3C30(0x0),
286 fh2AngStructpt4C30(0x0),
287 fh2AngStructpt1C60(0x0),
288 fh2AngStructpt2C60(0x0),
289 fh2AngStructpt3C60(0x0),
290 fh2AngStructpt4C60(0x0),
291 fh2JetsumHT3R2a(0x0),
292 fh2JetsumHT3R2ap(0x0),
293 fh2JetsumHT3R4a(0x0),
294 fh2JetsumHT3R4ap(0x0),
295 fh2JetsumHT3R6a(0x0),
296 fh2JetsumHT3R6ap(0x0),
297 fh2JetsumHT3R8a(0x0),
298 fh2JetsumHT3R8ap(0x0),
299 fh2JetsumHT3R10a(0x0),
300 fh2JetsumHT3R10ap(0x0),
301 fh2JetsumHT3R2aa(0x0),
302 fh2JetsumHT3R2aap(0x0),
303 fh2JetsumHT3R4aa(0x0),
304 fh2JetsumHT3R4aap(0x0),
305 fh2JetsumHT3R6aa(0x0),
306 fh2JetsumHT3R6aap(0x0),
307 fh2JetsumHT3R8aa(0x0),
308 fh2JetsumHT3R8aap(0x0),
309 fh2JetsumHT3R10aa(0x0),
310 fh2JetsumHT3R10aap(0x0),
311 fh2JetsumHT3R2aaa(0x0),
312 fh2JetsumHT3R2aaap(0x0),
313 fh2JetsumHT3R4aaa(0x0),
314 fh2JetsumHT3R4aaap(0x0),
315 fh2JetsumHT3R6aaa(0x0),
316 fh2JetsumHT3R6aaap(0x0),
317 fh2JetsumHT3R8aaa(0x0),
318 fh2JetsumHT3R8aaap(0x0),
319 fh2JetsumHT3R10aaa(0x0),
320 fh2JetsumHT3R10aaap(0x0),
321 fh2JetsumHT3R2b(0x0),
322 fh2JetsumHT3R2bp(0x0),
323 fh2JetsumHT3R4b(0x0),
324 fh2JetsumHT3R4bp(0x0),
325 fh2JetsumHT3R6b(0x0),
326 fh2JetsumHT3R6bp(0x0),
327 fh2JetsumHT3R8b(0x0),
328 fh2JetsumHT3R8bp(0x0),
329 fh2JetsumHT3R10b(0x0),
330 fh2JetsumHT3R10bp(0x0),
331 fh2JetsumHT3R2bb(0x0),
332 fh2JetsumHT3R2bbp(0x0),
333 fh2JetsumHT3R4bb(0x0),
334 fh2JetsumHT3R4bbp(0x0),
335 fh2JetsumHT3R6bb(0x0),
336 fh2JetsumHT3R6bbp(0x0),
337 fh2JetsumHT3R8bb(0x0),
338 fh2JetsumHT3R8bbp(0x0),
339 fh2JetsumHT3R10bb(0x0),
340 fh2JetsumHT3R10bbp(0x0),
341 fh2JetsumHT3R2bbb(0x0),
342 fh2JetsumHT3R2bbbp(0x0),
343 fh2JetsumHT3R4bbb(0x0),
344 fh2JetsumHT3R4bbbp(0x0),
345 fh2JetsumHT3R6bbb(0x0),
346 fh2JetsumHT3R6bbbp(0x0),
347 fh2JetsumHT3R8bbb(0x0),
348 fh2JetsumHT3R8bbbp(0x0),
349 fh2JetsumHT3R10bbb(0x0),
350 fh2JetsumHT3R10bbbp(0x0),
353 fh2JetDensityA4(0x0),
354 fh3spectriggeredC10(0x0),
355 fh3spectriggeredC20(0x0),
356 fh3spectriggeredC3060(0x0),
364 for(Int_t i=0; i<10; i++) {
365 for(Int_t j=0; j<6; j++) {
372 fJetBranchName[0] = "";
373 fJetBranchName[1] = "";
375 fListJets[0] = new TList;
376 fListJets[1] = new TList;
378 DefineOutput(1, TList::Class());
381 AliAnalysisTaskJetCore::~AliAnalysisTaskJetCore()
387 void AliAnalysisTaskJetCore::SetBranchNames(const TString &branch1, const TString &branch2)
389 fJetBranchName[0] = branch1;
390 fJetBranchName[1] = branch2;
393 void AliAnalysisTaskJetCore::Init()
396 // check for jet branches
397 if(!strlen(fJetBranchName[0].Data()) || !strlen(fJetBranchName[1].Data())){
398 AliError("Jet branch name not set.");
403 void AliAnalysisTaskJetCore::UserCreateOutputObjects()
408 if(!fOutputList) fOutputList = new TList;
409 fOutputList->SetOwner(kTRUE);
411 Bool_t oldStatus = TH1::AddDirectoryStatus();
412 TH1::AddDirectory(kFALSE);
415 fHistEvtSelection = new TH1I("fHistEvtSelection", "event selection", 6, -0.5, 5.5);
416 fHistEvtSelection->GetXaxis()->SetBinLabel(1,"ACCEPTED");
417 fHistEvtSelection->GetXaxis()->SetBinLabel(2,"events IN");
418 fHistEvtSelection->GetXaxis()->SetBinLabel(3,"event selection (rejected)");
419 fHistEvtSelection->GetXaxis()->SetBinLabel(4,"vertex cut (rejected)");
420 fHistEvtSelection->GetXaxis()->SetBinLabel(5,"centrality (rejected)");
421 fHistEvtSelection->GetXaxis()->SetBinLabel(6,"multiplicity (rejected)");
423 UInt_t entries = 0; // bit coded, see GetDimParams() below
424 entries = 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5 | 1<<6 |1<<7;
425 fhnDeltaR = NewTHnSparseF("fhnDeltaR", entries);
427 //change binning in pTtrack
428 Double_t *xPt3 = new Double_t[10];
430 for(int i = 1; i<=9;i++){
431 if(xPt3[i-1]<2)xPt3[i] = xPt3[i-1] + 0.4; // 1 - 5
432 else if(xPt3[i-1]<11)xPt3[i] = xPt3[i-1] + 3; // 5 - 12
433 else xPt3[i] = xPt3[i-1] + 150.; // 18
435 fhnDeltaR->SetBinEdges(2,xPt3);
438 //change binning in HTI
439 Double_t *xPt4 = new Double_t[14];
441 for(int i = 1; i<=13;i++){
442 if(xPt4[i-1]<10)xPt4[i] = xPt4[i-1] + 1; // 1 - 10
443 else if(xPt4[i-1]<20)xPt4[i] = xPt4[i-1] + 5; // 10 - 12
444 else xPt4[i] = xPt4[i-1] + 30.; // 13
446 fhnDeltaR->SetBinEdges(6,xPt4);
456 UInt_t cifras = 0; // bit coded, see GetDimParams() below
457 cifras = 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5 | 1<<7;
458 fhnMixedEvents = NewTHnSparseF("fhnMixedEvents", cifras);}
462 fh2JetCoreMethod1C10 = new TH2F("JetCoreMethod1C10","",150, 0., 150.,100, 0., 1.5);
463 fh2JetCoreMethod2C10 = new TH2F("JetCoreMethod2C10","",150, 0., 150.,100, 0., 1.5);
464 fh2JetCoreMethod1C20 = new TH2F("JetCoreMethod1C20","",150, 0., 150.,100, 0., 1.5);
465 fh2JetCoreMethod2C20 = new TH2F("JetCoreMethod2C20","",150, 0., 150.,100, 0., 1.5);
466 fh2JetCoreMethod1C30 = new TH2F("JetCoreMethod1C30","",150, 0., 150.,100, 0., 1.5);
467 fh2JetCoreMethod2C30 = new TH2F("JetCoreMethod2C30","",150, 0., 150.,100, 0., 1.5);
468 fh2JetCoreMethod1C60 = new TH2F("JetCoreMethod1C60","",150, 0., 150.,100, 0., 1.5);
469 fh2JetCoreMethod2C60 = new TH2F("JetCoreMethod2C60","",150, 0., 150.,100, 0., 1.5);}
471 fh3JetTrackC10=new TH3F("JetTrackC10","",50,0,50,150,0.,150.,32,0,3.2);
472 fh3JetTrackC20=new TH3F("JetTrackC20","",50,0,50,150,0.,150.,32,0,3.2);
474 if(fAngStructCloseTracks>0){
475 fh2AngStructpt1C10 = new TH2F("Ang struct pt1 C10","",15,0.,1.5,150,0.,10.);
476 fh2AngStructpt2C10 = new TH2F("Ang struct pt2 C10","",15,0.,1.5,150,0.,10.);
477 fh2AngStructpt3C10 = new TH2F("Ang struct pt3 C10","",15,0.,1.5,150,0.,10.);
478 fh2AngStructpt4C10 = new TH2F("Ang struct pt4 C10","",15,0.,1.5,150,0.,10.);
479 fh2AngStructpt1C20 = new TH2F("Ang struct pt1 C20","",15,0.,1.5,150,0.,10.);
480 fh2AngStructpt2C20 = new TH2F("Ang struct pt2 C20","",15,0.,1.5,150,0.,10.);
481 fh2AngStructpt3C20 = new TH2F("Ang struct pt3 C20","",15,0.,1.5,150,0.,10.);
482 fh2AngStructpt4C20 = new TH2F("Ang struct pt4 C20","",15,0.,1.5,150,0.,10.);
483 fh2AngStructpt1C30 = new TH2F("Ang struct pt1 C30","",15,0.,1.5,150,0.,10.);
484 fh2AngStructpt2C30 = new TH2F("Ang struct pt2 C30","",15,0.,1.5,150,0.,10.);
485 fh2AngStructpt3C30 = new TH2F("Ang struct pt3 C30","",15,0.,1.5,150,0.,10.);
486 fh2AngStructpt4C30 = new TH2F("Ang struct pt4 C30","",15,0.,1.5,150,0.,10.);
487 fh2AngStructpt1C60 = new TH2F("Ang struct pt1 C60","",15,0.,1.5,150,0.,10.);
488 fh2AngStructpt2C60 = new TH2F("Ang struct pt2 C60","",15,0.,1.5,150,0.,10.);
489 fh2AngStructpt3C60 = new TH2F("Ang struct pt3 C60","",15,0.,1.5,150,0.,10.);
490 fh2AngStructpt4C60 = new TH2F("Ang struct pt4 C60","",15,0.,1.5,150,0.,10.); }
492 fh2JetsumHT3R2a = new TH2F("Pt sum R02 HT0 TT10","",20,0.,200.,100,0.,10.);
493 fh2JetsumHT3R2ap = new TH2F("Pt sum R02 HT0 TT10 p","",20,0.,200.,100,0.,10.);
494 fh2JetsumHT3R4a = new TH2F("Pt sum R04 HT0 TT10","",20,0.,200.,100,0.,10.);
495 fh2JetsumHT3R4ap = new TH2F("Pt sum R04 HT0 TT10 p","",20,0.,200.,100,0.,10.);
496 fh2JetsumHT3R6a = new TH2F("Pt sum R06 HT0 TT10","",20,0.,200.,100,0.,10.);
497 fh2JetsumHT3R6ap = new TH2F("Pt sum R06 HT0 TT10 p","",20,0.,200.,100,0.,10.);
498 fh2JetsumHT3R8a = new TH2F("Pt sum R08 HT0 TT10","",20,0.,200.,100,0.,10.);
499 fh2JetsumHT3R8ap = new TH2F("Pt sum R08 HT0 TT10 p","",20,0.,200.,100,0.,10.);
500 fh2JetsumHT3R10a = new TH2F("Pt sum R10 HT0 TT10","",20,0.,200.,100,0.,10.);
501 fh2JetsumHT3R10ap = new TH2F("Pt sum R10 HT0 TT10 p","",20,0.,200.,100,0.,10.);
503 fh2JetsumHT3R2aa = new TH2F("Pt sum R02 HT0 TT20","",20,0.,200.,100,0.,10.);
504 fh2JetsumHT3R2aap = new TH2F("Pt sum R02 HT0 TT20 p","",20,0.,200.,100,0.,10.);
505 fh2JetsumHT3R4aa = new TH2F("Pt sum R04 HT0 TT20","",20,0.,200.,100,0.,10.);
506 fh2JetsumHT3R4aap = new TH2F("Pt sum R04 HT0 TT20 p","",20,0.,200.,100,0.,10.);
507 fh2JetsumHT3R6aa = new TH2F("Pt sum R06 HT0 TT20","",20,0.,200.,100,0.,10.);
508 fh2JetsumHT3R6aap = new TH2F("Pt sum R06 HT0 TT20 p","",20,0.,200.,100,0.,10.);
509 fh2JetsumHT3R8aa = new TH2F("Pt sum R08 HT0 TT20","",20,0.,200.,100,0.,10.);
510 fh2JetsumHT3R8aap = new TH2F("Pt sum R08 HT0 TT20 p","",20,0.,200.,100,0.,10.);
511 fh2JetsumHT3R10aa = new TH2F("Pt sum R10 HT0 TT20","",20,0.,200.,100,0.,10.);
512 fh2JetsumHT3R10aap = new TH2F("Pt sum R10 HT0 TT20 p","",20,0.,200.,100,0.,10.);
514 fh2JetsumHT3R2aaa = new TH2F("Pt sum R02 HT0 TT0","",20,0.,200.,100,0.,10.);
515 fh2JetsumHT3R2aaap = new TH2F("Pt sum R02 HT0 TT0 p","",20,0.,200.,100,0.,10.);
516 fh2JetsumHT3R4aaa = new TH2F("Pt sum R04 HT0 TT0","",20,0.,200.,100,0.,10.);
517 fh2JetsumHT3R4aaap = new TH2F("Pt sum R04 HT0 TT0 p","",20,0.,200.,100,0.,10.);
518 fh2JetsumHT3R6aaa = new TH2F("Pt sum R06 HT0 TT0","",20,0.,200.,100,0.,10.);
519 fh2JetsumHT3R6aaap = new TH2F("Pt sum R06 HT0 TT0 p","",20,0.,200.,100,0.,10.);
520 fh2JetsumHT3R8aaa = new TH2F("Pt sum R08 HT0 TT0","",20,0.,200.,100,0.,10.);
521 fh2JetsumHT3R8aaap = new TH2F("Pt sum R08 HT0 TT0 p","",20,0.,200.,100,0.,10.);
522 fh2JetsumHT3R10aaa = new TH2F("Pt sum R10 HT0 TT0","",20,0.,200.,100,0.,10.);
523 fh2JetsumHT3R10aaap = new TH2F("Pt sum R10 HT0 TT0 p","",20,0.,200.,100,0.,10.);
525 fh2JetsumHT3R2b = new TH2F("Pt sum R02 HT6 TT10","",20,0.,200.,100,0.,10.);
526 fh2JetsumHT3R2bp = new TH2F("Pt sum R02 HT6 TT10 p","",20,0.,200.,100,0.,10.);
527 fh2JetsumHT3R4b = new TH2F("Pt sum R04 HT6 TT10","",20,0.,200.,100,0.,10.);
528 fh2JetsumHT3R4bp = new TH2F("Pt sum R04 HT6 TT10 p","",20,0.,200.,100,0.,10.);
529 fh2JetsumHT3R6b = new TH2F("Pt sum R06 HT6 TT10","",20,0.,200.,100,0.,10.);
530 fh2JetsumHT3R6bp = new TH2F("Pt sum R06 HT6 TT10 p","",20,0.,200.,100,0.,10.);
531 fh2JetsumHT3R8b = new TH2F("Pt sum R08 HT6 TT10","",20,0.,200.,100,0.,10.);
532 fh2JetsumHT3R8bp = new TH2F("Pt sum R08 HT6 TT10 p","",20,0.,200.,100,0.,10.);
533 fh2JetsumHT3R10b = new TH2F("Pt sum R10 HT6 TT10","",20,0.,200.,100,0.,10.);
534 fh2JetsumHT3R10bp = new TH2F("Pt sum R10 HT6 TT10 p","",20,0.,200.,100,0.,10.);
536 fh2JetsumHT3R2bb = new TH2F("Pt sum R02 HT6 TT20","",20,0.,200.,100,0.,10.);
537 fh2JetsumHT3R2bbp = new TH2F("Pt sum R02 HT6 TT20 p","",20,0.,200.,100,0.,10.);
538 fh2JetsumHT3R4bb = new TH2F("Pt sum R04 HT6 TT20","",20,0.,200.,100,0.,10.);
539 fh2JetsumHT3R4bbp = new TH2F("Pt sum R04 HT6 TT20 p","",20,0.,200.,100,0.,10.);
540 fh2JetsumHT3R6bb = new TH2F("Pt sum R06 HT6 TT20","",20,0.,200.,100,0.,10.);
541 fh2JetsumHT3R6bbp = new TH2F("Pt sum R06 HT6 TT20 p","",20,0.,200.,100,0.,10.);
542 fh2JetsumHT3R8bb = new TH2F("Pt sum R08 HT6 TT20","",20,0.,200.,100,0.,10.);
543 fh2JetsumHT3R8bbp = new TH2F("Pt sum R08 HT6 TT20 p","",20,0.,200.,100,0.,10.);
544 fh2JetsumHT3R10bb = new TH2F("Pt sum R10 HT6 TT20","",20,0.,200.,100,0.,10.);
545 fh2JetsumHT3R10bbp = new TH2F("Pt sum R10 HT6 TT20 p","",20,0.,200.,100,0.,10.);
547 fh2JetsumHT3R2bbb = new TH2F("Pt sum R02 HT6 TT0","",20,0.,200.,100,0.,10.);
548 fh2JetsumHT3R2bbbp = new TH2F("Pt sum R02 HT6 TT0 p","",20,0.,200.,100,0.,10.);
549 fh2JetsumHT3R4bbb = new TH2F("Pt sum R04 HT6 TT0","",20,0.,200.,100,0.,10.);
550 fh2JetsumHT3R4bbbp = new TH2F("Pt sum R04 HT6 TT0 p","",20,0.,200.,100,0.,10.);
551 fh2JetsumHT3R6bbb = new TH2F("Pt sum R06 HT6 TT0","",20,0.,200.,100,0.,10.);
552 fh2JetsumHT3R6bbbp = new TH2F("Pt sum R06 HT6 TT0 p","",20,0.,200.,100,0.,10.);
553 fh2JetsumHT3R8bbb = new TH2F("Pt sum R08 HT6 TT0","",20,0.,200.,100,0.,10.);
554 fh2JetsumHT3R8bbbp = new TH2F("Pt sum R08 HT6 TT0 p","",20,0.,200.,100,0.,10.);
555 fh2JetsumHT3R10bbb = new TH2F("Pt sum R10 HT6 TT0","",20,0.,200.,100,0.,10.);
556 fh2JetsumHT3R10bbbp = new TH2F("Pt sum R10 HT6 TT0 p","",20,0.,200.,100,0.,10.);
560 fh2Ntriggers=new TH2F("# of triggers","",10,0.,100.,50,0.,50.);
561 fh2JetDensity=new TH2F("Jet density vs centrality A>0.4","",100,0.,4000.,100,0.,5.);
562 fh2JetDensityA4=new TH2F("Jet density vs multiplicity A>0.4","",100,0.,4000.,100,0.,5.);
563 fh3spectriggeredC10 = new TH3F("Triggered spectrumC10","",5,0.,1.,140,-80.,200.,50,0.,50.);
564 fh3spectriggeredC20 = new TH3F("Triggered spectrumC20","",5,0.,1.,140,-80.,200.,50,0.,50.);
565 fh3spectriggeredC3060 = new TH3F("Triggered spectrumC3060","",5,0.,1.,140,-80.,200.,50,0.,50.);
567 fh3specbiased = new TH3F("Biased spectrum","",10,0,100,50,0.,200.,50,0.,50.);
568 fh3spectot = new TH3F("Total spectrum 0-10","",50,0.,200.,50,0.,50.,50,0.,50.);
569 fh3spectotb = new TH3F("Total spectrum 30-60","",50,0.,200.,50,0.,50.,50,0.,50.);
570 fOutputList->Add(fHistEvtSelection);
572 fOutputList->Add(fhnDeltaR);
574 fOutputList->Add(fhnMixedEvents);
580 fOutputList->Add(fh2JetCoreMethod1C10);
581 fOutputList->Add(fh2JetCoreMethod2C10);
582 fOutputList->Add(fh2JetCoreMethod1C20);
583 fOutputList->Add(fh2JetCoreMethod2C20);
584 fOutputList->Add(fh2JetCoreMethod1C30);
585 fOutputList->Add(fh2JetCoreMethod2C30);
586 fOutputList->Add(fh2JetCoreMethod1C60);
587 fOutputList->Add(fh2JetCoreMethod2C60);}
589 fOutputList->Add(fh3JetTrackC10);
590 fOutputList->Add(fh3JetTrackC20);
595 if(fAngStructCloseTracks>0){
596 fOutputList->Add(fh2AngStructpt1C10);
597 fOutputList->Add(fh2AngStructpt2C10);
598 fOutputList->Add(fh2AngStructpt3C10);
599 fOutputList->Add(fh2AngStructpt4C10);
600 fOutputList->Add(fh2AngStructpt1C20);
601 fOutputList->Add(fh2AngStructpt2C20);
602 fOutputList->Add(fh2AngStructpt3C20);
603 fOutputList->Add(fh2AngStructpt4C20);
604 fOutputList->Add(fh2AngStructpt1C30);
605 fOutputList->Add(fh2AngStructpt2C30);
606 fOutputList->Add(fh2AngStructpt3C30);
607 fOutputList->Add(fh2AngStructpt4C30);
608 fOutputList->Add(fh2AngStructpt1C60);
609 fOutputList->Add(fh2AngStructpt2C60);
610 fOutputList->Add(fh2AngStructpt3C60);
611 fOutputList->Add(fh2AngStructpt4C60);}
614 fOutputList->Add(fh2JetsumHT3R2a);
615 fOutputList->Add(fh2JetsumHT3R2ap);
616 fOutputList->Add(fh2JetsumHT3R4a);
617 fOutputList->Add(fh2JetsumHT3R4ap);
618 fOutputList->Add(fh2JetsumHT3R6a);
619 fOutputList->Add(fh2JetsumHT3R6ap);
620 fOutputList->Add(fh2JetsumHT3R8a);
621 fOutputList->Add(fh2JetsumHT3R8ap);
622 fOutputList->Add(fh2JetsumHT3R10a);
623 fOutputList->Add(fh2JetsumHT3R10ap);
624 fOutputList->Add(fh2JetsumHT3R2aa);
625 fOutputList->Add(fh2JetsumHT3R2aap);
626 fOutputList->Add(fh2JetsumHT3R4aa);
627 fOutputList->Add(fh2JetsumHT3R4aap);
628 fOutputList->Add(fh2JetsumHT3R6aa);
629 fOutputList->Add(fh2JetsumHT3R6aap);
630 fOutputList->Add(fh2JetsumHT3R8aa);
631 fOutputList->Add(fh2JetsumHT3R8aap);
632 fOutputList->Add(fh2JetsumHT3R10aa);
633 fOutputList->Add(fh2JetsumHT3R10aap);
634 fOutputList->Add(fh2JetsumHT3R2aaa);
635 fOutputList->Add(fh2JetsumHT3R2aaap);
636 fOutputList->Add(fh2JetsumHT3R4aaa);
637 fOutputList->Add(fh2JetsumHT3R4aaap);
638 fOutputList->Add(fh2JetsumHT3R6aaa);
639 fOutputList->Add(fh2JetsumHT3R6aaap);
640 fOutputList->Add(fh2JetsumHT3R8aaa);
641 fOutputList->Add(fh2JetsumHT3R8aaap);
642 fOutputList->Add(fh2JetsumHT3R10aaa);
643 fOutputList->Add(fh2JetsumHT3R10aaap);
645 fOutputList->Add(fh2JetsumHT3R2b);
646 fOutputList->Add(fh2JetsumHT3R2bp);
647 fOutputList->Add(fh2JetsumHT3R4b);
648 fOutputList->Add(fh2JetsumHT3R4bp);
649 fOutputList->Add(fh2JetsumHT3R6b);
650 fOutputList->Add(fh2JetsumHT3R6bp);
651 fOutputList->Add(fh2JetsumHT3R8b);
652 fOutputList->Add(fh2JetsumHT3R8bp);
653 fOutputList->Add(fh2JetsumHT3R10b);
654 fOutputList->Add(fh2JetsumHT3R10bp);
655 fOutputList->Add(fh2JetsumHT3R2bb);
656 fOutputList->Add(fh2JetsumHT3R2bbp);
657 fOutputList->Add(fh2JetsumHT3R4bb);
658 fOutputList->Add(fh2JetsumHT3R4bbp);
659 fOutputList->Add(fh2JetsumHT3R6bb);
660 fOutputList->Add(fh2JetsumHT3R6bbp);
661 fOutputList->Add(fh2JetsumHT3R8bb);
662 fOutputList->Add(fh2JetsumHT3R8bbp);
663 fOutputList->Add(fh2JetsumHT3R10bb);
664 fOutputList->Add(fh2JetsumHT3R10bbp);
665 fOutputList->Add(fh2JetsumHT3R2bbb);
666 fOutputList->Add(fh2JetsumHT3R2bbbp);
667 fOutputList->Add(fh2JetsumHT3R4bbb);
668 fOutputList->Add(fh2JetsumHT3R4bbbp);
669 fOutputList->Add(fh2JetsumHT3R6bbb);
670 fOutputList->Add(fh2JetsumHT3R6bbbp);
671 fOutputList->Add(fh2JetsumHT3R8bbb);
672 fOutputList->Add(fh2JetsumHT3R8bbbp);
673 fOutputList->Add(fh2JetsumHT3R10bbb);
674 fOutputList->Add(fh2JetsumHT3R10bbbp);
677 fOutputList->Add(fh2Ntriggers);
678 fOutputList->Add(fh2JetDensity);
679 fOutputList->Add(fh2JetDensityA4);
681 fOutputList->Add(fh3spectriggeredC10);
682 fOutputList->Add(fh3spectriggeredC20);
683 fOutputList->Add(fh3spectriggeredC3060);
685 fOutputList->Add(fh3specbiased);
686 fOutputList->Add(fh3spectot);
687 fOutputList->Add(fh3spectotb);
688 // =========== Switch on Sumw2 for all histos ===========
689 for (Int_t i=0; i<fOutputList->GetEntries(); ++i) {
690 TH1 *h1 = dynamic_cast<TH1*>(fOutputList->At(i));
695 THnSparse *hn = dynamic_cast<THnSparse*>(fOutputList->At(i));
700 TH1::AddDirectory(oldStatus);
702 PostData(1, fOutputList);
705 void AliAnalysisTaskJetCore::UserExec(Option_t *)
709 if(!strlen(fJetBranchName[0].Data()) || !strlen(fJetBranchName[1].Data())){
710 AliError("Jet branch name not set.");
714 fESD=dynamic_cast<AliESDEvent*>(InputEvent());
716 AliError("ESD not available");
717 fAODIn = dynamic_cast<AliAODEvent*>(InputEvent());
719 fAODOut = dynamic_cast<AliAODEvent*>(AODEvent());
721 static AliAODEvent* aod = 0;
722 // take all other information from the aod we take the tracks from
724 if(!fESD)aod = fAODIn;
729 if(fNonStdFile.Length()!=0){
730 // case that we have an AOD extension we need can fetch the jets from the extended output
731 AliAODHandler *aodH = dynamic_cast<AliAODHandler*>(AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler());
732 fAODExtension = (aodH?aodH->GetExtension(fNonStdFile.Data()):0);
734 if(fDebug>1)Printf("AODExtension found for %s",fNonStdFile.Data());
741 // -- event selection --
742 fHistEvtSelection->Fill(1); // number of events before event selection
745 AliInputEventHandler* inputHandler = (AliInputEventHandler*)
746 ((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler());
747 cout<<inputHandler->IsEventSelected()<<" "<<fOfflineTrgMask<<endl;
748 if(!(inputHandler->IsEventSelected() & fOfflineTrgMask)){
749 if(fDebug) Printf(" Trigger Selection: event REJECTED ... ");
750 fHistEvtSelection->Fill(2);
751 PostData(1, fOutputList);
757 if(fDebug) Printf("%s:%d No AOD",(char*)__FILE__,__LINE__);
758 fHistEvtSelection->Fill(3);
759 PostData(1, fOutputList);
761 AliAODVertex* primVtx = aod->GetPrimaryVertex();
764 if(fDebug) Printf("%s:%d No primVtx",(char*)__FILE__,__LINE__);
765 fHistEvtSelection->Fill(3);
766 PostData(1, fOutputList);
770 Int_t nTracksPrim = primVtx->GetNContributors();
771 if ((nTracksPrim < fMinContribVtx) ||
772 (primVtx->GetZ() < fVtxZMin) ||
773 (primVtx->GetZ() > fVtxZMax) ){
774 if(fDebug) Printf("%s:%d primary vertex z = %f: event REJECTED...",(char*)__FILE__,__LINE__,primVtx->GetZ());
775 fHistEvtSelection->Fill(3);
776 PostData(1, fOutputList);
780 // event class selection (from jet helper task)
781 Int_t eventClass = AliAnalysisHelperJetTasks::EventClass();
782 if(fDebug) Printf("Event class %d", eventClass);
783 if (eventClass < fEvtClassMin || eventClass > fEvtClassMax){
784 fHistEvtSelection->Fill(4);
785 PostData(1, fOutputList);
789 // centrality selection
790 AliCentrality *cent = 0x0;
791 Double_t centValue = 0.;
793 if(fESD) {cent = fESD->GetCentrality();
794 if(cent) centValue = cent->GetCentralityPercentile("V0M");}
795 else centValue=aod->GetHeader()->GetCentrality();
797 if(fDebug) printf("centrality: %f\n", centValue);
798 if (centValue < fCentMin || centValue > fCentMax){
799 fHistEvtSelection->Fill(4);
800 PostData(1, fOutputList);
805 fHistEvtSelection->Fill(0);
807 // -- end event selection --
810 AliAODJetEventBackground* externalBackground = 0;
811 if(fAODOut&&!externalBackground&&fBackgroundBranch.Length()){
812 externalBackground = (AliAODJetEventBackground*)(fAODOut->FindListObject(fBackgroundBranch.Data()));
813 if(!externalBackground)Printf("%s:%d Background branch not found %s",(char*)__FILE__,__LINE__,fBackgroundBranch.Data());;
815 if(fAODExtension&&!externalBackground&&fBackgroundBranch.Length()){
816 externalBackground = (AliAODJetEventBackground*)(fAODExtension->GetAOD()->FindListObject(fBackgroundBranch.Data()));
817 if(!externalBackground)Printf("%s:%d Background branch not found %s",(char*)__FILE__,__LINE__,fBackgroundBranch.Data());;
820 if(fAODIn&&!externalBackground&&fBackgroundBranch.Length()){
821 externalBackground = (AliAODJetEventBackground*)(fAODIn->FindListObject(fBackgroundBranch.Data()));
822 if(!externalBackground)Printf("%s:%d Background branch not found %s",(char*)__FILE__,__LINE__,fBackgroundBranch.Data());;
826 if(externalBackground)rho = externalBackground->GetBackground(0);
830 TClonesArray *aodJets[2];
832 if(fAODOut&&!aodJets[0]){
833 aodJets[0] = dynamic_cast<TClonesArray*>(fAODOut->FindListObject(fJetBranchName[0].Data()));
834 aodJets[1] = dynamic_cast<TClonesArray*>(fAODOut->FindListObject(fJetBranchName[1].Data())); }
835 if(fAODExtension && !aodJets[0]){
836 aodJets[0] = dynamic_cast<TClonesArray*>(fAODExtension->GetAOD()->FindListObject(fJetBranchName[0].Data()));
837 aodJets[1] = dynamic_cast<TClonesArray*>(fAODExtension->GetAOD()->FindListObject(fJetBranchName[1].Data())); }
838 if(fAODIn&&!aodJets[0]){
839 aodJets[0] = dynamic_cast<TClonesArray*>(fAODIn->FindListObject(fJetBranchName[0].Data()));
840 aodJets[1] = dynamic_cast<TClonesArray*>(fAODIn->FindListObject(fJetBranchName[1].Data())); }
843 //Double_t ptsub[aodJets[0]->GetEntriesFast()];
844 //Int_t inord[aodJets[0]->GetEntriesFast()];
845 //for(Int_t n=0;n<aodJets[0]->GetEntriesFast();n++){
850 Int_t nT = GetListOfTracks(&ParticleList);
851 for (Int_t iJetType = 0; iJetType < 2; iJetType++) {
852 fListJets[iJetType]->Clear();
853 if (!aodJets[iJetType]) continue;
855 if(fDebug) Printf("%s: %d jets",fJetBranchName[iJetType].Data(),aodJets[iJetType]->GetEntriesFast());
858 for (Int_t iJet = 0; iJet < aodJets[iJetType]->GetEntriesFast(); iJet++) {
859 AliAODJet *jet = dynamic_cast<AliAODJet*>((*aodJets[iJetType])[iJet]);
860 if (jet) fListJets[iJetType]->Add(jet);
862 // ptsub[iJet]=jet->Pt()-rho*jet->EffectiveAreaCharged();}
871 Double_t areasmall=0;
872 Double_t phismall=0.;
875 // Double_t up1[15]={0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
876 // Double_t up2[15]={0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
877 // Double_t up3[15]={0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
878 // Double_t up4[15]={0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
879 // Double_t down1[15]={0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
880 // Double_t down2[15]={0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
881 // Double_t down3[15]={0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
882 // Double_t down4[15]={0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
885 Int_t trigBBTrack=-1;
886 Int_t trigInTrack=-1;
889 AliVParticle *partback = (AliVParticle*)ParticleList.At(nT);
891 PostData(1, fOutputList);
893 fh2Ntriggers->Fill(centValue,partback->Pt());
894 Double_t accep=2.*TMath::Pi()*1.8;
897 for(Int_t i=0; i<fListJets[0]->GetEntries(); ++i){
898 AliAODJet* jetbig = (AliAODJet*)(fListJets[0]->At(i));
899 etabig = jetbig->Eta();
900 phibig = jetbig->Phi();
901 ptbig = jetbig->Pt();
902 if(ptbig==0) continue;
903 areabig = jetbig->EffectiveAreaCharged();
904 Double_t ptcorr=ptbig-rho*areabig;
905 if((etabig<fJetEtaMin)||(etabig>fJetEtaMax)) continue;
906 if(areabig>=0.2) injet=injet+1;
907 if(areabig>=0.4) injet4=injet4+1;
908 Double_t dphi=RelativePhi(partback->Phi(),phibig);
909 if(centValue<10.) fh3JetTrackC10->Fill(partback->Pt(),ptcorr,TMath::Abs(dphi));
910 if(centValue<20.) fh3JetTrackC20->Fill(partback->Pt(),ptcorr,TMath::Abs(dphi));
911 if(fFlagPhiBkg!=0) if((TMath::Abs(dphi)<TMath::Pi()/2.-0.1)||(TMath::Abs(dphi)>TMath::Pi()/2.+0.1)) continue;
912 if(fFlagPhiBkg==0) if(TMath::Abs(dphi)<TMath::Pi()-0.6) continue;
913 Double_t dismin=100.;
917 if(centValue<10.) fh3spectriggeredC10->Fill(jetbig->EffectiveAreaCharged(),ptcorr,partback->Pt());
918 if(centValue<20.) fh3spectriggeredC20->Fill(jetbig->EffectiveAreaCharged(),ptcorr,partback->Pt());
919 if(centValue>30. && centValue<60.) fh3spectriggeredC3060->Fill(jetbig->EffectiveAreaCharged(),ptcorr,partback->Pt());
921 if(ptcorr<=0) continue;
922 AliAODTrack* leadtrack;
925 TRefArray *genTrackList = jetbig->GetRefTracks();
926 Int_t nTracksGenJet = genTrackList->GetEntriesFast();
927 AliAODTrack* genTrack;
928 for(Int_t ir=0; ir<nTracksGenJet; ++ir){
929 genTrack = (AliAODTrack*)(genTrackList->At(ir));
930 if(genTrack->Pt()>ppt){ppt=genTrack->Pt();
932 leadtrack=(AliAODTrack*)(genTrackList->At(ippt));
933 if(!leadtrack) continue;
934 fh3specbiased->Fill(centValue,ptcorr,leadtrack->Pt());
935 if(centValue<10)fh3spectot->Fill(ptcorr,leadtrack->Pt(),partback->Pt());
936 if(centValue>30. && centValue<60.)fh3spectotb->Fill(ptcorr,leadtrack->Pt(),partback->Pt());
937 //store one trigger info
946 for(Int_t j=0; j<fListJets[1]->GetEntries(); ++j){
947 AliAODJet* jetsmall = (AliAODJet*)(fListJets[1]->At(j));
948 etasmall = jetsmall->Eta();
949 phismall = jetsmall->Phi();
950 ptsmall = jetsmall->Pt();
951 areasmall = jetsmall->EffectiveAreaCharged();
952 Double_t tmpDeltaR=(phismall-phibig)*(phismall-phibig)+(etasmall-etabig)*(etasmall-etabig);
953 tmpDeltaR=TMath::Sqrt(tmpDeltaR);
954 //Fraction in the jet core
955 if((ptsmall>ptmax)&&(tmpDeltaR<=fRadioFrac)){ptmax=ptsmall;
957 if(tmpDeltaR<=dismin){ dismin=tmpDeltaR;
958 index1=j;}} //en of loop over R=0.2 jets
959 //method1:most concentric jet=core
960 if(dismin<fMinDist){ AliAODJet* jetmethod1 = (AliAODJet*)(fListJets[1]->At(index1));
961 if(centValue<10) fh2JetCoreMethod1C10->Fill(ptcorr,jetmethod1->Pt()/ptbig);
962 if((centValue>20)&&(centValue<40)) fh2JetCoreMethod1C20->Fill(ptcorr,jetmethod1->Pt()/ptbig);
963 if((centValue>30)&&(centValue<60)) fh2JetCoreMethod1C30->Fill(ptcorr,jetmethod1->Pt()/ptbig);
964 if(centValue>60) fh2JetCoreMethod1C60->Fill(ptcorr,jetmethod1->Pt()/ptbig); }
965 //method2:hardest contained jet=core
967 AliAODJet* jetmethod2 = (AliAODJet*)(fListJets[1]->At(index2));
968 if(centValue<10) fh2JetCoreMethod2C10->Fill(ptcorr,jetmethod2->Pt()/ptbig);
969 if((centValue>20)&&(centValue<40)) fh2JetCoreMethod2C20->Fill(ptcorr,jetmethod2->Pt()/ptbig);
970 if((centValue>30)&&(centValue<60)) fh2JetCoreMethod2C30->Fill(ptcorr,jetmethod2->Pt()/ptbig);
971 if(centValue>60) fh2JetCoreMethod2C60->Fill(ptcorr,jetmethod2->Pt()/ptbig); }}
980 Double_t sumpt10a=0.;
981 Double_t sumpt10b=0.;
982 Double_t sumpt2aaa=0.;
983 Double_t sumpt2bbb=0.;
984 Double_t sumpt4aaa=0.;
985 Double_t sumpt4bbb=0.;
986 Double_t sumpt6aaa=0.;
987 Double_t sumpt6bbb=0.;
988 Double_t sumpt8aaa=0.;
989 Double_t sumpt8bbb=0.;
990 Double_t sumpt10aaa=0.;
991 Double_t sumpt10bbb=0.;
992 Double_t sumpt2ap=0.;
993 Double_t sumpt2bp=0.;
994 Double_t sumpt4ap=0.;
995 Double_t sumpt4bp=0.;
996 Double_t sumpt6ap=0.;
997 Double_t sumpt6bp=0.;
998 Double_t sumpt8ap=0.;
999 Double_t sumpt8bp=0.;
1000 Double_t sumpt10ap=0.;
1001 Double_t sumpt10bp=0.;
1002 Double_t sumpt2aaap=0.;
1003 Double_t sumpt2bbbp=0.;
1004 Double_t sumpt4aaap=0.;
1005 Double_t sumpt4bbbp=0.;
1006 Double_t sumpt6aaap=0.;
1007 Double_t sumpt6bbbp=0.;
1008 Double_t sumpt8aaap=0.;
1009 Double_t sumpt8bbbp=0.;
1010 Double_t sumpt10aaap=0.;
1011 Double_t sumpt10bbbp=0.;
1017 for(int it = 0;it<ParticleList.GetEntries();++it){
1018 AliVParticle *part = (AliVParticle*)ParticleList.At(it);
1019 Double_t deltaR = jetbig->DeltaR(part);
1020 Double_t deltaEta = etabig-part->Eta();
1021 if(partback->Pt()>14.){
1024 //for one more centrality
1025 if(deltaR<0.2){if(leadtrack->Pt()>0.)sumpt2a=sumpt2a+part->Pt();
1026 if(leadtrack->Pt()>6) sumpt2b=sumpt2b+part->Pt();}
1027 if(deltaR>=0.2 && deltaR<0.4){if(leadtrack->Pt()>0.)sumpt4a=sumpt4a+part->Pt();
1028 if(leadtrack->Pt()>6.)sumpt4b=sumpt4b+part->Pt();}
1030 if(deltaR>=0.4 && deltaR<0.6){if(leadtrack->Pt()>0.)sumpt6a=sumpt6a+part->Pt();
1031 if(leadtrack->Pt()>6.) sumpt6b=sumpt6b+part->Pt();}
1032 if(deltaR>=0.6 && deltaR<0.8){if(leadtrack->Pt()>0.)sumpt8a=sumpt8a+part->Pt();
1033 if(leadtrack->Pt()>6.) sumpt8b=sumpt8b+part->Pt();}
1034 if(deltaR>=0.8 && deltaR<1.2){if(leadtrack->Pt()>0.)sumpt10a=sumpt10a+part->Pt();
1035 if(leadtrack->Pt()>6.) sumpt10b=sumpt10b+part->Pt();}}
1037 if(centValue>30. && centValue<60.){
1038 //for one more centrality
1039 if(deltaR<0.2){if(leadtrack->Pt()>0.)sumpt2ap=sumpt2ap+part->Pt();
1040 if(leadtrack->Pt()>6) sumpt2bp=sumpt2bp+part->Pt();}
1041 if(deltaR>=0.2 && deltaR<0.4){if(leadtrack->Pt()>0.)sumpt4ap=sumpt4ap+part->Pt();
1042 if(leadtrack->Pt()>6.)sumpt4bp=sumpt4bp+part->Pt();}
1044 if(deltaR>=0.4 && deltaR<0.6){if(leadtrack->Pt()>0.)sumpt6ap=sumpt6ap+part->Pt();
1045 if(leadtrack->Pt()>6.) sumpt6bp=sumpt6bp+part->Pt();}
1046 if(deltaR>=0.6 && deltaR<0.8){if(leadtrack->Pt()>0.)sumpt8ap=sumpt8ap+part->Pt();
1047 if(leadtrack->Pt()>6.) sumpt8bp=sumpt8bp+part->Pt();}
1048 if(deltaR>=0.8 && deltaR<1.2){if(leadtrack->Pt()>0.)sumpt10ap=sumpt10ap+part->Pt();
1049 if(leadtrack->Pt()>6.) sumpt10bp=sumpt10bp+part->Pt();}}}
1054 if(partback->Pt()<1.){
1057 //for one more centrality
1058 if(deltaR<0.2){if(leadtrack->Pt()>0.)sumpt2aaa=sumpt2aaa+part->Pt();
1059 if(leadtrack->Pt()>6.) sumpt2bbb=sumpt2bbb+part->Pt();}
1060 if(deltaR>=0.2 && deltaR<0.4){if(leadtrack->Pt()>0.)sumpt4aaa=sumpt4aaa+part->Pt();
1061 if(leadtrack->Pt()>6.)sumpt4bbb=sumpt4bbb+part->Pt();}
1063 if(deltaR>=0.4 && deltaR<0.6){if(leadtrack->Pt()>0.)sumpt6aaa=sumpt6aaa+part->Pt();
1064 if(leadtrack->Pt()>6.) sumpt6bbb=sumpt6bbb+part->Pt();}
1065 if(deltaR>=0.6 && deltaR<0.8){if(leadtrack->Pt()>0.)sumpt8aaa=sumpt8aaa+part->Pt();
1066 if(leadtrack->Pt()>6.) sumpt8bbb=sumpt8bbb+part->Pt();}
1067 if(deltaR>=0.8 && deltaR<1.2){if(leadtrack->Pt()>0.)sumpt10aaa=sumpt10aaa+part->Pt();
1068 if(leadtrack->Pt()>6.) sumpt10bbb=sumpt10bbb+part->Pt();}}
1070 if(centValue>30. && centValue<60.){
1071 //for one more centrality
1072 if(deltaR<0.2){if(leadtrack->Pt()>0.)sumpt2aaap=sumpt2aaap+part->Pt();
1073 if(leadtrack->Pt()>6) sumpt2bbbp=sumpt2bbbp+part->Pt();}
1074 if(deltaR>=0.2 && deltaR<0.4){if(leadtrack->Pt()>0.)sumpt4aaap=sumpt4aaap+part->Pt();
1075 if(leadtrack->Pt()>6.)sumpt4bbbp=sumpt4bbbp+part->Pt();}
1077 if(deltaR>=0.4 && deltaR<0.6){if(leadtrack->Pt()>0.)sumpt6aaap=sumpt6aaap+part->Pt();
1078 if(leadtrack->Pt()>6.) sumpt6bbbp=sumpt6bbbp+part->Pt();}
1079 if(deltaR>=0.6 && deltaR<0.8){if(leadtrack->Pt()>0.)sumpt8aaap=sumpt8aaap+part->Pt();
1080 if(leadtrack->Pt()>6.) sumpt8bbbp=sumpt8bbbp+part->Pt();}
1081 if(deltaR>=0.8 && deltaR<1.2){if(leadtrack->Pt()>0.)sumpt10aaap=sumpt10aaap+part->Pt();
1082 if(leadtrack->Pt()>6.) sumpt10bbbp=sumpt10bbbp+part->Pt();}}}
1088 if(fDoEventMixing==0){
1089 Double_t deltaPhi=phibig-part->Phi();
1090 if(deltaPhi<-0.5*TMath::Pi()) deltaPhi+=2.*TMath::Pi();
1091 if(deltaPhi>3./2.*TMath::Pi()) deltaPhi-=2.*TMath::Pi();
1092 Double_t jetEntries[8] = {centValue,ptcorr,part->Pt(),deltaR,deltaEta,deltaPhi,leadtrack->Pt(),partback->Pt()}; fhnDeltaR->Fill(jetEntries);}
1096 Double_t rhoin2=rho*TMath::Pi()*0.2*0.2;
1097 Double_t rhoin4=rho*TMath::Pi()*(0.4*0.4-0.2*0.2);
1098 Double_t rhoin6=rho*TMath::Pi()*(0.6*0.6-0.4*0.4);
1099 Double_t rhoin8=rho*TMath::Pi()*(0.8*0.8-0.6*0.6);
1100 Double_t rhoin10=rho*TMath::Pi()*(1.2*1.2-0.8*0.8);
1105 if(partback->Pt()>14.){
1107 if(leadtrack->Pt()>0.){
1108 fh2JetsumHT3R2a->Fill(ptcorr,sumpt2a/rhoin2);
1109 fh2JetsumHT3R4a->Fill(ptcorr,sumpt4a/rhoin4);
1110 fh2JetsumHT3R6a->Fill(ptcorr,sumpt6a/rhoin6);
1111 fh2JetsumHT3R8a->Fill(ptcorr,sumpt8a/rhoin8);
1112 fh2JetsumHT3R10a->Fill(ptcorr,sumpt10a/rhoin10);}
1113 if(leadtrack->Pt()>6.){
1114 fh2JetsumHT3R2b->Fill(ptcorr,sumpt2b/rhoin2);
1115 fh2JetsumHT3R4b->Fill(ptcorr,sumpt4b/rhoin4);
1116 fh2JetsumHT3R6b->Fill(ptcorr,sumpt6b/rhoin6);
1117 fh2JetsumHT3R8b->Fill(ptcorr,sumpt8b/rhoin8);
1118 fh2JetsumHT3R10b->Fill(ptcorr,sumpt10b/rhoin10);}}
1120 if(centValue>30 && centValue<60.){
1121 if(leadtrack->Pt()>0.){
1122 fh2JetsumHT3R2ap->Fill(ptcorr,sumpt2ap/rhoin2);
1123 fh2JetsumHT3R4ap->Fill(ptcorr,sumpt4ap/rhoin4);
1124 fh2JetsumHT3R6ap->Fill(ptcorr,sumpt6ap/rhoin6);
1125 fh2JetsumHT3R8ap->Fill(ptcorr,sumpt8ap/rhoin8);
1126 fh2JetsumHT3R10ap->Fill(ptcorr,sumpt10ap/rhoin10);}
1127 if(leadtrack->Pt()>6.){
1128 fh2JetsumHT3R2bp->Fill(ptcorr,sumpt2bp/rhoin2);
1129 fh2JetsumHT3R4bp->Fill(ptcorr,sumpt4bp/rhoin4);
1130 fh2JetsumHT3R6bp->Fill(ptcorr,sumpt6bp/rhoin6);
1131 fh2JetsumHT3R8bp->Fill(ptcorr,sumpt8bp/rhoin8);
1132 fh2JetsumHT3R10bp->Fill(ptcorr,sumpt10bp/rhoin10);}}}
1136 if(partback->Pt()<1.){
1138 if(leadtrack->Pt()>0.){
1139 fh2JetsumHT3R2aaa->Fill(ptcorr,sumpt2aaa/rhoin2);
1140 fh2JetsumHT3R4aaa->Fill(ptcorr,sumpt4aaa/rhoin4);
1141 fh2JetsumHT3R6aaa->Fill(ptcorr,sumpt6aaa/rhoin6);
1142 fh2JetsumHT3R8aaa->Fill(ptcorr,sumpt8aaa/rhoin8);
1143 fh2JetsumHT3R10aaa->Fill(ptcorr,sumpt10aaa/rhoin10);}
1144 if(leadtrack->Pt()>6.){
1145 fh2JetsumHT3R2bbb->Fill(ptcorr,sumpt2bbb/rhoin2);
1146 fh2JetsumHT3R4bbb->Fill(ptcorr,sumpt4bbb/rhoin4);
1147 fh2JetsumHT3R6bbb->Fill(ptcorr,sumpt6bbb/rhoin6);
1148 fh2JetsumHT3R8bbb->Fill(ptcorr,sumpt8bbb/rhoin8);
1149 fh2JetsumHT3R10bbb->Fill(ptcorr,sumpt10bbb/rhoin10);}}
1151 if(centValue>30 && centValue<60.){
1152 if(leadtrack->Pt()>0.){
1153 fh2JetsumHT3R2aaap->Fill(ptcorr,sumpt2aaap/rhoin2);
1154 fh2JetsumHT3R4aaap->Fill(ptcorr,sumpt4aaap/rhoin4);
1155 fh2JetsumHT3R6aaap->Fill(ptcorr,sumpt6aaap/rhoin6);
1156 fh2JetsumHT3R8aaap->Fill(ptcorr,sumpt8aaap/rhoin8);
1157 fh2JetsumHT3R10aaap->Fill(ptcorr,sumpt10aaap/rhoin10);}
1158 if(leadtrack->Pt()>6.){
1159 fh2JetsumHT3R2bbbp->Fill(ptcorr,sumpt2bbbp/rhoin2);
1160 fh2JetsumHT3R4bbbp->Fill(ptcorr,sumpt4bbbp/rhoin4);
1161 fh2JetsumHT3R6bbbp->Fill(ptcorr,sumpt6bbbp/rhoin6);
1162 fh2JetsumHT3R8bbbp->Fill(ptcorr,sumpt8bbbp/rhoin8);
1163 fh2JetsumHT3R10bbbp->Fill(ptcorr,sumpt10bbbp/rhoin10);}}}
1175 if(injet>0) fh2JetDensity->Fill(ParticleList.GetEntries(),injet/accep);
1176 if(injet4>0)fh2JetDensityA4->Fill(ParticleList.GetEntries(),injet4/accep);
1182 if(fDoEventMixing>0){
1183 //check before if the trigger exists
1184 // fTrigBuffer[i][0] = zvtx
1185 // fTrigBuffer[i][1] = phi
1186 // fTrigBuffer[i][2] = eta
1187 // fTrigBuffer[i][3] = pt_jet
1188 // fTrigBuffer[i][4] = pt_trig
1189 // fTrigBuffer[i][5]= centrality
1190 if(fTindex==10) fTindex=0;
1191 if(fTrigBuffer[fTindex][3]>0){
1192 if (TMath::Abs(fTrigBuffer[fTindex][0]-primVtx->GetZ()<2.)){
1193 if (TMath::Abs(fTrigBuffer[fTindex][5]-centValue<5)){
1195 for(int it = 0;it<nT;++it){
1196 AliVParticle *part = (AliVParticle*)ParticleList.At(it);
1197 Double_t DPhi = fTrigBuffer[fTindex][1] - part->Phi();
1198 Double_t DEta = fTrigBuffer[fTindex][2] - part->Eta();
1199 Double_t DR=TMath::Sqrt(DPhi*DPhi+DEta*DEta);
1200 if(DPhi<-0.5*TMath::Pi()) DPhi+=2.*TMath::Pi();
1201 if(DPhi>3./2.*TMath::Pi()) DPhi-=2.*TMath::Pi();
1202 Double_t triggerEntries[7] = {centValue,fTrigBuffer[fTindex][3],part->Pt(),DR,DEta,DPhi,fTrigBuffer[fTindex][4]};
1203 fhnMixedEvents->Fill(triggerEntries);
1205 fNevents=fNevents+1;
1206 if(fNevents==10) fTindex=fTindex+1;
1208 if(fTindex==10&&fNevents==10) fCountAgain=0;
1210 // Copy the triggers from the current event into the buffer.
1211 //again, only if the trigger exists:
1214 AliAODJet* jetT = (AliAODJet*)(fListJets[0]->At(trigJet)); AliVParticle *partT = (AliVParticle*)ParticleList.At(trigBBTrack);
1215 fTrigBuffer[fTrigBufferIndex][0] = primVtx->GetZ();
1216 fTrigBuffer[fTrigBufferIndex][1] = jetT->Phi();
1217 fTrigBuffer[fTrigBufferIndex][2] = jetT->Eta();
1218 fTrigBuffer[fTrigBufferIndex][3] = jetT->Pt()-rho*jetT->EffectiveAreaCharged();
1219 fTrigBuffer[fTrigBufferIndex][4] = partT->Pt();
1220 fTrigBuffer[fTrigBufferIndex][5] = centValue;
1222 if(fTrigBufferIndex==9) {fTrigBufferIndex=0;
1231 //////////////////ANGULAR STRUCTURE//////////////////////////////////////
1233 //tracks up to R=0.8 distant from the jet axis
1234 // if(fAngStructCloseTracks==1){
1235 // TList CloseTrackList;
1236 // Int_t nn=GetListOfTracksCloseToJet(&CloseTrackList,jetbig);
1237 // Double_t difR=0.04;
1238 // for(Int_t l=0;l<15;l++){
1239 // Double_t rr=l*0.1+0.1;
1240 // for(int it = 0;it<nn;++it){
1241 // AliVParticle *part1 = (AliVParticle*)CloseTrackList.At(it);
1242 // for(int itu=it+1;itu<CloseTrackList.GetEntries();itu++){
1243 // AliVParticle *part2 = (AliVParticle*)CloseTrackList.At(itu);
1244 // Double_t ptm=part1->Pt();
1245 // Double_t ptn=part2->Pt();
1246 // Double_t Rnm = (part1->Eta()-part2->Eta())*(part1->Eta()-part2->Eta())+(part1->Phi()-part2->Phi())*(part1->Phi()-part2->Phi());
1247 // Rnm=TMath::Sqrt(Rnm);
1248 // Double_t deltag=(1./(TMath::Sqrt(2*TMath::Pi())*difR))*TMath::Exp(-1.*(rr-Rnm)*(rr-Rnm)/(2.*difR*difR));
1249 // Double_t stepf=0.5*(1.+TMath::Erf((rr-Rnm)/(TMath::Sqrt(2.)*difR)));
1250 // if((ptcorr<85.) && (ptcorr>=70.)){up1[l]=up1[l]+ptm*ptn*Rnm*Rnm*deltag;
1251 // down1[l]=down1[l]+ptm*ptn*Rnm*Rnm*stepf;}
1252 // if((ptcorr<100.) && (ptcorr>=85.)){up2[l]=up2[l]+ptm*ptn*Rnm*Rnm*deltag;
1253 // down2[l]=down2[l]+ptm*ptn*Rnm*Rnm*stepf;}
1254 // if((ptcorr<120.) && (ptcorr>=100.)){up3[l]=up3[l]+ptm*ptn*Rnm*Rnm*deltag;
1255 // down3[l]=down3[l]+ptm*ptn*Rnm*Rnm*stepf;}
1256 // if((ptcorr<140.) && (ptcorr>=120.)){up4[l]=up4[l]+ptm*ptn*Rnm*Rnm*deltag;
1257 // down4[l]=down4[l]+ptm*ptn*Rnm*Rnm*stepf;}}}}
1260 // //only jet constituents
1261 // if(fAngStructCloseTracks==2){
1263 // Double_t difR=0.04;
1264 // for(Int_t l=0;l<15;l++){
1265 // Double_t rr=l*0.1+0.1;
1268 // AliAODTrack* part1;
1269 // AliAODTrack* part2;
1271 // TRefArray *genTrackListb = jetbig->GetRefTracks();
1272 // Int_t nTracksGenJetb = genTrackListb->GetEntriesFast();
1276 // for(Int_t it=0; it<nTracksGenJetb; ++it){
1277 // part1 = (AliAODTrack*)(genTrackListb->At(it));
1278 // for(Int_t itu=0; itu<nTracksGenJetb; ++itu){
1279 // part2 = (AliAODTrack*)(genTrackListb->At(itu));
1280 // Double_t ptm=part1->Pt();
1281 // Double_t ptn=part2->Pt();
1282 // Double_t Rnm = (part1->Eta()-part2->Eta())*(part1->Eta()-part2->Eta())+(part1->Phi()-part2->Phi())*(part1->Phi()-part2->Phi());
1283 // Rnm=TMath::Sqrt(Rnm);
1284 // Double_t deltag=(1./(TMath::Sqrt(2*TMath::Pi())*difR))*TMath::Exp(-1.*(rr-Rnm)*(rr-Rnm)/(2.*difR*difR));
1285 // Double_t stepf=0.5*(1.+TMath::Erf((rr-Rnm)/(TMath::Sqrt(2.)*difR)));
1286 // if((ptcorr<85.) && (ptcorr>=70.)){up1[l]=up1[l]+ptm*ptn*Rnm*Rnm*deltag;
1287 // down1[l]=down1[l]+ptm*ptn*Rnm*Rnm*stepf;}
1288 // if((ptcorr<100.) && (ptcorr>=85.)){up2[l]=up2[l]+ptm*ptn*Rnm*Rnm*deltag;
1289 // down2[l]=down2[l]+ptm*ptn*Rnm*Rnm*stepf;}
1290 // if((ptcorr<120.) && (ptcorr>=100.)){up3[l]=up3[l]+ptm*ptn*Rnm*Rnm*deltag;
1291 // down3[l]=down3[l]+ptm*ptn*Rnm*Rnm*stepf;}
1292 // if((ptcorr<140.) && (ptcorr>=120.)){up4[l]=up4[l]+ptm*ptn*Rnm*Rnm*deltag;
1293 // down4[l]=down4[l]+ptm*ptn*Rnm*Rnm*stepf;}}}}}
1295 // //end loop over R=0.4 jets
1296 // if(fAngStructCloseTracks>0){
1297 // for(Int_t l=0;l<15;l++){
1298 // Double_t rr=l*0.1+0.1;
1300 // if(centValue<10.)fh2AngStructpt1C10->Fill(rr,rr*up1[l]/down1[l]);
1301 // if(centValue>20. && centValue<40.) fh2AngStructpt1C20->Fill(rr,rr*up1[l]/down1[l]);
1302 // if(centValue>30. && centValue<60.) fh2AngStructpt1C30->Fill(rr,rr*up1[l]/down1[l]);
1303 // if(centValue>60.) fh2AngStructpt1C60->Fill(rr,rr*up1[l]/down1[l]);}
1305 // if(centValue<10.) fh2AngStructpt2C10->Fill(rr,rr*up2[l]/down2[l]);
1306 // if(centValue>20. && centValue<40.) fh2AngStructpt2C20->Fill(rr,rr*up2[l]/down2[l]);
1307 // if(centValue>30. && centValue<60.) fh2AngStructpt2C30->Fill(rr,rr*up2[l]/down2[l]);
1308 // if(centValue>60.) fh2AngStructpt2C60->Fill(rr,rr*up2[l]/down2[l]);}
1310 // if(centValue<10.) fh2AngStructpt3C10->Fill(rr,rr*up3[l]/down3[l]);
1311 // if(centValue>20. && centValue<40.) fh2AngStructpt3C20->Fill(rr,rr*up3[l]/down3[l]);
1312 // if(centValue>30. && centValue<60.) fh2AngStructpt3C30->Fill(rr,rr*up3[l]/down3[l]);
1313 // if(centValue>60.) fh2AngStructpt3C60->Fill(rr,rr*up3[l]/down3[l]);}
1315 // if(centValue<10.) fh2AngStructpt4C10->Fill(rr,rr*up4[l]/down4[l]);
1316 // if(centValue>20. && centValue<40.) fh2AngStructpt4C20->Fill(rr,rr*up4[l]/down4[l]);
1317 // if(centValue>30. && centValue<60.) fh2AngStructpt4C30->Fill(rr,rr*up4[l]/down4[l]);
1318 // if(centValue>60.) fh2AngStructpt4C60->Fill(rr,rr*up4[l]/down4[l]);}}}
1326 PostData(1, fOutputList);
1329 void AliAnalysisTaskJetCore::Terminate(const Option_t *)
1331 // Draw result to the screen
1332 // Called once at the end of the query
1334 if (!GetOutputData(1))
1343 Int_t AliAnalysisTaskJetCore::GetListOfTracks(TList *list){
1346 AliAODEvent *aod = 0;
1347 if(!fESD)aod = fAODIn;
1351 for(int it = 0;it < aod->GetNumberOfTracks();++it){
1352 AliAODTrack *tr = aod->GetTrack(it);
1353 if((fFilterMask>0)&&!(tr->TestFilterBit(fFilterMask)))continue;
1354 if(TMath::Abs(tr->Eta())>0.9)continue;
1355 if(tr->Pt()<0.15)continue;
1358 if(tr->Pt()>ptmax){ ptmax=tr->Pt();
1368 Int_t AliAnalysisTaskJetCore::GetHardestTrackBackToJet(AliAODJet *jetbig){
1370 AliAODEvent *aod = 0;
1371 if(!fESD)aod = fAODIn;
1378 for(int it = 0;it < aod->GetNumberOfTracks();++it){
1379 AliAODTrack *tr = aod->GetTrack(it);
1380 if((fFilterMask>0)&&!(tr->TestFilterBit(fFilterMask)))continue;
1381 if(TMath::Abs(tr->Eta())>0.9)continue;
1382 if(tr->Pt()<0.15)continue;
1384 dphi=RelativePhi(tr->Phi(),jetbig->Phi());
1385 if(TMath::Abs(dphi)<TMath::Pi()-0.2) continue;
1386 if(tr->Pt()>ptmax){ ptmax=tr->Pt();
1402 Int_t AliAnalysisTaskJetCore::GetListOfTracksCloseToJet(TList *list,AliAODJet *jetbig){
1405 AliAODEvent *aod = 0;
1406 if(!fESD)aod = fAODIn;
1409 for(int it = 0;it < aod->GetNumberOfTracks();++it){
1410 AliAODTrack *tr = aod->GetTrack(it);
1411 if((fFilterMask>0)&&!(tr->TestFilterBit(fFilterMask)))continue;
1412 if(TMath::Abs(tr->Eta())>0.9)continue;
1413 if(tr->Pt()<0.15)continue;
1414 Double_t disR=jetbig->DeltaR(tr);
1415 if(disR>0.8) continue;
1417 //cout<<fAOD->GetNumberOfTracks()<<" "<<tr->Pt()<<endl;
1436 Int_t AliAnalysisTaskJetCore::GetNInputTracks()
1439 Int_t nInputTracks = 0;
1440 AliAODEvent *aod = 0;
1441 if(!fESD)aod = fAODIn;
1443 TString jbname(fJetBranchName[1]);
1444 //needs complete event, use jets without background subtraction
1445 for(Int_t i=1; i<=3; ++i){
1446 if(jbname.Contains(Form("B%d",i))) jbname.ReplaceAll(Form("B%d",i),"B0");
1448 // use only HI event
1449 if(jbname.Contains("AODextraonly")) jbname.ReplaceAll("AODextraonly","AOD");
1450 if(jbname.Contains("AODextra")) jbname.ReplaceAll("AODextra","AOD");
1452 if(fDebug) Printf("Multiplicity from jet branch %s", jbname.Data());
1453 TClonesArray *tmpAODjets = dynamic_cast<TClonesArray*>(aod->FindListObject(jbname.Data()));
1455 Printf("Jet branch %s not found", jbname.Data());
1456 Printf("AliAnalysisTaskJetCore::GetNInputTracks FAILED");
1460 for (Int_t iJet=0; iJet<tmpAODjets->GetEntriesFast(); iJet++){
1461 AliAODJet *jet = dynamic_cast<AliAODJet*>((*tmpAODjets)[iJet]);
1463 TRefArray *trackList = jet->GetRefTracks();
1464 Int_t nTracks = trackList->GetEntriesFast();
1465 nInputTracks += nTracks;
1466 if(fDebug) Printf("#jet%d: %d tracks", iJet, nTracks);
1468 if(fDebug) Printf("---> input tracks: %d", nInputTracks);
1470 return nInputTracks;
1475 Double_t AliAnalysisTaskJetCore::RelativePhi(Double_t mphi,Double_t vphi){
1477 if (vphi < -1*TMath::Pi()) vphi += (2*TMath::Pi());
1478 else if (vphi > TMath::Pi()) vphi -= (2*TMath::Pi());
1479 if (mphi < -1*TMath::Pi()) mphi += (2*TMath::Pi());
1480 else if (mphi > TMath::Pi()) mphi -= (2*TMath::Pi());
1481 double dphi = mphi-vphi;
1482 if (dphi < -1*TMath::Pi()) dphi += (2*TMath::Pi());
1483 else if (dphi > TMath::Pi()) dphi -= (2*TMath::Pi());
1484 return dphi;//dphi in [-Pi, Pi]
1489 THnSparse* AliAnalysisTaskJetCore::NewTHnSparseF(const char* name, UInt_t entries)
1491 // generate new THnSparseF, axes are defined in GetDimParams()
1494 UInt_t tmp = entries;
1497 tmp = tmp &~ -tmp; // clear lowest bit
1500 TString hnTitle(name);
1501 const Int_t dim = count;
1508 while(c<dim && i<32){
1512 GetDimParams(i, label, nbins[c], xmin[c], xmax[c]);
1513 hnTitle += Form(";%s",label.Data());
1521 return new THnSparseF(name, hnTitle.Data(), dim, nbins, xmin, xmax);
1524 void AliAnalysisTaskJetCore::GetDimParams(Int_t iEntry, TString &label, Int_t &nbins, Double_t &xmin, Double_t &xmax)
1526 // stores label and binning of axis for THnSparse
1528 const Double_t pi = TMath::Pi();
1533 label = "V0 centrality (%)";
1542 label = "corrected jet pt";
1585 label = "leading track";
1593 label = "trigger track";