Updated mass range for Dplus (Renu)
[u/mrichter/AliRoot.git] / PWGJE / AliAnalysisTaskJetCore.cxx
CommitLineData
a9e585a7 1
568f8fa2 2// ******************************************
3// This task computes several jet observables like
4// the fraction of energy in inner and outer coronnas,
da93bb11 5// jet-track correlations,triggered jet shapes and
568f8fa2 6// correlation strength distribution of particles inside jets.
7// Author: lcunquei@cern.ch
8// *******************************************
9
10
11/**************************************************************************
12 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
13 * *
14 * Author: The ALICE Off-line Project. *
15 * Contributors are mentioned in the code where appropriate. *
16 * *
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 **************************************************************************/
25
26
75bf77e3 27#include "TChain.h"
28#include "TTree.h"
29#include "TMath.h"
30#include "TH1F.h"
31#include "TH2F.h"
32#include "TH3F.h"
33#include "THnSparse.h"
34#include "TCanvas.h"
35
36#include "AliLog.h"
37
38#include "AliAnalysisTask.h"
39#include "AliAnalysisManager.h"
40
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"
75bf77e3 49#include "AliAODEvent.h"
ea693273 50#include "AliAODHandler.h"
75bf77e3 51#include "AliAODJet.h"
52
53#include "AliAnalysisTaskJetCore.h"
54
55ClassImp(AliAnalysisTaskJetCore)
56
57AliAnalysisTaskJetCore::AliAnalysisTaskJetCore() :
58AliAnalysisTaskSE(),
59fESD(0x0),
5bd732d4 60fAODIn(0x0),
61fAODOut(0x0),
ea693273 62fAODExtension(0x0),
75bf77e3 63fBackgroundBranch(""),
ea693273 64fNonStdFile(""),
75bf77e3 65fIsPbPb(kTRUE),
66fOfflineTrgMask(AliVEvent::kAny),
67fMinContribVtx(1),
a9e585a7 68fVtxZMin(-10.),
69fVtxZMax(10.),
75bf77e3 70fEvtClassMin(0),
71fEvtClassMax(4),
8b47ec90 72fFilterMask(0),
ea693273 73fRadioFrac(0.2),
74fMinDist(0.1),
75bf77e3 75fCentMin(0.),
76fCentMax(100.),
77fNInputTracksMin(0),
78fNInputTracksMax(-1),
ea693273 79fAngStructCloseTracks(0),
da93bb11 80fCheckMethods(0),
529e2916 81fDoEventMixing(0),
75bf77e3 82fJetEtaMin(-.5),
83fJetEtaMax(.5),
529e2916 84fNevents(0x0),
85fTindex(0x0),
86fTrigBufferIndex(0x0),
75bf77e3 87fJetPtMin(20.),
88fJetTriggerExcludeMask(AliAODJet::kHighTrackPtTriggered),
89fJetPtFractionMin(0.5),
90fNMatchJets(4),
91fMatchMaxDist(0.8),
92fKeepJets(kFALSE),
75bf77e3 93fkNbranches(2),
94fkEvtClasses(12),
95fOutputList(0x0),
96fbEvent(kTRUE),
97fHistEvtSelection(0x0),
da93bb11 98fhnDeltaR(0x0),
529e2916 99fhnMixedEvents(0x0),
75bf77e3 100fh2JetCoreMethod1C10(0x0),
101fh2JetCoreMethod2C10(0x0),
ea693273 102fh2JetCoreMethod1C20(0x0),
103fh2JetCoreMethod2C20(0x0),
75bf77e3 104fh2JetCoreMethod1C30(0x0),
105fh2JetCoreMethod2C30(0x0),
75bf77e3 106fh2JetCoreMethod1C60(0x0),
107fh2JetCoreMethod2C60(0x0),
ea693273 108fh2AngStructpt1C10(0x0),
109fh2AngStructpt2C10(0x0),
110fh2AngStructpt3C10(0x0),
111fh2AngStructpt4C10(0x0),
112fh2AngStructpt1C20(0x0),
113fh2AngStructpt2C20(0x0),
114fh2AngStructpt3C20(0x0),
115fh2AngStructpt4C20(0x0),
116fh2AngStructpt1C30(0x0),
117fh2AngStructpt2C30(0x0),
118fh2AngStructpt3C30(0x0),
119fh2AngStructpt4C30(0x0),
120fh2AngStructpt1C60(0x0),
121fh2AngStructpt2C60(0x0),
122fh2AngStructpt3C60(0x0),
da93bb11 123fh2AngStructpt4C60(0x0),
ba143e7f 124fh2JetsumHT3R2a(0x0),
125fh2JetsumHT3R2ap(0x0),
126fh2JetsumHT3R4a(0x0),
127fh2JetsumHT3R4ap(0x0),
128fh2JetsumHT3R6a(0x0),
129fh2JetsumHT3R6ap(0x0),
130fh2JetsumHT3R8a(0x0),
131fh2JetsumHT3R8ap(0x0),
132fh2JetsumHT3R10a(0x0),
133fh2JetsumHT3R10ap(0x0),
134fh2JetsumHT3R2aa(0x0),
135fh2JetsumHT3R2aap(0x0),
136fh2JetsumHT3R4aa(0x0),
137fh2JetsumHT3R4aap(0x0),
138fh2JetsumHT3R6aa(0x0),
139fh2JetsumHT3R6aap(0x0),
140fh2JetsumHT3R8aa(0x0),
141fh2JetsumHT3R8aap(0x0),
142fh2JetsumHT3R10aa(0x0),
143fh2JetsumHT3R10aap(0x0),
144fh2JetsumHT3R2aaa(0x0),
145fh2JetsumHT3R2aaap(0x0),
146fh2JetsumHT3R4aaa(0x0),
147fh2JetsumHT3R4aaap(0x0),
148fh2JetsumHT3R6aaa(0x0),
149fh2JetsumHT3R6aaap(0x0),
150fh2JetsumHT3R8aaa(0x0),
151fh2JetsumHT3R8aaap(0x0),
152fh2JetsumHT3R10aaa(0x0),
153fh2JetsumHT3R10aaap(0x0),
154fh2JetsumHT3R2b(0x0),
155fh2JetsumHT3R2bp(0x0),
156fh2JetsumHT3R4b(0x0),
157fh2JetsumHT3R4bp(0x0),
158fh2JetsumHT3R6b(0x0),
159fh2JetsumHT3R6bp(0x0),
160fh2JetsumHT3R8b(0x0),
161fh2JetsumHT3R8bp(0x0),
162fh2JetsumHT3R10b(0x0),
163fh2JetsumHT3R10bp(0x0),
164fh2JetsumHT3R2bb(0x0),
165fh2JetsumHT3R2bbp(0x0),
166fh2JetsumHT3R4bb(0x0),
167fh2JetsumHT3R4bbp(0x0),
168fh2JetsumHT3R6bb(0x0),
169fh2JetsumHT3R6bbp(0x0),
170fh2JetsumHT3R8bb(0x0),
171fh2JetsumHT3R8bbp(0x0),
172fh2JetsumHT3R10bb(0x0),
173fh2JetsumHT3R10bbp(0x0),
174fh2JetsumHT3R2bbb(0x0),
175fh2JetsumHT3R2bbbp(0x0),
176fh2JetsumHT3R4bbb(0x0),
177fh2JetsumHT3R4bbbp(0x0),
178fh2JetsumHT3R6bbb(0x0),
179fh2JetsumHT3R6bbbp(0x0),
180fh2JetsumHT3R8bbb(0x0),
181fh2JetsumHT3R8bbbp(0x0),
182fh2JetsumHT3R10bbb(0x0),
183fh2JetsumHT3R10bbbp(0x0),
da93bb11 184fh3spectriggered(0x0),
185fh3specbiased(0x0),
20dcc500 186fh3spectot(0x0),
187fh3spectotb(0x0)
da93bb11 188
75bf77e3 189{
190 // default Constructor
191
529e2916 192
193 // Trigger buffer.
194 for(Int_t i=0; i<10; i++) {
195 for(Int_t j=0; j<7; j++) {
196 fTrigBuffer[i][j]=0;
197 }
198 }
199
200
201
202
203
75bf77e3 204 fJetBranchName[0] = "";
205 fJetBranchName[1] = "";
206
207 fListJets[0] = new TList;
208 fListJets[1] = new TList;
209}
210
211AliAnalysisTaskJetCore::AliAnalysisTaskJetCore(const char *name) :
212AliAnalysisTaskSE(name),
213fESD(0x0),
5bd732d4 214fAODIn(0x0),
215fAODOut(0x0),
ea693273 216fAODExtension(0x0),
75bf77e3 217fBackgroundBranch(""),
ea693273 218fNonStdFile(""),
75bf77e3 219fIsPbPb(kTRUE),
220fOfflineTrgMask(AliVEvent::kAny),
221fMinContribVtx(1),
a9e585a7 222fVtxZMin(-10.),
223fVtxZMax(10.),
75bf77e3 224fEvtClassMin(0),
225fEvtClassMax(4),
8b47ec90 226fFilterMask(0),
ea693273 227fRadioFrac(0.2),
228fMinDist(0.1),
75bf77e3 229fCentMin(0.),
230fCentMax(100.),
231fNInputTracksMin(0),
232fNInputTracksMax(-1),
ea693273 233fAngStructCloseTracks(0),
da93bb11 234fCheckMethods(0),
529e2916 235fDoEventMixing(0),
75bf77e3 236fJetEtaMin(-.5),
237fJetEtaMax(.5),
529e2916 238fNevents(0x0),
239fTindex(0x0),
240fTrigBufferIndex(0x0),
75bf77e3 241fJetPtMin(20.),
242fJetTriggerExcludeMask(AliAODJet::kHighTrackPtTriggered),
243fJetPtFractionMin(0.5),
244fNMatchJets(4),
245fMatchMaxDist(0.8),
246fKeepJets(kFALSE),
75bf77e3 247fkNbranches(2),
248fkEvtClasses(12),
249fOutputList(0x0),
250fbEvent(kTRUE),
251fHistEvtSelection(0x0),
da93bb11 252fhnDeltaR(0x0),
529e2916 253fhnMixedEvents(0x0),
75bf77e3 254fh2JetCoreMethod1C10(0x0),
255fh2JetCoreMethod2C10(0x0),
ea693273 256fh2JetCoreMethod1C20(0x0),
257fh2JetCoreMethod2C20(0x0),
75bf77e3 258fh2JetCoreMethod1C30(0x0),
259fh2JetCoreMethod2C30(0x0),
75bf77e3 260fh2JetCoreMethod1C60(0x0),
261fh2JetCoreMethod2C60(0x0),
ea693273 262fh2AngStructpt1C10(0x0),
263fh2AngStructpt2C10(0x0),
264fh2AngStructpt3C10(0x0),
265fh2AngStructpt4C10(0x0),
266fh2AngStructpt1C20(0x0),
267fh2AngStructpt2C20(0x0),
268fh2AngStructpt3C20(0x0),
269fh2AngStructpt4C20(0x0),
270fh2AngStructpt1C30(0x0),
271fh2AngStructpt2C30(0x0),
272fh2AngStructpt3C30(0x0),
273fh2AngStructpt4C30(0x0),
274fh2AngStructpt1C60(0x0),
275fh2AngStructpt2C60(0x0),
276fh2AngStructpt3C60(0x0),
da93bb11 277fh2AngStructpt4C60(0x0),
ba143e7f 278fh2JetsumHT3R2a(0x0),
279fh2JetsumHT3R2ap(0x0),
280fh2JetsumHT3R4a(0x0),
281fh2JetsumHT3R4ap(0x0),
282fh2JetsumHT3R6a(0x0),
283fh2JetsumHT3R6ap(0x0),
284fh2JetsumHT3R8a(0x0),
285fh2JetsumHT3R8ap(0x0),
286fh2JetsumHT3R10a(0x0),
287fh2JetsumHT3R10ap(0x0),
288fh2JetsumHT3R2aa(0x0),
289fh2JetsumHT3R2aap(0x0),
290fh2JetsumHT3R4aa(0x0),
291fh2JetsumHT3R4aap(0x0),
292fh2JetsumHT3R6aa(0x0),
293fh2JetsumHT3R6aap(0x0),
294fh2JetsumHT3R8aa(0x0),
295fh2JetsumHT3R8aap(0x0),
296fh2JetsumHT3R10aa(0x0),
297fh2JetsumHT3R10aap(0x0),
298fh2JetsumHT3R2aaa(0x0),
299fh2JetsumHT3R2aaap(0x0),
300fh2JetsumHT3R4aaa(0x0),
301fh2JetsumHT3R4aaap(0x0),
302fh2JetsumHT3R6aaa(0x0),
303fh2JetsumHT3R6aaap(0x0),
304fh2JetsumHT3R8aaa(0x0),
305fh2JetsumHT3R8aaap(0x0),
306fh2JetsumHT3R10aaa(0x0),
307fh2JetsumHT3R10aaap(0x0),
308fh2JetsumHT3R2b(0x0),
309fh2JetsumHT3R2bp(0x0),
310fh2JetsumHT3R4b(0x0),
311fh2JetsumHT3R4bp(0x0),
312fh2JetsumHT3R6b(0x0),
313fh2JetsumHT3R6bp(0x0),
314fh2JetsumHT3R8b(0x0),
315fh2JetsumHT3R8bp(0x0),
316fh2JetsumHT3R10b(0x0),
317fh2JetsumHT3R10bp(0x0),
318fh2JetsumHT3R2bb(0x0),
319fh2JetsumHT3R2bbp(0x0),
320fh2JetsumHT3R4bb(0x0),
321fh2JetsumHT3R4bbp(0x0),
322fh2JetsumHT3R6bb(0x0),
323fh2JetsumHT3R6bbp(0x0),
324fh2JetsumHT3R8bb(0x0),
325fh2JetsumHT3R8bbp(0x0),
326fh2JetsumHT3R10bb(0x0),
327fh2JetsumHT3R10bbp(0x0),
328fh2JetsumHT3R2bbb(0x0),
329fh2JetsumHT3R2bbbp(0x0),
330fh2JetsumHT3R4bbb(0x0),
331fh2JetsumHT3R4bbbp(0x0),
332fh2JetsumHT3R6bbb(0x0),
333fh2JetsumHT3R6bbbp(0x0),
334fh2JetsumHT3R8bbb(0x0),
335fh2JetsumHT3R8bbbp(0x0),
336fh2JetsumHT3R10bbb(0x0),
337fh2JetsumHT3R10bbbp(0x0),
da93bb11 338fh3spectriggered(0x0),
339fh3specbiased(0x0),
20dcc500 340fh3spectot(0x0),
341fh3spectotb(0x0)
75bf77e3 342 {
343 // Constructor
344
529e2916 345
346 for(Int_t i=0; i<10; i++) {
347 for(Int_t j=0; j<7; j++) {
348 fTrigBuffer[i][j]=0;
349 }
350 }
351
352
353
75bf77e3 354 fJetBranchName[0] = "";
355 fJetBranchName[1] = "";
356
357 fListJets[0] = new TList;
358 fListJets[1] = new TList;
359
360 DefineOutput(1, TList::Class());
361}
362
363AliAnalysisTaskJetCore::~AliAnalysisTaskJetCore()
364{
365 delete fListJets[0];
366 delete fListJets[1];
367}
368
369void AliAnalysisTaskJetCore::SetBranchNames(const TString &branch1, const TString &branch2)
370{
371 fJetBranchName[0] = branch1;
372 fJetBranchName[1] = branch2;
373}
374
375void AliAnalysisTaskJetCore::Init()
376{
377
378 // check for jet branches
379 if(!strlen(fJetBranchName[0].Data()) || !strlen(fJetBranchName[1].Data())){
380 AliError("Jet branch name not set.");
381 }
382
383}
384
385void AliAnalysisTaskJetCore::UserCreateOutputObjects()
386{
387 // Create histograms
388 // Called once
389 OpenFile(1);
390 if(!fOutputList) fOutputList = new TList;
391 fOutputList->SetOwner(kTRUE);
392
393 Bool_t oldStatus = TH1::AddDirectoryStatus();
394 TH1::AddDirectory(kFALSE);
395
396
397 fHistEvtSelection = new TH1I("fHistEvtSelection", "event selection", 6, -0.5, 5.5);
398 fHistEvtSelection->GetXaxis()->SetBinLabel(1,"ACCEPTED");
399 fHistEvtSelection->GetXaxis()->SetBinLabel(2,"events IN");
400 fHistEvtSelection->GetXaxis()->SetBinLabel(3,"event selection (rejected)");
401 fHistEvtSelection->GetXaxis()->SetBinLabel(4,"vertex cut (rejected)");
402 fHistEvtSelection->GetXaxis()->SetBinLabel(5,"centrality (rejected)");
403 fHistEvtSelection->GetXaxis()->SetBinLabel(6,"multiplicity (rejected)");
404
529e2916 405 UInt_t entries = 0; // bit coded, see GetDimParams() below
406 entries = 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5 | 1<<6 |1<<7;
da93bb11 407 fhnDeltaR = NewTHnSparseF("fhnDeltaR", entries);
c42c6838 408
20dcc500 409 //change binning in pTtrack
410 Double_t *xPt3 = new Double_t[10];
c42c6838 411 xPt3[0] = 0.;
20dcc500 412 for(int i = 1; i<=9;i++){
c42c6838 413 if(xPt3[i-1]<1)xPt3[i] = xPt3[i-1] + 0.2; // 1 - 5
20dcc500 414 else if(xPt3[i-1]<10)xPt3[i] = xPt3[i-1] + 3; // 5 - 12
415 else xPt3[i] = xPt3[i-1] + 150.; // 18
c42c6838 416 }
417 fhnDeltaR->SetBinEdges(2,xPt3);
418 delete [] xPt3;
419
20dcc500 420 //change binning in HTI
421 Double_t *xPt4 = new Double_t[14];
422 xPt4[0] = 0.;
423 for(int i = 1; i<=13;i++){
424 if(xPt4[i-1]<10)xPt4[i] = xPt4[i-1] + 1; // 1 - 10
425 else if(xPt4[i-1]<20)xPt4[i] = xPt4[i-1] + 5; // 10 - 12
426 else xPt4[i] = xPt4[i-1] + 30.; // 13
427 }
428 fhnDeltaR->SetBinEdges(6,xPt4);
429 delete [] xPt4;
430
431
432
c42c6838 433
434
435
529e2916 436
c42c6838 437 if(fDoEventMixing){
529e2916 438 UInt_t cifras = 0; // bit coded, see GetDimParams() below
439 cifras = 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5 | 1<<6 |1<<7;
c42c6838 440 fhnMixedEvents = NewTHnSparseF("fhnMixedEvents", cifras);}
ea693273 441
da93bb11 442 if(fCheckMethods){
529e2916 443
75bf77e3 444 fh2JetCoreMethod1C10 = new TH2F("JetCoreMethod1C10","",150, 0., 150.,100, 0., 1.5);
445 fh2JetCoreMethod2C10 = new TH2F("JetCoreMethod2C10","",150, 0., 150.,100, 0., 1.5);
ea693273 446 fh2JetCoreMethod1C20 = new TH2F("JetCoreMethod1C20","",150, 0., 150.,100, 0., 1.5);
447 fh2JetCoreMethod2C20 = new TH2F("JetCoreMethod2C20","",150, 0., 150.,100, 0., 1.5);
75bf77e3 448 fh2JetCoreMethod1C30 = new TH2F("JetCoreMethod1C30","",150, 0., 150.,100, 0., 1.5);
449 fh2JetCoreMethod2C30 = new TH2F("JetCoreMethod2C30","",150, 0., 150.,100, 0., 1.5);
75bf77e3 450 fh2JetCoreMethod1C60 = new TH2F("JetCoreMethod1C60","",150, 0., 150.,100, 0., 1.5);
da93bb11 451 fh2JetCoreMethod2C60 = new TH2F("JetCoreMethod2C60","",150, 0., 150.,100, 0., 1.5);}
452
ea693273 453
da93bb11 454 if(fAngStructCloseTracks>0){
a9e585a7 455 fh2AngStructpt1C10 = new TH2F("Ang struct pt1 C10","",15,0.,1.5,150,0.,10.);
456 fh2AngStructpt2C10 = new TH2F("Ang struct pt2 C10","",15,0.,1.5,150,0.,10.);
457 fh2AngStructpt3C10 = new TH2F("Ang struct pt3 C10","",15,0.,1.5,150,0.,10.);
458 fh2AngStructpt4C10 = new TH2F("Ang struct pt4 C10","",15,0.,1.5,150,0.,10.);
459 fh2AngStructpt1C20 = new TH2F("Ang struct pt1 C20","",15,0.,1.5,150,0.,10.);
460 fh2AngStructpt2C20 = new TH2F("Ang struct pt2 C20","",15,0.,1.5,150,0.,10.);
461 fh2AngStructpt3C20 = new TH2F("Ang struct pt3 C20","",15,0.,1.5,150,0.,10.);
462 fh2AngStructpt4C20 = new TH2F("Ang struct pt4 C20","",15,0.,1.5,150,0.,10.);
463 fh2AngStructpt1C30 = new TH2F("Ang struct pt1 C30","",15,0.,1.5,150,0.,10.);
464 fh2AngStructpt2C30 = new TH2F("Ang struct pt2 C30","",15,0.,1.5,150,0.,10.);
465 fh2AngStructpt3C30 = new TH2F("Ang struct pt3 C30","",15,0.,1.5,150,0.,10.);
466 fh2AngStructpt4C30 = new TH2F("Ang struct pt4 C30","",15,0.,1.5,150,0.,10.);
467 fh2AngStructpt1C60 = new TH2F("Ang struct pt1 C60","",15,0.,1.5,150,0.,10.);
468 fh2AngStructpt2C60 = new TH2F("Ang struct pt2 C60","",15,0.,1.5,150,0.,10.);
469 fh2AngStructpt3C60 = new TH2F("Ang struct pt3 C60","",15,0.,1.5,150,0.,10.);
470 fh2AngStructpt4C60 = new TH2F("Ang struct pt4 C60","",15,0.,1.5,150,0.,10.); }
20dcc500 471
ba143e7f 472 fh2JetsumHT3R2a = new TH2F("Pt sum R02 HT0 TT10","",20,0.,200.,100,0.,10.);
473 fh2JetsumHT3R2ap = new TH2F("Pt sum R02 HT0 TT10 p","",20,0.,200.,100,0.,10.);
474 fh2JetsumHT3R4a = new TH2F("Pt sum R04 HT0 TT10","",20,0.,200.,100,0.,10.);
475 fh2JetsumHT3R4ap = new TH2F("Pt sum R04 HT0 TT10 p","",20,0.,200.,100,0.,10.);
476 fh2JetsumHT3R6a = new TH2F("Pt sum R06 HT0 TT10","",20,0.,200.,100,0.,10.);
477 fh2JetsumHT3R6ap = new TH2F("Pt sum R06 HT0 TT10 p","",20,0.,200.,100,0.,10.);
478 fh2JetsumHT3R8a = new TH2F("Pt sum R08 HT0 TT10","",20,0.,200.,100,0.,10.);
479 fh2JetsumHT3R8ap = new TH2F("Pt sum R08 HT0 TT10 p","",20,0.,200.,100,0.,10.);
480 fh2JetsumHT3R10a = new TH2F("Pt sum R10 HT0 TT10","",20,0.,200.,100,0.,10.);
481 fh2JetsumHT3R10ap = new TH2F("Pt sum R10 HT0 TT10 p","",20,0.,200.,100,0.,10.);
482
483 fh2JetsumHT3R2aa = new TH2F("Pt sum R02 HT0 TT20","",20,0.,200.,100,0.,10.);
484 fh2JetsumHT3R2aap = new TH2F("Pt sum R02 HT0 TT20 p","",20,0.,200.,100,0.,10.);
485 fh2JetsumHT3R4aa = new TH2F("Pt sum R04 HT0 TT20","",20,0.,200.,100,0.,10.);
486 fh2JetsumHT3R4aap = new TH2F("Pt sum R04 HT0 TT20 p","",20,0.,200.,100,0.,10.);
487 fh2JetsumHT3R6aa = new TH2F("Pt sum R06 HT0 TT20","",20,0.,200.,100,0.,10.);
488 fh2JetsumHT3R6aap = new TH2F("Pt sum R06 HT0 TT20 p","",20,0.,200.,100,0.,10.);
489 fh2JetsumHT3R8aa = new TH2F("Pt sum R08 HT0 TT20","",20,0.,200.,100,0.,10.);
490 fh2JetsumHT3R8aap = new TH2F("Pt sum R08 HT0 TT20 p","",20,0.,200.,100,0.,10.);
491 fh2JetsumHT3R10aa = new TH2F("Pt sum R10 HT0 TT20","",20,0.,200.,100,0.,10.);
492 fh2JetsumHT3R10aap = new TH2F("Pt sum R10 HT0 TT20 p","",20,0.,200.,100,0.,10.);
493
494 fh2JetsumHT3R2aaa = new TH2F("Pt sum R02 HT0 TT0","",20,0.,200.,100,0.,10.);
495 fh2JetsumHT3R2aaap = new TH2F("Pt sum R02 HT0 TT0 p","",20,0.,200.,100,0.,10.);
496 fh2JetsumHT3R4aaa = new TH2F("Pt sum R04 HT0 TT0","",20,0.,200.,100,0.,10.);
497 fh2JetsumHT3R4aaap = new TH2F("Pt sum R04 HT0 TT0 p","",20,0.,200.,100,0.,10.);
498 fh2JetsumHT3R6aaa = new TH2F("Pt sum R06 HT0 TT0","",20,0.,200.,100,0.,10.);
499 fh2JetsumHT3R6aaap = new TH2F("Pt sum R06 HT0 TT0 p","",20,0.,200.,100,0.,10.);
500 fh2JetsumHT3R8aaa = new TH2F("Pt sum R08 HT0 TT0","",20,0.,200.,100,0.,10.);
501 fh2JetsumHT3R8aaap = new TH2F("Pt sum R08 HT0 TT0 p","",20,0.,200.,100,0.,10.);
502 fh2JetsumHT3R10aaa = new TH2F("Pt sum R10 HT0 TT0","",20,0.,200.,100,0.,10.);
503 fh2JetsumHT3R10aaap = new TH2F("Pt sum R10 HT0 TT0 p","",20,0.,200.,100,0.,10.);
504
505 fh2JetsumHT3R2b = new TH2F("Pt sum R02 HT6 TT10","",20,0.,200.,100,0.,10.);
506 fh2JetsumHT3R2bp = new TH2F("Pt sum R02 HT6 TT10 p","",20,0.,200.,100,0.,10.);
507 fh2JetsumHT3R4b = new TH2F("Pt sum R04 HT6 TT10","",20,0.,200.,100,0.,10.);
508 fh2JetsumHT3R4bp = new TH2F("Pt sum R04 HT6 TT10 p","",20,0.,200.,100,0.,10.);
509 fh2JetsumHT3R6b = new TH2F("Pt sum R06 HT6 TT10","",20,0.,200.,100,0.,10.);
510 fh2JetsumHT3R6bp = new TH2F("Pt sum R06 HT6 TT10 p","",20,0.,200.,100,0.,10.);
511 fh2JetsumHT3R8b = new TH2F("Pt sum R08 HT6 TT10","",20,0.,200.,100,0.,10.);
512 fh2JetsumHT3R8bp = new TH2F("Pt sum R08 HT6 TT10 p","",20,0.,200.,100,0.,10.);
513 fh2JetsumHT3R10b = new TH2F("Pt sum R10 HT6 TT10","",20,0.,200.,100,0.,10.);
514 fh2JetsumHT3R10bp = new TH2F("Pt sum R10 HT6 TT10 p","",20,0.,200.,100,0.,10.);
515
516 fh2JetsumHT3R2bb = new TH2F("Pt sum R02 HT6 TT20","",20,0.,200.,100,0.,10.);
517 fh2JetsumHT3R2bbp = new TH2F("Pt sum R02 HT6 TT20 p","",20,0.,200.,100,0.,10.);
518 fh2JetsumHT3R4bb = new TH2F("Pt sum R04 HT6 TT20","",20,0.,200.,100,0.,10.);
519 fh2JetsumHT3R4bbp = new TH2F("Pt sum R04 HT6 TT20 p","",20,0.,200.,100,0.,10.);
520 fh2JetsumHT3R6bb = new TH2F("Pt sum R06 HT6 TT20","",20,0.,200.,100,0.,10.);
521 fh2JetsumHT3R6bbp = new TH2F("Pt sum R06 HT6 TT20 p","",20,0.,200.,100,0.,10.);
522 fh2JetsumHT3R8bb = new TH2F("Pt sum R08 HT6 TT20","",20,0.,200.,100,0.,10.);
523 fh2JetsumHT3R8bbp = new TH2F("Pt sum R08 HT6 TT20 p","",20,0.,200.,100,0.,10.);
524 fh2JetsumHT3R10bb = new TH2F("Pt sum R10 HT6 TT20","",20,0.,200.,100,0.,10.);
525 fh2JetsumHT3R10bbp = new TH2F("Pt sum R10 HT6 TT20 p","",20,0.,200.,100,0.,10.);
526
527 fh2JetsumHT3R2bbb = new TH2F("Pt sum R02 HT6 TT0","",20,0.,200.,100,0.,10.);
528 fh2JetsumHT3R2bbbp = new TH2F("Pt sum R02 HT6 TT0 p","",20,0.,200.,100,0.,10.);
529 fh2JetsumHT3R4bbb = new TH2F("Pt sum R04 HT6 TT0","",20,0.,200.,100,0.,10.);
530 fh2JetsumHT3R4bbbp = new TH2F("Pt sum R04 HT6 TT0 p","",20,0.,200.,100,0.,10.);
531 fh2JetsumHT3R6bbb = new TH2F("Pt sum R06 HT6 TT0","",20,0.,200.,100,0.,10.);
532 fh2JetsumHT3R6bbbp = new TH2F("Pt sum R06 HT6 TT0 p","",20,0.,200.,100,0.,10.);
533 fh2JetsumHT3R8bbb = new TH2F("Pt sum R08 HT6 TT0","",20,0.,200.,100,0.,10.);
534 fh2JetsumHT3R8bbbp = new TH2F("Pt sum R08 HT6 TT0 p","",20,0.,200.,100,0.,10.);
535 fh2JetsumHT3R10bbb = new TH2F("Pt sum R10 HT6 TT0","",20,0.,200.,100,0.,10.);
536 fh2JetsumHT3R10bbbp = new TH2F("Pt sum R10 HT6 TT0 p","",20,0.,200.,100,0.,10.);
537
538
539
540
541
da93bb11 542 fh3spectriggered = new TH3F("Triggered spectrum","",10,0,100,50,0.,200,50,0.,50.);
543 fh3specbiased = new TH3F("Biased spectrum","",10,0,100,50,0.,200.,50,0.,50.);
20dcc500 544 fh3spectot = new TH3F("Total spectrum 0-10","",50,0.,200.,50,0.,50.,50,0.,50.);
ba143e7f 545 fh3spectotb = new TH3F("Total spectrum 30-60","",50,0.,200.,50,0.,50.,50,0.,50.);
75bf77e3 546 fOutputList->Add(fHistEvtSelection);
a9e585a7 547
da93bb11 548 fOutputList->Add(fhnDeltaR);
549
529e2916 550 fOutputList->Add(fhnMixedEvents);
da93bb11 551
552
553
554 if(fCheckMethods){
529e2916 555
75bf77e3 556 fOutputList->Add(fh2JetCoreMethod1C10);
557 fOutputList->Add(fh2JetCoreMethod2C10);
ea693273 558 fOutputList->Add(fh2JetCoreMethod1C20);
559 fOutputList->Add(fh2JetCoreMethod2C20);
75bf77e3 560 fOutputList->Add(fh2JetCoreMethod1C30);
561 fOutputList->Add(fh2JetCoreMethod2C30);
75bf77e3 562 fOutputList->Add(fh2JetCoreMethod1C60);
da93bb11 563 fOutputList->Add(fh2JetCoreMethod2C60);}
a9e585a7 564
ea693273 565
75bf77e3 566
a9e585a7 567
568
569 if(fAngStructCloseTracks>0){
ea693273 570 fOutputList->Add(fh2AngStructpt1C10);
571 fOutputList->Add(fh2AngStructpt2C10);
572 fOutputList->Add(fh2AngStructpt3C10);
573 fOutputList->Add(fh2AngStructpt4C10);
574 fOutputList->Add(fh2AngStructpt1C20);
575 fOutputList->Add(fh2AngStructpt2C20);
576 fOutputList->Add(fh2AngStructpt3C20);
577 fOutputList->Add(fh2AngStructpt4C20);
578 fOutputList->Add(fh2AngStructpt1C30);
579 fOutputList->Add(fh2AngStructpt2C30);
580 fOutputList->Add(fh2AngStructpt3C30);
581 fOutputList->Add(fh2AngStructpt4C30);
582 fOutputList->Add(fh2AngStructpt1C60);
583 fOutputList->Add(fh2AngStructpt2C60);
584 fOutputList->Add(fh2AngStructpt3C60);
a9e585a7 585 fOutputList->Add(fh2AngStructpt4C60);}
20dcc500 586
587
ba143e7f 588 fOutputList->Add(fh2JetsumHT3R2a);
589 fOutputList->Add(fh2JetsumHT3R2ap);
590 fOutputList->Add(fh2JetsumHT3R4a);
591 fOutputList->Add(fh2JetsumHT3R4ap);
592 fOutputList->Add(fh2JetsumHT3R6a);
593 fOutputList->Add(fh2JetsumHT3R6ap);
594 fOutputList->Add(fh2JetsumHT3R8a);
595 fOutputList->Add(fh2JetsumHT3R8ap);
596 fOutputList->Add(fh2JetsumHT3R10a);
597 fOutputList->Add(fh2JetsumHT3R10ap);
598 fOutputList->Add(fh2JetsumHT3R2aa);
599 fOutputList->Add(fh2JetsumHT3R2aap);
600 fOutputList->Add(fh2JetsumHT3R4aa);
601 fOutputList->Add(fh2JetsumHT3R4aap);
602 fOutputList->Add(fh2JetsumHT3R6aa);
603 fOutputList->Add(fh2JetsumHT3R6aap);
604 fOutputList->Add(fh2JetsumHT3R8aa);
605 fOutputList->Add(fh2JetsumHT3R8aap);
606 fOutputList->Add(fh2JetsumHT3R10aa);
607 fOutputList->Add(fh2JetsumHT3R10aap);
608 fOutputList->Add(fh2JetsumHT3R2aaa);
609 fOutputList->Add(fh2JetsumHT3R2aaap);
610 fOutputList->Add(fh2JetsumHT3R4aaa);
611 fOutputList->Add(fh2JetsumHT3R4aaap);
612 fOutputList->Add(fh2JetsumHT3R6aaa);
613 fOutputList->Add(fh2JetsumHT3R6aaap);
614 fOutputList->Add(fh2JetsumHT3R8aaa);
615 fOutputList->Add(fh2JetsumHT3R8aaap);
616 fOutputList->Add(fh2JetsumHT3R10aaa);
617 fOutputList->Add(fh2JetsumHT3R10aaap);
618
619 fOutputList->Add(fh2JetsumHT3R2b);
620 fOutputList->Add(fh2JetsumHT3R2bp);
621 fOutputList->Add(fh2JetsumHT3R4b);
622 fOutputList->Add(fh2JetsumHT3R4bp);
623 fOutputList->Add(fh2JetsumHT3R6b);
624 fOutputList->Add(fh2JetsumHT3R6bp);
625 fOutputList->Add(fh2JetsumHT3R8b);
626 fOutputList->Add(fh2JetsumHT3R8bp);
627 fOutputList->Add(fh2JetsumHT3R10b);
628 fOutputList->Add(fh2JetsumHT3R10bp);
629 fOutputList->Add(fh2JetsumHT3R2bb);
630 fOutputList->Add(fh2JetsumHT3R2bbp);
631 fOutputList->Add(fh2JetsumHT3R4bb);
632 fOutputList->Add(fh2JetsumHT3R4bbp);
633 fOutputList->Add(fh2JetsumHT3R6bb);
634 fOutputList->Add(fh2JetsumHT3R6bbp);
635 fOutputList->Add(fh2JetsumHT3R8bb);
636 fOutputList->Add(fh2JetsumHT3R8bbp);
637 fOutputList->Add(fh2JetsumHT3R10bb);
638 fOutputList->Add(fh2JetsumHT3R10bbp);
639 fOutputList->Add(fh2JetsumHT3R2bbb);
640 fOutputList->Add(fh2JetsumHT3R2bbbp);
641 fOutputList->Add(fh2JetsumHT3R4bbb);
642 fOutputList->Add(fh2JetsumHT3R4bbbp);
643 fOutputList->Add(fh2JetsumHT3R6bbb);
644 fOutputList->Add(fh2JetsumHT3R6bbbp);
645 fOutputList->Add(fh2JetsumHT3R8bbb);
646 fOutputList->Add(fh2JetsumHT3R8bbbp);
647 fOutputList->Add(fh2JetsumHT3R10bbb);
648 fOutputList->Add(fh2JetsumHT3R10bbbp);
5bd732d4 649
ba143e7f 650
20dcc500 651
da93bb11 652 fOutputList->Add(fh3spectriggered);
653 fOutputList->Add(fh3specbiased);
529e2916 654 fOutputList->Add(fh3spectot);
20dcc500 655 fOutputList->Add(fh3spectotb);
75bf77e3 656 // =========== Switch on Sumw2 for all histos ===========
657 for (Int_t i=0; i<fOutputList->GetEntries(); ++i) {
658 TH1 *h1 = dynamic_cast<TH1*>(fOutputList->At(i));
659 if (h1){
660 h1->Sumw2();
661 continue;
662 }
ea693273 663 THnSparse *hn = dynamic_cast<THnSparse*>(fOutputList->At(i));
664 if (hn){
665 hn->Sumw2();
666 }
75bf77e3 667 }
668 TH1::AddDirectory(oldStatus);
669
670 PostData(1, fOutputList);
671}
672
673void AliAnalysisTaskJetCore::UserExec(Option_t *)
674{
675
676
677 if(!strlen(fJetBranchName[0].Data()) || !strlen(fJetBranchName[1].Data())){
678 AliError("Jet branch name not set.");
679 return;
680 }
681
682 fESD=dynamic_cast<AliESDEvent*>(InputEvent());
683 if (!fESD) {
684 AliError("ESD not available");
5bd732d4 685 fAODIn = dynamic_cast<AliAODEvent*>(InputEvent());
686 }
687 fAODOut = dynamic_cast<AliAODEvent*>(AODEvent());
688
689 static AliAODEvent* aod = 0;
690 // take all other information from the aod we take the tracks from
691 if(!aod){
692 if(!fESD)aod = fAODIn;
693 else aod = fAODOut;}
694
695
ea693273 696
697 if(fNonStdFile.Length()!=0){
698 // case that we have an AOD extension we need can fetch the jets from the extended output
699 AliAODHandler *aodH = dynamic_cast<AliAODHandler*>(AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler());
700 fAODExtension = (aodH?aodH->GetExtension(fNonStdFile.Data()):0);
701 if(!fAODExtension){
702 if(fDebug>1)Printf("AODExtension found for %s",fNonStdFile.Data());
703 }}
704
705
706
707
75bf77e3 708
709 // -- event selection --
710 fHistEvtSelection->Fill(1); // number of events before event selection
711
712 // physics selection
713 AliInputEventHandler* inputHandler = (AliInputEventHandler*)
714 ((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler());
da93bb11 715 cout<<inputHandler->IsEventSelected()<<" "<<fOfflineTrgMask<<endl;
75bf77e3 716 if(!(inputHandler->IsEventSelected() & fOfflineTrgMask)){
717 if(fDebug) Printf(" Trigger Selection: event REJECTED ... ");
718 fHistEvtSelection->Fill(2);
719 PostData(1, fOutputList);
720 return;
721 }
722
723 // vertex selection
5bd732d4 724 if(!aod){
52721bee 725 if(fDebug) Printf("%s:%d No AOD",(char*)__FILE__,__LINE__);
726 fHistEvtSelection->Fill(3);
727 PostData(1, fOutputList);
728 }
5bd732d4 729 AliAODVertex* primVtx = aod->GetPrimaryVertex();
52721bee 730
731 if(!primVtx){
732 if(fDebug) Printf("%s:%d No primVtx",(char*)__FILE__,__LINE__);
733 fHistEvtSelection->Fill(3);
d27719bf 734 PostData(1, fOutputList);
735 return;
52721bee 736 }
737
75bf77e3 738 Int_t nTracksPrim = primVtx->GetNContributors();
739 if ((nTracksPrim < fMinContribVtx) ||
740 (primVtx->GetZ() < fVtxZMin) ||
741 (primVtx->GetZ() > fVtxZMax) ){
742 if(fDebug) Printf("%s:%d primary vertex z = %f: event REJECTED...",(char*)__FILE__,__LINE__,primVtx->GetZ());
743 fHistEvtSelection->Fill(3);
744 PostData(1, fOutputList);
745 return;
746 }
747
748 // event class selection (from jet helper task)
749 Int_t eventClass = AliAnalysisHelperJetTasks::EventClass();
750 if(fDebug) Printf("Event class %d", eventClass);
751 if (eventClass < fEvtClassMin || eventClass > fEvtClassMax){
752 fHistEvtSelection->Fill(4);
753 PostData(1, fOutputList);
754 return;
755 }
756
757 // centrality selection
758 AliCentrality *cent = 0x0;
da93bb11 759 Double_t centValue = 0.;
20dcc500 760 if(fESD) {cent = fESD->GetCentrality();
761 if(cent) centValue = cent->GetCentralityPercentile("V0M");}
5bd732d4 762 else centValue=aod->GetHeader()->GetCentrality();
20dcc500 763
75bf77e3 764 if(fDebug) printf("centrality: %f\n", centValue);
ba143e7f 765 // if (centValue < fCentMin || centValue > fCentMax){
766 // fHistEvtSelection->Fill(4);
767 // PostData(1, fOutputList);
768 // return;
769 // }
75bf77e3 770
771
568f8fa2 772 fHistEvtSelection->Fill(0);
773 // accepted events
75bf77e3 774 // -- end event selection --
ea693273 775
75bf77e3 776 // get background
777 AliAODJetEventBackground* externalBackground = 0;
5bd732d4 778 if(fAODOut&&!externalBackground&&fBackgroundBranch.Length()){
779 externalBackground = (AliAODJetEventBackground*)(fAODOut->FindListObject(fBackgroundBranch.Data()));
75bf77e3 780 if(!externalBackground)Printf("%s:%d Background branch not found %s",(char*)__FILE__,__LINE__,fBackgroundBranch.Data());;
781 }
ea693273 782 if(fAODExtension&&!externalBackground&&fBackgroundBranch.Length()){
783 externalBackground = (AliAODJetEventBackground*)(fAODExtension->GetAOD()->FindListObject(fBackgroundBranch.Data()));
784 if(!externalBackground)Printf("%s:%d Background branch not found %s",(char*)__FILE__,__LINE__,fBackgroundBranch.Data());;
785 }
5bd732d4 786
787 if(fAODIn&&!externalBackground&&fBackgroundBranch.Length()){
788 externalBackground = (AliAODJetEventBackground*)(fAODIn->FindListObject(fBackgroundBranch.Data()));
789 if(!externalBackground)Printf("%s:%d Background branch not found %s",(char*)__FILE__,__LINE__,fBackgroundBranch.Data());;
790 }
ea693273 791
75bf77e3 792 Float_t rho = 0;
793 if(externalBackground)rho = externalBackground->GetBackground(0);
794
795
796 // fetch jets
797 TClonesArray *aodJets[2];
ea693273 798 aodJets[0]=0;
5bd732d4 799 if(fAODOut&&!aodJets[0]){
800 aodJets[0] = dynamic_cast<TClonesArray*>(fAODOut->FindListObject(fJetBranchName[0].Data()));
801 aodJets[1] = dynamic_cast<TClonesArray*>(fAODOut->FindListObject(fJetBranchName[1].Data())); }
ea693273 802 if(fAODExtension && !aodJets[0]){
529e2916 803 aodJets[0] = dynamic_cast<TClonesArray*>(fAODExtension->GetAOD()->FindListObject(fJetBranchName[0].Data()));
804 aodJets[1] = dynamic_cast<TClonesArray*>(fAODExtension->GetAOD()->FindListObject(fJetBranchName[1].Data())); }
5bd732d4 805 if(fAODIn&&!aodJets[0]){
806 aodJets[0] = dynamic_cast<TClonesArray*>(fAODIn->FindListObject(fJetBranchName[0].Data()));
807 aodJets[1] = dynamic_cast<TClonesArray*>(fAODIn->FindListObject(fJetBranchName[1].Data())); }
808
ea693273 809
529e2916 810 //Double_t ptsub[aodJets[0]->GetEntriesFast()];
811 //Int_t inord[aodJets[0]->GetEntriesFast()];
812 //for(Int_t n=0;n<aodJets[0]->GetEntriesFast();n++){
813 // ptsub[n]=0;
814 // inord[n]=0;}
a9e585a7 815
ea693273 816 TList ParticleList;
817 Int_t nT = GetListOfTracks(&ParticleList);
818 for (Int_t iJetType = 0; iJetType < 2; iJetType++) {
75bf77e3 819 fListJets[iJetType]->Clear();
820 if (!aodJets[iJetType]) continue;
529e2916 821
75bf77e3 822 if(fDebug) Printf("%s: %d jets",fJetBranchName[iJetType].Data(),aodJets[iJetType]->GetEntriesFast());
823
a9e585a7 824
75bf77e3 825 for (Int_t iJet = 0; iJet < aodJets[iJetType]->GetEntriesFast(); iJet++) {
826 AliAODJet *jet = dynamic_cast<AliAODJet*>((*aodJets[iJetType])[iJet]);
529e2916 827 if (jet) fListJets[iJetType]->Add(jet);
828 // if(iJetType==0){
829 // ptsub[iJet]=jet->Pt()-rho*jet->EffectiveAreaCharged();}
830 }}
75bf77e3 831
832 Double_t etabig=0;
833 Double_t ptbig=0;
834 Double_t areabig=0;
835 Double_t phibig=0.;
836 Double_t etasmall=0;
837 Double_t ptsmall=0;
838 Double_t areasmall=0;
da93bb11 839 //Double_t distr=0.;
75bf77e3 840 Double_t phismall=0.;
a9e585a7 841
da93bb11 842
529e2916 843 // Double_t up1[15]={0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
844 // Double_t up2[15]={0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
845 // Double_t up3[15]={0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
846 // Double_t up4[15]={0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
847 // Double_t down1[15]={0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
848 // Double_t down2[15]={0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
849 // Double_t down3[15]={0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
850 // Double_t down4[15]={0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
851 Int_t iCount=0;
852 Int_t trigJet=-1;
853 Int_t trigBBTrack=-1;
854 Int_t trigInTrack=-1;
855
75bf77e3 856 for(Int_t i=0; i<fListJets[0]->GetEntries(); ++i){
857 AliAODJet* jetbig = (AliAODJet*)(fListJets[0]->At(i));
858 etabig = jetbig->Eta();
859 phibig = jetbig->Phi();
860 ptbig = jetbig->Pt();
861 if(ptbig==0) continue;
862 areabig = jetbig->EffectiveAreaCharged();
ea693273 863 Double_t ptcorr=ptbig-rho*areabig;
864 if(ptcorr<=0) continue;
75bf77e3 865 if((etabig<fJetEtaMin)||(etabig>fJetEtaMax)) continue;
866 Double_t dismin=100.;
867 Double_t ptmax=-10.;
868 Int_t index1=-1;
869 Int_t index2=-1;
da93bb11 870
529e2916 871 Int_t point=GetHardestTrackBackToJet(jetbig);
da93bb11 872 AliVParticle *partback = (AliVParticle*)ParticleList.At(point);
529e2916 873 if(!partback) continue;
da93bb11 874 fh3spectriggered->Fill(centValue,ptcorr,partback->Pt());
6134f035 875 //if(partback->Pt()<6.) continue;
da93bb11 876 AliAODTrack* leadtrack;
877 Int_t ippt=0;
878 Double_t ppt=-10;
529e2916 879 TRefArray *genTrackList = jetbig->GetRefTracks();
880 Int_t nTracksGenJet = genTrackList->GetEntriesFast();
881 AliAODTrack* genTrack;
da93bb11 882 for(Int_t ir=0; ir<nTracksGenJet; ++ir){
883 genTrack = (AliAODTrack*)(genTrackList->At(ir));
884 if(genTrack->Pt()>ppt){ppt=genTrack->Pt();
529e2916 885 ippt=ir;}}
da93bb11 886 leadtrack=(AliAODTrack*)(genTrackList->At(ippt));
529e2916 887 if(!leadtrack) continue;
da93bb11 888 fh3specbiased->Fill(centValue,ptcorr,leadtrack->Pt());
529e2916 889 if(centValue<10)fh3spectot->Fill(ptcorr,leadtrack->Pt(),partback->Pt());
ba143e7f 890 if(centValue>30. && centValue<60.)fh3spectotb->Fill(ptcorr,leadtrack->Pt(),partback->Pt());
529e2916 891 //store one trigger info
892 if((partback->Pt()>10.)&&(iCount==0)){
893 trigJet=i;
894 trigBBTrack=point;
895 trigInTrack=ippt;
896 iCount=iCount+1;}
897
898
899 if(fCheckMethods){
900 for(Int_t j=0; j<fListJets[1]->GetEntries(); ++j){
75bf77e3 901 AliAODJet* jetsmall = (AliAODJet*)(fListJets[1]->At(j));
902 etasmall = jetsmall->Eta();
903 phismall = jetsmall->Phi();
904 ptsmall = jetsmall->Pt();
905 areasmall = jetsmall->EffectiveAreaCharged();
ea693273 906 Double_t tmpDeltaR=(phismall-phibig)*(phismall-phibig)+(etasmall-etabig)*(etasmall-etabig);
907 tmpDeltaR=TMath::Sqrt(tmpDeltaR);
908 //Fraction in the jet core
909 if((ptsmall>ptmax)&&(tmpDeltaR<=fRadioFrac)){ptmax=ptsmall;
75bf77e3 910 index2=j;}
ea693273 911 if(tmpDeltaR<=dismin){ dismin=tmpDeltaR;
912 index1=j;}} //en of loop over R=0.2 jets
75bf77e3 913 //method1:most concentric jet=core
914 if(dismin<fMinDist){ AliAODJet* jetmethod1 = (AliAODJet*)(fListJets[1]->At(index1));
ea693273 915 if(centValue<10) fh2JetCoreMethod1C10->Fill(ptcorr,jetmethod1->Pt()/ptbig);
916 if((centValue>20)&&(centValue<40)) fh2JetCoreMethod1C20->Fill(ptcorr,jetmethod1->Pt()/ptbig);
917 if((centValue>30)&&(centValue<60)) fh2JetCoreMethod1C30->Fill(ptcorr,jetmethod1->Pt()/ptbig);
918 if(centValue>60) fh2JetCoreMethod1C60->Fill(ptcorr,jetmethod1->Pt()/ptbig); }
75bf77e3 919 //method2:hardest contained jet=core
920 if(index2!=-1){
921 AliAODJet* jetmethod2 = (AliAODJet*)(fListJets[1]->At(index2));
ea693273 922 if(centValue<10) fh2JetCoreMethod2C10->Fill(ptcorr,jetmethod2->Pt()/ptbig);
923 if((centValue>20)&&(centValue<40)) fh2JetCoreMethod2C20->Fill(ptcorr,jetmethod2->Pt()/ptbig);
924 if((centValue>30)&&(centValue<60)) fh2JetCoreMethod2C30->Fill(ptcorr,jetmethod2->Pt()/ptbig);
da93bb11 925 if(centValue>60) fh2JetCoreMethod2C60->Fill(ptcorr,jetmethod2->Pt()/ptbig); }}
20dcc500 926 Double_t sumpt2a=0.;
927 Double_t sumpt2b=0.;
20dcc500 928 Double_t sumpt4a=0.;
929 Double_t sumpt4b=0.;
20dcc500 930 Double_t sumpt6a=0.;
931 Double_t sumpt6b=0.;
20dcc500 932 Double_t sumpt8a=0.;
933 Double_t sumpt8b=0.;
20dcc500 934 Double_t sumpt10a=0.;
935 Double_t sumpt10b=0.;
ba143e7f 936 Double_t sumpt2aa=0.;
937 Double_t sumpt2bb=0.;
938 Double_t sumpt4aa=0.;
939 Double_t sumpt4bb=0.;
940 Double_t sumpt6aa=0.;
941 Double_t sumpt6bb=0.;
942 Double_t sumpt8aa=0.;
943 Double_t sumpt8bb=0.;
944 Double_t sumpt10aa=0.;
945 Double_t sumpt10bb=0.;
946 Double_t sumpt2aaa=0.;
947 Double_t sumpt2bbb=0.;
948 Double_t sumpt4aaa=0.;
949 Double_t sumpt4bbb=0.;
950 Double_t sumpt6aaa=0.;
951 Double_t sumpt6bbb=0.;
952 Double_t sumpt8aaa=0.;
953 Double_t sumpt8bbb=0.;
954 Double_t sumpt10aaa=0.;
955 Double_t sumpt10bbb=0.;
956 Double_t sumpt2ap=0.;
957 Double_t sumpt2bp=0.;
958 Double_t sumpt4ap=0.;
959 Double_t sumpt4bp=0.;
960 Double_t sumpt6ap=0.;
961 Double_t sumpt6bp=0.;
962 Double_t sumpt8ap=0.;
963 Double_t sumpt8bp=0.;
964 Double_t sumpt10ap=0.;
965 Double_t sumpt10bp=0.;
966 Double_t sumpt2aap=0.;
967 Double_t sumpt2bbp=0.;
968 Double_t sumpt4aap=0.;
969 Double_t sumpt4bbp=0.;
970 Double_t sumpt6aap=0.;
971 Double_t sumpt6bbp=0.;
972 Double_t sumpt8aap=0.;
973 Double_t sumpt8bbp=0.;
974 Double_t sumpt10aap=0.;
975 Double_t sumpt10bbp=0.;
976 Double_t sumpt2aaap=0.;
977 Double_t sumpt2bbbp=0.;
978 Double_t sumpt4aaap=0.;
979 Double_t sumpt4bbbp=0.;
980 Double_t sumpt6aaap=0.;
981 Double_t sumpt6bbbp=0.;
982 Double_t sumpt8aaap=0.;
983 Double_t sumpt8bbbp=0.;
984 Double_t sumpt10aaap=0.;
985 Double_t sumpt10bbbp=0.;
986
987
988
5bd732d4 989
ea693273 990
da93bb11 991 for(int it = 0;it<nT;++it){
ea693273 992 AliVParticle *part = (AliVParticle*)ParticleList.At(it);
529e2916 993 Double_t deltaR = jetbig->DeltaR(part);
ba143e7f 994 Double_t deltaEta = etabig-part->Eta();
20dcc500 995 if(partback->Pt()>10.){
ba143e7f 996
997 if(centValue<10){
998 //for one more centrality
999 if(deltaR<0.2){if(leadtrack->Pt()>0.)sumpt2a=sumpt2a+part->Pt();
1000 if(leadtrack->Pt()>6) sumpt2b=sumpt2b+part->Pt();}
1001 if(deltaR>=0.2 && deltaR<0.4){if(leadtrack->Pt()>0.)sumpt4a=sumpt4a+part->Pt();
1002 if(leadtrack->Pt()>6.)sumpt4b=sumpt4b+part->Pt();}
1003
1004 if(deltaR>=0.4 && deltaR<0.6){if(leadtrack->Pt()>0.)sumpt6a=sumpt6a+part->Pt();
1005 if(leadtrack->Pt()>6.) sumpt6b=sumpt6b+part->Pt();}
1006 if(deltaR>=0.6 && deltaR<0.8){if(leadtrack->Pt()>0.)sumpt8a=sumpt8a+part->Pt();
1007 if(leadtrack->Pt()>6.) sumpt8b=sumpt8b+part->Pt();}
1008 if(deltaR>=0.8 && deltaR<1.2){if(leadtrack->Pt()>0.)sumpt10a=sumpt10a+part->Pt();
1009 if(leadtrack->Pt()>6.) sumpt10b=sumpt10b+part->Pt();}}
1010
1011 if(centValue>30. && centValue<60.){
1012 //for one more centrality
1013 if(deltaR<0.2){if(leadtrack->Pt()>0.)sumpt2ap=sumpt2ap+part->Pt();
1014 if(leadtrack->Pt()>6) sumpt2bp=sumpt2bp+part->Pt();}
1015 if(deltaR>=0.2 && deltaR<0.4){if(leadtrack->Pt()>0.)sumpt4ap=sumpt4ap+part->Pt();
1016 if(leadtrack->Pt()>6.)sumpt4bp=sumpt4bp+part->Pt();}
1017
1018 if(deltaR>=0.4 && deltaR<0.6){if(leadtrack->Pt()>0.)sumpt6ap=sumpt6ap+part->Pt();
1019 if(leadtrack->Pt()>6.) sumpt6bp=sumpt6bp+part->Pt();}
1020 if(deltaR>=0.6 && deltaR<0.8){if(leadtrack->Pt()>0.)sumpt8ap=sumpt8ap+part->Pt();
1021 if(leadtrack->Pt()>6.) sumpt8bp=sumpt8bp+part->Pt();}
1022 if(deltaR>=0.8 && deltaR<1.2){if(leadtrack->Pt()>0.)sumpt10ap=sumpt10ap+part->Pt();
1023 if(leadtrack->Pt()>6.) sumpt10bp=sumpt10bp+part->Pt();}}}
20dcc500 1024
ba143e7f 1025
1026 if(partback->Pt()>20.){
1027
1028 if(centValue<10){
1029 //for one more centrality
1030 if(deltaR<0.2){if(leadtrack->Pt()>0.)sumpt2aa=sumpt2aa+part->Pt();
1031 if(leadtrack->Pt()>6.) sumpt2bb=sumpt2bb+part->Pt();}
1032 if(deltaR>=0.2 && deltaR<0.4){if(leadtrack->Pt()>0.)sumpt4aa=sumpt4aa+part->Pt();
1033 if(leadtrack->Pt()>6.)sumpt4bb=sumpt4bb+part->Pt();}
1034
1035 if(deltaR>=0.4 && deltaR<0.6){if(leadtrack->Pt()>0.)sumpt6aa=sumpt6aa+part->Pt();
1036 if(leadtrack->Pt()>6.) sumpt6bb=sumpt6bb+part->Pt();}
1037 if(deltaR>=0.6 && deltaR<0.8){if(leadtrack->Pt()>0.)sumpt8aa=sumpt8aa+part->Pt();
1038 if(leadtrack->Pt()>6.) sumpt8bb=sumpt8bb+part->Pt();}
1039 if(deltaR>=0.8 && deltaR<1.2){if(leadtrack->Pt()>0.)sumpt10aa=sumpt10aa+part->Pt();
1040 if(leadtrack->Pt()>6.) sumpt10bb=sumpt10bb+part->Pt();}}
1041
1042 if(centValue>30. && centValue<60.){
1043 //for one more centrality
1044 if(deltaR<0.2){if(leadtrack->Pt()>0.)sumpt2aap=sumpt2aap+part->Pt();
1045 if(leadtrack->Pt()>6) sumpt2bbp=sumpt2bbp+part->Pt();}
1046 if(deltaR>=0.2 && deltaR<0.4){if(leadtrack->Pt()>0.)sumpt4aap=sumpt4aap+part->Pt();
1047 if(leadtrack->Pt()>6.)sumpt4bbp=sumpt4bbp+part->Pt();}
1048
1049 if(deltaR>=0.4 && deltaR<0.6){if(leadtrack->Pt()>0.)sumpt6aap=sumpt6aap+part->Pt();
1050 if(leadtrack->Pt()>6.) sumpt6bbp=sumpt6bbp+part->Pt();}
1051 if(deltaR>=0.6 && deltaR<0.8){if(leadtrack->Pt()>0.)sumpt8aap=sumpt8aap+part->Pt();
1052 if(leadtrack->Pt()>6.) sumpt8bbp=sumpt8bbp+part->Pt();}
1053 if(deltaR>=0.8 && deltaR<1.2){if(leadtrack->Pt()>0.)sumpt10aap=sumpt10aap+part->Pt();
1054 if(leadtrack->Pt()>6.) sumpt10bbp=sumpt10bbp+part->Pt();}}}
1055
1056
1057
1058
1059 if(partback->Pt()<1.){
1060
1061 if(centValue<10){
1062 //for one more centrality
1063 if(deltaR<0.2){if(leadtrack->Pt()>0.)sumpt2aaa=sumpt2aaa+part->Pt();
1064 if(leadtrack->Pt()>6.) sumpt2bbb=sumpt2bbb+part->Pt();}
1065 if(deltaR>=0.2 && deltaR<0.4){if(leadtrack->Pt()>0.)sumpt4aaa=sumpt4aaa+part->Pt();
1066 if(leadtrack->Pt()>6.)sumpt4bbb=sumpt4bbb+part->Pt();}
1067
1068 if(deltaR>=0.4 && deltaR<0.6){if(leadtrack->Pt()>0.)sumpt6aaa=sumpt6aaa+part->Pt();
1069 if(leadtrack->Pt()>6.) sumpt6bbb=sumpt6bbb+part->Pt();}
1070 if(deltaR>=0.6 && deltaR<0.8){if(leadtrack->Pt()>0.)sumpt8aaa=sumpt8aaa+part->Pt();
1071 if(leadtrack->Pt()>6.) sumpt8bbb=sumpt8bbb+part->Pt();}
1072 if(deltaR>=0.8 && deltaR<1.2){if(leadtrack->Pt()>0.)sumpt10aaa=sumpt10aaa+part->Pt();
1073 if(leadtrack->Pt()>6.) sumpt10bbb=sumpt10bbb+part->Pt();}}
1074
1075 if(centValue>30. && centValue<60.){
1076 //for one more centrality
1077 if(deltaR<0.2){if(leadtrack->Pt()>0.)sumpt2aaap=sumpt2aaap+part->Pt();
1078 if(leadtrack->Pt()>6) sumpt2bbbp=sumpt2bbbp+part->Pt();}
1079 if(deltaR>=0.2 && deltaR<0.4){if(leadtrack->Pt()>0.)sumpt4aaap=sumpt4aaap+part->Pt();
1080 if(leadtrack->Pt()>6.)sumpt4bbbp=sumpt4bbbp+part->Pt();}
1081
1082 if(deltaR>=0.4 && deltaR<0.6){if(leadtrack->Pt()>0.)sumpt6aaap=sumpt6aaap+part->Pt();
1083 if(leadtrack->Pt()>6.) sumpt6bbbp=sumpt6bbbp+part->Pt();}
1084 if(deltaR>=0.6 && deltaR<0.8){if(leadtrack->Pt()>0.)sumpt8aaap=sumpt8aaap+part->Pt();
1085 if(leadtrack->Pt()>6.) sumpt8bbbp=sumpt8bbbp+part->Pt();}
1086 if(deltaR>=0.8 && deltaR<1.2){if(leadtrack->Pt()>0.)sumpt10aaap=sumpt10aaap+part->Pt();
1087 if(leadtrack->Pt()>6.) sumpt10bbbp=sumpt10bbbp+part->Pt();}}}
1088
1089
1090
1091
5bd732d4 1092
20dcc500 1093
da93bb11 1094 Double_t deltaPhi=phibig-part->Phi();
1095 if(deltaPhi<-0.5*TMath::Pi()) deltaPhi+=2.*TMath::Pi();
1096 if(deltaPhi>3./2.*TMath::Pi()) deltaPhi-=2.*TMath::Pi();
529e2916 1097 Double_t jetEntries[8] = {centValue,ptcorr,part->Pt(),deltaR,deltaEta,deltaPhi,leadtrack->Pt(),partback->Pt()}; fhnDeltaR->Fill(jetEntries);
1098 }
1099 //end of track loop
20dcc500 1100 Double_t rhoin2=rho*TMath::Pi()*0.2*0.2;
1101 Double_t rhoin4=rho*TMath::Pi()*(0.4*0.4-0.2*0.2);
1102 Double_t rhoin6=rho*TMath::Pi()*(0.6*0.6-0.4*0.4);
1103 Double_t rhoin8=rho*TMath::Pi()*(0.8*0.8-0.6*0.6);
1104 Double_t rhoin10=rho*TMath::Pi()*(1.2*1.2-0.8*0.8);
1105
1106
1107 if(rho!=0){
ba143e7f 1108
5bd732d4 1109 if(partback->Pt()>10.){
ba143e7f 1110 if(centValue<10.){
1111 if(leadtrack->Pt()>0.){
1112 fh2JetsumHT3R2a->Fill(ptcorr,sumpt2a/rhoin2);
1113 fh2JetsumHT3R4a->Fill(ptcorr,sumpt4a/rhoin4);
1114 fh2JetsumHT3R6a->Fill(ptcorr,sumpt6a/rhoin6);
1115 fh2JetsumHT3R8a->Fill(ptcorr,sumpt8a/rhoin8);
1116 fh2JetsumHT3R10a->Fill(ptcorr,sumpt10a/rhoin10);}
1117 if(leadtrack->Pt()>6.){
1118 fh2JetsumHT3R2b->Fill(ptcorr,sumpt2b/rhoin2);
1119 fh2JetsumHT3R4b->Fill(ptcorr,sumpt4b/rhoin4);
1120 fh2JetsumHT3R6b->Fill(ptcorr,sumpt6b/rhoin6);
1121 fh2JetsumHT3R8b->Fill(ptcorr,sumpt8b/rhoin8);
1122 fh2JetsumHT3R10b->Fill(ptcorr,sumpt10b/rhoin10);}}
1123
1124 if(centValue>30 && centValue<60.){
1125 if(leadtrack->Pt()>0.){
1126 fh2JetsumHT3R2ap->Fill(ptcorr,sumpt2ap/rhoin2);
1127 fh2JetsumHT3R4ap->Fill(ptcorr,sumpt4ap/rhoin4);
1128 fh2JetsumHT3R6ap->Fill(ptcorr,sumpt6ap/rhoin6);
1129 fh2JetsumHT3R8ap->Fill(ptcorr,sumpt8ap/rhoin8);
1130 fh2JetsumHT3R10ap->Fill(ptcorr,sumpt10ap/rhoin10);}
1131 if(leadtrack->Pt()>6.){
1132 fh2JetsumHT3R2bp->Fill(ptcorr,sumpt2bp/rhoin2);
1133 fh2JetsumHT3R4bp->Fill(ptcorr,sumpt4bp/rhoin4);
1134 fh2JetsumHT3R6bp->Fill(ptcorr,sumpt6bp/rhoin6);
1135 fh2JetsumHT3R8bp->Fill(ptcorr,sumpt8bp/rhoin8);
1136 fh2JetsumHT3R10bp->Fill(ptcorr,sumpt10bp/rhoin10);}}}
1137
1138
1139
1140
1141
1142 if(partback->Pt()>20.){
1143 if(centValue<10.){
1144 if(leadtrack->Pt()>0.){
1145 fh2JetsumHT3R2aa->Fill(ptcorr,sumpt2aa/rhoin2);
1146 fh2JetsumHT3R4aa->Fill(ptcorr,sumpt4aa/rhoin4);
1147 fh2JetsumHT3R6aa->Fill(ptcorr,sumpt6aa/rhoin6);
1148 fh2JetsumHT3R8aa->Fill(ptcorr,sumpt8aa/rhoin8);
1149 fh2JetsumHT3R10aa->Fill(ptcorr,sumpt10aa/rhoin10);}
1150 if(leadtrack->Pt()>6.){
1151 fh2JetsumHT3R2bb->Fill(ptcorr,sumpt2bb/rhoin2);
1152 fh2JetsumHT3R4bb->Fill(ptcorr,sumpt4bb/rhoin4);
1153 fh2JetsumHT3R6bb->Fill(ptcorr,sumpt6bb/rhoin6);
1154 fh2JetsumHT3R8bb->Fill(ptcorr,sumpt8bb/rhoin8);
1155 fh2JetsumHT3R10bb->Fill(ptcorr,sumpt10bb/rhoin10);}}
1156
1157 if(centValue>30 && centValue<60.){
1158 if(leadtrack->Pt()>0.){
1159 fh2JetsumHT3R2aap->Fill(ptcorr,sumpt2aap/rhoin2);
1160 fh2JetsumHT3R4aap->Fill(ptcorr,sumpt4aap/rhoin4);
1161 fh2JetsumHT3R6aap->Fill(ptcorr,sumpt6aap/rhoin6);
1162 fh2JetsumHT3R8aap->Fill(ptcorr,sumpt8aap/rhoin8);
1163 fh2JetsumHT3R10aap->Fill(ptcorr,sumpt10aap/rhoin10);}
1164 if(leadtrack->Pt()>6.){
1165 fh2JetsumHT3R2bbp->Fill(ptcorr,sumpt2bbp/rhoin2);
1166 fh2JetsumHT3R4bbp->Fill(ptcorr,sumpt4bbp/rhoin4);
1167 fh2JetsumHT3R6bbp->Fill(ptcorr,sumpt6bbp/rhoin6);
1168 fh2JetsumHT3R8bbp->Fill(ptcorr,sumpt8bbp/rhoin8);
1169 fh2JetsumHT3R10bbp->Fill(ptcorr,sumpt10bbp/rhoin10);}}}
1170
1171
1172
1173 if(partback->Pt()<1.){
1174 if(centValue<10.){
1175 if(leadtrack->Pt()>0.){
1176 fh2JetsumHT3R2aaa->Fill(ptcorr,sumpt2aaa/rhoin2);
1177 fh2JetsumHT3R4aaa->Fill(ptcorr,sumpt4aaa/rhoin4);
1178 fh2JetsumHT3R6aaa->Fill(ptcorr,sumpt6aaa/rhoin6);
1179 fh2JetsumHT3R8aaa->Fill(ptcorr,sumpt8aaa/rhoin8);
1180 fh2JetsumHT3R10aaa->Fill(ptcorr,sumpt10aaa/rhoin10);}
1181 if(leadtrack->Pt()>6.){
1182 fh2JetsumHT3R2bbb->Fill(ptcorr,sumpt2bbb/rhoin2);
1183 fh2JetsumHT3R4bbb->Fill(ptcorr,sumpt4bbb/rhoin4);
1184 fh2JetsumHT3R6bbb->Fill(ptcorr,sumpt6bbb/rhoin6);
1185 fh2JetsumHT3R8bbb->Fill(ptcorr,sumpt8bbb/rhoin8);
1186 fh2JetsumHT3R10bbb->Fill(ptcorr,sumpt10bbb/rhoin10);}}
1187
1188 if(centValue>30 && centValue<60.){
1189 if(leadtrack->Pt()>0.){
1190 fh2JetsumHT3R2aaap->Fill(ptcorr,sumpt2aaap/rhoin2);
1191 fh2JetsumHT3R4aaap->Fill(ptcorr,sumpt4aaap/rhoin4);
1192 fh2JetsumHT3R6aaap->Fill(ptcorr,sumpt6aaap/rhoin6);
1193 fh2JetsumHT3R8aaap->Fill(ptcorr,sumpt8aaap/rhoin8);
1194 fh2JetsumHT3R10aaap->Fill(ptcorr,sumpt10aaap/rhoin10);}
1195 if(leadtrack->Pt()>6.){
1196 fh2JetsumHT3R2bbbp->Fill(ptcorr,sumpt2bbbp/rhoin2);
1197 fh2JetsumHT3R4bbbp->Fill(ptcorr,sumpt4bbbp/rhoin4);
1198 fh2JetsumHT3R6bbbp->Fill(ptcorr,sumpt6bbbp/rhoin6);
1199 fh2JetsumHT3R8bbbp->Fill(ptcorr,sumpt8bbbp/rhoin8);
1200 fh2JetsumHT3R10bbbp->Fill(ptcorr,sumpt10bbbp/rhoin10);}}}
1201
1202 }
1203
1204
1205
1206
1207
1208
1209
20dcc500 1210
1211 }
ba143e7f 1212
1213
529e2916 1214 //end of jet loop
1215
1216
1217
1218
1219 if(fDoEventMixing){
1220 //check before if the trigger exists
1221 // fTrigBuffer[i][0] = zvtx
1222 // fTrigBuffer[i][1] = phi
1223 // fTrigBuffer[i][2] = eta
1224 // fTrigBuffer[i][3] = pt_jet
1225 // fTrigBuffer[i][4] = pt_trig
1226 // fTrigBuffer[i][5]= pt_track_in
1227 // fTrigBuffer[i][6]= centrality
1228 if(fTindex==11) fTindex=0;
1229 if(fTrigBuffer[fTindex][3]>0){
1230 if (TMath::Abs(fTrigBuffer[fTindex][0]-primVtx->GetZ()<2.)){
1231 if (TMath::Abs(fTrigBuffer[fTindex][6]-centValue<10)){
1232
1233 for(int it = 0;it<nT;++it){
20dcc500 1234 AliVParticle *part = (AliVParticle*)ParticleList.At(it);
1235 Double_t DPhi = fTrigBuffer[fTindex][1] - part->Phi();
529e2916 1236 Double_t DEta = fTrigBuffer[fTindex][2] - part->Eta();
1237 Double_t DR=TMath::Sqrt(DPhi*DPhi+DEta*DEta);
1238 if(DPhi<-0.5*TMath::Pi()) DPhi+=2.*TMath::Pi();
1239 if(DPhi>3./2.*TMath::Pi()) DPhi-=2.*TMath::Pi();
1240 Double_t triggerEntries[8] = {centValue,fTrigBuffer[fTindex][3],part->Pt(),DR,DEta,DPhi,fTrigBuffer[fTindex][4],fTrigBuffer[fTindex][5]};
1241 fhnMixedEvents->Fill(triggerEntries);
1242 }
1243 fNevents=fNevents+1;
1244 if(fNevents==9) {fTindex=fTindex+1;
1245 fNevents=0;}
1246 }}}
1247
1248
1249 // Copy the triggers from the current event into the buffer.
1250 //again, only if the trigger exists:
1251 if(trigJet>-1){
1252 AliAODJet* jetT = (AliAODJet*)(fListJets[0]->At(trigJet));
1253 AliVParticle *partL = (AliVParticle*)ParticleList.At(trigInTrack);
1254 AliVParticle *partT = (AliVParticle*)ParticleList.At(trigBBTrack);
1255 fTrigBuffer[fTrigBufferIndex][0] = primVtx->GetZ();
1256 fTrigBuffer[fTrigBufferIndex][1] = jetT->Phi();
1257 fTrigBuffer[fTrigBufferIndex][2] = jetT->Eta();
1258 fTrigBuffer[fTrigBufferIndex][3] = jetT->Pt()-rho*jetT->EffectiveAreaCharged();
1259 fTrigBuffer[fTrigBufferIndex][4] = partT->Pt();
1260 fTrigBuffer[fTrigBufferIndex][5] = partL->Pt();
1261 fTrigBuffer[fTrigBufferIndex][6] = centValue;
1262 fTrigBufferIndex++;
1263 if(fTrigBufferIndex==9) fTrigBufferIndex=0;
1264 }
1265 }
1266
1267
1268
1269
da93bb11 1270
ea693273 1271 //////////////////ANGULAR STRUCTURE//////////////////////////////////////
1272
1273 //tracks up to R=0.8 distant from the jet axis
529e2916 1274 // if(fAngStructCloseTracks==1){
1275 // TList CloseTrackList;
1276 // Int_t nn=GetListOfTracksCloseToJet(&CloseTrackList,jetbig);
1277 // Double_t difR=0.04;
1278 // for(Int_t l=0;l<15;l++){
1279 // Double_t rr=l*0.1+0.1;
1280 // for(int it = 0;it<nn;++it){
1281 // AliVParticle *part1 = (AliVParticle*)CloseTrackList.At(it);
1282 // for(int itu=it+1;itu<CloseTrackList.GetEntries();itu++){
1283 // AliVParticle *part2 = (AliVParticle*)CloseTrackList.At(itu);
1284 // Double_t ptm=part1->Pt();
1285 // Double_t ptn=part2->Pt();
1286 // Double_t Rnm = (part1->Eta()-part2->Eta())*(part1->Eta()-part2->Eta())+(part1->Phi()-part2->Phi())*(part1->Phi()-part2->Phi());
1287 // Rnm=TMath::Sqrt(Rnm);
1288 // Double_t deltag=(1./(TMath::Sqrt(2*TMath::Pi())*difR))*TMath::Exp(-1.*(rr-Rnm)*(rr-Rnm)/(2.*difR*difR));
1289 // Double_t stepf=0.5*(1.+TMath::Erf((rr-Rnm)/(TMath::Sqrt(2.)*difR)));
1290 // if((ptcorr<85.) && (ptcorr>=70.)){up1[l]=up1[l]+ptm*ptn*Rnm*Rnm*deltag;
1291 // down1[l]=down1[l]+ptm*ptn*Rnm*Rnm*stepf;}
1292 // if((ptcorr<100.) && (ptcorr>=85.)){up2[l]=up2[l]+ptm*ptn*Rnm*Rnm*deltag;
1293 // down2[l]=down2[l]+ptm*ptn*Rnm*Rnm*stepf;}
1294 // if((ptcorr<120.) && (ptcorr>=100.)){up3[l]=up3[l]+ptm*ptn*Rnm*Rnm*deltag;
1295 // down3[l]=down3[l]+ptm*ptn*Rnm*Rnm*stepf;}
1296 // if((ptcorr<140.) && (ptcorr>=120.)){up4[l]=up4[l]+ptm*ptn*Rnm*Rnm*deltag;
1297 // down4[l]=down4[l]+ptm*ptn*Rnm*Rnm*stepf;}}}}
1298 // }
ea693273 1299
529e2916 1300 // //only jet constituents
1301 // if(fAngStructCloseTracks==2){
ea693273 1302
529e2916 1303 // Double_t difR=0.04;
1304 // for(Int_t l=0;l<15;l++){
1305 // Double_t rr=l*0.1+0.1;
ea693273 1306
1307
529e2916 1308 // AliAODTrack* part1;
1309 // AliAODTrack* part2;
da93bb11 1310
529e2916 1311 // TRefArray *genTrackListb = jetbig->GetRefTracks();
1312 // Int_t nTracksGenJetb = genTrackListb->GetEntriesFast();
da93bb11 1313
1314
1315
529e2916 1316 // for(Int_t it=0; it<nTracksGenJetb; ++it){
1317 // part1 = (AliAODTrack*)(genTrackListb->At(it));
1318 // for(Int_t itu=0; itu<nTracksGenJetb; ++itu){
1319 // part2 = (AliAODTrack*)(genTrackListb->At(itu));
1320 // Double_t ptm=part1->Pt();
1321 // Double_t ptn=part2->Pt();
1322 // Double_t Rnm = (part1->Eta()-part2->Eta())*(part1->Eta()-part2->Eta())+(part1->Phi()-part2->Phi())*(part1->Phi()-part2->Phi());
1323 // Rnm=TMath::Sqrt(Rnm);
1324 // Double_t deltag=(1./(TMath::Sqrt(2*TMath::Pi())*difR))*TMath::Exp(-1.*(rr-Rnm)*(rr-Rnm)/(2.*difR*difR));
1325 // Double_t stepf=0.5*(1.+TMath::Erf((rr-Rnm)/(TMath::Sqrt(2.)*difR)));
1326 // if((ptcorr<85.) && (ptcorr>=70.)){up1[l]=up1[l]+ptm*ptn*Rnm*Rnm*deltag;
1327 // down1[l]=down1[l]+ptm*ptn*Rnm*Rnm*stepf;}
1328 // if((ptcorr<100.) && (ptcorr>=85.)){up2[l]=up2[l]+ptm*ptn*Rnm*Rnm*deltag;
1329 // down2[l]=down2[l]+ptm*ptn*Rnm*Rnm*stepf;}
1330 // if((ptcorr<120.) && (ptcorr>=100.)){up3[l]=up3[l]+ptm*ptn*Rnm*Rnm*deltag;
1331 // down3[l]=down3[l]+ptm*ptn*Rnm*Rnm*stepf;}
1332 // if((ptcorr<140.) && (ptcorr>=120.)){up4[l]=up4[l]+ptm*ptn*Rnm*Rnm*deltag;
1333 // down4[l]=down4[l]+ptm*ptn*Rnm*Rnm*stepf;}}}}}
1334 // }
1335 // //end loop over R=0.4 jets
1336 // if(fAngStructCloseTracks>0){
1337 // for(Int_t l=0;l<15;l++){
1338 // Double_t rr=l*0.1+0.1;
1339 // if(down1[l]!=0){
1340 // if(centValue<10.)fh2AngStructpt1C10->Fill(rr,rr*up1[l]/down1[l]);
1341 // if(centValue>20. && centValue<40.) fh2AngStructpt1C20->Fill(rr,rr*up1[l]/down1[l]);
1342 // if(centValue>30. && centValue<60.) fh2AngStructpt1C30->Fill(rr,rr*up1[l]/down1[l]);
1343 // if(centValue>60.) fh2AngStructpt1C60->Fill(rr,rr*up1[l]/down1[l]);}
1344 // if(down2[l]!=0){
1345 // if(centValue<10.) fh2AngStructpt2C10->Fill(rr,rr*up2[l]/down2[l]);
1346 // if(centValue>20. && centValue<40.) fh2AngStructpt2C20->Fill(rr,rr*up2[l]/down2[l]);
1347 // if(centValue>30. && centValue<60.) fh2AngStructpt2C30->Fill(rr,rr*up2[l]/down2[l]);
1348 // if(centValue>60.) fh2AngStructpt2C60->Fill(rr,rr*up2[l]/down2[l]);}
1349 // if(down3[l]!=0){
1350 // if(centValue<10.) fh2AngStructpt3C10->Fill(rr,rr*up3[l]/down3[l]);
1351 // if(centValue>20. && centValue<40.) fh2AngStructpt3C20->Fill(rr,rr*up3[l]/down3[l]);
1352 // if(centValue>30. && centValue<60.) fh2AngStructpt3C30->Fill(rr,rr*up3[l]/down3[l]);
1353 // if(centValue>60.) fh2AngStructpt3C60->Fill(rr,rr*up3[l]/down3[l]);}
1354 // if(down4[l]!=0){
1355 // if(centValue<10.) fh2AngStructpt4C10->Fill(rr,rr*up4[l]/down4[l]);
1356 // if(centValue>20. && centValue<40.) fh2AngStructpt4C20->Fill(rr,rr*up4[l]/down4[l]);
1357 // if(centValue>30. && centValue<60.) fh2AngStructpt4C30->Fill(rr,rr*up4[l]/down4[l]);
1358 // if(centValue>60.) fh2AngStructpt4C60->Fill(rr,rr*up4[l]/down4[l]);}}}
ea693273 1359
1360
1361
1362
1363
75bf77e3 1364
1365
1366 PostData(1, fOutputList);
da93bb11 1367}
75bf77e3 1368
1369void AliAnalysisTaskJetCore::Terminate(const Option_t *)
1370{
1371 // Draw result to the screen
1372 // Called once at the end of the query
1373
1374 if (!GetOutputData(1))
1375 return;
1376}
1377
ea693273 1378
1379
5bd732d4 1380
ea693273 1381
1382
1383Int_t AliAnalysisTaskJetCore::GetListOfTracks(TList *list){
1384
5bd732d4 1385 Int_t iCount = 0;
1386 AliAODEvent *aod = 0;
ba143e7f 1387 if(!fESD)aod = fAODIn;
5bd732d4 1388 else aod = fAODOut;
ba143e7f 1389
5bd732d4 1390 for(int it = 0;it < aod->GetNumberOfTracks();++it){
1391 AliAODTrack *tr = aod->GetTrack(it);
ea693273 1392 if((fFilterMask>0)&&!(tr->TestFilterBit(fFilterMask)))continue;
1393 if(TMath::Abs(tr->Eta())>0.9)continue;
1394 if(tr->Pt()<0.15)continue;
1395 list->Add(tr);
1396 //cout<<fAOD->GetNumberOfTracks()<<" "<<tr->Pt()<<endl;
1397 iCount++;
1398 }
1399
529e2916 1400
ea693273 1401 return iCount;
1402
1403}
1404
da93bb11 1405 Int_t AliAnalysisTaskJetCore::GetHardestTrackBackToJet(AliAODJet *jetbig){
5bd732d4 1406
1407 AliAODEvent *aod = 0;
1408 if(!fESD)aod = fAODIn;
1409 else aod = fAODOut;
da93bb11 1410 Int_t index=-1;
1411 Double_t ptmax=-10;
1412 Double_t dphi=0;
1413 Double_t dif=0;
1414 Int_t iCount=0;
5bd732d4 1415 for(int it = 0;it < aod->GetNumberOfTracks();++it){
1416 AliAODTrack *tr = aod->GetTrack(it);
da93bb11 1417 if((fFilterMask>0)&&!(tr->TestFilterBit(fFilterMask)))continue;
1418 if(TMath::Abs(tr->Eta())>0.9)continue;
1419 if(tr->Pt()<0.15)continue;
1420 iCount=iCount+1;
529e2916 1421 dphi=RelativePhi(tr->Phi(),jetbig->Phi());
da93bb11 1422 if(TMath::Abs(dphi)<TMath::Pi()-0.2) continue;
1423 if(tr->Pt()>ptmax){ ptmax=tr->Pt();
b6844e9e 1424 index=iCount-1;
1425 dif=dphi; }}
da93bb11 1426
1427 return index;
1428
1429 }
1430
1431
1432
1433
1434
1435
1436
1437
1438
ea693273 1439 Int_t AliAnalysisTaskJetCore::GetListOfTracksCloseToJet(TList *list,AliAODJet *jetbig){
1440
1441 Int_t iCount = 0;
5bd732d4 1442 AliAODEvent *aod = 0;
1443 if(!fESD)aod = fAODIn;
1444 else aod = fAODOut;
8b47ec90 1445
5bd732d4 1446 for(int it = 0;it < aod->GetNumberOfTracks();++it){
1447 AliAODTrack *tr = aod->GetTrack(it);
ea693273 1448 if((fFilterMask>0)&&!(tr->TestFilterBit(fFilterMask)))continue;
1449 if(TMath::Abs(tr->Eta())>0.9)continue;
1450 if(tr->Pt()<0.15)continue;
1451 Double_t disR=jetbig->DeltaR(tr);
1452 if(disR>0.8) continue;
1453 list->Add(tr);
1454 //cout<<fAOD->GetNumberOfTracks()<<" "<<tr->Pt()<<endl;
1455 iCount++;
1456 }
1457
1458 list->Sort();
1459 return iCount;
1460
1461}
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
75bf77e3 1473Int_t AliAnalysisTaskJetCore::GetNInputTracks()
1474{
1475
1476 Int_t nInputTracks = 0;
5bd732d4 1477 AliAODEvent *aod = 0;
1478 if(!fESD)aod = fAODIn;
1479 else aod = fAODOut;
75bf77e3 1480 TString jbname(fJetBranchName[1]);
1481 //needs complete event, use jets without background subtraction
1482 for(Int_t i=1; i<=3; ++i){
1483 if(jbname.Contains(Form("B%d",i))) jbname.ReplaceAll(Form("B%d",i),"B0");
1484 }
1485 // use only HI event
1486 if(jbname.Contains("AODextraonly")) jbname.ReplaceAll("AODextraonly","AOD");
1487 if(jbname.Contains("AODextra")) jbname.ReplaceAll("AODextra","AOD");
1488
1489 if(fDebug) Printf("Multiplicity from jet branch %s", jbname.Data());
5bd732d4 1490 TClonesArray *tmpAODjets = dynamic_cast<TClonesArray*>(aod->FindListObject(jbname.Data()));
75bf77e3 1491 if(!tmpAODjets){
1492 Printf("Jet branch %s not found", jbname.Data());
1493 Printf("AliAnalysisTaskJetCore::GetNInputTracks FAILED");
1494 return -1;
1495 }
1496
1497 for (Int_t iJet=0; iJet<tmpAODjets->GetEntriesFast(); iJet++){
1498 AliAODJet *jet = dynamic_cast<AliAODJet*>((*tmpAODjets)[iJet]);
1499 if(!jet) continue;
1500 TRefArray *trackList = jet->GetRefTracks();
1501 Int_t nTracks = trackList->GetEntriesFast();
1502 nInputTracks += nTracks;
1503 if(fDebug) Printf("#jet%d: %d tracks", iJet, nTracks);
1504 }
1505 if(fDebug) Printf("---> input tracks: %d", nInputTracks);
1506
1507 return nInputTracks;
1508}
1509
1510
1511
ea693273 1512Double_t AliAnalysisTaskJetCore::RelativePhi(Double_t mphi,Double_t vphi){
1513
1514 if (vphi < -1*TMath::Pi()) vphi += (2*TMath::Pi());
1515 else if (vphi > TMath::Pi()) vphi -= (2*TMath::Pi());
1516 if (mphi < -1*TMath::Pi()) mphi += (2*TMath::Pi());
1517 else if (mphi > TMath::Pi()) mphi -= (2*TMath::Pi());
1518 double dphi = mphi-vphi;
1519 if (dphi < -1*TMath::Pi()) dphi += (2*TMath::Pi());
1520 else if (dphi > TMath::Pi()) dphi -= (2*TMath::Pi());
1521 return dphi;//dphi in [-Pi, Pi]
1522}
1523
75bf77e3 1524
1525
da93bb11 1526THnSparse* AliAnalysisTaskJetCore::NewTHnSparseF(const char* name, UInt_t entries)
1527{
1528 // generate new THnSparseF, axes are defined in GetDimParams()
1529
1530 Int_t count = 0;
1531 UInt_t tmp = entries;
1532 while(tmp!=0){
1533 count++;
1534 tmp = tmp &~ -tmp; // clear lowest bit
1535 }
1536
1537 TString hnTitle(name);
1538 const Int_t dim = count;
1539 Int_t nbins[dim];
1540 Double_t xmin[dim];
1541 Double_t xmax[dim];
1542
1543 Int_t i=0;
1544 Int_t c=0;
1545 while(c<dim && i<32){
1546 if(entries&(1<<i)){
1547
1548 TString label("");
1549 GetDimParams(i, label, nbins[c], xmin[c], xmax[c]);
1550 hnTitle += Form(";%s",label.Data());
1551 c++;
1552 }
1553
1554 i++;
1555 }
1556 hnTitle += ";";
1557
1558 return new THnSparseF(name, hnTitle.Data(), dim, nbins, xmin, xmax);
1559}
1560
1561void AliAnalysisTaskJetCore::GetDimParams(Int_t iEntry, TString &label, Int_t &nbins, Double_t &xmin, Double_t &xmax)
1562{
1563 // stores label and binning of axis for THnSparse
1564
1565 const Double_t pi = TMath::Pi();
1566
1567 switch(iEntry){
1568
1569 case 0:
1570 label = "V0 centrality (%)";
1571
1572 nbins = 10;
1573 xmin = 0.;
1574 xmax = 100.;
1575 break;
1576
1577
1578 case 1:
1579 label = "corrected jet pt";
c42c6838 1580 nbins = 20;
da93bb11 1581 xmin = 0.;
1582 xmax = 200.;
1583 break;
1584
1585
1586 case 2:
1587 label = "track pT";
1588
ba143e7f 1589 nbins = 9;
da93bb11 1590 xmin = 0.;
5bd732d4 1591 xmax = 150;
da93bb11 1592 break;
1593
1594
529e2916 1595 case 3:
da93bb11 1596 label = "deltaR";
1597 nbins = 15;
1598 xmin = 0.;
1599 xmax = 1.5;
1600 break;
529e2916 1601
1602
1603
da93bb11 1604 case 4:
1605 label = "deltaEta";
ba143e7f 1606 nbins = 8;
1607 xmin = -1.6;
1608 xmax = 1.6;
da93bb11 1609 break;
1610
1611
5bd732d4 1612 case 5:
da93bb11 1613 label = "deltaPhi";
1614 nbins = 90;
1615 xmin = -0.5*pi;
1616 xmax = 1.5*pi;
1617 break;
1618
1619
529e2916 1620
1621 case 6:
da93bb11 1622 label = "leading track";
ba143e7f 1623 nbins = 13;
da93bb11 1624 xmin = 0;
20dcc500 1625 xmax = 50;
da93bb11 1626 break;
1627
529e2916 1628 case 7:
da93bb11 1629
1630 label = "trigger track";
ba143e7f 1631 nbins =10;
da93bb11 1632 xmin = 0;
1633 xmax = 50;
1634 break;
529e2916 1635
1636
1637
1638
1639
1640
1641
1642
da93bb11 1643 }
1644
1645}
1646