]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG4/JetTasks/AliAnalysisTaskFragmentationFunction.cxx
IsHeavyIon flag, added Centrality Selection, Add mising Cut for Nch, extra histograms...
[u/mrichter/AliRoot.git] / PWG4 / JetTasks / AliAnalysisTaskFragmentationFunction.cxx
CommitLineData
656dc810 1/*************************************************************************
2 * *
3 * Task for Fragmentation Function Analysis in PWG4 Jet Task Force Train *
4 * *
5 *************************************************************************/
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"
67e37e80 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"
41#include "AliGenPythiaEventHeader.h"
5fde4a38 42#include "AliGenHijingEventHeader.h"
656dc810 43#include "AliInputEventHandler.h"
44
45#include "AliAnalysisHelperJetTasks.h"
46#include "AliAnalysisManager.h"
47#include "AliAnalysisTaskSE.h"
3e1c1eee 48#include "AliVParticle.h"
49#include "AliVEvent.h"
656dc810 50
51#include "AliAnalysisTaskFragmentationFunction.h"
52
53
54ClassImp(AliAnalysisTaskFragmentationFunction)
55
56//____________________________________________________________________________
57AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction()
58 : AliAnalysisTaskSE()
59 ,fESD(0)
60 ,fAOD(0)
656dc810 61 ,fBranchRecJets("jets")
62 ,fBranchGenJets("")
63 ,fTrackTypeGen(0)
64 ,fJetTypeGen(0)
fe343c6b 65 ,fJetTypeRecEff(0)
656dc810 66 ,fFilterMask(0)
ac017ff3 67 ,fUsePhysicsSelection(kTRUE)
656dc810 68 ,fTrackPtCut(0)
69 ,fTrackEtaMin(0)
70 ,fTrackEtaMax(0)
71 ,fTrackPhiMin(0)
72 ,fTrackPhiMax(0)
73 ,fJetPtCut(0)
74 ,fJetEtaMin(0)
75 ,fJetEtaMax(0)
76 ,fJetPhiMin(0)
77 ,fJetPhiMax(0)
78 ,fDiJetCut(0)
79 ,fDiJetDeltaPhiCut(0)
80 ,fDiJetPtFractionCut(0)
81 ,fDiJetCDFCut(0)
82 ,fDiJetKindBins(0)
83 ,fFFRadius(0)
1da9498b 84 ,fFFBckgRadius(0)
85 ,fBckgMode(0)
67e37e80 86 ,fIJMode(0)
cb76764e 87 ,fUseRecEffRecJetPtBins(1)
c2658535 88 ,fAvgTrials(0)
656dc810 89 ,fTracksRec(0)
90 ,fTracksRecCuts(0)
91 ,fTracksGen(0)
fe343c6b 92 ,fTracksAODMCCharged(0)
93 ,fTracksRecQualityCuts(0)
656dc810 94 ,fJetsRec(0)
95 ,fJetsRecCuts(0)
96 ,fJetsGen(0)
fe343c6b 97 ,fJetsRecEff(0)
67e37e80 98 ,fBckgJetsRec(0)
99 ,fBckgJetsRecCuts(0)
100 ,fBckgJetsGen(0)
656dc810 101 ,fQATrackHistosRec(0)
102 ,fQATrackHistosRecCuts(0)
103 ,fQATrackHistosGen(0)
104 ,fQAJetHistosRec(0)
105 ,fQAJetHistosRecCuts(0)
106 ,fQAJetHistosRecCutsLeading(0)
107 ,fQAJetHistosGen(0)
108 ,fQAJetHistosGenLeading(0)
fe343c6b 109 ,fQAJetHistosRecEffLeading(0)
656dc810 110 ,fFFHistosRecCuts(0)
111 ,fFFHistosRecLeading(0)
112 ,fFFHistosRecLeadingTrack(0)
113 ,fFFHistosGen(0)
114 ,fFFHistosGenLeading(0)
115 ,fFFHistosGenLeadingTrack(0)
116 ,fIJHistosRecCuts(0)
117 ,fIJHistosRecLeading(0)
118 ,fIJHistosRecLeadingTrack(0)
119 ,fIJHistosGen(0)
120 ,fIJHistosGenLeading(0)
121 ,fIJHistosGenLeadingTrack(0)
122 ,fFFDiJetHistosRecCuts(0)
123 ,fFFDiJetHistosRecLeading(0)
124 ,fFFDiJetHistosRecLeadingTrack(0)
125 ,fFFDiJetHistosGen(0)
126 ,fFFDiJetHistosGenLeading(0)
127 ,fFFDiJetHistosGenLeadingTrack(0)
128 ,fQADiJetHistosRecCuts(0)
129 ,fQADiJetHistosGen(0)
130 ,fQATrackHighPtThreshold(0)
131 ,fFFNBinsJetPt(0)
132 ,fFFJetPtMin(0)
133 ,fFFJetPtMax(0)
134 ,fFFNBinsPt(0)
135 ,fFFPtMin(0)
136 ,fFFPtMax(0)
137 ,fFFNBinsXi(0)
138 ,fFFXiMin(0)
139 ,fFFXiMax(0)
140 ,fFFNBinsZ(0)
141 ,fFFZMin(0)
142 ,fFFZMax(0)
143 ,fQAJetNBinsPt(0)
144 ,fQAJetPtMin(0)
145 ,fQAJetPtMax(0)
146 ,fQAJetNBinsEta(0)
147 ,fQAJetEtaMin(0)
148 ,fQAJetEtaMax(0)
149 ,fQAJetNBinsPhi(0)
150 ,fQAJetPhiMin(0)
151 ,fQAJetPhiMax(0)
152 ,fQATrackNBinsPt(0)
153 ,fQATrackPtMin(0)
154 ,fQATrackPtMax(0)
155 ,fQATrackNBinsEta(0)
156 ,fQATrackEtaMin(0)
157 ,fQATrackEtaMax(0)
158 ,fQATrackNBinsPhi(0)
159 ,fQATrackPhiMin(0)
160 ,fQATrackPhiMax(0)
161 ,fIJNBinsJetPt(0)
162 ,fIJJetPtMin(0)
163 ,fIJJetPtMax(0)
164 ,fIJNBinsPt(0)
165 ,fIJPtMin(0)
166 ,fIJPtMax(0)
167 ,fIJNBinsZ(0)
168 ,fIJZMin(0)
169 ,fIJZMax(0)
170 ,fIJNBinsCosTheta(0)
171 ,fIJCosThetaMin(0)
172 ,fIJCosThetaMax(0)
173 ,fIJNBinsTheta(0)
174 ,fIJThetaMin(0)
175 ,fIJThetaMax(0)
176 ,fIJNBinsJt(0)
177 ,fIJJtMin(0)
178 ,fIJJtMax(0)
179 ,fDiJetNBinsJetInvMass(0)
180 ,fDiJetJetInvMassMin(0)
181 ,fDiJetJetInvMassMax(0)
182 ,fDiJetNBinsJetPt(0)
183 ,fDiJetJetPtMin(0)
184 ,fDiJetJetPtMax(0)
185 ,fDiJetNBinsPt(0)
186 ,fDiJetPtMin(0)
187 ,fDiJetPtMax(0)
188 ,fDiJetNBinsXi(0)
189 ,fDiJetXiMin(0)
190 ,fDiJetXiMax(0)
191 ,fDiJetNBinsZ(0)
192 ,fDiJetZMin(0)
193 ,fDiJetZMax(0)
194 ,fQADiJetNBinsInvMass(0)
195 ,fQADiJetInvMassMin(0)
196 ,fQADiJetInvMassMax(0)
197 ,fQADiJetNBinsJetPt(0)
198 ,fQADiJetJetPtMin(0)
199 ,fQADiJetJetPtMax(0)
200 ,fQADiJetNBinsDeltaPhi(0)
201 ,fQADiJetDeltaPhiMin(0)
202 ,fQADiJetDeltaPhiMax(0)
203 ,fQADiJetNBinsDeltaEta(0)
204 ,fQADiJetDeltaEtaMin(0)
205 ,fQADiJetDeltaEtaMax(0)
206 ,fQADiJetNBinsDeltaPt(0)
207 ,fQADiJetDeltaPtMin(0)
208 ,fQADiJetDeltaPtMax(0)
209 ,fCommonHistList(0)
210 ,fh1EvtSelection(0)
211 ,fh1VertexNContributors(0)
212 ,fh1VertexZ(0)
213 ,fh1EvtMult(0)
ac017ff3 214 ,fh1Xsec(0)
215 ,fh1Trials(0)
216 ,fh1PtHard(0)
217 ,fh1PtHardTrials(0)
656dc810 218 ,fh1nRecJetsCuts(0)
219 ,fh1nGenJets(0)
fe343c6b 220 ,fh1nRecEffJets(0)
67e37e80 221 ,fh1nRecBckgJetsCuts(0)
222 ,fh1nGenBckgJets(0)
cb76764e 223 ,fh2PtRecVsGenPrim(0)
224 ,fQATrackHistosRecEffGen(0)
225 ,fQATrackHistosRecEffRec(0)
226 ,fFFHistosRecEffGen(0)
227 ,fFFHistosRecEffRec(0)
1da9498b 228 // Background
229 ,fh1OutLeadingMult(0)
230 ,fh1PerpMult(0)
231 ,fh1Out2JetsMult(0)
232 ,fh1Out3JetsMult(0)
67e37e80 233 ,fQABckgHisto0RecCuts(0)
234 ,fQABckgHisto0Gen(0)
235 ,fQABckgHisto1RecCuts(0)
236 ,fQABckgHisto1Gen(0)
237 ,fQABckgHisto2RecCuts(0)
238 ,fQABckgHisto2Gen(0)
239 ,fFFBckgHisto0RecCuts(0)
240 ,fFFBckgHisto0RecLeading(0)
241 ,fFFBckgHisto0Gen(0)
242 ,fFFBckgHisto0GenLeading(0)
243 ,fFFBckgHisto1RecCuts(0)
244 ,fFFBckgHisto1RecLeading(0)
245 ,fFFBckgHisto1Gen(0)
246 ,fFFBckgHisto1GenLeading(0)
247 ,fFFBckgHisto2RecCuts(0)
248 ,fFFBckgHisto2RecLeading(0)
249 ,fFFBckgHisto2Gen(0)
250 ,fFFBckgHisto2GenLeading(0)
251 ,fIJBckgHisto0RecCuts(0)
252 ,fIJBckgHisto0RecLeading(0)
253 ,fIJBckgHisto0Gen(0)
254 ,fIJBckgHisto0GenLeading(0)
255 ,fIJBckgHisto1RecCuts(0)
256 ,fIJBckgHisto1RecLeading(0)
257 ,fIJBckgHisto1Gen(0)
258 ,fIJBckgHisto1GenLeading(0)
259 ,fIJBckgHisto2RecCuts(0)
260 ,fIJBckgHisto2RecLeading(0)
261 ,fIJBckgHisto2Gen(0)
262 ,fIJBckgHisto2GenLeading(0)
263 ,fRandom(0)
656dc810 264{
265 // default constructor
67e37e80 266 fBckgType[0] = 0;
267 fBckgType[1] = 0;
268 fBckgType[2] = 0;
656dc810 269}
270
271//__________________________________________________________________________________________
272AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const char *name)
273 : AliAnalysisTaskSE(name)
274 ,fESD(0)
275 ,fAOD(0)
656dc810 276 ,fBranchRecJets("jets")
277 ,fBranchGenJets("")
278 ,fTrackTypeGen(0)
279 ,fJetTypeGen(0)
fe343c6b 280 ,fJetTypeRecEff(0)
656dc810 281 ,fFilterMask(0)
ac017ff3 282 ,fUsePhysicsSelection(kTRUE)
656dc810 283 ,fTrackPtCut(0)
284 ,fTrackEtaMin(0)
285 ,fTrackEtaMax(0)
286 ,fTrackPhiMin(0)
287 ,fTrackPhiMax(0)
288 ,fJetPtCut(0)
289 ,fJetEtaMin(0)
290 ,fJetEtaMax(0)
291 ,fJetPhiMin(0)
292 ,fJetPhiMax(0)
293 ,fDiJetCut(0)
294 ,fDiJetDeltaPhiCut(0)
295 ,fDiJetPtFractionCut(0)
296 ,fDiJetCDFCut(0)
297 ,fDiJetKindBins(0)
298 ,fFFRadius(0)
1da9498b 299 ,fFFBckgRadius(0)
300 ,fBckgMode(0)
67e37e80 301 ,fIJMode(0)
cb76764e 302 ,fUseRecEffRecJetPtBins(1)
c2658535 303 ,fAvgTrials(0)
656dc810 304 ,fTracksRec(0)
305 ,fTracksRecCuts(0)
306 ,fTracksGen(0)
fe343c6b 307 ,fTracksAODMCCharged(0)
308 ,fTracksRecQualityCuts(0)
656dc810 309 ,fJetsRec(0)
310 ,fJetsRecCuts(0)
311 ,fJetsGen(0)
fe343c6b 312 ,fJetsRecEff(0)
67e37e80 313 ,fBckgJetsRec(0)
314 ,fBckgJetsRecCuts(0)
315 ,fBckgJetsGen(0)
656dc810 316 ,fQATrackHistosRec(0)
317 ,fQATrackHistosRecCuts(0)
318 ,fQATrackHistosGen(0)
319 ,fQAJetHistosRec(0)
320 ,fQAJetHistosRecCuts(0)
321 ,fQAJetHistosRecCutsLeading(0)
322 ,fQAJetHistosGen(0)
323 ,fQAJetHistosGenLeading(0)
fe343c6b 324 ,fQAJetHistosRecEffLeading(0)
656dc810 325 ,fFFHistosRecCuts(0)
326 ,fFFHistosRecLeading(0)
327 ,fFFHistosRecLeadingTrack(0)
328 ,fFFHistosGen(0)
329 ,fFFHistosGenLeading(0)
330 ,fFFHistosGenLeadingTrack(0)
331 ,fIJHistosRecCuts(0)
332 ,fIJHistosRecLeading(0)
333 ,fIJHistosRecLeadingTrack(0)
334 ,fIJHistosGen(0)
335 ,fIJHistosGenLeading(0)
336 ,fIJHistosGenLeadingTrack(0)
337 ,fFFDiJetHistosRecCuts(0)
338 ,fFFDiJetHistosRecLeading(0)
339 ,fFFDiJetHistosRecLeadingTrack(0)
340 ,fFFDiJetHistosGen(0)
341 ,fFFDiJetHistosGenLeading(0)
342 ,fFFDiJetHistosGenLeadingTrack(0)
343 ,fQADiJetHistosRecCuts(0)
344 ,fQADiJetHistosGen(0)
345 ,fQATrackHighPtThreshold(0)
346 ,fFFNBinsJetPt(0)
347 ,fFFJetPtMin(0)
348 ,fFFJetPtMax(0)
349 ,fFFNBinsPt(0)
350 ,fFFPtMin(0)
351 ,fFFPtMax(0)
352 ,fFFNBinsXi(0)
353 ,fFFXiMin(0)
354 ,fFFXiMax(0)
355 ,fFFNBinsZ(0)
356 ,fFFZMin(0)
357 ,fFFZMax(0)
358 ,fQAJetNBinsPt(0)
359 ,fQAJetPtMin(0)
360 ,fQAJetPtMax(0)
361 ,fQAJetNBinsEta(0)
362 ,fQAJetEtaMin(0)
363 ,fQAJetEtaMax(0)
364 ,fQAJetNBinsPhi(0)
365 ,fQAJetPhiMin(0)
366 ,fQAJetPhiMax(0)
367 ,fQATrackNBinsPt(0)
368 ,fQATrackPtMin(0)
369 ,fQATrackPtMax(0)
370 ,fQATrackNBinsEta(0)
371 ,fQATrackEtaMin(0)
372 ,fQATrackEtaMax(0)
373 ,fQATrackNBinsPhi(0)
374 ,fQATrackPhiMin(0)
375 ,fQATrackPhiMax(0)
376 ,fIJNBinsJetPt(0)
377 ,fIJJetPtMin(0)
378 ,fIJJetPtMax(0)
379 ,fIJNBinsPt(0)
380 ,fIJPtMin(0)
381 ,fIJPtMax(0)
382 ,fIJNBinsZ(0)
383 ,fIJZMin(0)
384 ,fIJZMax(0)
385 ,fIJNBinsCosTheta(0)
386 ,fIJCosThetaMin(0)
387 ,fIJCosThetaMax(0)
388 ,fIJNBinsTheta(0)
389 ,fIJThetaMin(0)
390 ,fIJThetaMax(0)
391 ,fIJNBinsJt(0)
392 ,fIJJtMin(0)
393 ,fIJJtMax(0)
394 ,fDiJetNBinsJetInvMass(0)
395 ,fDiJetJetInvMassMin(0)
396 ,fDiJetJetInvMassMax(0)
397 ,fDiJetNBinsJetPt(0)
398 ,fDiJetJetPtMin(0)
399 ,fDiJetJetPtMax(0)
400 ,fDiJetNBinsPt(0)
401 ,fDiJetPtMin(0)
402 ,fDiJetPtMax(0)
403 ,fDiJetNBinsXi(0)
404 ,fDiJetXiMin(0)
405 ,fDiJetXiMax(0)
406 ,fDiJetNBinsZ(0)
407 ,fDiJetZMin(0)
408 ,fDiJetZMax(0)
409 ,fQADiJetNBinsInvMass(0)
410 ,fQADiJetInvMassMin(0)
411 ,fQADiJetInvMassMax(0)
412 ,fQADiJetNBinsJetPt(0)
413 ,fQADiJetJetPtMin(0)
414 ,fQADiJetJetPtMax(0)
415 ,fQADiJetNBinsDeltaPhi(0)
416 ,fQADiJetDeltaPhiMin(0)
417 ,fQADiJetDeltaPhiMax(0)
418 ,fQADiJetNBinsDeltaEta(0)
419 ,fQADiJetDeltaEtaMin(0)
420 ,fQADiJetDeltaEtaMax(0)
421 ,fQADiJetNBinsDeltaPt(0)
422 ,fQADiJetDeltaPtMin(0)
423 ,fQADiJetDeltaPtMax(0)
424 ,fCommonHistList(0)
425 ,fh1EvtSelection(0)
426 ,fh1VertexNContributors(0)
427 ,fh1VertexZ(0)
428 ,fh1EvtMult(0)
ac017ff3 429 ,fh1Xsec(0)
430 ,fh1Trials(0)
431 ,fh1PtHard(0)
432 ,fh1PtHardTrials(0)
656dc810 433 ,fh1nRecJetsCuts(0)
434 ,fh1nGenJets(0)
fe343c6b 435 ,fh1nRecEffJets(0)
67e37e80 436 ,fh1nRecBckgJetsCuts(0)
437 ,fh1nGenBckgJets(0)
cb76764e 438 ,fh2PtRecVsGenPrim(0)
439 ,fQATrackHistosRecEffGen(0)
440 ,fQATrackHistosRecEffRec(0)
441 ,fFFHistosRecEffGen(0)
442 ,fFFHistosRecEffRec(0)
67e37e80 443 // Background
444 ,fh1OutLeadingMult(0)
445 ,fh1PerpMult(0)
446 ,fh1Out2JetsMult(0)
447 ,fh1Out3JetsMult(0)
448 ,fQABckgHisto0RecCuts(0)
449 ,fQABckgHisto0Gen(0)
450 ,fQABckgHisto1RecCuts(0)
451 ,fQABckgHisto1Gen(0)
452 ,fQABckgHisto2RecCuts(0)
453 ,fQABckgHisto2Gen(0)
454 ,fFFBckgHisto0RecCuts(0)
455 ,fFFBckgHisto0RecLeading(0)
456 ,fFFBckgHisto0Gen(0)
457 ,fFFBckgHisto0GenLeading(0)
458 ,fFFBckgHisto1RecCuts(0)
459 ,fFFBckgHisto1RecLeading(0)
460 ,fFFBckgHisto1Gen(0)
461 ,fFFBckgHisto1GenLeading(0)
462 ,fFFBckgHisto2RecCuts(0)
463 ,fFFBckgHisto2RecLeading(0)
464 ,fFFBckgHisto2Gen(0)
465 ,fFFBckgHisto2GenLeading(0)
466 ,fIJBckgHisto0RecCuts(0)
467 ,fIJBckgHisto0RecLeading(0)
468 ,fIJBckgHisto0Gen(0)
469 ,fIJBckgHisto0GenLeading(0)
470 ,fIJBckgHisto1RecCuts(0)
471 ,fIJBckgHisto1RecLeading(0)
472 ,fIJBckgHisto1Gen(0)
473 ,fIJBckgHisto1GenLeading(0)
474 ,fIJBckgHisto2RecCuts(0)
475 ,fIJBckgHisto2RecLeading(0)
476 ,fIJBckgHisto2Gen(0)
477 ,fIJBckgHisto2GenLeading(0)
478 ,fRandom(0)
656dc810 479{
480 // constructor
67e37e80 481 fBckgType[0] = 0;
482 fBckgType[1] = 0;
483 fBckgType[2] = 0;
484
656dc810 485 DefineOutput(1,TList::Class());
486
487
488}
489
490//__________________________________________________________________________________________________________________________
491AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const AliAnalysisTaskFragmentationFunction &copy)
492 : AliAnalysisTaskSE()
493 ,fESD(copy.fESD)
494 ,fAOD(copy.fAOD)
656dc810 495 ,fBranchRecJets(copy.fBranchRecJets)
496 ,fBranchGenJets(copy.fBranchGenJets)
497 ,fTrackTypeGen(copy.fTrackTypeGen)
498 ,fJetTypeGen(copy.fJetTypeGen)
fe343c6b 499 ,fJetTypeRecEff(copy.fJetTypeRecEff)
656dc810 500 ,fFilterMask(copy.fFilterMask)
ac017ff3 501 ,fUsePhysicsSelection(copy.fUsePhysicsSelection)
656dc810 502 ,fTrackPtCut(copy.fTrackPtCut)
503 ,fTrackEtaMin(copy.fTrackEtaMin)
504 ,fTrackEtaMax(copy.fTrackEtaMax)
505 ,fTrackPhiMin(copy.fTrackPhiMin)
506 ,fTrackPhiMax(copy.fTrackPhiMax)
507 ,fJetPtCut(copy.fJetPtCut)
508 ,fJetEtaMin(copy.fJetEtaMin)
509 ,fJetEtaMax(copy.fJetEtaMax)
510 ,fJetPhiMin(copy.fJetPhiMin)
fe343c6b 511 ,fJetPhiMax(copy.fJetPhiMax)
656dc810 512 ,fDiJetCut(copy.fDiJetCut)
513 ,fDiJetDeltaPhiCut(copy.fDiJetDeltaPhiCut)
514 ,fDiJetPtFractionCut(copy.fDiJetPtFractionCut)
515 ,fDiJetCDFCut(copy.fDiJetCDFCut)
516 ,fDiJetKindBins(copy.fDiJetKindBins)
517 ,fFFRadius(copy.fFFRadius)
1da9498b 518 ,fFFBckgRadius(copy.fFFBckgRadius)
519 ,fBckgMode(copy.fBckgMode)
67e37e80 520 ,fIJMode(copy.fIJMode)
cb76764e 521 ,fUseRecEffRecJetPtBins(copy.fUseRecEffRecJetPtBins)
c2658535 522 ,fAvgTrials(copy.fAvgTrials)
656dc810 523 ,fTracksRec(copy.fTracksRec)
524 ,fTracksRecCuts(copy.fTracksRecCuts)
525 ,fTracksGen(copy.fTracksGen)
fe343c6b 526 ,fTracksAODMCCharged(copy.fTracksAODMCCharged)
527 ,fTracksRecQualityCuts(copy.fTracksRecQualityCuts)
656dc810 528 ,fJetsRec(copy.fJetsRec)
529 ,fJetsRecCuts(copy.fJetsRecCuts)
530 ,fJetsGen(copy.fJetsGen)
fe343c6b 531 ,fJetsRecEff(copy.fJetsRecEff)
67e37e80 532 ,fBckgJetsRec(copy.fBckgJetsRec)
533 ,fBckgJetsRecCuts(copy.fBckgJetsRecCuts)
534 ,fBckgJetsGen(copy.fBckgJetsGen)
656dc810 535 ,fQATrackHistosRec(copy.fQATrackHistosRec)
536 ,fQATrackHistosRecCuts(copy.fQATrackHistosRecCuts)
537 ,fQATrackHistosGen(copy.fQATrackHistosGen)
538 ,fQAJetHistosRec(copy.fQAJetHistosRec)
539 ,fQAJetHistosRecCuts(copy.fQAJetHistosRecCuts)
540 ,fQAJetHistosRecCutsLeading(copy.fQAJetHistosRecCutsLeading)
541 ,fQAJetHistosGen(copy.fQAJetHistosGen)
542 ,fQAJetHistosGenLeading(copy.fQAJetHistosGenLeading)
fe343c6b 543 ,fQAJetHistosRecEffLeading(copy.fQAJetHistosRecEffLeading)
656dc810 544 ,fFFHistosRecCuts(copy.fFFHistosRecCuts)
545 ,fFFHistosRecLeading(copy.fFFHistosRecLeading)
546 ,fFFHistosRecLeadingTrack(copy.fFFHistosRecLeadingTrack)
547 ,fFFHistosGen(copy.fFFHistosGen)
548 ,fFFHistosGenLeading(copy.fFFHistosGenLeading)
549 ,fFFHistosGenLeadingTrack(copy.fFFHistosGenLeadingTrack)
550 ,fIJHistosRecCuts(copy.fIJHistosRecCuts)
551 ,fIJHistosRecLeading(copy.fIJHistosRecLeading)
552 ,fIJHistosRecLeadingTrack(copy.fIJHistosRecLeadingTrack)
553 ,fIJHistosGen(copy.fIJHistosGen)
554 ,fIJHistosGenLeading(copy.fIJHistosGenLeading)
555 ,fIJHistosGenLeadingTrack(copy.fIJHistosGenLeadingTrack)
556 ,fFFDiJetHistosRecCuts(copy.fFFDiJetHistosRecCuts)
557 ,fFFDiJetHistosRecLeading(copy.fFFDiJetHistosRecLeading)
558 ,fFFDiJetHistosRecLeadingTrack(copy.fFFDiJetHistosRecLeadingTrack)
559 ,fFFDiJetHistosGen(copy.fFFDiJetHistosGen)
560 ,fFFDiJetHistosGenLeading(copy.fFFDiJetHistosGenLeading)
561 ,fFFDiJetHistosGenLeadingTrack(copy.fFFDiJetHistosGenLeadingTrack)
562 ,fQADiJetHistosRecCuts(copy.fQADiJetHistosRecCuts)
563 ,fQADiJetHistosGen(copy.fQADiJetHistosGen)
564 ,fQATrackHighPtThreshold(copy.fQATrackHighPtThreshold)
565 ,fFFNBinsJetPt(copy.fFFNBinsJetPt)
566 ,fFFJetPtMin(copy.fFFJetPtMin)
567 ,fFFJetPtMax(copy.fFFJetPtMax)
568 ,fFFNBinsPt(copy.fFFNBinsPt)
569 ,fFFPtMin(copy.fFFPtMin)
570 ,fFFPtMax(copy.fFFPtMax)
571 ,fFFNBinsXi(copy.fFFNBinsXi)
572 ,fFFXiMin(copy.fFFXiMin)
573 ,fFFXiMax(copy.fFFXiMax)
574 ,fFFNBinsZ(copy.fFFNBinsZ)
575 ,fFFZMin(copy.fFFZMin)
576 ,fFFZMax(copy.fFFZMax)
577 ,fQAJetNBinsPt(copy.fQAJetNBinsPt)
578 ,fQAJetPtMin(copy.fQAJetPtMin)
579 ,fQAJetPtMax(copy.fQAJetPtMax)
580 ,fQAJetNBinsEta(copy.fQAJetNBinsEta)
581 ,fQAJetEtaMin(copy.fQAJetEtaMin)
582 ,fQAJetEtaMax(copy.fQAJetEtaMax)
583 ,fQAJetNBinsPhi(copy.fQAJetNBinsPhi)
584 ,fQAJetPhiMin(copy.fQAJetPhiMin)
585 ,fQAJetPhiMax(copy.fQAJetPhiMax)
586 ,fQATrackNBinsPt(copy.fQATrackNBinsPt)
587 ,fQATrackPtMin(copy.fQATrackPtMin)
588 ,fQATrackPtMax(copy.fQATrackPtMax)
589 ,fQATrackNBinsEta(copy.fQATrackNBinsEta)
590 ,fQATrackEtaMin(copy.fQATrackEtaMin)
591 ,fQATrackEtaMax(copy.fQATrackEtaMax)
592 ,fQATrackNBinsPhi(copy.fQATrackNBinsPhi)
593 ,fQATrackPhiMin(copy.fQATrackPhiMin)
594 ,fQATrackPhiMax(copy.fQATrackPhiMax)
595 ,fIJNBinsJetPt(copy.fIJNBinsJetPt)
596 ,fIJJetPtMin(copy.fIJJetPtMin)
597 ,fIJJetPtMax(copy.fIJJetPtMax)
598 ,fIJNBinsPt(copy.fIJNBinsPt)
599 ,fIJPtMin(copy.fIJPtMin)
600 ,fIJPtMax(copy.fIJPtMax)
601 ,fIJNBinsZ(copy.fIJNBinsZ)
602 ,fIJZMin(copy.fIJZMin)
603 ,fIJZMax(copy.fIJZMax)
604 ,fIJNBinsCosTheta(copy.fIJNBinsCosTheta)
605 ,fIJCosThetaMin(copy.fIJCosThetaMin)
606 ,fIJCosThetaMax(copy.fIJCosThetaMax)
607 ,fIJNBinsTheta(copy.fIJNBinsTheta)
608 ,fIJThetaMin(copy.fIJThetaMin)
609 ,fIJThetaMax(copy.fIJThetaMax)
610 ,fIJNBinsJt(copy.fIJNBinsJt)
611 ,fIJJtMin(copy.fIJJtMin)
612 ,fIJJtMax(copy.fIJJtMax)
613 ,fDiJetNBinsJetInvMass(copy.fDiJetNBinsJetInvMass)
614 ,fDiJetJetInvMassMin(copy.fDiJetJetInvMassMin)
615 ,fDiJetJetInvMassMax(copy.fDiJetJetInvMassMax)
616 ,fDiJetNBinsJetPt(copy.fDiJetNBinsJetPt)
617 ,fDiJetJetPtMin(copy.fDiJetJetPtMin)
618 ,fDiJetJetPtMax(copy.fDiJetJetPtMax)
619 ,fDiJetNBinsPt(copy.fDiJetNBinsPt)
620 ,fDiJetPtMin(copy.fDiJetPtMin)
621 ,fDiJetPtMax(copy.fDiJetPtMax)
622 ,fDiJetNBinsXi(copy.fDiJetNBinsXi)
623 ,fDiJetXiMin(copy.fDiJetXiMin)
624 ,fDiJetXiMax(copy.fDiJetXiMax)
625 ,fDiJetNBinsZ(copy.fDiJetNBinsZ)
626 ,fDiJetZMin(copy.fDiJetZMin)
627 ,fDiJetZMax(copy.fDiJetZMax)
628 ,fQADiJetNBinsInvMass(copy.fQADiJetNBinsInvMass)
629 ,fQADiJetInvMassMin(copy.fQADiJetInvMassMin)
630 ,fQADiJetInvMassMax(copy.fQADiJetInvMassMax)
631 ,fQADiJetNBinsJetPt(copy.fQADiJetNBinsJetPt)
632 ,fQADiJetJetPtMin(copy.fQADiJetJetPtMin)
633 ,fQADiJetJetPtMax(copy.fQADiJetJetPtMax)
634 ,fQADiJetNBinsDeltaPhi(copy.fQADiJetNBinsDeltaPhi)
635 ,fQADiJetDeltaPhiMin(copy.fQADiJetDeltaPhiMin)
636 ,fQADiJetDeltaPhiMax(copy.fQADiJetDeltaPhiMax)
637 ,fQADiJetNBinsDeltaEta(copy.fQADiJetNBinsDeltaEta)
638 ,fQADiJetDeltaEtaMin(copy.fQADiJetDeltaEtaMin)
639 ,fQADiJetDeltaEtaMax(copy.fQADiJetDeltaEtaMax)
640 ,fQADiJetNBinsDeltaPt(copy.fQADiJetNBinsDeltaPt)
641 ,fQADiJetDeltaPtMin(copy.fQADiJetDeltaPtMin)
642 ,fQADiJetDeltaPtMax(copy.fQADiJetDeltaPtMax)
643 ,fCommonHistList(copy.fCommonHistList)
644 ,fh1EvtSelection(copy.fh1EvtSelection)
645 ,fh1VertexNContributors(copy.fh1VertexNContributors)
646 ,fh1VertexZ(copy.fh1VertexZ)
647 ,fh1EvtMult(copy.fh1EvtMult)
ac017ff3 648 ,fh1Xsec(copy.fh1Xsec)
649 ,fh1Trials(copy.fh1Trials)
650 ,fh1PtHard(copy.fh1PtHard)
651 ,fh1PtHardTrials(copy.fh1PtHardTrials)
656dc810 652 ,fh1nRecJetsCuts(copy.fh1nRecJetsCuts)
653 ,fh1nGenJets(copy.fh1nGenJets)
fe343c6b 654 ,fh1nRecEffJets(copy.fh1nRecEffJets)
67e37e80 655 ,fh1nRecBckgJetsCuts(copy.fh1nRecBckgJetsCuts)
656 ,fh1nGenBckgJets(copy.fh1nGenBckgJets)
cb76764e 657 ,fh2PtRecVsGenPrim(copy.fh2PtRecVsGenPrim)
658 ,fQATrackHistosRecEffGen(copy.fQATrackHistosRecEffGen)
659 ,fQATrackHistosRecEffRec(copy.fQATrackHistosRecEffRec)
660 ,fFFHistosRecEffGen(copy.fFFHistosRecEffGen)
661 ,fFFHistosRecEffRec(copy.fFFHistosRecEffRec)
1da9498b 662 // Background
663 ,fh1OutLeadingMult(copy.fh1OutLeadingMult)
664 ,fh1PerpMult(copy.fh1PerpMult)
665 ,fh1Out2JetsMult(copy.fh1Out2JetsMult)
666 ,fh1Out3JetsMult(copy.fh1Out3JetsMult)
67e37e80 667 ,fQABckgHisto0RecCuts(copy.fQABckgHisto0RecCuts)
668 ,fQABckgHisto0Gen(copy.fQABckgHisto0Gen)
669 ,fQABckgHisto1RecCuts(copy.fQABckgHisto1RecCuts)
670 ,fQABckgHisto1Gen(copy.fQABckgHisto1Gen)
671 ,fQABckgHisto2RecCuts(copy.fQABckgHisto2RecCuts)
672 ,fQABckgHisto2Gen(copy.fQABckgHisto2Gen)
673 ,fFFBckgHisto0RecCuts(copy.fFFBckgHisto0RecCuts)
674 ,fFFBckgHisto0RecLeading(copy.fFFBckgHisto0RecLeading)
675 ,fFFBckgHisto0Gen(copy.fFFBckgHisto0Gen)
676 ,fFFBckgHisto0GenLeading(copy.fFFBckgHisto0GenLeading)
677 ,fFFBckgHisto1RecCuts(copy.fFFBckgHisto1RecCuts)
678 ,fFFBckgHisto1RecLeading(copy.fFFBckgHisto1RecLeading)
679 ,fFFBckgHisto1Gen(copy.fFFBckgHisto1Gen)
680 ,fFFBckgHisto1GenLeading(copy.fFFBckgHisto1GenLeading)
681 ,fFFBckgHisto2RecCuts(copy.fFFBckgHisto2RecCuts)
682 ,fFFBckgHisto2RecLeading(copy.fFFBckgHisto2RecLeading)
683 ,fFFBckgHisto2Gen(copy.fFFBckgHisto2Gen)
684 ,fFFBckgHisto2GenLeading(copy.fFFBckgHisto2GenLeading)
685 ,fIJBckgHisto0RecCuts(copy.fIJBckgHisto0RecCuts)
686 ,fIJBckgHisto0RecLeading(copy.fIJBckgHisto0RecLeading)
687 ,fIJBckgHisto0Gen(copy.fIJBckgHisto0Gen)
688 ,fIJBckgHisto0GenLeading(copy.fIJBckgHisto0GenLeading)
689 ,fIJBckgHisto1RecCuts(copy.fIJBckgHisto1RecCuts)
690 ,fIJBckgHisto1RecLeading(copy.fIJBckgHisto1RecLeading)
691 ,fIJBckgHisto1Gen(copy.fIJBckgHisto1Gen)
692 ,fIJBckgHisto1GenLeading(copy.fIJBckgHisto1GenLeading)
693 ,fIJBckgHisto2RecCuts(copy.fIJBckgHisto2RecCuts)
694 ,fIJBckgHisto2RecLeading(copy.fIJBckgHisto2RecLeading)
695 ,fIJBckgHisto2Gen(copy.fIJBckgHisto2Gen)
696 ,fIJBckgHisto2GenLeading(copy.fIJBckgHisto2GenLeading)
697 ,fRandom(copy.fRandom)
656dc810 698{
699 // copy constructor
67e37e80 700 fBckgType[0] = copy.fBckgType[0];
701 fBckgType[1] = copy.fBckgType[1];
702 fBckgType[2] = copy.fBckgType[2];
656dc810 703}
704
705// _________________________________________________________________________________________________________________________________
706AliAnalysisTaskFragmentationFunction& AliAnalysisTaskFragmentationFunction::operator=(const AliAnalysisTaskFragmentationFunction& o)
707{
708 // assignment
709
710 if(this!=&o){
711
712 AliAnalysisTaskSE::operator=(o);
713 fESD = o.fESD;
714 fAOD = o.fAOD;
656dc810 715 fBranchRecJets = o.fBranchRecJets;
716 fBranchGenJets = o.fBranchGenJets;
717 fTrackTypeGen = o.fTrackTypeGen;
718 fJetTypeGen = o.fJetTypeGen;
fe343c6b 719 fJetTypeRecEff = o.fJetTypeRecEff;
656dc810 720 fFilterMask = o.fFilterMask;
ac017ff3 721 fUsePhysicsSelection = o.fUsePhysicsSelection;
656dc810 722 fTrackPtCut = o.fTrackPtCut;
723 fTrackEtaMin = o.fTrackEtaMin;
724 fTrackEtaMax = o.fTrackEtaMax;
725 fTrackPhiMin = o.fTrackPhiMin;
726 fTrackPhiMax = o.fTrackPhiMax;
727 fJetPtCut = o.fJetPtCut;
728 fJetEtaMin = o.fJetEtaMin;
729 fJetEtaMax = o.fJetEtaMax;
730 fJetPhiMin = o.fJetPhiMin;
731 fJetPhiMax = o.fJetPhiMin;
732 fDiJetCut = o.fDiJetCut;
733 fDiJetDeltaPhiCut = o.fDiJetDeltaPhiCut;
734 fDiJetPtFractionCut = o.fDiJetPtFractionCut;
735 fDiJetCDFCut = o.fDiJetCDFCut;
736 fDiJetKindBins = o.fDiJetKindBins;
737 fFFRadius = o.fFFRadius;
1da9498b 738 fFFBckgRadius = o.fFFBckgRadius;
739 fBckgMode = o.fBckgMode;
67e37e80 740 fIJMode = o.fIJMode;
741 fBckgType[0] = o.fBckgType[0];
742 fBckgType[1] = o.fBckgType[1];
743 fBckgType[2] = o.fBckgType[2];
cb76764e 744 fUseRecEffRecJetPtBins = o.fUseRecEffRecJetPtBins;
c2658535 745 fAvgTrials = o.fAvgTrials;
656dc810 746 fTracksRec = o.fTracksRec;
747 fTracksRecCuts = o.fTracksRecCuts;
748 fTracksGen = o.fTracksGen;
fe343c6b 749 fTracksAODMCCharged = o.fTracksAODMCCharged;
750 fTracksRecQualityCuts = o.fTracksRecQualityCuts;
656dc810 751 fJetsRec = o.fJetsRec;
752 fJetsRecCuts = o.fJetsRecCuts;
753 fJetsGen = o.fJetsGen;
fe343c6b 754 fJetsRecEff = o.fJetsRecEff;
67e37e80 755 fBckgJetsRec = o.fBckgJetsRec;
756 fBckgJetsRecCuts = o.fBckgJetsRecCuts;
757 fBckgJetsGen = o.fBckgJetsGen;
656dc810 758 fQATrackHistosRec = o.fQATrackHistosRec;
759 fQATrackHistosRecCuts = o.fQATrackHistosRecCuts;
760 fQATrackHistosGen = o.fQATrackHistosGen;
761 fQAJetHistosRec = o.fQAJetHistosRec;
762 fQAJetHistosRecCuts = o.fQAJetHistosRecCuts;
763 fQAJetHistosRecCutsLeading = o.fQAJetHistosRecCutsLeading;
764 fQAJetHistosGen = o.fQAJetHistosGen;
765 fQAJetHistosGenLeading = o.fQAJetHistosGenLeading;
fe343c6b 766 fQAJetHistosRecEffLeading = o.fQAJetHistosRecEffLeading;
656dc810 767 fFFHistosRecCuts = o.fFFHistosRecCuts;
768 fFFHistosRecLeading = o.fFFHistosRecLeading;
769 fFFHistosRecLeadingTrack = o.fFFHistosRecLeadingTrack;
770 fFFHistosGen = o.fFFHistosGen;
771 fFFHistosGenLeading = o.fFFHistosGenLeading;
772 fFFHistosGenLeadingTrack = o.fFFHistosGenLeadingTrack;
773 fIJHistosRecCuts = o.fIJHistosRecCuts;
774 fIJHistosRecLeading = o.fIJHistosRecLeading;
775 fIJHistosRecLeadingTrack = o.fIJHistosRecLeadingTrack;
776 fIJHistosGen = o.fIJHistosGen;
777 fIJHistosGenLeading = o.fIJHistosGenLeading;
778 fIJHistosGenLeadingTrack = o.fIJHistosGenLeadingTrack;
779 fFFDiJetHistosRecCuts = o.fFFDiJetHistosRecCuts;
780 fFFDiJetHistosRecLeading = o.fFFDiJetHistosRecLeading;
781 fFFDiJetHistosRecLeadingTrack = o.fFFDiJetHistosRecLeadingTrack;
782 fFFDiJetHistosGen = o.fFFDiJetHistosGen;
783 fFFDiJetHistosGenLeading = o.fFFDiJetHistosGenLeading;
784 fFFDiJetHistosGenLeadingTrack = o.fFFDiJetHistosGenLeadingTrack;
785 fQADiJetHistosRecCuts = o.fQADiJetHistosRecCuts;
786 fQADiJetHistosGen = o.fQADiJetHistosGen;
787 fQATrackHighPtThreshold = o.fQATrackHighPtThreshold;
788 fFFNBinsJetPt = o.fFFNBinsJetPt;
789 fFFJetPtMin = o.fFFJetPtMin;
790 fFFJetPtMax = o.fFFJetPtMax;
791 fFFNBinsPt = o.fFFNBinsPt;
792 fFFPtMin = o.fFFPtMin;
793 fFFPtMax = o.fFFPtMax;
794 fFFNBinsXi = o.fFFNBinsXi;
795 fFFXiMin = o.fFFXiMin;
796 fFFXiMax = o.fFFXiMax;
797 fFFNBinsZ = o.fFFNBinsZ;
798 fFFZMin = o.fFFZMin;
799 fFFZMax = o.fFFZMax;
800 fQAJetNBinsPt = o.fQAJetNBinsPt;
801 fQAJetPtMin = o.fQAJetPtMin;
802 fQAJetPtMax = o.fQAJetPtMax;
803 fQAJetNBinsEta = o.fQAJetNBinsEta;
804 fQAJetEtaMin = o.fQAJetEtaMin;
805 fQAJetEtaMax = o.fQAJetEtaMax;
806 fQAJetNBinsPhi = o.fQAJetNBinsPhi;
807 fQAJetPhiMin = o.fQAJetPhiMin;
808 fQAJetPhiMax = o.fQAJetPhiMax;
809 fQATrackNBinsPt = o.fQATrackNBinsPt;
810 fQATrackPtMin = o.fQATrackPtMin;
811 fQATrackPtMax = o.fQATrackPtMax;
812 fQATrackNBinsEta = o.fQATrackNBinsEta;
813 fQATrackEtaMin = o.fQATrackEtaMin;
814 fQATrackEtaMax = o.fQATrackEtaMax;
815 fQATrackNBinsPhi = o.fQATrackNBinsPhi;
816 fQATrackPhiMin = o.fQATrackPhiMin;
817 fQATrackPhiMax = o.fQATrackPhiMax;
818 fIJNBinsJetPt = o.fIJNBinsJetPt;
819 fIJJetPtMin = o.fIJJetPtMin;
820 fIJJetPtMax = o.fIJJetPtMax;
821 fIJNBinsPt = o.fIJNBinsPt;
822 fIJPtMin = o.fIJPtMin;
823 fIJPtMax = o.fIJPtMax;
824 fIJNBinsZ = o.fIJNBinsZ;
825 fIJZMin = o.fIJZMin;
826 fIJZMax = o.fIJZMax;
827 fIJNBinsCosTheta = o.fIJNBinsCosTheta;
828 fIJCosThetaMin = o.fIJCosThetaMin;
829 fIJCosThetaMax = o.fIJCosThetaMax;
830 fIJNBinsTheta = o.fIJNBinsTheta;
831 fIJThetaMin = o.fIJThetaMin;
832 fIJThetaMax = o.fIJThetaMax;
833 fIJNBinsJt = o.fIJNBinsJt;
834 fIJJtMin = o.fIJJtMin;
835 fIJJtMax = o.fIJJtMax;
836 fDiJetNBinsJetInvMass = o.fDiJetNBinsJetInvMass;
837 fDiJetJetInvMassMin = o.fDiJetJetInvMassMin;
838 fDiJetJetInvMassMax = o.fDiJetJetInvMassMax;
839 fDiJetNBinsJetPt = o.fDiJetNBinsJetPt;
840 fDiJetJetPtMin = o.fDiJetJetPtMin;
841 fDiJetJetPtMax = o.fDiJetJetPtMax;
842 fDiJetNBinsPt = o.fDiJetNBinsPt;
843 fDiJetPtMin = o.fDiJetPtMin;
844 fDiJetPtMax = o.fDiJetPtMax;
845 fDiJetNBinsXi = o.fDiJetNBinsXi;
846 fDiJetXiMin = o.fDiJetXiMin;
847 fDiJetXiMax = o.fDiJetXiMax;
848 fDiJetNBinsZ = o.fDiJetNBinsZ;
849 fDiJetZMin = o.fDiJetZMin;
850 fDiJetZMax = o.fDiJetZMax;
851 fQADiJetNBinsInvMass = o.fQADiJetNBinsInvMass;
852 fQADiJetInvMassMin = o.fQADiJetInvMassMin;
853 fQADiJetInvMassMax = o.fQADiJetInvMassMax;
854 fQADiJetNBinsJetPt = o.fQADiJetNBinsJetPt;
855 fQADiJetJetPtMin = o.fQADiJetJetPtMin;
856 fQADiJetJetPtMax = o.fQADiJetJetPtMax;
857 fQADiJetNBinsDeltaPhi = o.fQADiJetNBinsDeltaPhi;
858 fQADiJetDeltaPhiMin = o.fQADiJetDeltaPhiMin;
859 fQADiJetDeltaPhiMax = o.fQADiJetDeltaPhiMax;
860 fQADiJetNBinsDeltaEta = o.fQADiJetNBinsDeltaEta;
861 fQADiJetDeltaEtaMin = o.fQADiJetDeltaEtaMin;
862 fQADiJetDeltaEtaMax = o.fQADiJetDeltaEtaMax;
863 fQADiJetNBinsDeltaPt = o.fQADiJetNBinsDeltaPt;
864 fQADiJetDeltaPtMin = o.fQADiJetDeltaPtMin;
865 fQADiJetDeltaPtMax = o.fQADiJetDeltaPtMax;
866 fCommonHistList = o.fCommonHistList;
867 fh1EvtSelection = o.fh1EvtSelection;
868 fh1VertexNContributors = o.fh1VertexNContributors;
869 fh1VertexZ = o.fh1VertexZ;
870 fh1EvtMult = o.fh1EvtMult;
ac017ff3 871 fh1Xsec = o.fh1Xsec;
872 fh1Trials = o.fh1Trials;
873 fh1PtHard = o.fh1PtHard;
874 fh1PtHardTrials = o.fh1PtHardTrials;
656dc810 875 fh1nRecJetsCuts = o.fh1nRecJetsCuts;
876 fh1nGenJets = o.fh1nGenJets;
fe343c6b 877 fh1nRecEffJets = o.fh1nRecEffJets;
cb76764e 878 fh2PtRecVsGenPrim = o.fh2PtRecVsGenPrim;
879 fQATrackHistosRecEffGen = o.fQATrackHistosRecEffGen;
880 fQATrackHistosRecEffRec = o.fQATrackHistosRecEffRec;
881 fFFHistosRecEffGen = o.fFFHistosRecEffGen;
882 fFFHistosRecEffRec = o.fFFHistosRecEffRec;
1da9498b 883 // Background
67e37e80 884 fh1OutLeadingMult = o.fh1OutLeadingMult;
885 fh1PerpMult = o.fh1PerpMult;
886 fh1Out2JetsMult = o.fh1Out2JetsMult;
887 fh1Out3JetsMult = o.fh1Out3JetsMult;
888 fQABckgHisto0RecCuts = o.fQABckgHisto0RecCuts;
889 fQABckgHisto0Gen = o.fQABckgHisto0Gen;
890 fQABckgHisto1RecCuts = o.fQABckgHisto1RecCuts;
891 fQABckgHisto1Gen = o.fQABckgHisto1Gen;
892 fQABckgHisto2RecCuts = o.fQABckgHisto2RecCuts;
893 fQABckgHisto2Gen = o.fQABckgHisto2Gen;
894 fFFBckgHisto0RecCuts = o.fFFBckgHisto0RecCuts;
895 fFFBckgHisto0RecLeading = o.fFFBckgHisto0RecLeading;
896 fFFBckgHisto0Gen = o.fFFBckgHisto0Gen;
897 fFFBckgHisto0GenLeading = o.fFFBckgHisto0GenLeading;
898 fFFBckgHisto1RecCuts = o.fFFBckgHisto1RecCuts;
899 fFFBckgHisto1RecLeading = o.fFFBckgHisto1RecLeading;
900 fFFBckgHisto1Gen = o.fFFBckgHisto1Gen;
901 fFFBckgHisto1GenLeading = o.fFFBckgHisto1GenLeading;
902 fFFBckgHisto2RecCuts = o.fFFBckgHisto2RecCuts;
903 fFFBckgHisto2RecLeading = o.fFFBckgHisto2RecLeading;
904 fFFBckgHisto2Gen = o.fFFBckgHisto2Gen;
905 fFFBckgHisto2GenLeading = o.fFFBckgHisto2GenLeading;
906 fIJBckgHisto0RecCuts = o.fIJBckgHisto0RecCuts;
907 fIJBckgHisto0RecLeading = o.fIJBckgHisto0RecLeading;
908 fIJBckgHisto0Gen = o.fIJBckgHisto0Gen;
909 fIJBckgHisto0GenLeading = o.fIJBckgHisto0GenLeading;
910 fIJBckgHisto1RecCuts = o.fIJBckgHisto1RecCuts;
911 fIJBckgHisto1RecLeading = o.fIJBckgHisto1RecLeading;
912 fIJBckgHisto1Gen = o.fIJBckgHisto1Gen;
913 fIJBckgHisto1GenLeading = o.fIJBckgHisto1GenLeading;
914 fIJBckgHisto2RecCuts = o.fIJBckgHisto2RecCuts;
915 fIJBckgHisto2RecLeading = o.fIJBckgHisto2RecLeading;
916 fIJBckgHisto2Gen = o.fIJBckgHisto2Gen;
917 fIJBckgHisto2GenLeading = o.fIJBckgHisto2GenLeading;
918 fRandom = o.fRandom;
656dc810 919 }
920
921 return *this;
922}
923
924//___________________________________________________________________________
925AliAnalysisTaskFragmentationFunction::~AliAnalysisTaskFragmentationFunction()
926{
927 // destructor
928
fe343c6b 929 if(fTracksRec) delete fTracksRec;
930 if(fTracksRecCuts) delete fTracksRecCuts;
931 if(fTracksGen) delete fTracksGen;
932 if(fTracksAODMCCharged) delete fTracksAODMCCharged;
933 if(fTracksRecQualityCuts) delete fTracksRecQualityCuts;
934 if(fJetsRec) delete fJetsRec;
935 if(fJetsRecCuts) delete fJetsRecCuts;
936 if(fJetsGen) delete fJetsGen;
937 if(fJetsRecEff) delete fJetsRecEff;
67e37e80 938 if(fBckgMode && (fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters)){
939 if(fBckgJetsRec) delete fBckgJetsRec;
940 if(fBckgJetsRecCuts) delete fBckgJetsRecCuts;
941 if(fBckgJetsGen) delete fBckgJetsGen;
942 }
943 if(fRandom) delete fRandom;
656dc810 944}
945
946//______________________________________________________________________________________________________
947AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::AliFragFuncHistos(const char* name,
948 Int_t nJetPt, Float_t jetPtMin, Float_t jetPtMax,
949 Int_t nPt, Float_t ptMin, Float_t ptMax,
950 Int_t nXi, Float_t xiMin, Float_t xiMax,
951 Int_t nZ , Float_t zMin , Float_t zMax )
952 : TObject()
953 ,fNBinsJetPt(nJetPt)
954 ,fJetPtMin(jetPtMin)
955 ,fJetPtMax(jetPtMax)
956 ,fNBinsPt(nPt)
957 ,fPtMin(ptMin)
958 ,fPtMax(ptMax)
959 ,fNBinsXi(nXi)
960 ,fXiMin(xiMin)
961 ,fXiMax(xiMax)
962 ,fNBinsZ(nZ)
963 ,fZMin(zMin)
964 ,fZMax(zMax)
965 ,fh2TrackPt(0)
966 ,fh2Xi(0)
967 ,fh2Z(0)
968 ,fh1JetPt(0)
fceb275f 969 ,fNameFF(name)
656dc810 970{
971 // default constructor
972
973}
974
975//___________________________________________________________________________
976AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::AliFragFuncHistos(const AliFragFuncHistos& copy)
977 : TObject()
978 ,fNBinsJetPt(copy.fNBinsJetPt)
979 ,fJetPtMin(copy.fJetPtMin)
980 ,fJetPtMax(copy.fJetPtMax)
981 ,fNBinsPt(copy.fNBinsPt)
982 ,fPtMin(copy.fPtMin)
983 ,fPtMax(copy.fPtMax)
984 ,fNBinsXi(copy.fNBinsXi)
985 ,fXiMin(copy.fXiMin)
986 ,fXiMax(copy.fXiMax)
987 ,fNBinsZ(copy.fNBinsZ)
988 ,fZMin(copy.fZMin)
989 ,fZMax(copy.fZMax)
990 ,fh2TrackPt(copy.fh2TrackPt)
991 ,fh2Xi(copy.fh2Xi)
992 ,fh2Z(copy.fh2Z)
993 ,fh1JetPt(copy.fh1JetPt)
fceb275f 994 ,fNameFF(copy.fNameFF)
656dc810 995{
996 // copy constructor
997}
998
999//_______________________________________________________________________________________________________________________________________________________________
1000AliAnalysisTaskFragmentationFunction::AliFragFuncHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncHistos& o)
1001{
1002 // assignment
1003
1004 if(this!=&o){
1005 TObject::operator=(o);
1006 fNBinsJetPt = o.fNBinsJetPt;
1007 fJetPtMin = o.fJetPtMin;
1008 fJetPtMax = o.fJetPtMax;
1009 fNBinsPt = o.fNBinsPt;
1010 fPtMin = o.fPtMin;
1011 fPtMax = o.fPtMax;
1012 fNBinsXi = o.fNBinsXi;
1013 fXiMin = o.fXiMin;
1014 fXiMax = o.fXiMax;
1015 fNBinsZ = o.fNBinsZ;
1016 fZMin = o.fZMin;
1017 fZMax = o.fZMax;
1018 fh2TrackPt = o.fh2TrackPt;
1019 fh2Xi = o.fh2Xi;
1020 fh2Z = o.fh2Z;
1021 fh1JetPt = o.fh1JetPt;
fceb275f 1022 fNameFF = o.fNameFF;
656dc810 1023 }
1024
1025 return *this;
1026}
1027
1028//_________________________________________________________
1029AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::~AliFragFuncHistos()
1030{
1031 // destructor
1032
1033 if(fh1JetPt) delete fh1JetPt;
1034 if(fh2TrackPt) delete fh2TrackPt;
1035 if(fh2Xi) delete fh2Xi;
1036 if(fh2Z) delete fh2Z;
1037}
1038
1039//_________________________________________________________________
1040void AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::DefineHistos()
1041{
1042 // book FF histos
1043
fceb275f 1044 fh1JetPt = new TH1F(Form("fh1FFJetPt%s", fNameFF.Data()),"",fNBinsJetPt,fJetPtMin,fJetPtMax);
1045 fh2TrackPt = new TH2F(Form("fh2FFTrackPt%s",fNameFF.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax,fNBinsPt, fPtMin, fPtMax);
1046 fh2Xi = new TH2F(Form("fh2FFXi%s",fNameFF.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsXi, fXiMin, fXiMax);
1047 fh2Z = new TH2F(Form("fh2FFZ%s",fNameFF.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsZ, fZMin, fZMax);
656dc810 1048
1049 AliAnalysisTaskFragmentationFunction::SetProperties(fh1JetPt, "p_{T} [GeV/c]", "entries");
1050 AliAnalysisTaskFragmentationFunction::SetProperties(fh2TrackPt,"jet p_{T} [GeV/c]","p_{T} [GeV/c]","entries");
1051 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Xi,"jet p_{T} [GeV/c]","#xi", "entries");
1052 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Z,"jet p_{T} [GeV/c]","z","entries");
1053}
1054
1055//_______________________________________________________________________________________________________________
1da9498b 1056void AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::FillFF(Float_t trackPt, Float_t jetPt, Bool_t incrementJetPt, Float_t norm)
656dc810 1057{
1058 // fill FF
1059
1da9498b 1060 if(incrementJetPt && norm) fh1JetPt->Fill(jetPt,1/norm);
67e37e80 1061 else if(incrementJetPt) fh1JetPt->Fill(jetPt);
1da9498b 1062 if(norm)fh2TrackPt->Fill(jetPt,trackPt,1/norm);
1063 else fh2TrackPt->Fill(jetPt,trackPt);
656dc810 1064
656dc810 1065 Double_t z = 0.;
1066 if(jetPt>0) z = trackPt / jetPt;
1067 Double_t xi = 0;
1068 if(z>0) xi = TMath::Log(1/z);
1069
1da9498b 1070 if(norm){
1071 fh2Xi->Fill(jetPt,xi,1/norm);
1072 fh2Z->Fill(jetPt,z,1/norm);
1073 }
1074 else {
1075 fh2Xi->Fill(jetPt,xi);
1076 fh2Z->Fill(jetPt,z);
1077 }
656dc810 1078}
1079
1080//_________________________________________________________________________________
1081void AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::AddToOutput(TList* list) const
1082{
1083 // add histos to list
1084
1085 list->Add(fh1JetPt);
1086
1087 list->Add(fh2TrackPt);
1088 list->Add(fh2Xi);
1089 list->Add(fh2Z);
1090}
1091
1092//_________________________________________________________________________________________________________
1093AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::AliFragFuncQAJetHistos(const char* name,
1094 Int_t nPt, Float_t ptMin, Float_t ptMax,
1095 Int_t nEta, Float_t etaMin, Float_t etaMax,
1096 Int_t nPhi, Float_t phiMin, Float_t phiMax)
1097 : TObject()
1098 ,fNBinsPt(nPt)
1099 ,fPtMin(ptMin)
1100 ,fPtMax(ptMax)
1101 ,fNBinsEta(nEta)
1102 ,fEtaMin(etaMin)
1103 ,fEtaMax(etaMax)
1104 ,fNBinsPhi(nPhi)
1105 ,fPhiMin(phiMin)
1106 ,fPhiMax(phiMax)
1107 ,fh2EtaPhi(0)
1108 ,fh1Pt(0)
fceb275f 1109 ,fNameQAJ(name)
656dc810 1110{
1111 // default constructor
1112}
1113
1114//____________________________________________________________________________________
1115AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::AliFragFuncQAJetHistos(const AliFragFuncQAJetHistos& copy)
1116 : TObject()
1117 ,fNBinsPt(copy.fNBinsPt)
1118 ,fPtMin(copy.fPtMin)
1119 ,fPtMax(copy.fPtMax)
1120 ,fNBinsEta(copy.fNBinsEta)
1121 ,fEtaMin(copy.fEtaMin)
1122 ,fEtaMax(copy.fEtaMax)
1123 ,fNBinsPhi(copy.fNBinsPhi)
1124 ,fPhiMin(copy.fPhiMin)
1125 ,fPhiMax(copy.fPhiMax)
1126 ,fh2EtaPhi(copy.fh2EtaPhi)
1127 ,fh1Pt(copy.fh1Pt)
fceb275f 1128 ,fNameQAJ(copy.fNameQAJ)
656dc810 1129{
1130 // copy constructor
1131}
1132
1133//________________________________________________________________________________________________________________________________________________________________________
1134AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos& o)
1135{
1136 // assignment
1137
1138 if(this!=&o){
1139 TObject::operator=(o);
1140 fNBinsPt = o.fNBinsPt;
1141 fPtMin = o.fPtMin;
1142 fPtMax = o.fPtMax;
1143 fNBinsEta = o.fNBinsEta;
1144 fEtaMin = o.fEtaMin;
1145 fEtaMax = o.fEtaMax;
1146 fNBinsPhi = o.fNBinsPhi;
1147 fPhiMin = o.fPhiMin;
1148 fPhiMax = o.fPhiMax;
1149 fh2EtaPhi = o.fh2EtaPhi;
1150 fh1Pt = o.fh1Pt;
fceb275f 1151 fNameQAJ = o.fNameQAJ;
656dc810 1152 }
1153
1154 return *this;
1155}
1156
1157//______________________________________________________________
1158AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::~AliFragFuncQAJetHistos()
1159{
1160 // destructor
1161
1162 if(fh2EtaPhi) delete fh2EtaPhi;
1163 if(fh1Pt) delete fh1Pt;
1164}
1165
1166//____________________________________________________________________
1167void AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::DefineHistos()
1168{
1169 // book jet QA histos
1170
fceb275f 1171 fh2EtaPhi = new TH2F(Form("fh2JetQAEtaPhi%s", fNameQAJ.Data()), Form("%s: #eta - #phi distribution", fNameQAJ.Data()), fNBinsEta, fEtaMin, fEtaMax, fNBinsPhi, fPhiMin, fPhiMax);
1172 fh1Pt = new TH1F(Form("fh1JetQAPt%s", fNameQAJ.Data()), Form("%s: p_{T} distribution", fNameQAJ.Data()), fNBinsPt, fPtMin, fPtMax);
656dc810 1173
1174 AliAnalysisTaskFragmentationFunction::SetProperties(fh2EtaPhi, "#eta", "#phi");
1175 AliAnalysisTaskFragmentationFunction::SetProperties(fh1Pt, "p_{T} [GeV/c]", "entries");
1176}
1177
1178//____________________________________________________________________________________________________
1179void AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::FillJetQA(Float_t eta, Float_t phi, Float_t pt)
1180{
1181 // fill jet QA histos
1182
1183 fh2EtaPhi->Fill( eta, phi);
1184 fh1Pt->Fill( pt );
1185}
1186
1187//____________________________________________________________________________________
1188void AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::AddToOutput(TList* list) const
1189{
1190 // add histos to list
1191
1192 list->Add(fh2EtaPhi);
1193 list->Add(fh1Pt);
1194}
1195
1196//___________________________________________________________________________________________________________
1197AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::AliFragFuncQATrackHistos(const char* name,
1198 Int_t nPt, Float_t ptMin, Float_t ptMax,
1199 Int_t nEta, Float_t etaMin, Float_t etaMax,
1200 Int_t nPhi, Float_t phiMin, Float_t phiMax,
1201 Float_t ptThresh)
1202 : TObject()
1203 ,fNBinsPt(nPt)
1204 ,fPtMin(ptMin)
1205 ,fPtMax(ptMax)
1206 ,fNBinsEta(nEta)
1207 ,fEtaMin(etaMin)
1208 ,fEtaMax(etaMax)
1209 ,fNBinsPhi(nPhi)
1210 ,fPhiMin(phiMin)
1211 ,fPhiMax(phiMax)
1212 ,fHighPtThreshold(ptThresh)
1213 ,fh2EtaPhi(0)
1214 ,fh1Pt(0)
1215 ,fh2HighPtEtaPhi(0)
fceb275f 1216 ,fNameQAT(name)
656dc810 1217{
1218 // default constructor
1219}
1220
1221//__________________________________________________________________________________________
1222AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::AliFragFuncQATrackHistos(const AliFragFuncQATrackHistos& copy)
1223 : TObject()
1224 ,fNBinsPt(copy.fNBinsPt)
1225 ,fPtMin(copy.fPtMin)
1226 ,fPtMax(copy.fPtMax)
1227 ,fNBinsEta(copy.fNBinsEta)
1228 ,fEtaMin(copy.fEtaMin)
1229 ,fEtaMax(copy.fEtaMax)
1230 ,fNBinsPhi(copy.fNBinsPhi)
1231 ,fPhiMin(copy.fPhiMin)
1232 ,fPhiMax(copy.fPhiMax)
1233 ,fHighPtThreshold(copy.fHighPtThreshold)
1234 ,fh2EtaPhi(copy.fh2EtaPhi)
1235 ,fh1Pt(copy.fh1Pt)
1236 ,fh2HighPtEtaPhi(copy.fh2HighPtEtaPhi)
fceb275f 1237 ,fNameQAT(copy.fNameQAT)
656dc810 1238{
1239 // copy constructor
1240}
1241
1242// _____________________________________________________________________________________________________________________________________________________________________________
1243AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos& o)
1244{
1245 // assignment
1246
1247 if(this!=&o){
1248 TObject::operator=(o);
1249 fNBinsPt = o.fNBinsPt;
1250 fPtMin = o.fPtMin;
1251 fPtMax = o.fPtMax;
1252 fNBinsEta = o.fNBinsEta;
1253 fEtaMin = o.fEtaMin;
1254 fEtaMax = o.fEtaMax;
1255 fNBinsPhi = o.fNBinsPhi;
1256 fPhiMin = o.fPhiMin;
1257 fPhiMax = o.fPhiMax;
1258 fHighPtThreshold = o.fHighPtThreshold;
1259 fh2EtaPhi = o.fh2EtaPhi;
1260 fh1Pt = o.fh1Pt;
1261 fh2HighPtEtaPhi = o.fh2HighPtEtaPhi;
fceb275f 1262 fNameQAT = o.fNameQAT;
656dc810 1263 }
1264
1265 return *this;
1266}
1267
1268//___________________________________________________________________
1269AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::~AliFragFuncQATrackHistos()
1270{
1271 // destructor
1272
1273 if(fh2EtaPhi) delete fh2EtaPhi;
1274 if(fh2HighPtEtaPhi) delete fh2HighPtEtaPhi;
1275 if(fh1Pt) delete fh1Pt;
1276}
1277
1278//______________________________________________________________________
1279void AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::DefineHistos()
1280{
1281 // book track QA histos
1282
fceb275f 1283 fh2EtaPhi = new TH2F(Form("fh2TrackQAEtaPhi%s", fNameQAT.Data()), Form("%s: #eta - #phi distribution", fNameQAT.Data()), fNBinsEta, fEtaMin, fEtaMax, fNBinsPhi, fPhiMin, fPhiMax);
1284 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);
1285 fh1Pt = new TH1F(Form("fh1TrackQAPt%s", fNameQAT.Data()), Form("%s: p_{T} distribution", fNameQAT.Data()), fNBinsPt, fPtMin, fPtMax);
656dc810 1286
1287 AliAnalysisTaskFragmentationFunction::SetProperties(fh2EtaPhi, "#eta", "#phi");
1288 AliAnalysisTaskFragmentationFunction::SetProperties(fh2HighPtEtaPhi, "#eta", "#phi");
1289 AliAnalysisTaskFragmentationFunction::SetProperties(fh1Pt, "p_{T} [GeV/c]", "entries");
1290}
1291
1292//________________________________________________________________________________________________________
1293void AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::FillTrackQA(Float_t eta, Float_t phi, Float_t pt)
1294{
1295 // fill track QA histos
1296
1297 fh2EtaPhi->Fill( eta, phi);
1298 if(pt > fHighPtThreshold) fh2HighPtEtaPhi->Fill( eta, phi);
1299 fh1Pt->Fill( pt );
1300}
1301
1302//______________________________________________________________________________________
1303void AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::AddToOutput(TList* list) const
1304{
1305 // add histos to list
1306
1307 list->Add(fh2EtaPhi);
1308 list->Add(fh2HighPtEtaPhi);
1309 list->Add(fh1Pt);
1310}
1311
1312//______________________________________________________________________________________________________
1313AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::AliFragFuncIntraJetHistos(const char* name,
1314 Int_t nJetPt, Float_t jetPtMin, Float_t jetPtMax,
1315 Int_t nPt, Float_t ptMin, Float_t ptMax,
1316 Int_t nZ , Float_t zMin , Float_t zMax,
1317 Int_t nCosTheta , Float_t costhetaMin , Float_t costhetaMax,
1318 Int_t nTheta , Float_t thetaMin , Float_t thetaMax,
1319 Int_t nJt , Float_t jtMin , Float_t jtMax)
1320 : TObject()
1321 ,fNBinsJetPt(nJetPt)
1322 ,fJetPtMin(jetPtMin)
1323 ,fJetPtMax(jetPtMax)
1324 ,fNBinsPt(nPt)
1325 ,fPtMin(ptMin)
1326 ,fPtMax(ptMax)
1327 ,fNBinsZ(nZ)
1328 ,fZMin(zMin)
1329 ,fZMax(zMax)
1330 ,fNBinsJt(nJt)
1331 ,fJtMin(jtMin)
1332 ,fJtMax(jtMax)
1333 ,fNBinsTheta(nTheta)
1334 ,fThetaMin(thetaMin)
1335 ,fThetaMax(thetaMax)
1336 ,fNBinsCosTheta(nCosTheta)
1337 ,fCosThetaMin(costhetaMin)
1338 ,fCosThetaMax(costhetaMax)
656dc810 1339 ,fh2CosTheta(0)
67e37e80 1340 ,fh2PtZ(0)
1341 ,fh3ThetaZ(0)
1342 ,fh3JtTheta(0)
1343 ,fh3JtZ(0)
fceb275f 1344 ,fNameIJ(name)
656dc810 1345{
1346 // default constructor
1347
1348}
1349
1350//___________________________________________________________________________
1351AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::AliFragFuncIntraJetHistos(const AliFragFuncIntraJetHistos& copy)
1352 : TObject()
1353 ,fNBinsJetPt(copy.fNBinsJetPt)
1354 ,fJetPtMin(copy.fJetPtMin)
1355 ,fJetPtMax(copy.fJetPtMax)
1356 ,fNBinsPt(copy.fNBinsPt)
1357 ,fPtMin(copy.fPtMin)
1358 ,fPtMax(copy.fPtMax)
1359 ,fNBinsZ(copy.fNBinsZ)
1360 ,fZMin(copy.fZMin)
1361 ,fZMax(copy.fZMax)
1362 ,fNBinsJt(copy.fNBinsJt)
1363 ,fJtMin(copy.fJtMin)
1364 ,fJtMax(copy.fJtMax)
1365 ,fNBinsTheta(copy.fNBinsTheta)
1366 ,fThetaMin(copy.fThetaMin)
1367 ,fThetaMax(copy.fThetaMax)
1368 ,fNBinsCosTheta(copy.fNBinsCosTheta)
1369 ,fCosThetaMin(copy.fCosThetaMin)
1370 ,fCosThetaMax(copy.fCosThetaMax)
656dc810 1371 ,fh2CosTheta(copy.fh2CosTheta)
67e37e80 1372 ,fh2PtZ(copy.fh2PtZ)
1373 ,fh3ThetaZ(copy.fh3ThetaZ)
1374 ,fh3JtTheta(copy.fh3JtTheta)
1375 ,fh3JtZ(copy.fh3JtZ)
fceb275f 1376 ,fNameIJ(copy.fNameIJ)
656dc810 1377{
1378 // copy constructor
1379}
1380
1381//_______________________________________________________________________________________________________________________________________________________________
1382AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos& o)
1383{
1384 // assignment
1385
1386 if(this!=&o){
1387 TObject::operator=(o);
1388 fNBinsJetPt = o.fNBinsJetPt;
1389 fJetPtMin = o.fJetPtMin;
1390 fJetPtMax = o.fJetPtMax;
1391 fNBinsPt = o.fNBinsPt;
1392 fPtMin = o.fPtMin;
1393 fPtMax = o.fPtMax;
1394 fNBinsZ = o.fNBinsZ;
1395 fZMin = o.fZMin;
1396 fZMax = o.fZMax;
1397 fNBinsJt = o.fNBinsJt;
1398 fJtMin = o.fJtMin;
1399 fJtMax = o.fJtMax;
1400 fNBinsTheta = o.fNBinsTheta;
1401 fThetaMin = o.fThetaMin;
1402 fThetaMax = o.fThetaMax;
1403 fNBinsCosTheta = o.fNBinsCosTheta;
1404 fCosThetaMin = o.fCosThetaMin;
1405 fCosThetaMax = o.fCosThetaMax;
656dc810 1406 fh2CosTheta = o.fh2CosTheta;
67e37e80 1407 fh2PtZ = o.fh2PtZ;
1408 fh3ThetaZ = o.fh3ThetaZ;
1409 fh3JtTheta = o.fh3JtTheta;
1410 fh3JtZ = o.fh3JtZ;
fceb275f 1411 fNameIJ = o.fNameIJ;
656dc810 1412 }
1413
1414 return *this;
1415}
1416
1417//_________________________________________________________
1418AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::~AliFragFuncIntraJetHistos()
1419{
1420 // destructor
1421
1422
656dc810 1423 if(fh2CosTheta) delete fh2CosTheta;
67e37e80 1424 if(fh2PtZ) delete fh2PtZ;
1425 if(fh3ThetaZ) delete fh3ThetaZ;
1426 if(fh3JtTheta) delete fh3JtTheta;
1427 if(fh3JtZ) delete fh3JtZ;
656dc810 1428
1429}
1430
1431//_________________________________________________________________
1432void AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::DefineHistos()
1433{
1434 // book FF histos
1435
fceb275f 1436 fh2CosTheta = new TH2F(Form("fh2IJcosTheta%s",fNameIJ.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax,fNBinsCosTheta, fCosThetaMin, fCosThetaMax);
67e37e80 1437 fh2PtZ = new TH2F(Form("fh2IJPtZ%s",fNameIJ.Data()),"",fNBinsPt, fPtMin, fPtMax, fNBinsZ, fZMin, fZMax);
1438 fh3ThetaZ = new TH3F(Form("fh3IJThetaZ%s",fNameIJ.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsTheta, fThetaMin, fThetaMax, fNBinsZ, fZMin, fZMax);
1439 fh3JtTheta = new TH3F(Form("fh3IJJtTheta%s",fNameIJ.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsJt, fJtMin, fJtMax, fNBinsTheta, fThetaMin, fThetaMax);
1440 fh3JtZ = new TH3F(Form("fh3IJJtZ%s",fNameIJ.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsJt, fJtMin, fJtMax, fNBinsZ, fZMin, fZMax);
656dc810 1441
656dc810 1442 AliAnalysisTaskFragmentationFunction::SetProperties(fh2CosTheta,"jet p_{T} [GeV/c]","cos(#Theta)", "entries");
67e37e80 1443 AliAnalysisTaskFragmentationFunction::SetProperties(fh2PtZ,"had p_{T} [GeV/c]","z=p_{T}^{had}/p_{T}^{jet}","entries");
1444 AliAnalysisTaskFragmentationFunction::SetProperties(fh3ThetaZ,"jet p_{T} [GeV/c]","#Theta [rad]","z=p_{T}^{had}/p_{T}^{jet}");
1445 AliAnalysisTaskFragmentationFunction::SetProperties(fh3JtTheta,"jet p_{T} [GeV/c]","j_{T} [GeV/c]","#Theta [rad]");
1446 AliAnalysisTaskFragmentationFunction::SetProperties(fh3JtZ,"jet p_{T} [GeV/c]","j_{T} [GeV/c]","z=p_{T}^{had}/p_{T}^{jet}");
1447
656dc810 1448}
1449
1450//_______________________________________________________________________________________________________________
1da9498b 1451void AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::FillIntraJet(const TLorentzVector* trackV, const TLorentzVector* jetV, Float_t norm)
656dc810 1452{
1453 // fill IntraJet histos
1454
1455 Float_t cosTheta = 0.; Float_t theta = 0.;
1456 Float_t jt = 0.; Float_t z = 0.;
1457 // For Theta distribution
1458 Float_t pxT = trackV->Px();
1459 Float_t pyT = trackV->Py();
1460 Float_t pzT = trackV->Pz();
1461 Float_t ptT = trackV->Pt();
1462 Float_t pT = trackV->P();
1463 Float_t etaT = trackV->Eta();
1464 Float_t phiT = trackV->Phi(); // Check the value returned
1465 Float_t pxJ = jetV->Px();
1466 Float_t pyJ = jetV->Py();
1467 Float_t pzJ = jetV->Pz();
1468 Float_t ptJ = jetV->Pt();
1469 Float_t pJ = jetV->P();
1470
1471 // Compute z
1da9498b 1472 if(ptJ>0) z = (Float_t)(ptT/ptJ);
656dc810 1473
1474 // Compute theta
1475 cosTheta = (pxT*pxJ+pyT*pyJ+pzT*pzJ)/(pT*pJ);
1476 theta = TMath::ACos(cosTheta);
1477
1478 // Compute jt
1479 TVector3 trackP; TVector3 jetP;
1480 jetP[0] = pxJ;
1481 jetP[1] = pyJ;
1482 jetP[2] = pzJ;
1483 trackP.SetPtEtaPhi(ptT,etaT,phiT);
1484 jt = TMath::Sin(trackP.Angle(jetP))*trackP.Mag();
1485
67e37e80 1486 // Fill histos
1da9498b 1487 if(norm){
1488 fh2CosTheta->Fill(ptJ,cosTheta,1/norm);
67e37e80 1489 fh2PtZ->Fill(ptT,z,1/norm);
1490 fh3ThetaZ->Fill(ptJ,theta,z,1/norm);
1491 fh3JtTheta->Fill(ptJ,jt,theta,1/norm);
1492 fh3JtZ->Fill(ptJ,jt,z,1/norm);
1da9498b 1493 }
1494 else {
1495 fh2CosTheta->Fill(ptJ,cosTheta);
67e37e80 1496 fh2PtZ->Fill(ptT,z);
1497 fh3ThetaZ->Fill(ptJ,theta,z);
1498 fh3JtTheta->Fill(ptJ,jt,theta);
1499 fh3JtZ->Fill(ptJ,jt,z);
1da9498b 1500 }
656dc810 1501
656dc810 1502}
1503
1504//______________________________________________________________________________________________________
1505AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::AliFragFuncDiJetHistos(const char* name, Int_t kindSlices,
1506 Int_t nJetInvMass, Float_t jetInvMassMin, Float_t jetInvMassMax,
1507 Int_t nJetPt, Float_t jetPtMin, Float_t jetPtMax,
1508 Int_t nPt, Float_t ptMin, Float_t ptMax,
1509 Int_t nXi, Float_t xiMin, Float_t xiMax,
1510 Int_t nZ , Float_t zMin , Float_t zMax)
1511 : TObject()
1512 ,fKindSlices(kindSlices)
1513 ,fNBinsJetInvMass(nJetInvMass)
1514 ,fJetInvMassMin(jetInvMassMin)
1515 ,fJetInvMassMax(jetInvMassMax)
1516 ,fNBinsJetPt(nJetPt)
1517 ,fJetPtMin(jetPtMin)
1518 ,fJetPtMax(jetPtMax)
1519 ,fNBinsPt(nPt)
1520 ,fPtMin(ptMin)
1521 ,fPtMax(ptMax)
1522 ,fNBinsXi(nXi)
1523 ,fXiMin(xiMin)
1524 ,fXiMax(xiMax)
1525 ,fNBinsZ(nZ)
1526 ,fZMin(zMin)
1527 ,fZMax(zMax)
1528 ,fh2TrackPtJet1(0)
1529 ,fh2TrackPtJet2(0)
1530 ,fh2TrackPtJet(0)
1531 ,fh1Jet1Pt(0)
1532 ,fh1Jet2Pt(0)
1533 ,fh1JetPt(0)
1534 ,fh2Xi1(0)
1535 ,fh2Xi2(0)
1536 ,fh2Xi(0)
1537 ,fh2Z1(0)
1538 ,fh2Z2(0)
1539 ,fh2Z(0)
1540 ,fh2Pt1(0)
1541 ,fh2Pt2(0)
1542 ,fh2Pt(0)
fceb275f 1543 ,fNameDJ(name)
656dc810 1544{
1545 // default constructor
1546
1547}
1548
1549//______________________________________________________________________________________________________
1550AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::AliFragFuncDiJetHistos(const AliFragFuncDiJetHistos& copy)
1551 : TObject()
1552 ,fKindSlices(copy.fKindSlices)
1553 ,fNBinsJetInvMass(copy.fNBinsJetInvMass)
1554 ,fJetInvMassMin(copy.fJetInvMassMin)
1555 ,fJetInvMassMax(copy.fJetInvMassMax)
1556 ,fNBinsJetPt(copy.fNBinsJetPt)
1557 ,fJetPtMin(copy.fJetPtMin)
1558 ,fJetPtMax(copy.fJetPtMax)
1559 ,fNBinsPt(copy.fNBinsPt)
1560 ,fPtMin(copy.fPtMin)
1561 ,fPtMax(copy.fPtMax)
1562 ,fNBinsXi(copy.fNBinsXi)
1563 ,fXiMin(copy.fXiMin)
1564 ,fXiMax(copy.fXiMax)
1565 ,fNBinsZ(copy.fNBinsZ)
1566 ,fZMin(copy.fZMin)
1567 ,fZMax(copy.fZMax)
1568 ,fh2TrackPtJet1(copy.fh2TrackPtJet1)
1569 ,fh2TrackPtJet2(copy.fh2TrackPtJet2)
1570 ,fh2TrackPtJet(copy.fh2TrackPtJet)
1571 ,fh1Jet1Pt(copy.fh1Jet1Pt)
1572 ,fh1Jet2Pt(copy.fh1Jet2Pt)
1573 ,fh1JetPt(copy.fh1JetPt)
1574 ,fh2Xi1(copy.fh2Xi1)
1575 ,fh2Xi2(copy.fh2Xi2)
1576 ,fh2Xi(copy.fh2Xi2)
1577 ,fh2Z1(copy.fh2Z1)
1578 ,fh2Z2(copy.fh2Z2)
1579 ,fh2Z(copy.fh2Z)
1580 ,fh2Pt1(copy.fh2Pt1)
1581 ,fh2Pt2(copy.fh2Pt2)
1582 ,fh2Pt(copy.fh2Pt)
fceb275f 1583 ,fNameDJ(copy.fNameDJ)
656dc810 1584{
1585 // default constructor
1586
1587}
1588
1589//_______________________________________________________________________________________________________________________________________________________________
1590AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos& o)
1591{
1592 // assignment
1593
1594 if(this!=&o){
1595 TObject::operator=(o);
1596 fKindSlices = o.fKindSlices;
1597 fNBinsJetInvMass = o.fNBinsJetInvMass;
1598 fJetInvMassMin = o.fJetInvMassMin;
1599 fJetInvMassMax = o.fJetInvMassMax;
1600 fNBinsJetPt = o.fNBinsJetPt;
1601 fJetPtMin = o.fJetPtMin;
1602 fJetPtMax = o.fJetPtMax;
1603 fNBinsPt = o.fNBinsPt;
1604 fPtMin = o.fPtMin;
1605 fPtMax = o.fPtMax;
1606 fNBinsXi = o.fNBinsXi;
1607 fXiMin = o.fXiMin;
1608 fXiMax = o.fXiMax;
1609 fNBinsZ = o.fNBinsZ;
1610 fZMin = o.fZMin;
1611 fZMax = o.fZMax;
1612 fh2TrackPtJet1 = o.fh2TrackPtJet1;
1613 fh2TrackPtJet2 = o.fh2TrackPtJet2;
1614 fh2TrackPtJet = o.fh2TrackPtJet;
1615 fh1Jet1Pt = o.fh1Jet1Pt;
1616 fh1Jet2Pt = o.fh1Jet2Pt;
1617 fh1JetPt = o.fh1JetPt;
1618 fh2Xi1 = o.fh2Xi1;
1619 fh2Xi2 = o.fh2Xi2;
1620 fh2Xi = o.fh2Xi;
1621 fh2Z1 = o.fh2Z1;
1622 fh2Z2 = o.fh2Z2;
1623 fh2Z = o.fh2Z;
1624 fh2Pt1 = o.fh2Pt1;
1625 fh2Pt2 = o.fh2Pt2;
1626 fh2Pt = o.fh2Pt;
fceb275f 1627 fNameDJ = o.fNameDJ;
656dc810 1628 }
1629
1630 return *this;
1631}
1632
1633//_________________________________________________________
1634AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::~AliFragFuncDiJetHistos()
1635{
1636 // destructor
1637
1638 if(fh2TrackPtJet1) delete fh2TrackPtJet1;
1639 if(fh2TrackPtJet2) delete fh2TrackPtJet2;
1640 if(fh2TrackPtJet ) delete fh2TrackPtJet;
1641 if(fh1Jet1Pt) delete fh1Jet1Pt;
1642 if(fh1Jet2Pt) delete fh1Jet2Pt;
1643 if(fh1JetPt) delete fh1JetPt;
1644 if(fh2Xi1) delete fh2Xi1;
1645 if(fh2Xi2) delete fh2Xi2;
1646 if(fh2Xi) delete fh2Xi;
1647 if(fh2Z1) delete fh2Z1;
1648 if(fh2Z2) delete fh2Z2;
1649 if(fh2Z) delete fh2Z;
1650 if(fh2Pt1) delete fh2Pt1;
1651 if(fh2Pt2) delete fh2Pt2;
1652 if(fh2Pt) delete fh2Pt;
1653}
1654
1655//________________________________________________________________________
1656void AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::DefineDiJetHistos()
1657{
fceb275f 1658 // book DiJet histos
1659
656dc810 1660 Int_t nBins = 0;
1661 Double_t min = 0.;
1662 Double_t max = 0.;
1663 const char *xaxis = "";
1664 if(fKindSlices == 1)
1665 {
1666 nBins = fNBinsJetInvMass;
1667 min = fJetInvMassMin;
1668 max = fJetInvMassMax;
1669 xaxis = "M_{JJ} [GeV]";
1670 }
1671 if(fKindSlices == 2 || fKindSlices == 3)
1672 {
1673 nBins = fNBinsJetPt;
1674 min = fJetPtMin;
1675 max = fJetPtMax;
1676 if(fKindSlices == 2) xaxis = "E_{Tmean} [GeV]";
1677 if(fKindSlices == 3) xaxis ="leading jet p_{T} [GeV/c]";
1678 }
1679
fceb275f 1680 fh1Jet1Pt = new TH1F(Form("fh1DJJet1Pt%s", fNameDJ.Data()), "", fNBinsJetPt, fJetPtMin, fJetPtMax);
1681 fh1Jet2Pt = new TH1F(Form("fh1DJJet2Pt%s", fNameDJ.Data()), "", fNBinsJetPt, fJetPtMin, fJetPtMax);
1682 fh1JetPt = new TH1F(Form("fh1DJJetPt%s", fNameDJ.Data()), "", fNBinsJetPt, fJetPtMin, fJetPtMax);
656dc810 1683
fceb275f 1684 fh2TrackPtJet1 = new TH2F(Form("fh2DJTrackPtJet1%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
1685 fh2TrackPtJet2 = new TH2F(Form("fh2DJTrackPtJet2%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
1686 fh2TrackPtJet = new TH2F(Form("fh2DJTrackPtJet%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
656dc810 1687
fceb275f 1688 fh2Xi1 = new TH2F(Form("fh2DJXi1%s", fNameDJ.Data()), "",nBins, min, max, fNBinsXi, fXiMin, fXiMax);
1689 fh2Xi2 = new TH2F(Form("fh2DJXi2%s", fNameDJ.Data()), "",nBins, min, max, fNBinsXi, fXiMin, fXiMax);
1690 fh2Xi = new TH2F(Form("fh2DJXi%s", fNameDJ.Data()), "",nBins, min, max, fNBinsXi, fXiMin, fXiMax);
656dc810 1691
fceb275f 1692 fh2Z1 = new TH2F(Form("fh2DJZ1%s", fNameDJ.Data()), "",nBins, min, max, fNBinsZ, fZMin, fZMax);
1693 fh2Z2 = new TH2F(Form("fh2DJZ2%s", fNameDJ.Data()), "",nBins, min, max, fNBinsZ, fZMin, fZMax);
1694 fh2Z = new TH2F(Form("fh2DJZ%s", fNameDJ.Data()), "",nBins, min, max, fNBinsZ, fZMin, fZMax);
656dc810 1695
fceb275f 1696 fh2Pt1 = new TH2F(Form("fh2DJPt1%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
1697 fh2Pt2 = new TH2F(Form("fh2DJPt2%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
1698 fh2Pt = new TH2F(Form("fh2DJPtZ%s", fNameDJ.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
656dc810 1699
1700 AliAnalysisTaskFragmentationFunction::SetProperties(fh1Jet1Pt, "p_{T} [GeV/c]", "entries");
1701 AliAnalysisTaskFragmentationFunction::SetProperties(fh1Jet2Pt, "p_{T} [GeV/c]", "entries");
1702 AliAnalysisTaskFragmentationFunction::SetProperties(fh1JetPt, "p_{T} [GeV/c]", "entries");
1703
1704 AliAnalysisTaskFragmentationFunction::SetProperties(fh2TrackPtJet1, xaxis, "p_{T} [GeV/c]", "Entries");
1705 AliAnalysisTaskFragmentationFunction::SetProperties(fh2TrackPtJet2, xaxis, "p_{T} [GeV/c]", "Entries");
1706 AliAnalysisTaskFragmentationFunction::SetProperties(fh2TrackPtJet, xaxis, "p_{T} [GeV/c]", "Entries");
1707 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Xi1, xaxis, "#xi", "Entries");
1708 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Xi2, xaxis, "#xi", "Entries");
1709 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Xi, xaxis, "#xi", "Entries");
1710 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Z1, xaxis, "z", "Entries");
1711 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Z2, xaxis, "z", "Entries");
1712 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Z, xaxis, "z", "Entries");
1713 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Pt1, xaxis, "p_{T} [GeV/c]", "Entries");
1714 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Pt2, xaxis, "p_{T} [GeV/c]", "Entries");
1715 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Pt, xaxis, "p_{T} [GeV/c]", "Entries");
656dc810 1716}
1717
1718//________________________________________________________________________
1719void AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::FillDiJetFF(Int_t jetType, Float_t trackPt, Float_t jetPt, Double_t jetBin, Bool_t incrementJetPt)
1720{
fceb275f 1721 // fill DiJet FF
1722
656dc810 1723 if(jetType == 0)
1724 {
1725 if(incrementJetPt) fh1JetPt->Fill(jetPt);
1726
1727 fh2TrackPtJet->Fill(jetBin, trackPt);
1728
1729 Double_t z = trackPt / jetPt;
1730 Double_t xi = 0;
1731 if(z!=0) xi = TMath::Log(1/z);
1732
1733 fh2Xi->Fill(jetBin, xi);
1734 fh2Z->Fill(jetBin, z);
1735 }
1736 if(jetType == 1)
1737 {
1738 if(incrementJetPt) fh1Jet1Pt->Fill(jetPt);
1739
1740 fh2TrackPtJet1->Fill(jetBin, trackPt);
1741
1742 Double_t z = trackPt / jetPt;
1743 Double_t xi = 0;
1744 if(z!=0) xi = TMath::Log(1/z);
1745
1746 fh2Xi1->Fill(jetBin, xi);
1747 fh2Z1->Fill(jetBin, z);
1748 }
1749 if(jetType == 2)
1750 {
1751 if(incrementJetPt) fh1Jet2Pt->Fill(jetPt);
1752
1753 fh2TrackPtJet2->Fill(jetBin, trackPt);
1754
1755 Double_t z = trackPt / jetPt;
1756 Double_t xi = 0;
1757 if(z!=0) xi = TMath::Log(1/z);
1758
1759 fh2Xi2->Fill(jetBin, xi);
1760 fh2Z2->Fill(jetBin, z);
1761 }
1762
1763
1764}
1765
1766//________________________________________________________________________
1767void AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::AddToOutput(TList* list)const
1768{
fceb275f 1769 // add histos to list
1770
656dc810 1771 list->Add(fh1Jet1Pt);
1772 list->Add(fh1Jet2Pt);
1773 list->Add(fh1JetPt);
1774 list->Add(fh2TrackPtJet1);
1775 list->Add(fh2TrackPtJet2);
1776 list->Add(fh2TrackPtJet);
1777 list->Add(fh2Xi1);
1778 list->Add(fh2Xi2);
1779 list->Add(fh2Xi);
1780 list->Add(fh2Z1);
1781 list->Add(fh2Z2);
1782 list->Add(fh2Z);
1783}
1784
1785//______________________________________________________________________________________________________
1786AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::AliFragFuncQADiJetHistos(const char* name, Int_t kindSlices,
1787 Int_t nInvMass, Float_t invMassMin, Float_t invMassMax,
1788 Int_t nJetPt, Float_t jetPtMin, Float_t jetPtMax,
1789 Int_t nDeltaPhi, Float_t deltaPhiMin, Float_t deltaPhiMax,
1790 Int_t nDeltaEta, Float_t deltaEtaMin, Float_t deltaEtaMax,
1791 Int_t nDeltaPt, Float_t deltaPtMin, Float_t deltaPtMax)
1792 : TObject()
1793 ,fKindSlices(kindSlices)
1794 ,fNBinsJetInvMass(nInvMass)
1795 ,fJetInvMassMin(invMassMin)
1796 ,fJetInvMassMax(invMassMax)
1797 ,fNBinsJetPt(nJetPt)
1798 ,fJetPtMin(jetPtMin)
1799 ,fJetPtMax(jetPtMax)
1800 ,fNBinsDeltaPhi(nDeltaPhi)
1801 ,fDeltaPhiMin(deltaPhiMin)
1802 ,fDeltaPhiMax(deltaPhiMax)
1803 ,fNBinsDeltaEta(nDeltaEta)
1804 ,fDeltaEtaMin(deltaEtaMin)
1805 ,fDeltaEtaMax(deltaEtaMax)
1806 ,fNBinsDeltaPt(nDeltaPt)
1807 ,fDeltaPtMin(deltaPtMin)
1808 ,fDeltaPtMax(deltaPtMax)
1809 ,fh2InvMass(0)
1810 ,fh2DeltaPhi(0)
1811 ,fh2DeltaEta(0)
1812 ,fh2DeltaPt(0)
fceb275f 1813 ,fNameQADJ(name)
656dc810 1814{
1815 // default constructor
1816
1817}
1818
1819//______________________________________________________________________________________________________
1820AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::AliFragFuncQADiJetHistos(const AliFragFuncQADiJetHistos& copy)
1821 : TObject()
1822 ,fKindSlices(copy.fKindSlices)
1823 ,fNBinsJetInvMass(copy.fNBinsJetInvMass)
1824 ,fJetInvMassMin(copy.fJetInvMassMin)
1825 ,fJetInvMassMax(copy.fJetInvMassMax)
1826 ,fNBinsJetPt(copy.fNBinsJetPt)
1827 ,fJetPtMin(copy.fJetPtMin)
1828 ,fJetPtMax(copy.fJetPtMax)
1829 ,fNBinsDeltaPhi(copy.fNBinsDeltaPhi)
1830 ,fDeltaPhiMin(copy.fDeltaPhiMin)
1831 ,fDeltaPhiMax(copy.fDeltaPhiMax)
1832 ,fNBinsDeltaEta(copy.fNBinsDeltaEta)
1833 ,fDeltaEtaMin(copy.fDeltaEtaMin)
1834 ,fDeltaEtaMax(copy.fDeltaEtaMax)
1835 ,fNBinsDeltaPt(copy.fNBinsDeltaPt)
1836 ,fDeltaPtMin(copy.fDeltaPtMin)
1837 ,fDeltaPtMax(copy.fDeltaPtMax)
1838 ,fh2InvMass(copy.fh2InvMass)
1839 ,fh2DeltaPhi(copy.fh2DeltaPhi)
1840 ,fh2DeltaEta(copy.fh2DeltaEta)
1841 ,fh2DeltaPt(copy.fh2DeltaPt)
fceb275f 1842 ,fNameQADJ(copy.fNameQADJ)
656dc810 1843{
1844 // default constructor
1845
1846}
1847
1848//_______________________________________________________________________________________________________________________________________________________________
1849AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos& o)
1850{
1851 // assignment
1852
1853 if(this!=&o){
1854 TObject::operator=(o);
1855 fKindSlices = o.fKindSlices;
1856 fNBinsJetInvMass = o.fNBinsJetInvMass;
1857 fJetInvMassMin = o.fJetInvMassMin;
1858 fJetInvMassMax = o.fJetInvMassMax;
1859 fNBinsJetPt = o.fNBinsJetPt;
1860 fJetPtMin = o.fJetPtMin;
1861 fJetPtMax = o.fJetPtMax;
1862 fNBinsDeltaPhi = o.fNBinsDeltaPhi;
1863 fDeltaPhiMin = o.fDeltaPhiMin;
1864 fDeltaPhiMax = o.fDeltaPhiMax;
1865 fNBinsDeltaEta = o.fNBinsDeltaEta;
1866 fDeltaEtaMin = o.fDeltaEtaMin;
1867 fDeltaEtaMax = o.fDeltaEtaMax;
1868 fNBinsDeltaPt = o.fNBinsDeltaPt;
1869 fDeltaPtMin = o.fDeltaPtMin;
1870 fDeltaPtMax = o.fDeltaPtMax;
1871 fh2InvMass = o.fh2InvMass;
1872 fh2DeltaPhi = o.fh2DeltaPhi;
1873 fh2DeltaEta = o.fh2DeltaEta;
1874 fh2DeltaPt = o.fh2DeltaPt;
fceb275f 1875 fNameQADJ = o.fNameQADJ;
656dc810 1876 }
1877
1878 return *this;
1879}
1880
1881//_________________________________________________________
1882AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::~AliFragFuncQADiJetHistos()
1883{
1884 // destructor
1885
1886 if(fh2InvMass) delete fh2InvMass;
1887 if(fh2DeltaPhi) delete fh2DeltaPhi;
1888 if(fh2DeltaEta) delete fh2DeltaEta;
1889 if(fh2DeltaPt) delete fh2DeltaPt;
1890}
1891
1892//________________________________________________________________________
1893void AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::DefineQADiJetHistos()
1894{
fceb275f 1895 // define histos
1896
656dc810 1897 Int_t nBins = 0;
1898 Double_t min = 0.;
1899 Double_t max = 0.;
1900 const char *xaxis = "";
1901 if(fKindSlices == 1)
1902 {
1903 nBins = fNBinsJetInvMass;
1904 min = fJetInvMassMin;
1905 max = fJetInvMassMax;
1906 xaxis = "M_{JJ} [GeV]";
1907 }
1908 if(fKindSlices == 2 || fKindSlices == 3)
1909 {
1910 nBins = fNBinsJetPt;
1911 min = fJetPtMin;
1912 max = fJetPtMax;
1913 if(fKindSlices == 2) xaxis = "E_{Tmean} [GeV]";
1914 if(fKindSlices == 3) xaxis ="leading jet p_{T} [GeV/c]";
1915 }
1916
1917
fceb275f 1918 fh2InvMass = new TH2F(Form("fh2DJInvMassPositionCut%s", fNameQADJ.Data()), "",nBins, min, max, fNBinsJetInvMass, fJetInvMassMin, fJetInvMassMax);
1919 fh2DeltaPhi = new TH2F(Form("fh2DJDeltaPhiPositionCut%s", fNameQADJ.Data()), "",nBins, min, max, fNBinsDeltaPhi, fDeltaPhiMin, fDeltaPhiMax);
1920 fh2DeltaEta = new TH2F(Form("fh2DJDeltaEtaPositionCut%s", fNameQADJ.Data()), "",nBins, min, max, fNBinsDeltaEta, fDeltaEtaMin, fDeltaEtaMax);
1921 fh2DeltaPt = new TH2F(Form("fh2DJDeltaPtPositionCut%s", fNameQADJ.Data()), "",nBins, min, max, fNBinsDeltaPt, fDeltaPtMin, fDeltaPtMax);
656dc810 1922
1923 AliAnalysisTaskFragmentationFunction::SetProperties(fh2InvMass, xaxis, "Invariant Mass", "Entries");
1924 AliAnalysisTaskFragmentationFunction::SetProperties(fh2DeltaPhi, xaxis, "#Delta #phi", "Entries");
1925 AliAnalysisTaskFragmentationFunction::SetProperties(fh2DeltaEta, xaxis, "#Delta #eta", "Entries");
1926 AliAnalysisTaskFragmentationFunction::SetProperties(fh2DeltaPt, xaxis, "#Delta p_{T}", "Entries");
1927
1928}
1929
1930//________________________________________________________________________
1931void AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::FillDiJetQA(Double_t invMass, Double_t deltaPhi, Double_t deltaEta,Double_t deltaPt, Double_t jetBin)
1932{
fceb275f 1933 // fill dijet QA
1934
656dc810 1935 fh2InvMass->Fill(jetBin, invMass);
1936 fh2DeltaPhi->Fill(jetBin, deltaPhi);
1937 fh2DeltaEta->Fill(jetBin, deltaEta);
1938 fh2DeltaPt->Fill(jetBin, deltaPt);
1939}
1940
1941//________________________________________________________________________
1942void AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::AddToOutput(TList* list)const
1943{
fceb275f 1944 // add histos to list
1945
656dc810 1946 list->Add(fh2InvMass);
1947 list->Add(fh2DeltaPhi);
1948 list->Add(fh2DeltaEta);
1949 list->Add(fh2DeltaPt);
1950}
1951
1952//_________________________________________________________________________________
1953void AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::AddToOutput(TList* list) const
1954{
1955 // add histos to list
1956
1957 list->Add(fh2CosTheta);
67e37e80 1958 list->Add(fh2PtZ);
1959 list->Add(fh3ThetaZ);
1960 list->Add(fh3JtTheta);
1961 list->Add(fh3JtZ);
656dc810 1962
1963}
1964
1da9498b 1965//_________________________________________________________________________________
ac017ff3 1966Bool_t AliAnalysisTaskFragmentationFunction::Notify()
1967{
1968 //
1969 // Implemented Notify() to read the cross sections
1970 // and number of trials from pyxsec.root
c2658535 1971 // (taken from AliAnalysisTaskJetSpectrum2)
ac017ff3 1972 //
1973 TTree *tree = AliAnalysisManager::GetAnalysisManager()->GetTree();
c2658535 1974 Float_t xsection = 0;
1975 Float_t ftrials = 1;
1976
1977 fAvgTrials = 1;
ac017ff3 1978 if(tree){
1979 TFile *curfile = tree->GetCurrentFile();
1980 if (!curfile) {
1981 Error("Notify","No current file");
1982 return kFALSE;
1983 }
1984 if(!fh1Xsec||!fh1Trials){
1985 Printf("%s%d No Histogram fh1Xsec",(char*)__FILE__,__LINE__);
1986 return kFALSE;
1987 }
c2658535 1988 AliAnalysisHelperJetTasks::PythiaInfoFromFile(curfile->GetName(),xsection,ftrials);
ac017ff3 1989 fh1Xsec->Fill("<#sigma>",xsection);
c2658535 1990 // construct a poor man average trials
1991 Float_t nEntries = (Float_t)tree->GetTree()->GetEntries();
1992 if(ftrials>=nEntries && nEntries>0.)fAvgTrials = ftrials/nEntries;
ac017ff3 1993 }
67e37e80 1994
1995 // Set seed for backg study
1996 fRandom = new TRandom3();
1997 fRandom->SetSeed(0);
1998
ac017ff3 1999 return kTRUE;
2000}
2001
2002
2003
656dc810 2004//__________________________________________________________________
2005void AliAnalysisTaskFragmentationFunction::UserCreateOutputObjects()
2006{
2007 // create output objects
2008
2009 if(fDebug > 1) Printf("AliAnalysisTaskFragmentationFunction::UserCreateOutputObjects()");
2010
2011 // create list of tracks and jets
2012
2013 fTracksRec = new TList();
2014 fTracksRec->SetOwner(kFALSE);
2015
2016 fTracksRecCuts = new TList();
2017 fTracksRecCuts->SetOwner(kFALSE);
2018
2019 fTracksGen = new TList();
2020 fTracksGen->SetOwner(kFALSE);
2021
fe343c6b 2022 fTracksAODMCCharged = new TList();
2023 fTracksAODMCCharged->SetOwner(kFALSE);
2024
2025 fTracksRecQualityCuts = new TList();
2026 fTracksRecQualityCuts->SetOwner(kFALSE);
2027
656dc810 2028 fJetsRec = new TList();
2029 fJetsRec->SetOwner(kFALSE);
2030
2031 fJetsRecCuts = new TList();
2032 fJetsRecCuts->SetOwner(kFALSE);
2033
2034 fJetsGen = new TList();
2035 fJetsGen->SetOwner(kFALSE);
2036
fe343c6b 2037 fJetsRecEff = new TList();
2038 fJetsRecEff->SetOwner(kFALSE);
2039
656dc810 2040 // fJetsKine = new TList();
2041 // fJetsKine->SetOwner(kTRUE); // delete AOD jets using mom from Kine Tree via TList::Clear()
2042
67e37e80 2043 if(fBckgMode && (fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters)){
2044 fBckgJetsRec = new TList();
2045 fBckgJetsRec->SetOwner(kFALSE);
2046
2047 fBckgJetsRecCuts = new TList();
2048 fBckgJetsRecCuts->SetOwner(kFALSE);
2049
2050 fBckgJetsGen = new TList();
2051 fBckgJetsGen->SetOwner(kFALSE);
2052 }
656dc810 2053
2054 //
2055 // Create histograms / output container
2056 //
2057
2058 OpenFile(1);
2059 fCommonHistList = new TList();
2060
2061 Bool_t oldStatus = TH1::AddDirectoryStatus();
2062 TH1::AddDirectory(kFALSE);
2063
2064
2065 // Histograms
2066 fh1EvtSelection = new TH1F("fh1EvtSelection", "Event Selection", 6, -0.5, 5.5);
2067 fh1VertexNContributors = new TH1F("fh1VertexNContributors", "Vertex N contributors", 11,-.5, 10.5);
2068 fh1VertexZ = new TH1F("fh1VertexZ", "Vertex z distribution", 30, -15., 15.);
ac017ff3 2069 fh1EvtMult = new TH1F("fh1EvtMult","Event multiplicity, track pT cut > 150 MeV/c, |#eta| < 0.9",120,0.,120.);
2070
2071 fh1Xsec = new TProfile("fh1Xsec","xsec from pyxsec.root",1,0,1);
2072 fh1Xsec->GetXaxis()->SetBinLabel(1,"<#sigma>");
2073 fh1Trials = new TH1F("fh1Trials","trials from pyxsec.root",1,0,1);
2074 fh1Trials->GetXaxis()->SetBinLabel(1,"#sum{ntrials}");
2075 fh1PtHard = new TH1F("fh1PtHard","PYTHIA Pt hard;p_{T,hard}",350,-.5,349.5);
2076 fh1PtHardTrials = new TH1F("fh1PtHardTrials","PYTHIA Pt hard weight with trials;p_{T,hard}",350,-.5,349.5);
2077
656dc810 2078 fh1nRecJetsCuts = new TH1F("fh1nRecJetsCuts","reconstructed jets per event",10,-0.5,9.5);
2079 fh1nGenJets = new TH1F("fh1nGenJets","generated jets per event",10,-0.5,9.5);
fe343c6b 2080 fh1nRecEffJets = new TH1F("fh1nRecEffJets","reconstruction effiency: jets per event",10,-0.5,9.5);
cb76764e 2081 fh2PtRecVsGenPrim = new TH2F("fh2PtRecVsGenPrim","rec vs gen pt",fQATrackNBinsPt,fQATrackPtMin,fQATrackPtMax,fQATrackNBinsPt,fQATrackPtMin,fQATrackPtMax);
fe343c6b 2082
67e37e80 2083 // Background
2084 if(fBckgMode) {
2085 if(fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters) {
2086 fh1nRecBckgJetsCuts = new TH1F("fh1nRecBckgJetsCuts","reconstructed background jets per event",10,-0.5,9.5);
2087 fh1nGenBckgJets = new TH1F("fh1nGenBckgJets","generated background jets per event",10,-0.5,9.5);
2088 }
2089 if(fBckgType[0]==kBckgPerp || fBckgType[1]==kBckgPerp || fBckgType[2]==kBckgPerp)
2090 fh1PerpMult = new TH1F("fh1PerpMult","Background multiplicity - Cone perpendicular to leading jet axis",120,0.,120.);
2091 if(fBckgType[0]==kBckgOutLJ || fBckgType[1]==kBckgOutLJ || fBckgType[2]==kBckgOutLJ)
2092 fh1OutLeadingMult = new TH1F("fh1OutLeadingMult","Background multiplicity - Cone outside leading jet",120,0,120.);
2093 if(fBckgType[0]==kBckgOut2J || fBckgType[1]==kBckgOut2J || fBckgType[2]==kBckgOut2J)
2094 fh1Out2JetsMult = new TH1F("fh1Out2JetsMult","Background multiplicity - Cone outside 2 jets",120,0.,120.);
2095 if(fBckgType[0]==kBckgOut3J || fBckgType[1]==kBckgOut3J || fBckgType[2]==kBckgOut3J)
2096 fh1Out3JetsMult = new TH1F("fh1Out3JetsMult","Background multiplicity - Cone outside 3 jets",120,0.,120.);
2097 }
1da9498b 2098
656dc810 2099
2100 fQATrackHistosRec = new AliFragFuncQATrackHistos("Rec", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2101 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2102 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2103 fQATrackHighPtThreshold);
2104 fQATrackHistosRecCuts = new AliFragFuncQATrackHistos("RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2105 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2106 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2107 fQATrackHighPtThreshold);
2108 fQATrackHistosGen = new AliFragFuncQATrackHistos("Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2109 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2110 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2111 fQATrackHighPtThreshold);
2112
2113
2114 fQAJetHistosRec = new AliFragFuncQAJetHistos("Rec", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
2115 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
2116 fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
2117 fQAJetHistosRecCuts = new AliFragFuncQAJetHistos("RecCuts", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
2118 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
2119 fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
2120 fQAJetHistosRecCutsLeading = new AliFragFuncQAJetHistos("RecCutsLeading", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
2121 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
2122 fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
2123 fQAJetHistosGen = new AliFragFuncQAJetHistos("Gen", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
2124 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
2125 fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
2126 fQAJetHistosGenLeading = new AliFragFuncQAJetHistos("GenLeading", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
2127 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
fe343c6b 2128 fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
2129 fQAJetHistosRecEffLeading = new AliFragFuncQAJetHistos("RecEffLeading", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
2130 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
2131
656dc810 2132
2133 fFFHistosRecCuts = new AliFragFuncHistos("RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2134 fFFNBinsPt, fFFPtMin, fFFPtMax,
2135 fFFNBinsXi, fFFXiMin, fFFXiMax,
2136 fFFNBinsZ , fFFZMin , fFFZMax);
2137 fFFHistosRecLeading = new AliFragFuncHistos("RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2138 fFFNBinsPt, fFFPtMin, fFFPtMax,
2139 fFFNBinsXi, fFFXiMin, fFFXiMax,
2140 fFFNBinsZ , fFFZMin , fFFZMax);
2141 fFFHistosRecLeadingTrack = new AliFragFuncHistos("RecLeadingTrack", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2142 fFFNBinsPt, fFFPtMin, fFFPtMax,
2143 fFFNBinsXi, fFFXiMin, fFFXiMax,
2144 fFFNBinsZ , fFFZMin , fFFZMax);
2145 fFFHistosGen = new AliFragFuncHistos("Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2146 fFFNBinsPt, fFFPtMin, fFFPtMax,
2147 fFFNBinsXi, fFFXiMin, fFFXiMax,
2148 fFFNBinsZ , fFFZMin , fFFZMax);
2149 fFFHistosGenLeading = new AliFragFuncHistos("GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2150 fFFNBinsPt, fFFPtMin, fFFPtMax,
2151 fFFNBinsXi, fFFXiMin, fFFXiMax,
2152 fFFNBinsZ , fFFZMin , fFFZMax);
2153 fFFHistosGenLeadingTrack = new AliFragFuncHistos("GenLeadingTrack", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2154 fFFNBinsPt, fFFPtMin, fFFPtMax,
2155 fFFNBinsXi, fFFXiMin, fFFXiMax,
2156 fFFNBinsZ , fFFZMin , fFFZMax);
2157
67e37e80 2158 if(fIJMode)
2159 {
2160 fIJHistosRecCuts = new AliFragFuncIntraJetHistos("RecCuts", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2161 fIJNBinsPt, fIJPtMin, fIJPtMax,
2162 fIJNBinsZ, fIJZMin, fIJZMax,
2163 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2164 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2165 fIJNBinsJt , fIJJtMin , fIJJtMax);
2166 fIJHistosRecLeading = new AliFragFuncIntraJetHistos("RecLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2167 fIJNBinsPt, fIJPtMin, fIJPtMax,
2168 fIJNBinsZ, fIJZMin, fIJZMax,
2169 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2170 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2171 fIJNBinsJt , fIJJtMin , fIJJtMax);
2172 fIJHistosRecLeadingTrack = new AliFragFuncIntraJetHistos("RecLeadingTrack", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2173 fIJNBinsPt, fIJPtMin, fIJPtMax,
2174 fIJNBinsZ, fIJZMin, fIJZMax,
2175 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2176 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2177 fIJNBinsJt , fIJJtMin , fIJJtMax);
2178 fIJHistosGen = new AliFragFuncIntraJetHistos("Gen", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
656dc810 2179 fIJNBinsPt, fIJPtMin, fIJPtMax,
2180 fIJNBinsZ, fIJZMin, fIJZMax,
2181 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2182 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2183 fIJNBinsJt , fIJJtMin , fIJJtMax);
67e37e80 2184 fIJHistosGenLeading = new AliFragFuncIntraJetHistos("GenLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2185 fIJNBinsPt, fIJPtMin, fIJPtMax,
2186 fIJNBinsZ, fIJZMin, fIJZMax,
2187 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2188 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2189 fIJNBinsJt , fIJJtMin , fIJJtMax);
2190 fIJHistosGenLeadingTrack = new AliFragFuncIntraJetHistos("GenLeadingTrack", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2191 fIJNBinsPt, fIJPtMin, fIJPtMax,
2192 fIJNBinsZ, fIJZMin, fIJZMax,
2193 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2194 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2195 fIJNBinsJt , fIJJtMin , fIJJtMax);
2196 }
2197
656dc810 2198 fFFDiJetHistosRecCuts = new AliFragFuncDiJetHistos("RecCuts", fDiJetKindBins,
2199 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2200 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2201 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2202 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2203 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2204 fFFDiJetHistosRecLeading = new AliFragFuncDiJetHistos("RecLeading", fDiJetKindBins,
2205 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2206 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2207 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2208 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2209 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2210 fFFDiJetHistosRecLeadingTrack = new AliFragFuncDiJetHistos("RecLeadingTrack", fDiJetKindBins,
2211 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2212 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2213 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2214 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2215 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2216
2217 fFFDiJetHistosGen = new AliFragFuncDiJetHistos("Gen", fDiJetKindBins,
2218 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2219 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2220 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2221 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2222 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2223 fFFDiJetHistosGenLeading = new AliFragFuncDiJetHistos("GenLeading", fDiJetKindBins,
2224 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2225 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2226 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2227 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2228 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2229 fFFDiJetHistosGenLeadingTrack = new AliFragFuncDiJetHistos("GenLeadingTrack", fDiJetKindBins,
2230 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2231 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2232 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2233 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2234 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2235
2236 fQADiJetHistosRecCuts = new AliFragFuncQADiJetHistos("RecCuts", fDiJetKindBins,
2237 fQADiJetNBinsInvMass, fQADiJetInvMassMin, fQADiJetInvMassMax,
2238 fQADiJetNBinsJetPt, fQADiJetJetPtMin, fQADiJetJetPtMax,
2239 fQADiJetNBinsDeltaPhi, fQADiJetDeltaPhiMin, fQADiJetDeltaPhiMax ,
2240 fQADiJetNBinsDeltaEta, fQADiJetDeltaEtaMin, fQADiJetDeltaEtaMax ,
2241 fQADiJetNBinsDeltaPt, fQADiJetDeltaPtMin, fQADiJetDeltaPtMax);
2242 fQADiJetHistosGen = new AliFragFuncQADiJetHistos("Gen", fDiJetKindBins,
2243 fQADiJetNBinsInvMass, fQADiJetInvMassMin, fQADiJetInvMassMax,
2244 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2245 fQADiJetNBinsDeltaPhi, fQADiJetDeltaPhiMin, fQADiJetDeltaPhiMax,
2246 fQADiJetNBinsDeltaEta, fQADiJetDeltaEtaMin, fQADiJetDeltaEtaMax,
2247 fQADiJetNBinsDeltaPt, fQADiJetDeltaPtMin, fQADiJetDeltaPtMax);
2248
cb76764e 2249 // efficiency
2250
2251 fQATrackHistosRecEffGen = new AliFragFuncQATrackHistos("RecEffGen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2252 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2253 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2254 fQATrackHighPtThreshold);
2255
2256 fQATrackHistosRecEffRec = new AliFragFuncQATrackHistos("RecEffRec", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
2257 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2258 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2259 fQATrackHighPtThreshold);
2260
2261 fFFHistosRecEffGen = new AliFragFuncHistos("RecEffGen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2262 fFFNBinsPt, fFFPtMin, fFFPtMax,
2263 fFFNBinsXi, fFFXiMin, fFFXiMax,
2264 fFFNBinsZ , fFFZMin , fFFZMax);
2265
2266 fFFHistosRecEffRec = new AliFragFuncHistos("RecEffRec", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2267 fFFNBinsPt, fFFPtMin, fFFPtMax,
2268 fFFNBinsXi, fFFXiMin, fFFXiMax,
2269 fFFNBinsZ , fFFZMin , fFFZMax);
2270
67e37e80 2271
1da9498b 2272 // Background
2273 if(fBckgMode){
67e37e80 2274 // Track QA
2275 TString title[3];
2276 for(Int_t i=0; i<3; i++){
2277 if(fBckgType[i]==kBckgPerp) title[i]="Perp";
2278 else if(fBckgType[i]==kBckgOutLJ) title[i]="OutLeadingJet";
2279 else if(fBckgType[i]==kBckgOut2J) title[i]="Out2Jets";
2280 else if(fBckgType[i]==kBckgOut3J) title[i]="Out3Jets";
2281 else if(fBckgType[i]==kBckgOutAJ) title[i]="AllJets";
2282 else if(fBckgType[i]==kBckgOutLJStat) title[i]="OutLeadingJetStat";
2283 else if(fBckgType[i]==kBckgOut2JStat) title[i]="Out2JetsStat";
2284 else if(fBckgType[i]==kBckgOut3JStat) title[i]="Out3JetsStat";
2285 else if(fBckgType[i]==kBckgOutAJStat) title[i]="AllJetsStat";
2286 else if(fBckgType[i]==kBckgClusters) title[i]="OutClusters";
2287 else printf("Please chose background method number %d!",i);
2288 }
2289
2290
2291 fQABckgHisto0RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[0]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
1da9498b 2292 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2293 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2294 fQATrackHighPtThreshold);
67e37e80 2295 fQABckgHisto0Gen = new AliFragFuncQATrackHistos("Bckg"+title[0]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
1da9498b 2296 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2297 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2298 fQATrackHighPtThreshold);
67e37e80 2299 fQABckgHisto1RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[1]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
1da9498b 2300 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2301 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2302 fQATrackHighPtThreshold);
67e37e80 2303 fQABckgHisto1Gen = new AliFragFuncQATrackHistos("Bckg"+title[1]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
1da9498b 2304 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2305 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2306 fQATrackHighPtThreshold);
67e37e80 2307 fQABckgHisto2RecCuts = new AliFragFuncQATrackHistos("Bckg"+title[2]+"RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
1da9498b 2308 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2309 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2310 fQATrackHighPtThreshold);
67e37e80 2311 fQABckgHisto2Gen = new AliFragFuncQATrackHistos("Bckg"+title[2]+"Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
1da9498b 2312 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
2313 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
2314 fQATrackHighPtThreshold);
2315
1da9498b 2316
1da9498b 2317 // outside leading jet or 2 jets or more
67e37e80 2318 fFFBckgHisto0RecCuts = new AliFragFuncHistos("Bckg"+title[0]+"RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
1da9498b 2319 fFFNBinsPt, fFFPtMin, fFFPtMax,
2320 fFFNBinsXi, fFFXiMin, fFFXiMax,
2321 fFFNBinsZ , fFFZMin , fFFZMax);
67e37e80 2322 fFFBckgHisto0RecLeading = new AliFragFuncHistos("Bckg"+title[0]+"RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
1da9498b 2323 fFFNBinsPt, fFFPtMin, fFFPtMax,
2324 fFFNBinsXi, fFFXiMin, fFFXiMax,
2325 fFFNBinsZ , fFFZMin , fFFZMax);
67e37e80 2326 fFFBckgHisto0Gen = new AliFragFuncHistos("Bckg"+title[0]+"Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
1da9498b 2327 fFFNBinsPt, fFFPtMin, fFFPtMax,
2328 fFFNBinsXi, fFFXiMin, fFFXiMax,
2329 fFFNBinsZ , fFFZMin , fFFZMax);
67e37e80 2330 fFFBckgHisto0GenLeading = new AliFragFuncHistos("Bckg"+title[0]+"GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
1da9498b 2331 fFFNBinsPt, fFFPtMin, fFFPtMax,
2332 fFFNBinsXi, fFFXiMin, fFFXiMax,
2333 fFFNBinsZ , fFFZMin , fFFZMax);
67e37e80 2334
2335 fFFBckgHisto1RecCuts = new AliFragFuncHistos("Bckg"+title[1]+"RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2336 fFFNBinsPt, fFFPtMin, fFFPtMax,
2337 fFFNBinsXi, fFFXiMin, fFFXiMax,
2338 fFFNBinsZ , fFFZMin , fFFZMax);
2339 fFFBckgHisto1RecLeading = new AliFragFuncHistos("Bckg"+title[1]+"RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2340 fFFNBinsPt, fFFPtMin, fFFPtMax,
2341 fFFNBinsXi, fFFXiMin, fFFXiMax,
2342 fFFNBinsZ , fFFZMin , fFFZMax);
2343 fFFBckgHisto1Gen = new AliFragFuncHistos("Bckg"+title[1]+"Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2344 fFFNBinsPt, fFFPtMin, fFFPtMax,
2345 fFFNBinsXi, fFFXiMin, fFFXiMax,
2346 fFFNBinsZ , fFFZMin , fFFZMax);
2347 fFFBckgHisto1GenLeading = new AliFragFuncHistos("Bckg"+title[1]+"GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2348 fFFNBinsPt, fFFPtMin, fFFPtMax,
2349 fFFNBinsXi, fFFXiMin, fFFXiMax,
2350 fFFNBinsZ , fFFZMin , fFFZMax);
2351
2352 fFFBckgHisto2RecCuts = new AliFragFuncHistos("Bckg"+title[2]+"RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2353 fFFNBinsPt, fFFPtMin, fFFPtMax,
2354 fFFNBinsXi, fFFXiMin, fFFXiMax,
2355 fFFNBinsZ , fFFZMin , fFFZMax);
2356 fFFBckgHisto2RecLeading = new AliFragFuncHistos("Bckg"+title[2]+"RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2357 fFFNBinsPt, fFFPtMin, fFFPtMax,
2358 fFFNBinsXi, fFFXiMin, fFFXiMax,
2359 fFFNBinsZ , fFFZMin , fFFZMax);
2360 fFFBckgHisto2Gen = new AliFragFuncHistos("Bckg"+title[2]+"Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2361 fFFNBinsPt, fFFPtMin, fFFPtMax,
2362 fFFNBinsXi, fFFXiMin, fFFXiMax,
2363 fFFNBinsZ , fFFZMin , fFFZMax);
2364 fFFBckgHisto2GenLeading = new AliFragFuncHistos("Bckg"+title[2]+"GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
2365 fFFNBinsPt, fFFPtMin, fFFPtMax,
2366 fFFNBinsXi, fFFXiMin, fFFXiMax,
2367 fFFNBinsZ , fFFZMin , fFFZMax);
2368
2369
2370 if(fIJMode){
2371 fIJBckgHisto0RecCuts = new AliFragFuncIntraJetHistos("Bckg"+title[0]+"RecCuts", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
1da9498b 2372 fIJNBinsPt, fIJPtMin, fIJPtMax,
2373 fIJNBinsZ, fIJZMin, fIJZMax,
2374 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2375 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2376 fIJNBinsJt , fIJJtMin , fIJJtMax);
67e37e80 2377 fIJBckgHisto0RecLeading = new AliFragFuncIntraJetHistos("Bckg"+title[0]+"RecLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
1da9498b 2378 fIJNBinsPt, fIJPtMin, fIJPtMax,
2379 fIJNBinsZ, fIJZMin, fIJZMax,
2380 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2381 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2382 fIJNBinsJt , fIJJtMin , fIJJtMax);
67e37e80 2383 fIJBckgHisto0Gen = new AliFragFuncIntraJetHistos("Bckg"+title[0]+"Gen", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
1da9498b 2384 fIJNBinsPt, fIJPtMin, fIJPtMax,
2385 fIJNBinsZ, fIJZMin, fIJZMax,
2386 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2387 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2388 fIJNBinsJt , fIJJtMin , fIJJtMax);
67e37e80 2389 fIJBckgHisto0GenLeading = new AliFragFuncIntraJetHistos("Bckg"+title[0]+"GenLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2390 fIJNBinsPt, fIJPtMin, fIJPtMax,
1da9498b 2391 fIJNBinsZ, fIJZMin, fIJZMax,
2392 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2393 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2394 fIJNBinsJt , fIJJtMin , fIJJtMax);
67e37e80 2395
2396
2397 fIJBckgHisto1RecCuts = new AliFragFuncIntraJetHistos("Bckg"+title[1]+"RecCuts", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
1da9498b 2398 fIJNBinsPt, fIJPtMin, fIJPtMax,
2399 fIJNBinsZ, fIJZMin, fIJZMax,
2400 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2401 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2402 fIJNBinsJt , fIJJtMin , fIJJtMax);
67e37e80 2403 fIJBckgHisto1RecLeading = new AliFragFuncIntraJetHistos("Bckg"+title[1]+"RecLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
1da9498b 2404 fIJNBinsPt, fIJPtMin, fIJPtMax,
67e37e80 2405 fIJNBinsZ, fIJZMin, fIJZMax,
2406 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2407 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2408 fIJNBinsJt , fIJJtMin , fIJJtMax);
2409 fIJBckgHisto1Gen = new AliFragFuncIntraJetHistos("Bckg"+title[1]+"Gen", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
1da9498b 2410 fIJNBinsPt, fIJPtMin, fIJPtMax,
2411 fIJNBinsZ, fIJZMin, fIJZMax,
2412 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2413 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2414 fIJNBinsJt , fIJJtMin , fIJJtMax);
67e37e80 2415 fIJBckgHisto1GenLeading = new AliFragFuncIntraJetHistos("Bckg"+title[1]+"GenLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2416 fIJNBinsPt, fIJPtMin, fIJPtMax,
2417 fIJNBinsZ, fIJZMin, fIJZMax,
2418 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2419 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2420 fIJNBinsJt , fIJJtMin , fIJJtMax);
2421
2422 fIJBckgHisto2RecCuts = new AliFragFuncIntraJetHistos("Bckg"+title[2]+"RecCuts", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
1da9498b 2423 fIJNBinsPt, fIJPtMin, fIJPtMax,
2424 fIJNBinsZ, fIJZMin, fIJZMax,
2425 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2426 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2427 fIJNBinsJt , fIJJtMin , fIJJtMax);
67e37e80 2428 fIJBckgHisto2RecLeading = new AliFragFuncIntraJetHistos("Bckg"+title[2]+"RecLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
1da9498b 2429 fIJNBinsPt, fIJPtMin, fIJPtMax,
2430 fIJNBinsZ, fIJZMin, fIJZMax,
2431 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2432 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2433 fIJNBinsJt , fIJJtMin , fIJJtMax);
67e37e80 2434 fIJBckgHisto2Gen = new AliFragFuncIntraJetHistos("Bckg"+title[2]+"Gen", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2435 fIJNBinsPt, fIJPtMin, fIJPtMax,
2436 fIJNBinsZ, fIJZMin, fIJZMax,
2437 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2438 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2439 fIJNBinsJt , fIJJtMin , fIJJtMax);
2440 fIJBckgHisto2GenLeading = new AliFragFuncIntraJetHistos("Bckg"+title[2]+"GenLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2441 fIJNBinsPt, fIJPtMin, fIJPtMax,
2442 fIJNBinsZ, fIJZMin, fIJZMax,
2443 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2444 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2445 fIJNBinsJt , fIJJtMin , fIJJtMax);
2446 }
1da9498b 2447 }
656dc810 2448
2449 fQATrackHistosRec->DefineHistos();
2450 fQATrackHistosRecCuts->DefineHistos();
2451 fQATrackHistosGen->DefineHistos();
2452
2453 fQAJetHistosRec->DefineHistos();
2454 fQAJetHistosRecCuts->DefineHistos();
2455 fQAJetHistosRecCutsLeading->DefineHistos();
2456 fQAJetHistosGen->DefineHistos();
2457 fQAJetHistosGenLeading->DefineHistos();
fe343c6b 2458 fQAJetHistosRecEffLeading->DefineHistos();
656dc810 2459
2460 fFFHistosRecCuts->DefineHistos();
2461 fFFHistosRecLeading->DefineHistos();
2462 fFFHistosRecLeadingTrack->DefineHistos();
2463 fFFHistosGen->DefineHistos();
2464 fFFHistosGenLeading->DefineHistos();
2465 fFFHistosGenLeadingTrack->DefineHistos();
2466
67e37e80 2467 if(fIJMode){
2468 fIJHistosRecCuts->DefineHistos();
2469 fIJHistosRecLeading->DefineHistos();
2470 fIJHistosRecLeadingTrack->DefineHistos();
2471 fIJHistosGen->DefineHistos();
2472 fIJHistosGenLeading->DefineHistos();
2473 fIJHistosGenLeadingTrack->DefineHistos();
2474 }
2475
656dc810 2476 fFFDiJetHistosRecCuts->DefineDiJetHistos();
2477 fFFDiJetHistosRecLeading->DefineDiJetHistos();
2478 fFFDiJetHistosRecLeadingTrack->DefineDiJetHistos();
2479 fFFDiJetHistosGen->DefineDiJetHistos();
2480 fFFDiJetHistosGenLeading->DefineDiJetHistos();
2481 fFFDiJetHistosGenLeadingTrack->DefineDiJetHistos();
2482 fQADiJetHistosRecCuts->DefineQADiJetHistos();
2483 fQADiJetHistosGen->DefineQADiJetHistos();
2484
cb76764e 2485 fQATrackHistosRecEffGen->DefineHistos();
2486 fQATrackHistosRecEffRec->DefineHistos();
2487 fFFHistosRecEffGen->DefineHistos();
2488 fFFHistosRecEffRec->DefineHistos();
2489
1da9498b 2490 // Background
2491 if(fBckgMode){
67e37e80 2492 fFFBckgHisto0RecCuts->DefineHistos();
2493 fFFBckgHisto0RecLeading->DefineHistos();
2494 fFFBckgHisto0Gen->DefineHistos();
2495 fFFBckgHisto0GenLeading->DefineHistos();
2496 fFFBckgHisto1RecCuts->DefineHistos();
2497 fFFBckgHisto1RecLeading->DefineHistos();
2498 fFFBckgHisto1Gen->DefineHistos();
2499 fFFBckgHisto1GenLeading->DefineHistos();
2500 fFFBckgHisto2RecCuts->DefineHistos();
2501 fFFBckgHisto2RecLeading->DefineHistos();
2502 fFFBckgHisto2Gen->DefineHistos();
2503 fFFBckgHisto2GenLeading->DefineHistos();
1da9498b 2504
67e37e80 2505 if(fIJMode){
2506 fIJBckgHisto0RecCuts->DefineHistos();
2507 fIJBckgHisto0RecLeading->DefineHistos();
2508 fIJBckgHisto0Gen->DefineHistos();
2509 fIJBckgHisto0GenLeading->DefineHistos();
2510 fIJBckgHisto1RecCuts->DefineHistos();
2511 fIJBckgHisto1RecLeading->DefineHistos();
2512 fIJBckgHisto1Gen->DefineHistos();
2513 fIJBckgHisto1GenLeading->DefineHistos();
2514 fIJBckgHisto2RecCuts->DefineHistos();
2515 fIJBckgHisto2RecLeading->DefineHistos();
2516 fIJBckgHisto2Gen->DefineHistos();
2517 fIJBckgHisto2GenLeading->DefineHistos();
2518 }
2519
2520 fQABckgHisto0RecCuts->DefineHistos();
2521 fQABckgHisto0Gen->DefineHistos();
2522 fQABckgHisto1RecCuts->DefineHistos();
2523 fQABckgHisto1Gen->DefineHistos();
2524 fQABckgHisto2RecCuts->DefineHistos();
2525 fQABckgHisto2Gen->DefineHistos();
1da9498b 2526 }
2527
fb03edbe 2528 Bool_t genJets = (fJetTypeGen != kJetsUndef) ? kTRUE : kFALSE;
2529 Bool_t genTracks = (fTrackTypeGen != kTrackUndef) ? kTRUE : kFALSE;
2530 Bool_t recJetsEff = (fJetTypeRecEff != kJetsUndef) ? kTRUE : kFALSE;
2531
2532
656dc810 2533 const Int_t saveLevel = 5;
2534 if(saveLevel>0){
2535 fCommonHistList->Add(fh1EvtSelection);
2536 fFFHistosRecCuts->AddToOutput(fCommonHistList);
2537 fFFHistosRecLeading->AddToOutput(fCommonHistList);
2538 fFFHistosRecLeadingTrack->AddToOutput(fCommonHistList);
fb03edbe 2539
1da9498b 2540 // Background
2541 if(fBckgMode){
67e37e80 2542 fFFBckgHisto0RecCuts->AddToOutput(fCommonHistList);
2543 fFFBckgHisto0RecLeading->AddToOutput(fCommonHistList);
2544 fFFBckgHisto1RecCuts->AddToOutput(fCommonHistList);
2545 fFFBckgHisto1RecLeading->AddToOutput(fCommonHistList);
2546 fFFBckgHisto2RecCuts->AddToOutput(fCommonHistList);
2547 fFFBckgHisto2RecLeading->AddToOutput(fCommonHistList);
1da9498b 2548
67e37e80 2549 fQABckgHisto0RecCuts->AddToOutput(fCommonHistList);
2550 fQABckgHisto1RecCuts->AddToOutput(fCommonHistList);
2551 fQABckgHisto2RecCuts->AddToOutput(fCommonHistList);
2552
2553 if(fBckgType[0]==kBckgOutLJ || fBckgType[1]==kBckgOutLJ || fBckgType[2]==kBckgOutLJ)
2554 fCommonHistList->Add(fh1OutLeadingMult);
2555 if(fBckgType[0]==kBckgPerp || fBckgType[1]==kBckgPerp || fBckgType[2]==kBckgPerp)
2556 fCommonHistList->Add(fh1PerpMult);
2557 if(fBckgType[0]==kBckgOut2J || fBckgType[1]==kBckgOut2J || fBckgType[2]==kBckgOut2J)
2558 fCommonHistList->Add(fh1Out2JetsMult);
2559 if(fBckgType[0]==kBckgOut3J || fBckgType[1]==kBckgOut3J || fBckgType[2]==kBckgOut3J)
2560 fCommonHistList->Add(fh1Out3JetsMult);
1da9498b 2561 }
2562
fb03edbe 2563 if(genJets && genTracks){
2564 fFFHistosGen->AddToOutput(fCommonHistList);
2565 fFFHistosGenLeading->AddToOutput(fCommonHistList);
2566 fFFHistosGenLeadingTrack->AddToOutput(fCommonHistList);
ac017ff3 2567
2568 fCommonHistList->Add(fh1Xsec);
2569 fCommonHistList->Add(fh1Trials);
2570 fCommonHistList->Add(fh1PtHard);
2571 fCommonHistList->Add(fh1PtHardTrials);
1da9498b 2572
2573 // Background
2574 if(fBckgMode){
67e37e80 2575 fFFBckgHisto0Gen->AddToOutput(fCommonHistList);
2576 fFFBckgHisto0GenLeading->AddToOutput(fCommonHistList);
2577 fFFBckgHisto1Gen->AddToOutput(fCommonHistList);
2578 fFFBckgHisto1GenLeading->AddToOutput(fCommonHistList);
2579 fFFBckgHisto2Gen->AddToOutput(fCommonHistList);
2580 fFFBckgHisto2GenLeading->AddToOutput(fCommonHistList);
1da9498b 2581
67e37e80 2582 fQABckgHisto0Gen->AddToOutput(fCommonHistList);
2583 fQABckgHisto1Gen->AddToOutput(fCommonHistList);
2584 fQABckgHisto2Gen->AddToOutput(fCommonHistList);
1da9498b 2585 }
fb03edbe 2586 }
656dc810 2587 }
2588 if(saveLevel>1){
2589 fQATrackHistosRec->AddToOutput(fCommonHistList);
2590 fQATrackHistosRecCuts->AddToOutput(fCommonHistList);
fb03edbe 2591 if(genTracks) fQATrackHistosGen->AddToOutput(fCommonHistList);
656dc810 2592
2593 fQAJetHistosRec->AddToOutput(fCommonHistList);
2594 fQAJetHistosRecCuts->AddToOutput(fCommonHistList);
2595 fQAJetHistosRecCutsLeading->AddToOutput(fCommonHistList);
fb03edbe 2596 if(recJetsEff) fQAJetHistosRecEffLeading->AddToOutput(fCommonHistList);
2597
2598 if(genJets){
2599 fQAJetHistosGen->AddToOutput(fCommonHistList);
2600 fQAJetHistosGenLeading->AddToOutput(fCommonHistList);
2601 }
fe343c6b 2602
656dc810 2603 fCommonHistList->Add(fh1EvtMult);
2604 fCommonHistList->Add(fh1nRecJetsCuts);
fb03edbe 2605 if(genJets) fCommonHistList->Add(fh1nGenJets);
67e37e80 2606 if(fBckgMode && (fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters)) {
2607 fCommonHistList->Add(fh1nRecBckgJetsCuts);
2608 if(genJets) fCommonHistList->Add(fh1nGenBckgJets);
2609 }
656dc810 2610 }
2611 if(saveLevel>2){
2612 fCommonHistList->Add(fh1VertexNContributors);
2613 fCommonHistList->Add(fh1VertexZ);
2614 }
2615 if(saveLevel>3){
67e37e80 2616 if(fIJMode){
2617 fIJHistosRecCuts->AddToOutput(fCommonHistList);
2618 fIJHistosRecLeading->AddToOutput(fCommonHistList);
2619 fIJHistosRecLeadingTrack->AddToOutput(fCommonHistList);
1da9498b 2620
67e37e80 2621 // Background
2622 if(fBckgMode){
2623 fIJBckgHisto0RecCuts->AddToOutput(fCommonHistList);
2624 fIJBckgHisto0RecLeading->AddToOutput(fCommonHistList);
2625 fIJBckgHisto1RecCuts->AddToOutput(fCommonHistList);
2626 fIJBckgHisto1RecLeading->AddToOutput(fCommonHistList);
2627 fIJBckgHisto2RecCuts->AddToOutput(fCommonHistList);
2628 fIJBckgHisto2RecLeading->AddToOutput(fCommonHistList);
2629 }
2630
2631 if(genJets && genTracks){
2632 fIJHistosGen->AddToOutput(fCommonHistList);
2633 fIJHistosGenLeading->AddToOutput(fCommonHistList);
2634 fIJHistosGenLeadingTrack->AddToOutput(fCommonHistList);
2635
2636 // Background
2637 if(fBckgMode){
2638 fIJBckgHisto0Gen->AddToOutput(fCommonHistList);
2639 fIJBckgHisto0GenLeading->AddToOutput(fCommonHistList);
2640 fIJBckgHisto1Gen->AddToOutput(fCommonHistList);
2641 fIJBckgHisto1GenLeading->AddToOutput(fCommonHistList);
2642 fIJBckgHisto2Gen->AddToOutput(fCommonHistList);
2643 fIJBckgHisto2GenLeading->AddToOutput(fCommonHistList);
2644 }
2645 }
fb03edbe 2646 }
656dc810 2647 }
2648 if(saveLevel>4){
2649 fFFDiJetHistosRecCuts->AddToOutput(fCommonHistList);
2650 fFFDiJetHistosRecLeading->AddToOutput(fCommonHistList);
2651 fFFDiJetHistosRecLeadingTrack->AddToOutput(fCommonHistList);
656dc810 2652 fQADiJetHistosRecCuts->AddToOutput(fCommonHistList);
fb03edbe 2653
2654 if(genJets && genTracks){
2655 fFFDiJetHistosGen->AddToOutput(fCommonHistList);
2656 fFFDiJetHistosGenLeading->AddToOutput(fCommonHistList);
2657 fFFDiJetHistosGenLeadingTrack->AddToOutput(fCommonHistList);
2658 fQADiJetHistosGen->AddToOutput(fCommonHistList);
2659 }
cb76764e 2660
fb03edbe 2661 if(recJetsEff && genTracks){
cb76764e 2662 fQATrackHistosRecEffGen->AddToOutput(fCommonHistList);
2663 fQATrackHistosRecEffRec->AddToOutput(fCommonHistList);
2664 fFFHistosRecEffGen->AddToOutput(fCommonHistList);
2665 fFFHistosRecEffRec->AddToOutput(fCommonHistList);
2666 fCommonHistList->Add(fh1nRecEffJets);
2667 fCommonHistList->Add(fh2PtRecVsGenPrim);
fb03edbe 2668 }
656dc810 2669 }
2670
2671 // =========== Switch on Sumw2 for all histos ===========
2672 for (Int_t i=0; i<fCommonHistList->GetEntries(); ++i){
2673 TH1 *h1 = dynamic_cast<TH1*>(fCommonHistList->At(i));
2674 if (h1) h1->Sumw2();
67e37e80 2675// else{
2676// THnSparse *hnSparse = dynamic_cast<THnSparse*>(fCommonHistList->At(i));
2677// if(hnSparse) hnSparse->Sumw2();
2678// }
656dc810 2679 }
2680
2681 TH1::AddDirectory(oldStatus);
2682}
2683
2684//_______________________________________________
2685void AliAnalysisTaskFragmentationFunction::Init()
2686{
2687 // Initialization
2688 if(fDebug > 1) Printf("AliAnalysisTaskFragmentationFunction::Init()");
2689
2690}
2691
2692//_____________________________________________________________
2693void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *)
2694{
2695 // Main loop
2696 // Called for each event
2697 if(fDebug > 1) Printf("AliAnalysisTaskFragmentationFunction::UserExec()");
2698
2699
2700 if(fDebug > 1) Printf("Analysis event #%5d", (Int_t) fEntry);
2701 // Trigger selection
67e37e80 2702
656dc810 2703 AliInputEventHandler* inputHandler = (AliInputEventHandler*)
2704 ((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler());
fe343c6b 2705 if(inputHandler->IsEventSelected() & AliVEvent::kMB){
656dc810 2706 if(fDebug > 1) Printf(" Trigger Selection: event ACCEPTED ... ");
2707 fh1EvtSelection->Fill(1.);
2708 } else {
2709 fh1EvtSelection->Fill(0.);
ac017ff3 2710 if(inputHandler->InheritsFrom("AliESDInputHandler") && fUsePhysicsSelection){ // PhysicsSelection only with ESD input
656dc810 2711 if (fDebug > 1 ) Printf(" Trigger Selection: event REJECTED ... ");
2712 PostData(1, fCommonHistList);
2713 return;
2714 }
2715 }
1da9498b 2716
656dc810 2717 fESD = dynamic_cast<AliESDEvent*>(InputEvent());
2718 if(!fESD){
2719 if(fDebug>3) Printf("%s:%d ESDEvent not found in the input", (char*)__FILE__,__LINE__);
2720 }
2721
2722 fMCEvent = MCEvent();
2723 if(!fMCEvent){
2724 if(fDebug>3) Printf("%s:%d MCEvent not found in the input", (char*)__FILE__,__LINE__);
2725 }
2726
2727 // get AOD event from input/ouput
2728 TObject* handler = AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler();
2729 if( handler && handler->InheritsFrom("AliAODInputHandler") ) {
2730 fAOD = ((AliAODInputHandler*)handler)->GetEvent();
2731 if (fDebug > 1) Printf("%s:%d AOD event from input", (char*)__FILE__,__LINE__);
2732 }
2733 else {
2734 handler = AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler();
2735 if( handler && handler->InheritsFrom("AliAODHandler") ) {
2736 fAOD = ((AliAODHandler*)handler)->GetAOD();
2737 if (fDebug > 1) Printf("%s:%d AOD event from output", (char*)__FILE__,__LINE__);
2738 }
2739 }
2740
2741 if(!fAOD){
2742 Printf("%s:%d AODEvent not found", (char*)__FILE__,__LINE__);
2743 return;
2744 }
2745
2746
2747 // event selection (vertex) *****************************************
2748
2749 AliAODVertex* primVtx = fAOD->GetPrimaryVertex();
2750 Int_t nTracksPrim = primVtx->GetNContributors();
2751 fh1VertexNContributors->Fill(nTracksPrim);
2752
2753 if (fDebug > 1) Printf("%s:%d primary vertex selection: %d", (char*)__FILE__,__LINE__,nTracksPrim);
2754 if(!nTracksPrim){
2755 if (fDebug > 1) Printf("%s:%d primary vertex selection: event REJECTED...",(char*)__FILE__,__LINE__);
2756 fh1EvtSelection->Fill(2.);
2757 PostData(1, fCommonHistList);
2758 return;
2759 }
2760
2761 fh1VertexZ->Fill(primVtx->GetZ());
2762
2763 if(TMath::Abs(primVtx->GetZ())>10){
2764 if (fDebug > 1) Printf("%s:%d primary vertex z = %f: event REJECTED...",(char*)__FILE__,__LINE__,primVtx->GetZ());
2765 fh1EvtSelection->Fill(3.);
2766 PostData(1, fCommonHistList);
2767 return;
2768 }
2769
2770 TString primVtxName(primVtx->GetName());
2771
2772 if(primVtxName.CompareTo("TPCVertex",TString::kIgnoreCase) == 1){
2773 if (fDebug > 1) Printf("%s:%d primary vertex selection: TPC vertex, event REJECTED...",(char*)__FILE__,__LINE__);
2774 fh1EvtSelection->Fill(4.);
2775 PostData(1, fCommonHistList);
2776 return;
2777 }
2778 if (fDebug > 1) Printf("%s:%d primary vertex selection: event ACCEPTED ...",(char*)__FILE__,__LINE__);
2779 fh1EvtSelection->Fill(5.);
ac017ff3 2780
2781
2782 //___ get MC information __________________________________________________________________
2783
2784 Double_t ptHard = 0.;
2785 Double_t nTrials = 1; // trials for MC trigger weight for real data
3e1c1eee 2786
2787 if(fMCEvent){
5fde4a38 2788 AliGenEventHeader* genHeader = fMCEvent->GenEventHeader();
2789 AliGenPythiaEventHeader* pythiaGenHeader = dynamic_cast<AliGenPythiaEventHeader*>(genHeader);
2790 AliGenHijingEventHeader* hijingGenHeader = 0x0;
2791
2792 if(pythiaGenHeader){
2793 if(fDebug>3) Printf("%s:%d pythiaGenHeader found", (char*)__FILE__,__LINE__);
2794 nTrials = pythiaGenHeader->Trials();
2795 ptHard = pythiaGenHeader->GetPtHard();
2796
2797 fh1PtHard->Fill(ptHard);
2798 fh1PtHardTrials->Fill(ptHard,nTrials);
2799
ac017ff3 2800
5fde4a38 2801 } else { // no pythia, hijing?
c2658535 2802
5fde4a38 2803 if(fDebug>3) Printf("%s:%d no pythiaGenHeader found", (char*)__FILE__,__LINE__);
2804
2805 hijingGenHeader = dynamic_cast<AliGenHijingEventHeader*>(genHeader);
2806 if(!hijingGenHeader){
2807 Printf("%s:%d no pythiaGenHeader or hjingGenHeader found", (char*)__FILE__,__LINE__);
2808 } else {
2809 if(fDebug>3) Printf("%s:%d hijingGenHeader found", (char*)__FILE__,__LINE__);
2810 }
3e1c1eee 2811 }
5fde4a38 2812
2813 fh1Trials->Fill("#sum{ntrials}",fAvgTrials);
2814 }
656dc810 2815
2816
2817 //___ fetch jets __________________________________________________________________________
2818
2819 Int_t nJ = GetListOfJets(fJetsRec, kJetsRec);
2820 Int_t nRecJets = 0;
2821 if(nJ>=0) nRecJets = fJetsRec->GetEntries();
2822 if(fDebug>2)Printf("%s:%d Selected Rec jets: %d %d",(char*)__FILE__,__LINE__,nJ,nRecJets);
2823 if(nJ != nRecJets) Printf("%s:%d Mismatch Selected Rec Jets: %d %d",(char*)__FILE__,__LINE__,nJ,nRecJets);
2824
2825 Int_t nJCuts = GetListOfJets(fJetsRecCuts, kJetsRecAcceptance);
2826 Int_t nRecJetsCuts = 0;
2827 if(nJCuts>=0) nRecJetsCuts = fJetsRecCuts->GetEntries();
2828 if(fDebug>2)Printf("%s:%d Selected Rec jets after cuts: %d %d",(char*)__FILE__,__LINE__,nJCuts,nRecJetsCuts);
2829 if(nRecJetsCuts != nJCuts) Printf("%s:%d Mismatch selected Rec jets after cuts: %d %d",(char*)__FILE__,__LINE__,nJCuts,nRecJetsCuts);
2830 fh1nRecJetsCuts->Fill(nRecJetsCuts);
2831
2832
2833 if(fJetTypeGen==kJetsKine || fJetTypeGen == kJetsKineAcceptance) fJetsGen->SetOwner(kTRUE); // kine aod jets allocated on heap, delete them with TList::Clear()
2834 Int_t nJGen = GetListOfJets(fJetsGen, fJetTypeGen);
2835 Int_t nGenJets = 0;
2836 if(nJGen>=0) nGenJets = fJetsGen->GetEntries();
2837 if(fDebug>2)Printf("%s:%d Selected Gen jets: %d %d",(char*)__FILE__,__LINE__,nJGen,nGenJets);
2838 if(nJGen != nGenJets) Printf("%s:%d Mismatch selected Gen jets: %d %d",(char*)__FILE__,__LINE__,nJGen,nGenJets);
2839 fh1nGenJets->Fill(nGenJets);
2840
2841
fe343c6b 2842 if(fJetTypeRecEff==kJetsKine || fJetTypeRecEff == kJetsKineAcceptance) fJetsRecEff->SetOwner(kTRUE); // kine aod jets allocated on heap, delete them with TList::Clear()
2843 Int_t nJRecEff = GetListOfJets(fJetsRecEff, fJetTypeRecEff);
2844 Int_t nRecEffJets = 0;
2845 if(nJRecEff>=0) nRecEffJets = fJetsRecEff->GetEntries();
2846 if(fDebug>2)Printf("%s:%d Selected RecEff jets: %d %d",(char*)__FILE__,__LINE__,nJRecEff,nRecEffJets);
2847 if(nJRecEff != nRecEffJets) Printf("%s:%d Mismatch selected RecEff jets: %d %d",(char*)__FILE__,__LINE__,nJRecEff,nRecEffJets);
2848 fh1nRecEffJets->Fill(nRecEffJets);
2849
67e37e80 2850 //____ fetch background jets ___________________________________________________
2851 if(fBckgMode && (fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters)){
2852 Int_t nBJ = GetListOfBckgJets(fBckgJetsRec, kJetsRec);
2853 Int_t nRecBckgJets = 0;
2854 if(nBJ>=0) nRecBckgJets = fBckgJetsRec->GetEntries();
2855 if(fDebug>2)Printf("%s:%d Selected Rec background jets: %d %d",(char*)__FILE__,__LINE__,nBJ,nRecBckgJets);
2856 if(nBJ != nRecBckgJets) Printf("%s:%d Mismatch Selected Rec background jets: %d %d",(char*)__FILE__,__LINE__,nBJ,nRecBckgJets);
2857
2858 Int_t nBJCuts = GetListOfBckgJets(fBckgJetsRecCuts, kJetsRecAcceptance);
2859 Int_t nRecBckgJetsCuts = 0;
2860 if(nBJCuts>=0) nRecBckgJetsCuts = fBckgJetsRecCuts->GetEntries();
2861 if(fDebug>2)Printf("%s:%d Selected Rec background jets after cuts: %d %d",(char*)__FILE__,__LINE__,nJCuts,nRecJetsCuts);
2862 if(nRecBckgJetsCuts != nBJCuts) Printf("%s:%d Mismatch selected Rec background jets after cuts: %d %d",(char*)__FILE__,__LINE__,nBJCuts,nRecBckgJetsCuts);
2863 fh1nRecBckgJetsCuts->Fill(nRecBckgJetsCuts);
2864
2865 if(fJetTypeGen==kJetsKine || fJetTypeGen == kJetsKineAcceptance) fBckgJetsGen->SetOwner(kTRUE); // kine aod jets allocated on heap, delete them with TList::Clear()
2866 Int_t nBJGen = GetListOfBckgJets(fBckgJetsGen, fJetTypeGen);
2867 Int_t nGenBckgJets = 0;
2868 if(nBJGen>=0) nGenBckgJets = fBckgJetsGen->GetEntries();
2869 if(fDebug>2)Printf("%s:%d Selected Gen background jets: %d %d",(char*)__FILE__,__LINE__,nBJGen,nGenBckgJets);
2870 if(nBJGen != nGenBckgJets) Printf("%s:%d Mismatch selected Gen background jets: %d %d",(char*)__FILE__,__LINE__,nBJGen,nGenBckgJets);
2871 fh1nGenBckgJets->Fill(nGenBckgJets);
2872 }
fe343c6b 2873
656dc810 2874 //____ fetch particles __________________________________________________________
2875
2876 Int_t nT = GetListOfTracks(fTracksRec, kTrackAOD);
2877 Int_t nRecPart = 0;
2878 if(nT>=0) nRecPart = fTracksRec->GetEntries();
2879 if(fDebug>2)Printf("%s:%d Selected Rec tracks: %d %d",(char*)__FILE__,__LINE__,nT,nRecPart);
2880 if(nRecPart != nT) Printf("%s:%d Mismatch selected Rec tracks: %d %d",(char*)__FILE__,__LINE__,nT,nRecPart);
2881
2882
2883 Int_t nTCuts = GetListOfTracks(fTracksRecCuts, kTrackAODCuts);
2884 Int_t nRecPartCuts = 0;
2885 if(nTCuts>=0) nRecPartCuts = fTracksRecCuts->GetEntries();
2886 if(fDebug>2)Printf("%s:%d Selected Rec tracks after cuts: %d %d",(char*)__FILE__,__LINE__,nTCuts,nRecPartCuts);
2887 if(nRecPartCuts != nTCuts) Printf("%s:%d Mismatch selected Rec tracks after cuts: %d %d",(char*)__FILE__,__LINE__,nTCuts,nRecPartCuts);
2888 fh1EvtMult->Fill(nRecPartCuts);
2889
2890
2891 Int_t nTGen = GetListOfTracks(fTracksGen,fTrackTypeGen);
2892 Int_t nGenPart = 0;
2893 if(nTGen>=0) nGenPart = fTracksGen->GetEntries();
2894 if(fDebug>2)Printf("%s:%d Selected Gen tracks: %d %d",(char*)__FILE__,__LINE__,nTGen,nGenPart);
2895 if(nGenPart != nTGen) Printf("%s:%d Mismatch selected Gen tracks: %d %d",(char*)__FILE__,__LINE__,nTGen,nGenPart);
2896
2897
2898 //____ analysis, fill histos ___________________________________________________
2899
2900 // loop over tracks
2901
2902 for(Int_t it=0; it<nRecPart; ++it){
2903 AliVParticle *part = dynamic_cast<AliVParticle*>(fTracksRec->At(it));
2904 fQATrackHistosRec->FillTrackQA( part->Eta(), TVector2::Phi_0_2pi(part->Phi()), part->Pt());
2905 }
2906 for(Int_t it=0; it<nRecPartCuts; ++it){
2907 AliVParticle *part = dynamic_cast<AliVParticle*>(fTracksRecCuts->At(it));
2908 fQATrackHistosRecCuts->FillTrackQA( part->Eta(), TVector2::Phi_0_2pi(part->Phi()), part->Pt());
2909 }
2910 for(Int_t it=0; it<nGenPart; ++it){
2911 AliVParticle *part = dynamic_cast<AliVParticle*>(fTracksGen->At(it));
2912 fQATrackHistosGen->FillTrackQA( part->Eta(), TVector2::Phi_0_2pi(part->Phi()), part->Pt());
2913 }
2914
2915 // loop over jets
2916
2917 for(Int_t ij=0; ij<nRecJets; ++ij){
2918
2919 AliAODJet* jet = dynamic_cast<AliAODJet*>(fJetsRec->At(ij));
2920 fQAJetHistosRec->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
2921 }
2922
656dc810 2923 for(Int_t ij=0; ij<nRecJetsCuts; ++ij){
2924
2925 AliAODJet* jet = dynamic_cast<AliAODJet*>(fJetsRecCuts->At(ij));
2926 fQAJetHistosRecCuts->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
2927
2928 if(ij==0){ // leading jet
2929
2930 fQAJetHistosRecCutsLeading->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt() );
2931
2932 TList* jettracklist = new TList();
cb76764e 2933 Double_t sumPt = 0.;
656dc810 2934 Float_t leadTrackPt = 0.;
2935 TLorentzVector* leadTrackV = new TLorentzVector();
2936
2937 if(GetFFRadius()<=0){
2938 GetJetTracksTrackrefs(jettracklist, jet);
2939 } else {
2940 GetJetTracksPointing(fTracksRecCuts, jettracklist, jet, GetFFRadius(), sumPt);
2941 }
2942
2943 for(Int_t it=0; it<jettracklist->GetSize(); ++it){
cb76764e 2944
2945 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(jettracklist->At(it));
2946 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
2947
2948 Float_t jetPt = jet->Pt();
2949 Float_t trackPt = trackV->Pt();
656dc810 2950
2951 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
2952
cb76764e 2953 fFFHistosRecCuts->FillFF( trackPt, jetPt, incrementJetPt);
67e37e80 2954 if(fIJMode) fIJHistosRecCuts->FillIntraJet( trackV, jet->MomentumVector() );
656dc810 2955
cb76764e 2956 if(it==0){ // leading track
656dc810 2957 leadTrackPt = trackPt;
cb76764e 2958 leadTrackV->SetPxPyPzE(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
656dc810 2959
cb76764e 2960 fFFHistosRecLeadingTrack->FillFF( leadTrackPt, jetPt, kTRUE);
67e37e80 2961 if(fIJMode) fIJHistosRecLeadingTrack->FillIntraJet( leadTrackV, jet->MomentumVector() );
656dc810 2962 }
cb76764e 2963 fFFHistosRecLeading->FillFF( trackPt, leadTrackPt , incrementJetPt);
67e37e80 2964 if(fIJMode) fIJHistosRecLeading->FillIntraJet( trackV, leadTrackV );
656dc810 2965
2966 delete trackV;
656dc810 2967 }
1da9498b 2968
2969 // ff and ij for background study
2970 if(fBckgMode){
67e37e80 2971 if(fBckgType[0]!=-1)
2972 FillBckgHistos(fBckgType[0], fTracksRecCuts, fJetsRecCuts, jet, leadTrackPt, leadTrackV,
2973 fFFBckgHisto0RecCuts, fFFBckgHisto0RecLeading,
2974 fIJBckgHisto0RecCuts, fIJBckgHisto0RecLeading,
2975 fQABckgHisto0RecCuts);
2976 if(fBckgType[1]!=-1)
2977 FillBckgHistos(fBckgType[1], fTracksRecCuts, fJetsRecCuts, jet, leadTrackPt, leadTrackV,
2978 fFFBckgHisto1RecCuts, fFFBckgHisto1RecLeading,
2979 fIJBckgHisto1RecCuts, fIJBckgHisto1RecLeading,
2980 fQABckgHisto1RecCuts);
2981 if(fBckgType[2]!=-1)
2982 FillBckgHistos(fBckgType[2], fTracksRecCuts, fJetsRecCuts, jet, leadTrackPt, leadTrackV,
2983 fFFBckgHisto2RecCuts, fFFBckgHisto2RecLeading,
2984 fIJBckgHisto2RecCuts, fIJBckgHisto2RecLeading,
2985 fQABckgHisto2RecCuts);
1da9498b 2986 } // end if(fBckgMode)
2987
656dc810 2988 delete leadTrackV;
2989 delete jettracklist;
2990 }
2991 }
1da9498b 2992
cb76764e 2993 // generated jets
2994
656dc810 2995 for(Int_t ij=0; ij<nGenJets; ++ij){
2996
2997 AliAODJet* jet = dynamic_cast<AliAODJet*>(fJetsGen->At(ij));
2998 fQAJetHistosGen->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
2999
3000 if(ij==0){ // leading jet
cb76764e 3001
656dc810 3002 fQAJetHistosGenLeading->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
3003
3004 TList* jettracklist = new TList();
cb76764e 3005 Double_t sumPt = 0.;
656dc810 3006 Float_t leadTrackPt = 0.;
3007 TLorentzVector* leadTrackV = new TLorentzVector();
3008
3009 if(GetFFRadius()<=0){
3010 GetJetTracksTrackrefs(jettracklist, jet);
3011 } else {
3012 GetJetTracksPointing(fTracksGen, jettracklist, jet, GetFFRadius(), sumPt);
3013 }
3014
3015 for(Int_t it=0; it<jettracklist->GetSize(); ++it){
656dc810 3016
cb76764e 3017 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(jettracklist->At(it));
3018 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
656dc810 3019
cb76764e 3020 Float_t jetPt = jet->Pt();
3021 Float_t trackPt = trackV->Pt();
3022
3023 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
3024
3025 fFFHistosGen->FillFF( trackPt, jetPt, incrementJetPt );
67e37e80 3026 if(fIJMode) fIJHistosGen->FillIntraJet( trackV, jet->MomentumVector() );
656dc810 3027
cb76764e 3028 if(it==0){ // leading track
656dc810 3029 leadTrackPt = trackPt;
cb76764e 3030 leadTrackV->SetPxPyPzE(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
656dc810 3031
cb76764e 3032 fFFHistosGenLeadingTrack->FillFF( leadTrackPt, jetPt, kTRUE );
67e37e80 3033 if(fIJMode) fIJHistosGenLeadingTrack->FillIntraJet( leadTrackV, jet->MomentumVector() );
656dc810 3034 }
cb76764e 3035 fFFHistosGenLeading->FillFF( trackPt, leadTrackPt, incrementJetPt );
67e37e80 3036 if(fIJMode) fIJHistosGenLeading->FillIntraJet( trackV, leadTrackV );
656dc810 3037
3038 delete trackV;
656dc810 3039 }
3040
3041 delete leadTrackV;
3042 delete jettracklist;
3043 }
3044 }
3045
3046 //_______ DiJet part _____________________________________________________
3047
2d1d1b60 3048 if (nRecJetsCuts > 1)
656dc810 3049 {
3050
3051 AliAODJet* jet1 = dynamic_cast<AliAODJet*>(fJetsRecCuts->At(0));
3052 AliAODJet* jet2 = dynamic_cast<AliAODJet*>(fJetsRecCuts->At(1));
3053
3054 // DiJet deltaphi calculation
3055 Double_t phi1 = TVector2::Phi_0_2pi(jet1->Phi());
3056 Double_t phi2 = TVector2::Phi_0_2pi(jet2->Phi());
3057 Double_t deltaPhi = TMath::Abs(phi1-phi2);
3058 if (deltaPhi > TMath::Pi() && deltaPhi < 2*TMath::Pi()) deltaPhi = 2*TMath::Pi() - deltaPhi;
3059
3060 // DiJet CDF cut calculation
fceb275f 3061 Double_t et1 = TMath::Abs(jet1->E()*TMath::Sin(jet1->Theta()));
3062 Double_t et2 = TMath::Abs(jet2->E()*TMath::Sin(jet2->Theta()));
3063 Double_t sumEt = et1 + et2;
3064 Double_t normEt1PlusEt2 = TMath::Sqrt(et1*et1+et2*et2+2*et1*et2*TMath::Cos(deltaPhi));
656dc810 3065 Double_t ratio = (Double_t)(normEt1PlusEt2/sumEt);
3066
3067 // DiJet events selection
3068 Bool_t positionCut = 0;
3069 Bool_t positionEnergyCut = 0;
3070 Bool_t cdfCut = 0;
3071
3072 // Position cut :
3073 if (deltaPhi > fDiJetDeltaPhiCut) positionCut = 1;
3074 // Position-Energy cut :
3075 if ((deltaPhi > fDiJetDeltaPhiCut) && ((jet2->Pt()) >= fDiJetPtFractionCut*(jet1->Pt()))) positionEnergyCut = 1;
3076 // CDF cut :
3077 if (ratio < fDiJetCDFCut) cdfCut = 1;
3078
3079 Int_t go = 0;
3080
3081 if (fDiJetCut == 1 && positionCut == 1) go = 1;
3082 if (fDiJetCut == 2 && positionEnergyCut == 1) go = 1;
3083 if (fDiJetCut == 3 && cdfCut == 1) go = 1;
3084
3085 if (go)
3086 {
3087 Double_t deltaEta = TMath::Abs(jet1->Eta()-jet2->Eta());
3088 Double_t deltaPt = TMath::Abs(jet1->Pt()-jet2->Pt());
fceb275f 3089 Double_t meanEt = (Double_t)((et1+et2)/2.);
656dc810 3090 Double_t invariantMass = (Double_t)InvMass(jet1,jet2);
3091
3092 Double_t jetBin = GetDiJetBin(invariantMass, jet1->Pt(), meanEt, fDiJetKindBins);
3093
3094 if (jetBin > 0)
3095 {
3096 fQADiJetHistosRecCuts->FillDiJetQA(invariantMass, deltaPhi, deltaEta, deltaPt, jetBin);
3097
3098 TList* jettracklist1 = new TList();
3099 Double_t sumPt1 = 0.;
3100 Float_t leadTrackPt1 = 0;
3101
3102 TList* jettracklist2 = new TList();
3103 Double_t sumPt2 = 0.;
3104 Float_t leadTrackPt2 = 0;
3105
3106 if(GetFFRadius()<=0)
3107 {
3108 GetJetTracksTrackrefs(jettracklist1, jet1);
3109 GetJetTracksTrackrefs(jettracklist2, jet2);
3110 }
3111 else
3112 {
3113 GetJetTracksPointing(fTracksRecCuts, jettracklist1, jet1, GetFFRadius(), sumPt1);
3114 GetJetTracksPointing(fTracksRecCuts, jettracklist2, jet2, GetFFRadius(), sumPt2);
3115 }
3116
3117 Int_t nTracks = jettracklist1->GetSize();
3118 if (jettracklist1->GetSize() < jettracklist2->GetSize()) nTracks = jettracklist2->GetSize();
3119
3120 for(Int_t it=0; it<nTracks; ++it)
3121 {
3122 if (it < jettracklist1->GetSize())
3123 {
3124 Float_t trackPt1 = (dynamic_cast<AliVParticle*> (jettracklist1->At(it)))->Pt();
3125 Float_t jetPt1 = jet1->Pt();
3126
3127 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
3128
3129 fFFDiJetHistosRecCuts->FillDiJetFF(1, trackPt1, jetPt1, jetBin, incrementJetPt);
3130 fFFDiJetHistosRecCuts->FillDiJetFF(0, trackPt1, jetPt1, jetBin, incrementJetPt);
3131
3132 if (it == 0)
3133 {
3134 leadTrackPt1 = trackPt1;
3135
3136 fFFDiJetHistosRecLeadingTrack->FillDiJetFF(1, leadTrackPt1, jetPt1, jetBin, kTRUE);
3137 fFFDiJetHistosRecLeadingTrack->FillDiJetFF(0, leadTrackPt1, jetPt1, jetBin, kTRUE);
3138 }
3139
3140 fFFDiJetHistosRecLeading->FillDiJetFF(1, trackPt1, leadTrackPt1, jetBin, incrementJetPt);
3141 fFFDiJetHistosRecLeading->FillDiJetFF(0, trackPt1, leadTrackPt1, jetBin, incrementJetPt);
3142 }
3143
3144 if (it < jettracklist2->GetSize())
3145 {
3146 Float_t trackPt2 = (dynamic_cast<AliVParticle*>(jettracklist2->At(it)))->Pt();
3147 Float_t jetPt2 = jet2->Pt();
3148
3149 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
3150
3151 fFFDiJetHistosRecCuts->FillDiJetFF(2, trackPt2, jetPt2, jetBin, incrementJetPt);
3152 fFFDiJetHistosRecCuts->FillDiJetFF(0, trackPt2, jetPt2, jetBin, incrementJetPt);
3153
3154 if (it == 0)
3155 {
3156 leadTrackPt2 = trackPt2;
3157
3158 fFFDiJetHistosRecLeadingTrack->FillDiJetFF(2, leadTrackPt2, jetPt2, jetBin, kTRUE);
3159 fFFDiJetHistosRecLeadingTrack->FillDiJetFF(0, leadTrackPt2, jetPt2, jetBin, kTRUE);
3160 }
3161
3162 fFFDiJetHistosRecLeading->FillDiJetFF(2, trackPt2, leadTrackPt2, jetBin, incrementJetPt);
3163 fFFDiJetHistosRecLeading->FillDiJetFF(0, trackPt2, leadTrackPt2, jetBin, incrementJetPt);
3164 }
3165 } // End loop on tracks
3166
3167 delete jettracklist1;
3168 delete jettracklist2;
3169
3170 } // End if(jetBin > 0)
3171 else { Printf("Jet bins for di-jet studies not set !");}
3172 } // End if(go)
3173 } // End if(nRecJets > 1)
3174
3175 if (nGenJets > 1)
3176 {
3177 AliAODJet* jet1 = dynamic_cast<AliAODJet*>(fJetsGen->At(0));
3178 AliAODJet* jet2 = dynamic_cast<AliAODJet*>(fJetsGen->At(1));
3179
3180 Double_t deltaPhi = 0;
3181 Double_t phi1 = TVector2::Phi_0_2pi(jet1->Phi());
3182 Double_t phi2 = TVector2::Phi_0_2pi(jet2->Phi());
3183 deltaPhi = TMath::Abs(phi1-phi2);
3184 if (deltaPhi > TMath::Pi() && deltaPhi < 2*TMath::Pi()) deltaPhi = 2*TMath::Pi() - deltaPhi;
3185
fceb275f 3186 Double_t et1 = TMath::Abs(jet1->E()*TMath::Sin(jet1->Theta()));
3187 Double_t et2 = TMath::Abs(jet2->E()*TMath::Sin(jet2->Theta()));
3188 Double_t sumEt = et1 + et2;
3189 Double_t normEt1PlusEt2 = TMath::Sqrt(et1*et1+et2*et2+2*et1*et2*TMath::Cos(deltaPhi));
656dc810 3190 Double_t ratio = (Double_t)(normEt1PlusEt2/sumEt);
3191
3192 // DiJet events selection
3193 Bool_t positionCut = 0;
3194 Bool_t positionEnergyCut = 0;
3195 Bool_t cdfCut = 0;
3196
3197 // Position cut :
3198 if (deltaPhi > fDiJetDeltaPhiCut) positionCut = 1;
3199 // Position-Energy cut :
3200 if ((deltaPhi > fDiJetDeltaPhiCut) && ((jet2->Pt()) >= fDiJetPtFractionCut*(jet1->Pt()))) positionEnergyCut = 1;
3201 // CDF cut :
3202 if (ratio < fDiJetCDFCut) cdfCut = 1;
3203
3204 Int_t go = 0;
3205
3206 if (fDiJetCut == 1 && positionCut == 1) go = 1;
3207 if (fDiJetCut == 2 && positionEnergyCut == 1) go = 1;
3208 if (fDiJetCut == 3 && cdfCut == 1) go = 1;
3209
3210 if (go)
3211 {
3212 Double_t deltaEta = TMath::Abs(jet1->Eta()-jet2->Eta());
3213 Double_t deltaPt = TMath::Abs(jet1->Pt()-jet2->Pt());
fceb275f 3214 Double_t meanEt = (Double_t)((et1+et2)/2.);
656dc810 3215 Double_t invariantMass = (Double_t)InvMass(jet1,jet2);
3216
3217 Double_t jetBin = GetDiJetBin(invariantMass, jet1->Pt(), meanEt, fDiJetKindBins);
3218
3219 if(jetBin > 0)
3220 {
3221 fQADiJetHistosGen->FillDiJetQA(invariantMass, deltaPhi, deltaEta, deltaPt, jetBin);
3222
3223 TList* jettracklist1 = new TList();
3224 Double_t sumPt1 = 0.;
3225 Float_t leadTrackPt1 = 0.;
3226
3227 TList* jettracklist2 = new TList();
3228 Double_t sumPt2 = 0.;
3229 Float_t leadTrackPt2 = 0.;
3230
3231 if(GetFFRadius()<=0)
3232 {
3233 GetJetTracksTrackrefs(jettracklist1, jet1);
3234 GetJetTracksTrackrefs(jettracklist2, jet2);
3235 }
3236 else
3237 {
3238 GetJetTracksPointing(fTracksGen, jettracklist1, jet1, GetFFRadius(), sumPt1);
3239 GetJetTracksPointing(fTracksGen, jettracklist2, jet2, GetFFRadius(), sumPt2);
3240 }
3241
3242 Int_t nTracks = jettracklist1->GetSize();
3243 if (jettracklist1->GetSize() < jettracklist2->GetSize()) nTracks = jettracklist2->GetSize();
3244
3245 for(Int_t it=0; it<nTracks; ++it)
3246 {
3247 if (it < jettracklist1->GetSize())
3248 {
3e1c1eee 3249 Float_t trackPt1 = (dynamic_cast<AliVParticle*>(jettracklist1->At(it)))->Pt();
656dc810 3250 Float_t jetPt1 = jet1->Pt();
3251
3252 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
3253
3254 fFFDiJetHistosGen->FillDiJetFF( 1, trackPt1, jetPt1, jetBin, incrementJetPt);
3255 fFFDiJetHistosGen->FillDiJetFF( 0, trackPt1, jetPt1, jetBin, incrementJetPt);
3256
3257 if(it==0)
3258 {
3259 leadTrackPt1 = trackPt1;
3260
3261 fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 1, leadTrackPt1, jetPt1, jetBin, kTRUE);
3262 fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 0, leadTrackPt1, jetPt1, jetBin, kTRUE);
3263 }
3264
3265 fFFDiJetHistosGenLeading->FillDiJetFF( 1, trackPt1, leadTrackPt1, jetBin, incrementJetPt);
3266 fFFDiJetHistosGenLeading->FillDiJetFF( 0, trackPt1, leadTrackPt1, jetBin, incrementJetPt);
3267 }
3e1c1eee 3268
656dc810 3269 if (it < jettracklist2->GetSize())
3270 {
3e1c1eee 3271 Float_t trackPt2 = (dynamic_cast<AliVParticle*>(jettracklist2->At(it)))->Pt();
656dc810 3272 Float_t jetPt2 = jet2->Pt();
3273
3274 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
3275
3276 fFFDiJetHistosGen->FillDiJetFF( 2, trackPt2, jetPt2, jetBin, incrementJetPt);
3277 fFFDiJetHistosGen->FillDiJetFF( 0, trackPt2, jetPt2, jetBin, incrementJetPt);
3278
3279 if (it==0)
3280 {
3281 leadTrackPt2 = trackPt2;
3282
3283 fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 2, leadTrackPt2, jetPt2, jetBin, kTRUE);
3284 fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 0, leadTrackPt2, jetPt2, jetBin, kTRUE);
3285 }
3286
3287 fFFDiJetHistosGenLeading->FillDiJetFF( 2, trackPt2, leadTrackPt2, jetBin, incrementJetPt);
3288 fFFDiJetHistosGenLeading->FillDiJetFF( 0, trackPt2, leadTrackPt2, jetBin, incrementJetPt);
3289 }
3290 } // End loop on tracks
3291
3292 delete jettracklist1;
3293 delete jettracklist2;
3294
3295 } // End if(jetBin > 0)
3296 else { Printf("Jet bins for di-jet studies not set !");}
3297 } // End if (go)
3298 } // End if(nGenJets > 1)
3299
3300
fe343c6b 3301 // ____ efficiency _______________________________
3302
cb76764e 3303 if(fJetTypeRecEff != kJetsUndef){
3304
3305 // arrays for generated particles: reconstructed AOD track index, isPrimary flag, are initialized in AssociateGenRec(...) function
3306 TArrayI indexAODTr;
3307 TArrayS isGenPrim;
fe343c6b 3308
cb76764e 3309 // array for reconcstructed AOD tracks: generated particle index, initialized in AssociateGenRec(...) function
3310 TArrayI indexMCTr;
fe343c6b 3311
cb76764e 3312 Int_t nTracksAODMCCharged = GetListOfTracks(fTracksAODMCCharged, kTrackAODMCCharged);
3313 if(fDebug>2)Printf("%s:%d selected AODMC tracks: %d ",(char*)__FILE__,__LINE__,nTracksAODMCCharged);
fe343c6b 3314
cb76764e 3315 Int_t nTracksRecQualityCuts = GetListOfTracks(fTracksRecQualityCuts, kTrackAODQualityCuts);
3316 if(fDebug>2)Printf("%s:%d selected rec tracks quality after cuts, full acceptance/pt : %d ",(char*)__FILE__,__LINE__,nTracksRecQualityCuts);
fe343c6b 3317
cb76764e 3318 // associate gen and rec tracks, store indices in TArrays
3319 AssociateGenRec(fTracksAODMCCharged,fTracksRecQualityCuts,indexAODTr,indexMCTr,isGenPrim);
fe343c6b 3320
cb76764e 3321 // single track eff
3322 FillSingleTrackRecEffHisto(fQATrackHistosRecEffGen,fQATrackHistosRecEffRec,fTracksAODMCCharged,indexAODTr,isGenPrim);
fe343c6b 3323
cb76764e 3324 // jet track eff
fe343c6b 3325
cb76764e 3326 Double_t sumPtGenLeadingJetRecEff = 0;
3327 Double_t sumPtRecLeadingJetRecEff = 0;
fe343c6b 3328
cb76764e 3329 for(Int_t ij=0; ij<nRecEffJets; ++ij){
3330
3331 AliAODJet* jet = dynamic_cast<AliAODJet*>(fJetsRecEff->At(ij));
fe343c6b 3332
cb76764e 3333 if(ij==0){ // leading jet
3334
3335 TList* jettracklistGen = new TList();
3336 GetJetTracksPointing(fTracksGen, jettracklistGen, jet, GetFFRadius(), sumPtGenLeadingJetRecEff); // for efficiency: gen tracks from pointing with gen/rec jet
3337
3338 TList* jettracklistRec = new TList();
3339 GetJetTracksPointing(fTracksRecCuts,jettracklistRec, jet, GetFFRadius(), sumPtRecLeadingJetRecEff); // bin efficiency in jet pt bins using rec tracks
3340
3341 Double_t jetEta = jet->Eta();
3342 Double_t jetPhi = TVector2::Phi_0_2pi(jet->Phi());
3343
3344 fQAJetHistosRecEffLeading->FillJetQA( jetEta, jetPhi, sumPtGenLeadingJetRecEff );
3345
3346 FillJetTrackRecEffHisto(fFFHistosRecEffGen,fFFHistosRecEffRec,sumPtGenLeadingJetRecEff,sumPtRecLeadingJetRecEff,
3347 jettracklistGen,fTracksAODMCCharged,indexAODTr,isGenPrim,fUseRecEffRecJetPtBins);
3348
3349 delete jettracklistGen;
3350 delete jettracklistRec;
3351 }
3352 }
3353
2d1d1b60 3354
cb76764e 3355 // bckgr eff: complementary cones
2d1d1b60 3356
cb76764e 3357 if(0){
3358
3359 for(Int_t ij=0; ij<nRecEffJets; ++ij){
3360
3361 AliAODJet* jet = dynamic_cast<AliAODJet*>(fJetsRecEff->At(ij));
3362
3363 if(ij==0){ // leading jet
3364
3365 TList* perpjettracklistGen = new TList();
3366 Double_t sumPtGen = 0.;
3367
3368 GetOutPerpJetTracks(fTracksGen, perpjettracklistGen, jet, GetFFBckgRadius() , sumPtGen); // for efficiency: gen tracks perp to gen/rec jet
3369
3370 // here could be your histos !!!
3371 // FillJetTrackRecEffHisto(fFFBckgrPerpHistosRecEffGen,fFFBckgrPerpHistosRecEffRec,sumPtGenLeadingJetRecEff,sumPtRecLeadingJetRecEff,perpjettracklistGen,
3372 // fTracksAODMCCharged,indexAODTr,isGenPrim,fUseRecEffRecJetPtBins);
3373
3374 delete perpjettracklistGen;
3375 }
3376 }
3377 }
2d1d1b60 3378
cb76764e 3379 // bgr eff: outside N leading jets
2d1d1b60 3380
cb76764e 3381 if(0){
fe343c6b 3382
cb76764e 3383 Int_t nCases = 1;
fe343c6b 3384
cb76764e 3385 TList* outjettracklistGen = new TList();
3386 Double_t sumPtGen = 0.;
3387
3388 GetOutNJetsTracks(nCases, fTracksGen, outjettracklistGen, fJetsRecEff, sumPtGen); // for efficiency: gen tracks outide n gen/rec jets
3389
3390 // here could be your histos !!!
3391 // FillJetTrackRecEffHisto(fFFBckgrOutHistosRecEffGen,fFFBckgrOutHistosRecEffRec,sumPtGenLeadingJetRecEff,sumPtRecLeadingJetRecEff,
3392 // outjettracklistGen,fTracksAODMCCharged,indexAODTr,isGenPrim,fUseRecEffRecJetPtBins);
fe343c6b 3393
cb76764e 3394 delete outjettracklistGen;
fe343c6b 3395 }
cb76764e 3396 }
3397
fe343c6b 3398 //___________________
3399
656dc810 3400 fTracksRec->Clear();
3401 fTracksRecCuts->Clear();
3402 fTracksGen->Clear();
fe343c6b 3403 fTracksAODMCCharged->Clear();
3404 fTracksRecQualityCuts->Clear();
3405
656dc810 3406 fJetsRec->Clear();
3407 fJetsRecCuts->Clear();
3408 fJetsGen->Clear();
fe343c6b 3409 fJetsRecEff->Clear();
656dc810 3410
67e37e80 3411 if(fBckgMode && (fBckgType[0]==kBckgClusters || fBckgType[1]==kBckgClusters || fBckgType[2]==kBckgClusters)){
3412 fBckgJetsRec->Clear();
3413 fBckgJetsRecCuts->Clear();
3414 fBckgJetsGen->Clear();
3415 }
3416
656dc810 3417 //Post output data.
3418 PostData(1, fCommonHistList);
3419
3420}
3421
3422//________________________________________________________________________________________
fceb275f 3423Double_t AliAnalysisTaskFragmentationFunction::InvMass(const AliAODJet* jet1, const AliAODJet* jet2)
656dc810 3424{
fceb275f 3425 // cald DiJet inv mass
656dc810 3426
3427 Double_t invMass = 0.;
3428 invMass = TMath::Sqrt(pow(jet1->E()+jet2->E(),2) - pow(jet1->Px()+jet2->Px(),2) -
3429 pow(jet1->Py()+jet2->Py(),2) - pow(jet1->Pz()+jet2->Pz(),2));
3430
3431 return invMass;
3432
3433}
3434
3435//________________________________________________________________________________________
3436Double_t AliAnalysisTaskFragmentationFunction::GetDiJetBin(Double_t invMass, Double_t leadingJetPt, Double_t EtMean, Int_t kindBins)
3437{
fceb275f 3438 // calc DiJet bin according to kindBins parameter
3439
656dc810 3440 Double_t jetBinOk = 0.;
3441 Double_t jetBin = 0.;
3442
3443 Float_t stepInvMass = (fDiJetJetInvMassMax - fDiJetJetInvMassMin)/fDiJetNBinsJetInvMass;
3444 Float_t stepPt = (fDiJetJetPtMax - fDiJetJetPtMin)/fDiJetNBinsJetPt;
3445
3446 if (kindBins == 1)
3447 {
3448 for(Int_t i=0; i<fDiJetNBinsJetInvMass; ++i)
3449 {
656457c9 3450 jetBin = fDiJetJetInvMassMin + i*stepInvMass + stepInvMass/2.;
656dc810 3451 if(((fDiJetJetInvMassMin+i*stepInvMass) <= invMass) &&
190d081e 3452 (fDiJetJetInvMassMin + (i+1)*stepInvMass) > invMass) {jetBinOk = jetBin; break;}
3453 else jetBinOk = -1.;
656dc810 3454 }
656dc810 3455 }
3456 else if (kindBins == 3)
3457 {
3458 for(Int_t i=0; i<fDiJetNBinsJetPt; ++i)
3459 {
656457c9 3460 jetBin = fDiJetJetPtMin + i*stepPt + stepPt/2.;
656dc810 3461 if(((fDiJetJetPtMin+i*stepPt) <= EtMean) &&
190d081e 3462 (fDiJetJetPtMin + (i+1)*stepPt) > EtMean) {jetBinOk = jetBin; break;}
3463 else jetBinOk = -1.;
656dc810 3464 }
656dc810 3465 }
3466 else if (kindBins == 2)
3467 {
3468 for(Int_t i=0; i<fDiJetNBinsJetPt; ++i)
3469 {
656457c9 3470 jetBin = fDiJetJetPtMin + i*stepPt + stepPt/2.;
656dc810 3471 if(((fDiJetJetPtMin+i*stepPt) <= leadingJetPt) &&
190d081e 3472 (fDiJetJetPtMin + (i+1)*stepPt) > leadingJetPt) {jetBinOk = jetBin; break;}
3473 else jetBinOk = -1.;
656dc810 3474 }
656dc810 3475 }
3476 else {Printf("WARNING: kindBins wrongly set ! Please make sure to call SetKindSlices() and set the kind parameter to 1, 2 or 3.\n");}
3477
3478 return jetBinOk;
3479
3480}
3481
3482
3483//______________________________________________________________
3484void AliAnalysisTaskFragmentationFunction::Terminate(Option_t *)
3485{
3486 // terminated
3487
3488 if(fDebug > 1) printf("AliAnalysisTaskFragmentationFunction::Terminate() \n");
3489}
3490
3491//_________________________________________________________________________________
3492Int_t AliAnalysisTaskFragmentationFunction::GetListOfTracks(TList *list, Int_t type)
3493{
3494 // fill list of tracks selected according to type
3495
3496 if(fDebug > 2) Printf("%s:%d Selecting tracks with %d", (char*)__FILE__,__LINE__,type);
3497
3498 if(!list){
3499 if(fDebug>1) Printf("%s:%d no input list", (char*)__FILE__,__LINE__);
3500 return -1;
3501 }
3502
3503 if(type==kTrackUndef) return 0;
3504
3505 Int_t iCount = 0;
190d081e 3506 if(type==kTrackAODCuts || type==kTrackAODQualityCuts || type==kTrackAOD){
656dc810 3507
3508 // all rec. tracks, esd filter mask, eta range
3509 if(!fAOD) return -1;
3510
3511 for(Int_t it=0; it<fAOD->GetNumberOfTracks(); ++it){
3512 AliAODTrack *tr = fAOD->GetTrack(it);
3513
190d081e 3514 if(type == kTrackAODCuts || type==kTrackAODQualityCuts ){
656dc810 3515 if((fFilterMask>0)&&!(tr->TestFilterBit(fFilterMask))) continue;
190d081e 3516 if(type == kTrackAODCuts){
3517 if(tr->Eta() < fTrackEtaMin || tr->Eta() > fTrackEtaMax) continue;
3518 if(tr->Phi() < fTrackPhiMin || tr->Phi() > fTrackPhiMax) continue;
3519 if(tr->Pt() < fTrackPtCut) continue;
3520 }
656dc810 3521 }
3522 list->Add(tr);
3523 iCount++;
3524 }
3525 }
3526 else if (type==kTrackKineAll || type==kTrackKineCharged || type==kTrackKineChargedAcceptance){
3527 // kine particles, all or rather charged
3528 if(!fMCEvent) return iCount;
3529
3530 for(Int_t it=0; it<fMCEvent->GetNumberOfTracks(); ++it){
3531 AliMCParticle* part = (AliMCParticle*) fMCEvent->GetTrack(it);
3532
3533 if(type == kTrackKineCharged || type == kTrackKineChargedAcceptance){
3534 if(part->Charge()==0) continue;
3535
3536 if(type == kTrackKineChargedAcceptance &&
3537 ( part->Eta() < fTrackEtaMin
3538 || part->Eta() > fTrackEtaMax
3539 || part->Phi() < fTrackPhiMin
3540 || part->Phi() > fTrackPhiMax
3541 || part->Pt() < fTrackPtCut)) continue;
3542 }
3543
3544 list->Add(part);
3545 iCount++;
3546 }
3547 }
3548 else if (type==kTrackAODMCCharged || type==kTrackAODMCAll || type==kTrackAODMCChargedAcceptance) {
3549 // MC particles (from AOD), physical primaries, all or rather charged or rather charged within acceptance
3550 if(!fAOD) return -1;
3551
3552 TClonesArray *tca = dynamic_cast<TClonesArray*>(fAOD->FindListObject(AliAODMCParticle::StdBranchName()));
3553 if(!tca)return iCount;
3554
3555 for(int it=0; it<tca->GetEntriesFast(); ++it){
3556 AliAODMCParticle *part = dynamic_cast<AliAODMCParticle*>(tca->At(it));
3557 if(!part->IsPhysicalPrimary())continue;
3558
3559 if (type==kTrackAODMCCharged || type==kTrackAODMCChargedAcceptance){
3560 if(part->Charge()==0) continue;
3561 if(type==kTrackAODMCChargedAcceptance &&
3562 ( part->Eta() > fTrackEtaMax
3563 || part->Eta() < fTrackEtaMin
3564 || part->Phi() > fTrackPhiMax
3565 || part->Phi() < fTrackPhiMin
3566 || part->Pt() < fTrackPtCut)) continue;
3567 }
3568
3569 list->Add(part);
3570 iCount++;
3571 }
3572 }
3573
3574 list->Sort();
3575 return iCount;
3576
3577}
3578// _______________________________________________________________________________
3579Int_t AliAnalysisTaskFragmentationFunction::GetListOfJets(TList *list, Int_t type)
3580{
3581 // fill list of jets selected according to type
3582
3583 if(!list){
3584 if(fDebug>1) Printf("%s:%d no input list", (char*)__FILE__,__LINE__);
3585 return -1;
3586 }
3587
3588 if(type == kJetsRec || type == kJetsRecAcceptance){ // reconstructed jets
3589
3590 if(fBranchRecJets.Length()==0){
3591 Printf("%s:%d no rec jet branch specified", (char*)__FILE__,__LINE__);
3592 if(fDebug>1)fAOD->Print();
3593 return 0;
3594 }
3595
cb76764e 3596 TClonesArray *aodRecJets = 0;
1db1733e 3597 if(fBranchRecJets.Length()) aodRecJets = dynamic_cast<TClonesArray*>(fAOD->FindListObject(fBranchRecJets.Data()));\r
3598 if(!aodRecJets) aodRecJets = dynamic_cast<TClonesArray*>(fAOD->GetList()->FindObject(fBranchRecJets.Data()));\r
656dc810 3599
3600 if(!aodRecJets){
3601 if(fBranchRecJets.Length()) Printf("%s:%d no reconstructed jet array with name %s in AOD", (char*)__FILE__,__LINE__,fBranchRecJets.Data());
3602
3603 if(fDebug>1)fAOD->Print();
3604 return 0;
3605 }
3606
3607 Int_t nRecJets = 0;
3608
3609 for(Int_t ij=0; ij<aodRecJets->GetEntries(); ++ij){
3610
3611 AliAODJet *tmp = dynamic_cast<AliAODJet*>(aodRecJets->At(ij));
3612 if(!tmp) continue;
3613
3614 if( tmp->Pt() < fJetPtCut ) continue;
3615 if( type == kJetsRecAcceptance &&
3616 ( tmp->Eta() < fJetEtaMin
3617 || tmp->Eta() > fJetEtaMax
3618 || tmp->Phi() < fJetPhiMin
3619 || tmp->Phi() > fJetPhiMax )) continue;
3620
3621 list->Add(tmp);
3622
3623 nRecJets++;
3624 }
3625
3626 list->Sort();
cb76764e 3627
656dc810 3628 return nRecJets;
656dc810 3629 }
3630 else if(type == kJetsKine || type == kJetsKineAcceptance){
3631
3632 // generated jets
3633 Int_t nGenJets = 0;
3634
3635 if(!fMCEvent){
3636 if(fDebug>1) Printf("%s:%d no mcEvent",(char*)__FILE__,__LINE__);
3637 return 0;
3638 }
5fde4a38 3639
3640 AliGenEventHeader* genHeader = fMCEvent->GenEventHeader();
3641 AliGenPythiaEventHeader* pythiaGenHeader = dynamic_cast<AliGenPythiaEventHeader*>(genHeader);
3642 AliGenHijingEventHeader* hijingGenHeader = 0x0;
3643
656dc810 3644 if(!pythiaGenHeader){
5fde4a38 3645 hijingGenHeader = dynamic_cast<AliGenHijingEventHeader*>(genHeader);
3646
3647 if(!hijingGenHeader){
3648 Printf("%s:%d no pythiaGenHeader or hijingGenHeader found", (char*)__FILE__,__LINE__);
3649 return 0;
3650 }else{
3651 TLorentzVector mom[4];
3652 AliAODJet* jet[4];
3653 hijingGenHeader->GetJets(mom[0], mom[1], mom[2], mom[3]);
3654
3655 for(Int_t i=0; i<2; ++i){
3656 if(!mom[i].Pt()) continue;
3657 jet[i] = new AliAODJet(mom[i]);
3658
3659 if( type == kJetsKineAcceptance &&
3660 ( jet[i]->Eta() < fJetEtaMin
3661 || jet[i]->Eta() > fJetEtaMax
3662 || jet[i]->Phi() < fJetPhiMin
3663 || jet[i]->Phi() > fJetPhiMax )) continue;
3664
3665 list->Add(jet[i]);
3666 nGenJets++;
3667 }
3668 list->Sort();
3669 return nGenJets;
3670 }
656dc810 3671 }
3672
3673 // fetch the pythia generated jets
3674 for(int ip=0; ip<pythiaGenHeader->NTriggerJets(); ++ip){
3675
3676 Float_t p[4];
3677 AliAODJet *jet = new AliAODJet();
3678 pythiaGenHeader->TriggerJet(ip, p);
3679 jet->SetPxPyPzE(p[0], p[1], p[2], p[3]);
3680
3681 if( type == kJetsKineAcceptance &&
3682 ( jet->Eta() < fJetEtaMin
3683 || jet->Eta() > fJetEtaMax
3684 || jet->Phi() < fJetPhiMin
3685 || jet->Phi() > fJetPhiMax )) continue;
3686
3687 list->Add(jet);
3688 nGenJets++;
3689 }
3690 list->Sort();
3691 return nGenJets;
3692 }
3693 else if(type == kJetsGen || type == kJetsGenAcceptance ){
3694
3695 if(fBranchGenJets.Length()==0){
3696 if(fDebug>1) Printf("%s:%d no gen jet branch specified", (char*)__FILE__,__LINE__);
3697 return 0;
3698 }
3699
cb76764e 3700 TClonesArray *aodGenJets = 0;
1db1733e 3701 if(fBranchGenJets.Length()) aodGenJets = dynamic_cast<TClonesArray*>(fAOD->FindListObject(fBranchGenJets.Data()));\r
3702 if(!aodGenJets) aodGenJets = dynamic_cast<TClonesArray*>(fAOD->GetList()->FindObject(fBranchGenJets.Data()));\r
656dc810 3703
3704 if(!aodGenJets){
3705 if(fDebug>0){
3706 if(fBranchGenJets.Length()) Printf("%s:%d Generated jet branch %s not found",(char*)__FILE__,__LINE__,fBranchGenJets.Data());
3707 }
3708 if(fDebug>1)fAOD->Print();
3709 return 0;
3710 }
3711
3712 Int_t nGenJets = 0;
3713
3714 for(Int_t ig=0; ig<aodGenJets->GetEntries(); ++ig){
3715
3716 AliAODJet *tmp = dynamic_cast<AliAODJet*>(aodGenJets->At(ig));
3717 if(!tmp) continue;
3718
3719 if( tmp->Pt() < fJetPtCut ) continue;
3720 if( type == kJetsGenAcceptance &&
3721 ( tmp->Eta() < fJetEtaMin
3722 || tmp->Eta() > fJetEtaMax
3723 || tmp->Phi() < fJetPhiMin
3724 || tmp->Phi() > fJetPhiMax )) continue;
3725
3726 list->Add(tmp);
3727
3728 nGenJets++;
3729 }
3730 list->Sort();
3731 return nGenJets;
656dc810 3732 }
3733 else{
3734 if(fDebug>0)Printf("%s:%d no such type %d",(char*)__FILE__,__LINE__,type);
3735 return 0;
3736 }
3737}
3738
67e37e80 3739// _______________________________________________________________________________
3740Int_t AliAnalysisTaskFragmentationFunction::GetListOfBckgJets(TList *list, Int_t type)
656dc810 3741{
67e37e80 3742 // fill list of jets selected according to type
656dc810 3743
67e37e80 3744 /*
3745 Under construction
3746 */
3747
3748 return 0;
656dc810 3749
656dc810 3750}
3751
67e37e80 3752// // _________________________________________________________________________________________________________
3753// void AliAnalysisTaskFragmentationFunction::SetProperties(THnSparse* h,const Int_t dim, const char** labels)
3754// {
3755// //Set properties of THnSparse
3756
3757// for(Int_t i=0; i<dim; i++){
3758
3759// h->GetAxis(i)->SetTitle(labels[i]);
3760// h->GetAxis(i)->SetTitleColor(1);
3761// }
3762// }
3763
656dc810 3764// __________________________________________________________________________________________
3765void AliAnalysisTaskFragmentationFunction::SetProperties(TH1* h,const char* x, const char* y)
3766{
3767 //Set properties of histos (x and y title)
3768
3769 h->SetXTitle(x);
3770 h->SetYTitle(y);
3771 h->GetXaxis()->SetTitleColor(1);
3772 h->GetYaxis()->SetTitleColor(1);
3773}
3774
3775// _________________________________________________________________________________________________________
67e37e80 3776void AliAnalysisTaskFragmentationFunction::SetProperties(TH1* h,const char* x, const char* y, const char* z)
656dc810 3777{
3778 //Set properties of histos (x,y and z title)
3779
3780 h->SetXTitle(x);
3781 h->SetYTitle(y);
3782 h->SetZTitle(z);
3783 h->GetXaxis()->SetTitleColor(1);
3784 h->GetYaxis()->SetTitleColor(1);
3785 h->GetZaxis()->SetTitleColor(1);
3786}
3787
3788// ________________________________________________________________________________________________________________________________________________________
fceb275f 3789void AliAnalysisTaskFragmentationFunction::GetJetTracksPointing(TList* inputlist, TList* outputlist, const AliAODJet* jet, const Double_t radius,Double_t& sumPt)
656dc810 3790{
3791 // fill list of tracks in cone around jet axis
3792
3793 sumPt = 0;
3794
3795 Double_t jetMom[3];
3796 jet->PxPyPz(jetMom);
3797 TVector3 jet3mom(jetMom);
3798
3799 for (Int_t itrack=0; itrack<inputlist->GetSize(); itrack++){
3800
3801 AliVParticle* track = dynamic_cast<AliVParticle*>(inputlist->At(itrack));
3802
3803 Double_t trackMom[3];
3804 track->PxPyPz(trackMom);
3805 TVector3 track3mom(trackMom);
3806
3807 Double_t dR = jet3mom.DeltaR(track3mom);
3808
3809 if(dR<radius){
3810
3811 outputlist->Add(track);
3812
3813 sumPt += track->Pt();
3814 }
3815 }
3816
3817 outputlist->Sort();
3818}
3819
3820// ___________________________________________________________________________________________
fceb275f 3821void AliAnalysisTaskFragmentationFunction::GetJetTracksTrackrefs(TList* list, const AliAODJet* jet)
656dc810 3822{
3823 // list of jet tracks from trackrefs
3824
3825 Int_t nTracks = jet->GetRefTracks()->GetEntriesFast();
3826
3827 for (Int_t itrack=0; itrack<nTracks; itrack++) {
3828
3829 AliVParticle* track = dynamic_cast<AliVParticle*>(jet->GetRefTracks()->At(itrack));
3830 if(!track){
3831 AliError("expected ref track not found ");
3832 continue;
3833 }
3834
3835 list->Add(track);
3836 }
3837
3838 list->Sort();
3839}
fe343c6b 3840
3841// _ ________________________________________________________________________________________________________________________________
3842void AliAnalysisTaskFragmentationFunction::AssociateGenRec(TList* tracksAODMCCharged,TList* tracksRec, TArrayI& indexAODTr,TArrayI& indexMCTr,TArrayS& isGenPrim)
3843{
3844 // associate generated and reconstructed tracks, fill TArrays of list indices
3845
3846
3847 Int_t nTracksRec = tracksRec->GetSize();
3848 Int_t nTracksGen = tracksAODMCCharged->GetSize();
3849 TClonesArray *tca = dynamic_cast<TClonesArray*>(fAOD->FindListObject(AliAODMCParticle::StdBranchName()));
3850
3851 if(!nTracksGen) return;
3852 if(!tca) return;
3853
3854 // set size
3855 indexAODTr.Set(nTracksGen);
3856 indexMCTr.Set(nTracksRec);
3857 isGenPrim.Set(nTracksGen);
3858
3859 indexAODTr.Reset(-1);
3860 indexMCTr.Reset(-1);
3861 isGenPrim.Reset(0);
3862
3863 // loop over reconstructed tracks, get generated track
3864
3865 for(Int_t iRec=0; iRec<nTracksRec; iRec++){
3866
3867 AliAODTrack* rectrack = dynamic_cast<AliAODTrack*>(tracksRec->At(iRec));
3868
289a2293 3869 Int_t label = TMath::Abs(rectrack->GetLabel());
fe343c6b 3870
3871 // find MC track in our list
cb76764e 3872 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (tca->At(label));
fe343c6b 3873
3874 Int_t listIndex = -1;
3875 if(gentrack) listIndex = tracksAODMCCharged->IndexOf(gentrack);
3876
3877 if(listIndex>=0){
3878
3879 indexAODTr[listIndex] = iRec;
3880 indexMCTr[iRec] = listIndex;
3881 }
3882 }
3883
3884
3885 // define primary sample for reconstruction efficiency
3886
3887 for(Int_t iGen=0; iGen<nTracksGen; iGen++){
3888
3889 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (tracksAODMCCharged->At(iGen));
3890
3891 Int_t pdg = gentrack->GetPdgCode();
3892
3893 // 211 - pi, 2212 - proton, 321 - Kaon, 11 - electron, 13 - muon
3894 if(TMath::Abs(pdg) == 211 || TMath::Abs(pdg) == 2212 || TMath::Abs(pdg) == 321 ||
3895 TMath::Abs(pdg) == 11 || TMath::Abs(pdg) == 13){
3896
3897 isGenPrim[iGen] = kTRUE;
cb76764e 3898
3899 Int_t iRec = indexAODTr[iGen]; // can be -1 if no good reconstructed track
3900
3901 if(iRec>=0){
3902 Float_t genPt = gentrack->Pt();
3903 Float_t recPt = (dynamic_cast<AliAODTrack*>(tracksRec->At(iRec)))->Pt();
3904
3905 fh2PtRecVsGenPrim->Fill(genPt,recPt);
3906 }
fe343c6b 3907 }
3908 }
3909}
3910
3911// _____________________________________________________________________________________________________________________________________________
cb76764e 3912void AliAnalysisTaskFragmentationFunction::FillSingleTrackRecEffHisto(AliFragFuncQATrackHistos* trackQAGen, AliFragFuncQATrackHistos* trackQARec, TList* tracksGen,
fceb275f 3913 const TArrayI& indexAODTr, const TArrayS& isGenPrim){
fe343c6b 3914
cb76764e 3915 // fill QA for single track reconstruction efficiency
fceb275f 3916
fe343c6b 3917 Int_t nTracksGen = tracksGen->GetSize();
3918
3919 if(!nTracksGen) return;
3920
3921 for(Int_t iGen=0; iGen<nTracksGen; iGen++){
3922
3923 if(isGenPrim[iGen] != 1) continue; // select primaries
3924
3925 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (tracksGen->At(iGen));
3926
3927 Double_t ptGen = gentrack->Pt();
3928 Double_t etaGen = gentrack->Eta();
3929 Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi());
3930
3931 // apply same acc & pt cuts as for FF
3932 // could in principle also be done setting THNsparse axis limits before projecting,
3933 // but then the binning needs to be fine grained enough
3934
3935 if(etaGen < fTrackEtaMin || etaGen > fTrackEtaMax) continue;
3936 if(phiGen < fTrackPhiMin || phiGen > fTrackPhiMax) continue;
3937 if(ptGen < fTrackPtCut) continue;
3938
cb76764e 3939 trackQAGen->FillTrackQA(etaGen, phiGen, ptGen);
fe343c6b 3940
cb76764e 3941 Int_t iRec = indexAODTr[iGen]; // can be -1 if no good reconstructed track
3942 if(iRec>=0) trackQARec->FillTrackQA(etaGen, phiGen, ptGen);
fe343c6b 3943 }
3944}
3945
3946// ______________________________________________________________________________________________________________________________________________________
cb76764e 3947void AliAnalysisTaskFragmentationFunction::FillJetTrackRecEffHisto(TObject* histGen, TObject* histRec, Double_t jetPtGen, Double_t jetPtRec, TList* jetTrackList,
3948 TList* tracksGen, const TArrayI& indexAODTr, const TArrayS& isGenPrim, const Bool_t useRecJetPt)
fe343c6b 3949{
cb76764e 3950
3951 // fill objects for jet track reconstruction efficiency
fe343c6b 3952
3953 Int_t nTracksJet = jetTrackList->GetSize(); // list with AODMC tracks
3954
3955 if(!nTracksJet) return;
3956
cb76764e 3957 Bool_t incrementJetPtGenFF = kTRUE; // needed in case we fill FFHistos
3958 Bool_t incrementJetPtRecFF = kTRUE; // needed in case we fill FFHistos
3959
fe343c6b 3960 for(Int_t iTr=0; iTr<nTracksJet; iTr++){
3961
3962 AliAODMCParticle* gentrack = dynamic_cast<AliAODMCParticle*> (jetTrackList->At(iTr));
3963
3964 // find jet track in gen tracks list
3965 Int_t iGen = tracksGen->IndexOf(gentrack);
3966
3967 if(iGen<0){
3968 if(fDebug>0) Printf("%s:%d gen jet track not found ",(char*)__FILE__,__LINE__);
3969 continue;
3970 }
3971
3972 if(isGenPrim[iGen] != 1) continue; // select primaries
3973
3974 Double_t ptGen = gentrack->Pt();
3975 Double_t etaGen = gentrack->Eta();
3976 Double_t phiGen = TVector2::Phi_0_2pi(gentrack->Phi());
3977
3978 // apply same acc & pt cuts as for FF
fe343c6b 3979
3980 if(etaGen < fTrackEtaMin || etaGen > fTrackEtaMax) continue;
3981 if(phiGen < fTrackPhiMin || phiGen > fTrackPhiMax) continue;
3982 if(ptGen < fTrackPtCut) continue;
3983
2d1d1b60 3984 Double_t z = ptGen / jetPtGen;
fe343c6b 3985 Double_t xi = 0;
3986 if(z>0) xi = TMath::Log(1/z);
3987
cb76764e 3988 Int_t iRec = indexAODTr[iGen]; // can be -1 if no good reconstructed track
3989 Bool_t isRec = (iRec>=0) ? kTRUE : kFALSE;
3990
3991 if(dynamic_cast<AliFragFuncHistos*>(histGen) && dynamic_cast<AliFragFuncHistos*>(histRec)){
3992
3993 AliFragFuncHistos* effFFhistGen = dynamic_cast<AliFragFuncHistos*>(histGen);
3994 AliFragFuncHistos* effFFhistRec = dynamic_cast<AliFragFuncHistos*>(histRec);
3995
3996 if(useRecJetPt) effFFhistGen->FillFF( ptGen, jetPtRec, incrementJetPtGenFF );
3997 else effFFhistGen->FillFF( ptGen, jetPtGen, incrementJetPtGenFF );
3998
3999 incrementJetPtGenFF = kFALSE;
fe343c6b 4000
cb76764e 4001 if(isRec){
4002 if(useRecJetPt) effFFhistRec->FillFF( ptGen, jetPtRec, incrementJetPtRecFF );
4003 else effFFhistRec->FillFF( ptGen, jetPtGen, incrementJetPtRecFF );
4004
4005 incrementJetPtRecFF = kFALSE;
4006 }
4007 }
4008 else if(dynamic_cast<AliFragFuncIntraJetHistos*>(histGen) && dynamic_cast<AliFragFuncIntraJetHistos*>(histRec)){
4009
4010 // eff for IJ histos ...
4011
4012 }
fe343c6b 4013 }
4014}
1da9498b 4015
4016// ________________________________________________________________________________________________________________________________________________________
4017void AliAnalysisTaskFragmentationFunction::GetOutPerpJetTracks(TList* inputlist, TList* outputlist, AliAODJet* jet, Double_t radius,Double_t& sumPt)
4018{
4019 // List of tracks in cone perpendicular to the jet azimuthal direction
4020
4021 Double_t jetMom[3];
4022 jet->PxPyPz(jetMom);
67e37e80 4023
1da9498b 4024 TVector3 jet3mom(jetMom);
4025 // Rotate phi and keep eta unchanged
4026 Double_t ptPerp = jet3mom.Pt();
4027 Double_t etaPerp = jet3mom.Eta();
4028 Double_t phiPerp = TVector2::Phi_0_2pi(jet3mom.Phi()) + TMath::Pi()/2;
4029 if(phiPerp > 2*TMath::Pi()) phiPerp = phiPerp - 2*TMath::Pi();
4030 TVector3 vPerp;
4031 vPerp.SetPtEtaPhi(ptPerp,etaPerp,phiPerp);
4032
4033 // Take orthogonal vector to jet direction
4034 // TVector3 vPerp(jet3mom.Orthogonal());
4035
4036 for (Int_t itrack=0; itrack<inputlist->GetSize(); itrack++){
4037
4038 AliVParticle* track = dynamic_cast<AliVParticle*>(inputlist->At(itrack));
4039
4040 Double_t trackMom[3];
4041 track->PxPyPz(trackMom);
4042 TVector3 track3mom(trackMom);
4043
4044 Double_t dR = vPerp.DeltaR(track3mom);
4045 if(dR<=radius){
4046 outputlist->Add(track);
4047 sumPt += track->Pt();
4048 }
4049 }
4050
4051}
4052
4053// ________________________________________________________________________________________________________________________________________________________
03d5f485 4054void AliAnalysisTaskFragmentationFunction::GetOutNJetsTracks(Int_t nCases, TList* inputlist, TList* outputlist, TList* jetlist, Double_t& sumPt)
1da9498b 4055{
4056 // List of tracks outside cone around N jet axis
4057 // Particles taken randomly
4058
4059 sumPt = 0;
4060 // Int_t nj = jetlist->GetSize();
4061 Float_t rc = GetFFRadius();
4062 Float_t rcl = GetFFBckgRadius();
4063
4064 // Estimate jet and background areas
4065 Float_t* areaJet = new Float_t[nCases];
4066 Float_t* areaJetLarge = new Float_t[nCases];
4067 Float_t areaFull = (fTrackEtaMax-fTrackEtaMin)*(fTrackPhiMax-fTrackPhiMin);
4068 Float_t areaOut = areaFull;
4069
4070 //estimate jets and background areas
4071 Int_t nOut = 0;
4072 Int_t ijet = 0;
4073 TList* templist = new TList();
4074 TClonesArray *vect3Jet = new TClonesArray("TVector3",nCases);
4075
4076 for(Int_t ij=0; ij<nCases; ++ij)
4077 {
4078 // Get jet information
4079 AliAODJet* jet = dynamic_cast<AliAODJet*>(jetlist->At(ij));
4080 TVector3 jet3mom;
4081 jet3mom.SetPtEtaPhi(jet->Pt(),jet->Eta(),jet->Phi());
4082 new((*vect3Jet)[ijet]) TVector3((TVector3)jet3mom);
4083 Float_t etaJet = (Float_t)((TVector3*) vect3Jet->At(ij))->Eta();
4084
4085 // Jet area
4086 areaJet[ij] = CalcJetArea(etaJet,rc);
4087
4088 // Area jet larger angle
4089 areaJetLarge[ij] = CalcJetArea(etaJet,rcl);
4090
4091 // Outside jet area
4092 areaOut = areaOut - areaJetLarge[ij];
4093 ijet++;
4094 }
4095
4096 // List of all tracks outside jet areas
4097 for (Int_t itrack=0; itrack<inputlist->GetSize(); itrack++){
4098
4099 AliVParticle* track = dynamic_cast<AliVParticle*>(inputlist->At(itrack));
4100
4101 Double_t trackMom[3];
4102 track->PxPyPz(trackMom);
4103 TVector3 track3mom(trackMom);
4104
4105 Double_t *dR = new Double_t[nCases];
4106 for(Int_t ij=0; ij<nCases; ij++)
4107 dR[ij] = (Double_t)((TVector3*) vect3Jet->At(ij))->DeltaR(track3mom);
4108
4109 if((nCases==1 && (dR[0]>rcl)) ||
4110 (nCases==2 && (dR[0]>rcl && dR[1]>rcl)) ||
4111 (nCases==3 && (dR[0]>rcl && dR[1]>rcl && dR[2]>rcl)))
4112 {
4113 templist->Add(track);
4114 nOut++;
4115 }
4116 delete [] dR;
4117 }
4118
67e37e80 4119 // Take tracks randomly
4120 Int_t nScaled = (Int_t) (nOut * areaJet[0] / areaOut + 0.5);
4121 TArrayI* ar = new TArrayI(nOut);
1da9498b 4122
67e37e80 4123 for(Int_t init=0; init<nOut; init++)
4124 (*ar)[init] = init;
1da9498b 4125
67e37e80 4126 Int_t *randIndex = new Int_t[nScaled];
4127 for(Int_t init2=0; init2<nScaled; init2++)
4128 randIndex[init2] = -1;
1da9498b 4129
67e37e80 4130 // Select nScaled different random numbers in nOut
4131 for(Int_t i=0; i<nScaled; i++)
1da9498b 4132 {
67e37e80 4133 Int_t* tmpArr = new Int_t[nOut-i];
4134 Int_t temp = fRandom->Integer(nOut-i);
4135 for(Int_t ind = 0; ind< ar->GetSize()-1; ind++)
1da9498b 4136 {
67e37e80 4137 if(ind<temp) tmpArr[ind] = (*ar)[ind];
4138 else tmpArr[ind] = (*ar)[ind+1];
1da9498b 4139 }
67e37e80 4140 randIndex[i] = (*ar)[temp];
1da9498b 4141
67e37e80 4142 ar->Set(nOut-i-1,tmpArr);
4143
4144 delete [] tmpArr;
4145
4146 }
4147
4148 for(Int_t ipart=0; ipart<nScaled; ipart++)
4149 {
4150 AliVParticle* track = dynamic_cast<AliVParticle*>(templist->At(randIndex[ipart]));
4151 outputlist->Add(track);
4152 sumPt += track->Pt();
4153 }
1da9498b 4154
4155 outputlist->Sort();
4156
1da9498b 4157 delete vect3Jet;
4158 delete templist;
4159 delete [] areaJetLarge;
4160 delete [] areaJet;
67e37e80 4161 delete ar;
4162 delete [] randIndex;
1da9498b 4163
4164}
4165
4166// ________________________________________________________________________________________________________________________________________________________
03d5f485 4167void AliAnalysisTaskFragmentationFunction::GetOutNJetsTracksStat(Int_t nCases, TList* inputlist, TList* outputlist, TList* jetlist, Double_t& sumPt, Double_t &normFactor)
1da9498b 4168{
4169 // List of tracks outside cone around N jet axis
4170 // All particles taken + final scaling factor
4171
4172 sumPt = 0;
4173 Float_t rc = GetFFRadius();
4174 Float_t rcl = GetFFBckgRadius();
4175
4176 // Estimate jet and background areas
4177 Float_t* areaJet = new Float_t[nCases];
4178 Float_t* areaJetLarge = new Float_t[nCases];
4179 Float_t areaFull = (fTrackEtaMax-fTrackEtaMin)*(fTrackPhiMax-fTrackPhiMin);
4180 Float_t areaOut = areaFull;
4181
4182 //estimate jets and background areas
4183 Int_t nOut = 0;
4184 Int_t ijet = 0;
4185 TClonesArray *vect3Jet = new TClonesArray("TVector3",nCases);
4186
4187 for(Int_t ij=0; ij<nCases; ++ij)
4188 {
4189 // Get jet information
4190 AliAODJet* jet = dynamic_cast<AliAODJet*>(jetlist->At(ij));
4191 TVector3 jet3mom;
4192 jet3mom.SetPtEtaPhi(jet->Pt(),jet->Eta(),jet->Phi());
4193 new((*vect3Jet)[ijet]) TVector3((TVector3)jet3mom);
4194 Float_t etaJet = (Float_t)((TVector3*) vect3Jet->At(ij))->Eta();
4195
4196 // Jet area
4197 areaJet[ij] = CalcJetArea(etaJet,rc);
4198
4199 // Area jet larger angle
4200 areaJetLarge[ij] = CalcJetArea(etaJet,rcl);
4201
4202 // Outside jets area
4203 areaOut = areaOut - areaJetLarge[ij];
4204 ijet++;
4205 }
4206
4207 for (Int_t itrack=0; itrack<inputlist->GetSize(); itrack++){
4208
4209 AliVParticle* track = dynamic_cast<AliVParticle*>(inputlist->At(itrack));
4210
4211 Double_t trackMom[3];
4212 track->PxPyPz(trackMom);
4213 TVector3 track3mom(trackMom);
4214
4215 Double_t *dR = new Double_t[nCases];
4216 for(Int_t ij=0; ij<nCases; ij++)
4217 dR[ij] = (Double_t)((TVector3*) vect3Jet->At(ij))->DeltaR(track3mom);
4218
4219 if((nCases==0) ||
4220 (nCases==1 && (dR[0]>rcl)) ||
4221 (nCases==2 && (dR[0]>rcl && dR[1]>rcl)) ||
4222 (nCases==3 && (dR[0]>rcl && dR[1]>rcl && dR[2]>rcl)))
4223 {
4224 outputlist->Add(track);
4225 sumPt += track->Pt();
4226 nOut++;
4227 }
4228 delete [] dR;
4229 }
4230
4231 if(nCases==0) areaJet[0] = TMath::Pi()*rc*rc;
4232 normFactor = (Float_t) 1./(areaJet[0] / areaOut);
4233
4234 outputlist->Sort();
4235
4236 delete vect3Jet;
4237 delete [] areaJetLarge;
4238 delete [] areaJet;
4239
4240}
4241
4242// ______________________________________________________________________________________________________________________________________________________
4243Float_t AliAnalysisTaskFragmentationFunction::CalcJetArea(Float_t etaJet, Float_t rc)
4244{
4245
4246 Float_t detamax = etaJet + rc;
4247 Float_t detamin = etaJet - rc;
4248 Float_t accmax = 0.0; Float_t accmin = 0.0;
4249 if(detamax > fTrackEtaMax){ // sector outside etamax
4250 Float_t h = fTrackEtaMax - etaJet;
4251 accmax = rc*rc*TMath::ACos(h/rc) - h*TMath::Sqrt(rc*rc - h*h);
4252 }
4253 if(detamin < fTrackEtaMin){ // sector outside etamin
4254 Float_t h = fTrackEtaMax + etaJet;
4255 accmin = rc*rc*TMath::ACos(h/rc) - h*TMath::Sqrt(rc*rc - h*h);
4256 }
4257 Float_t areaJet = rc*rc*TMath::Pi() - accmax - accmin;
4258
4259 return areaJet;
4260
4261}
67e37e80 4262
4263// ______________________________________________________________________________________________________________________________________________________
4264void AliAnalysisTaskFragmentationFunction::FillBckgHistos(Int_t type, TList* inputtracklist, TList* inputjetlist, AliAODJet* jet, Float_t leadTrackPt, TLorentzVector* leadTrackV,
4265 AliFragFuncHistos* ffbckghistocuts, AliFragFuncHistos* ffbckghistoleading,
4266 AliFragFuncIntraJetHistos* ijbckghistocuts, AliFragFuncIntraJetHistos* ijbckghistoleading,
4267 AliFragFuncQATrackHistos* qabckghistocuts){
4268
4269 // List of tracks outside jets for background study
4270 TList* tracklistout2jets = new TList();
4271 TList* tracklistout3jets = new TList();
4272 TList* tracklistout2jetsStat = new TList();
4273 TList* tracklistout3jetsStat = new TList();
4274 Double_t sumPtOut2Jets = 0.;
4275 Double_t sumPtOut3Jets = 0.;
4276 Double_t sumPtOut2JetsStat = 0.;
4277 Double_t sumPtOut3JetsStat = 0.;
4278 Double_t normFactor2Jets = 0.;
4279 Double_t normFactor3Jets = 0.;
4280
4281 Int_t nRecJetsCuts = fJetsRecCuts->GetEntries();
4282
4283 if(nRecJetsCuts>1) {
4284 GetOutNJetsTracks(2,inputtracklist, tracklistout2jets, inputjetlist, sumPtOut2Jets);
4285 GetOutNJetsTracksStat(2,inputtracklist, tracklistout2jetsStat, inputjetlist,sumPtOut2JetsStat, normFactor2Jets);
4286 }
4287 if(nRecJetsCuts>2) {
4288 GetOutNJetsTracks(3,inputtracklist, tracklistout3jets, inputjetlist, sumPtOut3Jets);
4289 GetOutNJetsTracksStat(3,inputtracklist, tracklistout3jetsStat, inputjetlist, sumPtOut3JetsStat, normFactor3Jets);
4290 }
4291
4292 if(type==kBckgOutLJ || type==kBckgOutAJ)
4293 {
4294 TList* tracklistoutleading = new TList();
4295 Double_t sumPtOutLeading = 0.;
4296 GetOutNJetsTracks(1,inputtracklist, tracklistoutleading, inputjetlist, sumPtOutLeading);
4297 if(type==kBckgOutLJ) fh1OutLeadingMult->Fill(tracklistoutleading->GetSize());
4298
4299 for(Int_t it=0; it<tracklistoutleading->GetSize(); ++it){
4300
4301 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistoutleading->At(it));
4302 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
4303
4304 Float_t jetPt = jet->Pt();
4305 Float_t trackPt = trackV->Pt();
4306
4307 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
4308
4309 if(type==kBckgOutLJ)
4310 {
4311 ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt);
4312 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
4313
4314 ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt);
4315 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
4316
4317 // Fill track QA for background
4318 qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt);
4319 }
4320
4321 // All cases included
4322 if(nRecJetsCuts==1 && type==kBckgOutAJ)
4323 {
4324 ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
4325 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
4326
4327 ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
4328 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
4329 }
4330 delete trackV;
4331 }
4332 delete tracklistoutleading;
4333 }
4334 if(type==kBckgOutLJStat || type==kBckgOutAJStat)
4335 {
4336 TList* tracklistoutleadingStat = new TList();
4337 Double_t sumPtOutLeadingStat = 0.;
4338 Double_t normFactorLeading = 0.;
4339
4340 GetOutNJetsTracksStat(1,inputtracklist, tracklistoutleadingStat, inputjetlist, sumPtOutLeadingStat, normFactorLeading);
4341
4342 for(Int_t it=0; it<tracklistoutleadingStat->GetSize(); ++it){
4343
4344 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistoutleadingStat->At(it));
4345 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
4346
4347 Float_t jetPt = jet->Pt();
4348 Float_t trackPt = trackV->Pt();
4349
4350 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
4351
4352 // Stat plots
4353 if(type==kBckgOutLJStat)
4354 {
4355 ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactorLeading);
4356 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactorLeading);
4357
4358 ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactorLeading);
4359 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactorLeading);
4360
4361 // Fill track QA for background
4362 // qabckghistocuts->FillTrackQA( trackEta, TVector2::Phi_0_2pi(trackPhi), trackPt);
4363 }
4364
4365 // All cases included
4366 if(nRecJetsCuts==1 && type==kBckgOutAJStat)
4367 {
4368 ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactorLeading);
4369 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactorLeading );
4370
4371 ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactorLeading);
4372 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactorLeading );
4373 }
4374 delete trackV;
4375 }
4376 delete tracklistoutleadingStat;
4377 }
4378
4379 if(type==kBckgPerp)
4380 {
4381 Double_t sumPtPerp = 0.;
4382 TList* tracklistperp = new TList();
4383 GetOutPerpJetTracks(inputtracklist,tracklistperp,jet,GetFFRadius(),sumPtPerp);
4384 fh1PerpMult->Fill(tracklistperp->GetSize());
4385
4386 for(Int_t it=0; it<tracklistperp->GetSize(); ++it){
4387
4388 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistperp->At(it));
4389 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
4390
4391 Float_t jetPt = jet->Pt();
4392 Float_t trackPt = trackV->Pt();
4393
4394 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
4395
4396 ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
4397 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
4398
4399 ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
4400 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
4401
4402 // Fill track QA for background
4403 qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt);
4404
4405 delete trackV;
4406 }
4407 delete tracklistperp;
4408 }
4409
4410 if(type==kBckgOut2J || type==kBckgOutAJ)
4411 {
4412 if(type==kBckgOut2J) fh1Out2JetsMult->Fill(tracklistout2jets->GetSize());
4413 for(Int_t it=0; it<tracklistout2jets->GetSize(); ++it){
4414
4415 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistout2jets->At(it));
4416 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
4417
4418 Float_t jetPt = jet->Pt();
4419 Float_t trackPt = trackV->Pt();
4420
4421 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
4422
4423 if(type==kBckgOut2J)
4424 {
4425 ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
4426 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
4427
4428 ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
4429 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
4430
4431 qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt);
4432 }
4433
4434 // All cases included
4435 if(nRecJetsCuts==2 && type==kBckgOutAJ)
4436 {
4437 ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
4438 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
4439
4440 ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
4441 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
4442 }
4443 delete trackV;
4444 }
4445 }
4446
4447 if(type==kBckgOut2JStat || type==kBckgOutAJStat)
4448 {
4449 for(Int_t it=0; it<tracklistout2jetsStat->GetSize(); ++it){
4450
4451 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistout2jetsStat->At(it));
4452 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
4453
4454 Float_t jetPt = jet->Pt();
4455 Float_t trackPt = trackV->Pt();
4456
4457 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
4458
4459 if(type==kBckgOut2JStat)
4460 {
4461 ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactor2Jets);
4462 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactor2Jets );
4463
4464 ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactor2Jets);
4465 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactor2Jets );
4466
4467 // qabckghistocuts->FillTrackQA( trackEta, TVector2::Phi_0_2pi(trackPhi), trackPt);
4468 }
4469
4470 // All cases included
4471 if(nRecJetsCuts==2 && type==kBckgOutAJStat)
4472 {
4473 ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactor2Jets);
4474 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactor2Jets );
4475
4476 ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactor2Jets);
4477 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactor2Jets );
4478 }
4479 delete trackV;
4480 }
4481 }
4482
4483 if(type==kBckgOut3J || type==kBckgOutAJ)
4484 {
4485 if(type==kBckgOut3J) fh1Out3JetsMult->Fill(tracklistout3jets->GetSize());
4486
4487 for(Int_t it=0; it<tracklistout3jets->GetSize(); ++it){
4488
4489 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistout3jets->At(it));
4490 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
4491
4492 Float_t jetPt = jet->Pt();
4493 Float_t trackPt = trackV->Pt();
4494
4495 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
4496
4497 if(type==kBckgOut3J)
4498 {
4499 ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
4500 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
4501
4502 ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
4503 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
4504
4505 qabckghistocuts->FillTrackQA( trackV->Eta(), TVector2::Phi_0_2pi(trackV->Phi()), trackPt);
4506 }
4507
4508 // All cases included
4509 if(nRecJetsCuts==3 && type==kBckgOutAJ)
4510 {
4511 ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt );
4512 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector() );
4513
4514 ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt );
4515 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV );
4516 }
4517 delete trackV;
4518 }
4519 }
4520
4521 if(type==kBckgOut3JStat || type==kBckgOutAJStat)
4522 {
4523 for(Int_t it=0; it<tracklistout3jetsStat->GetSize(); ++it){
4524
4525 AliVParticle* trackVP = dynamic_cast<AliVParticle*>(tracklistout3jetsStat->At(it));
4526 TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
4527
4528 Float_t jetPt = jet->Pt();
4529 Float_t trackPt = trackV->Pt();
4530
4531 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
4532
4533 if(type==kBckgOut3JStat)
4534 {
4535 ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt,normFactor3Jets);
4536 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactor3Jets);
4537
4538 ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt,normFactor3Jets);
4539 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV, normFactor3Jets);
4540
4541 // qabckghistocuts->FillTrackQA( trackEta, TVector2::Phi_0_2pi(trackPhi), trackPt);
4542 }
4543
4544 // All cases included
4545 if(nRecJetsCuts==3 && type==kBckgOutAJStat)
4546 {
4547 ffbckghistocuts->FillFF( trackPt, jetPt, incrementJetPt, normFactor3Jets );
4548 if(fIJMode) ijbckghistocuts->FillIntraJet( trackV, jet->MomentumVector(), normFactor3Jets);
4549
4550 ffbckghistoleading->FillFF( trackPt, leadTrackPt , incrementJetPt, normFactor3Jets );
4551 if(fIJMode) ijbckghistoleading->FillIntraJet( trackV, leadTrackV,normFactor3Jets );
4552 }
4553 delete trackV;
4554 }
4555 }
4556
4557 if(type==kBckgClusters)
4558 {
4559 // To be implemented
4560 }
4561
4562 delete tracklistout2jets;
4563 delete tracklistout3jets;
4564 delete tracklistout2jetsStat;
4565 delete tracklistout3jetsStat;
4566
4567}