]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGJE/AliAnalysisTaskFragmentationFunction.cxx
Coverity fixed
[u/mrichter/AliRoot.git] / PWGJE / AliAnalysisTaskFragmentationFunction.cxx
CommitLineData
3af23c82 1// *************************************************************************
2// * *
3// * Task for Fragmentation Function Analysis in PWG4 Jet Task Force Train *
4// * *
5// *************************************************************************
656dc810 6
7
8/**************************************************************************
9 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
10 * *
11 * Author: The ALICE Off-line Project. *
12 * Contributors are mentioned in the code where appropriate. *
13 * *
14 * Permission to use, copy, modify and distribute this software and its *
15 * documentation strictly for non-commercial purposes is hereby granted *
16 * without fee, provided that the above copyright notice appears in all *
17 * copies and that both the copyright notice and this permission notice *
18 * appear in the supporting documentation. The authors make no claims *
19 * about the suitability of this software for any purpose. It is *
20 * provided "as is" without express or implied warranty. *
21 **************************************************************************/
22
23/* $Id: */
24
25#include "TList.h"
26#include "TH1F.h"
27#include "TH2F.h"
67e37e80 28#include "TH3F.h"
656dc810 29#include "TString.h"
3af23c82 30#include "THnSparse.h"
ac017ff3 31#include "TProfile.h"
32#include "TFile.h"
33#include "TKey.h"
67e37e80 34#include "TRandom3.h"
656dc810 35
36#include "AliAODInputHandler.h"
37#include "AliAODHandler.h"
38#include "AliESDEvent.h"
39#include "AliAODMCParticle.h"
40#include "AliAODJet.h"
3af23c82 41#include "AliAODJetEventBackground.h"
656dc810 42#include "AliGenPythiaEventHeader.h"
5fde4a38 43#include "AliGenHijingEventHeader.h"
656dc810 44#include "AliInputEventHandler.h"
45
46#include "AliAnalysisHelperJetTasks.h"
47#include "AliAnalysisManager.h"
48#include "AliAnalysisTaskSE.h"
3e1c1eee 49#include "AliVParticle.h"
50#include "AliVEvent.h"
656dc810 51
52#include "AliAnalysisTaskFragmentationFunction.h"
53
656dc810 54ClassImp(AliAnalysisTaskFragmentationFunction)
55
56//____________________________________________________________________________
57AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction()
58 : AliAnalysisTaskSE()
59 ,fESD(0)
60 ,fAOD(0)
d5e8640d 61 ,fAODJets(0)
40445651 62 ,fAODExtension(0)
63 ,fNonStdFile("")
656dc810 64 ,fBranchRecJets("jets")
44b235ce 65 ,fBranchRecBackJets("")
742ee86c 66 ,fBranchRecBckgClusters("")
656dc810 67 ,fBranchGenJets("")
39e2b057 68 ,fBranchEmbeddedJets("")
656dc810 69 ,fTrackTypeGen(0)
70 ,fJetTypeGen(0)
fe343c6b 71 ,fJetTypeRecEff(0)
d5e8640d 72 ,fUseAODInputJets(kTRUE)
656dc810 73 ,fFilterMask(0)
ac017ff3 74 ,fUsePhysicsSelection(kTRUE)
b541fbca 75 ,fEvtSelectionMask(0)
3af23c82 76 ,fEventClass(0)
77 ,fMaxVertexZ(10)
656dc810 78 ,fTrackPtCut(0)
79 ,fTrackEtaMin(0)
80 ,fTrackEtaMax(0)
81 ,fTrackPhiMin(0)
82 ,fTrackPhiMax(0)
39e2b057 83 ,fUseExtraTracks(0)
84 ,fUseExtraTracksBgr(0)
85 ,fCutFractionPtEmbedded(0)
86 ,fUseEmbeddedJetAxis(0)
87 ,fUseEmbeddedJetPt(0)
656dc810 88 ,fJetPtCut(0)
89 ,fJetEtaMin(0)
90 ,fJetEtaMax(0)
91 ,fJetPhiMin(0)
92 ,fJetPhiMax(0)
93 ,fDiJetCut(0)
94 ,fDiJetDeltaPhiCut(0)
95 ,fDiJetPtFractionCut(0)
96 ,fDiJetCDFCut(0)
97 ,fDiJetKindBins(0)
98 ,fFFRadius(0)
6daac008 99 ,fFFMaxTrackPt(-1)
100 ,fFFMinnTracks(0)
1da9498b 101 ,fFFBckgRadius(0)
102 ,fBckgMode(0)
67e37e80 103 ,fIJMode(0)
3af23c82 104 ,fQAMode(0)
105 ,fFFMode(0)
106 ,fDJMode(0)
107 ,fEffMode(0)
108 ,fPhiCorrMode(0)
742ee86c 109 ,fUseRecEffRecJetPtBins(0)
110 ,fUseResponseRecJetPtBins(1)
c2658535 111 ,fAvgTrials(0)
656dc810 112 ,fTracksRec(0)
113 ,fTracksRecCuts(0)
114 ,fTracksGen(0)
fe343c6b 115 ,fTracksAODMCCharged(0)
d5e8640d 116 ,fTracksAODMCChargedSec(0)
fe343c6b 117 ,fTracksRecQualityCuts(0)
656dc810 118 ,fJetsRec(0)
119 ,fJetsRecCuts(0)
120 ,fJetsGen(0)
fe343c6b 121 ,fJetsRecEff(0)
39e2b057 122 ,fJetsEmbedded(0)
67e37e80 123 ,fBckgJetsRec(0)
124 ,fBckgJetsRecCuts(0)
125 ,fBckgJetsGen(0)
656dc810 126 ,fQATrackHistosRec(0)
127 ,fQATrackHistosRecCuts(0)
128 ,fQATrackHistosGen(0)
129 ,fQAJetHistosRec(0)
130 ,fQAJetHistosRecCuts(0)
131 ,fQAJetHistosRecCutsLeading(0)
132 ,fQAJetHistosGen(0)
133 ,fQAJetHistosGenLeading(0)
fe343c6b 134 ,fQAJetHistosRecEffLeading(0)
656dc810 135 ,fFFHistosRecCuts(0)
136 ,fFFHistosRecLeading(0)
137 ,fFFHistosRecLeadingTrack(0)
138 ,fFFHistosGen(0)
139 ,fFFHistosGenLeading(0)
140 ,fFFHistosGenLeadingTrack(0)
141 ,fIJHistosRecCuts(0)
142 ,fIJHistosRecLeading(0)
143 ,fIJHistosRecLeadingTrack(0)
144 ,fIJHistosGen(0)
145 ,fIJHistosGenLeading(0)
146 ,fIJHistosGenLeadingTrack(0)
147 ,fFFDiJetHistosRecCuts(0)
148 ,fFFDiJetHistosRecLeading(0)
149 ,fFFDiJetHistosRecLeadingTrack(0)
150 ,fFFDiJetHistosGen(0)
151 ,fFFDiJetHistosGenLeading(0)
152 ,fFFDiJetHistosGenLeadingTrack(0)
153 ,fQADiJetHistosRecCuts(0)
154 ,fQADiJetHistosGen(0)
3af23c82 155 ,fPhiCorrHistosJetArea(0)
156 ,fPhiCorrHistosTransverseArea(0)
157 ,fPhiCorrHistosAwayArea(0)
656dc810 158 ,fQATrackHighPtThreshold(0)
159 ,fFFNBinsJetPt(0)
160 ,fFFJetPtMin(0)
161 ,fFFJetPtMax(0)
162 ,fFFNBinsPt(0)
163 ,fFFPtMin(0)
164 ,fFFPtMax(0)
165 ,fFFNBinsXi(0)
166 ,fFFXiMin(0)
167 ,fFFXiMax(0)
168 ,fFFNBinsZ(0)
169 ,fFFZMin(0)
b541fbca 170 ,fFFZMax(0)
171 ,fFFLogZBins(kTRUE)
656dc810 172 ,fQAJetNBinsPt(0)
173 ,fQAJetPtMin(0)
174 ,fQAJetPtMax(0)
175 ,fQAJetNBinsEta(0)
176 ,fQAJetEtaMin(0)
177 ,fQAJetEtaMax(0)
178 ,fQAJetNBinsPhi(0)
179 ,fQAJetPhiMin(0)
180 ,fQAJetPhiMax(0)
181 ,fQATrackNBinsPt(0)
182 ,fQATrackPtMin(0)
183 ,fQATrackPtMax(0)
184 ,fQATrackNBinsEta(0)
185 ,fQATrackEtaMin(0)
186 ,fQATrackEtaMax(0)
187 ,fQATrackNBinsPhi(0)
188 ,fQATrackPhiMin(0)
189 ,fQATrackPhiMax(0)
190 ,fIJNBinsJetPt(0)
191 ,fIJJetPtMin(0)
192 ,fIJJetPtMax(0)
193 ,fIJNBinsPt(0)
194 ,fIJPtMin(0)
195 ,fIJPtMax(0)
196 ,fIJNBinsZ(0)
197 ,fIJZMin(0)
198 ,fIJZMax(0)
199 ,fIJNBinsCosTheta(0)
200 ,fIJCosThetaMin(0)
201 ,fIJCosThetaMax(0)
202 ,fIJNBinsTheta(0)
203 ,fIJThetaMin(0)
204 ,fIJThetaMax(0)
205 ,fIJNBinsJt(0)
206 ,fIJJtMin(0)
207 ,fIJJtMax(0)
208 ,fDiJetNBinsJetInvMass(0)
209 ,fDiJetJetInvMassMin(0)
210 ,fDiJetJetInvMassMax(0)
211 ,fDiJetNBinsJetPt(0)
212 ,fDiJetJetPtMin(0)
213 ,fDiJetJetPtMax(0)
214 ,fDiJetNBinsPt(0)
215 ,fDiJetPtMin(0)
216 ,fDiJetPtMax(0)
217 ,fDiJetNBinsXi(0)
218 ,fDiJetXiMin(0)
219 ,fDiJetXiMax(0)
220 ,fDiJetNBinsZ(0)
221 ,fDiJetZMin(0)
222 ,fDiJetZMax(0)
223 ,fQADiJetNBinsInvMass(0)
224 ,fQADiJetInvMassMin(0)
225 ,fQADiJetInvMassMax(0)
226 ,fQADiJetNBinsJetPt(0)
227 ,fQADiJetJetPtMin(0)
228 ,fQADiJetJetPtMax(0)
229 ,fQADiJetNBinsDeltaPhi(0)
230 ,fQADiJetDeltaPhiMin(0)
231 ,fQADiJetDeltaPhiMax(0)
232 ,fQADiJetNBinsDeltaEta(0)
233 ,fQADiJetDeltaEtaMin(0)
234 ,fQADiJetDeltaEtaMax(0)
235 ,fQADiJetNBinsDeltaPt(0)
236 ,fQADiJetDeltaPtMin(0)
237 ,fQADiJetDeltaPtMax(0)
3af23c82 238 ,fQADiJetNBinsInBal(0)
239 ,fQADiJetInBalMin(0)
240 ,fQADiJetInBalMax(0)
241 ,fPhiCorrNBinsPt(0)
242 ,fPhiCorrPtMin(0)
243 ,fPhiCorrPtMax(0)
244 ,fPhiCorrNBinsEta(0)
245 ,fPhiCorrEtaMin(0)
246 ,fPhiCorrEtaMax(0)
247 ,fPhiCorrNBinsPhi(0)
248 ,fPhiCorrPhiMin(0)
249 ,fPhiCorrPhiMax(0)
656dc810 250 ,fCommonHistList(0)
251 ,fh1EvtSelection(0)
252 ,fh1VertexNContributors(0)
253 ,fh1VertexZ(0)
254 ,fh1EvtMult(0)
3af23c82 255 ,fh1EvtCent(0)
3170a3f8 256 ,fh2TrackPtVsDCAXY(0)
257 ,fh2TrackPtVsDCAZ(0)
ac017ff3 258 ,fh1Xsec(0)
259 ,fh1Trials(0)
260 ,fh1PtHard(0)
261 ,fh1PtHardTrials(0)
656dc810 262 ,fh1nRecJetsCuts(0)
263 ,fh1nGenJets(0)
fe343c6b 264 ,fh1nRecEffJets(0)
39e2b057 265 ,fh1nEmbeddedJets(0)
67e37e80 266 ,fh1nRecBckgJetsCuts(0)
267 ,fh1nGenBckgJets(0)
cb76764e 268 ,fh2PtRecVsGenPrim(0)
d5e8640d 269 ,fh2PtRecVsGenSec(0)
cb76764e 270 ,fQATrackHistosRecEffGen(0)
d5e8640d 271 ,fQATrackHistosRecEffRec(0)
272 ,fQATrackHistosSecRec(0)
cb76764e 273 ,fFFHistosRecEffGen(0)
3af23c82 274 ,fFFHistosRecEffRec(0)
d5e8640d 275 ,fFFHistosSecRec(0)
39e2b057 276 ,fhnResponseSinglePt(0)
277 ,fh2SingleInvPtRecMnGenVsPtGen(0)
3af23c82 278 ,fhnResponseJetTrackPt(0)
279 ,fhnResponseJetZ(0)
280 ,fhnResponseJetXi(0)
1da9498b 281 // Background
282 ,fh1OutLeadingMult(0)
742ee86c 283 ,fh1OutLeadingStatMult(0)
1da9498b 284 ,fh1PerpMult(0)
3af23c82 285 ,fh1ASideMult(0)
286 ,fh1ASideWindowMult(0)
287 ,fh1PerpWindowMult(0)
1da9498b 288 ,fh1Out2JetsMult(0)
289 ,fh1Out3JetsMult(0)
742ee86c 290 ,fh1MedianClustersMult(0)
291 ,fh1OutClustersMult(0)
39e2b057 292 ,fh1FractionPtEmbedded(0)
293 ,fh1IndexEmbedded(0)
294 ,fh2DeltaPtVsJetPtEmbedded(0)
295 ,fh2DeltaPtVsRecJetPtEmbedded(0)
296 ,fh1DeltaREmbedded(0)
297 ,fh2ptVsDistNN_pt50_rec(0)
298 ,fh2ptVsDistNN_pt50_nonRec(0)
299 ,fh2ptVsDistNN_pt10_rec(0)
300 ,fh2ptVsDistNN_pt10_nonRec(0)
67e37e80 301 ,fQABckgHisto0RecCuts(0)
302 ,fQABckgHisto0Gen(0)
303 ,fQABckgHisto1RecCuts(0)
304 ,fQABckgHisto1Gen(0)
305 ,fQABckgHisto2RecCuts(0)
742ee86c 306 ,fQABckgHisto2Gen(0)
307 ,fQABckgHisto3RecCuts(0)
308 ,fQABckgHisto3Gen(0)
3170a3f8 309 ,fQABckgHisto4RecCuts(0)
310 ,fQABckgHisto4Gen(0)
67e37e80 311 ,fFFBckgHisto0RecCuts(0)
312 ,fFFBckgHisto0RecLeading(0)
313 ,fFFBckgHisto0Gen(0)
314 ,fFFBckgHisto0GenLeading(0)
315 ,fFFBckgHisto1RecCuts(0)
316 ,fFFBckgHisto1RecLeading(0)
317 ,fFFBckgHisto1Gen(0)
318 ,fFFBckgHisto1GenLeading(0)
319 ,fFFBckgHisto2RecCuts(0)
320 ,fFFBckgHisto2RecLeading(0)
321 ,fFFBckgHisto2Gen(0)
322 ,fFFBckgHisto2GenLeading(0)
742ee86c 323 ,fFFBckgHisto3RecCuts(0)
324 ,fFFBckgHisto3RecLeading(0)
325 ,fFFBckgHisto3Gen(0)
326 ,fFFBckgHisto3GenLeading(0)
3170a3f8 327 ,fFFBckgHisto4RecCuts(0)
328 ,fFFBckgHisto4RecLeading(0)
329 ,fFFBckgHisto4Gen(0)
330 ,fFFBckgHisto4GenLeading(0)
67e37e80 331 ,fIJBckgHisto0RecCuts(0)
332 ,fIJBckgHisto0RecLeading(0)
333 ,fIJBckgHisto0Gen(0)
334 ,fIJBckgHisto0GenLeading(0)
335 ,fIJBckgHisto1RecCuts(0)
336 ,fIJBckgHisto1RecLeading(0)
337 ,fIJBckgHisto1Gen(0)
338 ,fIJBckgHisto1GenLeading(0)
339 ,fIJBckgHisto2RecCuts(0)
340 ,fIJBckgHisto2RecLeading(0)
341 ,fIJBckgHisto2Gen(0)
342 ,fIJBckgHisto2GenLeading(0)
742ee86c 343 ,fIJBckgHisto3RecCuts(0)
344 ,fIJBckgHisto3RecLeading(0)
345 ,fIJBckgHisto3Gen(0)
346 ,fIJBckgHisto3GenLeading(0)
3170a3f8 347 ,fIJBckgHisto4RecCuts(0)
348 ,fIJBckgHisto4RecLeading(0)
349 ,fIJBckgHisto4Gen(0)
350 ,fIJBckgHisto4GenLeading(0)
67e37e80 351 ,fRandom(0)
3af23c82 352 ,fBckgSubMethod(0)
656dc810 353{
354 // default constructor
67e37e80 355 fBckgType[0] = 0;
356 fBckgType[1] = 0;
357 fBckgType[2] = 0;
742ee86c 358 fBckgType[3] = 0;
3170a3f8 359 fBckgType[4] = 0;
656dc810 360}
361
362//__________________________________________________________________________________________
363AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const char *name)
364 : AliAnalysisTaskSE(name)
365 ,fESD(0)
366 ,fAOD(0)
d5e8640d 367 ,fAODJets(0)
40445651 368 ,fAODExtension(0)
369 ,fNonStdFile("")
656dc810 370 ,fBranchRecJets("jets")
44b235ce 371 ,fBranchRecBackJets("")
742ee86c 372 ,fBranchRecBckgClusters("")
656dc810 373 ,fBranchGenJets("")
39e2b057 374 ,fBranchEmbeddedJets("")
656dc810 375 ,fTrackTypeGen(0)
376 ,fJetTypeGen(0)
fe343c6b 377 ,fJetTypeRecEff(0)
d5e8640d 378 ,fUseAODInputJets(kTRUE)
656dc810 379 ,fFilterMask(0)
ac017ff3 380 ,fUsePhysicsSelection(kTRUE)
b541fbca 381 ,fEvtSelectionMask(0)
3af23c82 382 ,fEventClass(0)
383 ,fMaxVertexZ(10)
656dc810 384 ,fTrackPtCut(0)
385 ,fTrackEtaMin(0)
386 ,fTrackEtaMax(0)
387 ,fTrackPhiMin(0)
388 ,fTrackPhiMax(0)
39e2b057 389 ,fUseExtraTracks(0)
390 ,fUseExtraTracksBgr(0)
391 ,fCutFractionPtEmbedded(0)
392 ,fUseEmbeddedJetAxis(0)
393 ,fUseEmbeddedJetPt(0)
656dc810 394 ,fJetPtCut(0)
395 ,fJetEtaMin(0)
396 ,fJetEtaMax(0)
397 ,fJetPhiMin(0)
398 ,fJetPhiMax(0)
399 ,fDiJetCut(0)
400 ,fDiJetDeltaPhiCut(0)
401 ,fDiJetPtFractionCut(0)
402 ,fDiJetCDFCut(0)
403 ,fDiJetKindBins(0)
404 ,fFFRadius(0)
6daac008 405 ,fFFMaxTrackPt(-1)
406 ,fFFMinnTracks(0)
1da9498b 407 ,fFFBckgRadius(0)
408 ,fBckgMode(0)
67e37e80 409 ,fIJMode(0)
3af23c82 410 ,fQAMode(0)
411 ,fFFMode(0)
412 ,fDJMode(0)
413 ,fEffMode(0)
414 ,fPhiCorrMode(0)
742ee86c 415 ,fUseRecEffRecJetPtBins(0)
416 ,fUseResponseRecJetPtBins(1)
c2658535 417 ,fAvgTrials(0)
656dc810 418 ,fTracksRec(0)
419 ,fTracksRecCuts(0)
420 ,fTracksGen(0)
fe343c6b 421 ,fTracksAODMCCharged(0)
d5e8640d 422 ,fTracksAODMCChargedSec(0)
fe343c6b 423 ,fTracksRecQualityCuts(0)
656dc810 424 ,fJetsRec(0)
425 ,fJetsRecCuts(0)
426 ,fJetsGen(0)
fe343c6b 427 ,fJetsRecEff(0)
39e2b057 428 ,fJetsEmbedded(0)
67e37e80 429 ,fBckgJetsRec(0)
430 ,fBckgJetsRecCuts(0)
431 ,fBckgJetsGen(0)
656dc810 432 ,fQATrackHistosRec(0)
433 ,fQATrackHistosRecCuts(0)
434 ,fQATrackHistosGen(0)
435 ,fQAJetHistosRec(0)
436 ,fQAJetHistosRecCuts(0)
437 ,fQAJetHistosRecCutsLeading(0)
438 ,fQAJetHistosGen(0)
439 ,fQAJetHistosGenLeading(0)
fe343c6b 440 ,fQAJetHistosRecEffLeading(0)
656dc810 441 ,fFFHistosRecCuts(0)
442 ,fFFHistosRecLeading(0)
443 ,fFFHistosRecLeadingTrack(0)
444 ,fFFHistosGen(0)
445 ,fFFHistosGenLeading(0)
446 ,fFFHistosGenLeadingTrack(0)
447 ,fIJHistosRecCuts(0)
448 ,fIJHistosRecLeading(0)
449 ,fIJHistosRecLeadingTrack(0)
450 ,fIJHistosGen(0)
451 ,fIJHistosGenLeading(0)
452 ,fIJHistosGenLeadingTrack(0)
453 ,fFFDiJetHistosRecCuts(0)
454 ,fFFDiJetHistosRecLeading(0)
455 ,fFFDiJetHistosRecLeadingTrack(0)
456 ,fFFDiJetHistosGen(0)
457 ,fFFDiJetHistosGenLeading(0)
458 ,fFFDiJetHistosGenLeadingTrack(0)
459 ,fQADiJetHistosRecCuts(0)
460 ,fQADiJetHistosGen(0)
3af23c82 461 ,fPhiCorrHistosJetArea(0)
462 ,fPhiCorrHistosTransverseArea(0)
463 ,fPhiCorrHistosAwayArea(0)
656dc810 464 ,fQATrackHighPtThreshold(0)
465 ,fFFNBinsJetPt(0)
466 ,fFFJetPtMin(0)
467 ,fFFJetPtMax(0)
468 ,fFFNBinsPt(0)
469 ,fFFPtMin(0)
470 ,fFFPtMax(0)
471 ,fFFNBinsXi(0)
472 ,fFFXiMin(0)
473 ,fFFXiMax(0)
474 ,fFFNBinsZ(0)
475 ,fFFZMin(0)
476 ,fFFZMax(0)
b541fbca 477 ,fFFLogZBins(kTRUE)
656dc810 478 ,fQAJetNBinsPt(0)
479 ,fQAJetPtMin(0)
480 ,fQAJetPtMax(0)
481 ,fQAJetNBinsEta(0)
482 ,fQAJetEtaMin(0)
483 ,fQAJetEtaMax(0)
484 ,fQAJetNBinsPhi(0)
485 ,fQAJetPhiMin(0)
486 ,fQAJetPhiMax(0)
487 ,fQATrackNBinsPt(0)
488 ,fQATrackPtMin(0)
489 ,fQATrackPtMax(0)
490 ,fQATrackNBinsEta(0)
491 ,fQATrackEtaMin(0)
492 ,fQATrackEtaMax(0)
493 ,fQATrackNBinsPhi(0)
494 ,fQATrackPhiMin(0)
495 ,fQATrackPhiMax(0)
496 ,fIJNBinsJetPt(0)
497 ,fIJJetPtMin(0)
498 ,fIJJetPtMax(0)
499 ,fIJNBinsPt(0)
500 ,fIJPtMin(0)
501 ,fIJPtMax(0)
502 ,fIJNBinsZ(0)
503 ,fIJZMin(0)
504 ,fIJZMax(0)
505 ,fIJNBinsCosTheta(0)
506 ,fIJCosThetaMin(0)
507 ,fIJCosThetaMax(0)
508 ,fIJNBinsTheta(0)
509 ,fIJThetaMin(0)
510 ,fIJThetaMax(0)
511 ,fIJNBinsJt(0)
512 ,fIJJtMin(0)
513 ,fIJJtMax(0)
514 ,fDiJetNBinsJetInvMass(0)
515 ,fDiJetJetInvMassMin(0)
516 ,fDiJetJetInvMassMax(0)
517 ,fDiJetNBinsJetPt(0)
518 ,fDiJetJetPtMin(0)
519 ,fDiJetJetPtMax(0)
520 ,fDiJetNBinsPt(0)
521 ,fDiJetPtMin(0)
522 ,fDiJetPtMax(0)
523 ,fDiJetNBinsXi(0)
524 ,fDiJetXiMin(0)
525 ,fDiJetXiMax(0)
526 ,fDiJetNBinsZ(0)
527 ,fDiJetZMin(0)
528 ,fDiJetZMax(0)
529 ,fQADiJetNBinsInvMass(0)
530 ,fQADiJetInvMassMin(0)
531 ,fQADiJetInvMassMax(0)
532 ,fQADiJetNBinsJetPt(0)
533 ,fQADiJetJetPtMin(0)
534 ,fQADiJetJetPtMax(0)
535 ,fQADiJetNBinsDeltaPhi(0)
536 ,fQADiJetDeltaPhiMin(0)
537 ,fQADiJetDeltaPhiMax(0)
538 ,fQADiJetNBinsDeltaEta(0)
539 ,fQADiJetDeltaEtaMin(0)
540 ,fQADiJetDeltaEtaMax(0)
541 ,fQADiJetNBinsDeltaPt(0)
542 ,fQADiJetDeltaPtMin(0)
543 ,fQADiJetDeltaPtMax(0)
3af23c82 544 ,fQADiJetNBinsInBal(0)
545 ,fQADiJetInBalMin(0)
546 ,fQADiJetInBalMax(0)
547 ,fPhiCorrNBinsPt(0)
548 ,fPhiCorrPtMin(0)
549 ,fPhiCorrPtMax(0)
550 ,fPhiCorrNBinsEta(0)
551 ,fPhiCorrEtaMin(0)
552 ,fPhiCorrEtaMax(0)
553 ,fPhiCorrNBinsPhi(0)
554 ,fPhiCorrPhiMin(0)
555 ,fPhiCorrPhiMax(0)
656dc810 556 ,fCommonHistList(0)
557 ,fh1EvtSelection(0)
558 ,fh1VertexNContributors(0)
559 ,fh1VertexZ(0)
560 ,fh1EvtMult(0)
3af23c82 561 ,fh1EvtCent(0)
3170a3f8 562 ,fh2TrackPtVsDCAXY(0)
563 ,fh2TrackPtVsDCAZ(0)
ac017ff3 564 ,fh1Xsec(0)
565 ,fh1Trials(0)
566 ,fh1PtHard(0)
567 ,fh1PtHardTrials(0)
656dc810 568 ,fh1nRecJetsCuts(0)
569 ,fh1nGenJets(0)
fe343c6b 570 ,fh1nRecEffJets(0)
39e2b057 571 ,fh1nEmbeddedJets(0)
67e37e80 572 ,fh1nRecBckgJetsCuts(0)
573 ,fh1nGenBckgJets(0)
cb76764e 574 ,fh2PtRecVsGenPrim(0)
d5e8640d 575 ,fh2PtRecVsGenSec(0)
cb76764e 576 ,fQATrackHistosRecEffGen(0)
d5e8640d 577 ,fQATrackHistosRecEffRec(0)
578 ,fQATrackHistosSecRec(0)
cb76764e 579 ,fFFHistosRecEffGen(0)
3af23c82 580 ,fFFHistosRecEffRec(0)
d5e8640d 581 ,fFFHistosSecRec(0)
3af23c82 582 ,fhnResponseSinglePt(0)
39e2b057 583 ,fh2SingleInvPtRecMnGenVsPtGen(0)
3af23c82 584 ,fhnResponseJetTrackPt(0)
585 ,fhnResponseJetZ(0)
586 ,fhnResponseJetXi(0)
67e37e80 587 // Background
588 ,fh1OutLeadingMult(0)
742ee86c 589 ,fh1OutLeadingStatMult(0)
67e37e80 590 ,fh1PerpMult(0)
3af23c82 591 ,fh1ASideMult(0)
592 ,fh1ASideWindowMult(0)
593 ,fh1PerpWindowMult(0)
67e37e80 594 ,fh1Out2JetsMult(0)
595 ,fh1Out3JetsMult(0)
742ee86c 596 ,fh1MedianClustersMult(0)
597 ,fh1OutClustersMult(0)
39e2b057 598 ,fh1FractionPtEmbedded(0)
599 ,fh1IndexEmbedded(0)
600 ,fh2DeltaPtVsJetPtEmbedded(0)
601 ,fh2DeltaPtVsRecJetPtEmbedded(0)
602 ,fh1DeltaREmbedded(0)
603 ,fh2ptVsDistNN_pt50_rec(0)
604 ,fh2ptVsDistNN_pt50_nonRec(0)
605 ,fh2ptVsDistNN_pt10_rec(0)
606 ,fh2ptVsDistNN_pt10_nonRec(0)
67e37e80 607 ,fQABckgHisto0RecCuts(0)
608 ,fQABckgHisto0Gen(0)
609 ,fQABckgHisto1RecCuts(0)
610 ,fQABckgHisto1Gen(0)
611 ,fQABckgHisto2RecCuts(0)
742ee86c 612 ,fQABckgHisto2Gen(0)
613 ,fQABckgHisto3RecCuts(0)
614 ,fQABckgHisto3Gen(0)
3170a3f8 615 ,fQABckgHisto4RecCuts(0)
616 ,fQABckgHisto4Gen(0)
67e37e80 617 ,fFFBckgHisto0RecCuts(0)
618 ,fFFBckgHisto0RecLeading(0)
619 ,fFFBckgHisto0Gen(0)
620 ,fFFBckgHisto0GenLeading(0)
621 ,fFFBckgHisto1RecCuts(0)
622 ,fFFBckgHisto1RecLeading(0)
623 ,fFFBckgHisto1Gen(0)
624 ,fFFBckgHisto1GenLeading(0)
625 ,fFFBckgHisto2RecCuts(0)
626 ,fFFBckgHisto2RecLeading(0)
627 ,fFFBckgHisto2Gen(0)
628 ,fFFBckgHisto2GenLeading(0)
742ee86c 629 ,fFFBckgHisto3RecCuts(0)
630 ,fFFBckgHisto3RecLeading(0)
631 ,fFFBckgHisto3Gen(0)
632 ,fFFBckgHisto3GenLeading(0)
3170a3f8 633 ,fFFBckgHisto4RecCuts(0)
634 ,fFFBckgHisto4RecLeading(0)
635 ,fFFBckgHisto4Gen(0)
636 ,fFFBckgHisto4GenLeading(0)
67e37e80 637 ,fIJBckgHisto0RecCuts(0)
638 ,fIJBckgHisto0RecLeading(0)
639 ,fIJBckgHisto0Gen(0)
640 ,fIJBckgHisto0GenLeading(0)
641 ,fIJBckgHisto1RecCuts(0)
642 ,fIJBckgHisto1RecLeading(0)
643 ,fIJBckgHisto1Gen(0)
644 ,fIJBckgHisto1GenLeading(0)
645 ,fIJBckgHisto2RecCuts(0)
646 ,fIJBckgHisto2RecLeading(0)
647 ,fIJBckgHisto2Gen(0)
648 ,fIJBckgHisto2GenLeading(0)
742ee86c 649 ,fIJBckgHisto3RecCuts(0)
650 ,fIJBckgHisto3RecLeading(0)
651 ,fIJBckgHisto3Gen(0)
652 ,fIJBckgHisto3GenLeading(0)
3170a3f8 653 ,fIJBckgHisto4RecCuts(0)
654 ,fIJBckgHisto4RecLeading(0)
655 ,fIJBckgHisto4Gen(0)
656 ,fIJBckgHisto4GenLeading(0)
67e37e80 657 ,fRandom(0)
3af23c82 658 ,fBckgSubMethod(0)
656dc810 659{
660 // constructor
67e37e80 661 fBckgType[0] = 0;
662 fBckgType[1] = 0;
663 fBckgType[2] = 0;
742ee86c 664 fBckgType[3] = 0;
3170a3f8 665 fBckgType[4] = 0;
67e37e80 666
656dc810 667 DefineOutput(1,TList::Class());
668
669
670}
671
672//__________________________________________________________________________________________________________________________
673AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const AliAnalysisTaskFragmentationFunction &copy)
674 : AliAnalysisTaskSE()
675 ,fESD(copy.fESD)
676 ,fAOD(copy.fAOD)
d5e8640d 677 ,fAODJets(copy.fAODJets)
40445651 678 ,fAODExtension(copy.fAODExtension)
679 ,fNonStdFile(copy.fNonStdFile)
656dc810 680 ,fBranchRecJets(copy.fBranchRecJets)
3af23c82 681 ,fBranchRecBackJets(copy.fBranchRecBackJets)
742ee86c 682 ,fBranchRecBckgClusters(copy.fBranchRecBckgClusters)
656dc810 683 ,fBranchGenJets(copy.fBranchGenJets)
39e2b057 684 ,fBranchEmbeddedJets(copy.fBranchEmbeddedJets)
656dc810 685 ,fTrackTypeGen(copy.fTrackTypeGen)
686 ,fJetTypeGen(copy.fJetTypeGen)
fe343c6b 687 ,fJetTypeRecEff(copy.fJetTypeRecEff)
d5e8640d 688 ,fUseAODInputJets(copy.fUseAODInputJets)
656dc810 689 ,fFilterMask(copy.fFilterMask)
ac017ff3 690 ,fUsePhysicsSelection(copy.fUsePhysicsSelection)
b541fbca 691 ,fEvtSelectionMask(copy.fEvtSelectionMask)
3af23c82 692 ,fEventClass(copy.fEventClass)
693 ,fMaxVertexZ(copy.fMaxVertexZ)
656dc810 694 ,fTrackPtCut(copy.fTrackPtCut)
695 ,fTrackEtaMin(copy.fTrackEtaMin)
696 ,fTrackEtaMax(copy.fTrackEtaMax)
697 ,fTrackPhiMin(copy.fTrackPhiMin)
698 ,fTrackPhiMax(copy.fTrackPhiMax)
39e2b057 699 ,fUseExtraTracks(copy.fUseExtraTracks)
700 ,fUseExtraTracksBgr(copy.fUseExtraTracksBgr)
701 ,fCutFractionPtEmbedded(copy.fCutFractionPtEmbedded)
702 ,fUseEmbeddedJetAxis(copy.fUseEmbeddedJetAxis)
703 ,fUseEmbeddedJetPt(copy.fUseEmbeddedJetPt)
656dc810 704 ,fJetPtCut(copy.fJetPtCut)
705 ,fJetEtaMin(copy.fJetEtaMin)
706 ,fJetEtaMax(copy.fJetEtaMax)
707 ,fJetPhiMin(copy.fJetPhiMin)
fe343c6b 708 ,fJetPhiMax(copy.fJetPhiMax)
656dc810 709 ,fDiJetCut(copy.fDiJetCut)
710 ,fDiJetDeltaPhiCut(copy.fDiJetDeltaPhiCut)
711 ,fDiJetPtFractionCut(copy.fDiJetPtFractionCut)
712 ,fDiJetCDFCut(copy.fDiJetCDFCut)
713 ,fDiJetKindBins(copy.fDiJetKindBins)
714 ,fFFRadius(copy.fFFRadius)
6daac008 715 ,fFFMaxTrackPt(copy.fFFMaxTrackPt)
716 ,fFFMinnTracks(copy.fFFMinnTracks)
1da9498b 717 ,fFFBckgRadius(copy.fFFBckgRadius)
718 ,fBckgMode(copy.fBckgMode)
67e37e80 719 ,fIJMode(copy.fIJMode)
3af23c82 720 ,fQAMode(copy.fQAMode)
721 ,fFFMode(copy.fFFMode)
722 ,fDJMode(copy.fDJMode)
723 ,fEffMode(copy.fEffMode)
724 ,fPhiCorrMode(copy.fPhiCorrMode)
cb76764e 725 ,fUseRecEffRecJetPtBins(copy.fUseRecEffRecJetPtBins)
742ee86c 726 ,fUseResponseRecJetPtBins(copy.fUseResponseRecJetPtBins)
c2658535 727 ,fAvgTrials(copy.fAvgTrials)
656dc810 728 ,fTracksRec(copy.fTracksRec)
729 ,fTracksRecCuts(copy.fTracksRecCuts)
730 ,fTracksGen(copy.fTracksGen)
fe343c6b 731 ,fTracksAODMCCharged(copy.fTracksAODMCCharged)
d5e8640d 732 ,fTracksAODMCChargedSec(copy.fTracksAODMCChargedSec)
fe343c6b 733 ,fTracksRecQualityCuts(copy.fTracksRecQualityCuts)
656dc810 734 ,fJetsRec(copy.fJetsRec)
735 ,fJetsRecCuts(copy.fJetsRecCuts)
736 ,fJetsGen(copy.fJetsGen)
fe343c6b 737 ,fJetsRecEff(copy.fJetsRecEff)
39e2b057 738 ,fJetsEmbedded(copy.fJetsEmbedded)
67e37e80 739 ,fBckgJetsRec(copy.fBckgJetsRec)
740 ,fBckgJetsRecCuts(copy.fBckgJetsRecCuts)
741 ,fBckgJetsGen(copy.fBckgJetsGen)
656dc810 742 ,fQATrackHistosRec(copy.fQATrackHistosRec)
743 ,fQATrackHistosRecCuts(copy.fQATrackHistosRecCuts)
744 ,fQATrackHistosGen(copy.fQATrackHistosGen)
745 ,fQAJetHistosRec(copy.fQAJetHistosRec)
746 ,fQAJetHistosRecCuts(copy.fQAJetHistosRecCuts)
747 ,fQAJetHistosRecCutsLeading(copy.fQAJetHistosRecCutsLeading)
748 ,fQAJetHistosGen(copy.fQAJetHistosGen)
749 ,fQAJetHistosGenLeading(copy.fQAJetHistosGenLeading)
fe343c6b 750 ,fQAJetHistosRecEffLeading(copy.fQAJetHistosRecEffLeading)
656dc810 751 ,fFFHistosRecCuts(copy.fFFHistosRecCuts)
752 ,fFFHistosRecLeading(copy.fFFHistosRecLeading)
753 ,fFFHistosRecLeadingTrack(copy.fFFHistosRecLeadingTrack)
754 ,fFFHistosGen(copy.fFFHistosGen)
755 ,fFFHistosGenLeading(copy.fFFHistosGenLeading)
756 ,fFFHistosGenLeadingTrack(copy.fFFHistosGenLeadingTrack)
757 ,fIJHistosRecCuts(copy.fIJHistosRecCuts)
758 ,fIJHistosRecLeading(copy.fIJHistosRecLeading)
759 ,fIJHistosRecLeadingTrack(copy.fIJHistosRecLeadingTrack)
760 ,fIJHistosGen(copy.fIJHistosGen)
761 ,fIJHistosGenLeading(copy.fIJHistosGenLeading)
762 ,fIJHistosGenLeadingTrack(copy.fIJHistosGenLeadingTrack)
763 ,fFFDiJetHistosRecCuts(copy.fFFDiJetHistosRecCuts)
764 ,fFFDiJetHistosRecLeading(copy.fFFDiJetHistosRecLeading)
765 ,fFFDiJetHistosRecLeadingTrack(copy.fFFDiJetHistosRecLeadingTrack)
766 ,fFFDiJetHistosGen(copy.fFFDiJetHistosGen)
767 ,fFFDiJetHistosGenLeading(copy.fFFDiJetHistosGenLeading)
768 ,fFFDiJetHistosGenLeadingTrack(copy.fFFDiJetHistosGenLeadingTrack)
769 ,fQADiJetHistosRecCuts(copy.fQADiJetHistosRecCuts)
770 ,fQADiJetHistosGen(copy.fQADiJetHistosGen)
3af23c82 771 ,fPhiCorrHistosJetArea(copy.fPhiCorrHistosJetArea)
772 ,fPhiCorrHistosTransverseArea(copy.fPhiCorrHistosTransverseArea)
773 ,fPhiCorrHistosAwayArea(copy.fPhiCorrHistosAwayArea)
656dc810 774 ,fQATrackHighPtThreshold(copy.fQATrackHighPtThreshold)
775 ,fFFNBinsJetPt(copy.fFFNBinsJetPt)
776 ,fFFJetPtMin(copy.fFFJetPtMin)
777 ,fFFJetPtMax(copy.fFFJetPtMax)
778 ,fFFNBinsPt(copy.fFFNBinsPt)
779 ,fFFPtMin(copy.fFFPtMin)
780 ,fFFPtMax(copy.fFFPtMax)
781 ,fFFNBinsXi(copy.fFFNBinsXi)
782 ,fFFXiMin(copy.fFFXiMin)
783 ,fFFXiMax(copy.fFFXiMax)
784 ,fFFNBinsZ(copy.fFFNBinsZ)
785 ,fFFZMin(copy.fFFZMin)
786 ,fFFZMax(copy.fFFZMax)
b541fbca 787 ,fFFLogZBins(copy.fFFLogZBins)
656dc810 788 ,fQAJetNBinsPt(copy.fQAJetNBinsPt)
789 ,fQAJetPtMin(copy.fQAJetPtMin)
790 ,fQAJetPtMax(copy.fQAJetPtMax)
791 ,fQAJetNBinsEta(copy.fQAJetNBinsEta)
792 ,fQAJetEtaMin(copy.fQAJetEtaMin)
793 ,fQAJetEtaMax(copy.fQAJetEtaMax)
794 ,fQAJetNBinsPhi(copy.fQAJetNBinsPhi)
795 ,fQAJetPhiMin(copy.fQAJetPhiMin)
796 ,fQAJetPhiMax(copy.fQAJetPhiMax)
797 ,fQATrackNBinsPt(copy.fQATrackNBinsPt)
798 ,fQATrackPtMin(copy.fQATrackPtMin)
799 ,fQATrackPtMax(copy.fQATrackPtMax)
800 ,fQATrackNBinsEta(copy.fQATrackNBinsEta)
801 ,fQATrackEtaMin(copy.fQATrackEtaMin)
802 ,fQATrackEtaMax(copy.fQATrackEtaMax)
803 ,fQATrackNBinsPhi(copy.fQATrackNBinsPhi)
804 ,fQATrackPhiMin(copy.fQATrackPhiMin)
805 ,fQATrackPhiMax(copy.fQATrackPhiMax)
806 ,fIJNBinsJetPt(copy.fIJNBinsJetPt)
807 ,fIJJetPtMin(copy.fIJJetPtMin)
808 ,fIJJetPtMax(copy.fIJJetPtMax)
809 ,fIJNBinsPt(copy.fIJNBinsPt)
810 ,fIJPtMin(copy.fIJPtMin)
811 ,fIJPtMax(copy.fIJPtMax)
812 ,fIJNBinsZ(copy.fIJNBinsZ)
813 ,fIJZMin(copy.fIJZMin)
814 ,fIJZMax(copy.fIJZMax)
815 ,fIJNBinsCosTheta(copy.fIJNBinsCosTheta)
816 ,fIJCosThetaMin(copy.fIJCosThetaMin)
817 ,fIJCosThetaMax(copy.fIJCosThetaMax)
818 ,fIJNBinsTheta(copy.fIJNBinsTheta)
819 ,fIJThetaMin(copy.fIJThetaMin)
820 ,fIJThetaMax(copy.fIJThetaMax)
821 ,fIJNBinsJt(copy.fIJNBinsJt)
822 ,fIJJtMin(copy.fIJJtMin)
823 ,fIJJtMax(copy.fIJJtMax)
824 ,fDiJetNBinsJetInvMass(copy.fDiJetNBinsJetInvMass)
825 ,fDiJetJetInvMassMin(copy.fDiJetJetInvMassMin)
826 ,fDiJetJetInvMassMax(copy.fDiJetJetInvMassMax)
827 ,fDiJetNBinsJetPt(copy.fDiJetNBinsJetPt)
828 ,fDiJetJetPtMin(copy.fDiJetJetPtMin)
829 ,fDiJetJetPtMax(copy.fDiJetJetPtMax)
830 ,fDiJetNBinsPt(copy.fDiJetNBinsPt)
831 ,fDiJetPtMin(copy.fDiJetPtMin)
832 ,fDiJetPtMax(copy.fDiJetPtMax)
833 ,fDiJetNBinsXi(copy.fDiJetNBinsXi)
834 ,fDiJetXiMin(copy.fDiJetXiMin)
835 ,fDiJetXiMax(copy.fDiJetXiMax)
836 ,fDiJetNBinsZ(copy.fDiJetNBinsZ)
837 ,fDiJetZMin(copy.fDiJetZMin)
838 ,fDiJetZMax(copy.fDiJetZMax)
839 ,fQADiJetNBinsInvMass(copy.fQADiJetNBinsInvMass)
840 ,fQADiJetInvMassMin(copy.fQADiJetInvMassMin)
841 ,fQADiJetInvMassMax(copy.fQADiJetInvMassMax)
842 ,fQADiJetNBinsJetPt(copy.fQADiJetNBinsJetPt)
843 ,fQADiJetJetPtMin(copy.fQADiJetJetPtMin)
844 ,fQADiJetJetPtMax(copy.fQADiJetJetPtMax)
845 ,fQADiJetNBinsDeltaPhi(copy.fQADiJetNBinsDeltaPhi)
846 ,fQADiJetDeltaPhiMin(copy.fQADiJetDeltaPhiMin)
847 ,fQADiJetDeltaPhiMax(copy.fQADiJetDeltaPhiMax)
848 ,fQADiJetNBinsDeltaEta(copy.fQADiJetNBinsDeltaEta)
849 ,fQADiJetDeltaEtaMin(copy.fQADiJetDeltaEtaMin)
850 ,fQADiJetDeltaEtaMax(copy.fQADiJetDeltaEtaMax)
851 ,fQADiJetNBinsDeltaPt(copy.fQADiJetNBinsDeltaPt)
852 ,fQADiJetDeltaPtMin(copy.fQADiJetDeltaPtMin)
853 ,fQADiJetDeltaPtMax(copy.fQADiJetDeltaPtMax)
3af23c82 854 ,fQADiJetNBinsInBal(copy.fQADiJetNBinsInBal)
855 ,fQADiJetInBalMin(copy.fQADiJetInBalMin)
856 ,fQADiJetInBalMax(copy.fQADiJetInBalMax)
857 ,fPhiCorrNBinsPt(copy.fPhiCorrNBinsPt)
858 ,fPhiCorrPtMin(copy.fPhiCorrPtMin)
859 ,fPhiCorrPtMax(copy.fPhiCorrPtMax)
860 ,fPhiCorrNBinsEta(copy.fPhiCorrNBinsEta)
861 ,fPhiCorrEtaMin(copy.fPhiCorrEtaMin)
862 ,fPhiCorrEtaMax(copy.fPhiCorrEtaMax)
863 ,fPhiCorrNBinsPhi(copy.fPhiCorrNBinsPhi)
864 ,fPhiCorrPhiMin(copy.fPhiCorrPhiMin)
865 ,fPhiCorrPhiMax(copy.fPhiCorrPhiMax)
656dc810 866 ,fCommonHistList(copy.fCommonHistList)
867 ,fh1EvtSelection(copy.fh1EvtSelection)
868 ,fh1VertexNContributors(copy.fh1VertexNContributors)
869 ,fh1VertexZ(copy.fh1VertexZ)
870 ,fh1EvtMult(copy.fh1EvtMult)
3af23c82 871 ,fh1EvtCent(copy.fh1EvtCent)
3170a3f8 872 ,fh2TrackPtVsDCAXY(copy.fh2TrackPtVsDCAXY)
873 ,fh2TrackPtVsDCAZ(copy.fh2TrackPtVsDCAXY)
ac017ff3 874 ,fh1Xsec(copy.fh1Xsec)
875 ,fh1Trials(copy.fh1Trials)
876 ,fh1PtHard(copy.fh1PtHard)
877 ,fh1PtHardTrials(copy.fh1PtHardTrials)
656dc810 878 ,fh1nRecJetsCuts(copy.fh1nRecJetsCuts)
879 ,fh1nGenJets(copy.fh1nGenJets)
fe343c6b 880 ,fh1nRecEffJets(copy.fh1nRecEffJets)
39e2b057 881 ,fh1nEmbeddedJets(copy.fh1nEmbeddedJets)
67e37e80 882 ,fh1nRecBckgJetsCuts(copy.fh1nRecBckgJetsCuts)
883 ,fh1nGenBckgJets(copy.fh1nGenBckgJets)
cb76764e 884 ,fh2PtRecVsGenPrim(copy.fh2PtRecVsGenPrim)
d5e8640d 885 ,fh2PtRecVsGenSec(copy.fh2PtRecVsGenSec)
cb76764e 886 ,fQATrackHistosRecEffGen(copy.fQATrackHistosRecEffGen)
887 ,fQATrackHistosRecEffRec(copy.fQATrackHistosRecEffRec)
d5e8640d 888 ,fQATrackHistosSecRec(copy.fQATrackHistosSecRec)
cb76764e 889 ,fFFHistosRecEffGen(copy.fFFHistosRecEffGen)
d5e8640d 890 ,fFFHistosRecEffRec(copy.fFFHistosRecEffRec)
891 ,fFFHistosSecRec(copy.fFFHistosSecRec)
3af23c82 892 ,fhnResponseSinglePt(copy.fhnResponseSinglePt)
1aa4f09f 893 ,fh2SingleInvPtRecMnGenVsPtGen(copy.fh2SingleInvPtRecMnGenVsPtGen)
3af23c82 894 ,fhnResponseJetTrackPt(copy.fhnResponseJetTrackPt)
895 ,fhnResponseJetZ(copy.fhnResponseJetZ)
896 ,fhnResponseJetXi(copy.fhnResponseJetXi)
1da9498b 897 // Background
898 ,fh1OutLeadingMult(copy.fh1OutLeadingMult)
742ee86c 899 ,fh1OutLeadingStatMult(copy.fh1OutLeadingStatMult)
1da9498b 900 ,fh1PerpMult(copy.fh1PerpMult)
3af23c82 901 ,fh1ASideMult(copy.fh1ASideMult)
902 ,fh1ASideWindowMult(copy.fh1ASideWindowMult)
903 ,fh1PerpWindowMult(copy.fh1PerpWindowMult)
1da9498b 904 ,fh1Out2JetsMult(copy.fh1Out2JetsMult)
905 ,fh1Out3JetsMult(copy.fh1Out3JetsMult)
742ee86c 906 ,fh1MedianClustersMult(copy.fh1MedianClustersMult)
907 ,fh1OutClustersMult(copy.fh1OutClustersMult)
39e2b057 908 ,fh1FractionPtEmbedded(copy.fh1FractionPtEmbedded)
909 ,fh1IndexEmbedded(copy.fh1IndexEmbedded)
910 ,fh2DeltaPtVsJetPtEmbedded(copy.fh2DeltaPtVsJetPtEmbedded)
911 ,fh2DeltaPtVsRecJetPtEmbedded(copy.fh2DeltaPtVsRecJetPtEmbedded)
912 ,fh1DeltaREmbedded(copy.fh1DeltaREmbedded)
913 ,fh2ptVsDistNN_pt50_rec(copy.fh2ptVsDistNN_pt50_rec)
914 ,fh2ptVsDistNN_pt50_nonRec(copy.fh2ptVsDistNN_pt50_nonRec)
915 ,fh2ptVsDistNN_pt10_rec(copy.fh2ptVsDistNN_pt10_rec)
916 ,fh2ptVsDistNN_pt10_nonRec(copy.fh2ptVsDistNN_pt10_nonRec)
67e37e80 917 ,fQABckgHisto0RecCuts(copy.fQABckgHisto0RecCuts)
918 ,fQABckgHisto0Gen(copy.fQABckgHisto0Gen)
919 ,fQABckgHisto1RecCuts(copy.fQABckgHisto1RecCuts)
920 ,fQABckgHisto1Gen(copy.fQABckgHisto1Gen)
921 ,fQABckgHisto2RecCuts(copy.fQABckgHisto2RecCuts)
742ee86c 922 ,fQABckgHisto2Gen(copy.fQABckgHisto2Gen)
923 ,fQABckgHisto3RecCuts(copy.fQABckgHisto3RecCuts)
924 ,fQABckgHisto3Gen(copy.fQABckgHisto3Gen)
3170a3f8 925 ,fQABckgHisto4RecCuts(copy.fQABckgHisto4RecCuts)
926 ,fQABckgHisto4Gen(copy.fQABckgHisto4Gen)
67e37e80 927 ,fFFBckgHisto0RecCuts(copy.fFFBckgHisto0RecCuts)
928 ,fFFBckgHisto0RecLeading(copy.fFFBckgHisto0RecLeading)
929 ,fFFBckgHisto0Gen(copy.fFFBckgHisto0Gen)
930 ,fFFBckgHisto0GenLeading(copy.fFFBckgHisto0GenLeading)
931 ,fFFBckgHisto1RecCuts(copy.fFFBckgHisto1RecCuts)
932 ,fFFBckgHisto1RecLeading(copy.fFFBckgHisto1RecLeading)
933 ,fFFBckgHisto1Gen(copy.fFFBckgHisto1Gen)
934 ,fFFBckgHisto1GenLeading(copy.fFFBckgHisto1GenLeading)
935 ,fFFBckgHisto2RecCuts(copy.fFFBckgHisto2RecCuts)
936 ,fFFBckgHisto2RecLeading(copy.fFFBckgHisto2RecLeading)
937 ,fFFBckgHisto2Gen(copy.fFFBckgHisto2Gen)
938 ,fFFBckgHisto2GenLeading(copy.fFFBckgHisto2GenLeading)
742ee86c 939 ,fFFBckgHisto3RecCuts(copy.fFFBckgHisto3RecCuts)
940 ,fFFBckgHisto3RecLeading(copy.fFFBckgHisto3RecLeading)
941 ,fFFBckgHisto3Gen(copy.fFFBckgHisto3Gen)
942 ,fFFBckgHisto3GenLeading(copy.fFFBckgHisto3GenLeading)
3170a3f8 943 ,fFFBckgHisto4RecCuts(copy.fFFBckgHisto4RecCuts)
944 ,fFFBckgHisto4RecLeading(copy.fFFBckgHisto4RecLeading)
945 ,fFFBckgHisto4Gen(copy.fFFBckgHisto4Gen)
946 ,fFFBckgHisto4GenLeading(copy.fFFBckgHisto4GenLeading)
67e37e80 947 ,fIJBckgHisto0RecCuts(copy.fIJBckgHisto0RecCuts)
948 ,fIJBckgHisto0RecLeading(copy.fIJBckgHisto0RecLeading)
949 ,fIJBckgHisto0Gen(copy.fIJBckgHisto0Gen)
950 ,fIJBckgHisto0GenLeading(copy.fIJBckgHisto0GenLeading)
951 ,fIJBckgHisto1RecCuts(copy.fIJBckgHisto1RecCuts)
952 ,fIJBckgHisto1RecLeading(copy.fIJBckgHisto1RecLeading)
953 ,fIJBckgHisto1Gen(copy.fIJBckgHisto1Gen)
954 ,fIJBckgHisto1GenLeading(copy.fIJBckgHisto1GenLeading)
955 ,fIJBckgHisto2RecCuts(copy.fIJBckgHisto2RecCuts)
956 ,fIJBckgHisto2RecLeading(copy.fIJBckgHisto2RecLeading)
957 ,fIJBckgHisto2Gen(copy.fIJBckgHisto2Gen)
958 ,fIJBckgHisto2GenLeading(copy.fIJBckgHisto2GenLeading)
742ee86c 959 ,fIJBckgHisto3RecCuts(copy.fIJBckgHisto3RecCuts)
960 ,fIJBckgHisto3RecLeading(copy.fIJBckgHisto3RecLeading)
961 ,fIJBckgHisto3Gen(copy.fIJBckgHisto3Gen)
962 ,fIJBckgHisto3GenLeading(copy.fIJBckgHisto3GenLeading)
3170a3f8 963 ,fIJBckgHisto4RecCuts(copy.fIJBckgHisto4RecCuts)
964 ,fIJBckgHisto4RecLeading(copy.fIJBckgHisto4RecLeading)
965 ,fIJBckgHisto4Gen(copy.fIJBckgHisto4Gen)
966 ,fIJBckgHisto4GenLeading(copy.fIJBckgHisto4GenLeading)
67e37e80 967 ,fRandom(copy.fRandom)
3af23c82 968 ,fBckgSubMethod(copy.fBckgSubMethod)
656dc810 969{
970 // copy constructor
67e37e80 971 fBckgType[0] = copy.fBckgType[0];
972 fBckgType[1] = copy.fBckgType[1];
973 fBckgType[2] = copy.fBckgType[2];
742ee86c 974 fBckgType[3] = copy.fBckgType[3];
3170a3f8 975 fBckgType[4] = copy.fBckgType[4];
656dc810 976}
977
978// _________________________________________________________________________________________________________________________________
979AliAnalysisTaskFragmentationFunction& AliAnalysisTaskFragmentationFunction::operator=(const AliAnalysisTaskFragmentationFunction& o)
980{
981 // assignment
982
983 if(this!=&o){
984
985 AliAnalysisTaskSE::operator=(o);
986 fESD = o.fESD;
987 fAOD = o.fAOD;
d5e8640d 988 fAODJets = o.fAODJets;
40445651 989 fAODExtension = o.fAODExtension;
990 fNonStdFile = o.fNonStdFile;
656dc810 991 fBranchRecJets = o.fBranchRecJets;
3af23c82 992 fBranchRecBackJets = o.fBranchRecBackJets;
742ee86c 993 fBranchRecBckgClusters = o.fBranchRecBckgClusters;
656dc810 994 fBranchGenJets = o.fBranchGenJets;
39e2b057 995 fBranchEmbeddedJets = o.fBranchEmbeddedJets;
656dc810 996 fTrackTypeGen = o.fTrackTypeGen;
997 fJetTypeGen = o.fJetTypeGen;
fe343c6b 998 fJetTypeRecEff = o.fJetTypeRecEff;
d5e8640d 999 fUseAODInputJets = o.fUseAODInputJets;
656dc810 1000 fFilterMask = o.fFilterMask;
ac017ff3 1001 fUsePhysicsSelection = o.fUsePhysicsSelection;
b541fbca 1002 fEvtSelectionMask = o.fEvtSelectionMask;
3af23c82 1003 fEventClass = o.fEventClass;
1004 fMaxVertexZ = o.fMaxVertexZ;
656dc810 1005 fTrackPtCut = o.fTrackPtCut;
1006 fTrackEtaMin = o.fTrackEtaMin;
1007 fTrackEtaMax = o.fTrackEtaMax;
1008 fTrackPhiMin = o.fTrackPhiMin;
1009 fTrackPhiMax = o.fTrackPhiMax;
39e2b057 1010 fUseExtraTracks = o.fUseExtraTracks;
1011 fUseExtraTracksBgr = o.fUseExtraTracksBgr;
1012 fCutFractionPtEmbedded = o.fCutFractionPtEmbedded;
1013 fUseEmbeddedJetAxis = o.fUseEmbeddedJetAxis;
1014 fUseEmbeddedJetPt = o.fUseEmbeddedJetPt;
656dc810 1015 fJetPtCut = o.fJetPtCut;
1016 fJetEtaMin = o.fJetEtaMin;
1017 fJetEtaMax = o.fJetEtaMax;
1018 fJetPhiMin = o.fJetPhiMin;
1019 fJetPhiMax = o.fJetPhiMin;
1020 fDiJetCut = o.fDiJetCut;
1021 fDiJetDeltaPhiCut = o.fDiJetDeltaPhiCut;
1022 fDiJetPtFractionCut = o.fDiJetPtFractionCut;
1023 fDiJetCDFCut = o.fDiJetCDFCut;
1024 fDiJetKindBins = o.fDiJetKindBins;
1025 fFFRadius = o.fFFRadius;
6daac008 1026 fFFMaxTrackPt = o.fFFMaxTrackPt;
1027 fFFMinnTracks = o.fFFMinnTracks;
1da9498b 1028 fFFBckgRadius = o.fFFBckgRadius;
1029 fBckgMode = o.fBckgMode;
67e37e80 1030 fIJMode = o.fIJMode;
3af23c82 1031 fQAMode = o.fQAMode;
1032 fFFMode = o.fFFMode;
1033 fDJMode = o.fDJMode;
1034 fEffMode = o.fEffMode;
1035 fPhiCorrMode = o.fPhiCorrMode;
67e37e80 1036 fBckgType[0] = o.fBckgType[0];
1037 fBckgType[1] = o.fBckgType[1];
1038 fBckgType[2] = o.fBckgType[2];
742ee86c 1039 fBckgType[3] = o.fBckgType[3];
3170a3f8 1040 fBckgType[4] = o.fBckgType[4];
cb76764e 1041 fUseRecEffRecJetPtBins = o.fUseRecEffRecJetPtBins;
742ee86c 1042 fUseResponseRecJetPtBins = o.fUseResponseRecJetPtBins;
c2658535 1043 fAvgTrials = o.fAvgTrials;
656dc810 1044 fTracksRec = o.fTracksRec;
1045 fTracksRecCuts = o.fTracksRecCuts;
1046 fTracksGen = o.fTracksGen;
fe343c6b 1047 fTracksAODMCCharged = o.fTracksAODMCCharged;
d5e8640d 1048 fTracksAODMCChargedSec = o.fTracksAODMCChargedSec;
fe343c6b 1049 fTracksRecQualityCuts = o.fTracksRecQualityCuts;
656dc810 1050 fJetsRec = o.fJetsRec;
1051 fJetsRecCuts = o.fJetsRecCuts;
1052 fJetsGen = o.fJetsGen;
fe343c6b 1053 fJetsRecEff = o.fJetsRecEff;
39e2b057 1054 fJetsEmbedded = o.fJetsEmbedded;
67e37e80 1055 fBckgJetsRec = o.fBckgJetsRec;
1056 fBckgJetsRecCuts = o.fBckgJetsRecCuts;
1057 fBckgJetsGen = o.fBckgJetsGen;
656dc810 1058 fQATrackHistosRec = o.fQATrackHistosRec;
1059 fQATrackHistosRecCuts = o.fQATrackHistosRecCuts;
1060 fQATrackHistosGen = o.fQATrackHistosGen;
1061 fQAJetHistosRec = o.fQAJetHistosRec;
1062 fQAJetHistosRecCuts = o.fQAJetHistosRecCuts;
1063 fQAJetHistosRecCutsLeading = o.fQAJetHistosRecCutsLeading;
1064 fQAJetHistosGen = o.fQAJetHistosGen;
1065 fQAJetHistosGenLeading = o.fQAJetHistosGenLeading;
fe343c6b 1066 fQAJetHistosRecEffLeading = o.fQAJetHistosRecEffLeading;
656dc810 1067 fFFHistosRecCuts = o.fFFHistosRecCuts;
1068 fFFHistosRecLeading = o.fFFHistosRecLeading;
1069 fFFHistosRecLeadingTrack = o.fFFHistosRecLeadingTrack;
1070 fFFHistosGen = o.fFFHistosGen;
1071 fFFHistosGenLeading = o.fFFHistosGenLeading;
1072 fFFHistosGenLeadingTrack = o.fFFHistosGenLeadingTrack;
1073 fIJHistosRecCuts = o.fIJHistosRecCuts;
1074 fIJHistosRecLeading = o.fIJHistosRecLeading;
1075 fIJHistosRecLeadingTrack = o.fIJHistosRecLeadingTrack;
1076 fIJHistosGen = o.fIJHistosGen;
1077 fIJHistosGenLeading = o.fIJHistosGenLeading;
1078 fIJHistosGenLeadingTrack = o.fIJHistosGenLeadingTrack;
1079 fFFDiJetHistosRecCuts = o.fFFDiJetHistosRecCuts;
1080 fFFDiJetHistosRecLeading = o.fFFDiJetHistosRecLeading;
1081 fFFDiJetHistosRecLeadingTrack = o.fFFDiJetHistosRecLeadingTrack;
1082 fFFDiJetHistosGen = o.fFFDiJetHistosGen;
1083 fFFDiJetHistosGenLeading = o.fFFDiJetHistosGenLeading;
1084 fFFDiJetHistosGenLeadingTrack = o.fFFDiJetHistosGenLeadingTrack;
1085 fQADiJetHistosRecCuts = o.fQADiJetHistosRecCuts;
1086 fQADiJetHistosGen = o.fQADiJetHistosGen;
3af23c82 1087 fPhiCorrHistosJetArea = o.fPhiCorrHistosJetArea;
1088 fPhiCorrHistosTransverseArea = o.fPhiCorrHistosTransverseArea;
1089 fPhiCorrHistosAwayArea = o.fPhiCorrHistosAwayArea;
656dc810 1090 fQATrackHighPtThreshold = o.fQATrackHighPtThreshold;
1091 fFFNBinsJetPt = o.fFFNBinsJetPt;
1092 fFFJetPtMin = o.fFFJetPtMin;
1093 fFFJetPtMax = o.fFFJetPtMax;
1094 fFFNBinsPt = o.fFFNBinsPt;
1095 fFFPtMin = o.fFFPtMin;
1096 fFFPtMax = o.fFFPtMax;
1097 fFFNBinsXi = o.fFFNBinsXi;
1098 fFFXiMin = o.fFFXiMin;
1099 fFFXiMax = o.fFFXiMax;
1100 fFFNBinsZ = o.fFFNBinsZ;
1101 fFFZMin = o.fFFZMin;
1102 fFFZMax = o.fFFZMax;
b541fbca 1103 fFFLogZBins = o.fFFLogZBins;
656dc810 1104 fQAJetNBinsPt = o.fQAJetNBinsPt;
1105 fQAJetPtMin = o.fQAJetPtMin;
1106 fQAJetPtMax = o.fQAJetPtMax;
1107 fQAJetNBinsEta = o.fQAJetNBinsEta;
1108 fQAJetEtaMin = o.fQAJetEtaMin;
1109 fQAJetEtaMax = o.fQAJetEtaMax;
1110 fQAJetNBinsPhi = o.fQAJetNBinsPhi;
1111 fQAJetPhiMin = o.fQAJetPhiMin;
1112 fQAJetPhiMax = o.fQAJetPhiMax;
1113 fQATrackNBinsPt = o.fQATrackNBinsPt;
1114 fQATrackPtMin = o.fQATrackPtMin;
1115 fQATrackPtMax = o.fQATrackPtMax;
1116 fQATrackNBinsEta = o.fQATrackNBinsEta;
1117 fQATrackEtaMin = o.fQATrackEtaMin;
1118 fQATrackEtaMax = o.fQATrackEtaMax;
1119 fQATrackNBinsPhi = o.fQATrackNBinsPhi;
1120 fQATrackPhiMin = o.fQATrackPhiMin;
1121 fQATrackPhiMax = o.fQATrackPhiMax;
1122 fIJNBinsJetPt = o.fIJNBinsJetPt;
1123 fIJJetPtMin = o.fIJJetPtMin;
1124 fIJJetPtMax = o.fIJJetPtMax;
1125 fIJNBinsPt = o.fIJNBinsPt;
1126 fIJPtMin = o.fIJPtMin;
1127 fIJPtMax = o.fIJPtMax;
1128 fIJNBinsZ = o.fIJNBinsZ;
1129 fIJZMin = o.fIJZMin;
1130 fIJZMax = o.fIJZMax;
1131 fIJNBinsCosTheta = o.fIJNBinsCosTheta;
1132 fIJCosThetaMin = o.fIJCosThetaMin;
1133 fIJCosThetaMax = o.fIJCosThetaMax;
1134 fIJNBinsTheta = o.fIJNBinsTheta;
1135 fIJThetaMin = o.fIJThetaMin;
1136 fIJThetaMax = o.fIJThetaMax;
1137 fIJNBinsJt = o.fIJNBinsJt;
1138 fIJJtMin = o.fIJJtMin;
1139 fIJJtMax = o.fIJJtMax;
1140 fDiJetNBinsJetInvMass = o.fDiJetNBinsJetInvMass;
1141 fDiJetJetInvMassMin = o.fDiJetJetInvMassMin;
1142 fDiJetJetInvMassMax = o.fDiJetJetInvMassMax;
1143 fDiJetNBinsJetPt = o.fDiJetNBinsJetPt;
1144 fDiJetJetPtMin = o.fDiJetJetPtMin;
1145 fDiJetJetPtMax = o.fDiJetJetPtMax;
1146 fDiJetNBinsPt = o.fDiJetNBinsPt;
1147 fDiJetPtMin = o.fDiJetPtMin;
1148 fDiJetPtMax = o.fDiJetPtMax;
1149 fDiJetNBinsXi = o.fDiJetNBinsXi;
1150 fDiJetXiMin = o.fDiJetXiMin;
1151 fDiJetXiMax = o.fDiJetXiMax;
1152 fDiJetNBinsZ = o.fDiJetNBinsZ;
1153 fDiJetZMin = o.fDiJetZMin;
1154 fDiJetZMax = o.fDiJetZMax;
1155 fQADiJetNBinsInvMass = o.fQADiJetNBinsInvMass;
1156 fQADiJetInvMassMin = o.fQADiJetInvMassMin;
1157 fQADiJetInvMassMax = o.fQADiJetInvMassMax;
1158 fQADiJetNBinsJetPt = o.fQADiJetNBinsJetPt;
1159 fQADiJetJetPtMin = o.fQADiJetJetPtMin;
1160 fQADiJetJetPtMax = o.fQADiJetJetPtMax;
1161 fQADiJetNBinsDeltaPhi = o.fQADiJetNBinsDeltaPhi;
1162 fQADiJetDeltaPhiMin = o.fQADiJetDeltaPhiMin;
1163 fQADiJetDeltaPhiMax = o.fQADiJetDeltaPhiMax;
1164 fQADiJetNBinsDeltaEta = o.fQADiJetNBinsDeltaEta;
1165 fQADiJetDeltaEtaMin = o.fQADiJetDeltaEtaMin;
1166 fQADiJetDeltaEtaMax = o.fQADiJetDeltaEtaMax;
1167 fQADiJetNBinsDeltaPt = o.fQADiJetNBinsDeltaPt;
1168 fQADiJetDeltaPtMin = o.fQADiJetDeltaPtMin;
1169 fQADiJetDeltaPtMax = o.fQADiJetDeltaPtMax;
3af23c82 1170 fQADiJetNBinsInBal = o.fQADiJetNBinsInBal;
1171 fQADiJetInBalMin = o.fQADiJetInBalMin;
1172 fQADiJetInBalMax = o.fQADiJetInBalMax;
1173 fPhiCorrNBinsPt = o.fPhiCorrNBinsPt;
1174 fPhiCorrPtMin = o.fPhiCorrPtMin;
1175 fPhiCorrPtMax = o.fPhiCorrPtMax;
1176 fPhiCorrNBinsEta = o.fPhiCorrNBinsEta;
1177 fPhiCorrEtaMin = o.fPhiCorrEtaMin;
1178 fPhiCorrEtaMax = o.fPhiCorrEtaMax;
1179 fPhiCorrNBinsPhi = o.fPhiCorrNBinsPhi;
1180 fPhiCorrPhiMin = o.fPhiCorrPhiMin;
1181 fPhiCorrPhiMax = o.fPhiCorrPhiMax;
656dc810 1182 fCommonHistList = o.fCommonHistList;
1183 fh1EvtSelection = o.fh1EvtSelection;
1184 fh1VertexNContributors = o.fh1VertexNContributors;
1185 fh1VertexZ = o.fh1VertexZ;
1186 fh1EvtMult = o.fh1EvtMult;
3af23c82 1187 fh1EvtCent = o.fh1EvtCent;
3170a3f8 1188 fh2TrackPtVsDCAXY = o.fh2TrackPtVsDCAXY;
1189 fh2TrackPtVsDCAZ = o.fh2TrackPtVsDCAXY;
ac017ff3 1190 fh1Xsec = o.fh1Xsec;
1191 fh1Trials = o.fh1Trials;
1192 fh1PtHard = o.fh1PtHard;
1193 fh1PtHardTrials = o.fh1PtHardTrials;
656dc810 1194 fh1nRecJetsCuts = o.fh1nRecJetsCuts;
1195 fh1nGenJets = o.fh1nGenJets;
fe343c6b 1196 fh1nRecEffJets = o.fh1nRecEffJets;
39e2b057 1197 fh1nEmbeddedJets = o.fh1nEmbeddedJets;
cb76764e 1198 fh2PtRecVsGenPrim = o.fh2PtRecVsGenPrim;
d5e8640d 1199 fh2PtRecVsGenSec = o.fh2PtRecVsGenSec;
cb76764e 1200 fQATrackHistosRecEffGen = o.fQATrackHistosRecEffGen;
1201 fQATrackHistosRecEffRec = o.fQATrackHistosRecEffRec;
d5e8640d 1202 fQATrackHistosSecRec = o.fQATrackHistosSecRec;
cb76764e 1203 fFFHistosRecEffGen = o.fFFHistosRecEffGen;
d5e8640d 1204 fFFHistosRecEffRec = o.fFFHistosRecEffRec;
1205 fFFHistosSecRec = o.fFFHistosSecRec;
3af23c82 1206 fhnResponseSinglePt = o.fhnResponseSinglePt;
39e2b057 1207 fh2SingleInvPtRecMnGenVsPtGen = o.fh2SingleInvPtRecMnGenVsPtGen;
3af23c82 1208 fhnResponseJetTrackPt = o.fhnResponseJetTrackPt;
1209 fhnResponseJetZ = o.fhnResponseJetZ;
1210 fhnResponseJetXi = o.fhnResponseJetXi;
1da9498b 1211 // Background
67e37e80 1212 fh1OutLeadingMult = o.fh1OutLeadingMult;
742ee86c 1213 fh1OutLeadingStatMult = o.fh1OutLeadingStatMult;
67e37e80 1214 fh1PerpMult = o.fh1PerpMult;
3af23c82 1215 fh1ASideMult = o.fh1ASideMult;
1216 fh1ASideWindowMult = o.fh1ASideWindowMult;
1217 fh1PerpWindowMult = o.fh1PerpWindowMult;
67e37e80 1218 fh1Out2JetsMult = o.fh1Out2JetsMult;
1219 fh1Out3JetsMult = o.fh1Out3JetsMult;
742ee86c 1220 fh1MedianClustersMult = o.fh1MedianClustersMult;
1221 fh1OutClustersMult = o.fh1OutClustersMult;
39e2b057 1222 fh1FractionPtEmbedded = o.fh1FractionPtEmbedded;
1223 fh1IndexEmbedded = o.fh1IndexEmbedded;
1224 fh2DeltaPtVsJetPtEmbedded = o.fh2DeltaPtVsJetPtEmbedded;
1225 fh2DeltaPtVsRecJetPtEmbedded = o.fh2DeltaPtVsRecJetPtEmbedded;
1226 fh1DeltaREmbedded = o.fh1DeltaREmbedded;
1227 fh2ptVsDistNN_pt50_rec = o.fh2ptVsDistNN_pt50_rec;
1228 fh2ptVsDistNN_pt50_nonRec = o.fh2ptVsDistNN_pt50_nonRec;
1229 fh2ptVsDistNN_pt10_rec = o.fh2ptVsDistNN_pt10_rec;
1230 fh2ptVsDistNN_pt10_nonRec = o.fh2ptVsDistNN_pt10_nonRec;
67e37e80 1231 fQABckgHisto0RecCuts = o.fQABckgHisto0RecCuts;
1232 fQABckgHisto0Gen = o.fQABckgHisto0Gen;
1233 fQABckgHisto1RecCuts = o.fQABckgHisto1RecCuts;
1234 fQABckgHisto1Gen = o.fQABckgHisto1Gen;
1235 fQABckgHisto2RecCuts = o.fQABckgHisto2RecCuts;
1236 fQABckgHisto2Gen = o.fQABckgHisto2Gen;
742ee86c 1237 fQABckgHisto3RecCuts = o.fQABckgHisto3RecCuts;
1238 fQABckgHisto3Gen = o.fQABckgHisto3Gen;
3170a3f8 1239 fQABckgHisto4RecCuts = o.fQABckgHisto4RecCuts;
1240 fQABckgHisto4Gen = o.fQABckgHisto4Gen;
67e37e80 1241 fFFBckgHisto0RecCuts = o.fFFBckgHisto0RecCuts;
1242 fFFBckgHisto0RecLeading = o.fFFBckgHisto0RecLeading;
1243 fFFBckgHisto0Gen = o.fFFBckgHisto0Gen;
1244 fFFBckgHisto0GenLeading = o.fFFBckgHisto0GenLeading;
1245 fFFBckgHisto1RecCuts = o.fFFBckgHisto1RecCuts;
1246 fFFBckgHisto1RecLeading = o.fFFBckgHisto1RecLeading;
1247 fFFBckgHisto1Gen = o.fFFBckgHisto1Gen;
1248 fFFBckgHisto1GenLeading = o.fFFBckgHisto1GenLeading;
1249 fFFBckgHisto2RecCuts = o.fFFBckgHisto2RecCuts;
1250 fFFBckgHisto2RecLeading = o.fFFBckgHisto2RecLeading;
1251 fFFBckgHisto2Gen = o.fFFBckgHisto2Gen;
1252 fFFBckgHisto2GenLeading = o.fFFBckgHisto2GenLeading;
742ee86c 1253 fFFBckgHisto3RecCuts = o.fFFBckgHisto3RecCuts;
1254 fFFBckgHisto3RecLeading = o.fFFBckgHisto3RecLeading;
1255 fFFBckgHisto3Gen = o.fFFBckgHisto3Gen;
1256 fFFBckgHisto3GenLeading = o.fFFBckgHisto3GenLeading;
3170a3f8 1257 fFFBckgHisto4RecCuts = o.fFFBckgHisto4RecCuts;
1258 fFFBckgHisto4RecLeading = o.fFFBckgHisto4RecLeading;
1259 fFFBckgHisto4Gen = o.fFFBckgHisto4Gen;
1260 fFFBckgHisto4GenLeading = o.fFFBckgHisto4GenLeading;
67e37e80 1261 fIJBckgHisto0RecCuts = o.fIJBckgHisto0RecCuts;
1262 fIJBckgHisto0RecLeading = o.fIJBckgHisto0RecLeading;
1263 fIJBckgHisto0Gen = o.fIJBckgHisto0Gen;
1264 fIJBckgHisto0GenLeading = o.fIJBckgHisto0GenLeading;
1265 fIJBckgHisto1RecCuts = o.fIJBckgHisto1RecCuts;
1266 fIJBckgHisto1RecLeading = o.fIJBckgHisto1RecLeading;
1267 fIJBckgHisto1Gen = o.fIJBckgHisto1Gen;
1268 fIJBckgHisto1GenLeading = o.fIJBckgHisto1GenLeading;
1269 fIJBckgHisto2RecCuts = o.fIJBckgHisto2RecCuts;
1270 fIJBckgHisto2RecLeading = o.fIJBckgHisto2RecLeading;
1271 fIJBckgHisto2Gen = o.fIJBckgHisto2Gen;
1272 fIJBckgHisto2GenLeading = o.fIJBckgHisto2GenLeading;
742ee86c 1273 fIJBckgHisto3Gen = o.fIJBckgHisto3Gen;
1274 fIJBckgHisto3GenLeading = o.fIJBckgHisto3GenLeading;
3170a3f8 1275 fIJBckgHisto4Gen = o.fIJBckgHisto4Gen;
1276 fIJBckgHisto4GenLeading = o.fIJBckgHisto4GenLeading;
67e37e80 1277 fRandom = o.fRandom;
3af23c82 1278 fBckgSubMethod = o.fBckgSubMethod;
656dc810 1279 }
1280
1281 return *this;
1282}
1283
1284//___________________________________________________________________________
1285AliAnalysisTaskFragmentationFunction::~AliAnalysisTaskFragmentationFunction()
1286{
1287 // destructor
1288
d5e8640d 1289 if(fTracksRec) delete fTracksRec;
1290 if(fTracksRecCuts) delete fTracksRecCuts;
1291 if(fTracksGen) delete fTracksGen;
1292 if(fTracksAODMCCharged) delete fTracksAODMCCharged;
1293 if(fTracksAODMCChargedSec) delete fTracksAODMCChargedSec;
1294 if(fTracksRecQualityCuts) delete fTracksRecQualityCuts;
1295 if(fJetsRec) delete fJetsRec;
1296 if(fJetsRecCuts) delete fJetsRecCuts;
1297 if(fJetsGen) delete fJetsGen;
1298 if(fJetsRecEff) delete fJetsRecEff;
39e2b057 1299 if(fJetsEmbedded) delete fJetsEmbedded;
1300
742ee86c 1301 if(fBckgMode &&
3170a3f8 1302 (fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters ||
1303 fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading ||
1304 fBckgType[3]==kBckgClustersOutLeading || fBckgType[4]==kBckgClustersOutLeading)){
742ee86c 1305
67e37e80 1306 if(fBckgJetsRec) delete fBckgJetsRec;
1307 if(fBckgJetsRecCuts) delete fBckgJetsRecCuts;
1308 if(fBckgJetsGen) delete fBckgJetsGen;
1309 }
1310 if(fRandom) delete fRandom;
656dc810 1311}
1312
1313//______________________________________________________________________________________________________
1314AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::AliFragFuncHistos(const char* name,
1315 Int_t nJetPt, Float_t jetPtMin, Float_t jetPtMax,
1316 Int_t nPt, Float_t ptMin, Float_t ptMax,
1317 Int_t nXi, Float_t xiMin, Float_t xiMax,
b541fbca 1318 Int_t nZ , Float_t zMin , Float_t zMax, Bool_t useLogZBins)
656dc810 1319 : TObject()
1320 ,fNBinsJetPt(nJetPt)
1321 ,fJetPtMin(jetPtMin)
1322 ,fJetPtMax(jetPtMax)
1323 ,fNBinsPt(nPt)
1324 ,fPtMin(ptMin)
1325 ,fPtMax(ptMax)
1326 ,fNBinsXi(nXi)
1327 ,fXiMin(xiMin)
1328 ,fXiMax(xiMax)
1329 ,fNBinsZ(nZ)
1330 ,fZMin(zMin)
b541fbca 1331 ,fZMax(zMax)
1332 ,fLogZBins(useLogZBins)
656dc810 1333 ,fh2TrackPt(0)
1334 ,fh2Xi(0)
1335 ,fh2Z(0)
1336 ,fh1JetPt(0)
fceb275f 1337 ,fNameFF(name)
656dc810 1338{
1339 // default constructor
1340
1341}
1342
1343//___________________________________________________________________________
1344AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::AliFragFuncHistos(const AliFragFuncHistos& copy)
1345 : TObject()
1346 ,fNBinsJetPt(copy.fNBinsJetPt)
1347 ,fJetPtMin(copy.fJetPtMin)
1348 ,fJetPtMax(copy.fJetPtMax)
1349 ,fNBinsPt(copy.fNBinsPt)
1350 ,fPtMin(copy.fPtMin)
1351 ,fPtMax(copy.fPtMax)
1352 ,fNBinsXi(copy.fNBinsXi)
1353 ,fXiMin(copy.fXiMin)
1354 ,fXiMax(copy.fXiMax)
1355 ,fNBinsZ(copy.fNBinsZ)
1356 ,fZMin(copy.fZMin)
b541fbca 1357 ,fZMax(copy.fZMax)
1358 ,fLogZBins(copy.fLogZBins)
656dc810 1359 ,fh2TrackPt(copy.fh2TrackPt)
1360 ,fh2Xi(copy.fh2Xi)
1361 ,fh2Z(copy.fh2Z)
1362 ,fh1JetPt(copy.fh1JetPt)
fceb275f 1363 ,fNameFF(copy.fNameFF)
656dc810 1364{
1365 // copy constructor
1366}
1367
1368//_______________________________________________________________________________________________________________________________________________________________
1369AliAnalysisTaskFragmentationFunction::AliFragFuncHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncHistos& o)
1370{
1371 // assignment
1372
1373 if(this!=&o){
1374 TObject::operator=(o);
1375 fNBinsJetPt = o.fNBinsJetPt;
1376 fJetPtMin = o.fJetPtMin;
1377 fJetPtMax = o.fJetPtMax;
1378 fNBinsPt = o.fNBinsPt;
1379 fPtMin = o.fPtMin;
1380 fPtMax = o.fPtMax;
1381 fNBinsXi = o.fNBinsXi;
1382 fXiMin = o.fXiMin;
1383 fXiMax = o.fXiMax;
1384 fNBinsZ = o.fNBinsZ;
1385 fZMin = o.fZMin;
1386 fZMax = o.fZMax;
b541fbca 1387 fLogZBins = o.fLogZBins;
656dc810 1388 fh2TrackPt = o.fh2TrackPt;
1389 fh2Xi = o.fh2Xi;
1390 fh2Z = o.fh2Z;
1391 fh1JetPt = o.fh1JetPt;
fceb275f 1392 fNameFF = o.fNameFF;
656dc810 1393 }
1394
1395 return *this;
1396}
1397
1398//_________________________________________________________
1399AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::~AliFragFuncHistos()
1400{
1401 // destructor
1402
1403 if(fh1JetPt) delete fh1JetPt;
1404 if(fh2TrackPt) delete fh2TrackPt;
1405 if(fh2Xi) delete fh2Xi;
1406 if(fh2Z) delete fh2Z;
1407}
1408
1409//_________________________________________________________________
1410void AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::DefineHistos()
1411{
1412 // book FF histos
1413
fceb275f 1414 fh1JetPt = new TH1F(Form("fh1FFJetPt%s", fNameFF.Data()),"",fNBinsJetPt,fJetPtMin,fJetPtMax);
1415 fh2TrackPt = new TH2F(Form("fh2FFTrackPt%s",fNameFF.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax,fNBinsPt, fPtMin, fPtMax);
1416 fh2Xi = new TH2F(Form("fh2FFXi%s",fNameFF.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsXi, fXiMin, fXiMax);
b541fbca 1417
1418 if(!fLogZBins) fh2Z = new TH2F(Form("fh2FFZ%s",fNameFF.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsZ, fZMin, fZMax);
1419 else{ // logartihmic z binning
1420
1421 Double_t binLimsZ[fNBinsXi+1];
1422
1423 Int_t binZ = 0;
1424 for(Int_t binXi = fh2Xi->GetYaxis()->GetNbins(); binXi>0; binXi--){
1425
1426 Double_t xiLo = fh2Xi->GetYaxis()->GetBinLowEdge(binXi);
1427 Double_t xiUp = fh2Xi->GetYaxis()->GetBinUpEdge(binXi);
1428
1429 Double_t zUp = TMath::Exp(-1*xiLo);
1430 Double_t zLo = TMath::Exp(-1*xiUp);
1431
1432 if(binZ == 0) binLimsZ[binZ] = zLo;
1433 binLimsZ[binZ+1] = zUp;
1434
1435 binZ++;
1436 }
1437
1438 fNBinsZ = binZ;
1439 fh2Z = new TH2F(Form("fh2FFZ%s",fNameFF.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsZ, binLimsZ);
1440 }
656dc810 1441
1442 AliAnalysisTaskFragmentationFunction::SetProperties(fh1JetPt, "p_{T} [GeV/c]", "entries");
1443 AliAnalysisTaskFragmentationFunction::SetProperties(fh2TrackPt,"jet p_{T} [GeV/c]","p_{T} [GeV/c]","entries");
1444 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Xi,"jet p_{T} [GeV/c]","#xi", "entries");
1445 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Z,"jet p_{T} [GeV/c]","z","entries");
1446}
1447
1448//_______________________________________________________________________________________________________________
1da9498b 1449void AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::FillFF(Float_t trackPt, Float_t jetPt, Bool_t incrementJetPt, Float_t norm)
656dc810 1450{
1451 // fill FF
1452
1da9498b 1453 if(incrementJetPt && norm) fh1JetPt->Fill(jetPt,1/norm);
942bf1b4 1454 else if(incrementJetPt) fh1JetPt->Fill(jetPt);
1455
1456 // Added for proper normalization of FF background estimation
1457 // when zero track are found in the background region
3170a3f8 1458 if((int)trackPt==-1) return;
942bf1b4 1459
1da9498b 1460 if(norm)fh2TrackPt->Fill(jetPt,trackPt,1/norm);
1461 else fh2TrackPt->Fill(jetPt,trackPt);
656dc810 1462
656dc810 1463 Double_t z = 0.;
1464 if(jetPt>0) z = trackPt / jetPt;
1465 Double_t xi = 0;
1466 if(z>0) xi = TMath::Log(1/z);
1467
1da9498b 1468 if(norm){
1469 fh2Xi->Fill(jetPt,xi,1/norm);
1470 fh2Z->Fill(jetPt,z,1/norm);
1471 }
1472 else {
1473 fh2Xi->Fill(jetPt,xi);
1474 fh2Z->Fill(jetPt,z);
1475 }
656dc810 1476}
1477
1478//_________________________________________________________________________________
1479void AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::AddToOutput(TList* list) const
1480{
1481 // add histos to list
1482
1483 list->Add(fh1JetPt);
1484
1485 list->Add(fh2TrackPt);
1486 list->Add(fh2Xi);
1487 list->Add(fh2Z);
1488}
1489
1490//_________________________________________________________________________________________________________
1491AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::AliFragFuncQAJetHistos(const char* name,
1492 Int_t nPt, Float_t ptMin, Float_t ptMax,
1493 Int_t nEta, Float_t etaMin, Float_t etaMax,
1494 Int_t nPhi, Float_t phiMin, Float_t phiMax)
1495 : TObject()
1496 ,fNBinsPt(nPt)
1497 ,fPtMin(ptMin)
1498 ,fPtMax(ptMax)
1499 ,fNBinsEta(nEta)
1500 ,fEtaMin(etaMin)
1501 ,fEtaMax(etaMax)
1502 ,fNBinsPhi(nPhi)
1503 ,fPhiMin(phiMin)
1504 ,fPhiMax(phiMax)
1505 ,fh2EtaPhi(0)
1506 ,fh1Pt(0)
fceb275f 1507 ,fNameQAJ(name)
656dc810 1508{
1509 // default constructor
1510}
1511
1512//____________________________________________________________________________________
1513AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::AliFragFuncQAJetHistos(const AliFragFuncQAJetHistos& copy)
1514 : TObject()
1515 ,fNBinsPt(copy.fNBinsPt)
1516 ,fPtMin(copy.fPtMin)
1517 ,fPtMax(copy.fPtMax)
1518 ,fNBinsEta(copy.fNBinsEta)
1519 ,fEtaMin(copy.fEtaMin)
1520 ,fEtaMax(copy.fEtaMax)
1521 ,fNBinsPhi(copy.fNBinsPhi)
1522 ,fPhiMin(copy.fPhiMin)
1523 ,fPhiMax(copy.fPhiMax)
1524 ,fh2EtaPhi(copy.fh2EtaPhi)
1525 ,fh1Pt(copy.fh1Pt)
fceb275f 1526 ,fNameQAJ(copy.fNameQAJ)
656dc810 1527{
1528 // copy constructor
1529}
1530
1531//________________________________________________________________________________________________________________________________________________________________________
1532AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos& o)
1533{
1534 // assignment
1535
1536 if(this!=&o){
1537 TObject::operator=(o);
1538 fNBinsPt = o.fNBinsPt;
1539 fPtMin = o.fPtMin;
1540 fPtMax = o.fPtMax;
1541 fNBinsEta = o.fNBinsEta;
1542 fEtaMin = o.fEtaMin;
1543 fEtaMax = o.fEtaMax;
1544 fNBinsPhi = o.fNBinsPhi;
1545 fPhiMin = o.fPhiMin;
1546 fPhiMax = o.fPhiMax;
1547 fh2EtaPhi = o.fh2EtaPhi;
1548 fh1Pt = o.fh1Pt;
fceb275f 1549 fNameQAJ = o.fNameQAJ;
656dc810 1550 }
1551
1552 return *this;
1553}
1554
1555//______________________________________________________________
1556AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::~AliFragFuncQAJetHistos()
1557{
1558 // destructor
1559
1560 if(fh2EtaPhi) delete fh2EtaPhi;
1561 if(fh1Pt) delete fh1Pt;
1562}
1563
1564//____________________________________________________________________
1565void AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::DefineHistos()
1566{
1567 // book jet QA histos
1568
fceb275f 1569 fh2EtaPhi = new TH2F(Form("fh2JetQAEtaPhi%s", fNameQAJ.Data()), Form("%s: #eta - #phi distribution", fNameQAJ.Data()), fNBinsEta, fEtaMin, fEtaMax, fNBinsPhi, fPhiMin, fPhiMax);
1570 fh1Pt = new TH1F(Form("fh1JetQAPt%s", fNameQAJ.Data()), Form("%s: p_{T} distribution", fNameQAJ.Data()), fNBinsPt, fPtMin, fPtMax);
656dc810 1571
1572 AliAnalysisTaskFragmentationFunction::SetProperties(fh2EtaPhi, "#eta", "#phi");
1573 AliAnalysisTaskFragmentationFunction::SetProperties(fh1Pt, "p_{T} [GeV/c]", "entries");
1574}
1575
1576//____________________________________________________________________________________________________
1577void AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::FillJetQA(Float_t eta, Float_t phi, Float_t pt)
1578{
1579 // fill jet QA histos
1580
1581 fh2EtaPhi->Fill( eta, phi);
1582 fh1Pt->Fill( pt );
1583}
1584
1585//____________________________________________________________________________________
1586void AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::AddToOutput(TList* list) const
1587{
1588 // add histos to list
1589
1590 list->Add(fh2EtaPhi);
1591 list->Add(fh1Pt);
1592}
1593
1594//___________________________________________________________________________________________________________
1595AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::AliFragFuncQATrackHistos(const char* name,
1596 Int_t nPt, Float_t ptMin, Float_t ptMax,
1597 Int_t nEta, Float_t etaMin, Float_t etaMax,
1598 Int_t nPhi, Float_t phiMin, Float_t phiMax,
1599 Float_t ptThresh)
1600 : TObject()
1601 ,fNBinsPt(nPt)
1602 ,fPtMin(ptMin)
1603 ,fPtMax(ptMax)
1604 ,fNBinsEta(nEta)
1605 ,fEtaMin(etaMin)
1606 ,fEtaMax(etaMax)
1607 ,fNBinsPhi(nPhi)
1608 ,fPhiMin(phiMin)
1609 ,fPhiMax(phiMax)
1610 ,fHighPtThreshold(ptThresh)
1611 ,fh2EtaPhi(0)
1612 ,fh1Pt(0)
1613 ,fh2HighPtEtaPhi(0)
3af23c82 1614 ,fh2PhiPt(0)
fceb275f 1615 ,fNameQAT(name)
656dc810 1616{
1617 // default constructor
1618}
1619
1620//__________________________________________________________________________________________
1621AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::AliFragFuncQATrackHistos(const AliFragFuncQATrackHistos& copy)
1622 : TObject()
1623 ,fNBinsPt(copy.fNBinsPt)
1624 ,fPtMin(copy.fPtMin)
1625 ,fPtMax(copy.fPtMax)
1626 ,fNBinsEta(copy.fNBinsEta)
1627 ,fEtaMin(copy.fEtaMin)
1628 ,fEtaMax(copy.fEtaMax)
1629 ,fNBinsPhi(copy.fNBinsPhi)
1630 ,fPhiMin(copy.fPhiMin)
1631 ,fPhiMax(copy.fPhiMax)
1632 ,fHighPtThreshold(copy.fHighPtThreshold)
1633 ,fh2EtaPhi(copy.fh2EtaPhi)
1634 ,fh1Pt(copy.fh1Pt)
1635 ,fh2HighPtEtaPhi(copy.fh2HighPtEtaPhi)
3af23c82 1636 ,fh2PhiPt(copy.fh2PhiPt)
fceb275f 1637 ,fNameQAT(copy.fNameQAT)
656dc810 1638{
1639 // copy constructor
1640}
1641
1642// _____________________________________________________________________________________________________________________________________________________________________________
1643AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos& o)
1644{
1645 // assignment
1646
1647 if(this!=&o){
1648 TObject::operator=(o);
1649 fNBinsPt = o.fNBinsPt;
1650 fPtMin = o.fPtMin;
1651 fPtMax = o.fPtMax;
1652 fNBinsEta = o.fNBinsEta;
1653 fEtaMin = o.fEtaMin;
1654 fEtaMax = o.fEtaMax;
1655 fNBinsPhi = o.fNBinsPhi;
1656 fPhiMin = o.fPhiMin;
1657 fPhiMax = o.fPhiMax;
1658 fHighPtThreshold = o.fHighPtThreshold;
1659 fh2EtaPhi = o.fh2EtaPhi;
1660 fh1Pt = o.fh1Pt;
1661 fh2HighPtEtaPhi = o.fh2HighPtEtaPhi;
3af23c82 1662 fh2PhiPt = o.fh2PhiPt;
fceb275f 1663 fNameQAT = o.fNameQAT;
656dc810 1664 }
1665
1666 return *this;
1667}
1668
1669//___________________________________________________________________
1670AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::~AliFragFuncQATrackHistos()
1671{
1672 // destructor
1673
1674 if(fh2EtaPhi) delete fh2EtaPhi;
1675 if(fh2HighPtEtaPhi) delete fh2HighPtEtaPhi;
1676 if(fh1Pt) delete fh1Pt;
3af23c82 1677 if(fh2PhiPt) delete fh2PhiPt;
656dc810 1678}
1679
1680//______________________________________________________________________
1681void AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::DefineHistos()
1682{
1683 // book track QA histos
1684
fceb275f 1685 fh2EtaPhi = new TH2F(Form("fh2TrackQAEtaPhi%s", fNameQAT.Data()), Form("%s: #eta - #phi distribution", fNameQAT.Data()), fNBinsEta, fEtaMin, fEtaMax, fNBinsPhi, fPhiMin, fPhiMax);
1686 fh2HighPtEtaPhi = new TH2F(Form("fh2TrackQAHighPtEtaPhi%s", fNameQAT.Data()), Form("%s: #eta - #phi distribution for high-p_{T}", fNameQAT.Data()), fNBinsEta, fEtaMin, fEtaMax, fNBinsPhi, fPhiMin, fPhiMax);
1687 fh1Pt = new TH1F(Form("fh1TrackQAPt%s", fNameQAT.Data()), Form("%s: p_{T} distribution", fNameQAT.Data()), fNBinsPt, fPtMin, fPtMax);
3170a3f8 1688 fh2PhiPt = new TH2F(Form("fh2TrackQAPhiPt%s", fNameQAT.Data()), Form("%s: #phi - p_{T} distribution", fNameQAT.Data()), fNBinsPhi, fPhiMin, fPhiMax, fNBinsPt, fPtMin, fPtMax);
3af23c82 1689
656dc810 1690 AliAnalysisTaskFragmentationFunction::SetProperties(fh2EtaPhi, "#eta", "#phi");
1691 AliAnalysisTaskFragmentationFunction::SetProperties(fh2HighPtEtaPhi, "#eta", "#phi");
1692 AliAnalysisTaskFragmentationFunction::SetProperties(fh1Pt, "p_{T} [GeV/c]", "entries");
3af23c82 1693 AliAnalysisTaskFragmentationFunction::SetProperties(fh2PhiPt, "#phi", "p_{T} [GeV/c]");
656dc810 1694}
1695
1696//________________________________________________________________________________________________________
3af23c82 1697void AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::FillTrackQA(Float_t eta, Float_t phi, Float_t pt, Bool_t weightPt, Float_t norm)
656dc810 1698{
1699 // fill track QA histos
3af23c82 1700 Float_t weight = 1.;
1701 if(weightPt) weight = pt;
1702 fh2EtaPhi->Fill( eta, phi, weight);
1703 if(pt > fHighPtThreshold) fh2HighPtEtaPhi->Fill( eta, phi, weight);
1704 if(norm) fh1Pt->Fill( pt, 1/norm );
1705 else fh1Pt->Fill( pt );
1706 fh2PhiPt->Fill(phi, pt);
656dc810 1707}
1708
1709//______________________________________________________________________________________
1710void AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::AddToOutput(TList* list) const
1711{
1712 // add histos to list
1713
1714 list->Add(fh2EtaPhi);
1715 list->Add(fh2HighPtEtaPhi);
1716 list->Add(fh1Pt);
3af23c82 1717 list->Add(fh2PhiPt);
656dc810 1718}
1719
1720//______________________________________________________________________________________________________
1721AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::AliFragFuncIntraJetHistos(const char* name,
1722 Int_t nJetPt, Float_t jetPtMin, Float_t jetPtMax,
1723 Int_t nPt, Float_t ptMin, Float_t ptMax,
1724 Int_t nZ , Float_t zMin , Float_t zMax,
1725 Int_t nCosTheta , Float_t costhetaMin , Float_t costhetaMax,
1726 Int_t nTheta , Float_t thetaMin , Float_t thetaMax,
1727 Int_t nJt , Float_t jtMin , Float_t jtMax)
1728 : TObject()
1729 ,fNBinsJetPt(nJetPt)
1730 ,fJetPtMin(jetPtMin)
1731 ,fJetPtMax(jetPtMax)
1732 ,fNBinsPt(nPt)
1733 ,fPtMin(ptMin)
1734 ,fPtMax(ptMax)
1735 ,fNBinsZ(nZ)
1736 ,fZMin(zMin)
1737 ,fZMax(zMax)
1738 ,fNBinsJt(nJt)
1739 ,fJtMin(jtMin)
1740 ,fJtMax(jtMax)
1741 ,fNBinsTheta(nTheta)
1742 ,fThetaMin(thetaMin)
1743 ,fThetaMax(thetaMax)
1744 ,fNBinsCosTheta(nCosTheta)
1745 ,fCosThetaMin(costhetaMin)
1746 ,fCosThetaMax(costhetaMax)
656dc810 1747 ,fh2CosTheta(0)
67e37e80 1748 ,fh2PtZ(0)
1749 ,fh3ThetaZ(0)
1750 ,fh3JtTheta(0)
1751 ,fh3JtZ(0)
fceb275f 1752 ,fNameIJ(name)
656dc810 1753{
1754 // default constructor
1755
1756}
1757
1758//___________________________________________________________________________
1759AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::AliFragFuncIntraJetHistos(const AliFragFuncIntraJetHistos& copy)
1760 : TObject()
1761 ,fNBinsJetPt(copy.fNBinsJetPt)
1762 ,fJetPtMin(copy.fJetPtMin)
1763 ,fJetPtMax(copy.fJetPtMax)
1764 ,fNBinsPt(copy.fNBinsPt)
1765 ,fPtMin(copy.fPtMin)
1766 ,fPtMax(copy.fPtMax)
1767 ,fNBinsZ(copy.fNBinsZ)
1768 ,fZMin(copy.fZMin)
1769 ,fZMax(copy.fZMax)
1770 ,fNBinsJt(copy.fNBinsJt)
1771 ,fJtMin(copy.fJtMin)
1772 ,fJtMax(copy.fJtMax)
1773 ,fNBinsTheta(copy.fNBinsTheta)
1774 ,fThetaMin(copy.fThetaMin)
1775 ,fThetaMax(copy.fThetaMax)
1776 ,fNBinsCosTheta(copy.fNBinsCosTheta)
1777 ,fCosThetaMin(copy.fCosThetaMin)
1778 ,fCosThetaMax(copy.fCosThetaMax)
656dc810 1779 ,fh2CosTheta(copy.fh2CosTheta)
67e37e80 1780 ,fh2PtZ(copy.fh2PtZ)
1781 ,fh3ThetaZ(copy.fh3ThetaZ)
1782 ,fh3JtTheta(copy.fh3JtTheta)
1783 ,fh3JtZ(copy.fh3JtZ)
fceb275f 1784 ,fNameIJ(copy.fNameIJ)
656dc810 1785{
1786 // copy constructor
1787}
1788
1789//_______________________________________________________________________________________________________________________________________________________________
1790AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos& o)
1791{
1792 // assignment
1793
1794 if(this!=&o){
1795 TObject::operator=(o);
1796 fNBinsJetPt = o.fNBinsJetPt;
1797 fJetPtMin = o.fJetPtMin;
1798 fJetPtMax = o.fJetPtMax;
1799 fNBinsPt = o.fNBinsPt;
1800 fPtMin = o.fPtMin;
1801 fPtMax = o.fPtMax;
1802 fNBinsZ = o.fNBinsZ;
1803 fZMin = o.fZMin;
1804 fZMax = o.fZMax;
1805 fNBinsJt = o.fNBinsJt;
1806 fJtMin = o.fJtMin;
1807 fJtMax = o.fJtMax;
1808 fNBinsTheta = o.fNBinsTheta;
1809 fThetaMin = o.fThetaMin;
1810 fThetaMax = o.fThetaMax;
1811 fNBinsCosTheta = o.fNBinsCosTheta;
1812 fCosThetaMin = o.fCosThetaMin;
1813 fCosThetaMax = o.fCosThetaMax;
656dc810 1814 fh2CosTheta = o.fh2CosTheta;
67e37e80 1815 fh2PtZ = o.fh2PtZ;
1816 fh3ThetaZ = o.fh3ThetaZ;
1817 fh3JtTheta = o.fh3JtTheta;
1818 fh3JtZ = o.fh3JtZ;
fceb275f 1819 fNameIJ = o.fNameIJ;
656dc810 1820 }
1821
1822 return *this;
1823}
1824
1825//_________________________________________________________
1826AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::~AliFragFuncIntraJetHistos()
1827{
1828 // destructor
1829
1830
656dc810 1831 if(fh2CosTheta) delete fh2CosTheta;
67e37e80 1832 if(fh2PtZ) delete fh2PtZ;
1833 if(fh3ThetaZ) delete fh3ThetaZ;
1834 if(fh3JtTheta) delete fh3JtTheta;
1835 if(fh3JtZ) delete fh3JtZ;
656dc810 1836
1837}
1838
1839//_________________________________________________________________
1840void AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::DefineHistos()
1841{
1842 // book FF histos
1843
fceb275f 1844 fh2CosTheta = new TH2F(Form("fh2IJcosTheta%s",fNameIJ.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax,fNBinsCosTheta, fCosThetaMin, fCosThetaMax);
67e37e80 1845 fh2PtZ = new TH2F(Form("fh2IJPtZ%s",fNameIJ.Data()),"",fNBinsPt, fPtMin, fPtMax, fNBinsZ, fZMin, fZMax);
1846 fh3ThetaZ = new TH3F(Form("fh3IJThetaZ%s",fNameIJ.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsTheta, fThetaMin, fThetaMax, fNBinsZ, fZMin, fZMax);
1847 fh3JtTheta = new TH3F(Form("fh3IJJtTheta%s",fNameIJ.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsJt, fJtMin, fJtMax, fNBinsTheta, fThetaMin, fThetaMax);
1848 fh3JtZ = new TH3F(Form("fh3IJJtZ%s",fNameIJ.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsJt, fJtMin, fJtMax, fNBinsZ, fZMin, fZMax);
656dc810 1849
656dc810 1850 AliAnalysisTaskFragmentationFunction::SetProperties(fh2CosTheta,"jet p_{T} [GeV/c]","cos(#Theta)", "entries");
67e37e80 1851 AliAnalysisTaskFragmentationFunction::SetProperties(fh2PtZ,"had p_{T} [GeV/c]","z=p_{T}^{had}/p_{T}^{jet}","entries");
1852 AliAnalysisTaskFragmentationFunction::SetProperties(fh3ThetaZ,"jet p_{T} [GeV/c]","#Theta [rad]","z=p_{T}^{had}/p_{T}^{jet}");
1853 AliAnalysisTaskFragmentationFunction::SetProperties(fh3JtTheta,"jet p_{T} [GeV/c]","j_{T} [GeV/c]","#Theta [rad]");
1854 AliAnalysisTaskFragmentationFunction::SetProperties(fh3JtZ,"jet p_{T} [GeV/c]","j_{T} [GeV/c]","z=p_{T}^{had}/p_{T}^{jet}");
1855
656dc810 1856}
1857
1858//_______________________________________________________________________________________________________________
1da9498b 1859void AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::FillIntraJet(const TLorentzVector* trackV, const TLorentzVector* jetV, Float_t norm)
656dc810 1860{
1861 // fill IntraJet histos
1862
1863 Float_t cosTheta = 0.; Float_t theta = 0.;
1864 Float_t jt = 0.; Float_t z = 0.;
1865 // For Theta distribution
1866 Float_t pxT = trackV->Px();
1867 Float_t pyT = trackV->Py();
1868 Float_t pzT = trackV->Pz();
1869 Float_t ptT = trackV->Pt();
1870 Float_t pT = trackV->P();
1871 Float_t etaT = trackV->Eta();
1872 Float_t phiT = trackV->Phi(); // Check the value returned
1873 Float_t pxJ = jetV->Px();
1874 Float_t pyJ = jetV->Py();
1875 Float_t pzJ = jetV->Pz();
1876 Float_t ptJ = jetV->Pt();
1877 Float_t pJ = jetV->P();
1878
1879 // Compute z
1da9498b 1880 if(ptJ>0) z = (Float_t)(ptT/ptJ);
656dc810 1881
1882 // Compute theta
1883 cosTheta = (pxT*pxJ+pyT*pyJ+pzT*pzJ)/(pT*pJ);
1884 theta = TMath::ACos(cosTheta);
1885
1886 // Compute jt
1887 TVector3 trackP; TVector3 jetP;
1888 jetP[0] = pxJ;
1889 jetP[1] = pyJ;
1890 jetP[2] = pzJ;
1891 trackP.SetPtEtaPhi(ptT,etaT,phiT);
1892 jt = TMath::Sin(trackP.Angle(jetP))*trackP.Mag();
1893
67e37e80 1894 // Fill histos
1da9498b 1895 if(norm){
1896 fh2CosTheta->Fill(ptJ,cosTheta,1/norm);
67e37e80 1897 fh2PtZ->Fill(ptT,z,1/norm);
1898 fh3ThetaZ->Fill(ptJ,theta,z,1/norm);
1899 fh3JtTheta->Fill(ptJ,jt,theta,1/norm);
1900 fh3JtZ->Fill(ptJ,jt,z,1/norm);
1da9498b 1901 }
1902 else {
1903 fh2CosTheta->Fill(ptJ,cosTheta);
67e37e80 1904 fh2PtZ->Fill(ptT,z);
1905 fh3ThetaZ->Fill(ptJ,theta,z);
1906 fh3JtTheta->Fill(ptJ,jt,theta);
1907 fh3JtZ->Fill(ptJ,jt,z);
1da9498b 1908 }
656dc810 1909
656dc810 1910}
1911
1912//______________________________________________________________________________________________________
1913AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::AliFragFuncDiJetHistos(const char* name, Int_t kindSlices,
1914 Int_t nJetInvMass, Float_t jetInvMassMin, Float_t jetInvMassMax,
1915 Int_t nJetPt, Float_t jetPtMin, Float_t jetPtMax,
1916 Int_t nPt, Float_t ptMin, Float_t ptMax,
1917 Int_t nXi, Float_t xiMin, Float_t xiMax,
1918 Int_t nZ , Float_t zMin , Float_t zMax)
1919 : TObject()
1920 ,fKindSlices(kindSlices)
1921 ,fNBinsJetInvMass(nJetInvMass)
1922 ,fJetInvMassMin(jetInvMassMin)
1923 ,fJetInvMassMax(jetInvMassMax)
1924 ,fNBinsJetPt(nJetPt)
1925 ,fJetPtMin(jetPtMin)
1926 ,fJetPtMax(jetPtMax)
1927 ,fNBinsPt(nPt)
1928 ,fPtMin(ptMin)
1929 ,fPtMax(ptMax)
1930 ,fNBinsXi(nXi)
1931 ,fXiMin(xiMin)
1932 ,fXiMax(xiMax)
1933 ,fNBinsZ(nZ)
1934 ,fZMin(zMin)
1935 ,fZMax(zMax)
1936 ,fh2TrackPtJet1(0)
1937 ,fh2TrackPtJet2(0)
1938 ,fh2TrackPtJet(0)
1939 ,fh1Jet1Pt(0)
1940 ,fh1Jet2Pt(0)
1941 ,fh1JetPt(0)
1942 ,fh2Xi1(0)
1943 ,fh2Xi2(0)
1944 ,fh2Xi(0)
1945 ,fh2Z1(0)
1946 ,fh2Z2(0)
1947 ,fh2Z(0)
1948 ,fh2Pt1(0)
1949 ,fh2Pt2(0)
1950 ,fh2Pt(0)
fceb275f 1951 ,fNameDJ(name)
656dc810 1952{
1953 // default constructor
1954
1955}
1956
1957//______________________________________________________________________________________________________
1958AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::AliFragFuncDiJetHistos(const AliFragFuncDiJetHistos& copy)
1959 : TObject()
1960 ,fKindSlices(copy.fKindSlices)
1961 ,fNBinsJetInvMass(copy.fNBinsJetInvMass)
1962 ,fJetInvMassMin(copy.fJetInvMassMin)
1963 ,fJetInvMassMax(copy.fJetInvMassMax)
1964 ,fNBinsJetPt(copy.fNBinsJetPt)
1965 ,fJetPtMin(copy.fJetPtMin)
1966 ,fJetPtMax(copy.fJetPtMax)
1967 ,fNBinsPt(copy.fNBinsPt)
1968 ,fPtMin(copy.fPtMin)
1969 ,fPtMax(copy.fPtMax)
1970 ,fNBinsXi(copy.fNBinsXi)
1971 ,fXiMin(copy.fXiMin)
1972 ,fXiMax(copy.fXiMax)
1973 ,fNBinsZ(copy.fNBinsZ)
1974 ,fZMin(copy.fZMin)
1975 ,fZMax(copy.fZMax)
1976 ,fh2TrackPtJet1(copy.fh2TrackPtJet1)
1977 ,fh2TrackPtJet2(copy.fh2TrackPtJet2)
1978 ,fh2TrackPtJet(copy.fh2TrackPtJet)
1979 ,fh1Jet1Pt(copy.fh1Jet1Pt)
1980 ,fh1Jet2Pt(copy.fh1Jet2Pt)
1981 ,fh1JetPt(copy.fh1JetPt)
1982 ,fh2Xi1(copy.fh2Xi1)
1983 ,fh2Xi2(copy.fh2Xi2)
1984 ,fh2Xi(copy.fh2Xi2)
1985 ,fh2Z1(copy.fh2Z1)
1986 ,fh2Z2(copy.fh2Z2)
1987 ,fh2Z(copy.fh2Z)
1988 ,fh2Pt1(copy.fh2Pt1)
1989 ,fh2Pt2(copy.fh2Pt2)
1990 ,fh2Pt(copy.fh2Pt)
fceb275f 1991 ,fNameDJ(copy.fNameDJ)
656dc810 1992{
1993 // default constructor
1994
1995}
1996
1997//_______________________________________________________________________________________________________________________________________________________________
1998AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos& o)
1999{
2000 // assignment
2001
2002 if(this!=&o){
2003 TObject::operator=(o);
2004 fKindSlices = o.fKindSlices;
2005 fNBinsJetInvMass = o.fNBinsJetInvMass;
2006 fJetInvMassMin = o.fJetInvMassMin;
2007 fJetInvMassMax = o.fJetInvMassMax;
2008 fNBinsJetPt = o.fNBinsJetPt;
2009 fJetPtMin = o.fJetPtMin;
2010 fJetPtMax = o.fJetPtMax;
2011 fNBinsPt = o.fNBinsPt;
2012 fPtMin = o.fPtMin;
2013 fPtMax = o.fPtMax;
2014 fNBinsXi = o.fNBinsXi;
2015 fXiMin = o.fXiMin;
2016 fXiMax = o.fXiMax;
2017 fNBinsZ = o.fNBinsZ;
2018 fZMin = o.fZMin;
2019 fZMax = o.fZMax;
2020 fh2TrackPtJet1 = o.fh2TrackPtJet1;
2021 fh2TrackPtJet2 = o.fh2TrackPtJet2;
2022 fh2TrackPtJet = o.fh2TrackPtJet;
2023 fh1Jet1Pt = o.fh1Jet1Pt;
2024 fh1Jet2Pt = o.fh1Jet2Pt;
2025 fh1JetPt = o.fh1JetPt;
2026 fh2Xi1 = o.fh2Xi1;
2027 fh2Xi2 = o.fh2Xi2;
2028 fh2Xi = o.fh2Xi;
2029 fh2Z1 = o.fh2Z1;
2030 fh2Z2 = o.fh2Z2;
2031 fh2Z = o.fh2Z;
2032 fh2Pt1 = o.fh2Pt1;
2033 fh2Pt2 = o.fh2Pt2;
2034 fh2Pt = o.fh2Pt;
fceb275f 2035 fNameDJ = o.fNameDJ;
656dc810 2036 }
2037
2038 return *this;
2039}
2040
2041//_________________________________________________________
2042AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::~AliFragFuncDiJetHistos()
2043{
2044 // destructor
2045
2046 if(fh2TrackPtJet1) delete fh2TrackPtJet1;
2047 if(fh2TrackPtJet2) delete fh2TrackPtJet2;
2048 if(fh2TrackPtJet ) delete fh2TrackPtJet;
2049 if(fh1Jet1Pt) delete fh1Jet1Pt;
2050 if(fh1Jet2Pt) delete fh1Jet2Pt;
2051 if(fh1JetPt) delete fh1JetPt;
2052 if(fh2Xi1) delete fh2Xi1;
2053 if(fh2Xi2) delete fh2Xi2;
2054 if(fh2Xi) delete fh2Xi;
2055 if(fh2Z1) delete fh2Z1;
2056 if(fh2Z2) delete fh2Z2;
2057 if(fh2Z) delete fh2Z;
2058 if(fh2Pt1) delete fh2Pt1;
2059 if(fh2Pt2) delete fh2Pt2;
2060 if(fh2Pt) delete fh2Pt;
2061}
2062
2063//________________________________________________________________________
2064void AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::DefineDiJetHistos()
2065{
fceb275f 2066 // book DiJet histos
2067
656dc810 2068 Int_t nBins = 0;
2069 Double_t min = 0.;
2070 Double_t max = 0.;
2071 const char *xaxis = "";
2072 if(fKindSlices == 1)
2073 {
2074 nBins = fNBinsJetInvMass;
2075 min = fJetInvMassMin;
2076 max = fJetInvMassMax;
2077 xaxis = "M_{JJ} [GeV]";
2078 }
2079 if(fKindSlices == 2 || fKindSlices == 3)
2080 {
2081 nBins = fNBinsJetPt;
2082 min = fJetPtMin;
2083 max = fJetPtMax;
2084 if(fKindSlices == 2) xaxis = "E_{Tmean} [GeV]";
2085 if(fKindSlices == 3) xaxis ="leading jet p_{T} [GeV/c]";
2086 }
2087
fceb275f 2088 fh1Jet1Pt = new TH1F(Form("fh1DJJet1Pt%s", fNameDJ.Data()), "", fNBinsJetPt, fJetPtMin, fJetPtMax);
2089 fh1Jet2Pt = new TH1F(Form("fh1DJJet2Pt%s", fNameDJ.Data()), "", fNBinsJetPt, fJetPtMin, fJetPtMax);
2090 fh1JetPt = new TH1F(Form("fh1DJJetPt%s", fNameDJ.Data()), "", fNBinsJetPt, fJetPtMin, fJetPtMax);
656dc810 2091
fceb275f 2092 fh2TrackPtJet1 = new TH2F(Form("fh2DJTrackPtJet1%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
2093 fh2TrackPtJet2 = new TH2F(Form("fh2DJTrackPtJet2%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
2094 fh2TrackPtJet = new TH2F(Form("fh2DJTrackPtJet%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
656dc810 2095
fceb275f 2096 fh2Xi1 = new TH2F(Form("fh2DJXi1%s", fNameDJ.Data()), "",nBins, min, max, fNBinsXi, fXiMin, fXiMax);
2097 fh2Xi2 = new TH2F(Form("fh2DJXi2%s", fNameDJ.Data()), "",nBins, min, max, fNBinsXi, fXiMin, fXiMax);
2098 fh2Xi = new TH2F(Form("fh2DJXi%s", fNameDJ.Data()), "",nBins, min, max, fNBinsXi, fXiMin, fXiMax);
656dc810 2099
fceb275f 2100 fh2Z1 = new TH2F(Form("fh2DJZ1%s", fNameDJ.Data()), "",nBins, min, max, fNBinsZ, fZMin, fZMax);
2101 fh2Z2 = new TH2F(Form("fh2DJZ2%s", fNameDJ.Data()), "",nBins, min, max, fNBinsZ, fZMin, fZMax);
2102 fh2Z = new TH2F(Form("fh2DJZ%s", fNameDJ.Data()), "",nBins, min, max, fNBinsZ, fZMin, fZMax);
656dc810 2103
fceb275f 2104 fh2Pt1 = new TH2F(Form("fh2DJPt1%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
2105 fh2Pt2 = new TH2F(Form("fh2DJPt2%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
2106 fh2Pt = new TH2F(Form("fh2DJPtZ%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
656dc810 2107
2108 AliAnalysisTaskFragmentationFunction::SetProperties(fh1Jet1Pt, "p_{T} [GeV/c]", "entries");
2109 AliAnalysisTaskFragmentationFunction::SetProperties(fh1Jet2Pt, "p_{T} [GeV/c]", "entries");
2110 AliAnalysisTaskFragmentationFunction::SetProperties(fh1JetPt, "p_{T} [GeV/c]", "entries");
2111
2112 AliAnalysisTaskFragmentationFunction::SetProperties(fh2TrackPtJet1, xaxis, "p_{T} [GeV/c]", "Entries");
2113 AliAnalysisTaskFragmentationFunction::SetProperties(fh2TrackPtJet2, xaxis, "p_{T} [GeV/c]", "Entries");
2114 AliAnalysisTaskFragmentationFunction::SetProperties(fh2TrackPtJet, xaxis, "p_{T} [GeV/c]", "Entries");
2115 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Xi1, xaxis, "#xi", "Entries");
2116 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Xi2, xaxis, "#xi", "Entries");
2117 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Xi, xaxis, "#xi", "Entries");
2118 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Z1, xaxis, "z", "Entries");
2119 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Z2, xaxis, "z", "Entries");
2120 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Z, xaxis, "z", "Entries");
2121 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Pt1, xaxis, "p_{T} [GeV/c]", "Entries");
2122 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Pt2, xaxis, "p_{T} [GeV/c]", "Entries");
2123 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Pt, xaxis, "p_{T} [GeV/c]", "Entries");
656dc810 2124}
2125
2126//________________________________________________________________________
2127void AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::FillDiJetFF(Int_t jetType, Float_t trackPt, Float_t jetPt, Double_t jetBin, Bool_t incrementJetPt)
2128{
fceb275f 2129 // fill DiJet FF
2130
656dc810 2131 if(jetType == 0)
2132 {
2133 if(incrementJetPt) fh1JetPt->Fill(jetPt);
2134
2135 fh2TrackPtJet->Fill(jetBin, trackPt);
2136
2137 Double_t z = trackPt / jetPt;
2138 Double_t xi = 0;
3af23c82 2139 if(z>0) xi = TMath::Log(1/z);
656dc810 2140
2141 fh2Xi->Fill(jetBin, xi);
2142 fh2Z->Fill(jetBin, z);
2143 }
2144 if(jetType == 1)
2145 {
2146 if(incrementJetPt) fh1Jet1Pt->Fill(jetPt);
2147
2148 fh2TrackPtJet1->Fill(jetBin, trackPt);
2149
2150 Double_t z = trackPt / jetPt;
2151 Double_t xi = 0;
3af23c82 2152 if(z>0) xi = TMath::Log(1/z);
656dc810 2153
2154 fh2Xi1->Fill(jetBin, xi);
2155 fh2Z1->Fill(jetBin, z);
2156 }
2157 if(jetType == 2)
2158 {
2159 if(incrementJetPt) fh1Jet2Pt->Fill(jetPt);
2160
2161 fh2TrackPtJet2->Fill(jetBin, trackPt);
2162
2163 Double_t z = trackPt / jetPt;
2164 Double_t xi = 0;
3af23c82 2165 if(z>0) xi = TMath::Log(1/z);
656dc810 2166
2167 fh2Xi2->Fill(jetBin, xi);
2168 fh2Z2->Fill(jetBin, z);
2169 }
2170
2171
2172}
2173
2174//________________________________________________________________________
2175void AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::AddToOutput(TList* list)const
2176{
fceb275f 2177 // add histos to list
2178
656dc810 2179 list->Add(fh1Jet1Pt);
2180 list->Add(fh1Jet2Pt);
2181 list->Add(fh1JetPt);
2182 list->Add(fh2TrackPtJet1);
2183 list->Add(fh2TrackPtJet2);
2184 list->Add(fh2TrackPtJet);
2185 list->Add(fh2Xi1);
2186 list->Add(fh2Xi2);
2187 list->Add(fh2Xi);
2188 list->Add(fh2Z1);
2189 list->Add(fh2Z2);
2190 list->Add(fh2Z);
2191}
2192
2193//______________________________________________________________________________________________________
2194AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::AliFragFuncQADiJetHistos(const char* name, Int_t kindSlices,
3af23c82 2195 Int_t nInvMass, Float_t invMassMin, Float_t invMassMax,
656dc810 2196 Int_t nJetPt, Float_t jetPtMin, Float_t jetPtMax,
3af23c82 2197 Int_t nDeltaPhi, Float_t deltaPhiMin, Float_t deltaPhiMax,
2198 Int_t nDeltaEta, Float_t deltaEtaMin, Float_t deltaEtaMax,
2199 Int_t nDeltaPt, Float_t deltaPtMin, Float_t deltaPtMax,
2200 Int_t nInBal, Float_t inBalMin, Float_t inBalMax)
656dc810 2201 : TObject()
2202 ,fKindSlices(kindSlices)
2203 ,fNBinsJetInvMass(nInvMass)
2204 ,fJetInvMassMin(invMassMin)
2205 ,fJetInvMassMax(invMassMax)
2206 ,fNBinsJetPt(nJetPt)
2207 ,fJetPtMin(jetPtMin)
2208 ,fJetPtMax(jetPtMax)
2209 ,fNBinsDeltaPhi(nDeltaPhi)
2210 ,fDeltaPhiMin(deltaPhiMin)
2211 ,fDeltaPhiMax(deltaPhiMax)
2212 ,fNBinsDeltaEta(nDeltaEta)
2213 ,fDeltaEtaMin(deltaEtaMin)
2214 ,fDeltaEtaMax(deltaEtaMax)
2215 ,fNBinsDeltaPt(nDeltaPt)
2216 ,fDeltaPtMin(deltaPtMin)
2217 ,fDeltaPtMax(deltaPtMax)
3af23c82 2218 ,fNBinsInBal(nInBal)
2219 ,fInBalMin(inBalMin)
2220 ,fInBalMax(inBalMax)
656dc810 2221 ,fh2InvMass(0)
2222 ,fh2DeltaPhi(0)
2223 ,fh2DeltaEta(0)
2224 ,fh2DeltaPt(0)
3af23c82 2225 ,fh2InBal(0)
fceb275f 2226 ,fNameQADJ(name)
656dc810 2227{
2228 // default constructor
2229
2230}
2231
2232//______________________________________________________________________________________________________
2233AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::AliFragFuncQADiJetHistos(const AliFragFuncQADiJetHistos& copy)
2234 : TObject()
2235 ,fKindSlices(copy.fKindSlices)
2236 ,fNBinsJetInvMass(copy.fNBinsJetInvMass)
2237 ,fJetInvMassMin(copy.fJetInvMassMin)
2238 ,fJetInvMassMax(copy.fJetInvMassMax)
2239 ,fNBinsJetPt(copy.fNBinsJetPt)
2240 ,fJetPtMin(copy.fJetPtMin)
2241 ,fJetPtMax(copy.fJetPtMax)
2242 ,fNBinsDeltaPhi(copy.fNBinsDeltaPhi)
2243 ,fDeltaPhiMin(copy.fDeltaPhiMin)
2244 ,fDeltaPhiMax(copy.fDeltaPhiMax)
2245 ,fNBinsDeltaEta(copy.fNBinsDeltaEta)
2246 ,fDeltaEtaMin(copy.fDeltaEtaMin)
2247 ,fDeltaEtaMax(copy.fDeltaEtaMax)
2248 ,fNBinsDeltaPt(copy.fNBinsDeltaPt)
2249 ,fDeltaPtMin(copy.fDeltaPtMin)
2250 ,fDeltaPtMax(copy.fDeltaPtMax)
3af23c82 2251 ,fNBinsInBal(copy.fNBinsInBal)
2252 ,fInBalMin(copy.fInBalMin)
2253 ,fInBalMax(copy.fInBalMax)
656dc810 2254 ,fh2InvMass(copy.fh2InvMass)
2255 ,fh2DeltaPhi(copy.fh2DeltaPhi)
2256 ,fh2DeltaEta(copy.fh2DeltaEta)
2257 ,fh2DeltaPt(copy.fh2DeltaPt)
3af23c82 2258 ,fh2InBal(copy.fh2InBal)
fceb275f 2259 ,fNameQADJ(copy.fNameQADJ)
656dc810 2260{
2261 // default constructor
2262
2263}
2264
2265//_______________________________________________________________________________________________________________________________________________________________
2266AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos& o)
2267{
2268 // assignment
2269
2270 if(this!=&o){
2271 TObject::operator=(o);
2272 fKindSlices = o.fKindSlices;
2273 fNBinsJetInvMass = o.fNBinsJetInvMass;
2274 fJetInvMassMin = o.fJetInvMassMin;
2275 fJetInvMassMax = o.fJetInvMassMax;
2276 fNBinsJetPt = o.fNBinsJetPt;
2277 fJetPtMin = o.fJetPtMin;
2278 fJetPtMax = o.fJetPtMax;
2279 fNBinsDeltaPhi = o.fNBinsDeltaPhi;
2280 fDeltaPhiMin = o.fDeltaPhiMin;
2281 fDeltaPhiMax = o.fDeltaPhiMax;
2282 fNBinsDeltaEta = o.fNBinsDeltaEta;
2283 fDeltaEtaMin = o.fDeltaEtaMin;
2284 fDeltaEtaMax = o.fDeltaEtaMax;
2285 fNBinsDeltaPt = o.fNBinsDeltaPt;
2286 fDeltaPtMin = o.fDeltaPtMin;
2287 fDeltaPtMax = o.fDeltaPtMax;
3af23c82 2288 fNBinsInBal = o.fNBinsInBal;
2289 fInBalMin = o.fInBalMin;
2290 fInBalMax = o.fInBalMax;
656dc810 2291 fh2InvMass = o.fh2InvMass;
2292 fh2DeltaPhi = o.fh2DeltaPhi;
2293 fh2DeltaEta = o.fh2DeltaEta;
2294 fh2DeltaPt = o.fh2DeltaPt;
3af23c82 2295 fh2InBal = o.fh2InBal;
fceb275f 2296 fNameQADJ = o.fNameQADJ;
656dc810 2297 }
2298
2299 return *this;
2300}
2301
2302//_________________________________________________________
2303AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::~AliFragFuncQADiJetHistos()
2304{
2305 // destructor
2306
2307 if(fh2InvMass) delete fh2InvMass;
2308 if(fh2DeltaPhi) delete fh2DeltaPhi;
2309 if(fh2DeltaEta) delete fh2DeltaEta;
2310 if(fh2DeltaPt) delete fh2DeltaPt;
3af23c82 2311 if(fh2InBal) delete fh2InBal;
656dc810 2312}
2313
2314//________________________________________________________________________
2315void AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::DefineQADiJetHistos()
2316{
fceb275f 2317 // define histos
2318
656dc810 2319 Int_t nBins = 0;
2320 Double_t min = 0.;
2321 Double_t max = 0.;
2322 const char *xaxis = "";
2323 if(fKindSlices == 1)
2324 {
2325 nBins = fNBinsJetInvMass;
2326 min = fJetInvMassMin;
2327 max = fJetInvMassMax;
2328 xaxis = "M_{JJ} [GeV]";
2329 }
2330 if(fKindSlices == 2 || fKindSlices == 3)
2331 {
2332 nBins = fNBinsJetPt;
2333 min = fJetPtMin;
2334 max = fJetPtMax;
2335 if(fKindSlices == 2) xaxis = "E_{Tmean} [GeV]";
2336 if(fKindSlices == 3) xaxis ="leading jet p_{T} [GeV/c]";
2337 }
2338
2339
fceb275f 2340 fh2InvMass = new TH2F(Form("fh2DJInvMassPositionCut%s", fNameQADJ.Data()), "",nBins, min, max, fNBinsJetInvMass, fJetInvMassMin, fJetInvMassMax);
2341 fh2DeltaPhi = new TH2F(Form("fh2DJDeltaPhiPositionCut%s", fNameQADJ.Data()), "",nBins, min, max, fNBinsDeltaPhi, fDeltaPhiMin, fDeltaPhiMax);
2342 fh2DeltaEta = new TH2F(Form("fh2DJDeltaEtaPositionCut%s", fNameQADJ.Data()), "",nBins, min, max, fNBinsDeltaEta, fDeltaEtaMin, fDeltaEtaMax);
2343 fh2DeltaPt = new TH2F(Form("fh2DJDeltaPtPositionCut%s", fNameQADJ.Data()), "",nBins, min, max, fNBinsDeltaPt, fDeltaPtMin, fDeltaPtMax);
3af23c82 2344 fh2InBal = new TH2F(Form("fh2DJInBalPositionCut%s", fNameQADJ.Data()), "",nBins, min, max, fNBinsInBal, fInBalMin, fInBalMax);
2345
656dc810 2346 AliAnalysisTaskFragmentationFunction::SetProperties(fh2InvMass, xaxis, "Invariant Mass", "Entries");
2347 AliAnalysisTaskFragmentationFunction::SetProperties(fh2DeltaPhi, xaxis, "#Delta #phi", "Entries");
2348 AliAnalysisTaskFragmentationFunction::SetProperties(fh2DeltaEta, xaxis, "#Delta #eta", "Entries");
2349 AliAnalysisTaskFragmentationFunction::SetProperties(fh2DeltaPt, xaxis, "#Delta p_{T}", "Entries");
3af23c82 2350 AliAnalysisTaskFragmentationFunction::SetProperties(fh2InBal, xaxis, "(p_{T}^{1}-p_{T}^{2})/(p_{T}^{1}+p_{T}^{2})", "Entries");
656dc810 2351
2352}
2353
2354//________________________________________________________________________
3af23c82 2355void AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::FillDiJetQA(Double_t invMass, Double_t deltaPhi, Double_t deltaEta,Double_t deltaPt, Double_t inbal, Double_t jetBin)
656dc810 2356{
fceb275f 2357 // fill dijet QA
2358
656dc810 2359 fh2InvMass->Fill(jetBin, invMass);
2360 fh2DeltaPhi->Fill(jetBin, deltaPhi);
2361 fh2DeltaEta->Fill(jetBin, deltaEta);
2362 fh2DeltaPt->Fill(jetBin, deltaPt);
3af23c82 2363 fh2InBal->Fill(jetBin, inbal);
656dc810 2364}
2365
2366//________________________________________________________________________
2367void AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::AddToOutput(TList* list)const
2368{
fceb275f 2369 // add histos to list
2370
656dc810 2371 list->Add(fh2InvMass);
2372 list->Add(fh2DeltaPhi);
2373 list->Add(fh2DeltaEta);
2374 list->Add(fh2DeltaPt);
3af23c82 2375 list->Add(fh2InBal);
656dc810 2376}
2377
2378//_________________________________________________________________________________
2379void AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::AddToOutput(TList* list) const
2380{
2381 // add histos to list
2382
2383 list->Add(fh2CosTheta);
67e37e80 2384 list->Add(fh2PtZ);
2385 list->Add(fh3ThetaZ);
2386 list->Add(fh3JtTheta);
2387 list->Add(fh3JtZ);
656dc810 2388
2389}
2390
1da9498b 2391//_________________________________________________________________________________
ac017ff3 2392Bool_t AliAnalysisTaskFragmentationFunction::Notify()
2393{
2394 //
2395 // Implemented Notify() to read the cross sections
2396 // and number of trials from pyxsec.root
c2658535 2397 // (taken from AliAnalysisTaskJetSpectrum2)
ac017ff3 2398 //
2399 TTree *tree = AliAnalysisManager::GetAnalysisManager()->GetTree();
c2658535 2400 Float_t xsection = 0;
2401 Float_t ftrials = 1;
2402
2403 fAvgTrials = 1;
ac017ff3 2404 if(tree){
2405 TFile *curfile = tree->GetCurrentFile();
2406 if (!curfile) {
2407 Error("Notify","No current file");
2408 return kFALSE;
2409 }
2410 if(!fh1Xsec||!fh1Trials){
2411 Printf("%s%d No Histogram fh1Xsec",(char*)__FILE__,__LINE__);
2412 return kFALSE;
2413 }
c2658535 2414 AliAnalysisHelperJetTasks::PythiaInfoFromFile(curfile->GetName(),xsection,ftrials);
ac017ff3 2415 fh1Xsec->Fill("<#sigma>",xsection);
c2658535 2416 // construct a poor man average trials
2417 Float_t nEntries = (Float_t)tree->GetTree()->GetEntries();
2418 if(ftrials>=nEntries && nEntries>0.)fAvgTrials = ftrials/nEntries;
ac017ff3 2419 }
67e37e80 2420
2421 // Set seed for backg study
2422 fRandom = new TRandom3();
2423 fRandom->SetSeed(0);
2424
ac017ff3 2425 return kTRUE;
2426}
2427
2428
2429
656dc810 2430//__________________________________________________________________
2431void AliAnalysisTaskFragmentationFunction::UserCreateOutputObjects()
2432{
2433 // create output objects
2434
2435 if(fDebug > 1) Printf("AliAnalysisTaskFragmentationFunction::UserCreateOutputObjects()");
2436
2437 // create list of tracks and jets
2438
2439 fTracksRec = new TList();
2440 fTracksRec->SetOwner(kFALSE);
2441
2442 fTracksRecCuts = new TList();
2443 fTracksRecCuts->SetOwner(kFALSE);
2444
2445 fTracksGen = new TList();
2446 fTracksGen->SetOwner(kFALSE);
2447
fe343c6b 2448 fTracksAODMCCharged = new TList();
2449 fTracksAODMCCharged->SetOwner(kFALSE);
2450
d5e8640d 2451 fTracksAODMCChargedSec = new TList();
2452 fTracksAODMCChargedSec->SetOwner(kFALSE);
2453
fe343c6b 2454 fTracksRecQualityCuts = new TList();
2455 fTracksRecQualityCuts->SetOwner(kFALSE);
2456
656dc810 2457 fJetsRec = new TList();
2458 fJetsRec->SetOwner(kFALSE);
44b235ce 2459 if(fBranchRecJets.Contains("KT") && fBckgSubMethod) fJetsRec->SetOwner(kTRUE);
656dc810 2460
2461 fJetsRecCuts = new TList();
2462 fJetsRecCuts->SetOwner(kFALSE);
44b235ce 2463 if(fBranchRecJets.Contains("KT") && fBckgSubMethod) fJetsRecCuts->SetOwner(kTRUE);
656dc810 2464
2465 fJetsGen = new TList();
2466 fJetsGen->SetOwner(kFALSE);
2467
fe343c6b 2468 fJetsRecEff = new TList();
2469 fJetsRecEff->SetOwner(kFALSE);
2470
39e2b057 2471 fJetsEmbedded = new TList();
2472 fJetsEmbedded->SetOwner(kFALSE);
2473
656dc810 2474
742ee86c 2475 if(fBckgMode &&
3170a3f8 2476 (fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters ||
2477 fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading ||
2478 fBckgType[3]==kBckgClustersOutLeading || fBckgType[4]==kBckgClustersOutLeading)){
742ee86c 2479
67e37e80 2480 fBckgJetsRec = new TList();
2481 fBckgJetsRec->SetOwner(kFALSE);
2482
2483 fBckgJetsRecCuts = new TList();
2484 fBckgJetsRecCuts->SetOwner(kFALSE);
2485
2486 fBckgJetsGen = new TList();
2487 fBckgJetsGen->SetOwner(kFALSE);
2488 }
656dc810 2489
2490 //
2491 // Create histograms / output container
2492 //
2493
2494 OpenFile(1);
2495 fCommonHistList = new TList();
b541fbca 2496 fCommonHistList->SetOwner(kTRUE);
2497
656dc810 2498 Bool_t oldStatus = TH1::AddDirectoryStatus();
2499 TH1::AddDirectory(kFALSE);
2500
2501
2502 // Histograms
2503 fh1EvtSelection = new TH1F("fh1EvtSelection", "Event Selection", 6, -0.5, 5.5);
3af23c82 2504 fh1EvtSelection->GetXaxis()->SetBinLabel(1,"ACCEPTED");
2505 fh1EvtSelection->GetXaxis()->SetBinLabel(2,"event selection: rejected");
2506 fh1EvtSelection->GetXaxis()->SetBinLabel(3,"event class: rejected");
2507 fh1EvtSelection->GetXaxis()->SetBinLabel(4,"vertex Ncontr: rejected");
2508 fh1EvtSelection->GetXaxis()->SetBinLabel(5,"vertex z: rejected");
2509 fh1EvtSelection->GetXaxis()->SetBinLabel(6,"vertex type: rejected");
2510
742ee86c 2511 fh1VertexNContributors = new TH1F("fh1VertexNContributors", "Vertex N contributors", 2500,-.5, 2499.5);
656dc810 2512 fh1VertexZ = new TH1F("fh1VertexZ", "Vertex z distribution", 30, -15., 15.);
3af23c82 2513 fh1EvtMult = new TH1F("fh1EvtMult","Event multiplicity, track pT cut > 150 MeV/c, |#eta| < 0.9",120,0.,12000.);
2514 fh1EvtCent = new TH1F("fh1EvtCent","centrality",100,0.,100.);
3170a3f8 2515 fh2TrackPtVsDCAXY = new TH2F("fh2TrackPtVsDCAXY","",400,-0.02,0.02,100,0.,10.);
2516 fh2TrackPtVsDCAZ = new TH2F("fh2TrackPtVsDCAZ","",100,-0.050,0.050,100,0.,10.);
2517
ac017ff3 2518 fh1Xsec = new TProfile("fh1Xsec","xsec from pyxsec.root",1,0,1);
2519 fh1Xsec->GetXaxis()->SetBinLabel(1,"<#sigma>");
2520 fh1Trials = new TH1F("fh1Trials","trials from pyxsec.root",1,0,1);
2521 fh1Trials->GetXaxis()->SetBinLabel(1,"#sum{ntrials}");
2522 fh1PtHard = new TH1F("fh1PtHard","PYTHIA Pt hard;p_{T,hard}",350,-.5,349.5);
2523 fh1PtHardTrials = new TH1F("fh1PtHardTrials","PYTHIA Pt hard weight with trials;p_{T,hard}",350,-.5,349.5);
2524
656dc810 2525 fh1nRecJetsCuts = new TH1F("fh1nRecJetsCuts","reconstructed jets per event",10,-0.5,9.5);
2526 fh1nGenJets = new TH1F("fh1nGenJets","generated jets per event",10,-0.5,9.5);
fe343c6b 2527 fh1nRecEffJets = new TH1F("fh1nRecEffJets","reconstruction effiency: jets per event",10,-0.5,9.5);
39e2b057 2528 fh1nEmbeddedJets = new TH1F("fh1nEmbeddedJets","embedded jets per event",10,-0.5,9.5);
2529
cb76764e 2530 fh2PtRecVsGenPrim = new TH2F("fh2PtRecVsGenPrim","rec vs gen pt",fQATrackNBinsPt,fQATrackPtMin,fQATrackPtMax,fQATrackNBinsPt,fQATrackPtMin,fQATrackPtMax);
d5e8640d 2531 fh2PtRecVsGenSec = new TH2F("fh2PtRecVsGenSec","rec vs gen pt",fQATrackNBinsPt,fQATrackPtMin,fQATrackPtMax,fQATrackNBinsPt,fQATrackPtMin,fQATrackPtMax);
fe343c6b 2532
39e2b057 2533
67e37e80 2534 // Background
2535 if(fBckgMode) {
3170a3f8 2536 if(fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters ||
2537 fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading ||
2538 fBckgType[3]==kBckgClustersOutLeading || fBckgType[4]==kBckgClustersOutLeading){
742ee86c 2539
67e37e80 2540 fh1nRecBckgJetsCuts = new TH1F("fh1nRecBckgJetsCuts","reconstructed background jets per event",10,-0.5,9.5);
2541 fh1nGenBckgJets = new TH1F("fh1nGenBckgJets","generated background jets per event",10,-0.5,9.5);
2542 }
1da9498b 2543
3170a3f8 2544 if(fBckgType[0]==kBckgPerp || fBckgType[1]==kBckgPerp || fBckgType[2]==kBckgPerp || fBckgType[3]==kBckgPerp || fBckgType[4]==kBckgPerp )
742ee86c 2545 fh1PerpMult = new TH1F("fh1PerpMult","Background multiplicity - Cone perpendicular to leading jet axis",500,0.,500.);
3170a3f8 2546 if(fBckgType[0]==kBckgASide || fBckgType[1]==kBckgASide || fBckgType[2]==kBckgASide || fBckgType[3]==kBckgASide || fBckgType[4]==kBckgASide)
742ee86c 2547 fh1ASideMult = new TH1F("fh1ASideMult","Background multiplicity - Cone in the away side of leading jet axis",500,0.,500.);
3170a3f8 2548 if(fBckgType[0]==kBckgASideWindow || fBckgType[1]==kBckgASideWindow || fBckgType[2]==kBckgASideWindow || fBckgType[3]==kBckgASideWindow || fBckgType[4]==kBckgASideWindow)
742ee86c 2549 fh1ASideWindowMult = new TH1F("fh1ASideWindowMult","Background multiplicity - Cone in the away side of leading jet axis",500,0.,500.);
3170a3f8 2550 if(fBckgType[0]==kBckgPerpWindow || fBckgType[1]==kBckgPerpWindow || fBckgType[2]==kBckgPerpWindow || fBckgType[3]==kBckgPerpWindow || fBckgType[4]==kBckgPerpWindow)
742ee86c 2551 fh1PerpWindowMult = new TH1F("fh1PerpWindowMult","Background multiplicity - Cone in the perp direction of leading jet axis",500,0.,500.);
3170a3f8 2552 if(fBckgType[0]==kBckgOutLJ || fBckgType[1]==kBckgOutLJ || fBckgType[2]==kBckgOutLJ || fBckgType[3]==kBckgOutLJ || fBckgType[4]==kBckgOutLJ)
742ee86c 2553 fh1OutLeadingMult = new TH1F("fh1OutLeadingMult","Background multiplicity - Cone outside leading jet",500,0,500.);
3170a3f8 2554 if(fBckgType[0]==kBckgOutLJStat || fBckgType[1]==kBckgOutLJStat || fBckgType[2]==kBckgOutLJStat || fBckgType[3]==kBckgOutLJStat || fBckgType[4]==kBckgOutLJStat)
742ee86c 2555 fh1OutLeadingStatMult = new TH1F("fh1OutLeadingStatMult","Background multiplicity - Cone outside leading jet",3000,0,3000.);
3170a3f8 2556 if(fBckgType[0]==kBckgOut2J || fBckgType[1]==kBckgOut2J || fBckgType[2]==kBckgOut2J || fBckgType[3]==kBckgOut2J || fBckgType[4]==kBckgOut2J)
742ee86c 2557 fh1Out2JetsMult = new TH1F("fh1Out2JetsMult","Background multiplicity - Cone outside 2 jets",500,0.,500.);
3170a3f8 2558 if(fBckgType[0]==kBckgOut3J || fBckgType[1]==kBckgOut3J || fBckgType[2]==kBckgOut3J || fBckgType[3]==kBckgOut3J || fBckgType[4]==kBckgOut3J)
742ee86c 2559 fh1Out3JetsMult = new TH1F("fh1Out3JetsMult","Background multiplicity - Cone outside 3 jets",500,0.,500.);
3170a3f8 2560 if(fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters)
742ee86c 2561 fh1MedianClustersMult = new TH1F("fh1MedianClustersMult","Background multiplicity - median cluster",500,0.,500.);
3170a3f8 2562 if(fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading || fBckgType[3]==kBckgClustersOutLeading
2563 || fBckgType[4]==kBckgClustersOutLeading)
742ee86c 2564 fh1OutClustersMult = new TH1F("fh1OutClustersMult","Background multiplicity - clusters outside leading jet",3000,0.,3000.);
2565 }
2566
39e2b057 2567 // embedding
2568 if(fBranchEmbeddedJets.Length()){
2569 fh1FractionPtEmbedded = new TH1F("fh1FractionPtEmbedded","",200,0,2);
2570 fh1IndexEmbedded = new TH1F("fh1IndexEmbedded","",11,-1,10);
2571 fh2DeltaPtVsJetPtEmbedded = new TH2F("fh2DeltaPtVsJetPtEmbedded","",250,0,250,200,-100,100);
2572 fh2DeltaPtVsRecJetPtEmbedded = new TH2F("fh2DeltaPtVsRecJetPtEmbedded","",250,0,250,200,-100,100);
2573 fh1DeltaREmbedded = new TH1F("fh1DeltaREmbedded","",50,0,0.5);
2574 fh1nEmbeddedJets = new TH1F("fh1nEmbeddedJets","embedded jets per event",10,-0.5,9.5);
2575 }
2576
2577 if(fEffMode){
2578 fh2ptVsDistNN_pt50_rec = new TH2F("fh2ptVsDistNN_pt50_rec","",200,0,0.2,500,0.,100);
2579 fh2ptVsDistNN_pt50_nonRec = new TH2F("fh2ptVsDistNN_pt50_nonRec","",200,0,0.2,500,0.,100);
2580 fh2ptVsDistNN_pt10_rec = new TH2F("fh2ptVsDistNN_pt10_rec","",200,0,0.2,500,0.,100);
2581 fh2ptVsDistNN_pt10_nonRec = new TH2F("fh2ptVsDistNN_pt10_nonRec","",200,0,0.2,500,0.,100);
2582 }
2583
3af23c82 2584 if(fQAMode){
2585 if(fQAMode&1){ // track QA
2586 fQATrackHistosRec = new AliFragFuncQATrackHistos("Rec", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2587 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2588 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2589 fQATrackHighPtThreshold);
2590 fQATrackHistosRecCuts = new AliFragFuncQATrackHistos("RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2591 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2592 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2593 fQATrackHighPtThreshold);
2594 fQATrackHistosGen = new AliFragFuncQATrackHistos("Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2595 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2596 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2597 fQATrackHighPtThreshold);
2598 }
656dc810 2599
3af23c82 2600 if(fQAMode&2){ // jet QA
2601 fQAJetHistosRec = new AliFragFuncQAJetHistos("Rec", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
2602 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
2603 fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
2604 fQAJetHistosRecCuts = new AliFragFuncQAJetHistos("RecCuts", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
2605 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
2606 fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
2607 fQAJetHistosRecCutsLeading = new AliFragFuncQAJetHistos("RecCutsLeading", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
2608 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
2609 fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
2610 fQAJetHistosGen = new AliFragFuncQAJetHistos("Gen", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
2611 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
2612 fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
2613 fQAJetHistosGenLeading = new AliFragFuncQAJetHistos("GenLeading", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
2614 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
2615 fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
2616 if(fEffMode) fQAJetHistosRecEffLeading = new AliFragFuncQAJetHistos("RecEffLeading", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
2617 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
2618 }
2619 } // end: QA
656dc810 2620
3af23c82 2621 if(fFFMode){
b541fbca 2622
3af23c82 2623 fFFHistosRecCuts = new AliFragFuncHistos("RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
656dc810 2624 fFFNBinsPt, fFFPtMin, fFFPtMax,
2625 fFFNBinsXi, fFFXiMin, fFFXiMax,
b541fbca 2626 fFFNBinsZ , fFFZMin , fFFZMax , fFFLogZBins);
3af23c82 2627 fFFHistosRecLeading = new AliFragFuncHistos("RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2628 fFFNBinsPt, fFFPtMin, fFFPtMax,
2629 fFFNBinsXi, fFFXiMin, fFFXiMax,
b541fbca 2630 fFFNBinsZ , fFFZMin , fFFZMax, fFFLogZBins);
3af23c82 2631 fFFHistosRecLeadingTrack = new AliFragFuncHistos("RecLeadingTrack", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2632 fFFNBinsPt, fFFPtMin, fFFPtMax,
2633 fFFNBinsXi, fFFXiMin, fFFXiMax,
b541fbca 2634 fFFNBinsZ , fFFZMin , fFFZMax, fFFLogZBins);
3af23c82 2635 fFFHistosGen = new AliFragFuncHistos("Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
656dc810 2636 fFFNBinsPt, fFFPtMin, fFFPtMax,
2637 fFFNBinsXi, fFFXiMin, fFFXiMax,
b541fbca 2638 fFFNBinsZ , fFFZMin , fFFZMax, fFFLogZBins);
3af23c82 2639 fFFHistosGenLeading = new AliFragFuncHistos("GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2640 fFFNBinsPt, fFFPtMin, fFFPtMax,
2641 fFFNBinsXi, fFFXiMin, fFFXiMax,
b541fbca 2642 fFFNBinsZ , fFFZMin , fFFZMax, fFFLogZBins);
3af23c82 2643 fFFHistosGenLeadingTrack = new AliFragFuncHistos("GenLeadingTrack", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2644 fFFNBinsPt, fFFPtMin, fFFPtMax,
2645 fFFNBinsXi, fFFXiMin, fFFXiMax,
b541fbca 2646 fFFNBinsZ , fFFZMin , fFFZMax, fFFLogZBins);
3af23c82 2647 } // end: FF
656dc810 2648
67e37e80 2649 if(fIJMode)
2650 {
2651 fIJHistosRecCuts = new AliFragFuncIntraJetHistos("RecCuts", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2652 fIJNBinsPt, fIJPtMin, fIJPtMax,
2653 fIJNBinsZ, fIJZMin, fIJZMax,
2654 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2655 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2656 fIJNBinsJt , fIJJtMin , fIJJtMax);
2657 fIJHistosRecLeading = new AliFragFuncIntraJetHistos("RecLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2658 fIJNBinsPt, fIJPtMin, fIJPtMax,
2659 fIJNBinsZ, fIJZMin, fIJZMax,
2660 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2661 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2662 fIJNBinsJt , fIJJtMin , fIJJtMax);
2663 fIJHistosRecLeadingTrack = new AliFragFuncIntraJetHistos("RecLeadingTrack", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2664 fIJNBinsPt, fIJPtMin, fIJPtMax,
2665 fIJNBinsZ, fIJZMin, fIJZMax,
2666 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2667 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2668 fIJNBinsJt , fIJJtMin , fIJJtMax);
2669 fIJHistosGen = new AliFragFuncIntraJetHistos("Gen", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
656dc810 2670 fIJNBinsPt, fIJPtMin, fIJPtMax,
2671 fIJNBinsZ, fIJZMin, fIJZMax,
2672 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2673 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2674 fIJNBinsJt , fIJJtMin , fIJJtMax);
67e37e80 2675 fIJHistosGenLeading = new AliFragFuncIntraJetHistos("GenLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2676 fIJNBinsPt, fIJPtMin, fIJPtMax,
2677 fIJNBinsZ, fIJZMin, fIJZMax,
2678 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2679 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2680 fIJNBinsJt , fIJJtMin , fIJJtMax);
2681 fIJHistosGenLeadingTrack = new AliFragFuncIntraJetHistos("GenLeadingTrack", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2682 fIJNBinsPt, fIJPtMin, fIJPtMax,
2683 fIJNBinsZ, fIJZMin, fIJZMax,
2684 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2685 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2686 fIJNBinsJt , fIJJtMin , fIJJtMax);
3af23c82 2687 } // end: intra-jet
67e37e80 2688
3af23c82 2689 if(fDJMode){
2690 if(fDJMode&1){
2691 fFFDiJetHistosRecCuts = new AliFragFuncDiJetHistos("RecCuts", fDiJetKindBins,
2692 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2693 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2694 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2695 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2696 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2697 fFFDiJetHistosRecLeading = new AliFragFuncDiJetHistos("RecLeading", fDiJetKindBins,
2698 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2699 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2700 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2701 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2702 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2703 fFFDiJetHistosRecLeadingTrack = new AliFragFuncDiJetHistos("RecLeadingTrack", fDiJetKindBins,
2704 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2705 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2706 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2707 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2708 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2709
2710 fFFDiJetHistosGen = new AliFragFuncDiJetHistos("Gen", fDiJetKindBins,
2711 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2712 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2713 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2714 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2715 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2716 fFFDiJetHistosGenLeading = new AliFragFuncDiJetHistos("GenLeading", fDiJetKindBins,
2717 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2718 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2719 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2720 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2721 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2722 fFFDiJetHistosGenLeadingTrack = new AliFragFuncDiJetHistos("GenLeadingTrack", fDiJetKindBins,
2723 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2724 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2725 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2726 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2727 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2728 }
2729
2730 if(fDJMode&2){
2731 fQADiJetHistosRecCuts = new AliFragFuncQADiJetHistos("RecCuts", fDiJetKindBins,
2732 fQADiJetNBinsInvMass, fQADiJetInvMassMin, fQADiJetInvMassMax,
2733 fQADiJetNBinsJetPt, fQADiJetJetPtMin, fQADiJetJetPtMax,
2734 fQADiJetNBinsDeltaPhi, fQADiJetDeltaPhiMin, fQADiJetDeltaPhiMax ,
2735 fQADiJetNBinsDeltaEta, fQADiJetDeltaEtaMin, fQADiJetDeltaEtaMax ,
2736 fQADiJetNBinsDeltaPt, fQADiJetDeltaPtMin, fQADiJetDeltaPtMax,
2737 fQADiJetNBinsInBal, fQADiJetInBalMin, fQADiJetInBalMax);
2738 fQADiJetHistosGen = new AliFragFuncQADiJetHistos("Gen", fDiJetKindBins,
2739 fQADiJetNBinsInvMass, fQADiJetInvMassMin, fQADiJetInvMassMax,
2740 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2741 fQADiJetNBinsDeltaPhi, fQADiJetDeltaPhiMin, fQADiJetDeltaPhiMax,
2742 fQADiJetNBinsDeltaEta, fQADiJetDeltaEtaMin, fQADiJetDeltaEtaMax,
2743 fQADiJetNBinsDeltaPt, fQADiJetDeltaPtMin, fQADiJetDeltaPtMax,
2744 fQADiJetNBinsInBal, fQADiJetInBalMin, fQADiJetInBalMax);
2745 }
2746 } // end: di-jet
656dc810 2747
cb76764e 2748 // efficiency
2749
3af23c82 2750 if(fEffMode){
2751 if(fQAMode&1){
2752 fQATrackHistosRecEffGen = new AliFragFuncQATrackHistos("RecEffGen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2753 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2754 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2755 fQATrackHighPtThreshold);
2756
2757 fQATrackHistosRecEffRec = new AliFragFuncQATrackHistos("RecEffRec", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2758 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2759 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2760 fQATrackHighPtThreshold);
cb76764e 2761
d5e8640d 2762 fQATrackHistosSecRec = new AliFragFuncQATrackHistos("SecRec", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2763 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2764 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2765 fQATrackHighPtThreshold);
2766
cb76764e 2767
3af23c82 2768 Int_t nBinsResponseSinglePt[2] = {fFFNBinsPt, fFFNBinsPt};
2769 Double_t binMinResponseSinglePt[2] = {fFFPtMin, fFFPtMin};
2770 Double_t binMaxResponseSinglePt[2] = {fFFPtMax, fFFPtMax};
2771 const char* labelsResponseSinglePt[2] = {"rec p_{T} [GeV/c]", "gen p_{T} [GeV/c]"};
2772
2773 fhnResponseSinglePt = new THnSparseF("fhnResponseSinglePt","track pt gen : track pt rec",2,
2774 nBinsResponseSinglePt,binMinResponseSinglePt,binMaxResponseSinglePt);
2775
2776 AliAnalysisTaskFragmentationFunction::SetProperties(fhnResponseSinglePt,2,labelsResponseSinglePt);
39e2b057 2777
2778 // TH2F inv pt diff
2779 fh2SingleInvPtRecMnGenVsPtGen = new TH2F("fh2SingleInvPtRecMnGenVsPtGen","",fQATrackNBinsPt,fQATrackPtMin,fQATrackPtMax,200,-1,1);
3af23c82 2780 }
2781 if(fFFMode){
2782 fFFHistosRecEffGen = new AliFragFuncHistos("RecEffGen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2783 fFFNBinsPt, fFFPtMin, fFFPtMax,
2784 fFFNBinsXi, fFFXiMin, fFFXiMax,
2785 fFFNBinsZ , fFFZMin , fFFZMax);
2786
2787 fFFHistosRecEffRec = new AliFragFuncHistos("RecEffRec", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2788 fFFNBinsPt, fFFPtMin, fFFPtMax,
2789 fFFNBinsXi, fFFXiMin, fFFXiMax,
2790 fFFNBinsZ , fFFZMin , fFFZMax);
2791
d5e8640d 2792 fFFHistosSecRec = new AliFragFuncHistos("SecRec", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2793 fFFNBinsPt, fFFPtMin, fFFPtMax,
2794 fFFNBinsXi, fFFXiMin, fFFXiMax,
2795 fFFNBinsZ , fFFZMin , fFFZMax);
2796
3af23c82 2797
2798 Int_t nBinsResponseJetTrackPt[3] = {fFFNBinsJetPt,fFFNBinsPt,fFFNBinsPt};
2799 Double_t binMinResponseJetTrackPt[3] = {fFFJetPtMin,fFFPtMin, fFFPtMin};
2800 Double_t binMaxResponseJetTrackPt[3] = {fFFJetPtMax,fFFPtMax,fFFPtMax};
2801 const char* labelsResponseJetTrackPt[3] = { "jet p_{T} [GeV/c]","rec p_{T} [GeV/c]", "gen p_{T} [GeV/c]"};
2802
2803 fhnResponseJetTrackPt = new THnSparseF("fhnResponseJetTrackPt","jet pt:track pt rec:track pt gen",3,
2804 nBinsResponseJetTrackPt,binMinResponseJetTrackPt,binMaxResponseJetTrackPt);
2805
2806 AliAnalysisTaskFragmentationFunction::SetProperties(fhnResponseJetTrackPt,3,labelsResponseJetTrackPt);
2807
2808 Int_t nBinsResponseJetZ[3] = {fFFNBinsJetPt, fFFNBinsZ,fFFNBinsZ};
2809 Double_t binMinResponseJetZ[3] = {fFFJetPtMin, fFFZMin, fFFZMin};
2810 Double_t binMaxResponseJetZ[3] = {fFFJetPtMax, fFFZMax, fFFZMax};
2811 const char* labelsResponseJetZ[3] = { "jet p_{T} [GeV/c]","rec z","gen z"};
2812
2813 fhnResponseJetZ = new THnSparseF("fhnResponseJetZ","jet pt:track pt rec:track pt gen",3,
2814 nBinsResponseJetZ,binMinResponseJetZ,binMaxResponseJetZ);
2815
2816 AliAnalysisTaskFragmentationFunction::SetProperties(fhnResponseJetZ,3,labelsResponseJetZ);
2817
2818 Int_t nBinsResponseJetXi[3] = {fFFNBinsJetPt, fFFNBinsXi,fFFNBinsXi};
2819 Double_t binMinResponseJetXi[3] = {fFFJetPtMin, fFFXiMin, fFFXiMin};
2820 Double_t binMaxResponseJetXi[3] = {fFFJetPtMax, fFFXiMax, fFFXiMax};
2821 const char* labelsResponseJetXi[3] = { "jet p_{T} [GeV/c]","rec xi","gen xi"};
2822
2823 fhnResponseJetXi = new THnSparseF("fhnResponseJetXi","jet pt:track xi rec:track xi gen",3,
2824 nBinsResponseJetXi,binMinResponseJetXi,binMaxResponseJetXi);
2825
2826 AliAnalysisTaskFragmentationFunction::SetProperties(fhnResponseJetXi,3,labelsResponseJetXi);
2827
2828 }
2829 } // end: efficiency
67e37e80 2830
1da9498b 2831 // Background
2832 if(fBckgMode){
67e37e80 2833 // Track QA
3170a3f8 2834 TString title[5];
2835 for(Int_t i=0; i<5; i++){
67e37e80 2836 if(fBckgType[i]==kBckgPerp) title[i]="Perp";
3af23c82 2837 else if(fBckgType[i]==kBckgPerpWindow) title[i]="PerpW";
2838 else if(fBckgType[i]==kBckgASide) title[i]="ASide";
2839 else if(fBckgType[i]==kBckgASideWindow) title[i]="ASideW";
67e37e80 2840 else if(fBckgType[i]==kBckgOutLJ) title[i]="OutLeadingJet";
2841 else if(fBckgType[i]==kBckgOut2J) title[i]="Out2Jets";
2842 else if(fBckgType[i]==kBckgOut3J) title[i]="Out3Jets";
2843 else if(fBckgType[i]==kBckgOutAJ) title[i]="AllJets";
2844 else if(fBckgType[i]==kBckgOutLJStat) title[i]="OutLeadingJetStat";
2845 else if(fBckgType[i]==kBckgOut2JStat) title[i]="Out2JetsStat";
2846 else if(fBckgType[i]==kBckgOut3JStat) title[i]="Out3JetsStat";
2847 else if(fBckgType[i]==kBckgOutAJStat) title[i]="AllJetsStat";
742ee86c 2848 else if(fBckgType[i]==kBckgClustersOutLeading) title[i]="OutClusters";
2849 else if(fBckgType[i]==kBckgClusters) title[i]="MedianClusters";
67e37e80 2850 else printf("Please chose background method number %d!",i);
2851 }
2852
3af23c82 2853 if(fQAMode&1){
2854 fQABckgHisto0RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[0]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2855 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2856 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2857 fQATrackHighPtThreshold);
2858 fQABckgHisto0Gen = new AliFragFuncQATrackHistos("Bckg"+title[0]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2859 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2860 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2861 fQATrackHighPtThreshold);
2862 fQABckgHisto1RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[1]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2863 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2864 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2865 fQATrackHighPtThreshold);
2866 fQABckgHisto1Gen = new AliFragFuncQATrackHistos("Bckg"+title[1]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2867 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2868 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2869 fQATrackHighPtThreshold);
2870 fQABckgHisto2RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[2]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2871 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2872 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2873 fQATrackHighPtThreshold);
2874 fQABckgHisto2Gen = new AliFragFuncQATrackHistos("Bckg"+title[2]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2875 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2876 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2877 fQATrackHighPtThreshold);
742ee86c 2878 fQABckgHisto3RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[3]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2879 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2880 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2881 fQATrackHighPtThreshold);
2882 fQABckgHisto3Gen = new AliFragFuncQATrackHistos("Bckg"+title[3]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2883 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2884 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2885 fQATrackHighPtThreshold);
3170a3f8 2886 fQABckgHisto4RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[4]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2887 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2888 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2889 fQATrackHighPtThreshold);
2890 fQABckgHisto4Gen = new AliFragFuncQATrackHistos("Bckg"+title[4]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2891 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2892 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2893 fQATrackHighPtThreshold);
2894
2895
3af23c82 2896 } // end: background QA
2897
2898 if(fFFMode){
2899 // outside leading jet or 2 jets or more
2900 fFFBckgHisto0RecCuts = new AliFragFuncHistos("Bckg"+title[0]+"RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2901 fFFNBinsPt, fFFPtMin, fFFPtMax,
2902 fFFNBinsXi, fFFXiMin, fFFXiMax,
2903 fFFNBinsZ , fFFZMin , fFFZMax);
2904 fFFBckgHisto0RecLeading = new AliFragFuncHistos("Bckg"+title[0]+"RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2905 fFFNBinsPt, fFFPtMin, fFFPtMax,
2906 fFFNBinsXi, fFFXiMin, fFFXiMax,
2907 fFFNBinsZ , fFFZMin , fFFZMax);
2908 fFFBckgHisto0Gen = new AliFragFuncHistos("Bckg"+title[0]+"Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2909 fFFNBinsPt, fFFPtMin, fFFPtMax,
2910 fFFNBinsXi, fFFXiMin, fFFXiMax,
2911 fFFNBinsZ , fFFZMin , fFFZMax);
2912 fFFBckgHisto0GenLeading = new AliFragFuncHistos("Bckg"+title[0]+"GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2913 fFFNBinsPt, fFFPtMin, fFFPtMax,
2914 fFFNBinsXi, fFFXiMin, fFFXiMax,
2915 fFFNBinsZ , fFFZMin , fFFZMax);
2916
2917 fFFBckgHisto1RecCuts = new AliFragFuncHistos("Bckg"+title[1]+"RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2918 fFFNBinsPt, fFFPtMin, fFFPtMax,
2919 fFFNBinsXi, fFFXiMin, fFFXiMax,
2920 fFFNBinsZ , fFFZMin , fFFZMax);
2921 fFFBckgHisto1RecLeading = new AliFragFuncHistos("Bckg"+title[1]+"RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2922 fFFNBinsPt, fFFPtMin, fFFPtMax,
2923 fFFNBinsXi, fFFXiMin, fFFXiMax,
2924 fFFNBinsZ , fFFZMin , fFFZMax);
2925 fFFBckgHisto1Gen = new AliFragFuncHistos("Bckg"+title[1]+"Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2926 fFFNBinsPt, fFFPtMin, fFFPtMax,
2927 fFFNBinsXi, fFFXiMin, fFFXiMax,
2928 fFFNBinsZ , fFFZMin , fFFZMax);
2929 fFFBckgHisto1GenLeading = new AliFragFuncHistos("Bckg"+title[1]+"GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2930 fFFNBinsPt, fFFPtMin, fFFPtMax,
2931 fFFNBinsXi, fFFXiMin, fFFXiMax,
2932 fFFNBinsZ , fFFZMin , fFFZMax);
2933
2934 fFFBckgHisto2RecCuts = new AliFragFuncHistos("Bckg"+title[2]+"RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2935 fFFNBinsPt, fFFPtMin, fFFPtMax,
2936 fFFNBinsXi, fFFXiMin, fFFXiMax,
2937 fFFNBinsZ , fFFZMin , fFFZMax);
2938 fFFBckgHisto2RecLeading = new AliFragFuncHistos("Bckg"+title[2]+"RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2939 fFFNBinsPt, fFFPtMin, fFFPtMax,
2940 fFFNBinsXi, fFFXiMin, fFFXiMax,
2941 fFFNBinsZ , fFFZMin , fFFZMax);
2942 fFFBckgHisto2Gen = new AliFragFuncHistos("Bckg"+title[2]+"Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2943 fFFNBinsPt, fFFPtMin, fFFPtMax,
2944 fFFNBinsXi, fFFXiMin, fFFXiMax,
2945 fFFNBinsZ , fFFZMin , fFFZMax);
2946 fFFBckgHisto2GenLeading = new AliFragFuncHistos("Bckg"+title[2]+"GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2947 fFFNBinsPt, fFFPtMin, fFFPtMax,
2948 fFFNBinsXi, fFFXiMin, fFFXiMax,
2949 fFFNBinsZ , fFFZMin , fFFZMax);
742ee86c 2950 fFFBckgHisto3RecCuts = new AliFragFuncHistos("Bckg"+title[3]+"RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2951 fFFNBinsPt, fFFPtMin, fFFPtMax,
2952 fFFNBinsXi, fFFXiMin, fFFXiMax,
2953 fFFNBinsZ , fFFZMin , fFFZMax);
2954 fFFBckgHisto3RecLeading = new AliFragFuncHistos("Bckg"+title[3]+"RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2955 fFFNBinsPt, fFFPtMin, fFFPtMax,
2956 fFFNBinsXi, fFFXiMin, fFFXiMax,
2957 fFFNBinsZ , fFFZMin , fFFZMax);
2958 fFFBckgHisto3Gen = new AliFragFuncHistos("Bckg"+title[3]+"Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2959 fFFNBinsPt, fFFPtMin, fFFPtMax,
2960 fFFNBinsXi, fFFXiMin, fFFXiMax,
2961 fFFNBinsZ , fFFZMin , fFFZMax);
2962 fFFBckgHisto3GenLeading = new AliFragFuncHistos("Bckg"+title[3]+"GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2963 fFFNBinsPt, fFFPtMin, fFFPtMax,
2964 fFFNBinsXi, fFFXiMin, fFFXiMax,
2965 fFFNBinsZ , fFFZMin , fFFZMax);
3170a3f8 2966 fFFBckgHisto4RecCuts = new AliFragFuncHistos("Bckg"+title[4]+"RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2967 fFFNBinsPt, fFFPtMin, fFFPtMax,
2968 fFFNBinsXi, fFFXiMin, fFFXiMax,
2969 fFFNBinsZ , fFFZMin , fFFZMax);
2970 fFFBckgHisto4RecLeading = new AliFragFuncHistos("Bckg"+title[4]+"RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2971 fFFNBinsPt, fFFPtMin, fFFPtMax,
2972 fFFNBinsXi, fFFXiMin, fFFXiMax,
2973 fFFNBinsZ , fFFZMin , fFFZMax);
2974 fFFBckgHisto4Gen = new AliFragFuncHistos("Bckg"+title[4]+"Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2975 fFFNBinsPt, fFFPtMin, fFFPtMax,
2976 fFFNBinsXi, fFFXiMin, fFFXiMax,
2977 fFFNBinsZ , fFFZMin , fFFZMax);
2978 fFFBckgHisto4GenLeading = new AliFragFuncHistos("Bckg"+title[4]+"GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2979 fFFNBinsPt, fFFPtMin, fFFPtMax,
2980 fFFNBinsXi, fFFXiMin, fFFXiMax,
2981 fFFNBinsZ , fFFZMin , fFFZMax);
2982
3af23c82 2983 } // end: background FF
67e37e80 2984
2985 if(fIJMode){
2986 fIJBckgHisto0RecCuts = new AliFragFuncIntraJetHistos("Bckg"+title[0]+"RecCuts", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
1da9498b 2987 fIJNBinsPt, fIJPtMin, fIJPtMax,
2988 fIJNBinsZ, fIJZMin, fIJZMax,
2989 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2990 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2991 fIJNBinsJt , fIJJtMin , fIJJtMax);
67e37e80 2992 fIJBckgHisto0RecLeading = new AliFragFuncIntraJetHistos("Bckg"+title[0]+"RecLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
1da9498b 2993 fIJNBinsPt, fIJPtMin, fIJPtMax,
2994 fIJNBinsZ, fIJZMin, fIJZMax,
2995 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2996 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2997 fIJNBinsJt , fIJJtMin , fIJJtMax);
67e37e80 2998 fIJBckgHisto0Gen = new AliFragFuncIntraJetHistos("Bckg"+title[0]+"Gen", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
1da9498b 2999 fIJNBinsPt, fIJPtMin, fIJPtMax,
3000 fIJNBinsZ, fIJZMin, fIJZMax,
3001 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
3002 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
3003 fIJNBinsJt , fIJJtMin , fIJJtMax);
67e37e80 3004 fIJBckgHisto0GenLeading = new AliFragFuncIntraJetHistos("Bckg"+title[0]+"GenLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
3005 fIJNBinsPt, fIJPtMin, fIJPtMax,
1da9498b 3006 fIJNBinsZ, fIJZMin, fIJZMax,
3007 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
3008 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
3009 fIJNBinsJt , fIJJtMin , fIJJtMax);
67e37e80 3010
3011
3012 fIJBckgHisto1RecCuts = new AliFragFuncIntraJetHistos("Bckg"+title[1]+"RecCuts", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
1da9498b 3013 fIJNBinsPt, fIJPtMin, fIJPtMax,
3014 fIJNBinsZ, fIJZMin, fIJZMax,
3015 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
3016 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
3017 fIJNBinsJt , fIJJtMin , fIJJtMax);
67e37e80 3018 fIJBckgHisto1RecLeading = new AliFragFuncIntraJetHistos("Bckg"+title[1]+"RecLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
1da9498b 3019 fIJNBinsPt, fIJPtMin, fIJPtMax,
67e37e80 3020 fIJNBinsZ, fIJZMin, fIJZMax,
3021 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
3022 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
3023 fIJNBinsJt , fIJJtMin , fIJJtMax);
3024 fIJBckgHisto1Gen = new AliFragFuncIntraJetHistos("Bckg"+title[1]+"Gen", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
1da9498b 3025 fIJNBinsPt, fIJPtMin, fIJPtMax,
3026 fIJNBinsZ, fIJZMin, fIJZMax,
3027 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
3028 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
3029 fIJNBinsJt , fIJJtMin , fIJJtMax);
67e37e80 3030 fIJBckgHisto1GenLeading = new AliFragFuncIntraJetHistos("Bckg"+title[1]+"GenLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
3031 fIJNBinsPt, fIJPtMin, fIJPtMax,
3032 fIJNBinsZ, fIJZMin, fIJZMax,
3033 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
3034 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
3035 fIJNBinsJt , fIJJtMin , fIJJtMax);
3036
3037 fIJBckgHisto2RecCuts = new AliFragFuncIntraJetHistos("Bckg"+title[2]+"RecCuts", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
1da9498b 3038 fIJNBinsPt, fIJPtMin, fIJPtMax,
3039 fIJNBinsZ, fIJZMin, fIJZMax,
3040 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
3041 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
3042 fIJNBinsJt , fIJJtMin , fIJJtMax);
67e37e80 3043 fIJBckgHisto2RecLeading = new AliFragFuncIntraJetHistos("Bckg"+title[2]+"RecLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
1da9498b 3044 fIJNBinsPt, fIJPtMin, fIJPtMax,
3045 fIJNBinsZ, fIJZMin, fIJZMax,
3046 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
3047 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
3048 fIJNBinsJt , fIJJtMin , fIJJtMax);
67e37e80 3049 fIJBckgHisto2Gen = new AliFragFuncIntraJetHistos("Bckg"+title[2]+"Gen", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
3050 fIJNBinsPt, fIJPtMin, fIJPtMax,
3051 fIJNBinsZ, fIJZMin, fIJZMax,
3052 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
3053 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
3054 fIJNBinsJt , fIJJtMin , fIJJtMax);
3055 fIJBckgHisto2GenLeading = new AliFragFuncIntraJetHistos("Bckg"+title[2]+"GenLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
3056 fIJNBinsPt, fIJPtMin, fIJPtMax,
3057 fIJNBinsZ, fIJZMin, fIJZMax,
3058 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
3059 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
3060 fIJNBinsJt , fIJJtMin , fIJJtMax);
3af23c82 3061 } // end: background intra-jet
3062 } // end: background
3063
3064 if(fPhiCorrMode){
3065 fPhiCorrHistosJetArea = new AliFragFuncQATrackHistos("JetArea", fPhiCorrNBinsPt, fPhiCorrPtMin, fPhiCorrPtMax,
3066 fPhiCorrNBinsEta, fPhiCorrEtaMin, fPhiCorrEtaMax,
3067 fPhiCorrNBinsPhi, fPhiCorrPhiMin, fPhiCorrPhiMax,
3068 fQATrackHighPtThreshold);
3069
3070 fPhiCorrHistosTransverseArea = new AliFragFuncQATrackHistos("TransverseArea", fPhiCorrNBinsPt, fPhiCorrPtMin, fPhiCorrPtMax,
3071 fPhiCorrNBinsEta, fPhiCorrEtaMin, fPhiCorrEtaMax,
3072 fPhiCorrNBinsPhi, fPhiCorrPhiMin, fPhiCorrPhiMax,
3073 fQATrackHighPtThreshold);
3074
3075 fPhiCorrHistosAwayArea = new AliFragFuncQATrackHistos("AwayArea", fPhiCorrNBinsPt, fPhiCorrPtMin, fPhiCorrPtMax,
3076 fPhiCorrNBinsEta, fPhiCorrEtaMin, fPhiCorrEtaMax,
3077 fPhiCorrNBinsPhi, fPhiCorrPhiMin, fPhiCorrPhiMax,
3078 fQATrackHighPtThreshold);
3079 } // end: phi correlation
656dc810 3080
3af23c82 3081
3082 // ____________ define histograms ____________________
3083
3084 if(fQAMode){
3085 if(fQAMode&1){ // track QA
3086 fQATrackHistosRec->DefineHistos();
3087 fQATrackHistosRecCuts->DefineHistos();
3088 fQATrackHistosGen->DefineHistos();
3089 }
656dc810 3090
3af23c82 3091 if(fQAMode&2){ // jet QA
3092 fQAJetHistosRec->DefineHistos();
3093 fQAJetHistosRecCuts->DefineHistos();
3094 fQAJetHistosRecCutsLeading->DefineHistos();
3095 fQAJetHistosGen->DefineHistos();
3096 fQAJetHistosGenLeading->DefineHistos();
3097 if(fEffMode) fQAJetHistosRecEffLeading->DefineHistos();
3098 }
3099 }
656dc810 3100
3af23c82 3101 if(fFFMode){
3102 fFFHistosRecCuts->DefineHistos();
3103 fFFHistosRecLeading->DefineHistos();
3104 fFFHistosRecLeadingTrack->DefineHistos();
3105 fFFHistosGen->DefineHistos();
3106 fFFHistosGenLeading->DefineHistos();
3107 fFFHistosGenLeadingTrack->DefineHistos();
3108 }
656dc810 3109
67e37e80 3110 if(fIJMode){
3111 fIJHistosRecCuts->DefineHistos();
3112 fIJHistosRecLeading->DefineHistos();
3113 fIJHistosRecLeadingTrack->DefineHistos();
3114 fIJHistosGen->DefineHistos();
3115 fIJHistosGenLeading->DefineHistos();
3116 fIJHistosGenLeadingTrack->DefineHistos();
3117 }
3118
3af23c82 3119 if(fDJMode){
3120 if(fDJMode&1){
3121 fFFDiJetHistosRecCuts->DefineDiJetHistos();
3122 fFFDiJetHistosRecLeading->DefineDiJetHistos();
3123 fFFDiJetHistosRecLeadingTrack->DefineDiJetHistos();
3124 fFFDiJetHistosGen->DefineDiJetHistos();
3125 fFFDiJetHistosGenLeading->DefineDiJetHistos();
3126 fFFDiJetHistosGenLeadingTrack->DefineDiJetHistos();
3127 }
3128
3129 if(fDJMode&2){
3130 fQADiJetHistosRecCuts->DefineQADiJetHistos();
3131 fQADiJetHistosGen->DefineQADiJetHistos();
3132 }
3133 } // end: di-jet
656dc810 3134
3af23c82 3135 if(fEffMode){
3136 if(fQAMode&1){
3137 fQATrackHistosRecEffGen->DefineHistos();
3138 fQATrackHistosRecEffRec->DefineHistos();
d5e8640d 3139 fQATrackHistosSecRec->DefineHistos();
3af23c82 3140 }
3141 if(fFFMode){
3142 fFFHistosRecEffGen->DefineHistos();
3143 fFFHistosRecEffRec->DefineHistos();
d5e8640d 3144 fFFHistosSecRec->DefineHistos();
3af23c82 3145 }
3146 } // end: efficiency
cb76764e 3147
1da9498b 3148 // Background
3149 if(fBckgMode){
3af23c82 3150 if(fFFMode){
3151 fFFBckgHisto0RecCuts->DefineHistos();
3152 fFFBckgHisto0RecLeading->DefineHistos();
3153 fFFBckgHisto0Gen->DefineHistos();
3154 fFFBckgHisto0GenLeading->DefineHistos();
3155 fFFBckgHisto1RecCuts->DefineHistos();
3156 fFFBckgHisto1RecLeading->DefineHistos();
3157 fFFBckgHisto1Gen->DefineHistos();
3158 fFFBckgHisto1GenLeading->DefineHistos();
3159 fFFBckgHisto2RecCuts->DefineHistos();
3160 fFFBckgHisto2RecLeading->DefineHistos();
3161 fFFBckgHisto2Gen->DefineHistos();
3162 fFFBckgHisto2GenLeading->DefineHistos();
742ee86c 3163 fFFBckgHisto3RecCuts->DefineHistos();
3164 fFFBckgHisto3RecLeading->DefineHistos();
3165 fFFBckgHisto3Gen->DefineHistos();
3166 fFFBckgHisto3GenLeading->DefineHistos();
3170a3f8 3167 fFFBckgHisto4RecCuts->DefineHistos();
3168 fFFBckgHisto4RecLeading->DefineHistos();
3169 fFFBckgHisto4Gen->DefineHistos();
3170 fFFBckgHisto4GenLeading->DefineHistos();
3af23c82 3171 }
3172
67e37e80 3173 if(fIJMode){
3174 fIJBckgHisto0RecCuts->DefineHistos();
3175 fIJBckgHisto0RecLeading->DefineHistos();
3176 fIJBckgHisto0Gen->DefineHistos();
3177 fIJBckgHisto0GenLeading->DefineHistos();
3178 fIJBckgHisto1RecCuts->DefineHistos();
3179 fIJBckgHisto1RecLeading->DefineHistos();
3180 fIJBckgHisto1Gen->DefineHistos();
3181 fIJBckgHisto1GenLeading->DefineHistos();
3182 fIJBckgHisto2RecCuts->DefineHistos();
3183 fIJBckgHisto2RecLeading->DefineHistos();
3184 fIJBckgHisto2Gen->DefineHistos();
3185 fIJBckgHisto2GenLeading->DefineHistos();
3186 }
3187
3af23c82 3188 if(fQAMode&1){
3189 fQABckgHisto0RecCuts->DefineHistos();
3190 fQABckgHisto0Gen->DefineHistos();
3191 fQABckgHisto1RecCuts->DefineHistos();
3192 fQABckgHisto1Gen->DefineHistos();
3193 fQABckgHisto2RecCuts->DefineHistos();
3194 fQABckgHisto2Gen->DefineHistos();
742ee86c 3195 fQABckgHisto3RecCuts->DefineHistos();
3196 fQABckgHisto3Gen->DefineHistos();
3170a3f8 3197 fQABckgHisto4RecCuts->DefineHistos();
3198 fQABckgHisto4Gen->DefineHistos();
3af23c82 3199 }
3200 } // end: background
1da9498b 3201
3af23c82 3202 if(fPhiCorrMode){
3203 fPhiCorrHistosJetArea->DefineHistos();
3204 fPhiCorrHistosTransverseArea->DefineHistos();
3205 fPhiCorrHistosAwayArea->DefineHistos();
3206 }
3207
fb03edbe 3208 Bool_t genJets = (fJetTypeGen != kJetsUndef) ? kTRUE : kFALSE;
3209 Bool_t genTracks = (fTrackTypeGen != kTrackUndef) ? kTRUE : kFALSE;
3210 Bool_t recJetsEff = (fJetTypeRecEff != kJetsUndef) ? kTRUE : kFALSE;
3211
3af23c82 3212 fCommonHistList->Add(fh1EvtSelection);
3213 fCommonHistList->Add(fh1EvtMult);
3214 fCommonHistList->Add(fh1EvtCent);
3170a3f8 3215 fCommonHistList->Add(fh2TrackPtVsDCAXY);
3216 fCommonHistList->Add(fh2TrackPtVsDCAZ);
3af23c82 3217 fCommonHistList->Add(fh1VertexNContributors);
3218 fCommonHistList->Add(fh1VertexZ);
3219 fCommonHistList->Add(fh1nRecJetsCuts);
3220 if(genJets && genTracks){
3221 fCommonHistList->Add(fh1Xsec);
3222 fCommonHistList->Add(fh1Trials);
3223 fCommonHistList->Add(fh1PtHard);
3224 fCommonHistList->Add(fh1PtHardTrials);
3225 if(genJets) fCommonHistList->Add(fh1nGenJets);
3226 }
fb03edbe 3227
3af23c82 3228 // FF histograms
3229 if(fFFMode){
656dc810 3230 fFFHistosRecCuts->AddToOutput(fCommonHistList);
3231 fFFHistosRecLeading->AddToOutput(fCommonHistList);
3232 fFFHistosRecLeadingTrack->AddToOutput(fCommonHistList);
3af23c82 3233 if(genJets && genTracks){
3234 fCommonHistList->Add(fh1Xsec);
3235 fCommonHistList->Add(fh1Trials);
3236 fCommonHistList->Add(fh1PtHard);
3237 fCommonHistList->Add(fh1PtHardTrials);
3238 if(genJets) fCommonHistList->Add(fh1nGenJets);
3239
3240 fFFHistosGen->AddToOutput(fCommonHistList);
3241 fFFHistosGenLeading->AddToOutput(fCommonHistList);
3242 fFFHistosGenLeadingTrack->AddToOutput(fCommonHistList);
3243 }
3244 }
fb03edbe 3245
3af23c82 3246 // Background
3247 if(fBckgMode){
3248 if(fFFMode){
67e37e80 3249 fFFBckgHisto0RecCuts->AddToOutput(fCommonHistList);
3250 fFFBckgHisto0RecLeading->AddToOutput(fCommonHistList);
3251 fFFBckgHisto1RecCuts->AddToOutput(fCommonHistList);
3252 fFFBckgHisto1RecLeading->AddToOutput(fCommonHistList);
3253 fFFBckgHisto2RecCuts->AddToOutput(fCommonHistList);
3254 fFFBckgHisto2RecLeading->AddToOutput(fCommonHistList);
742ee86c 3255 fFFBckgHisto3RecCuts->AddToOutput(fCommonHistList);
3256 fFFBckgHisto3RecLeading->AddToOutput(fCommonHistList);
3170a3f8 3257 fFFBckgHisto4RecCuts->AddToOutput(fCommonHistList);
3258 fFFBckgHisto4RecLeading->AddToOutput(fCommonHistList);
3259
3af23c82 3260 if(genJets && genTracks){
3261 fFFBckgHisto0Gen->AddToOutput(fCommonHistList);
3262 fFFBckgHisto0GenLeading->AddToOutput(fCommonHistList);
3263 fFFBckgHisto1Gen->AddToOutput(fCommonHistList);
3264 fFFBckgHisto1GenLeading->AddToOutput(fCommonHistList);
3265 fFFBckgHisto2Gen->AddToOutput(fCommonHistList);
3266 fFFBckgHisto2GenLeading->AddToOutput(fCommonHistList);
742ee86c 3267 fFFBckgHisto3Gen->AddToOutput(fCommonHistList);
3268 fFFBckgHisto3GenLeading->AddToOutput(fCommonHistList);
3170a3f8 3269 fFFBckgHisto4Gen->AddToOutput(fCommonHistList);
3270 fFFBckgHisto4GenLeading->AddToOutput(fCommonHistList);
3af23c82 3271 }
3272 }
3273
3274 if(fQAMode&1){
67e37e80 3275 fQABckgHisto0RecCuts->AddToOutput(fCommonHistList);
3276 fQABckgHisto1RecCuts->AddToOutput(fCommonHistList);
3277 fQABckgHisto2RecCuts->AddToOutput(fCommonHistList);
742ee86c 3278 fQABckgHisto3RecCuts->AddToOutput(fCommonHistList);
3170a3f8 3279 fQABckgHisto4RecCuts->AddToOutput(fCommonHistList);
3af23c82 3280 if(genJets && genTracks){
3281 fQABckgHisto0Gen->AddToOutput(fCommonHistList);
3282 fQABckgHisto1Gen->AddToOutput(fCommonHistList);
3283 fQABckgHisto2Gen->AddToOutput(fCommonHistList);
742ee86c 3284 fQABckgHisto3Gen->AddToOutput(fCommonHistList);
3170a3f8 3285 fQABckgHisto4Gen->AddToOutput(fCommonHistList);
3af23c82 3286 }
1da9498b 3287 }
3288
3170a3f8 3289 if(fBckgType[0]==kBckgOutLJ || fBckgType[1]==kBckgOutLJ || fBckgType[2]==kBckgOutLJ || fBckgType[3]==kBckgOutLJ || fBckgType[4]==kBckgOutLJ)
3af23c82 3290 fCommonHistList->Add(fh1OutLeadingMult);
3170a3f8 3291 if(fBckgType[0]==kBckgOutLJStat || fBckgType[1]==kBckgOutLJStat || fBckgType[2]==kBckgOutLJStat || fBckgType[3]==kBckgOutLJStat || fBckgType[4]==kBckgOutLJStat)
742ee86c 3292 fCommonHistList->Add(fh1OutLeadingStatMult);
3170a3f8 3293 if(fBckgType[0]==kBckgPerp || fBckgType[1]==kBckgPerp || fBckgType[2]==kBckgPerp || fBckgType[3]==kBckgPerp || fBckgType[4]==kBckgPerp)
3af23c82 3294 fCommonHistList->Add(fh1PerpMult);
3170a3f8 3295 if(fBckgType[0]==kBckgASide || fBckgType[1]==kBckgASide || fBckgType[2]==kBckgASide || fBckgType[3]==kBckgASide || fBckgType[4]==kBckgASide)
3af23c82 3296 fCommonHistList->Add(fh1ASideMult);
3170a3f8 3297 if(fBckgType[0]==kBckgASideWindow || fBckgType[1]==kBckgASideWindow || fBckgType[2]==kBckgASideWindow || fBckgType[3]==kBckgASideWindow || fBckgType[4]==kBckgASideWindow)
3af23c82 3298 fCommonHistList->Add(fh1ASideWindowMult);
3170a3f8 3299 if(fBckgType[0]==kBckgPerpWindow || fBckgType[1]==kBckgPerpWindow || fBckgType[2]==kBckgPerpWindow || fBckgType[3]==kBckgPerpWindow || fBckgType[4]==kBckgPerpWindow)
3af23c82 3300 fCommonHistList->Add(fh1PerpWindowMult);
3170a3f8 3301 if(fBckgType[0]==kBckgOut2J || fBckgType[1]==kBckgOut2J || fBckgType[2]==kBckgOut2J || fBckgType[3]==kBckgOut2J || fBckgType[4]==kBckgOut2J)
3af23c82 3302 fCommonHistList->Add(fh1Out2JetsMult);
3170a3f8 3303 if(fBckgType[0]==kBckgOut3J || fBckgType[1]==kBckgOut3J || fBckgType[2]==kBckgOut3J || fBckgType[3]==kBckgOut3J || fBckgType[4]==kBckgOut3J)
3af23c82 3304 fCommonHistList->Add(fh1Out3JetsMult);
3170a3f8 3305 if(fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters)
742ee86c 3306 fCommonHistList->Add(fh1MedianClustersMult);
3170a3f8 3307 if(fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading
3308 || fBckgType[3]==kBckgClustersOutLeading || fBckgType[4]==kBckgClustersOutLeading)
742ee86c 3309 fCommonHistList->Add(fh1OutClustersMult);
656dc810 3310 }
3af23c82 3311
39e2b057 3312
3313 if(fBranchEmbeddedJets.Length()){
3314 fCommonHistList->Add(fh1FractionPtEmbedded);
3315 fCommonHistList->Add(fh1IndexEmbedded);
3316 fCommonHistList->Add(fh2DeltaPtVsJetPtEmbedded);
3317 fCommonHistList->Add(fh2DeltaPtVsRecJetPtEmbedded);
3318 fCommonHistList->Add(fh1DeltaREmbedded);
3319 fCommonHistList->Add(fh1nEmbeddedJets);
3320 }
3321
3322 if(fEffMode){
3323 fCommonHistList->Add(fh2ptVsDistNN_pt50_rec);
3324 fCommonHistList->Add(fh2ptVsDistNN_pt50_nonRec);
3325 fCommonHistList->Add(fh2ptVsDistNN_pt10_rec);
3326 fCommonHistList->Add(fh2ptVsDistNN_pt10_nonRec);
3327 }
3328
3af23c82 3329 // QA
3330 if(fQAMode){
3331 if(fQAMode&1){ // track QA
3332 fQATrackHistosRec->AddToOutput(fCommonHistList);
3333 fQATrackHistosRecCuts->AddToOutput(fCommonHistList);
3334 if(genTracks) fQATrackHistosGen->AddToOutput(fCommonHistList);
fb03edbe 3335 }
fe343c6b 3336
3af23c82 3337 if(fQAMode&2){ // jet QA
3338 fQAJetHistosRec->AddToOutput(fCommonHistList);
3339 fQAJetHistosRecCuts->AddToOutput(fCommonHistList);
3340 fQAJetHistosRecCutsLeading->AddToOutput(fCommonHistList);
3341 if(recJetsEff && fEffMode) fQAJetHistosRecEffLeading->AddToOutput(fCommonHistList);
3342 if(genJets){
3343 fQAJetHistosGen->AddToOutput(fCommonHistList);
3344 fQAJetHistosGenLeading->AddToOutput(fCommonHistList);
3345 }
67e37e80 3346 }
656dc810 3347 }
3af23c82 3348
742ee86c 3349 if(fBckgMode &&
3170a3f8 3350 (fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters ||
3351 fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading ||
3352 fBckgType[3]==kBckgClustersOutLeading || fBckgType[4]==kBckgClustersOutLeading)) {
3af23c82 3353 fCommonHistList->Add(fh1nRecBckgJetsCuts);
3354 if(genJets) fCommonHistList->Add(fh1nGenBckgJets);
656dc810 3355 }
3af23c82 3356
3357 // phi correlation
3358 if(fPhiCorrMode){
742ee86c 3359 fPhiCorrHistosJetArea->AddToOutput(fCommonHistList);
3360 fPhiCorrHistosTransverseArea->AddToOutput(fCommonHistList);
3361 fPhiCorrHistosAwayArea->AddToOutput(fCommonHistList);
3af23c82 3362 }
3363
3364 // intra-jet
3365 if(fIJMode){
3366 fIJHistosRecCuts->AddToOutput(fCommonHistList);
3367 fIJHistosRecLeading->AddToOutput(fCommonHistList);
3368 fIJHistosRecLeadingTrack->AddToOutput(fCommonHistList);
3369
3370 // Background
3371 if(fBckgMode){
3372 fIJBckgHisto0RecCuts->AddToOutput(fCommonHistList);
3373 fIJBckgHisto0RecLeading->AddToOutput(fCommonHistList);
3374 fIJBckgHisto1RecCuts->AddToOutput(fCommonHistList);
3375 fIJBckgHisto1RecLeading->AddToOutput(fCommonHistList);
3376 fIJBckgHisto2RecCuts->AddToOutput(fCommonHistList);
3377 fIJBckgHisto2RecLeading->AddToOutput(fCommonHistList);
3378 }
3379
3380 if(genJets && genTracks){
3381 fIJHistosGen->AddToOutput(fCommonHistList);
3382 fIJHistosGenLeading->AddToOutput(fCommonHistList);
3383 fIJHistosGenLeadingTrack->AddToOutput(fCommonHistList);
1da9498b 3384
67e37e80 3385 // Background
3386 if(fBckgMode){
3af23c82 3387 fIJBckgHisto0Gen->AddToOutput(fCommonHistList);
3388 fIJBckgHisto0GenLeading->AddToOutput(fCommonHistList);
3389 fIJBckgHisto1Gen->AddToOutput(fCommonHistList);
3390 fIJBckgHisto1GenLeading->AddToOutput(fCommonHistList);
3391 fIJBckgHisto2Gen->AddToOutput(fCommonHistList);
3392 fIJBckgHisto2GenLeading->AddToOutput(fCommonHistList);
67e37e80 3393 }
3af23c82 3394 } // end: gen
3395 } // end: intra-jet
3396
3397 if(fDJMode){
3398 if(fDJMode&1){
3399 fFFDiJetHistosRecCuts->AddToOutput(fCommonHistList);
3400 fFFDiJetHistosRecLeading->AddToOutput(fCommonHistList);
3401 fFFDiJetHistosRecLeadingTrack->AddToOutput(fCommonHistList);
67e37e80 3402 if(genJets && genTracks){
3af23c82 3403 fFFDiJetHistosGen->AddToOutput(fCommonHistList);
fb03edbe 3404 fFFDiJetHistosGenLeading->AddToOutput(fCommonHistList);
3405 fFFDiJetHistosGenLeadingTrack->AddToOutput(fCommonHistList);
3af23c82 3406 }
3407 } // end: di-jet
3408 if(fDJMode&2){
3409 fQADiJetHistosRecCuts->AddToOutput(fCommonHistList);
3410 if(genJets && genTracks){
3411 fQADiJetHistosGen->AddToOutput(fCommonHistList);
3412 }
3413 } // end: di-jet QA
3414 } // end: di-jet
3415
3416 if(fEffMode && recJetsEff && genTracks){
3417 if(fQAMode&1){
cb76764e 3418 fQATrackHistosRecEffGen->AddToOutput(fCommonHistList);
3419 fQATrackHistosRecEffRec->AddToOutput(fCommonHistList);
d5e8640d 3420 fQATrackHistosSecRec->AddToOutput(fCommonHistList);
3af23c82 3421 fCommonHistList->Add(fhnResponseSinglePt);
39e2b057 3422 fCommonHistList->Add(fh2SingleInvPtRecMnGenVsPtGen);
3af23c82 3423 }
3424 if(fFFMode){
cb76764e 3425 fFFHistosRecEffGen->AddToOutput(fCommonHistList);
3426 fFFHistosRecEffRec->AddToOutput(fCommonHistList);
d5e8640d 3427 fFFHistosSecRec->AddToOutput(fCommonHistList);
3af23c82 3428 fCommonHistList->Add(fhnResponseJetTrackPt);
3429 fCommonHistList->Add(fhnResponseJetZ);
3430 fCommonHistList->Add(fhnResponseJetXi);
fb03edbe 3431 }
3af23c82 3432 fCommonHistList->Add(fh1nRecEffJets);
3433 fCommonHistList->Add(fh2PtRecVsGenPrim);
d5e8640d 3434 fCommonHistList->Add(fh2PtRecVsGenSec);
656dc810 3435 }
3af23c82 3436
656dc810 3437
3438 // =========== Switch on Sumw2 for all histos ===========
3439 for (Int_t i=0; i<fCommonHistList->GetEntries(); ++i){
3440 TH1 *h1 = dynamic_cast<TH1*>(fCommonHistList->At(i));
3441 if (h1) h1->Sumw2();
3af23c82 3442 else{
3443 THnSparse *hnSparse = dynamic_cast<THnSparse*>(fCommonHistList->At(i));
3444 if(hnSparse) hnSparse->Sumw2();
3445 }
656dc810 3446 }
3447
3448 TH1::AddDirectory(oldStatus);
39e2b057 3449
3450 PostData(1, fCommonHistList);
b541fbca 3451
656dc810 3452}
3453
3454//_______________________________________________
3455void AliAnalysisTaskFragmentationFunction::Init()
3456{
3457 // Initialization
3458 if(fDebug > 1) Printf("AliAnalysisTaskFragmentationFunction::Init()");
3459
3460}
3461
3462//_____________________________________________________________
3463void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *)
3464{
3465 // Main loop
3466 // Called for each event
3467 if(fDebug > 1) Printf("AliAnalysisTaskFragmentationFunction::UserExec()");
3468
3469
3470 if(fDebug > 1) Printf("Analysis event #%5d", (Int_t) fEntry);
b541fbca 3471
656dc810 3472 // Trigger selection
656dc810 3473 AliInputEventHandler* inputHandler = (AliInputEventHandler*)
3474 ((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler());
b541fbca 3475
3476 if(!(inputHandler->IsEventSelected() & fEvtSelectionMask)){
3af23c82 3477 fh1EvtSelection->Fill(1.);
656dc810 3478 if (fDebug > 1 ) Printf(" Trigger Selection: event REJECTED ... ");
3479 PostData(1, fCommonHistList);
3480 return;
656dc810 3481 }
b541fbca 3482
656dc810 3483 fESD = dynamic_cast<AliESDEvent*>(InputEvent());
3484 if(!fESD){
3485 if(fDebug>3) Printf("%s:%d ESDEvent not found in the input", (char*)__FILE__,__LINE__);
3486 }
3487
3488 fMCEvent = MCEvent();
3489 if(!fMCEvent){
3490 if(fDebug>3) Printf("%s:%d MCEvent not found in the input", (char*)__FILE__,__LINE__);
3491 }
3492
3493 // get AOD event from input/ouput
3494 TObject* handler = AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler();
3495 if( handler && handler->InheritsFrom("AliAODInputHandler") ) {
3496 fAOD = ((AliAODInputHandler*)handler)->GetEvent();
d5e8640d 3497 if(fUseAODInputJets) fAODJets = fAOD;
656dc810 3498 if (fDebug > 1) Printf("%s:%d AOD event from input", (char*)__FILE__,__LINE__);
3499 }
3500 else {
3501 handler = AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler();
3502 if( handler && handler->InheritsFrom("AliAODHandler") ) {
d5e8640d 3503 fAOD = ((AliAODHandler*)handler)->GetAOD();
3504 fAODJets = fAOD;
656dc810 3505 if (fDebug > 1) Printf("%s:%d AOD event from output", (char*)__FILE__,__LINE__);
3506 }
3507 }
3508
d5e8640d 3509 if(!fAODJets && !fUseAODInputJets){ // case we have AOD in input & output and want jets from output
3510 TObject* outHandler = AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler();
3511 if( outHandler && outHandler->InheritsFrom("AliAODHandler") ) {
3512 fAODJets = ((AliAODHandler*)outHandler)->GetAOD();
3513 if (fDebug > 1) Printf("%s:%d jets from output AOD", (char*)__FILE__,__LINE__);
3514 }
3515 }
3516
40445651 3517 if(fNonStdFile.Length()!=0){
3518 // case we have an AOD extension - fetch the jets from the extended output
3519
3520 AliAODHandler *aodH = dynamic_cast<AliAODHandler*>(AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler());
3521 fAODExtension = (aodH?aodH->GetExtension(fNonStdFile.Data()):0);
3522 if(!fAODExtension){
3523 if(fDebug>1)Printf("AODExtension not found for %s",fNonStdFile.Data());
3524 }
3525 }
3526
656dc810 3527 if(!fAOD){
3528 Printf("%s:%d AODEvent not found", (char*)__FILE__,__LINE__);
3529 return;
3530 }
d5e8640d 3531 if(!fAODJets){
3532 Printf("%s:%d AODEvent with jet branch not found", (char*)__FILE__,__LINE__);
3533 return;
3534 }
3535
656dc810 3536
3af23c82 3537 // event selection **************************************************
3538 // *** event class ***
3539 Double_t centPercent = -1;
3540 if(fEventClass>0){
3541 Int_t cl = 0;
3542 if(handler->InheritsFrom("AliAODInputHandler")){
3543 // since it is not supported by the helper task define own classes
3544 centPercent = fAOD->GetHeader()->GetCentrality();
3545 cl = 1;
3546 if(centPercent>10) cl = 2;
3547 if(centPercent>30) cl = 3;
3548 if(centPercent>50) cl = 4;
3549 }
3550 else {
3551 cl = AliAnalysisHelperJetTasks::EventClass();
39e2b057 3552 if(fESD) centPercent = fESD->GetCentrality()->GetCentralityPercentile("V0M"); // retrieve value 'by hand'
3af23c82 3553 }
3554
3555 if(cl!=fEventClass){
3556 // event not in selected event class, reject event
3557 if (fDebug > 1) Printf("%s:%d event not in selected event class: event REJECTED ...",(char*)__FILE__,__LINE__);
3558 fh1EvtSelection->Fill(2.);
3559 PostData(1, fCommonHistList);
3560 return;
3561 }
3562 }
44b235ce 3563
3af23c82 3564 // *** vertex cut ***
656dc810 3565 AliAODVertex* primVtx = fAOD->GetPrimaryVertex();
3566 Int_t nTracksPrim = primVtx->GetNContributors();
3567 fh1VertexNContributors->Fill(nTracksPrim);
3568
39e2b057 3569
656dc810 3570 if (fDebug > 1) Printf("%s:%d primary vertex selection: %d", (char*)__FILE__,__LINE__,nTracksPrim);
3571 if(!nTracksPrim){
3572 if (fDebug > 1) Printf("%s:%d primary vertex selection: event REJECTED...",(char*)__FILE__,__LINE__);
3af23c82 3573 fh1EvtSelection->Fill(3.);
656dc810 3574 PostData(1, fCommonHistList);
3575 return;
3576 }
3af23c82 3577
656dc810 3578 fh1VertexZ->Fill(primVtx->GetZ());
3579
3af23c82 3580 if(TMath::Abs(primVtx->GetZ())>fMaxVertexZ){
656dc810 3581 if (fDebug > 1) Printf("%s:%d primary vertex z = %f: event REJECTED...",(char*)__FILE__,__LINE__,primVtx->GetZ());
3af23c82 3582 fh1EvtSelection->Fill(4.);
656dc810 3583 PostData(1, fCommonHistList);
3584 return;
3585 }
3af23c82 3586
656dc810 3587 TString primVtxName(primVtx->GetName());
3588
3589 if(primVtxName.CompareTo("TPCVertex",TString::kIgnoreCase) == 1){
3590 if (fDebug > 1) Printf("%s:%d primary vertex selection: TPC vertex, event REJECTED...",(char*)__FILE__,__LINE__);
3af23c82 3591 fh1EvtSelection->Fill(5.);
656dc810 3592 PostData(1, fCommonHistList);
3593 return;
3594 }
3af23c82 3595
3596 if (fDebug > 1) Printf("%s:%d event ACCEPTED ...",(char*)__FILE__,__LINE__);
3597 fh1EvtSelection->Fill(0.);
3598 fh1EvtCent->Fill(centPercent);
ac017ff3 3599
3600
3601 //___ get MC information __________________________________________________________________
3602
b541fbca 3603 fh1Trials->Fill("#sum{ntrials}",fAvgTrials);
3604
ac017ff3 3605 Double_t ptHard = 0.;
3606 Double_t nTrials = 1; // trials for MC trigger weight for real data
b541fbca 3607
3e1c1eee 3608 if(fMCEvent){
39e2b057 3609 AliGenEventHeader* genHeader = fMCEvent->GenEventHeader();
5fde4a38 3610
39e2b057 3611 if(genHeader){
3612
3613 AliGenPythiaEventHeader* pythiaGenHeader = dynamic_cast<AliGenPythiaEventHeader*>(genHeader);
3614 AliGenHijingEventHeader* hijingGenHeader = 0x0;
3615
3616 if(pythiaGenHeader){
3617 if(fDebug>3) Printf("%s:%d pythiaGenHeader found", (char*)__FILE__,__LINE__);
3618 nTrials = pythiaGenHeader->Trials();
3619 ptHard = pythiaGenHeader->GetPtHard();
3620
3621 fh1PtHard->Fill(ptHard);
3622 fh1PtHardTrials->Fill(ptHard,nTrials);
3623
3624
3625 } else { // no pythia, hijing?
3626
3627 if(fDebug>3) Printf("%s:%d no pythiaGenHeader found", (char*)__FILE__,__LINE__);
3628
3629 hijingGenHeader = dynamic_cast<AliGenHijingEventHeader*>(genHeader);
3630 if(!hijingGenHeader){
3631 Printf("%s:%d no pythiaGenHeader or hjingGenHeader found", (char*)__FILE__,__LINE__);
3632 } else {
3633 if(fDebug>3) Printf("%s:%d hijingGenHeader found", (char*)__FILE__,__LINE__);
3634 }
3635 }
3636
b541fbca 3637 //fh1Trials->Fill("#sum{ntrials}",fAvgTrials);
cb883243 3638 }
39e2b057 3639
5fde4a38 3640 }
656dc810 3641
656dc810 3642 //___ fetch jets __________________________________________________________________________
44b235ce 3643
656dc810 3644 Int_t nJ = GetListOfJets(fJetsRec, kJetsRec);
3645 Int_t nRecJets = 0;
3646 if(nJ>=0) nRecJets = fJetsRec->GetEntries();
3647 if(fDebug>2)Printf("%s:%d Selected Rec jets: %d %d",(char*)__FILE__,__LINE__,nJ,nRecJets);
3648 if(nJ != nRecJets) Printf("%s:%d Mismatch Selected Rec Jets: %d %d",(char*)__FILE__,__LINE__,nJ,nRecJets);
3649
3650 Int_t nJCuts = GetListOfJets(fJetsRecCuts, kJetsRecAcceptance);
3651 Int_t nRecJetsCuts = 0;
3652 if(nJCuts>=0) nRecJetsCuts = fJetsRecCuts->GetEntries();
3653 if(fDebug>2)Printf("%s:%d Selected Rec jets after cuts: %d %d",(char*)__FILE__,__LINE__,nJCuts,nRecJetsCuts);
3654 if(nRecJetsCuts != nJCuts) Printf("%s:%d Mismatch selected Rec jets after cuts: %d %d",(char*)__FILE__,__LINE__,nJCuts,nRecJetsCuts);
3655 fh1nRecJetsCuts->Fill(nRecJetsCuts);
3656
656dc810 3657 if(fJetTypeGen==kJetsKine || fJetTypeGen == kJetsKineAcceptance) fJetsGen->SetOwner(kTRUE); // kine aod jets allocated on heap, delete them with TList::Clear()
39e2b057 3658
656dc810 3659 Int_t nJGen = GetListOfJets(fJetsGen, fJetTypeGen);
3660 Int_t nGenJets = 0;
3661 if(nJGen>=0) nGenJets = fJetsGen->GetEntries();
3662 if(fDebug>2)Printf("%s:%d Selected Gen jets: %d %d",(char*)__FILE__,__LINE__,nJGen,nGenJets);
39e2b057 3663
656dc810 3664 if(nJGen != nGenJets) Printf("%s:%d Mismatch selected Gen jets: %d %d",(char*)__FILE__,__LINE__,nJGen,nGenJets);
3665 fh1nGenJets->Fill(nGenJets);
3666
3667
fe343c6b 3668 if(fJetTypeRecEff==kJetsKine || fJetTypeRecEff == kJetsKineAcceptance) fJetsRecEff->SetOwner(kTRUE); // kine aod jets allocated on heap, delete them with TList::Clear()
3669 Int_t nJRecEff = GetListOfJets(fJetsRecEff, fJetTypeRecEff);
3670 Int_t nRecEffJets = 0;
3671 if(nJRecEff>=0) nRecEffJets = fJetsRecEff->GetEntries();
3672 if(fDebug>2)Printf("%s:%d Selected RecEff jets: %d %d",(char*)__FILE__,__LINE__,nJRecEff,nRecEffJets);
3673 if(nJRecEff != nRecEffJets) Printf("%s:%d Mismatch selected RecEff jets: %d %d",(char*)__FILE__,__LINE__,nJRecEff,nRecEffJets);
3674 fh1nRecEffJets->Fill(nRecEffJets);
3675
39e2b057 3676
3677 Int_t nEmbeddedJets = 0;
3678 TArrayI iEmbeddedMatchIndex;
3679 TArrayF fEmbeddedPtFraction;
3680
3681
3682 if(fBranchEmbeddedJets.Length()){
3683 Int_t nJEmbedded = GetListOfJets(fJetsEmbedded, kJetsEmbedded);
3684 if(nJEmbedded>=0) nEmbeddedJets = fJetsEmbedded->GetEntries();
3685 if(fDebug>2)Printf("%s:%d Selected Embedded jets: %d %d",(char*)__FILE__,__LINE__,nJEmbedded,nEmbeddedJets);
3686 if(nJEmbedded != nEmbeddedJets) Printf("%s:%d Mismatch Selected Embedded Jets: %d %d",(char*)__FILE__,__LINE__,nJEmbedded,nEmbeddedJets);
3687 fh1nEmbeddedJets->Fill(nEmbeddedJets);
3688
3689 Float_t maxDist = 0.3;
3690
3691 iEmbeddedMatchIndex.Set(nEmbeddedJets);
3692 fEmbeddedPtFraction.Set(nEmbeddedJets);
3693
3694 iEmbeddedMatchIndex.Reset(-1);
3695 fEmbeddedPtFraction.Reset(0);
3696
3697 AliAnalysisHelperJetTasks::GetJetMatching(fJetsEmbedded, nEmbeddedJets,
3698 fJetsRecCuts, nRecJetsCuts,
3699 iEmbeddedMatchIndex, fEmbeddedPtFraction,
3700 fDebug, maxDist);
3701
3702 }
3703
67e37e80 3704 //____ fetch background jets ___________________________________________________
742ee86c 3705 if(fBckgMode &&
3170a3f8 3706 (fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters ||
3707 fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading ||
3708 fBckgType[3]==kBckgClustersOutLeading || fBckgType[4]==kBckgClustersOutLeading)){
742ee86c 3709
3710 Int_t nBJ = GetListOfBckgJets(fBckgJetsRec, kJetsRec);
67e37e80 3711 Int_t nRecBckgJets = 0;
3712 if(nBJ>=0) nRecBckgJets = fBckgJetsRec->GetEntries();
3713 if(fDebug>2)Printf("%s:%d Selected Rec background jets: %d %d",(char*)__FILE__,__LINE__,nBJ,nRecBckgJets);
3714 if(nBJ != nRecBckgJets) Printf("%s:%d Mismatch Selected Rec background jets: %d %d",(char*)__FILE__,__LINE__,nBJ,nRecBckgJets);
3715
742ee86c 3716 Int_t nBJCuts = GetListOfBckgJets(fBckgJetsRecCuts, kJetsRecAcceptance);
67e37e80 3717 Int_t nRecBckgJetsCuts = 0;
3718 if(nBJCuts>=0) nRecBckgJetsCuts = fBckgJetsRecCuts->GetEntries();
3719 if(fDebug>2)Printf("%s:%d Selected Rec background jets after cuts: %d %d",(char*)__FILE__,__LINE__,nJCuts,nRecJetsCuts);
3720 if(nRecBckgJetsCuts != nBJCuts) Printf("%s:%d Mismatch selected Rec background jets after cuts: %d %d",(char*)__FILE__,__LINE__,nBJCuts,nRecBckgJetsCuts);
3721 fh1nRecBckgJetsCuts->Fill(nRecBckgJetsCuts);
3722
742ee86c 3723 if(0){ // protection OB - not yet implemented
3724 if(fJetTypeGen==kJetsKine || fJetTypeGen == kJetsKineAcceptance) fBckgJetsGen->SetOwner(kTRUE); // kine aod jets allocated on heap, delete them with TList::Clear()
3725 Int_t nBJGen = GetListOfBckgJets(fBckgJetsGen, fJetTypeGen);
3726 Int_t nGenBckgJets = 0;
3727 if(nBJGen>=0) nGenBckgJets = fBckgJetsGen->GetEntries();
3728 if(fDebug>2)Printf("%s:%d Selected Gen background jets: %d %d",(char*)__FILE__,__LINE__,nBJGen,nGenBckgJets);
3729 if(nBJGen != nGenBckgJets) Printf("%s:%d Mismatch selected Gen background jets: %d %d",(char*)__FILE__,__LINE__,nBJGen,nGenBckgJets);
3730 fh1nGenBckgJets->Fill(nGenBckgJets);
3731 }
67e37e80 3732 }
fe343c6b 3733
44b235ce 3734
656dc810 3735 //____ fetch particles __________________________________________________________
3736
39e2b057 3737 Int_t nT;
3738 if(fUseExtraTracks == 1) nT = GetListOfTracks(fTracksRec, kTrackAODExtra);
3739 else if(fUseExtraTracks == -1) nT = GetListOfTracks(fTracksRec, kTrackAODExtraonly);
3740 else nT = GetListOfTracks(fTracksRec, kTrackAOD);
3741
656dc810 3742 Int_t nRecPart = 0;
3743 if(nT>=0) nRecPart = fTracksRec->GetEntries();
3744 if(fDebug>2)Printf("%s:%d Selected Rec tracks: %d %d",(char*)__FILE__,__LINE__,nT,nRecPart);
3745 if(nRecPart != nT) Printf("%s:%d Mismatch selected Rec tracks: %d %d",(char*)__FILE__,__LINE__,nT,nRecPart);
3746
3747
39e2b057 3748 Int_t nTCuts;
3749 if(fUseExtraTracks == 1) nTCuts = GetListOfTracks(fTracksRecCuts, kTrackAODExtraCuts);
3750 else if(fUseExtraTracks == -1) nTCuts = GetListOfTracks(fTracksRecCuts, kTrackAODExtraonlyCuts);
3751 else nTCuts = GetListOfTracks(fTracksRecCuts, kTrackAODCuts);
3752
656dc810 3753 Int_t nRecPartCuts = 0;
3754 if(nTCuts>=0) nRecPartCuts = fTracksRecCuts->GetEntries();
3755 if(fDebug>2)Printf("%s:%d Selected Rec tracks after cuts: %d %d",(char*)__FILE__,__LINE__,nTCuts,nRecPartCuts);
3756 if(nRecPartCuts != nTCuts) Printf("%s:%d Mismatch selected Rec tracks after cuts: %d %d",(char*)__FILE__,__LINE__,nTCuts,nRecPartCuts);
3757 fh1EvtMult->Fill(nRecPartCuts);
3758
3759
3af23c82 3760
656dc810 3761 Int_t nTGen = GetListOfTracks(fTracksGen,fTrackTypeGen);
3762 Int_t nGenPart = 0;
3763 if(nTGen>=0) nGenPart = fTracksGen->GetEntries();
3764 if(fDebug>2)Printf("%s:%d Selected Gen tracks: %d %d",(char*)__FILE__,__LINE__,nTGen,nGenPart);
3765 if(nGenPart != nTGen) Printf("%s:%d Mismatch selected Gen tracks: %d %d",(char*)__FILE__,__LINE__,nTGen,nGenPart);
3766
3767
3768 //____ analysis, fill histos ___________________________________________________
3769
3af23c82 3770 if(fQAMode){
3771 // loop over tracks
3772 if(fQAMode&1){
3773 for(Int_t it=0; it<nRecPart; ++it){
3774 AliVParticle *part = dynamic_cast<AliVParticle*>(fTracksRec->At(it));
b85b355c 3775 if(part)fQATrackHistosRec->FillTrackQA( part->Eta(), TVector2::Phi_0_2pi(part->Phi()), part->Pt());
3af23c82 3776 }
83decb5f 3777 for(Int_t it=0; it<nRecPartCuts; ++it){
3778 AliVParticle *part = dynamic_cast<AliVParticle*>(fTracksRecCuts->At(it));
3779 if(part)fQATrackHistosRecCuts->FillTrackQA( part->Eta(), TVector2::Phi_0_2pi(part->Phi()), part->Pt() );
3780 }
3af23c82 3781 for(Int_t it=0; it<nGenPart; ++it){
3782 AliVParticle *part = dynamic_cast<AliVParticle*>(fTracksGen->At(it));
b85b355c 3783 if(part)fQATrackHistosGen->FillTrackQA( part->Eta(), TVector2::Phi_0_2pi(part->Phi()), part->Pt());
3af23c82 3784 }
3170a3f8 3785
3786 // fill DCA to prim vertex
3787 for(Int_t it=0; it<nRecPartCuts; ++it){
3788 AliAODTrack *aodtr = dynamic_cast<AliAODTrack*>(fTracksRecCuts->At(it));
39e2b057 3789
3170a3f8 3790 if(!aodtr) continue;
3791 if(!primVtx) continue;
3792
a5592cfa 3793 Double_t bfield = fAOD->GetMagneticField();
3170a3f8 3794 Double_t dz[2];
3795 Double_t cov[3];
39e2b057 3796
3797 AliAODTrack tmp(*aodtr);
a5592cfa 3798 tmp.PropagateToDCA(primVtx, bfield, 5., dz, cov);
39e2b057 3799
3170a3f8 3800 Double_t dcaXY = dz[0];
3801 Double_t dcaZ = dz[1];
3802
3803 fh2TrackPtVsDCAXY->Fill(dcaXY,tmp.Pt());
3804 fh2TrackPtVsDCAZ->Fill(dcaZ,tmp.Pt());
3805 }
3af23c82 3806 }
656dc810 3807
3af23c82 3808 // loop over jets
3809
3810 if(fQAMode&2){
3811 for(Int_t ij=0; ij<nRecJets; ++ij){
3812 AliAODJet* jet = dynamic_cast<AliAODJet*>(fJetsRec->At(ij));
b85b355c 3813 if(jet)fQAJetHistosRec->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
3af23c82 3814 }
3815 }
656dc810 3816 }
656dc810 3817
3af23c82 3818 if(fQAMode || fFFMode || fIJMode || fPhiCorrMode){
3819 for(Int_t ij=0; ij<nRecJetsCuts; ++ij){
656dc810 3820
1ea145ef 3821 AliAODJet* jet = (AliAODJet*)(fJetsRecCuts->At(ij));
3af23c82 3822 if(fQAMode&2) fQAJetHistosRecCuts->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
656dc810 3823
3af23c82 3824 if(ij==0){ // leading jet
656dc810 3825
3af23c82 3826 if(fQAMode&2) fQAJetHistosRecCutsLeading->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt() );
656dc810 3827
39e2b057 3828
3829 Double_t ptFractionEmbedded = 0;
3830 AliAODJet* embeddedJet = 0;
3831
3832 if(fBranchEmbeddedJets.Length()){ // find embedded jet
3833
3834 Int_t indexEmbedded = -1;
3835 for(Int_t i=0; i<nEmbeddedJets; i++){
3836 if(iEmbeddedMatchIndex[i] == ij){
3837 indexEmbedded = i;
3838 ptFractionEmbedded = fEmbeddedPtFraction[i];
3839 }
3840 }
3841
3842 fh1IndexEmbedded->Fill(indexEmbedded);
3843 fh1FractionPtEmbedded->Fill(ptFractionEmbedded);
3844
3845 if(indexEmbedded>-1){
3846
3847 embeddedJet = dynamic_cast<AliAODJet*>(fJetsEmbedded->At(indexEmbedded));
3848 if(!embeddedJet) continue;
3849
3850 Double_t deltaPt = jet->Pt() - embeddedJet->Pt();
3851 Double_t deltaR = jet->DeltaR((AliVParticle*) (embeddedJet));
3852
3853 fh2DeltaPtVsJetPtEmbedded->Fill(embeddedJet->Pt(),deltaPt);
3854 fh2DeltaPtVsRecJetPtEmbedded->Fill(jet->Pt(),deltaPt);
3855 fh1DeltaREmbedded->Fill(deltaR);
3856 }
3857 }
3858
3859 // get tracks in jet
3af23c82 3860 TList* jettracklist = new TList();
3861 Double_t sumPt = 0.;
6daac008 3862 Bool_t isBadJet = kFALSE;
3af23c82 3863 Float_t leadTrackPt = 0.;
3864 TLorentzVector* leadTrackV = new TLorentzVector();
39e2b057 3865
6daac008 3866
3af23c82 3867 if(GetFFRadius()<=0){
6daac008 3868 GetJetTracksTrackrefs(jettracklist, jet, GetFFMaxTrackPt(), isBadJet);
3af23c82 3869 } else {
39e2b057 3870 if(fUseEmbeddedJetAxis){
6daac008 3871 if(embeddedJet) GetJetTracksPointing(fTracksRecCuts, jettracklist, embeddedJet, GetFFRadius(), sumPt, GetFFMaxTrackPt(), isBadJet);
3af23c82 3872 }
6daac008 3873 else GetJetTracksPointing(fTracksRecCuts, jettracklist, jet, GetFFRadius(), sumPt, GetFFMaxTrackPt(), isBadJet);
3af23c82 3874 }
3875
6daac008 3876 if(GetFFMinNTracks()>0 && jettracklist->GetSize()<=GetFFMinNTracks()) isBadJet = kTRUE;
6daac008 3877
3878 if(isBadJet) continue;
3879
39e2b057 3880 if(ptFractionEmbedded>=fCutFractionPtEmbedded){ // if no embedding: ptFraction = cutFraction = 0
3881
3882 for(Int_t it=0; it<jettracklist->GetSize(); ++it){
3883
3884 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(jettracklist->At(it));
3885 if(!trackVP)continue;
3886 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
3af23c82 3887
39e2b057 3888 Float_t jetPt = jet->Pt();
3889 if(fUseEmbeddedJetPt){
3890 if(embeddedJet) jetPt = embeddedJet->Pt();
3891 else jetPt = 0;
3892 }
3893 Float_t trackPt = trackV->Pt();
3894
3895
3896 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
3af23c82 3897
39e2b057 3898 if(fFFMode) fFFHistosRecCuts->FillFF( trackPt, jetPt, incrementJetPt);
3899 if(fIJMode) fIJHistosRecCuts->FillIntraJet( trackV, jet->MomentumVector() );
3af23c82 3900
39e2b057 3901 if(it==0){ // leading track
3902 leadTrackPt = trackPt;
3903 leadTrackV->SetPxPyPzE(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
3904
3905 if(fFFMode) fFFHistosRecLeadingTrack->FillFF( leadTrackPt, jetPt, kTRUE);
3906 if(fIJMode) fIJHistosRecLeadingTrack->FillIntraJet( leadTrackV, jet->MomentumVector() );
3907 }
3908 if(fFFMode) fFFHistosRecLeading->FillFF( trackPt, leadTrackPt , incrementJetPt);
3909 if(fIJMode) fIJHistosRecLeading->FillIntraJet( trackV, leadTrackV );
3af23c82 3910
39e2b057 3911 delete trackV;
3af23c82 3912 }
39e2b057 3913
3914 // ff and ij for background study
3915 if(fBckgMode){
3916 if(fBckgType[0]!=-1)
3917 FillBckgHistos(fBckgType[0], fTracksRecCuts, fJetsRecCuts, jet, leadTrackPt, leadTrackV,
3918 fFFBckgHisto0RecCuts, fFFBckgHisto0RecLeading,
3919 fIJBckgHisto0RecCuts, fIJBckgHisto0RecLeading,
3920 fQABckgHisto0RecCuts);
3921 if(fBckgType[1]!=-1)
3922 FillBckgHistos(fBckgType[1], fTracksRecCuts, fJetsRecCuts, jet, leadTrackPt, leadTrackV,
3923 fFFBckgHisto1RecCuts, fFFBckgHisto1RecLeading,
3924 fIJBckgHisto1RecCuts, fIJBckgHisto1RecLeading,
3925 fQABckgHisto1RecCuts);
3926 if(fBckgType[2]!=-1)
3927 FillBckgHistos(fBckgType[2], fTracksRecCuts, fJetsRecCuts, jet, leadTrackPt, leadTrackV,
3928 fFFBckgHisto2RecCuts, fFFBckgHisto2RecLeading,
3929 fIJBckgHisto2RecCuts, fIJBckgHisto2RecLeading,
3930 fQABckgHisto2RecCuts);
3931 if(fBckgType[3]!=-1)
3932 FillBckgHistos(fBckgType[3], fTracksRecCuts, fJetsRecCuts, jet, leadTrackPt, leadTrackV,
3933 fFFBckgHisto3RecCuts, fFFBckgHisto3RecLeading,
3934 fIJBckgHisto3RecCuts, fIJBckgHisto3RecLeading,
3935 fQABckgHisto3RecCuts);
3936 if(fBckgType[4]!=-1)
3937 FillBckgHistos(fBckgType[4], fTracksRecCuts, fJetsRecCuts, jet, leadTrackPt, leadTrackV,
3938 fFFBckgHisto4RecCuts, fFFBckgHisto4RecLeading,
3939 fIJBckgHisto4RecCuts, fIJBckgHisto4RecLeading,
3940 fQABckgHisto4RecCuts);
3941 } // end if(fBckgMode)
3942
3943
3944 // phi correlation
3945 if(fPhiCorrMode){
3946 for(Int_t it=0; it<nRecPartCuts; ++it){
3947 AliVParticle *part = (AliVParticle*)(fTracksRecCuts->At(it));
3948
3949 Float_t partEta = part->Eta();
3950 Float_t partPhi = part->Phi();
3951 Float_t partPt = part->Pt();
3952
3953 fPhiCorrHistosJetArea->FillTrackQA( partEta,
3954 TVector2::Phi_mpi_pi( jet->Phi() - partPhi ),
3955 partPt,
3956 kTRUE);
3957
3958 fPhiCorrHistosTransverseArea->FillTrackQA( partEta,
3959 TVector2::Phi_mpi_pi( jet->Phi() - partPhi + TMath::Pi()/2),
3960 partPt,
3961 kTRUE);
3962
3963 fPhiCorrHistosAwayArea->FillTrackQA( partEta,
3964 TVector2::Phi_mpi_pi( jet->Phi() - partPhi + TMath::Pi()),
3965 partPt,
3966 kTRUE);
3967 }
3968 } // end: phi-correlation
3969
3970 delete leadTrackV;
3971 delete jettracklist;
3972
3973 } // end: cut embedded ratio
3af23c82 3974 } // end: leading jet
3975 } // end: rec. jets after cuts
656dc810 3976
3af23c82 3977 // generated jets
3978 for(Int_t ij=0; ij<nGenJets; ++ij){
656dc810 3979
3af23c82 3980 AliAODJet* jet = dynamic_cast<AliAODJet*>(fJetsGen->At(ij));
ab851c96 3981 if(!jet)continue;
3af23c82 3982 if(fQAMode&2) fQAJetHistosGen->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
656dc810 3983
3af23c82 3984 if(ij==0){ // leading jet
cb76764e 3985
3af23c82 3986 if(fQAMode&2) fQAJetHistosGenLeading->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
cb76764e 3987
3af23c82 3988 TList* jettracklist = new TList();
3989 Double_t sumPt = 0.;
6daac008 3990 Bool_t isBadJet = kFALSE;
3af23c82 3991 Float_t leadTrackPt = 0.;
3992 TLorentzVector* leadTrackV = new TLorentzVector();
656dc810 3993
3af23c82 3994 if(GetFFRadius()<=0){
6daac008 3995 GetJetTracksTrackrefs(jettracklist, jet, GetFFMaxTrackPt(), isBadJet);
3af23c82 3996 } else {
6daac008 3997 GetJetTracksPointing(fTracksGen, jettracklist, jet, GetFFRadius(), sumPt, GetFFMaxTrackPt(), isBadJet);
656dc810 3998 }
3af23c82 3999
6daac008 4000 if(GetFFMinNTracks()>0 && jettracklist->GetSize()<=GetFFMinNTracks()) isBadJet = kTRUE;;
4001 if(isBadJet) continue;
4002
3af23c82 4003 for(Int_t it=0; it<jettracklist->GetSize(); ++it){
4004
4005 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(jettracklist->At(it));
a60633ee 4006 if(!trackVP)continue;
3af23c82 4007 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
4008
4009 Float_t jetPt = jet->Pt();
4010 Float_t trackPt = trackV->Pt();
4011
4012 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
4013
4014 if(fFFMode) fFFHistosGen->FillFF( trackPt, jetPt, incrementJetPt );
4015 if(fIJMode) fIJHistosGen->FillIntraJet( trackV, jet->MomentumVector() );
4016
4017 if(it==0){ // leading track
4018 leadTrackPt = trackPt;
4019 leadTrackV->SetPxPyPzE(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
4020
4021 if(fFFMode) fFFHistosGenLeadingTrack->FillFF( leadTrackPt, jetPt, kTRUE );
4022 if(fIJMode) fIJHistosGenLeadingTrack->FillIntraJet( leadTrackV, jet->MomentumVector() );
4023 }
4024 if(fFFMode) fFFHistosGenLeading->FillFF( trackPt, leadTrackPt, incrementJetPt );
4025 if(fIJMode) fIJHistosGenLeading->FillIntraJet( trackV, leadTrackV );
4026
4027 delete trackV;
4028 }
4029
4030 delete leadTrackV;
4031 delete jettracklist;
656dc810 4032 }
656dc810 4033 }
3af23c82 4034 } // end: QA, FF and intra-jet
656dc810 4035
4036 //_______ DiJet part _____________________________________________________
3af23c82 4037 if(fDJMode){
4038 if (nRecJetsCuts > 1)
656dc810 4039 {
1ea145ef 4040 AliAODJet* jet1 = (AliAODJet*)(fJetsRecCuts->At(0));
4041 AliAODJet* jet2 = (AliAODJet*)(fJetsRecCuts->At(1));
656dc810 4042
3af23c82 4043 // DiJet deltaphi calculation
4044 Double_t phi1 = TVector2::Phi_0_2pi(jet1->Phi());
4045 Double_t phi2 = TVector2::Phi_0_2pi(jet2->Phi());
4046 Double_t deltaPhi = TMath::Abs(phi1-phi2);
4047 if (deltaPhi > TMath::Pi() && deltaPhi < 2*TMath::Pi()) deltaPhi = 2*TMath::Pi() - deltaPhi;
4048
4049 // DiJet CDF cut calculation
4050 Double_t et1 = TMath::Abs(jet1->E()*TMath::Sin(jet1->Theta()));
4051 Double_t et2 = TMath::Abs(jet2->E()*TMath::Sin(jet2->Theta()));
4052 Double_t sumEt = et1 + et2;
4053 Double_t normEt1PlusEt2 = TMath::Sqrt(et1*et1+et2*et2+2*et1*et2*TMath::Cos(deltaPhi));
4054 Double_t ratio = (Double_t)(normEt1PlusEt2/sumEt);
4055
4056 // DiJet events selection
4057 Bool_t positionCut = 0;
4058 Bool_t positionEnergyCut = 0;
4059 Bool_t cdfCut = 0;
4060
4061 // Position cut :
4062 if (deltaPhi > fDiJetDeltaPhiCut) positionCut = 1;
4063 // Position-Energy cut :
4064 if ((deltaPhi > fDiJetDeltaPhiCut) && ((jet2->Pt()) >= fDiJetPtFractionCut*(jet1->Pt()))) positionEnergyCut = 1;
4065 // CDF cut :
4066 if (ratio < fDiJetCDFCut) cdfCut = 1;
4067
4068 Int_t go = 0;
4069
4070 if (fDiJetCut == 1 && positionCut == 1) go = 1;
4071 if (fDiJetCut == 2 && positionEnergyCut == 1) go = 1;
4072 if (fDiJetCut == 3 && cdfCut == 1) go = 1;
4073
4074 if (go)
656dc810 4075 {
3af23c82 4076 Double_t deltaEta = TMath::Abs(jet1->Eta()-jet2->Eta());
4077 Double_t deltaPt = TMath::Abs(jet1->Pt()-jet2->Pt());
4078 Double_t inbal = (jet1->Pt()-jet2->Pt())/(jet1->Pt()+jet2->Pt());
4079 Double_t meanEt = (Double_t)((et1+et2)/2.);
4080 Double_t invariantMass = (Double_t)InvMass(jet1,jet2);
656dc810 4081
3af23c82 4082 Double_t jetBin = GetDiJetBin(invariantMass, jet1->Pt(), meanEt, fDiJetKindBins);
656dc810 4083
3af23c82 4084 if (jetBin > 0)
656dc810 4085 {
3af23c82 4086 if(fDJMode&2) fQADiJetHistosRecCuts->FillDiJetQA(invariantMass, deltaPhi, deltaEta, deltaPt, inbal, jetBin);
4087
4088 if(fDJMode&1){
4089 TList* jettracklist1 = new TList();
4090 Double_t sumPt1 = 0.;
6daac008 4091 Bool_t isBadJet1 = kFALSE;
3af23c82 4092 Float_t leadTrackPt1 = 0;
4093
6daac008 4094
3af23c82 4095 TList* jettracklist2 = new TList();
4096 Double_t sumPt2 = 0.;
6daac008 4097 Bool_t isBadJet2 = kFALSE;
3af23c82 4098 Float_t leadTrackPt2 = 0;
4099
4100 if(GetFFRadius()<=0)
4101 {
6daac008 4102 GetJetTracksTrackrefs(jettracklist1, jet1, GetFFMaxTrackPt(), isBadJet1);
4103 GetJetTracksTrackrefs(jettracklist2, jet2, GetFFMaxTrackPt(), isBadJet2);
3af23c82 4104 }
4105 else
4106 {
6daac008 4107 GetJetTracksPointing(fTracksRecCuts, jettracklist1, jet1, GetFFRadius(), sumPt1, GetFFMaxTrackPt(), isBadJet1);
4108 GetJetTracksPointing(fTracksRecCuts, jettracklist2, jet2, GetFFRadius(), sumPt2, GetFFMaxTrackPt(), isBadJet2);
3af23c82 4109 }
4110
6daac008 4111
4112 if(GetFFMinNTracks()>0 && jettracklist1->GetSize()<=GetFFMinNTracks()) isBadJet1 = kTRUE;
4113 if(GetFFMinNTracks()>0 && jettracklist1->GetSize()<=GetFFMinNTracks()) isBadJet2 = kTRUE;
4114
4115 if(!(isBadJet1 || isBadJet2)){ // good jets
4116
4117 Int_t nTracks = jettracklist1->GetSize();
4118 if (jettracklist1->GetSize() < jettracklist2->GetSize()) nTracks = jettracklist2->GetSize();
3af23c82 4119
6daac008 4120 for(Int_t it=0; it<nTracks; ++it)
4121 {
4122 if (it < jettracklist1->GetSize())
4123 {
4124 AliVParticle *vp = (dynamic_cast<AliVParticle*> (jettracklist1->At(it)));
4125 Float_t trackPt1 = (vp?vp->Pt():0);
4126 Float_t jetPt1 = jet1->Pt();
4127
4128 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
3af23c82 4129
6daac008 4130 fFFDiJetHistosRecCuts->FillDiJetFF(1, trackPt1, jetPt1, jetBin, incrementJetPt);
4131 fFFDiJetHistosRecCuts->FillDiJetFF(0, trackPt1, jetPt1, jetBin, incrementJetPt);
4132
4133 if (it == 0)
4134 {
4135 leadTrackPt1 = trackPt1;
4136
4137 fFFDiJetHistosRecLeadingTrack->FillDiJetFF(1, leadTrackPt1, jetPt1, jetBin, kTRUE);
4138 fFFDiJetHistosRecLeadingTrack->FillDiJetFF(0, leadTrackPt1, jetPt1, jetBin, kTRUE);
4139 }
4140
4141 fFFDiJetHistosRecLeading->FillDiJetFF(1, trackPt1, leadTrackPt1, jetBin, incrementJetPt);
4142 fFFDiJetHistosRecLeading->FillDiJetFF(0, trackPt1, leadTrackPt1, jetBin, incrementJetPt);
4143 }
4144
4145 if (it < jettracklist2->GetSize())
4146 {
4147 Float_t trackPt2 = ((AliVParticle*)(jettracklist2->At(it)))->Pt();
4148 Float_t jetPt2 = jet2->Pt();
4149
4150 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
4151
4152 fFFDiJetHistosRecCuts->FillDiJetFF(2, trackPt2, jetPt2, jetBin, incrementJetPt);
4153 fFFDiJetHistosRecCuts->FillDiJetFF(0, trackPt2, jetPt2, jetBin, incrementJetPt);
4154
4155 if (it == 0)
4156 {
4157 leadTrackPt2 = trackPt2;
4158
4159 fFFDiJetHistosRecLeadingTrack->FillDiJetFF(2, leadTrackPt2, jetPt2, jetBin, kTRUE);
4160 fFFDiJetHistosRecLeadingTrack->FillDiJetFF(0, leadTrackPt2, jetPt2, jetBin, kTRUE);
4161 }
4162
4163 fFFDiJetHistosRecLeading->FillDiJetFF(2, trackPt2, leadTrackPt2, jetBin, incrementJetPt);
4164 fFFDiJetHistosRecLeading->FillDiJetFF(0, trackPt2, leadTrackPt2, jetBin, incrementJetPt);
4165 }
4166 } // End loop on tracks
4167 }
3af23c82 4168
4169 delete jettracklist1;
4170 delete jettracklist2;
4171 }
4172 } // End if(jetBin > 0)
4173 else { Printf("Jet bins for di-jet studies not set !");}
4174 } // End if(go)
4175 } // End if(nRecJets > 1)
4176
4177 if (nGenJets > 1)
4178 {
4179 AliAODJet* jet1 = dynamic_cast<AliAODJet*>(fJetsGen->At(0));
4180 AliAODJet* jet2 = dynamic_cast<AliAODJet*>(fJetsGen->At(1));
ab851c96 4181 if(jet1&&jet2){
3af23c82 4182
4183 Double_t deltaPhi = 0;
4184 Double_t phi1 = TVector2::Phi_0_2pi(jet1->Phi());
4185 Double_t phi2 = TVector2::Phi_0_2pi(jet2->Phi());
4186 deltaPhi = TMath::Abs(phi1-phi2);
4187 if (deltaPhi > TMath::Pi() && deltaPhi < 2*TMath::Pi()) deltaPhi = 2*TMath::Pi() - deltaPhi;
4188
4189 Double_t et1 = TMath::Abs(jet1->E()*TMath::Sin(jet1->Theta()));
4190 Double_t et2 = TMath::Abs(jet2->E()*TMath::Sin(jet2->Theta()));
4191 Double_t sumEt = et1 + et2;
4192 Double_t normEt1PlusEt2 = TMath::Sqrt(et1*et1+et2*et2+2*et1*et2*TMath::Cos(deltaPhi));
4193 Double_t ratio = (Double_t)(normEt1PlusEt2/sumEt);
4194
4195 // DiJet events selection
4196 Bool_t positionCut = 0;
4197 Bool_t positionEnergyCut = 0;
4198 Bool_t cdfCut = 0;
4199
4200 // Position cut :
4201 if (deltaPhi > fDiJetDeltaPhiCut) positionCut = 1;
4202 // Position-Energy cut :
4203 if ((deltaPhi > fDiJetDeltaPhiCut) && ((jet2->Pt()) >= fDiJetPtFractionCut*(jet1->Pt()))) positionEnergyCut = 1;
4204 // CDF cut :
4205 if (ratio < fDiJetCDFCut) cdfCut = 1;
4206
4207 Int_t go = 0;
4208
4209 if (fDiJetCut == 1 && positionCut == 1) go = 1;
4210 if (fDiJetCut == 2 && positionEnergyCut == 1) go = 1;
4211 if (fDiJetCut == 3 && cdfCut == 1) go = 1;
4212
4213 if (go)
4214 {
4215 Double_t deltaEta = TMath::Abs(jet1->Eta()-jet2->Eta());
4216 Double_t deltaPt = TMath::Abs(jet1->Pt()-jet2->Pt());
4217 Double_t inbal = (jet1->Pt()-jet2->Pt())/(jet1->Pt()+jet2->Pt());
4218 Double_t meanEt = (Double_t)((et1+et2)/2.);
4219 Double_t invariantMass = (Double_t)InvMass(jet1,jet2);
656dc810 4220
3af23c82 4221 Double_t jetBin = GetDiJetBin(invariantMass, jet1->Pt(), meanEt, fDiJetKindBins);
656dc810 4222
3af23c82 4223 if(jetBin > 0)
656dc810 4224 {
3af23c82 4225 if(fDJMode&2) fQADiJetHistosGen->FillDiJetQA(invariantMass, deltaPhi, deltaEta, deltaPt, inbal, jetBin);
656dc810 4226
3af23c82 4227 if(fDJMode&1){
4228 TList* jettracklist1 = new TList();
4229 Double_t sumPt1 = 0.;
6daac008 4230 Bool_t isBadJet1 = kFALSE;
3af23c82 4231 Float_t leadTrackPt1 = 0.;
6daac008 4232
3af23c82 4233 TList* jettracklist2 = new TList();
4234 Double_t sumPt2 = 0.;
6daac008 4235 Bool_t isBadJet2 = kFALSE;
3af23c82 4236 Float_t leadTrackPt2 = 0.;
4237
4238 if(GetFFRadius()<=0)
4239 {
6daac008 4240 GetJetTracksTrackrefs(jettracklist1, jet1, GetFFMaxTrackPt(), isBadJet1);
4241 GetJetTracksTrackrefs(jettracklist2, jet2, GetFFMaxTrackPt(), isBadJet2);
3af23c82 4242 }
4243 else
4244 {
6daac008 4245 GetJetTracksPointing(fTracksGen, jettracklist1, jet1, GetFFRadius(), sumPt1, GetFFMaxTrackPt(), isBadJet1);
4246 GetJetTracksPointing(fTracksGen, jettracklist2, jet2, GetFFRadius(), sumPt2, GetFFMaxTrackPt(), isBadJet2);
3af23c82 4247 }
4248
3af23c82 4249
6daac008 4250 if(GetFFMinNTracks()>0 && jettracklist1->GetSize()<=GetFFMinNTracks()) isBadJet1 = kTRUE;
4251 if(GetFFMinNTracks()>0 && jettracklist1->GetSize()<=GetFFMinNTracks()) isBadJet2 = kTRUE;
4252
4253 if(!(isBadJet1 || isBadJet2)){ // good jets
4254
4255 Int_t nTracks = jettracklist1->GetSize();
4256 if (jettracklist1->GetSize() < jettracklist2->GetSize()) nTracks = jettracklist2->GetSize();
4257
4258 for(Int_t it=0; it<nTracks; ++it)
4259 {
4260 if (it < jettracklist1->GetSize())
4261 {
4262 Float_t trackPt1 = ((AliVParticle*)jettracklist1->At(it))->Pt();
4263 Float_t jetPt1 = jet1->Pt();
4264
4265 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
4266
4267 fFFDiJetHistosGen->FillDiJetFF( 1, trackPt1, jetPt1, jetBin, incrementJetPt);
4268 fFFDiJetHistosGen->FillDiJetFF( 0, trackPt1, jetPt1, jetBin, incrementJetPt);
4269
4270 if(it==0)
4271 {
4272 leadTrackPt1 = trackPt1;
4273
4274 fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 1, leadTrackPt1, jetPt1, jetBin, kTRUE);
4275 fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 0, leadTrackPt1, jetPt1, jetBin, kTRUE);
4276 }
4277
4278 fFFDiJetHistosGenLeading->FillDiJetFF( 1, trackPt1, leadTrackPt1, jetBin, incrementJetPt);
4279 fFFDiJetHistosGenLeading->FillDiJetFF( 0, trackPt1, leadTrackPt1, jetBin, incrementJetPt);
4280 }
4281
4282 if (it < jettracklist2->GetSize())
4283 {
4284 Float_t trackPt2 = ((AliVParticle*)jettracklist2->At(it))->Pt();
4285 Float_t jetPt2 = jet2->Pt();
4286
4287 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
4288
4289 fFFDiJetHistosGen->FillDiJetFF( 2, trackPt2, jetPt2, jetBin, incrementJetPt);
4290 fFFDiJetHistosGen->FillDiJetFF( 0, trackPt2, jetPt2, jetBin, incrementJetPt);
3af23c82 4291
6daac008 4292 if (it==0)
4293 {
4294 leadTrackPt2 = trackPt2;
4295
4296 fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 2, leadTrackPt2, jetPt2, jetBin, kTRUE);
4297 fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 0, leadTrackPt2, jetPt2, jetBin, kTRUE);
4298 }
3af23c82 4299
6daac008 4300 fFFDiJetHistosGenLeading->FillDiJetFF( 2, trackPt2, leadTrackPt2, jetBin, incrementJetPt);
4301 fFFDiJetHistosGenLeading->FillDiJetFF( 0, trackPt2, leadTrackPt2, jetBin, incrementJetPt);
4302 }
4303 } // End loop on tracks
4304 }
4305
3af23c82 4306 delete jettracklist1;
4307 delete jettracklist2;
4308 }
4309 } // End if(jetBin > 0)
4310 else { Printf("Jet bins for di-jet studies not set !");}
4311 } // End if (go)
ab851c96 4312 }// end if jet1 and jet2
3af23c82 4313 } // End if(nGenJets > 1)
4314 } // end: di-jet
656dc810 4315
fe343c6b 4316 // ____ efficiency _______________________________
4317
3af23c82 4318 if(fEffMode && (fJetTypeRecEff != kJetsUndef)){
cb76764e 4319
d5e8640d 4320 // arrays holding for each generated particle the reconstructed AOD track index & isPrimary flag, are initialized in AssociateGenRec(...) function
cb76764e 4321 TArrayI indexAODTr;
4322 TArrayS isGenPrim;
d5e8640d 4323
4324 // array holding for each reconstructed AOD track generated particle index, initialized in AssociateGenRec(...) function
cb76764e 4325 TArrayI indexMCTr;
d5e8640d 4326
4327 // ... and another set for secondaries (secondary MC tracks are stored in a different list)
4328 TArrayI indexAODTrSec;
4329 TArrayS isGenSec;
4330 TArrayI indexMCTrSec;
4331
cb76764e 4332 Int_t nTracksAODMCCharged = GetListOfTracks(fTracksAODMCCharged, kTrackAODMCCharged);
4333 if(fDebug>2)Printf("%s:%d selected AODMC tracks: %d ",(char*)__FILE__,__LINE__,nTracksAODMCCharged);
fe343c6b 4334
d5e8640d 4335 Int_t nTracksAODMCChargedSec = GetListOfTracks(fTracksAODMCChargedSec, kTrackAODMCChargedSec);
4336 if(fDebug>2)Printf("%s:%d selected AODMC secondary tracks: %d ",(char*)__FILE__,__LINE__,nTracksAODMCChargedSec);
4337
cb76764e 4338 Int_t nTracksRecQualityCuts = GetListOfTracks(fTracksRecQualityCuts, kTrackAODQualityCuts);
4339 if(fDebug>2)Printf("%s:%d selected rec tracks quality after cuts, full acceptance/pt : %d ",(char*)__FILE__,__LINE__,nTracksRecQualityCuts);
fe343c6b 4340
cb76764e 4341 // associate gen and rec tracks, store indices in TArrays
d5e8640d 4342 AssociateGenRec(fTracksAODMCCharged,fTracksRecQualityCuts,indexAODTr,indexMCTr,isGenPrim,fh2PtRecVsGenPrim);
4343 AssociateGenRec(fTracksAODMCChargedSec,fTracksRecQualityCuts,indexAODTrSec,indexMCTrSec,isGenSec,fh2PtRecVsGenSec);
fe343c6b 4344
cb76764e 4345 // single track eff
d5e8640d 4346 if(fQAMode&1) FillSingleTrackHistosRecGen(fQATrackHistosRecEffGen,fQATrackHistosRecEffRec,fTracksAODMCCharged,indexAODTr,isGenPrim);
3af23c82 4347 if(fQAMode&1) FillSingleTrackResponse(fhnResponseSinglePt,fTracksAODMCCharged,fTracksRecQualityCuts,indexAODTr,isGenPrim);
4348
d5e8640d 4349 // secondaries
4350 if(fQAMode&1) FillSingleTrackHistosRecGen(0x0,fQATrackHistosSecRec,fTracksAODMCChargedSec,indexAODTrSec,isGenSec);
fe343c6b 4351
39e2b057 4352 // high-pt occupancy effect
4353 FillTwoTrackHistosRecGen(fTracksAODMCCharged, /*fTracksRecQualityCuts,indexAODTr,*/ isGenPrim);
4354
cb76764e 4355 // jet track eff
fe343c6b 4356
cb76764e 4357 Double_t sumPtGenLeadingJetRecEff = 0;
d5e8640d 4358 Double_t sumPtGenLeadingJetSec = 0;
cb76764e 4359 Double_t sumPtRecLeadingJetRecEff = 0;
fe343c6b 4360
cb76764e 4361 for(Int_t ij=0; ij<nRecEffJets; ++ij){
4362
9939142f 4363 AliAODJet* jet = (AliAODJet*)(fJetsRecEff->At(ij));
6daac008 4364 Bool_t isBadJetGenPrim = kFALSE;
4365 Bool_t isBadJetGenSec = kFALSE;
4366 Bool_t isBadJetRec = kFALSE;
9939142f 4367
6daac008 4368
cb76764e 4369 if(ij==0){ // leading jet
4370
6daac008 4371 // for efficiency: gen tracks from pointing with gen/rec jet
d5e8640d 4372 TList* jettracklistGenPrim = new TList();
6daac008 4373 GetJetTracksPointing(fTracksAODMCCharged, jettracklistGenPrim, jet, GetFFRadius(), sumPtGenLeadingJetRecEff, GetFFMaxTrackPt(), isBadJetGenPrim);
d5e8640d 4374
4375 TList* jettracklistGenSec = new TList();
6daac008 4376 GetJetTracksPointing(fTracksAODMCChargedSec, jettracklistGenSec, jet, GetFFRadius(), sumPtGenLeadingJetSec, GetFFMaxTrackPt(), isBadJetGenSec);
4377
4378 // bin efficiency in jet pt bins using rec tracks
cb76764e 4379 TList* jettracklistRec = new TList();
6daac008 4380 GetJetTracksPointing(fTracksRecCuts,jettracklistRec, jet, GetFFRadius(), sumPtRecLeadingJetRecEff, GetFFMaxTrackPt(), isBadJetRec);
cb76764e 4381
4382 Double_t jetEta = jet->Eta();
4383 Double_t jetPhi = TVector2::Phi_0_2pi(jet->Phi());
4384
6daac008 4385 if(GetFFMinNTracks()>0 && jettracklistGenPrim->GetSize()<=GetFFMinNTracks()) isBadJetGenPrim = kTRUE;
4386 if(GetFFMinNTracks()>0 && jettracklistGenSec->GetSize()<=GetFFMinNTracks()) isBadJetGenSec = kTRUE;
4387 if(GetFFMinNTracks()>0 && jettracklistRec->GetSize()<=GetFFMinNTracks()) isBadJetRec = kTRUE;
4388
4389 if(isBadJetRec) continue;
4390
3af23c82 4391 if(fQAMode&2) fQAJetHistosRecEffLeading->FillJetQA( jetEta, jetPhi, sumPtGenLeadingJetRecEff );
4392
d5e8640d 4393 if(fFFMode) FillJetTrackHistosRecGen(fFFHistosRecEffGen,fFFHistosRecEffRec,sumPtGenLeadingJetRecEff,sumPtRecLeadingJetRecEff,
4394 jettracklistGenPrim,fTracksAODMCCharged,indexAODTr,isGenPrim,fUseRecEffRecJetPtBins);
4395
3af23c82 4396 if(fFFMode) FillJetTrackResponse(fhnResponseJetTrackPt,fhnResponseJetZ,fhnResponseJetXi,sumPtGenLeadingJetRecEff,sumPtRecLeadingJetRecEff,
d5e8640d 4397 jettracklistGenPrim,fTracksAODMCCharged,fTracksRecQualityCuts,indexAODTr,isGenPrim,fUseResponseRecJetPtBins);
4398
4399 // secondaries: use jet pt from primaries
4400 if(fFFMode) FillJetTrackHistosRecGen(0x0,fFFHistosSecRec,sumPtGenLeadingJetRecEff,sumPtRecLeadingJetRecEff,
4401 jettracklistGenSec,fTracksAODMCChargedSec,indexAODTrSec,isGenSec,fUseRecEffRecJetPtBins);
742ee86c 4402
d5e8640d 4403 delete jettracklistGenPrim;
4404 delete jettracklistGenSec;
cb76764e 4405 delete jettracklistRec;
4406 }
4407 }
4408
2d1d1b60 4409
cb76764e 4410 // bckgr eff: complementary cones
2d1d1b60 4411
cb76764e 4412 if(0){
4413
4414 for(Int_t ij=0; ij<nRecEffJets; ++ij){
4415
4416 AliAODJet* jet = dynamic_cast<AliAODJet*>(fJetsRecEff->At(ij));
4417
4418 if(ij==0){ // leading jet
4419
4420 TList* perpjettracklistGen = new TList();
4421 Double_t sumPtGen = 0.;
4422
742ee86c 4423 GetTracksTiltedwrpJetAxis(TMath::Pi()/2.,fTracksGen, perpjettracklistGen, jet, GetFFRadius() , sumPtGen); // for efficiency: gen tracks perp to gen/rec jet
cb76764e 4424
4425 // here could be your histos !!!
4426 // FillJetTrackRecEffHisto(fFFBckgrPerpHistosRecEffGen,fFFBckgrPerpHistosRecEffRec,sumPtGenLeadingJetRecEff,sumPtRecLeadingJetRecEff,perpjettracklistGen,
4427 // fTracksAODMCCharged,indexAODTr,isGenPrim,fUseRecEffRecJetPtBins);
4428
4429 delete perpjettracklistGen;
4430 }
4431 }
4432 }
2d1d1b60 4433
cb76764e 4434 // bgr eff: outside N leading jets
2d1d1b60 4435
cb76764e 4436 if(0){
fe343c6b 4437
cb76764e 4438 Int_t nCases = 1;
fe343c6b 4439
cb76764e 4440 TList* outjettracklistGen = new TList();
4441 Double_t sumPtGen = 0.;
4442
3af23c82 4443 GetTracksOutOfNJets(nCases, fTracksGen, outjettracklistGen, fJetsRecEff, sumPtGen); // for efficiency: gen tracks outide n gen/rec jets
cb76764e 4444
4445 // here could be your histos !!!
4446 // FillJetTrackRecEffHisto(fFFBckgrOutHistosRecEffGen,fFFBckgrOutHistosRecEffRec,sumPtGenLeadingJetRecEff,sumPtRecLeadingJetRecEff,
4447 // outjettracklistGen,fTracksAODMCCharged,indexAODTr,isGenPrim,fUseRecEffRecJetPtBins);
fe343c6b 4448
cb76764e 4449 delete outjettracklistGen;
fe343c6b 4450 }
cb76764e 4451 }
4452
fe343c6b 4453 //___________________
4454
656dc810 4455 fTracksRec->Clear();
4456 fTracksRecCuts->Clear();
4457 fTracksGen->Clear();
fe343c6b 4458 fTracksAODMCCharged->Clear();
d5e8640d 4459 fTracksAODMCChargedSec->Clear();
fe343c6b 4460 fTracksRecQualityCuts->Clear();
4461
656dc810 4462 fJetsRec->Clear();
4463 fJetsRecCuts->Clear();
4464 fJetsGen->Clear();
fe343c6b 4465 fJetsRecEff->Clear();
39e2b057 4466 fJetsEmbedded->Clear();
4467
656dc810 4468
742ee86c 4469 if(fBckgMode &&
3170a3f8 4470 (fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters || fBckgType[3]==kBckgClusters || fBckgType[4]==kBckgClusters ||
4471 fBckgType[0]==kBckgClustersOutLeading || fBckgType[1]==kBckgClustersOutLeading || fBckgType[2]==kBckgClustersOutLeading ||
4472 fBckgType[3]==kBckgClustersOutLeading || fBckgType[4]==kBckgClustersOutLeading)){
742ee86c 4473
67e37e80 4474 fBckgJetsRec->Clear();
4475 fBckgJetsRecCuts->Clear();
4476 fBckgJetsGen->Clear();
4477 }
4478
39e2b057 4479
656dc810 4480 //Post output data.
4481 PostData(1, fCommonHistList);
656dc810 4482}
4483
4484//________________________________________________________________________________________
fceb275f 4485Double_t AliAnalysisTaskFragmentationFunction::InvMass(const AliAODJet* jet1, const AliAODJet* jet2)
656dc810 4486{
fceb275f 4487 // cald DiJet inv mass
656dc810 4488
4489 Double_t invMass = 0.;
4490 invMass = TMath::Sqrt(pow(jet1->E()+jet2->E(),2) - pow(jet1->Px()+jet2->Px(),2) -
4491 pow(jet1->Py()+jet2->Py(),2) - pow(jet1->Pz()+jet2->Pz(),2));
4492
4493 return invMass;
4494
4495}
4496
4497//________________________________________________________________________________________
4498Double_t AliAnalysisTaskFragmentationFunction::GetDiJetBin(Double_t invMass, Double_t leadingJetPt, Double_t EtMean, Int_t kindBins)
4499{
fceb275f 4500 // calc DiJet bin according to kindBins parameter
4501
656dc810 4502 Double_t jetBinOk = 0.;
4503 Double_t jetBin = 0.;
4504
4505 Float_t stepInvMass = (fDiJetJetInvMassMax - fDiJetJetInvMassMin)/fDiJetNBinsJetInvMass;
4506 Float_t stepPt = (fDiJetJetPtMax - fDiJetJetPtMin)/fDiJetNBinsJetPt;
4507
4508 if (kindBins == 1)
4509 {
4510 for(Int_t i=0; i<fDiJetNBinsJetInvMass; ++i)
4511 {
656457c9 4512 jetBin = fDiJetJetInvMassMin + i*stepInvMass + stepInvMass/2.;
656dc810 4513 if(((fDiJetJetInvMassMin+i*stepInvMass) <= invMass) &&
190d081e 4514 (fDiJetJetInvMassMin + (i+1)*stepInvMass) > invMass) {jetBinOk = jetBin; break;}
4515 else jetBinOk = -1.;
656dc810 4516 }
656dc810 4517 }
4518 else if (kindBins == 3)
4519 {
4520 for(Int_t i=0; i<fDiJetNBinsJetPt; ++i)
4521 {
656457c9 4522 jetBin = fDiJetJetPtMin + i*stepPt + stepPt/2.;
656dc810 4523 if(((fDiJetJetPtMin+i*stepPt) <= EtMean) &&
190d081e 4524 (fDiJetJetPtMin + (i+1)*stepPt) > EtMean) {jetBinOk = jetBin; break;}
4525 else jetBinOk = -1.;
656dc810 4526 }
656dc810 4527 }
4528 else if (kindBins == 2)
4529 {
4530 for(Int_t i=0; i<fDiJetNBinsJetPt; ++i)
4531 {
656457c9 4532 jetBin = fDiJetJetPtMin + i*stepPt + stepPt/2.;
656dc810 4533 if(((fDiJetJetPtMin+i*stepPt) <= leadingJetPt) &&
190d081e 4534 (fDiJetJetPtMin + (i+1)*stepPt) > leadingJetPt) {jetBinOk = jetBin; break;}
4535 else jetBinOk = -1.;
656dc810 4536 }
656dc810 4537 }
4538 else {Printf("WARNING: kindBins wrongly set ! Please make sure to call SetKindSlices() and set the kind parameter to 1, 2 or 3.\n");}
4539
4540 return jetBinOk;
4541
4542}
4543
4544
4545//______________________________________________________________
4546void AliAnalysisTaskFragmentationFunction::Terminate(Option_t *)
4547{
4548 // terminated
4549
4550 if(fDebug > 1) printf("AliAnalysisTaskFragmentationFunction::Terminate() \n");
4551}
4552
4553//_________________________________________________________________________________
4554Int_t AliAnalysisTaskFragmentationFunction::GetListOfTracks(TList *list, Int_t type)
4555{
4556 // fill list of tracks selected according to type
4557
4558 if(fDebug > 2) Printf("%s:%d Selecting tracks with %d", (char*)__FILE__,__LINE__,type);
4559
4560 if(!list){
4561 if(fDebug>1) Printf("%s:%d no input list", (char*)__FILE__,__LINE__);
4562 return -1;
4563 }
4564
ab851c96 4565 if(!fAOD) return -1;
4566
3af23c82 4567 if(!fAOD->GetTracks()) return 0;
4568
656dc810 4569 if(type==kTrackUndef) return 0;
4570
4571 Int_t iCount = 0;
656dc810 4572
39e2b057 4573 if(type==kTrackAODExtraCuts || type==kTrackAODExtraonlyCuts || type==kTrackAODExtra || type==kTrackAODExtraonly){
4574
4575 TClonesArray *aodExtraTracks = dynamic_cast<TClonesArray*>(fAOD->FindListObject("aodExtraTracks"));
4576 if(!aodExtraTracks)return iCount;
4577 for(int it =0; it<aodExtraTracks->GetEntries(); it++) {
4578 AliVParticle *track = dynamic_cast<AliVParticle*> ((*aodExtraTracks)[it]);
4579 if (!track) continue;
4580
4581 AliAODTrack *tr = dynamic_cast<AliAODTrack*> (track);
4582 if(!tr)continue;
4583
4584 if(type==kTrackAODExtraCuts || type==kTrackAODExtraonlyCuts){
ab851c96 4585
39e2b057 4586 if((fFilterMask>0)&&!(tr->TestFilterBit(fFilterMask))) continue;
4587
4588 if(tr->Eta() < fTrackEtaMin || tr->Eta() > fTrackEtaMax) continue;
4589 if(tr->Phi() < fTrackPhiMin || tr->Phi() > fTrackPhiMax) continue;
4590 if(tr->Pt() < fTrackPtCut) continue;
4591 }
4592
4593 list->Add(tr);
4594 iCount++;
4595 }
4596 }
4597
4598 if(type==kTrackAODCuts || type==kTrackAODQualityCuts || type==kTrackAOD || type==kTrackAODExtraCuts || type==kTrackAODExtra){
4599
4600 // all rec. tracks, esd filter mask, eta range
656dc810 4601
4602 for(Int_t it=0; it<fAOD->GetNumberOfTracks(); ++it){
4603 AliAODTrack *tr = fAOD->GetTrack(it);
4604
39e2b057 4605 if(type == kTrackAODCuts || type==kTrackAODQualityCuts || type==kTrackAODExtraCuts){
4606
656dc810 4607 if((fFilterMask>0)&&!(tr->TestFilterBit(fFilterMask))) continue;
190d081e 4608 if(type == kTrackAODCuts){
4609 if(tr->Eta() < fTrackEtaMin || tr->Eta() > fTrackEtaMax) continue;
4610 if(tr->Phi() < fTrackPhiMin || tr->Phi() > fTrackPhiMax) continue;
4611 if(tr->Pt() < fTrackPtCut) continue;
4612 }
656dc810 4613 }
4614 list->Add(tr);
4615 iCount++;
4616 }
4617 }
4618 else if (type==kTrackKineAll || type==kTrackKineCharged || type==kTrackKineChargedAcceptance){
4619 // kine particles, all or rather charged
4620 if(!fMCEvent) return iCount;
4621
4622 for(Int_t it=0; it<fMCEvent->GetNumberOfTracks(); ++it){
4623 AliMCParticle* part = (AliMCParticle*) fMCEvent->GetTrack(it);
4624
4625 if(type == kTrackKineCharged || type == kTrackKineChargedAcceptance){
4626 if(part->Charge()==0) continue;
4627
4628 if(type == kTrackKineChargedAcceptance &&
4629 ( part->Eta() < fTrackEtaMin
4630 || part->Eta() > fTrackEtaMax
4631 || part->Phi() < fTrackPhiMin
4632 || part->Phi() > fTrackPhiMax
4633 || part->Pt() < fTrackPtCut)) continue;
4634 }
4635
4636 list->Add(part);
4637 iCount++;
4638 }
4639 }
d5e8640d 4640 else if (type==kTrackAODMCCharged || type==kTrackAODMCAll || type==kTrackAODMCChargedAcceptance || type==kTrackAODMCChargedSec) {
656dc810 4641 // MC particles (from AOD), physical primaries, all or rather charged or rather charged within acceptance
4642 if(!fAOD) return -1;
4643
4644 TClonesArray *tca = dynamic_cast<TClonesArray*>(fAOD->FindListObject(AliAODMCParticle::StdBranchName()));
4645 if(!tca)return iCount;
4646
4647 for(int it=0; it<tca->GetEntriesFast(); ++it){
4648 AliAODMCParticle *part = dynamic_cast<AliAODMCParticle*>(tca->At(it));
ab851c96 4649 if(!part)continue;
d5e8640d 4650 if(type != kTrackAODMCChargedSec && !part->IsPhysicalPrimary())continue;
4651 if(type == kTrackAODMCChargedSec && part->IsPhysicalPrimary())continue;
656dc810 4652
d5e8640d 4653 if (type==kTrackAODMCCharged || type==kTrackAODMCChargedAcceptance || type==kTrackAODMCChargedSec){
656dc810 4654 if(part->Charge()==0) continue;
4655 if(type==kTrackAODMCChargedAcceptance &&
4656 ( part->Eta() > fTrackEtaMax
4657 || part->Eta() < fTrackEtaMin
4658 || part->Phi() > fTrackPhiMax
4659 || part->Phi() < fTrackPhiMin
4660 || part->Pt() < fTrackPtCut)) continue;
4661 }
4662
4663 list->Add(part);
4664 iCount++;
4665 }
4666 }
4667
4668 list->Sort();
4669 return iCount;
4670
4671}
4672// _______________________________________________________________________________
4673Int_t AliAnalysisTaskFragmentationFunction::GetListOfJets(TList *list, Int_t type)
4674{
4675 // fill list of jets selected according to type
3af23c82 4676
656dc810 4677 if(!list){
4678 if(fDebug>1) Printf("%s:%d no input list", (char*)__FILE__,__LINE__);
4679 return -1;
4680 }
4681
4682 if(type == kJetsRec || type == kJetsRecAcceptance){ // reconstructed jets
4683
4684 if(fBranchRecJets.Length()==0){
4685 Printf("%s:%d no rec jet branch specified", (char*)__FILE__,__LINE__);
4686 if(fDebug>1)fAOD->Print();
4687 return 0;
4688 }
4689
cb76764e 4690 TClonesArray *aodRecJets = 0;
d5e8640d 4691 if(fBranchRecJets.Length()) aodRecJets = dynamic_cast<TClonesArray*>(fAODJets->FindListObject(fBranchRecJets.Data()));
4692 if(!aodRecJets) aodRecJets = dynamic_cast<TClonesArray*>(fAODJets->GetList()->FindObject(fBranchRecJets.Data()));
40445651 4693 if(fAODExtension&&!aodRecJets) aodRecJets = dynamic_cast<TClonesArray*>(fAODExtension->GetAOD()->FindListObject(fBranchRecJets.Data()));
656dc810 4694
4695 if(!aodRecJets){
4696 if(fBranchRecJets.Length()) Printf("%s:%d no reconstructed jet array with name %s in AOD", (char*)__FILE__,__LINE__,fBranchRecJets.Data());
656dc810 4697 if(fDebug>1)fAOD->Print();
4698 return 0;
4699 }
4700
3af23c82 4701 // Reorder jet pt and fill new temporary AliAODJet objects
656dc810 4702 Int_t nRecJets = 0;
4703
4704 for(Int_t ij=0; ij<aodRecJets->GetEntries(); ++ij){
4705
4706 AliAODJet *tmp = dynamic_cast<AliAODJet*>(aodRecJets->At(ij));
4707 if(!tmp) continue;
3af23c82 4708
656dc810 4709 if( tmp->Pt() < fJetPtCut ) continue;
4710 if( type == kJetsRecAcceptance &&
4711 ( tmp->Eta() < fJetEtaMin
4712 || tmp->Eta() > fJetEtaMax
4713 || tmp->Phi() < fJetPhiMin
4714 || tmp->Phi() > fJetPhiMax )) continue;
656dc810 4715
44b235ce 4716 if(fBckgSubMethod && fBranchRecJets.Contains("B0") &&
3af23c82 4717 fBranchRecJets.Contains("KT")) {
44b235ce 4718
3af23c82 4719 AliAODJet *tmpJet = GetAODBckgSubJet(tmp, fBckgSubMethod);
4720
4721 if(!tmpJet) continue;
cb76764e 4722
3af23c82 4723 list->Add(tmpJet);
44b235ce 4724
3af23c82 4725 nRecJets++;
4726 }
4727 else {
4728 list->Add(tmp);
4729
4730 nRecJets++;
4731 }
4732 }
4733
4734 list->Sort();
4735
656dc810 4736 return nRecJets;
656dc810 4737 }
4738 else if(type == kJetsKine || type == kJetsKineAcceptance){
4739
4740 // generated jets
4741 Int_t nGenJets = 0;
4742
4743 if(!fMCEvent){
4744 if(fDebug>1) Printf("%s:%d no mcEvent",(char*)__FILE__,__LINE__);
4745 return 0;
4746 }
5fde4a38 4747
4748 AliGenEventHeader* genHeader = fMCEvent->GenEventHeader();
4749 AliGenPythiaEventHeader* pythiaGenHeader = dynamic_cast<AliGenPythiaEventHeader*>(genHeader);
4750 AliGenHijingEventHeader* hijingGenHeader = 0x0;
4751
656dc810 4752 if(!pythiaGenHeader){
5fde4a38 4753 hijingGenHeader = dynamic_cast<AliGenHijingEventHeader*>(genHeader);
4754
4755 if(!hijingGenHeader){
4756 Printf("%s:%d no pythiaGenHeader or hijingGenHeader found", (char*)__FILE__,__LINE__);
4757 return 0;
4758 }else{
4759 TLorentzVector mom[4];
4760 AliAODJet* jet[4];
4761 hijingGenHeader->GetJets(mom[0], mom[1], mom[2], mom[3]);
4762
4763 for(Int_t i=0; i<2; ++i){
4764 if(!mom[i].Pt()) continue;
4765 jet[i] = new AliAODJet(mom[i]);
4766
4767 if( type == kJetsKineAcceptance &&
4768 ( jet[i]->Eta() < fJetEtaMin
4769 || jet[i]->Eta() > fJetEtaMax
4770 || jet[i]->Phi() < fJetPhiMin
4771 || jet[i]->Phi() > fJetPhiMax )) continue;
4772
4773 list->Add(jet[i]);
4774 nGenJets++;
4775 }
4776 list->Sort();
4777 return nGenJets;
4778 }
656dc810 4779 }
4780
4781 // fetch the pythia generated jets
4782 for(int ip=0; ip<pythiaGenHeader->NTriggerJets(); ++ip){
4783
4784 Float_t p[4];
4785 AliAODJet *jet = new AliAODJet();
4786 pythiaGenHeader->TriggerJet(ip, p);
4787 jet->SetPxPyPzE(p[0], p[1], p[2], p[3]);
4788
4789 if( type == kJetsKineAcceptance &&
4790 ( jet->Eta() < fJetEtaMin
4791 || jet->Eta() > fJetEtaMax
4792 || jet->Phi() < fJetPhiMin
4793 || jet->Phi() > fJetPhiMax )) continue;
4794
3af23c82 4795 list->Add(jet);
4796 nGenJets++;
656dc810 4797 }
4798 list->Sort();
4799 return nGenJets;
4800 }
4801 else if(type == kJetsGen || type == kJetsGenAcceptance ){
4802
4803 if(fBranchGenJets.Length()==0){
4804 if(fDebug>1) Printf("%s:%d no gen jet branch specified", (char*)__FILE__,__LINE__);
4805 return 0;
4806 }
4807
cb76764e 4808 TClonesArray *aodGenJets = 0;
d5e8640d 4809 if(fBranchGenJets.Length()) aodGenJets = dynamic_cast<TClonesArray*>(fAODJets->FindListObject(fBranchGenJets.Data()));
4810 if(!aodGenJets) aodGenJets = dynamic_cast<TClonesArray*>(fAODJets->GetList()->FindObject(fBranchGenJets.Data()));
40445651 4811 if(fAODExtension&&!aodGenJets) aodGenJets = dynamic_cast<TClonesArray*>(fAODExtension->GetAOD()->FindListObject(fBranchGenJets.Data()));
656dc810 4812
4813 if(!aodGenJets){
4814 if(fDebug>0){
39e2b057 4815 if(fBranchGenJets.Length()) Printf("%s:%d Generated jet branch %s not found",(char*)__FILE__,__LINE__,fBranchGenJets.Data());
656dc810 4816 }
4817 if(fDebug>1)fAOD->Print();
4818 return 0;
4819 }
4820
4821 Int_t nGenJets = 0;
4822
4823 for(Int_t ig=0; ig<aodGenJets->GetEntries(); ++ig){
4824
4825 AliAODJet *tmp = dynamic_cast<AliAODJet*>(aodGenJets->At(ig));
4826 if(!tmp) continue;
4827
4828 if( tmp->Pt() < fJetPtCut ) continue;
4829 if( type == kJetsGenAcceptance &&
4830 ( tmp->Eta() < fJetEtaMin
4831 || tmp->Eta() > fJetEtaMax
4832 || tmp->Phi() < fJetPhiMin
4833 || tmp->Phi() > fJetPhiMax )) continue;
4834
3af23c82 4835 list->Add(tmp);
4836 nGenJets++;
656dc810 4837 }
4838 list->Sort();
4839 return nGenJets;
656dc810 4840 }
39e2b057 4841 else if(type == kJetsEmbedded){ // embedded jets
4842
4843 if(fBranchEmbeddedJets.Length()==0){
4844 Printf("%s:%d no embedded jet branch specified", (char*)__FILE__,__LINE__);
4845 if(fDebug>1)fAOD->Print();
4846 return 0;
4847 }
4848
4849 TClonesArray *aodEmbeddedJets = 0;
4850 if(fBranchEmbeddedJets.Length()) aodEmbeddedJets = dynamic_cast<TClonesArray*>(fAODJets->FindListObject(fBranchEmbeddedJets.Data()));
4851 if(!aodEmbeddedJets) aodEmbeddedJets = dynamic_cast<TClonesArray*>(fAODJets->GetList()->FindObject(fBranchEmbeddedJets.Data()));
4852 if(fAODExtension&&!aodEmbeddedJets) aodEmbeddedJets = dynamic_cast<TClonesArray*>(fAODExtension->GetAOD()->FindListObject(fBranchEmbeddedJets.Data()));
4853
4854 if(!aodEmbeddedJets){
4855 if(fBranchEmbeddedJets.Length()) Printf("%s:%d no reconstructed jet array with name %s in AOD", (char*)__FILE__,__LINE__,fBranchEmbeddedJets.Data());
4856 if(fDebug>1)fAOD->Print();
4857 return 0;
4858 }
4859
4860 // Reorder jet pt and fill new temporary AliAODJet objects
4861 Int_t nEmbeddedJets = 0;
4862
4863 for(Int_t ij=0; ij<aodEmbeddedJets->GetEntries(); ++ij){
4864
4865 AliAODJet *tmp = dynamic_cast<AliAODJet*>(aodEmbeddedJets->At(ij));
4866 if(!tmp) continue;
4867
4868 if( tmp->Pt() < fJetPtCut ) continue;
4869 if( tmp->Eta() < fJetEtaMin
4870 || tmp->Eta() > fJetEtaMax
4871 || tmp->Phi() < fJetPhiMin
4872 || tmp->Phi() > fJetPhiMax ) continue;
4873
4874 list->Add(tmp);
4875 nEmbeddedJets++;
4876 }
4877
4878 list->Sort();
4879
4880 return nEmbeddedJets;
4881 }
656dc810 4882 else{
4883 if(fDebug>0)Printf("%s:%d no such type %d",(char*)__FILE__,__LINE__,type);
4884 return 0;
4885 }
4886}
4887
742ee86c 4888// ___________________________________________________________________________________
4889Int_t AliAnalysisTaskFragmentationFunction::GetListOfBckgJets(TList *list, Int_t type)
656dc810 4890{
742ee86c 4891 // fill list of bgr clusters selected according to type
656dc810 4892
742ee86c 4893 if(type == kJetsRec || type == kJetsRecAcceptance){ // reconstructed jets
67e37e80 4894
742ee86c 4895 if(fBranchRecBckgClusters.Length()==0){
4896 Printf("%s:%d no rec jet branch specified", (char*)__FILE__,__LINE__);
4897 if(fDebug>1)fAOD->Print();
4898 return 0;
4899 }
4900
4901 TClonesArray *aodRecJets = 0;
d5e8640d 4902 if(fBranchRecBckgClusters.Length()) aodRecJets = dynamic_cast<TClonesArray*>(fAODJets->FindListObject(fBranchRecBckgClusters.Data()));
4903 if(!aodRecJets) aodRecJets = dynamic_cast<TClonesArray*>(fAODJets->GetList()->FindObject(fBranchRecBckgClusters.Data()));
4904 if(fAODExtension&&!aodRecJets) aodRecJets = dynamic_cast<TClonesArray*>(fAODExtension->GetAOD()->FindListObject(fBranchRecBckgClusters.Data()));
40445651 4905
742ee86c 4906 if(!aodRecJets){
4907 if(fBranchRecBckgClusters.Length()) Printf("%s:%d no reconstructed jet array with name %s in AOD", (char*)__FILE__,__LINE__,fBranchRecBckgClusters.Data());
4908 if(fDebug>1)fAOD->Print();
4909 return 0;
4910 }
4911
4912 // Reorder jet pt and fill new temporary AliAODJet objects
4913 Int_t nRecJets = 0;
4914
4915 for(Int_t ij=0; ij<aodRecJets->GetEntries(); ++ij){
4916
4917 AliAODJet *tmp = dynamic_cast<AliAODJet*>(aodRecJets->At(ij));
4918 if(!tmp) continue;
4919
4920 // if( tmp->Pt() < fJetPtCut ) continue; // no pt cut on bckg clusters !
4921 if( type == kJetsRecAcceptance &&
4922 ( tmp->Eta() < fJetEtaMin
4923 || tmp->Eta() > fJetEtaMax
4924 || tmp->Phi() < fJetPhiMin
4925 || tmp->Phi() > fJetPhiMax )) continue;
4926
4927 list->Add(tmp);
4928
4929 nRecJets++;
4930
4931 }
4932
4933 list->Sort();
4934
4935 return nRecJets;
4936 }
656dc810 4937
742ee86c 4938 // /*
4939 // MC clusters still Under construction
4940 // */
4941
4942 return 0;
3af23c82 4943}
67e37e80 4944
3af23c82 4945// _________________________________________________________________________________________________________
4946void AliAnalysisTaskFragmentationFunction::SetProperties(THnSparse* h,const Int_t dim, const char** labels)
4947{
4948 // Set properties of THnSparse
67e37e80 4949
3af23c82 4950 for(Int_t i=0; i<dim; i++){
4951 h->GetAxis(i)->SetTitle(labels[i]);
4952 h->GetAxis(i)->SetTitleColor(1);
4953 }
4954}
67e37e80 4955
656dc810 4956// __________________________________________________________________________________________
4957void AliAnalysisTaskFragmentationFunction::SetProperties(TH1* h,const char* x, const char* y)
4958{
4959 //Set properties of histos (x and y title)
4960
4961 h->SetXTitle(x);
4962 h->SetYTitle(y);
4963 h->GetXaxis()->SetTitleColor(1);
4964 h->GetYaxis()->SetTitleColor(1);
4965}
4966
4967// _________________________________________________________________________________________________________
67e37e80 4968void AliAnalysisTaskFragmentationFunction::SetProperties(TH1* h,const char* x, const char* y, const char* z)
656dc810 4969{
4970 //Set properties of histos (x,y and z title)
4971
4972 h->SetXTitle(x);
4973 h->SetYTitle(y);
4974 h->SetZTitle(z);
4975 h->GetXaxis()->SetTitleColor(1);
4976 h->GetYaxis()->SetTitleColor(1);
4977 h->GetZaxis()->SetTitleColor(1);
4978}
4979
4980// ________________________________________________________________________________________________________________________________________________________
6daac008 4981void AliAnalysisTaskFragmentationFunction::GetJetTracksPointing(TList* inputlist, TList* outputlist, const AliAODJet* jet,
4982 const Double_t radius, Double_t& sumPt, const Double_t maxPt, Bool_t& isBadMaxPt)
656dc810 4983{
4984 // fill list of tracks in cone around jet axis
4985
4986 sumPt = 0;
6daac008 4987 isBadMaxPt = kFALSE;
4988
656dc810 4989 Double_t jetMom[3];
4990 jet->PxPyPz(jetMom);
4991 TVector3 jet3mom(jetMom);
4992
4993 for (Int_t itrack=0; itrack<inputlist->GetSize(); itrack++){
4994
4995 AliVParticle* track = dynamic_cast<AliVParticle*>(inputlist->At(itrack));
ab851c96 4996 if(!track)continue;
656dc810 4997 Double_t trackMom[3];
4998 track->PxPyPz(trackMom);
4999 TVector3 track3mom(trackMom);
5000
5001 Double_t dR = jet3mom.DeltaR(track3mom);
5002
5003 if(dR<radius){
5004
5005 outputlist->Add(track);
5006
5007 sumPt += track->Pt();
6daac008 5008
5009 if(maxPt>0 && track->Pt()>maxPt) isBadMaxPt = kTRUE;
656dc810 5010 }
5011 }
6daac008 5012
656dc810 5013 outputlist->Sort();
5014}
5015
5016// ___________________________________________________________________________________________
6daac008 5017void AliAnalysisTaskFragmentationFunction::GetJetTracksTrackrefs(TList* list, const AliAODJet* jet, const Double_t maxPt, Bool_t& isBadMaxPt)
656dc810 5018{
5019 // list of jet tracks from trackrefs
5020
5021 Int_t nTracks = jet->GetRefTracks()->GetEntriesFast();
5022
5023 for (Int_t itrack=0; itrack<nTracks; itrack++) {
5024
5025 AliVParticle* track = dynamic_cast<AliVParticle*>(jet->GetRefTracks()->At(itrack));
5026 if(!track){
5027 AliError("expected ref track not found ");
5028 continue;
5029 }
5030
6daac008 5031 if(maxPt>0 && track->Pt()>maxPt) isBadMaxPt = kTRUE;
656dc810 5032 list->Add(track);
5033 }
5034
5035 list->Sort();
5036}
fe343c6b 5037
5038// _ ________________________________________________________________________________________________________________________________
d5e8640d 5039void AliAnalysisTaskFragmentationFunction::AssociateGenRec(TList* tracksAODMCCharged,TList* tracksRec, TArrayI& indexAODTr,TArrayI& indexMCTr,
5040 TArrayS& isRefGen,TH2F* fh2PtRecVsGen)
fe343c6b 5041{
5042 // associate generated and reconstructed tracks, fill TArrays of list indices
5043
fe343c6b 5044 Int_t nTracksRec = tracksRec->GetSize();
5045 Int_t nTracksGen = tracksAODMCCharged->GetSize();
5046 TClonesArray *tca = dynamic_cast<TClonesArray*>(fAOD->FindListObject(AliAODMCParticle::StdBranchName()));
5047
d5e8640d 5048
fe343c6b 5049 if(!nTracksGen) return;
5050 if(!tca) return;
5051
5052 // set size
5053 indexAODTr.Set(nTracksGen);
5054 indexMCTr.Set(nTracksRec);
d5e8640d 5055 isRefGen.Set(nTracksGen);
fe343c6b 5056
5057 indexAODTr.Reset(-1);
5058 indexMCTr.Reset(-1);
d5e8640d 5059 isRefGen.Reset(0);
fe343c6b 5060
5061 // loop over reconstructed tracks, get generated track
5062
5063 for(Int_t iRec=0; iRec<nTracksRec; iRec++){
5064
5065 AliAODTrack* rectrack = dynamic_cast<AliAODTrack*>(tracksRec->At(iRec));
ab851c96 5066 if(!rectrack)continue;
289a2293 5067 Int_t label = TMath::Abs(rectrack->GetLabel());
fe343c6b 5068
5069 // find MC track in our list
cb76764e 5070 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (tca->At(label));
ab851c96 5071
fe343c6b 5072 Int_t listIndex = -1;
5073 if(gentrack) listIndex = tracksAODMCCharged->IndexOf(gentrack);
5074
5075 if(listIndex>=0){
5076
5077 indexAODTr[listIndex] = iRec;
5078 indexMCTr[iRec] = listIndex;
5079 }
d5e8640d 5080 }
fe343c6b 5081
5082
d5e8640d 5083 // define reference sample of primaries/secondaries (for reconstruction efficiency / contamination)
fe343c6b 5084
5085 for(Int_t iGen=0; iGen<nTracksGen; iGen++){
5086
5087 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (tracksAODMCCharged->At(iGen));
ab851c96 5088 if(!gentrack)continue;
fe343c6b 5089 Int_t pdg = gentrack->GetPdgCode();
5090
5091 // 211 - pi, 2212 - proton, 321 - Kaon, 11 - electron, 13 - muon
5092 if(TMath::Abs(pdg) == 211 || TMath::Abs(pdg) == 2212 || TMath::Abs(pdg) == 321 ||
5093 TMath::Abs(pdg) == 11 || TMath::Abs(pdg) == 13){
5094
d5e8640d 5095 isRefGen[iGen] = kTRUE;
cb76764e 5096
5097 Int_t iRec = indexAODTr[iGen]; // can be -1 if no good reconstructed track
5098
5099 if(iRec>=0){
5100 Float_t genPt = gentrack->Pt();
ab851c96 5101 AliAODTrack* vt = dynamic_cast<AliAODTrack*>(tracksRec->At(iRec));
5102 if(vt){
5103 Float_t recPt = vt->Pt();
d5e8640d 5104 fh2PtRecVsGen->Fill(genPt,recPt);
ab851c96 5105 }
cb76764e 5106 }
fe343c6b 5107 }
5108 }
5109}
5110
5111// _____________________________________________________________________________________________________________________________________________
d5e8640d 5112void AliAnalysisTaskFragmentationFunction::FillSingleTrackHistosRecGen(AliFragFuncQATrackHistos* trackQAGen, AliFragFuncQATrackHistos* trackQARec, TList* tracksGen,
5113 const TArrayI& indexAODTr, const TArrayS& isRefGen){
fe343c6b 5114
cb76764e 5115 // fill QA for single track reconstruction efficiency
fceb275f 5116
fe343c6b 5117 Int_t nTracksGen = tracksGen->GetSize();
5118
5119 if(!nTracksGen) return;
5120
5121 for(Int_t iGen=0; iGen<nTracksGen; iGen++){
5122
d5e8640d 5123 if(isRefGen[iGen] != 1) continue; // select primaries
fe343c6b 5124
5125 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (tracksGen->At(iGen));
d5e8640d 5126 if(!gentrack) continue;
fe343c6b 5127 Double_t ptGen = gentrack->Pt();
5128 Double_t etaGen = gentrack->Eta();
5129 Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi());
5130
5131 // apply same acc & pt cuts as for FF
fe343c6b 5132
5133 if(etaGen < fTrackEtaMin || etaGen > fTrackEtaMax) continue;
5134 if(phiGen < fTrackPhiMin || phiGen > fTrackPhiMax) continue;
5135 if(ptGen < fTrackPtCut) continue;
5136
d5e8640d 5137 if(trackQAGen) trackQAGen->FillTrackQA(etaGen, phiGen, ptGen);
39e2b057 5138
fe343c6b 5139
cb76764e 5140 Int_t iRec = indexAODTr[iGen]; // can be -1 if no good reconstructed track
d5e8640d 5141 if(iRec>=0 && trackQARec) trackQARec->FillTrackQA(etaGen, phiGen, ptGen);
fe343c6b 5142 }
5143}
5144
5145// ______________________________________________________________________________________________________________________________________________________
cb76764e 5146
d5e8640d 5147void AliAnalysisTaskFragmentationFunction::FillJetTrackHistosRecGen(TObject* histGen,TObject* histRec,Double_t jetPtGen,Double_t jetPtRec, TList* jetTrackList, const TList* tracksGen,
5148 const TArrayI& indexAODTr,const TArrayS& isRefGen, const Bool_t useRecJetPt)
5149{
5150 // fill objects for jet track reconstruction efficiency or secondaries contamination
3af23c82 5151 // arguments histGen/histRec can be of different type: AliFragFuncHistos*, AliFragFuncIntraJetHistos*, ...
fe343c6b 5152
5153 Int_t nTracksJet = jetTrackList->GetSize(); // list with AODMC tracks
5154
5155 if(!nTracksJet) return;
5156
cb76764e 5157 Bool_t incrementJetPtGenFF = kTRUE; // needed in case we fill FFHistos
5158 Bool_t incrementJetPtRecFF = kTRUE; // needed in case we fill FFHistos
5159
fe343c6b 5160 for(Int_t iTr=0; iTr<nTracksJet; iTr++){
5161
5162 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (jetTrackList->At(iTr));
ab851c96 5163 if(!gentrack)continue;
fe343c6b 5164 // find jet track in gen tracks list
5165 Int_t iGen = tracksGen->IndexOf(gentrack);
5166
5167 if(iGen<0){
5168 if(fDebug>0) Printf("%s:%d gen jet track not found ",(char*)__FILE__,__LINE__);
5169 continue;
5170 }
5171
d5e8640d 5172
5173 if(isRefGen[iGen] != 1) continue; // select primaries
5174
fe343c6b 5175 Double_t ptGen = gentrack->Pt();
5176 Double_t etaGen = gentrack->Eta();
5177 Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi());
5178
5179 // apply same acc & pt cuts as for FF
fe343c6b 5180
5181 if(etaGen < fTrackEtaMin || etaGen > fTrackEtaMax) continue;
5182 if(phiGen < fTrackPhiMin || phiGen > fTrackPhiMax) continue;
5183 if(ptGen < fTrackPtCut) continue;
5184
2d1d1b60 5185 Double_t z = ptGen / jetPtGen;
fe343c6b 5186 Double_t xi = 0;
5187 if(z>0) xi = TMath::Log(1/z);
5188
cb76764e 5189 Int_t iRec = indexAODTr[iGen]; // can be -1 if no good reconstructed track
5190 Bool_t isRec = (iRec>=0) ? kTRUE : kFALSE;
5191
d5e8640d 5192 if(dynamic_cast<AliFragFuncHistos*>(histGen) || dynamic_cast<AliFragFuncHistos*>(histRec)){ // histGen can be NULL for secondaries -> ||
cb76764e 5193
ab851c96 5194 // after checking can afford normal cast
a5592cfa 5195 AliFragFuncHistos* ffhistGen = (AliFragFuncHistos*) (histGen);
5196 AliFragFuncHistos* ffhistRec = (AliFragFuncHistos*) (histRec);
cb76764e 5197
a5592cfa 5198 if(ffhistGen){
5199 if(useRecJetPt) ffhistGen->FillFF( ptGen, jetPtRec, incrementJetPtGenFF );
5200 else ffhistGen->FillFF( ptGen, jetPtGen, incrementJetPtGenFF );
d5e8640d 5201
5202 incrementJetPtGenFF = kFALSE;
5203 }
fe343c6b 5204
d5e8640d 5205
a5592cfa 5206 if(ffhistRec && isRec){
d5e8640d 5207
a5592cfa 5208 if(useRecJetPt) ffhistRec->FillFF( ptGen, jetPtRec, incrementJetPtRecFF );
5209 else ffhistRec->FillFF( ptGen, jetPtGen, incrementJetPtRecFF );
cb76764e 5210
5211 incrementJetPtRecFF = kFALSE;
5212 }
5213 }
5214 else if(dynamic_cast<AliFragFuncIntraJetHistos*>(histGen) && dynamic_cast<AliFragFuncIntraJetHistos*>(histRec)){
5215
5216 // eff for IJ histos ...
5217
5218 }
fe343c6b 5219 }
5220}
1da9498b 5221
39e2b057 5222// _____________________________________________________________________________________________________________________________________________
5223void AliAnalysisTaskFragmentationFunction::FillTwoTrackHistosRecGen(TList* tracksGen, /*TList* tracksRec, const TArrayI& indexAODTr, */ const TArrayS& isRefGen){
5224
5225 Int_t nTracksGen = tracksGen->GetSize();
5226
5227 if(!nTracksGen) return;
5228
5229 Int_t highPtIndices[nTracksGen];
5230 Int_t nHighPt = 0;
5231
5232 for(Int_t iGen=0; iGen<nTracksGen; iGen++){
5233
5234 if(isRefGen[iGen] != 1) continue; // select primaries
5235
5236 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (tracksGen->At(iGen));
5237 if(!gentrack) continue;
5238 Double_t ptGen = gentrack->Pt();
5239 Double_t etaGen = gentrack->Eta();
5240 Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi());
5241
5242 if(etaGen < fTrackEtaMin || etaGen > fTrackEtaMax) continue;
5243 if(phiGen < fTrackPhiMin || phiGen > fTrackPhiMax) continue;
5244
5245 if(ptGen>10 ){
5246 highPtIndices[nHighPt++] = iGen;
5247 }
5248 }
5249
5250
5251 for(Int_t nHPT = 0; nHPT<nHighPt; nHPT++){ // high pt tracks loop
5252
5253 Int_t indexHPT = highPtIndices[nHPT];
5254
5255 AliAODMCParticle* genHPTtrack = dynamic_cast<AliAODMCParticle*> (tracksGen->At(indexHPT));
5256 if(!genHPTtrack) continue;
5257
5258 Double_t trackMomHPT[3];
5259 genHPTtrack->PxPyPz(trackMomHPT);
5260 TVector3 track3MomHPT(trackMomHPT);
5261
5262
5263 Double_t distNN = 10;
5264 Double_t ptNN = 0;
5265 Int_t indexNN = -1;
5266
5267 for(Int_t iGen=0; iGen<nTracksGen; iGen++){ // all gen tracks loop
5268
5269 if(isRefGen[iGen] != 1) continue; // select primaries
5270
5271 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (tracksGen->At(iGen));
5272 if(!gentrack) continue;
5273
5274 Double_t ptGen = gentrack->Pt();
5275 Double_t etaGen = gentrack->Eta();
5276 Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi());
5277
5278 if(etaGen < fTrackEtaMin || etaGen > fTrackEtaMax) continue;
5279 if(phiGen < fTrackPhiMin || phiGen > fTrackPhiMax) continue;
5280 if(ptGen < fTrackPtCut) continue;
5281
5282
5283 Double_t gentrackMom[3];
5284 gentrack->PxPyPz(gentrackMom);
5285 TVector3 gentrack3Mom(gentrackMom);
5286
5287 Double_t dR = gentrack3Mom.DeltaR(track3MomHPT);
5288
5289 if(iGen != indexHPT && dR<distNN){
5290 distNN = dR;
5291 ptNN = ptGen;
5292 indexNN = iGen;
5293 }
5294 }
5295 }
5296}
5297
3af23c82 5298// _____________________________________________________________________________________________________________________________________________
5299void AliAnalysisTaskFragmentationFunction::FillSingleTrackResponse(THnSparse* hnResponse, TList* tracksGen, TList* tracksRec,
5300 const TArrayI& indexAODTr, const TArrayS& isGenPrim)
5301{
5302 // fill response matrix for single tracks
5303
5304
5305 Int_t nTracksGen = tracksGen->GetSize();
5306
5307 if(!nTracksGen) return;
5308
5309 for(Int_t iGen=0; iGen<nTracksGen; iGen++){
5310
5311 if(isGenPrim[iGen] != 1) continue; // select primaries
5312
5313 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (tracksGen->At(iGen));
ab851c96 5314 if(!gentrack)continue;
3af23c82 5315 Double_t ptGen = gentrack->Pt();
5316 Double_t etaGen = gentrack->Eta();
5317 Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi());
5318
5319 // apply same acc & pt cuts as for FF
5320 if(etaGen < fTrackEtaMin || etaGen > fTrackEtaMax) continue;
5321 if(phiGen < fTrackPhiMin || phiGen > fTrackPhiMax) continue;
5322 if(ptGen < fTrackPtCut) continue;
5323
5324 Int_t iRec = indexAODTr[iGen]; // can be -1 if no good reconstructed track
5325 if(iRec>=0){
5326 AliAODTrack* rectrack = dynamic_cast<AliAODTrack*>(tracksRec->At(iRec));
ab851c96 5327 if(!rectrack)continue;
3af23c82 5328 Double_t ptRec = rectrack->Pt();
5329
5330 Double_t entries[2] = {ptRec,ptGen}; // AliCorrFW convention: gen vs rec
5331 hnResponse->Fill(entries);
39e2b057 5332
5333 Double_t invPtGen = 0;
5334 if(ptGen) invPtGen = 1/ptGen;
5335
5336 Double_t invPtRec = 0;
5337 if(ptRec) invPtRec = 1/ptRec;
5338
5339 fh2SingleInvPtRecMnGenVsPtGen->Fill(ptGen,invPtRec - invPtGen);
3af23c82 5340 }
5341 }
5342}
5343
5344
5345// ______________________________________________________________________________________________________________________________________________________
5346void AliAnalysisTaskFragmentationFunction::FillJetTrackResponse(THnSparse* hnResponsePt, THnSparse* hnResponseZ, THnSparse* hnResponseXi,
5347 Double_t jetPtGen, Double_t jetPtRec, TList* jetTrackList,
5348 const TList* tracksGen, TList* tracksRec, const TArrayI& indexAODTr, const TArrayS& isGenPrim,const Bool_t useRecJetPt)
5349{
5350 // fill response matrix for tracks in jets
5351
5352 Int_t nTracksJet = jetTrackList->GetSize(); // list with AODMC tracks
5353
5354 if(!nTracksJet) return;
5355
5356 for(Int_t iTr=0; iTr<nTracksJet; iTr++){
5357
5358 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (jetTrackList->At(iTr));
ab851c96 5359 if(!gentrack)continue;
3af23c82 5360 // find jet track in gen tracks list
5361 Int_t iGen = tracksGen->IndexOf(gentrack);
5362
5363 if(iGen<0){
5364 if(fDebug>0) Printf("%s:%d gen jet track not found ",(char*)__FILE__,__LINE__);
5365 continue;
5366 }
5367
5368 if(isGenPrim[iGen] != 1) continue; // select primaries
5369
5370 Double_t ptGen = gentrack->Pt();
5371 Double_t etaGen = gentrack->Eta();
5372 Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi());
5373
5374 // apply same acc & pt cuts as for FF
5375
5376 if(etaGen < fTrackEtaMin || etaGen > fTrackEtaMax) continue;
5377 if(phiGen < fTrackPhiMin || phiGen > fTrackPhiMax) continue;
5378 if(ptGen < fTrackPtCut) continue;
5379
742ee86c 5380 Double_t zGen = ptGen / jetPtRec;
3af23c82 5381 Double_t xiGen = 0;
5382 if(zGen>0) xiGen = TMath::Log(1/zGen);
5383
5384 Int_t iRec = indexAODTr[iGen]; // can be -1 if no good reconstructed track
5385
5386 if(iRec>=0){
5387
5388 AliAODTrack* rectrack = dynamic_cast<AliAODTrack*>(tracksRec->At(iRec));
ab851c96 5389 if(rectrack){
5390 Double_t ptRec = rectrack->Pt();
5391
742ee86c 5392 Double_t zRec = ptRec / jetPtRec;
ab851c96 5393 Double_t xiRec = 0;
5394 if(zRec>0) xiRec = TMath::Log(1/zRec);
3af23c82 5395
ab851c96 5396 Double_t jetPt = useRecJetPt ? jetPtRec : jetPtGen;
5397
5398 Double_t entriesPt[3] = {jetPt,ptRec,ptGen}; // AliCorrFW convention: gen vs rec
5399 Double_t entriesZ[3] = {jetPt,zRec,zGen};
5400 Double_t entriesXi[3] = {jetPt,xiRec,xiGen};
5401
5402 hnResponsePt->Fill(entriesPt);
5403 hnResponseZ->Fill(entriesZ);
5404 hnResponseXi->Fill(entriesXi);
5405 }
3af23c82 5406 }
5407 }
5408}
5409
5410// _____________________________________________________________________________________________________________________________________________________________________
a5592cfa 5411void AliAnalysisTaskFragmentationFunction::GetTracksTiltedwrpJetAxis(Float_t alpha, TList* inputlist, TList* outputlist, const AliAODJet* jet, Double_t radius,Double_t& sumPt)
1da9498b 5412{
5413 // List of tracks in cone perpendicular to the jet azimuthal direction
5414
5415 Double_t jetMom[3];
5416 jet->PxPyPz(jetMom);
67e37e80 5417
1da9498b 5418 TVector3 jet3mom(jetMom);
5419 // Rotate phi and keep eta unchanged
3af23c82 5420 Double_t etaTilted = jet3mom.Eta();
5421 Double_t phiTilted = TVector2::Phi_0_2pi(jet3mom.Phi()) + alpha;
5422 if(phiTilted > 2*TMath::Pi()) phiTilted = phiTilted - 2*TMath::Pi();
1da9498b 5423
5424 for (Int_t itrack=0; itrack<inputlist->GetSize(); itrack++){
5425
39e2b057 5426 // embedded tracks
5427 if( fUseExtraTracksBgr != 1){
5428 if(AliAODTrack* trackAOD = dynamic_cast<AliAODTrack*> (inputlist->At(itrack))){
5429 if(fUseExtraTracksBgr == 0 && ((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5430 if(fUseExtraTracksBgr == -1 && !((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5431 }
5432 }
5433
1da9498b 5434 AliVParticle* track = dynamic_cast<AliVParticle*>(inputlist->At(itrack));
ab851c96 5435 if(!track)continue;
1da9498b 5436 Double_t trackMom[3];
5437 track->PxPyPz(trackMom);
5438 TVector3 track3mom(trackMom);
5439
3af23c82 5440 Double_t deta = track3mom.Eta() - etaTilted;
5441 Double_t dphi = TMath::Abs(track3mom.Phi() - phiTilted);
5442 if (dphi > TMath::Pi()) dphi = 2. * TMath::Pi() - dphi;
5443 Double_t dR = TMath::Sqrt(deta * deta + dphi * dphi);
5444
1da9498b 5445 if(dR<=radius){
5446 outputlist->Add(track);
5447 sumPt += track->Pt();
5448 }
5449 }
5450
5451}
5452
5453// ________________________________________________________________________________________________________________________________________________________
a5592cfa 5454void AliAnalysisTaskFragmentationFunction::GetTracksTiltedwrpJetAxisWindow(Float_t alpha, TList* inputlist, TList* outputlist, const AliAODJet* jet, Double_t radius,Double_t& sumPt,Double_t &normFactor)
3af23c82 5455{
5456 // List of tracks in cone perpendicular to the jet azimuthal direction
5457
5458 Double_t jetMom[3];
5459 jet->PxPyPz(jetMom);
5460
5461 TVector3 jet3mom(jetMom);
5462 // Rotate phi and keep eta unchanged
5463 Double_t etaTilted = jet3mom.Eta();
5464 Double_t phiTilted = TVector2::Phi_0_2pi(jet3mom.Phi()) + alpha;
5465 if(phiTilted > 2*TMath::Pi()) phiTilted = phiTilted - 2*TMath::Pi();
5466
5467 for (Int_t itrack=0; itrack<inputlist->GetSize(); itrack++)
5468 {
ab851c96 5469
39e2b057 5470 // embedded tracks
5471 if( fUseExtraTracksBgr != 1){
5472 if(AliAODTrack* trackAOD = dynamic_cast<AliAODTrack*> (inputlist->At(itrack))){
5473 if(fUseExtraTracksBgr == 0 && ((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5474 if(fUseExtraTracksBgr == -1 && !((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5475 }
5476 }
5477
3af23c82 5478 AliVParticle* track = dynamic_cast<AliVParticle*>(inputlist->At(itrack));
ab851c96 5479 if(!track)continue;
3af23c82 5480 Float_t trackEta = track->Eta();
5481 Float_t trackPhi = track->Phi();
5482
942bf1b4 5483 if( ( phiTilted-radius >= 0 ) && ( phiTilted+radius <= 2*TMath::Pi()))
3af23c82 5484 {
5485 if((trackPhi<=phiTilted+radius) &&
5486 (trackPhi>=phiTilted-radius) &&
942bf1b4 5487 (trackEta<=fTrackEtaMax)&&(trackEta>=fTrackEtaMin)) // 0.9 and - 0.9
3af23c82 5488 {
5489 outputlist->Add(track);
5490 sumPt += track->Pt();
5491 }
5492 }
5493 else if( phiTilted-radius < 0 )
5494 {
5495 if((( trackPhi < phiTilted+radius ) ||
5496 ( trackPhi > 2*TMath::Pi()-(radius-phiTilted) )) &&
5497 (( trackEta <= fTrackEtaMax ) && ( trackEta >= fTrackEtaMin )))
5498 {
5499 outputlist->Add(track);
5500 sumPt += track->Pt();
5501 }
5502 }
5503 else if( phiTilted+radius > 2*TMath::Pi() )
5504 {
5505 if((( trackPhi > phiTilted-radius ) ||
942bf1b4 5506 ( trackPhi < phiTilted+radius-2*TMath::Pi() )) &&
3af23c82 5507 (( trackEta <= fTrackEtaMax ) && ( trackEta >= fTrackEtaMin )))
5508 {
5509 outputlist->Add(track);
5510 sumPt += track->Pt();
5511 }
5512 }
5513 }
5514
5515 // Jet area - Temporarily added should be modified with the proper jet area value
5516 Float_t areaJet = CalcJetArea(etaTilted,radius);
5517 Float_t areaTilted = 2*radius*(fTrackEtaMax-fTrackEtaMin);
5518
5519 normFactor = (Float_t) 1. / (areaJet / areaTilted);
5520
5521}
5522
5523
5524// ________________________________________________________________________________________________________________________________________________________
5525void AliAnalysisTaskFragmentationFunction::GetTracksOutOfNJets(Int_t nCases, TList* inputlist, TList* outputlist, TList* jetlist, Double_t& sumPt)
1da9498b 5526{
5527 // List of tracks outside cone around N jet axis
5528 // Particles taken randomly
5529
5530 sumPt = 0;
5531 // Int_t nj = jetlist->GetSize();
5532 Float_t rc = GetFFRadius();
5533 Float_t rcl = GetFFBckgRadius();
5534
5535 // Estimate jet and background areas
5536 Float_t* areaJet = new Float_t[nCases];
ab851c96 5537 memset(areaJet, 0, sizeof(Float_t) * nCases);
1da9498b 5538 Float_t* areaJetLarge = new Float_t[nCases];
ab851c96 5539 memset(areaJetLarge, 0, sizeof(Float_t) * nCases);
1da9498b 5540 Float_t areaFull = (fTrackEtaMax-fTrackEtaMin)*(fTrackPhiMax-fTrackPhiMin);
5541 Float_t areaOut = areaFull;
5542
5543 //estimate jets and background areas
5544 Int_t nOut = 0;
5545 Int_t ijet = 0;
5546 TList* templist = new TList();
5547 TClonesArray *vect3Jet = new TClonesArray("TVector3",nCases);
5548
5549 for(Int_t ij=0; ij<nCases; ++ij)
5550 {
5551 // Get jet information
5552 AliAODJet* jet = dynamic_cast<AliAODJet*>(jetlist->At(ij));
ab851c96 5553 if(!jet)continue;
1da9498b 5554 TVector3 jet3mom;
5555 jet3mom.SetPtEtaPhi(jet->Pt(),jet->Eta(),jet->Phi());
5556 new((*vect3Jet)[ijet]) TVector3((TVector3)jet3mom);
5557 Float_t etaJet = (Float_t)((TVector3*) vect3Jet->At(ij))->Eta();
5558
5559 // Jet area
5560 areaJet[ij] = CalcJetArea(etaJet,rc);
5561
5562 // Area jet larger angle
5563 areaJetLarge[ij] = CalcJetArea(etaJet,rcl);
5564
5565 // Outside jet area
5566 areaOut = areaOut - areaJetLarge[ij];
5567 ijet++;
5568 }
5569
5570 // List of all tracks outside jet areas
5571 for (Int_t itrack=0; itrack<inputlist->GetSize(); itrack++){
5572
39e2b057 5573 // embedded tracks
5574 if( fUseExtraTracksBgr != 1){
5575 if(AliAODTrack* trackAOD = dynamic_cast<AliAODTrack*> (inputlist->At(itrack))){
5576 if(fUseExtraTracksBgr == 0 && ((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5577 if(fUseExtraTracksBgr == -1 && !((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5578 }
5579 }
5580
1da9498b 5581 AliVParticle* track = dynamic_cast<AliVParticle*>(inputlist->At(itrack));
ab851c96 5582 if(!track)continue;
1da9498b 5583 Double_t trackMom[3];
5584 track->PxPyPz(trackMom);
5585 TVector3 track3mom(trackMom);
5586
5587 Double_t *dR = new Double_t[nCases];
5588 for(Int_t ij=0; ij<nCases; ij++)
5589 dR[ij] = (Double_t)((TVector3*) vect3Jet->At(ij))->DeltaR(track3mom);
5590
5591 if((nCases==1 && (dR[0]>rcl)) ||
5592 (nCases==2 && (dR[0]>rcl && dR[1]>rcl)) ||
5593 (nCases==3 && (dR[0]>rcl && dR[1]>rcl && dR[2]>rcl)))
5594 {
5595 templist->Add(track);
5596 nOut++;
5597 }
5598 delete [] dR;
5599 }
5600
67e37e80 5601 // Take tracks randomly
5602 Int_t nScaled = (Int_t) (nOut * areaJet[0] / areaOut + 0.5);
5603 TArrayI* ar = new TArrayI(nOut);
1da9498b 5604
67e37e80 5605 for(Int_t init=0; init<nOut; init++)
5606 (*ar)[init] = init;
1da9498b 5607
67e37e80 5608 Int_t *randIndex = new Int_t[nScaled];
5609 for(Int_t init2=0; init2<nScaled; init2++)
5610 randIndex[init2] = -1;
1da9498b 5611
67e37e80 5612 // Select nScaled different random numbers in nOut
5613 for(Int_t i=0; i<nScaled; i++)
1da9498b 5614 {
67e37e80 5615 Int_t* tmpArr = new Int_t[nOut-i];
5616 Int_t temp = fRandom->Integer(nOut-i);
5617 for(Int_t ind = 0; ind< ar->GetSize()-1; ind++)
1da9498b 5618 {
67e37e80 5619 if(ind<temp) tmpArr[ind] = (*ar)[ind];
5620 else tmpArr[ind] = (*ar)[ind+1];
1da9498b 5621 }
67e37e80 5622 randIndex[i] = (*ar)[temp];
1da9498b 5623
67e37e80 5624 ar->Set(nOut-i-1,tmpArr);
5625
5626 delete [] tmpArr;
5627
5628 }
5629
5630 for(Int_t ipart=0; ipart<nScaled; ipart++)
5631 {
1ea145ef 5632 AliVParticle* track = (AliVParticle*)(templist->At(randIndex[ipart]));
67e37e80 5633 outputlist->Add(track);
5634 sumPt += track->Pt();
5635 }
1da9498b 5636
5637 outputlist->Sort();
5638
1da9498b 5639 delete vect3Jet;
5640 delete templist;
5641 delete [] areaJetLarge;
5642 delete [] areaJet;
67e37e80 5643 delete ar;
5644 delete [] randIndex;
1da9498b 5645
5646}
5647
5648// ________________________________________________________________________________________________________________________________________________________
3af23c82 5649void AliAnalysisTaskFragmentationFunction::GetTracksOutOfNJetsStat(Int_t nCases, TList* inputlist, TList* outputlist, TList* jetlist, Double_t& sumPt, Double_t &normFactor)
1da9498b 5650{
5651 // List of tracks outside cone around N jet axis
5652 // All particles taken + final scaling factor
5653
5654 sumPt = 0;
5655 Float_t rc = GetFFRadius();
5656 Float_t rcl = GetFFBckgRadius();
5657
5658 // Estimate jet and background areas
5659 Float_t* areaJet = new Float_t[nCases];
9939142f 5660 memset(areaJet, 0, sizeof(Float_t) * nCases);
1da9498b 5661 Float_t* areaJetLarge = new Float_t[nCases];
9939142f 5662 memset(areaJetLarge, 0, sizeof(Float_t) * nCases);
1da9498b 5663 Float_t areaFull = (fTrackEtaMax-fTrackEtaMin)*(fTrackPhiMax-fTrackPhiMin);
5664 Float_t areaOut = areaFull;
5665
5666 //estimate jets and background areas
5667 Int_t nOut = 0;
5668 Int_t ijet = 0;
5669 TClonesArray *vect3Jet = new TClonesArray("TVector3",nCases);
5670
5671 for(Int_t ij=0; ij<nCases; ++ij)
5672 {
5673 // Get jet information
5674 AliAODJet* jet = dynamic_cast<AliAODJet*>(jetlist->At(ij));
ab851c96 5675 if(!jet)continue;
1da9498b 5676 TVector3 jet3mom;
5677 jet3mom.SetPtEtaPhi(jet->Pt(),jet->Eta(),jet->Phi());
5678 new((*vect3Jet)[ijet]) TVector3((TVector3)jet3mom);
5679 Float_t etaJet = (Float_t)((TVector3*) vect3Jet->At(ij))->Eta();
5680
5681 // Jet area
5682 areaJet[ij] = CalcJetArea(etaJet,rc);
5683
5684 // Area jet larger angle
5685 areaJetLarge[ij] = CalcJetArea(etaJet,rcl);
5686
5687 // Outside jets area
5688 areaOut = areaOut - areaJetLarge[ij];
5689 ijet++;
5690 }
5691
5692 for (Int_t itrack=0; itrack<inputlist->GetSize(); itrack++){
5693
39e2b057 5694 // embedded tracks
5695 if( fUseExtraTracksBgr != 1){
5696 if(AliAODTrack* trackAOD = dynamic_cast<AliAODTrack*> (inputlist->At(itrack))){
5697 if(fUseExtraTracksBgr == 0 && ((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5698 if(fUseExtraTracksBgr == -1 && !((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5699 }
5700 }
5701
1da9498b 5702 AliVParticle* track = dynamic_cast<AliVParticle*>(inputlist->At(itrack));
ab851c96 5703 if(!track)continue;
1da9498b 5704 Double_t trackMom[3];
5705 track->PxPyPz(trackMom);
5706 TVector3 track3mom(trackMom);
5707
5708 Double_t *dR = new Double_t[nCases];
5709 for(Int_t ij=0; ij<nCases; ij++)
5710 dR[ij] = (Double_t)((TVector3*) vect3Jet->At(ij))->DeltaR(track3mom);
5711
5712 if((nCases==0) ||
5713 (nCases==1 && (dR[0]>rcl)) ||
5714 (nCases==2 && (dR[0]>rcl && dR[1]>rcl)) ||
5715 (nCases==3 && (dR[0]>rcl && dR[1]>rcl && dR[2]>rcl)))
5716 {
5717 outputlist->Add(track);
5718 sumPt += track->Pt();
5719 nOut++;
5720 }
5721 delete [] dR;
5722 }
5723
5724 if(nCases==0) areaJet[0] = TMath::Pi()*rc*rc;
5725 normFactor = (Float_t) 1./(areaJet[0] / areaOut);
5726
5727 outputlist->Sort();
5728
5729 delete vect3Jet;
5730 delete [] areaJetLarge;
5731 delete [] areaJet;
5732
5733}
5734
5735// ______________________________________________________________________________________________________________________________________________________
3af23c82 5736Float_t AliAnalysisTaskFragmentationFunction::CalcJetArea(const Float_t etaJet, const Float_t rc) const
1da9498b 5737{
3af23c82 5738 // calculate area of jet with eta etaJet and radius rc
1da9498b 5739
5740 Float_t detamax = etaJet + rc;
5741 Float_t detamin = etaJet - rc;
5742 Float_t accmax = 0.0; Float_t accmin = 0.0;
5743 if(detamax > fTrackEtaMax){ // sector outside etamax
5744 Float_t h = fTrackEtaMax - etaJet;
5745 accmax = rc*rc*TMath::ACos(h/rc) - h*TMath::Sqrt(rc*rc - h*h);
5746 }
5747 if(detamin < fTrackEtaMin){ // sector outside etamin
5748 Float_t h = fTrackEtaMax + etaJet;
5749 accmin = rc*rc*TMath::ACos(h/rc) - h*TMath::Sqrt(rc*rc - h*h);
5750 }
5751 Float_t areaJet = rc*rc*TMath::Pi() - accmax - accmin;
5752
5753 return areaJet;
5754
5755}
67e37e80 5756
742ee86c 5757// ___________________________________________________________________________________________________________________________
5758void AliAnalysisTaskFragmentationFunction::GetClusterTracksOutOf1Jet(AliAODJet* jet, TList* outputlist, Double_t &normFactor)
5759{
5760 // fill tracks from bckgCluster branch in list,
5761 // for all clusters outside jet cone
5762 // sum up total area of clusters
5763
5764 Double_t rc = GetFFRadius();
5765 Double_t rcl = GetFFBckgRadius();
5766
5767 Double_t areaTotal = 0;
5768 Double_t sumPtTotal = 0;
5769
5770 for(Int_t ij=0; ij<fBckgJetsRec->GetEntries(); ++ij){
5771
5772 AliAODJet* bgrCluster = (AliAODJet*)(fBckgJetsRec->At(ij)); // not 'recCuts': use all clusters in full eta range
5773
5774 Double_t dR = jet->DeltaR(bgrCluster);
5775
5776 if(dR<rcl) continue;
5777
5778 Double_t clusterPt = bgrCluster->Pt();
5779 Double_t area = bgrCluster->EffectiveAreaCharged();
5780 areaTotal += area;
5781 sumPtTotal += clusterPt;
5782
5783 Int_t nTracksJet = bgrCluster->GetRefTracks()->GetEntries();
5784
5785 for(Int_t it = 0; it<nTracksJet; it++){
5786
39e2b057 5787 // embedded tracks - note: using ref tracks here, fBranchRecBckgClusters has to be consistent
5788 if( fUseExtraTracksBgr != 1){
5789 if(AliAODTrack* trackAOD = dynamic_cast<AliAODTrack*> (bgrCluster->GetTrack(it))){
5790 if(fUseExtraTracksBgr == 0 && ((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5791 if(fUseExtraTracksBgr == -1 && !((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5792 }
5793 }
5794
742ee86c 5795 AliVParticle* track = dynamic_cast<AliVParticle*>(bgrCluster->GetTrack(it));
3170a3f8 5796 if(!track) continue;
742ee86c 5797
5798 Float_t trackPt = track->Pt();
5799 Float_t trackEta = track->Eta();
5800 Float_t trackPhi = TVector2::Phi_0_2pi(track->Phi());
5801
5802 if(trackEta < fTrackEtaMin || trackEta > fTrackEtaMax) continue;
5803 if(trackPhi < fTrackPhiMin || trackPhi > fTrackPhiMax) continue;
5804 if(trackPt < fTrackPtCut) continue;
5805
5806 outputlist->Add(track);
5807 }
5808 }
5809
5810 Double_t areaJet = TMath::Pi()*rc*rc;
5811 if(areaTotal) normFactor = (Float_t) 1./(areaJet / areaTotal);
5812
5813 outputlist->Sort();
5814}
5815
5816// _______________________________________________________________________________________________________________________
5817void AliAnalysisTaskFragmentationFunction::GetClusterTracksMedian(TList* outputlist, Double_t &normFactor)
5818{
5819 // fill tracks from bckgCluster branch,
5820 // using cluster with median density (odd number of clusters)
5821 // or picking randomly one of the two closest to median (even number)
5822
3170a3f8 5823 normFactor = 0;
5824
742ee86c 5825 Int_t nBckgClusters = fBckgJetsRec->GetEntries(); // not 'recCuts': use all clusters in full eta range
5826
39e2b057 5827 if(nBckgClusters<3) return; // need at least 3 clusters (skipping 2 highest)
3170a3f8 5828
742ee86c 5829 Double_t* bgrDensity = new Double_t[nBckgClusters];
5830 Int_t* indices = new Int_t[nBckgClusters];
5831
5832 for(Int_t ij=0; ij<nBckgClusters; ++ij){
5833
5834 AliAODJet* bgrCluster = (AliAODJet*)(fBckgJetsRec->At(ij));
5835 Double_t clusterPt = bgrCluster->Pt();
5836 Double_t area = bgrCluster->EffectiveAreaCharged();
5837
5838 Double_t density = 0;
5839 if(area>0) density = clusterPt/area;
5840
5841 bgrDensity[ij] = density;
5842 indices[ij] = ij;
5843 }
5844
5845 TMath::Sort(nBckgClusters, bgrDensity, indices);
5846
5847 // get median cluster
5848
5849 AliAODJet* medianCluster = 0;
5850 Double_t medianDensity = 0;
5851
5852 if(TMath::Odd(nBckgClusters)){
39e2b057 5853
742ee86c 5854 Int_t medianIndex = indices[(Int_t) (0.5*(nBckgClusters-1))];
5855 medianCluster = (AliAODJet*)(fBckgJetsRec->At(medianIndex));
5856
5857 Double_t clusterPt = medianCluster->Pt();
5858 Double_t area = medianCluster->EffectiveAreaCharged();
5859
5860 if(area>0) medianDensity = clusterPt/area;
5861 }
5862 else{
5863
5864 Int_t medianIndex1 = indices[(Int_t) (0.5*nBckgClusters-1)];
5865 Int_t medianIndex2 = indices[(Int_t) (0.5*nBckgClusters)];
5866
5867 AliAODJet* medianCluster1 = (AliAODJet*)(fBckgJetsRec->At(medianIndex1));
5868 AliAODJet* medianCluster2 = (AliAODJet*)(fBckgJetsRec->At(medianIndex2));
5869
5870 Double_t density1 = 0;
5871 Double_t clusterPt1 = medianCluster1->Pt();
5872 Double_t area1 = medianCluster1->EffectiveAreaCharged();
5873 if(area1>0) density1 = clusterPt1/area1;
39e2b057 5874
742ee86c 5875 Double_t density2 = 0;
5876 Double_t clusterPt2 = medianCluster2->Pt();
5877 Double_t area2 = medianCluster2->EffectiveAreaCharged();
5878 if(area2>0) density2 = clusterPt2/area2;
5879
5880 medianDensity = 0.5*(density1+density2);
5881
5882 medianCluster = ( (fRandom->Rndm()>0.5) ? medianCluster1 : medianCluster2 ); // select one randomly to avoid adding areas
5883 }
39e2b057 5884
742ee86c 5885 Int_t nTracksJet = medianCluster->GetRefTracks()->GetEntries();
5886
5887 for(Int_t it = 0; it<nTracksJet; it++){
5888
39e2b057 5889 // embedded tracks - note: using ref tracks here, fBranchRecBckgClusters has to be consistent
5890 if( fUseExtraTracksBgr != 1){
5891 if(AliAODTrack* trackAOD = dynamic_cast<AliAODTrack*> (medianCluster->GetTrack(it))){
5892 if(fUseExtraTracksBgr == 0 && ((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5893 if(fUseExtraTracksBgr == -1 && !((trackAOD->GetFlags() & AliESDtrack::kEmbedded)>0)) continue;
5894 }
5895 }
5896
742ee86c 5897 AliVParticle* track = dynamic_cast<AliVParticle*>(medianCluster->GetTrack(it));
3170a3f8 5898 if(!track) continue;
742ee86c 5899
5900 Float_t trackPt = track->Pt();
5901 Float_t trackEta = track->Eta();
5902 Float_t trackPhi = TVector2::Phi_0_2pi(track->Phi());
5903
5904 if(trackEta < fTrackEtaMin || trackEta > fTrackEtaMax) continue;
5905 if(trackPhi < fTrackPhiMin || trackPhi > fTrackPhiMax) continue;
5906 if(trackPt < fTrackPtCut) continue;
5907
5908 outputlist->Add(track);
5909 }
5910
5911 Double_t areaMedian = medianCluster->EffectiveAreaCharged();
5912 Double_t areaJet = TMath::Pi()*GetFFRadius()*GetFFRadius();
5913
5914 if(areaMedian) normFactor = (Float_t) 1./(areaJet / areaMedian);
5915
5916 outputlist->Sort();
5917
5918 delete[] bgrDensity;
5919 delete[] indices;
5920}
5921
67e37e80 5922// ______________________________________________________________________________________________________________________________________________________
5923void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inputtracklist, TList* inputjetlist, AliAODJet* jet, Float_t leadTrackPt, TLorentzVector* leadTrackV,
5924 AliFragFuncHistos* ffbckghistocuts, AliFragFuncHistos* ffbckghistoleading,
5925 AliFragFuncIntraJetHistos* ijbckghistocuts, AliFragFuncIntraJetHistos* ijbckghistoleading,
5926 AliFragFuncQATrackHistos* qabckghistocuts){
5927
5928 // List of tracks outside jets for background study
5929 TList* tracklistout2jets = new TList();
5930 TList* tracklistout3jets = new TList();
5931 TList* tracklistout2jetsStat = new TList();
5932 TList* tracklistout3jetsStat = new TList();
5933 Double_t sumPtOut2Jets = 0.;
5934 Double_t sumPtOut3Jets = 0.;
5935 Double_t sumPtOut2JetsStat = 0.;
5936 Double_t sumPtOut3JetsStat = 0.;
5937 Double_t normFactor2Jets = 0.;
5938 Double_t normFactor3Jets = 0.;
5939
5940 Int_t nRecJetsCuts = fJetsRecCuts->GetEntries();
5941
5942 if(nRecJetsCuts>1) {
3af23c82 5943 GetTracksOutOfNJets(2,inputtracklist, tracklistout2jets, inputjetlist, sumPtOut2Jets);
5944 GetTracksOutOfNJetsStat(2,inputtracklist, tracklistout2jetsStat, inputjetlist,sumPtOut2JetsStat, normFactor2Jets);
5945
67e37e80 5946 }
5947 if(nRecJetsCuts>2) {
3af23c82 5948 GetTracksOutOfNJets(3,inputtracklist, tracklistout3jets, inputjetlist, sumPtOut3Jets);
5949 GetTracksOutOfNJetsStat(3,inputtracklist, tracklistout3jetsStat, inputjetlist, sumPtOut3JetsStat, normFactor3Jets);
67e37e80 5950 }
5951
5952 if(type==kBckgOutLJ || type==kBckgOutAJ)
5953 {
39e2b057 5954 TList* tracklistoutleading = new TList();
67e37e80 5955 Double_t sumPtOutLeading = 0.;
3af23c82 5956 GetTracksOutOfNJets(1,inputtracklist, tracklistoutleading, inputjetlist, sumPtOutLeading);
67e37e80 5957 if(type==kBckgOutLJ) fh1OutLeadingMult->Fill(tracklistoutleading->GetSize());
5958
5959 for(Int_t it=0; it<tracklistoutleading->GetSize(); ++it){
39e2b057 5960
9939142f 5961 AliVParticle* trackVP = (AliVParticle*)(tracklistoutleading->At(it));
3170a3f8 5962 if(!trackVP) continue;
67e37e80 5963 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
5964
5965 Float_t jetPt = jet->Pt();
5966 Float_t trackPt = trackV->Pt();
5967
5968 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
5969
5970 if(type==kBckgOutLJ)
5971 {
3af23c82 5972 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt);
67e37e80 5973 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
5974
3af23c82 5975 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt);
67e37e80 5976 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
5977
5978 // Fill track QA for background
3af23c82 5979 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt);
67e37e80 5980 }
5981
5982 // All cases included
5983 if(nRecJetsCuts==1 && type==kBckgOutAJ)
5984 {
3af23c82 5985 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
67e37e80 5986 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
5987
3af23c82 5988 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
67e37e80 5989 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
5990 }
5991 delete trackV;
5992 }
942bf1b4 5993 // Increment jet pt with one entry in case #tracks outside jets = 0
5994 if(tracklistoutleading->GetSize()==0) {
5995 Float_t jetPt = jet->Pt();
5996 Bool_t incrementJetPt = kTRUE;
5997 if(type==kBckgOutLJ)
5998 {
5999 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt );
6000 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt );
6001 }
6002 // All cases included
6003 if(nRecJetsCuts==1 && type==kBckgOutAJ)
6004 {
6005 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt );
6006 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt );
6007 }
6008 }
67e37e80 6009 delete tracklistoutleading;
6010 }
6011 if(type==kBckgOutLJStat || type==kBckgOutAJStat)
6012 {
6013 TList* tracklistoutleadingStat = new TList();
6014 Double_t sumPtOutLeadingStat = 0.;
6015 Double_t normFactorLeading = 0.;
6016
3af23c82 6017 GetTracksOutOfNJetsStat(1,inputtracklist, tracklistoutleadingStat, inputjetlist, sumPtOutLeadingStat, normFactorLeading);
742ee86c 6018 if(type==kBckgOutLJStat) fh1OutLeadingStatMult->Fill(tracklistoutleadingStat->GetSize());
67e37e80 6019
6020 for(Int_t it=0; it<tracklistoutleadingStat->GetSize(); ++it){
39e2b057 6021
67e37e80 6022 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistoutleadingStat->At(it));
3170a3f8 6023 if(!trackVP) continue;
67e37e80 6024 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6025
6026 Float_t jetPt = jet->Pt();
6027 Float_t trackPt = trackV->Pt();
67e37e80 6028 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6029
6030 // Stat plots
6031 if(type==kBckgOutLJStat)
6032 {
3af23c82 6033 if(fFFMode)ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactorLeading);
67e37e80 6034 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactorLeading);
6035
3af23c82 6036 if(fFFMode)ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactorLeading);
67e37e80 6037 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactorLeading);
6038
6039 // Fill track QA for background
742ee86c 6040 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt); // OB added bgr QA
67e37e80 6041 }
6042
6043 // All cases included
6044 if(nRecJetsCuts==1 && type==kBckgOutAJStat)
6045 {
3af23c82 6046 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactorLeading);
67e37e80 6047 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactorLeading );
6048
3af23c82 6049 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactorLeading);
67e37e80 6050 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactorLeading );
742ee86c 6051
6052 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt ); // OB added bgr QA
6053
67e37e80 6054 }
6055 delete trackV;
6056 }
942bf1b4 6057 // Increment jet pt with one entry in case #tracks outside jets = 0
6058 if(tracklistoutleadingStat->GetSize()==0) {
6059 Float_t jetPt = jet->Pt();
6060 Bool_t incrementJetPt = kTRUE;
6061 if(type==kBckgOutLJStat)
6062 {
6063 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactorLeading);
6064 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactorLeading);
6065 }
6066 // All cases included
6067 if(nRecJetsCuts==1 && type==kBckgOutLJStat)
6068 {
6069 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactorLeading);
6070 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactorLeading );
6071 }
6072 }
6073
67e37e80 6074 delete tracklistoutleadingStat;
6075 }
6076
6077 if(type==kBckgPerp)
6078 {
6079 Double_t sumPtPerp = 0.;
6080 TList* tracklistperp = new TList();
3af23c82 6081 GetTracksTiltedwrpJetAxis(TMath::Pi()/2., inputtracklist,tracklistperp,jet,GetFFRadius(),sumPtPerp);
67e37e80 6082 fh1PerpMult->Fill(tracklistperp->GetSize());
6083
6084 for(Int_t it=0; it<tracklistperp->GetSize(); ++it){
6085
6086 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistperp->At(it));
ab851c96 6087 if(!trackVP)continue;
67e37e80 6088 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6089
6090 Float_t jetPt = jet->Pt();
6091 Float_t trackPt = trackV->Pt();
6092
6093 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6094
3af23c82 6095 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
67e37e80 6096 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
6097
3af23c82 6098 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
67e37e80 6099 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
6100
6101 // Fill track QA for background
3af23c82 6102 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt);
67e37e80 6103
6104 delete trackV;
6105 }
942bf1b4 6106 // Increment jet pt with one entry in case #tracks outside jets = 0
6107 if(tracklistperp->GetSize()==0) {
6108 Float_t jetPt = jet->Pt();
6109 Bool_t incrementJetPt = kTRUE;
6110 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt );
6111 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt );
6112 }
6113
67e37e80 6114 delete tracklistperp;
6115 }
6116
3af23c82 6117 if(type==kBckgASide)
6118 {
6119 Double_t sumPtASide = 0.;
6120 TList* tracklistaside = new TList();
6121 GetTracksTiltedwrpJetAxis(TMath::Pi(),inputtracklist,tracklistaside,jet,GetFFRadius(),sumPtASide);
6122 fh1ASideMult->Fill(tracklistaside->GetSize());
6123
6124 for(Int_t it=0; it<tracklistaside->GetSize(); ++it){
39e2b057 6125
1ea145ef 6126 AliVParticle* trackVP = (AliVParticle*)(tracklistaside->At(it));
3170a3f8 6127 if(!trackVP) continue;
3af23c82 6128 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6129
6130 Float_t jetPt = jet->Pt();
6131 Float_t trackPt = trackV->Pt();
6132
6133 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6134
6135 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
6136 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
6137
6138 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
6139 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
6140
6141 // Fill track QA for background
6142 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt);
6143
6144 delete trackV;
6145 }
942bf1b4 6146 if(tracklistaside->GetSize()==0) {
6147 Float_t jetPt = jet->Pt();
6148 Bool_t incrementJetPt = kTRUE;
6149 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt );
6150 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt );
6151 }
6152
3af23c82 6153 delete tracklistaside;
6154 }
6155
6156 if(type==kBckgASideWindow)
6157 {
6158 Double_t normFactorASide = 0.;
6159 Double_t sumPtASideW = 0.;
6160 TList* tracklistasidew = new TList();
6161 GetTracksTiltedwrpJetAxisWindow(TMath::Pi(),inputtracklist,tracklistasidew,jet,GetFFRadius(),sumPtASideW,normFactorASide);
6162 fh1ASideWindowMult->Fill(tracklistasidew->GetSize());
6163
6164 for(Int_t it=0; it<tracklistasidew->GetSize(); ++it){
6165
6166 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistasidew->At(it));
3170a3f8 6167 if(!trackVP) continue;
3af23c82 6168 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6169
6170 Float_t jetPt = jet->Pt();
6171 Float_t trackPt = trackV->Pt();
3af23c82 6172 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6173
6174 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactorASide);
6175 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactorASide);
6176
6177 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactorASide );
6178 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactorASide );
6179
6180 // Fill track QA for background
6181 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt, kFALSE, normFactorASide);
6182
6183 delete trackV;
6184 }
942bf1b4 6185 if(tracklistasidew->GetSize()==0) {
6186 Float_t jetPt = jet->Pt();
6187 Bool_t incrementJetPt = kTRUE;
6188 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactorASide);
6189 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactorASide);
6190 }
6191
3af23c82 6192 delete tracklistasidew;
6193 }
6194
6195 if(type==kBckgPerpWindow)
6196 {
6197 Double_t normFactorPerp = 0.;
6198 Double_t sumPtPerpW = 0.;
6199 TList* tracklistperpw = new TList();
6200 GetTracksTiltedwrpJetAxisWindow(TMath::Pi()/2.,inputtracklist,tracklistperpw,jet,GetFFRadius(),sumPtPerpW,normFactorPerp);
6201 fh1PerpWindowMult->Fill(tracklistperpw->GetSize());
6202
6203 for(Int_t it=0; it<tracklistperpw->GetSize(); ++it){
39e2b057 6204
3af23c82 6205 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistperpw->At(it));
3170a3f8 6206 if(!trackVP) continue;
3af23c82 6207 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6208
6209 Float_t jetPt = jet->Pt();
6210 Float_t trackPt = trackV->Pt();
3af23c82 6211 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6212
6213 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactorPerp);
6214 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactorPerp);
6215
6216 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactorPerp );
6217 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactorPerp );
6218
6219 // Fill track QA for background
6220 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt, kFALSE, normFactorPerp);
6221
6222 delete trackV;
6223 }
942bf1b4 6224 if(tracklistperpw->GetSize()==0) {
6225 Float_t jetPt = jet->Pt();
6226 Bool_t incrementJetPt = kTRUE;
6227 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactorPerp);
6228 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactorPerp);
6229 }
6230
3af23c82 6231 delete tracklistperpw;
6232 }
6233
6234
67e37e80 6235 if(type==kBckgOut2J || type==kBckgOutAJ)
6236 {
6237 if(type==kBckgOut2J) fh1Out2JetsMult->Fill(tracklistout2jets->GetSize());
6238 for(Int_t it=0; it<tracklistout2jets->GetSize(); ++it){
39e2b057 6239
67e37e80 6240 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistout2jets->At(it));
3170a3f8 6241 if(!trackVP) continue;
67e37e80 6242 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6243
6244 Float_t jetPt = jet->Pt();
6245 Float_t trackPt = trackV->Pt();
6246
6247 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6248
6249 if(type==kBckgOut2J)
6250 {
3af23c82 6251 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
67e37e80 6252 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
6253
3af23c82 6254 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
67e37e80 6255 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
6256
3af23c82 6257 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt);
67e37e80 6258 }
6259
6260 // All cases included
6261 if(nRecJetsCuts==2 && type==kBckgOutAJ)
6262 {
3af23c82 6263 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
67e37e80 6264 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
6265
3af23c82 6266 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
67e37e80 6267 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
6268 }
6269 delete trackV;
6270 }
942bf1b4 6271 // Increment jet pt with one entry in case #tracks outside jets = 0
6272 if(tracklistout2jets->GetSize()==0) {
6273 Float_t jetPt = jet->Pt();
6274 Bool_t incrementJetPt = kTRUE;
6275 if(type==kBckgOut2J)
6276 {
6277 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt );
6278 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt );
6279 }
6280 // All cases included
6281 if(nRecJetsCuts==2 && type==kBckgOutAJ)
6282 {
6283 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt );
6284 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt );
6285 }
6286 }
6287
67e37e80 6288 }
6289
6290 if(type==kBckgOut2JStat || type==kBckgOutAJStat)
6291 {
6292 for(Int_t it=0; it<tracklistout2jetsStat->GetSize(); ++it){
6293
6294 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistout2jetsStat->At(it));
3170a3f8 6295 if(!trackVP) continue;
67e37e80 6296 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6297
6298 Float_t jetPt = jet->Pt();
6299 Float_t trackPt = trackV->Pt();
67e37e80 6300 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6301
6302 if(type==kBckgOut2JStat)
6303 {
3af23c82 6304 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactor2Jets);
67e37e80 6305 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactor2Jets );
6306
3af23c82 6307 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactor2Jets);
67e37e80 6308 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactor2Jets );
6309
3170a3f8 6310 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt ); // OB added bgr QA
67e37e80 6311 }
6312
6313 // All cases included
6314 if(nRecJetsCuts==2 && type==kBckgOutAJStat)
6315 {
3af23c82 6316 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactor2Jets);
67e37e80 6317 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactor2Jets );
6318
3af23c82 6319 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactor2Jets);
67e37e80 6320 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactor2Jets );
742ee86c 6321
6322 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt ); // OB added bgr QA
67e37e80 6323 }
6324 delete trackV;
6325 }
942bf1b4 6326 // Increment jet pt with one entry in case #tracks outside jets = 0
6327 if(tracklistout2jetsStat->GetSize()==0) {
6328 Float_t jetPt = jet->Pt();
6329 Bool_t incrementJetPt = kTRUE;
6330 if(type==kBckgOut2JStat)
39e2b057 6331 {
942bf1b4 6332 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactor2Jets);
6333 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactor2Jets);
6334 }
6335 // All cases included
6336 if(nRecJetsCuts==2 && type==kBckgOutAJStat)
6337 {
6338 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactor2Jets);
6339 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactor2Jets );
6340 }
6341 }
39e2b057 6342
67e37e80 6343 }
6344
6345 if(type==kBckgOut3J || type==kBckgOutAJ)
6346 {
6347 if(type==kBckgOut3J) fh1Out3JetsMult->Fill(tracklistout3jets->GetSize());
6348
6349 for(Int_t it=0; it<tracklistout3jets->GetSize(); ++it){
6350
6351 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistout3jets->At(it));
3170a3f8 6352 if(!trackVP) continue;
67e37e80 6353 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6354
6355 Float_t jetPt = jet->Pt();
6356 Float_t trackPt = trackV->Pt();
6357
6358 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6359
6360 if(type==kBckgOut3J)
6361 {
942bf1b4 6362 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
67e37e80 6363 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
6364
942bf1b4 6365 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
67e37e80 6366 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
6367
6368 qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt);
6369 }
6370
6371 // All cases included
6372 if(nRecJetsCuts==3 && type==kBckgOutAJ)
6373 {
942bf1b4 6374 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
67e37e80 6375 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
6376
942bf1b4 6377 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
67e37e80 6378 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
6379 }
6380 delete trackV;
6381 }
942bf1b4 6382 // Increment jet pt with one entry in case #tracks outside jets = 0
6383 if(tracklistout3jets->GetSize()==0) {
6384 Float_t jetPt = jet->Pt();
6385 Bool_t incrementJetPt = kTRUE;
6386 if(type==kBckgOut3J)
6387 {
6388 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt );
6389 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt );
6390 }
6391 // All cases included
6392 if(nRecJetsCuts==3 && type==kBckgOutAJ)
6393 {
6394 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt );
6395 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt );
6396 }
6397 }
67e37e80 6398 }
6399
6400 if(type==kBckgOut3JStat || type==kBckgOutAJStat)
6401 {
6402 for(Int_t it=0; it<tracklistout3jetsStat->GetSize(); ++it){
6403
6404 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistout3jetsStat->At(it));
3170a3f8 6405 if(!trackVP) continue;
67e37e80 6406 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6407
6408 Float_t jetPt = jet->Pt();
6409 Float_t trackPt = trackV->Pt();
67e37e80 6410 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6411
6412 if(type==kBckgOut3JStat)
6413 {
942bf1b4 6414 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactor3Jets);
67e37e80 6415 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactor3Jets);
6416
942bf1b4 6417 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactor3Jets);
67e37e80 6418 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactor3Jets);
6419
3af23c82 6420 //if(fQAMode&1) qabckghistocuts->FillTrackQA( trackEta, TVector2::Phi_0_2pi(trackPhi), trackPt);
67e37e80 6421 }
6422
6423 // All cases included
6424 if(nRecJetsCuts==3 && type==kBckgOutAJStat)
6425 {
3af23c82 6426 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactor3Jets );
67e37e80 6427 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactor3Jets);
6428
3af23c82 6429 if(fFFMode) ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactor3Jets );
742ee86c 6430 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactor3Jets );
6431
6432 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt ); // OB added bgr QA
6433
67e37e80 6434 }
6435 delete trackV;
6436 }
942bf1b4 6437 // Increment jet pt with one entry in case #tracks outside jets = 0
6438 if(tracklistout3jetsStat->GetSize()==0) {
6439 Float_t jetPt = jet->Pt();
6440 Bool_t incrementJetPt = kTRUE;
6441 if(type==kBckgOut3JStat)
6442 {
6443 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactor3Jets);
6444 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactor3Jets);
6445 }
6446 // All cases included
6447 if(nRecJetsCuts==3 && type==kBckgOutAJStat)
6448 {
6449 if(fFFMode) ffbckghistocuts->FillFF( -1., jetPt, incrementJetPt, normFactor3Jets);
6450 if(fFFMode) ffbckghistoleading->FillFF( -1., leadTrackPt , incrementJetPt, normFactor3Jets );
6451 }
6452 }
6453
67e37e80 6454 }
6455
742ee86c 6456 if(type==kBckgClustersOutLeading){ // clusters bgr: all tracks in clusters out of leading jet
6457
6458 TList* tracklistClustersOutLeading = new TList();
6459 Double_t normFactorClusters = 0;
6460 Float_t jetPt = jet->Pt();
6461
6462 GetClusterTracksOutOf1Jet(jet, tracklistClustersOutLeading, normFactorClusters);
6463 fh1OutClustersMult->Fill(tracklistClustersOutLeading->GetSize());
6464
6465 for(Int_t it=0; it<tracklistClustersOutLeading->GetSize(); ++it){
6466
6467 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistClustersOutLeading->At(it));
3170a3f8 6468 if(!trackVP) continue;
742ee86c 6469 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6470
6471 Float_t trackPt = trackVP->Pt();
6472
6473 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6474
6475 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactorClusters );
6476 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt );
67e37e80 6477
742ee86c 6478 delete trackV;
6479 }
6480
6481 delete tracklistClustersOutLeading;
6482
6483 }
6484
6485 if(type == kBckgClusters){ // clusters bgr: all tracks in 'median cluster'
6486
6487 TList* tracklistClustersMedian = new TList();
6488 Double_t normFactorClusters = 0;
6489 Float_t jetPt = jet->Pt();
6490
6491 GetClusterTracksMedian(tracklistClustersMedian, normFactorClusters);
6492 fh1MedianClustersMult->Fill(tracklistClustersMedian->GetSize());
3170a3f8 6493
742ee86c 6494 for(Int_t it=0; it<tracklistClustersMedian->GetSize(); ++it){
6495
6496 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistClustersMedian->At(it));
3170a3f8 6497 if(!trackVP) continue;
742ee86c 6498 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
6499
6500 Float_t trackPt = trackVP->Pt();
6501
6502 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
6503
6504 if(fFFMode) ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactorClusters );
6505 if(fQAMode&1) qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt );
6506
6507 delete trackV;
6508 }
6509
6510 delete tracklistClustersMedian;
6511 }
6512
67e37e80 6513 delete tracklistout2jets;
6514 delete tracklistout3jets;
6515 delete tracklistout2jetsStat;
6516 delete tracklistout3jetsStat;
742ee86c 6517
67e37e80 6518}
3af23c82 6519
6520// ______________________________________________________________________________________________________________________________________________________
6521AliAODJet* AliAnalysisTaskFragmentationFunction::GetAODBckgSubJet(AliAODJet* jet, Int_t method)
6522{
6523 // correct jet pt for (mean bgr energy density) x (jet area)
6524
44b235ce 6525 if(!fBranchRecBackJets.Length()){
6526 if(fDebug>0)Printf("%s:%d background branch name not set",(char*)__FILE__,__LINE__);
6527 return 0;
6528 }
6529
3af23c82 6530 static AliAODJetEventBackground* externalBackground = (AliAODJetEventBackground*)(fAOD->FindListObject(fBranchRecBackJets.Data()));
6531
6532 if(!externalBackground){
44b235ce 6533 if(fDebug>0)Printf("%s:%d no external background object found in %s",(char*)__FILE__,__LINE__,fBranchRecBackJets.Data());
3af23c82 6534 return 0;
6535 }
6536
6537 Float_t rho = externalBackground->GetBackground(method);
6538
6539 // Calculate background and subtract it from jet pt
6540 Float_t ptBack = rho*jet->EffectiveAreaCharged();
6541 Float_t ptSub = jet->Pt()-ptBack;
6542
6543 // Get px, py, pz from eta, phi, pt
6544 TLorentzVector vecSub;
6545 AliAODJet *tmpJet = 0;
6546 if(ptSub>=0){
6547 vecSub.SetPtEtaPhiM(ptSub,jet->Eta(),jet->Phi(),0.);
6548 tmpJet = new AliAODJet(vecSub.Px(),vecSub.Py(),vecSub.Pz(),vecSub.P());
6549 }
6550
6551 return tmpJet;
3af23c82 6552}