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