07c3e78c |
1 | \r |
1db1733e |
2 | /*************************************************************************\r |
3 | * *\r |
4 | * Task for Fragmentation Function Analysis in PWG4 Jet Task Force Train *\r |
5 | * *\r |
6 | *************************************************************************/\r |
7 | \r |
8 | \r |
9 | /**************************************************************************\r |
10 | * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *\r |
11 | * *\r |
12 | * Author: The ALICE Off-line Project. *\r |
13 | * Contributors are mentioned in the code where appropriate. *\r |
14 | * *\r |
15 | * Permission to use, copy, modify and distribute this software and its *\r |
16 | * documentation strictly for non-commercial purposes is hereby granted *\r |
17 | * without fee, provided that the above copyright notice appears in all *\r |
18 | * copies and that both the copyright notice and this permission notice *\r |
19 | * appear in the supporting documentation. The authors make no claims *\r |
20 | * about the suitability of this software for any purpose. It is *\r |
21 | * provided "as is" without express or implied warranty. *\r |
22 | **************************************************************************/\r |
23 | \r |
24 | /* $Id: */\r |
25 | \r |
26 | \r |
27 | #include "TList.h"\r |
28 | #include "TH1F.h"\r |
29 | #include "TH2F.h"\r |
30 | #include "TString.h"\r |
31 | \r |
32 | #include "AliAODInputHandler.h" \r |
33 | #include "AliAODHandler.h" \r |
34 | #include "AliESDEvent.h"\r |
35 | #include "AliAODMCParticle.h"\r |
36 | #include "AliAODJet.h"\r |
37 | #include "AliGenPythiaEventHeader.h"\r |
38 | #include "AliInputEventHandler.h"\r |
39 | \r |
40 | #include "AliAnalysisHelperJetTasks.h"\r |
41 | #include "AliAnalysisManager.h"\r |
42 | #include "AliAnalysisTaskSE.h"\r |
43 | \r |
44 | #include "AliAnalysisTaskFragmentationFunction.h"\r |
45 | \r |
46 | \r |
47 | ClassImp(AliAnalysisTaskFragmentationFunction)\r |
48 | \r |
49 | //____________________________________________________________________________\r |
50 | AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction()\r |
51 | : AliAnalysisTaskSE()\r |
52 | ,fESD(0)\r |
53 | ,fAOD(0)\r |
54 | ,fMCEvent(0)\r |
55 | ,fBranchRecJets("jets")\r |
56 | ,fBranchGenJets("")\r |
57 | ,fTrackTypeGen(0)\r |
58 | ,fJetTypeGen(0)\r |
59 | ,fFilterMask(0)\r |
60 | ,fTrackPtCut(0)\r |
61 | ,fTrackEtaMin(0)\r |
62 | ,fTrackEtaMax(0)\r |
63 | ,fTrackPhiMin(0)\r |
64 | ,fTrackPhiMax(0)\r |
65 | ,fJetPtCut(0)\r |
66 | ,fJetEtaMin(0)\r |
67 | ,fJetEtaMax(0)\r |
68 | ,fJetPhiMin(0)\r |
69 | ,fJetPhiMax(0)\r |
70 | ,fFFRadius(0)\r |
71 | ,fDijetDeltaPhiCut(0)\r |
72 | ,fDijetInvMassMin(0)\r |
73 | ,fDijetInvMassMax(0)\r |
74 | ,fDijetCDFcut(0)\r |
75 | ,fDijetEMeanMin(0)\r |
76 | ,fDijetEMeanMax(0)\r |
77 | ,fDijetEFractionCut(0)\r |
78 | ,fDijetEFraction(0)\r |
79 | ,fTracksRec(0)\r |
80 | ,fTracksRecCuts(0)\r |
81 | ,fTracksGen(0)\r |
82 | ,fJetsRec(0)\r |
83 | ,fJetsRecCuts(0)\r |
84 | ,fJetsGen(0)\r |
85 | ,fQATrackHistosRec(0)\r |
86 | ,fQATrackHistosRecCuts(0)\r |
87 | ,fQATrackHistosGen(0)\r |
88 | ,fQAJetHistosRec(0)\r |
89 | ,fQAJetHistosRecCuts(0)\r |
90 | ,fQAJetHistosRecCutsLeading(0)\r |
91 | ,fQAJetHistosGen(0)\r |
92 | ,fQAJetHistosGenLeading(0)\r |
93 | ,fFFHistosRecCuts(0)\r |
94 | ,fFFHistosRecLeading(0)\r |
95 | ,fFFHistosRecLeadingTrack(0)\r |
96 | ,fFFHistosGen(0)\r |
97 | ,fFFHistosGenLeading(0)\r |
98 | ,fFFHistosGenLeadingTrack(0)\r |
99 | ,fQATrackHighPtThreshold(0)\r |
100 | ,fFFNBinsJetPt(0) \r |
101 | ,fFFJetPtMin(0) \r |
102 | ,fFFJetPtMax(0)\r |
103 | ,fFFNBinsPt(0) \r |
104 | ,fFFPtMin(0) \r |
105 | ,fFFPtMax(0) \r |
106 | ,fFFNBinsXi(0) \r |
107 | ,fFFXiMin(0) \r |
108 | ,fFFXiMax(0) \r |
109 | ,fFFNBinsZ(0) \r |
110 | ,fFFZMin(0) \r |
111 | ,fFFZMax(0) \r |
112 | ,fQAJetNBinsPt(0) \r |
113 | ,fQAJetPtMin(0) \r |
114 | ,fQAJetPtMax(0) \r |
115 | ,fQAJetNBinsEta(0) \r |
116 | ,fQAJetEtaMin(0) \r |
117 | ,fQAJetEtaMax(0) \r |
118 | ,fQAJetNBinsPhi(0) \r |
119 | ,fQAJetPhiMin(0) \r |
120 | ,fQAJetPhiMax(0) \r |
121 | ,fQATrackNBinsPt(0) \r |
122 | ,fQATrackPtMin(0) \r |
123 | ,fQATrackPtMax(0) \r |
124 | ,fQATrackNBinsEta(0)\r |
125 | ,fQATrackEtaMin(0) \r |
126 | ,fQATrackEtaMax(0) \r |
127 | ,fQATrackNBinsPhi(0)\r |
128 | ,fQATrackPhiMin(0) \r |
129 | ,fQATrackPhiMax(0) \r |
130 | ,fCommonHistList(0)\r |
131 | ,fh1EvtSelection(0)\r |
132 | ,fh1VertexNContributors(0)\r |
133 | ,fh1VertexZ(0)\r |
134 | ,fh1EvtMult(0)\r |
135 | ,fh1nRecJetsCuts(0)\r |
136 | ,fh1nGenJets(0)\r |
137 | {\r |
138 | // default constructor\r |
139 | }\r |
140 | \r |
141 | //__________________________________________________________________________________________\r |
142 | AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const char *name) \r |
143 | : AliAnalysisTaskSE(name)\r |
144 | ,fESD(0)\r |
145 | ,fAOD(0)\r |
146 | ,fMCEvent(0)\r |
147 | ,fBranchRecJets("jets")\r |
148 | ,fBranchGenJets("")\r |
149 | ,fTrackTypeGen(0)\r |
150 | ,fJetTypeGen(0)\r |
151 | ,fFilterMask(0)\r |
152 | ,fTrackPtCut(0)\r |
153 | ,fTrackEtaMin(0)\r |
154 | ,fTrackEtaMax(0)\r |
155 | ,fTrackPhiMin(0)\r |
156 | ,fTrackPhiMax(0)\r |
157 | ,fJetPtCut(0)\r |
158 | ,fJetEtaMin(0)\r |
159 | ,fJetEtaMax(0)\r |
160 | ,fJetPhiMin(0)\r |
161 | ,fJetPhiMax(0)\r |
162 | ,fFFRadius(0)\r |
163 | ,fDijetDeltaPhiCut(0)\r |
164 | ,fDijetInvMassMin(0)\r |
165 | ,fDijetInvMassMax(0)\r |
166 | ,fDijetCDFcut(0)\r |
167 | ,fDijetEMeanMin(0)\r |
168 | ,fDijetEMeanMax(0)\r |
169 | ,fDijetEFractionCut(0)\r |
170 | ,fDijetEFraction(0)\r |
171 | ,fTracksRec(0)\r |
172 | ,fTracksRecCuts(0)\r |
173 | ,fTracksGen(0)\r |
174 | ,fJetsRec(0)\r |
175 | ,fJetsRecCuts(0)\r |
176 | ,fJetsGen(0)\r |
177 | ,fQATrackHistosRec(0)\r |
178 | ,fQATrackHistosRecCuts(0)\r |
179 | ,fQATrackHistosGen(0)\r |
180 | ,fQAJetHistosRec(0)\r |
181 | ,fQAJetHistosRecCuts(0)\r |
182 | ,fQAJetHistosRecCutsLeading(0)\r |
183 | ,fQAJetHistosGen(0)\r |
184 | ,fQAJetHistosGenLeading(0)\r |
185 | ,fFFHistosRecCuts(0)\r |
186 | ,fFFHistosRecLeading(0)\r |
187 | ,fFFHistosRecLeadingTrack(0)\r |
188 | ,fFFHistosGen(0)\r |
189 | ,fFFHistosGenLeading(0)\r |
190 | ,fFFHistosGenLeadingTrack(0)\r |
191 | ,fQATrackHighPtThreshold(0) \r |
192 | ,fFFNBinsJetPt(0) \r |
193 | ,fFFJetPtMin(0) \r |
194 | ,fFFJetPtMax(0)\r |
195 | ,fFFNBinsPt(0) \r |
196 | ,fFFPtMin(0) \r |
197 | ,fFFPtMax(0) \r |
198 | ,fFFNBinsXi(0) \r |
199 | ,fFFXiMin(0) \r |
200 | ,fFFXiMax(0) \r |
201 | ,fFFNBinsZ(0) \r |
202 | ,fFFZMin(0) \r |
203 | ,fFFZMax(0) \r |
204 | ,fQAJetNBinsPt(0) \r |
205 | ,fQAJetPtMin(0) \r |
206 | ,fQAJetPtMax(0) \r |
207 | ,fQAJetNBinsEta(0) \r |
208 | ,fQAJetEtaMin(0) \r |
209 | ,fQAJetEtaMax(0) \r |
210 | ,fQAJetNBinsPhi(0) \r |
211 | ,fQAJetPhiMin(0) \r |
212 | ,fQAJetPhiMax(0) \r |
213 | ,fQATrackNBinsPt(0) \r |
214 | ,fQATrackPtMin(0) \r |
215 | ,fQATrackPtMax(0) \r |
216 | ,fQATrackNBinsEta(0)\r |
217 | ,fQATrackEtaMin(0) \r |
218 | ,fQATrackEtaMax(0) \r |
219 | ,fQATrackNBinsPhi(0)\r |
220 | ,fQATrackPhiMin(0) \r |
221 | ,fQATrackPhiMax(0) \r |
222 | ,fCommonHistList(0)\r |
223 | ,fh1EvtSelection(0)\r |
224 | ,fh1VertexNContributors(0)\r |
225 | ,fh1VertexZ(0)\r |
226 | ,fh1EvtMult(0)\r |
227 | ,fh1nRecJetsCuts(0)\r |
228 | ,fh1nGenJets(0)\r |
229 | {\r |
230 | // constructor\r |
231 | \r |
232 | DefineOutput(1,TList::Class());\r |
233 | \r |
234 | \r |
235 | }\r |
236 | \r |
237 | //__________________________________________________________________________________________________________________________\r |
238 | AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const AliAnalysisTaskFragmentationFunction ©)\r |
239 | : AliAnalysisTaskSE()\r |
240 | ,fESD(copy.fESD)\r |
241 | ,fAOD(copy.fAOD)\r |
242 | ,fMCEvent(copy.fMCEvent)\r |
243 | ,fBranchRecJets(copy.fBranchRecJets)\r |
244 | ,fBranchGenJets(copy.fBranchGenJets)\r |
245 | ,fTrackTypeGen(copy.fTrackTypeGen)\r |
246 | ,fJetTypeGen(copy.fJetTypeGen)\r |
247 | ,fFilterMask(copy.fFilterMask)\r |
248 | ,fTrackPtCut(copy.fTrackPtCut)\r |
249 | ,fTrackEtaMin(copy.fTrackEtaMin)\r |
250 | ,fTrackEtaMax(copy.fTrackEtaMax)\r |
251 | ,fTrackPhiMin(copy.fTrackPhiMin)\r |
252 | ,fTrackPhiMax(copy.fTrackPhiMax)\r |
253 | ,fJetPtCut(copy.fJetPtCut)\r |
254 | ,fJetEtaMin(copy.fJetEtaMin)\r |
255 | ,fJetEtaMax(copy.fJetEtaMax)\r |
256 | ,fJetPhiMin(copy.fJetPhiMin)\r |
257 | ,fJetPhiMax(copy.fJetPhiMax)\r |
258 | ,fFFRadius(copy.fFFRadius)\r |
259 | ,fDijetDeltaPhiCut(copy.fDijetDeltaPhiCut)\r |
260 | ,fDijetInvMassMin(copy.fDijetInvMassMin)\r |
261 | ,fDijetInvMassMax(copy.fDijetInvMassMax)\r |
262 | ,fDijetCDFcut(copy.fDijetCDFcut)\r |
263 | ,fDijetEMeanMin(copy.fDijetEMeanMin)\r |
264 | ,fDijetEMeanMax(copy.fDijetEMeanMax)\r |
265 | ,fDijetEFractionCut(copy.fDijetEFractionCut)\r |
266 | ,fDijetEFraction(copy.fDijetEFraction)\r |
267 | ,fTracksRec(copy.fTracksRec)\r |
268 | ,fTracksRecCuts(copy.fTracksRecCuts)\r |
269 | ,fTracksGen(copy.fTracksGen)\r |
270 | ,fJetsRec(copy.fJetsRec)\r |
271 | ,fJetsRecCuts(copy.fJetsRecCuts)\r |
272 | ,fJetsGen(copy.fJetsGen)\r |
273 | ,fQATrackHistosRec(copy.fQATrackHistosRec)\r |
274 | ,fQATrackHistosRecCuts(copy.fQATrackHistosRecCuts)\r |
275 | ,fQATrackHistosGen(copy.fQATrackHistosGen)\r |
276 | ,fQAJetHistosRec(copy.fQAJetHistosRec)\r |
277 | ,fQAJetHistosRecCuts(copy.fQAJetHistosRecCuts)\r |
278 | ,fQAJetHistosRecCutsLeading(copy.fQAJetHistosRecCutsLeading)\r |
279 | ,fQAJetHistosGen(copy.fQAJetHistosGen)\r |
280 | ,fQAJetHistosGenLeading(copy.fQAJetHistosGenLeading)\r |
281 | ,fFFHistosRecCuts(copy.fFFHistosRecCuts)\r |
282 | ,fFFHistosRecLeading(copy.fFFHistosRecLeading)\r |
283 | ,fFFHistosRecLeadingTrack(copy.fFFHistosRecLeadingTrack)\r |
284 | ,fFFHistosGen(copy.fFFHistosGen)\r |
285 | ,fFFHistosGenLeading(copy.fFFHistosGenLeading)\r |
286 | ,fFFHistosGenLeadingTrack(copy.fFFHistosGenLeadingTrack)\r |
287 | ,fQATrackHighPtThreshold(copy.fQATrackHighPtThreshold) \r |
288 | ,fFFNBinsJetPt(copy.fFFNBinsJetPt) \r |
289 | ,fFFJetPtMin(copy.fFFJetPtMin) \r |
290 | ,fFFJetPtMax(copy.fFFJetPtMax)\r |
291 | ,fFFNBinsPt(copy.fFFNBinsPt) \r |
292 | ,fFFPtMin(copy.fFFPtMin) \r |
293 | ,fFFPtMax(copy.fFFPtMax) \r |
294 | ,fFFNBinsXi(copy.fFFNBinsXi) \r |
295 | ,fFFXiMin(copy.fFFXiMin) \r |
296 | ,fFFXiMax(copy.fFFXiMax) \r |
297 | ,fFFNBinsZ(copy.fFFNBinsZ) \r |
298 | ,fFFZMin(copy.fFFZMin) \r |
299 | ,fFFZMax(copy.fFFZMax) \r |
300 | ,fQAJetNBinsPt(copy.fQAJetNBinsPt) \r |
301 | ,fQAJetPtMin(copy.fQAJetPtMin) \r |
302 | ,fQAJetPtMax(copy.fQAJetPtMax) \r |
303 | ,fQAJetNBinsEta(copy.fQAJetNBinsEta) \r |
304 | ,fQAJetEtaMin(copy.fQAJetEtaMin) \r |
305 | ,fQAJetEtaMax(copy.fQAJetEtaMax) \r |
306 | ,fQAJetNBinsPhi(copy.fQAJetNBinsPhi) \r |
307 | ,fQAJetPhiMin(copy.fQAJetPhiMin) \r |
308 | ,fQAJetPhiMax(copy.fQAJetPhiMax) \r |
309 | ,fQATrackNBinsPt(copy.fQATrackNBinsPt) \r |
310 | ,fQATrackPtMin(copy.fQATrackPtMin) \r |
311 | ,fQATrackPtMax(copy.fQATrackPtMax) \r |
312 | ,fQATrackNBinsEta(copy.fQATrackNBinsEta)\r |
313 | ,fQATrackEtaMin(copy.fQATrackEtaMin) \r |
314 | ,fQATrackEtaMax(copy.fQATrackEtaMax) \r |
315 | ,fQATrackNBinsPhi(copy.fQATrackNBinsPhi)\r |
316 | ,fQATrackPhiMin(copy.fQATrackPhiMin) \r |
317 | ,fQATrackPhiMax(copy.fQATrackPhiMax) \r |
318 | ,fCommonHistList(copy.fCommonHistList)\r |
319 | ,fh1EvtSelection(copy.fh1EvtSelection)\r |
320 | ,fh1VertexNContributors(copy.fh1VertexNContributors)\r |
321 | ,fh1VertexZ(copy.fh1VertexZ)\r |
322 | ,fh1EvtMult(copy.fh1EvtMult)\r |
323 | ,fh1nRecJetsCuts(copy.fh1nRecJetsCuts)\r |
324 | ,fh1nGenJets(copy.fh1nGenJets)\r |
325 | {\r |
326 | // copy constructor\r |
327 | \r |
328 | }\r |
329 | \r |
330 | // _________________________________________________________________________________________________________________________________\r |
331 | AliAnalysisTaskFragmentationFunction& AliAnalysisTaskFragmentationFunction::operator=(const AliAnalysisTaskFragmentationFunction& o)\r |
332 | {\r |
333 | // assignment\r |
334 | \r |
335 | if(this!=&o){\r |
336 | \r |
337 | AliAnalysisTaskSE::operator=(o);\r |
338 | fESD = o.fESD;\r |
339 | fAOD = o.fAOD;\r |
340 | fMCEvent = o.fMCEvent;\r |
341 | fBranchRecJets = o.fBranchRecJets;\r |
342 | fBranchGenJets = o.fBranchGenJets;\r |
343 | fTrackTypeGen = o.fTrackTypeGen;\r |
344 | fJetTypeGen = o.fJetTypeGen;\r |
345 | fFilterMask = o.fFilterMask;\r |
346 | fTrackPtCut = o.fTrackPtCut;\r |
347 | fTrackEtaMin = o.fTrackEtaMin;\r |
348 | fTrackEtaMax = o.fTrackEtaMax;\r |
349 | fTrackPhiMin = o.fTrackPhiMin;\r |
350 | fTrackPhiMax = o.fTrackPhiMax;\r |
351 | fJetPtCut = o.fJetPtCut;\r |
352 | fJetEtaMin = o.fJetEtaMin;\r |
353 | fJetEtaMax = o.fJetEtaMax;\r |
354 | fJetPhiMin = o.fJetPhiMin;\r |
355 | fJetPhiMax = o.fJetPhiMax;\r |
356 | fFFRadius = o.fFFRadius;\r |
357 | fDijetDeltaPhiCut = o.fDijetDeltaPhiCut;\r |
358 | fDijetInvMassMin = o.fDijetInvMassMin;\r |
359 | fDijetInvMassMax = o.fDijetInvMassMax;\r |
360 | fDijetCDFcut = o.fDijetCDFcut;\r |
361 | fDijetEMeanMin = o.fDijetEMeanMin;\r |
362 | fDijetEMeanMax = o.fDijetEMeanMax;\r |
363 | fDijetEFractionCut = o.fDijetEFractionCut;\r |
364 | fDijetEFraction = o.fDijetEFraction;\r |
365 | fTracksRec = o.fTracksRec;\r |
366 | fTracksRecCuts = o.fTracksRecCuts;\r |
367 | fTracksGen = o.fTracksGen;\r |
368 | fJetsRec = o.fJetsRec;\r |
369 | fJetsRecCuts = o.fJetsRecCuts;\r |
370 | fJetsGen = o.fJetsGen;\r |
371 | fQATrackHistosRec = o.fQATrackHistosRec;\r |
372 | fQATrackHistosRecCuts = o.fQATrackHistosRecCuts;\r |
373 | fQATrackHistosGen = o.fQATrackHistosGen;\r |
374 | fQAJetHistosRec = o.fQAJetHistosRec;\r |
375 | fQAJetHistosRecCuts = o.fQAJetHistosRecCuts;\r |
376 | fQAJetHistosRecCutsLeading = o.fQAJetHistosRecCutsLeading;\r |
377 | fQAJetHistosGen = o.fQAJetHistosGen;\r |
378 | fQAJetHistosGenLeading = o.fQAJetHistosGenLeading;\r |
379 | fFFHistosRecCuts = o.fFFHistosRecCuts;\r |
380 | fFFHistosRecLeading = o.fFFHistosRecLeading;\r |
381 | fFFHistosRecLeadingTrack = o.fFFHistosRecLeadingTrack;\r |
382 | fFFHistosGen = o.fFFHistosGen;\r |
383 | fFFHistosGenLeading = o.fFFHistosGenLeading;\r |
384 | fFFHistosGenLeadingTrack = o.fFFHistosGenLeadingTrack;\r |
385 | fQATrackHighPtThreshold = o.fQATrackHighPtThreshold; \r |
386 | fFFNBinsJetPt = o.fFFNBinsJetPt; \r |
387 | fFFJetPtMin = o.fFFJetPtMin; \r |
388 | fFFJetPtMax = o.fFFJetPtMax;\r |
389 | fFFNBinsPt = o.fFFNBinsPt; \r |
390 | fFFPtMin = o.fFFPtMin; \r |
391 | fFFPtMax = o.fFFPtMax; \r |
392 | fFFNBinsXi = o.fFFNBinsXi; \r |
393 | fFFXiMin = o.fFFXiMin; \r |
394 | fFFXiMax = o.fFFXiMax; \r |
395 | fFFNBinsZ = o.fFFNBinsZ; \r |
396 | fFFZMin = o.fFFZMin; \r |
397 | fFFZMax = o.fFFZMax; \r |
398 | fQAJetNBinsPt = o.fQAJetNBinsPt; \r |
399 | fQAJetPtMin = o.fQAJetPtMin; \r |
400 | fQAJetPtMax = o.fQAJetPtMax; \r |
401 | fQAJetNBinsEta = o.fQAJetNBinsEta; \r |
402 | fQAJetEtaMin = o.fQAJetEtaMin; \r |
403 | fQAJetEtaMax = o.fQAJetEtaMax; \r |
404 | fQAJetNBinsPhi = o.fQAJetNBinsPhi; \r |
405 | fQAJetPhiMin = o.fQAJetPhiMin; \r |
406 | fQAJetPhiMax = o.fQAJetPhiMax; \r |
407 | fQATrackNBinsPt = o.fQATrackNBinsPt; \r |
408 | fQATrackPtMin = o.fQATrackPtMin; \r |
409 | fQATrackPtMax = o.fQATrackPtMax; \r |
410 | fQATrackNBinsEta = o.fQATrackNBinsEta;\r |
411 | fQATrackEtaMin = o.fQATrackEtaMin; \r |
412 | fQATrackEtaMax = o.fQATrackEtaMax; \r |
413 | fQATrackNBinsPhi = o.fQATrackNBinsPhi;\r |
414 | fQATrackPhiMin = o.fQATrackPhiMin; \r |
415 | fQATrackPhiMax = o.fQATrackPhiMax; \r |
416 | fCommonHistList = o.fCommonHistList;\r |
417 | fh1EvtSelection = o.fh1EvtSelection;\r |
418 | fh1VertexNContributors = o.fh1VertexNContributors;\r |
419 | fh1VertexZ = o.fh1VertexZ;\r |
420 | fh1EvtMult = o.fh1EvtMult;\r |
421 | fh1nRecJetsCuts = o.fh1nRecJetsCuts;\r |
422 | fh1nGenJets = o.fh1nGenJets; \r |
423 | }\r |
424 | \r |
425 | return *this;\r |
426 | }\r |
427 | \r |
428 | //___________________________________________________________________________\r |
429 | AliAnalysisTaskFragmentationFunction::~AliAnalysisTaskFragmentationFunction()\r |
430 | {\r |
431 | // destructor\r |
432 | \r |
433 | }\r |
434 | \r |
435 | \r |
436 | \r |
437 | //______________________________________________________________________________________________________\r |
438 | AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::AliFragFuncHistos(const char* name, \r |
439 | Int_t nJetPt, Float_t jetPtMin, Float_t jetPtMax, \r |
440 | Int_t nPt, Float_t ptMin, Float_t ptMax,\r |
441 | Int_t nXi, Float_t xiMin, Float_t xiMax,\r |
442 | Int_t nZ , Float_t zMin , Float_t zMax )\r |
443 | : TObject()\r |
444 | ,fNBinsJetPt(nJetPt)\r |
445 | ,fJetPtMin(jetPtMin)\r |
446 | ,fJetPtMax(jetPtMax)\r |
447 | ,fNBinsPt(nPt) \r |
448 | ,fPtMin(ptMin) \r |
449 | ,fPtMax(ptMax) \r |
450 | ,fNBinsXi(nXi) \r |
451 | ,fXiMin(xiMin) \r |
452 | ,fXiMax(xiMax) \r |
453 | ,fNBinsZ(nZ) \r |
454 | ,fZMin(zMin) \r |
455 | ,fZMax(zMax) \r |
456 | ,fh2TrackPt(0)\r |
457 | ,fh2Xi(0)\r |
458 | ,fh2Z(0)\r |
459 | ,fh1JetPt(0)\r |
460 | ,fName(name)\r |
461 | {\r |
462 | // default constructor\r |
463 | \r |
464 | }\r |
465 | \r |
466 | //___________________________________________________________________________\r |
467 | AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::AliFragFuncHistos(const AliFragFuncHistos& copy)\r |
468 | : TObject()\r |
469 | ,fNBinsJetPt(copy.fNBinsJetPt)\r |
470 | ,fJetPtMin(copy.fJetPtMin)\r |
471 | ,fJetPtMax(copy.fJetPtMax)\r |
472 | ,fNBinsPt(copy.fNBinsPt) \r |
473 | ,fPtMin(copy.fPtMin) \r |
474 | ,fPtMax(copy.fPtMax) \r |
475 | ,fNBinsXi(copy.fNBinsXi) \r |
476 | ,fXiMin(copy.fXiMin) \r |
477 | ,fXiMax(copy.fXiMax) \r |
478 | ,fNBinsZ(copy.fNBinsZ) \r |
479 | ,fZMin(copy.fZMin) \r |
480 | ,fZMax(copy.fZMax) \r |
481 | ,fh2TrackPt(copy.fh2TrackPt)\r |
482 | ,fh2Xi(copy.fh2Xi)\r |
483 | ,fh2Z(copy.fh2Z)\r |
484 | ,fh1JetPt(copy.fh1JetPt)\r |
485 | ,fName(copy.fName)\r |
486 | {\r |
487 | // copy constructor\r |
488 | }\r |
489 | \r |
490 | //_______________________________________________________________________________________________________________________________________________________________\r |
491 | AliAnalysisTaskFragmentationFunction::AliFragFuncHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncHistos& o)\r |
492 | {\r |
493 | // assignment\r |
494 | \r |
495 | if(this!=&o){\r |
496 | TObject::operator=(o);\r |
497 | fNBinsJetPt = o.fNBinsJetPt;\r |
498 | fJetPtMin = o.fJetPtMin;\r |
499 | fJetPtMax = o.fJetPtMax;\r |
500 | fNBinsPt = o.fNBinsPt; \r |
501 | fPtMin = o.fPtMin; \r |
502 | fPtMax = o.fPtMax; \r |
503 | fNBinsXi = o.fNBinsXi; \r |
504 | fXiMin = o.fXiMin; \r |
505 | fXiMax = o.fXiMax; \r |
506 | fNBinsZ = o.fNBinsZ; \r |
507 | fZMin = o.fZMin; \r |
508 | fZMax = o.fZMax; \r |
509 | fh2TrackPt = o.fh2TrackPt;\r |
510 | fh2Xi = o.fh2Xi;\r |
511 | fh2Z = o.fh2Z;\r |
512 | fh1JetPt = o.fh1JetPt;\r |
513 | fName = o.fName;\r |
514 | }\r |
515 | \r |
516 | return *this;\r |
517 | }\r |
518 | \r |
519 | //_________________________________________________________\r |
520 | AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::~AliFragFuncHistos()\r |
521 | {\r |
522 | // destructor \r |
523 | \r |
524 | if(fh1JetPt) delete fh1JetPt;\r |
525 | if(fh2TrackPt) delete fh2TrackPt;\r |
526 | if(fh2Xi) delete fh2Xi;\r |
527 | if(fh2Z) delete fh2Z;\r |
528 | }\r |
529 | \r |
530 | //_________________________________________________________________\r |
531 | void AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::DefineHistos()\r |
532 | {\r |
533 | // book FF histos\r |
534 | \r |
535 | fh1JetPt = new TH1F(Form("fh1FFJetPt%s", fName.Data()),"",fNBinsJetPt,fJetPtMin,fJetPtMax);\r |
536 | fh2TrackPt = new TH2F(Form("fh2FFTrackPt%s",fName.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax,fNBinsPt, fPtMin, fPtMax);\r |
537 | fh2Xi = new TH2F(Form("fh2FFXi%s",fName.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsXi, fXiMin, fXiMax);\r |
538 | fh2Z = new TH2F(Form("fh2FFZ%s",fName.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsZ, fZMin, fZMax);\r |
539 | \r |
540 | AliAnalysisTaskFragmentationFunction::SetProperties(fh1JetPt, "p_{T} [GeV/c]", "entries"); \r |
541 | AliAnalysisTaskFragmentationFunction::SetProperties(fh2TrackPt,"jet p_{T} [GeV/c]","p_{T} [GeV/c]","entries");\r |
542 | AliAnalysisTaskFragmentationFunction::SetProperties(fh2Xi,"jet p_{T} [GeV/c]","#xi", "entries");\r |
543 | AliAnalysisTaskFragmentationFunction::SetProperties(fh2Z,"jet p_{T} [GeV/c]","z","entries");\r |
544 | }\r |
545 | \r |
546 | //_______________________________________________________________________________________________________________\r |
547 | void AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::FillFF(Float_t trackPt, Float_t jetPt, Bool_t incrementJetPt)\r |
548 | {\r |
549 | // fill FF\r |
550 | \r |
551 | if(incrementJetPt) fh1JetPt->Fill(jetPt); \r |
552 | fh2TrackPt->Fill(jetPt,trackPt);\r |
553 | \r |
554 | Double_t z = trackPt / jetPt;\r |
555 | Double_t xi = 0;\r |
556 | if(z>0) xi = TMath::Log(1/z);\r |
557 | \r |
558 | fh2Xi->Fill(jetPt,xi);\r |
559 | fh2Z->Fill(jetPt,z);\r |
560 | }\r |
561 | \r |
562 | //_________________________________________________________________________________\r |
563 | void AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::AddToOutput(TList* list) const\r |
564 | {\r |
565 | // add histos to list\r |
566 | \r |
567 | list->Add(fh1JetPt);\r |
568 | \r |
569 | list->Add(fh2TrackPt);\r |
570 | list->Add(fh2Xi);\r |
571 | list->Add(fh2Z);\r |
572 | }\r |
573 | \r |
574 | \r |
575 | //_________________________________________________________________________________________________________\r |
576 | AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::AliFragFuncQAJetHistos(const char* name,\r |
577 | Int_t nPt, Float_t ptMin, Float_t ptMax,\r |
578 | Int_t nEta, Float_t etaMin, Float_t etaMax,\r |
579 | Int_t nPhi, Float_t phiMin, Float_t phiMax)\r |
580 | : TObject()\r |
581 | ,fNBinsPt(nPt)\r |
582 | ,fPtMin(ptMin)\r |
583 | ,fPtMax(ptMax)\r |
584 | ,fNBinsEta(nEta)\r |
585 | ,fEtaMin(etaMin)\r |
586 | ,fEtaMax(etaMax)\r |
587 | ,fNBinsPhi(nPhi)\r |
588 | ,fPhiMin(phiMin)\r |
589 | ,fPhiMax(phiMax)\r |
590 | ,fh2EtaPhi(0)\r |
591 | ,fh1Pt(0)\r |
592 | ,fName(name)\r |
593 | {\r |
594 | // default constructor\r |
595 | }\r |
596 | \r |
597 | //____________________________________________________________________________________\r |
598 | AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::AliFragFuncQAJetHistos(const AliFragFuncQAJetHistos& copy)\r |
599 | : TObject()\r |
600 | ,fNBinsPt(copy.fNBinsPt)\r |
601 | ,fPtMin(copy.fPtMin)\r |
602 | ,fPtMax(copy.fPtMax)\r |
603 | ,fNBinsEta(copy.fNBinsEta)\r |
604 | ,fEtaMin(copy.fEtaMin)\r |
605 | ,fEtaMax(copy.fEtaMax)\r |
606 | ,fNBinsPhi(copy.fNBinsPhi)\r |
607 | ,fPhiMin(copy.fPhiMin)\r |
608 | ,fPhiMax(copy.fPhiMax)\r |
609 | ,fh2EtaPhi(copy.fh2EtaPhi)\r |
610 | ,fh1Pt(copy.fh1Pt)\r |
611 | ,fName(copy.fName)\r |
612 | {\r |
613 | // copy constructor\r |
614 | }\r |
615 | \r |
616 | //________________________________________________________________________________________________________________________________________________________________________\r |
617 | AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos& o)\r |
618 | {\r |
619 | // assignment\r |
620 | \r |
621 | if(this!=&o){\r |
622 | TObject::operator=(o);\r |
623 | fNBinsPt = o.fNBinsPt;\r |
624 | fPtMin = o.fPtMin;\r |
625 | fPtMax = o.fPtMax;\r |
626 | fNBinsEta = o.fNBinsEta;\r |
627 | fEtaMin = o.fEtaMin;\r |
628 | fEtaMax = o.fEtaMax;\r |
629 | fNBinsPhi = o.fNBinsPhi;\r |
630 | fPhiMin = o.fPhiMin;\r |
631 | fPhiMax = o.fPhiMax;\r |
632 | fh2EtaPhi = o.fh2EtaPhi;\r |
633 | fh1Pt = o.fh1Pt;\r |
634 | fName = o.fName;\r |
635 | }\r |
636 | \r |
637 | return *this;\r |
638 | }\r |
639 | \r |
640 | //______________________________________________________________\r |
641 | AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::~AliFragFuncQAJetHistos()\r |
642 | {\r |
643 | // destructor \r |
644 | \r |
645 | if(fh2EtaPhi) delete fh2EtaPhi;\r |
646 | if(fh1Pt) delete fh1Pt;\r |
647 | }\r |
648 | \r |
649 | //____________________________________________________________________\r |
650 | void AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::DefineHistos()\r |
651 | {\r |
652 | // book jet QA histos\r |
653 | \r |
654 | fh2EtaPhi = new TH2F(Form("fh2JetQAEtaPhi%s", fName.Data()), Form("%s: #eta - #phi distribution", fName.Data()), fNBinsEta, fEtaMin, fEtaMax, fNBinsPhi, fPhiMin, fPhiMax);\r |
655 | fh1Pt = new TH1F(Form("fh1JetQAPt%s", fName.Data()), Form("%s: p_{T} distribution", fName.Data()), fNBinsPt, fPtMin, fPtMax);\r |
656 | \r |
657 | AliAnalysisTaskFragmentationFunction::SetProperties(fh2EtaPhi, "#eta", "#phi"); \r |
658 | AliAnalysisTaskFragmentationFunction::SetProperties(fh1Pt, "p_{T} [GeV/c]", "entries");\r |
659 | }\r |
660 | \r |
661 | //____________________________________________________________________________________________________\r |
662 | void AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::FillJetQA(Float_t eta, Float_t phi, Float_t pt)\r |
663 | {\r |
664 | // fill jet QA histos \r |
665 | \r |
666 | fh2EtaPhi->Fill( eta, phi);\r |
667 | fh1Pt->Fill( pt );\r |
668 | }\r |
669 | \r |
670 | //____________________________________________________________________________________\r |
671 | void AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::AddToOutput(TList* list) const \r |
672 | {\r |
673 | // add histos to list\r |
674 | \r |
675 | list->Add(fh2EtaPhi);\r |
676 | list->Add(fh1Pt);\r |
677 | }\r |
678 | \r |
679 | \r |
680 | //___________________________________________________________________________________________________________\r |
681 | AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::AliFragFuncQATrackHistos(const char* name,\r |
682 | Int_t nPt, Float_t ptMin, Float_t ptMax,\r |
683 | Int_t nEta, Float_t etaMin, Float_t etaMax,\r |
684 | Int_t nPhi, Float_t phiMin, Float_t phiMax,\r |
685 | Float_t ptThresh) \r |
686 | : TObject()\r |
687 | ,fNBinsPt(nPt)\r |
688 | ,fPtMin(ptMin)\r |
689 | ,fPtMax(ptMax)\r |
690 | ,fNBinsEta(nEta)\r |
691 | ,fEtaMin(etaMin)\r |
692 | ,fEtaMax(etaMax)\r |
693 | ,fNBinsPhi(nPhi)\r |
694 | ,fPhiMin(phiMin)\r |
695 | ,fPhiMax(phiMax)\r |
696 | ,fHighPtThreshold(ptThresh)\r |
697 | ,fh2EtaPhi(0)\r |
698 | ,fh1Pt(0)\r |
699 | ,fh2HighPtEtaPhi(0)\r |
700 | ,fName(name)\r |
701 | {\r |
702 | // default constructor\r |
703 | }\r |
704 | \r |
705 | //__________________________________________________________________________________________\r |
706 | AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::AliFragFuncQATrackHistos(const AliFragFuncQATrackHistos& copy)\r |
707 | : TObject()\r |
708 | ,fNBinsPt(copy.fNBinsPt)\r |
709 | ,fPtMin(copy.fPtMin)\r |
710 | ,fPtMax(copy.fPtMax)\r |
711 | ,fNBinsEta(copy.fNBinsEta)\r |
712 | ,fEtaMin(copy.fEtaMin)\r |
713 | ,fEtaMax(copy.fEtaMax)\r |
714 | ,fNBinsPhi(copy.fNBinsPhi)\r |
715 | ,fPhiMin(copy.fPhiMin)\r |
716 | ,fPhiMax(copy.fPhiMax)\r |
717 | ,fHighPtThreshold(copy.fHighPtThreshold)\r |
718 | ,fh2EtaPhi(copy.fh2EtaPhi)\r |
719 | ,fh1Pt(copy.fh1Pt)\r |
720 | ,fh2HighPtEtaPhi(copy.fh2HighPtEtaPhi)\r |
721 | ,fName(copy.fName)\r |
722 | {\r |
723 | // copy constructor\r |
724 | }\r |
725 | \r |
726 | // _____________________________________________________________________________________________________________________________________________________________________________\r |
727 | AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos& o)\r |
728 | {\r |
729 | // assignment\r |
730 | \r |
731 | if(this!=&o){\r |
732 | TObject::operator=(o);\r |
733 | fNBinsPt = o.fNBinsPt;\r |
734 | fPtMin = o.fPtMin;\r |
735 | fPtMax = o.fPtMax;\r |
736 | fNBinsEta = o.fNBinsEta;\r |
737 | fEtaMin = o.fEtaMin;\r |
738 | fEtaMax = o.fEtaMax;\r |
739 | fNBinsPhi = o.fNBinsPhi;\r |
740 | fPhiMin = o.fPhiMin;\r |
741 | fPhiMax = o.fPhiMax;\r |
742 | fHighPtThreshold = o.fHighPtThreshold;\r |
743 | fh2EtaPhi = o.fh2EtaPhi;\r |
744 | fh1Pt = o.fh1Pt;\r |
745 | fh2HighPtEtaPhi = o.fh2HighPtEtaPhi;\r |
746 | fName = o.fName;\r |
747 | }\r |
748 | \r |
749 | return *this;\r |
750 | }\r |
751 | \r |
752 | //___________________________________________________________________\r |
753 | AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::~AliFragFuncQATrackHistos()\r |
754 | {\r |
755 | // destructor \r |
756 | \r |
757 | if(fh2EtaPhi) delete fh2EtaPhi;\r |
758 | if(fh2HighPtEtaPhi) delete fh2HighPtEtaPhi;\r |
759 | if(fh1Pt) delete fh1Pt;\r |
760 | }\r |
761 | \r |
762 | //______________________________________________________________________\r |
763 | void AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::DefineHistos()\r |
764 | {\r |
765 | // book track QA histos\r |
766 | \r |
767 | fh2EtaPhi = new TH2F(Form("fh2TrackQAEtaPhi%s", fName.Data()), Form("%s: #eta - #phi distribution", fName.Data()), fNBinsEta, fEtaMin, fEtaMax, fNBinsPhi, fPhiMin, fPhiMax);\r |
768 | fh2HighPtEtaPhi = new TH2F(Form("fh2TrackQAHighPtEtaPhi%s", fName.Data()), Form("%s: #eta - #phi distribution for high-p_{T}", fName.Data()), fNBinsEta, fEtaMin, fEtaMax, fNBinsPhi, fPhiMin, fPhiMax);\r |
769 | fh1Pt = new TH1F(Form("fh1TrackQAPt%s", fName.Data()), Form("%s: p_{T} distribution", fName.Data()), fNBinsPt, fPtMin, fPtMax);\r |
770 | \r |
771 | AliAnalysisTaskFragmentationFunction::SetProperties(fh2EtaPhi, "#eta", "#phi"); \r |
772 | AliAnalysisTaskFragmentationFunction::SetProperties(fh2HighPtEtaPhi, "#eta", "#phi");\r |
773 | AliAnalysisTaskFragmentationFunction::SetProperties(fh1Pt, "p_{T} [GeV/c]", "entries");\r |
774 | }\r |
775 | \r |
776 | //________________________________________________________________________________________________________\r |
777 | void AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::FillTrackQA(Float_t eta, Float_t phi, Float_t pt)\r |
778 | {\r |
779 | // fill track QA histos\r |
780 | \r |
781 | fh2EtaPhi->Fill( eta, phi);\r |
782 | if(pt > fHighPtThreshold) fh2HighPtEtaPhi->Fill( eta, phi);\r |
783 | fh1Pt->Fill( pt ); \r |
784 | }\r |
785 | \r |
786 | //______________________________________________________________________________________\r |
787 | void AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::AddToOutput(TList* list) const\r |
788 | {\r |
789 | // add histos to list\r |
790 | \r |
791 | list->Add(fh2EtaPhi);\r |
792 | list->Add(fh2HighPtEtaPhi);\r |
793 | list->Add(fh1Pt);\r |
794 | }\r |
795 | \r |
796 | //__________________________________________________________________\r |
797 | void AliAnalysisTaskFragmentationFunction::UserCreateOutputObjects()\r |
798 | {\r |
799 | // create output objects\r |
800 | \r |
801 | if(fDebug > 1) Printf("AliAnalysisTaskFragmentationFunction::UserCreateOutputObjects()");\r |
802 | \r |
803 | // create list of tracks and jets \r |
804 | \r |
805 | fTracksRec = new TList();\r |
806 | fTracksRec->SetOwner(kFALSE); \r |
807 | \r |
808 | fTracksRecCuts = new TList();\r |
809 | fTracksRecCuts->SetOwner(kFALSE); \r |
810 | \r |
811 | fTracksGen = new TList();\r |
812 | fTracksGen->SetOwner(kFALSE);\r |
813 | \r |
814 | fJetsRec = new TList();\r |
815 | fJetsRec->SetOwner(kFALSE);\r |
816 | \r |
817 | fJetsRecCuts = new TList();\r |
818 | fJetsRecCuts->SetOwner(kFALSE);\r |
819 | \r |
820 | fJetsGen = new TList();\r |
821 | fJetsGen->SetOwner(kFALSE);\r |
822 | \r |
823 | // fJetsKine = new TList();\r |
824 | // fJetsKine->SetOwner(kTRUE); // delete AOD jets using mom from Kine Tree via TList::Clear()\r |
825 | \r |
826 | \r |
827 | //\r |
828 | // Create histograms / output container\r |
829 | //\r |
830 | \r |
831 | OpenFile(1);\r |
832 | fCommonHistList = new TList();\r |
833 | \r |
834 | Bool_t oldStatus = TH1::AddDirectoryStatus();\r |
835 | TH1::AddDirectory(kFALSE);\r |
836 | \r |
837 | \r |
838 | // Histograms \r |
839 | fh1EvtSelection = new TH1F("fh1EvtSelection", "Event Selection", 6, -0.5, 5.5);\r |
840 | fh1VertexNContributors = new TH1F("fh1VertexNContributors", "Vertex N contributors", 11,-.5, 10.5);\r |
841 | fh1VertexZ = new TH1F("fh1VertexZ", "Vertex z distribution", 30, -15., 15.);\r |
842 | fh1EvtMult = new TH1F("fh1EvtMult","Event multiplicity, track pT cut > 150 MeV/c, |#eta| < 0.9",100,0.,100.);\r |
843 | fh1nRecJetsCuts = new TH1F("fh1nRecJetsCuts","reconstructed jets per event",10,-0.5,9.5);\r |
844 | fh1nGenJets = new TH1F("fh1nGenJets","generated jets per event",10,-0.5,9.5);\r |
845 | \r |
846 | \r |
847 | fQATrackHistosRec = new AliFragFuncQATrackHistos("Rec", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax, fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,\r |
848 | fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax, fQATrackHighPtThreshold);\r |
849 | fQATrackHistosRecCuts = new AliFragFuncQATrackHistos("RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax, fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,\r |
850 | fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax, fQATrackHighPtThreshold);\r |
851 | fQATrackHistosGen = new AliFragFuncQATrackHistos("Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax, fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,\r |
852 | fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax, fQATrackHighPtThreshold);\r |
853 | \r |
854 | \r |
855 | fQAJetHistosRec = new AliFragFuncQAJetHistos("Rec", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax, fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,\r |
856 | fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);\r |
857 | fQAJetHistosRecCuts = new AliFragFuncQAJetHistos("RecCuts", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax, fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,\r |
858 | fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);\r |
859 | fQAJetHistosRecCutsLeading = new AliFragFuncQAJetHistos("RecCutsLeading", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax, fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,\r |
860 | fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);\r |
861 | fQAJetHistosGen = new AliFragFuncQAJetHistos("Gen", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax, fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,\r |
862 | fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);\r |
863 | fQAJetHistosGenLeading = new AliFragFuncQAJetHistos("GenLeading", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax, fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,\r |
864 | fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);\r |
865 | \r |
866 | \r |
867 | fFFHistosRecCuts = new AliFragFuncHistos("RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, fFFNBinsPt, fFFPtMin, fFFPtMax, fFFNBinsXi, fFFXiMin, fFFXiMax, \r |
868 | fFFNBinsZ , fFFZMin , fFFZMax);\r |
869 | fFFHistosRecLeading = new AliFragFuncHistos("RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, fFFNBinsPt, fFFPtMin, fFFPtMax, fFFNBinsXi, fFFXiMin, fFFXiMax, \r |
870 | fFFNBinsZ , fFFZMin , fFFZMax);\r |
871 | fFFHistosRecLeadingTrack = new AliFragFuncHistos("RecLeadingTrack", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, fFFNBinsPt, fFFPtMin, fFFPtMax, fFFNBinsXi, fFFXiMin, fFFXiMax, \r |
872 | fFFNBinsZ , fFFZMin , fFFZMax);\r |
873 | fFFHistosGen = new AliFragFuncHistos("Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, fFFNBinsPt, fFFPtMin, fFFPtMax, fFFNBinsXi, fFFXiMin, fFFXiMax, \r |
874 | fFFNBinsZ , fFFZMin , fFFZMax);\r |
875 | fFFHistosGenLeading = new AliFragFuncHistos("GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, fFFNBinsPt, fFFPtMin, fFFPtMax, fFFNBinsXi, fFFXiMin, fFFXiMax, \r |
876 | fFFNBinsZ , fFFZMin , fFFZMax);\r |
877 | fFFHistosGenLeadingTrack = new AliFragFuncHistos("GenLeadingTrack", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax, fFFNBinsPt, fFFPtMin, fFFPtMax, fFFNBinsXi, fFFXiMin, fFFXiMax, \r |
878 | fFFNBinsZ , fFFZMin , fFFZMax);\r |
879 | \r |
880 | \r |
881 | fQATrackHistosRec->DefineHistos();\r |
882 | fQATrackHistosRecCuts->DefineHistos();\r |
883 | fQATrackHistosGen->DefineHistos();\r |
884 | \r |
885 | fQAJetHistosRec->DefineHistos();\r |
886 | fQAJetHistosRecCuts->DefineHistos();\r |
887 | fQAJetHistosRecCutsLeading->DefineHistos();\r |
888 | fQAJetHistosGen->DefineHistos();\r |
889 | fQAJetHistosGenLeading->DefineHistos();\r |
890 | \r |
891 | fFFHistosRecCuts->DefineHistos();\r |
892 | fFFHistosRecLeading->DefineHistos();\r |
893 | fFFHistosRecLeadingTrack->DefineHistos();\r |
894 | fFFHistosGen->DefineHistos();\r |
895 | fFFHistosGenLeading->DefineHistos();\r |
896 | fFFHistosGenLeadingTrack->DefineHistos();\r |
897 | \r |
898 | \r |
899 | const Int_t saveLevel = 4;\r |
900 | if(saveLevel>0){\r |
901 | fCommonHistList->Add(fh1EvtSelection);\r |
902 | fFFHistosRecCuts->AddToOutput(fCommonHistList);\r |
903 | fFFHistosRecLeading->AddToOutput(fCommonHistList);\r |
904 | fFFHistosRecLeadingTrack->AddToOutput(fCommonHistList);\r |
905 | fFFHistosGen->AddToOutput(fCommonHistList);\r |
906 | fFFHistosGenLeading->AddToOutput(fCommonHistList);\r |
907 | fFFHistosGenLeadingTrack->AddToOutput(fCommonHistList);\r |
908 | }\r |
909 | if(saveLevel>1){\r |
910 | fQATrackHistosRec->AddToOutput(fCommonHistList);\r |
911 | fQATrackHistosRecCuts->AddToOutput(fCommonHistList);\r |
912 | fQATrackHistosGen->AddToOutput(fCommonHistList);\r |
913 | \r |
914 | fQAJetHistosRec->AddToOutput(fCommonHistList);\r |
915 | fQAJetHistosRecCuts->AddToOutput(fCommonHistList);\r |
916 | fQAJetHistosRecCutsLeading->AddToOutput(fCommonHistList);\r |
917 | fQAJetHistosGen->AddToOutput(fCommonHistList);\r |
918 | fQAJetHistosGenLeading->AddToOutput(fCommonHistList);\r |
919 | \r |
920 | fCommonHistList->Add(fh1EvtMult);\r |
921 | fCommonHistList->Add(fh1nRecJetsCuts);\r |
922 | fCommonHistList->Add(fh1nGenJets);\r |
923 | }\r |
924 | if(saveLevel>2){\r |
925 | fCommonHistList->Add(fh1VertexNContributors);\r |
926 | fCommonHistList->Add(fh1VertexZ); \r |
927 | }\r |
928 | if(saveLevel>3){\r |
929 | \r |
930 | }\r |
931 | \r |
932 | // =========== Switch on Sumw2 for all histos ===========\r |
933 | for (Int_t i=0; i<fCommonHistList->GetEntries(); ++i) {\r |
934 | TH1 *h1 = dynamic_cast<TH1*>(fCommonHistList->At(i));\r |
935 | if (h1) h1->Sumw2(); \r |
936 | }\r |
937 | \r |
938 | TH1::AddDirectory(oldStatus);\r |
939 | }\r |
940 | \r |
941 | //_______________________________________________\r |
942 | void AliAnalysisTaskFragmentationFunction::Init()\r |
943 | {\r |
944 | // Initialization\r |
945 | if(fDebug > 1) Printf("AliAnalysisTaskFragmentationFunction::Init()");\r |
946 | \r |
947 | }\r |
948 | \r |
949 | //_____________________________________________________________\r |
950 | void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *) \r |
951 | {\r |
952 | // Main loop\r |
953 | // Called for each event\r |
954 | if(fDebug > 1) Printf("AliAnalysisTaskFragmentationFunction::UserExec()");\r |
955 | \r |
956 | \r |
957 | if(fDebug > 1) Printf("Analysis event #%5d", (Int_t) fEntry);\r |
958 | // Trigger selection\r |
959 | \r |
960 | AliInputEventHandler* inputHandler = (AliInputEventHandler*)\r |
961 | ((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler());\r |
dc1a4401 |
962 | if(inputHandler->IsEventSelected()&AliVEvent::kMB){\r |
1db1733e |
963 | if(fDebug > 1) Printf(" Trigger Selection: event ACCEPTED ... ");\r |
964 | fh1EvtSelection->Fill(1.);\r |
965 | } else {\r |
966 | fh1EvtSelection->Fill(0.);\r |
967 | if(inputHandler->InheritsFrom("AliESDInputHandler")){ // PhysicsSelection only with ESD input\r |
968 | if (fDebug > 1 ) Printf(" Trigger Selection: event REJECTED ... ");\r |
969 | PostData(1, fCommonHistList);\r |
970 | return;\r |
971 | }\r |
972 | }\r |
973 | \r |
974 | fESD = dynamic_cast<AliESDEvent*>(InputEvent());\r |
975 | if(!fESD){\r |
976 | if(fDebug>3) Printf("%s:%d ESDEvent not found in the input", (char*)__FILE__,__LINE__);\r |
977 | }\r |
978 | \r |
979 | fMCEvent = MCEvent();\r |
980 | if(!fMCEvent){\r |
981 | if(fDebug>3) Printf("%s:%d MCEvent not found in the input", (char*)__FILE__,__LINE__);\r |
982 | }\r |
983 | \r |
984 | // get AOD event from input/ouput\r |
985 | TObject* handler = AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler();\r |
986 | if( handler && handler->InheritsFrom("AliAODInputHandler") ) {\r |
987 | fAOD = ((AliAODInputHandler*)handler)->GetEvent();\r |
988 | if (fDebug > 1) Printf("%s:%d AOD event from input", (char*)__FILE__,__LINE__);\r |
989 | }\r |
990 | else {\r |
991 | handler = AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler();\r |
992 | if( handler && handler->InheritsFrom("AliAODHandler") ) {\r |
993 | fAOD = ((AliAODHandler*)handler)->GetAOD();\r |
994 | if (fDebug > 1) Printf("%s:%d AOD event from output", (char*)__FILE__,__LINE__);\r |
995 | }\r |
996 | }\r |
997 | \r |
998 | if(!fAOD){\r |
999 | Printf("%s:%d AODEvent not found", (char*)__FILE__,__LINE__);\r |
1000 | return;\r |
1001 | }\r |
1002 | \r |
1003 | \r |
1004 | // event selection (vertex) *****************************************\r |
1005 | \r |
1006 | AliAODVertex* primVtx = fAOD->GetPrimaryVertex();\r |
1007 | Int_t nTracksPrim = primVtx->GetNContributors();\r |
1008 | fh1VertexNContributors->Fill(nTracksPrim);\r |
1009 | \r |
1010 | if (fDebug > 1) Printf("%s:%d primary vertex selection: %d", (char*)__FILE__,__LINE__,nTracksPrim);\r |
1011 | if(!nTracksPrim){\r |
1012 | if (fDebug > 1) Printf("%s:%d primary vertex selection: event REJECTED...",(char*)__FILE__,__LINE__); \r |
1013 | fh1EvtSelection->Fill(2.);\r |
1014 | PostData(1, fCommonHistList);\r |
1015 | return;\r |
1016 | }\r |
1017 | \r |
1018 | fh1VertexZ->Fill(primVtx->GetZ());\r |
1019 | \r |
1020 | if(TMath::Abs(primVtx->GetZ())>10){\r |
1021 | if (fDebug > 1) Printf("%s:%d primary vertex z = %f: event REJECTED...",(char*)__FILE__,__LINE__,primVtx->GetZ()); \r |
1022 | fh1EvtSelection->Fill(3.);\r |
1023 | PostData(1, fCommonHistList);\r |
1024 | return; \r |
1025 | }\r |
1026 | \r |
1027 | TString primVtxName(primVtx->GetName());\r |
1028 | \r |
1029 | if(primVtxName.CompareTo("TPCVertex",TString::kIgnoreCase) == 1){\r |
1030 | if (fDebug > 1) Printf("%s:%d primary vertex selection: TPC vertex, event REJECTED...",(char*)__FILE__,__LINE__);\r |
1031 | fh1EvtSelection->Fill(4.);\r |
1032 | PostData(1, fCommonHistList);\r |
1033 | return;\r |
1034 | }\r |
1035 | if (fDebug > 1) Printf("%s:%d primary vertex selection: event ACCEPTED ...",(char*)__FILE__,__LINE__); \r |
1036 | fh1EvtSelection->Fill(5.);\r |
1037 | \r |
1038 | \r |
1039 | //___ fetch jets __________________________________________________________________________\r |
1040 | \r |
1041 | Int_t nJ = GetListOfJets(fJetsRec, kJetsRec);\r |
1042 | Int_t nRecJets = 0;\r |
1043 | if(nJ>=0) nRecJets = fJetsRec->GetEntries();\r |
1044 | if(fDebug>2)Printf("%s:%d Selected Rec jets: %d %d",(char*)__FILE__,__LINE__,nJ,nRecJets);\r |
1045 | if(nJ != nRecJets) Printf("%s:%d Mismatch Selected Rec Jets: %d %d",(char*)__FILE__,__LINE__,nJ,nRecJets);\r |
1046 | \r |
1047 | Int_t nJCuts = GetListOfJets(fJetsRecCuts, kJetsRecAcceptance);\r |
1048 | Int_t nRecJetsCuts = 0;\r |
1049 | if(nJCuts>=0) nRecJetsCuts = fJetsRecCuts->GetEntries();\r |
1050 | if(fDebug>2)Printf("%s:%d Selected Rec jets after cuts: %d %d",(char*)__FILE__,__LINE__,nJCuts,nRecJetsCuts);\r |
1051 | if(nRecJetsCuts != nJCuts) Printf("%s:%d Mismatch selected Rec jets after cuts: %d %d",(char*)__FILE__,__LINE__,nJCuts,nRecJetsCuts);\r |
1052 | fh1nRecJetsCuts->Fill(nRecJetsCuts);\r |
1053 | \r |
1054 | \r |
1055 | if(fJetTypeGen==kJetsKine || fJetTypeGen == kJetsKineAcceptance) fJetsGen->SetOwner(kTRUE); // kine aod jets allocated on heap, delete them with TList::Clear() \r |
1056 | Int_t nJGen = GetListOfJets(fJetsGen, fJetTypeGen);\r |
1057 | Int_t nGenJets = 0;\r |
1058 | if(nJGen>=0) nGenJets = fJetsGen->GetEntries();\r |
1059 | if(fDebug>2)Printf("%s:%d Selected Gen jets: %d %d",(char*)__FILE__,__LINE__,nJGen,nGenJets);\r |
1060 | if(nJGen != nGenJets) Printf("%s:%d Mismatch selected Gen jets: %d %d",(char*)__FILE__,__LINE__,nJGen,nGenJets);\r |
1061 | fh1nGenJets->Fill(nGenJets);\r |
1062 | \r |
1063 | \r |
1064 | //____ fetch particles __________________________________________________________\r |
1065 | \r |
1066 | Int_t nT = GetListOfTracks(fTracksRec, kTrackAOD);\r |
1067 | Int_t nRecPart = 0;\r |
1068 | if(nT>=0) nRecPart = fTracksRec->GetEntries();\r |
1069 | if(fDebug>2)Printf("%s:%d Selected Rec tracks: %d %d",(char*)__FILE__,__LINE__,nT,nRecPart);\r |
1070 | if(nRecPart != nT) Printf("%s:%d Mismatch selected Rec tracks: %d %d",(char*)__FILE__,__LINE__,nT,nRecPart);\r |
1071 | \r |
1072 | \r |
1073 | Int_t nTCuts = GetListOfTracks(fTracksRecCuts, kTrackAODCuts);\r |
1074 | Int_t nRecPartCuts = 0;\r |
1075 | if(nTCuts>=0) nRecPartCuts = fTracksRecCuts->GetEntries();\r |
1076 | if(fDebug>2)Printf("%s:%d Selected Rec tracks after cuts: %d %d",(char*)__FILE__,__LINE__,nTCuts,nRecPartCuts);\r |
1077 | if(nRecPartCuts != nTCuts) Printf("%s:%d Mismatch selected Rec tracks after cuts: %d %d",(char*)__FILE__,__LINE__,nTCuts,nRecPartCuts);\r |
1078 | fh1EvtMult->Fill(nRecPartCuts);\r |
1079 | \r |
1080 | \r |
1081 | Int_t nTGen = GetListOfTracks(fTracksGen,fTrackTypeGen);\r |
1082 | Int_t nGenPart = 0;\r |
1083 | if(nTGen>=0) nGenPart = fTracksGen->GetEntries();\r |
1084 | if(fDebug>2)Printf("%s:%d Selected Gen tracks: %d %d",(char*)__FILE__,__LINE__,nTGen,nGenPart);\r |
1085 | if(nGenPart != nTGen) Printf("%s:%d Mismatch selected Gen tracks: %d %d",(char*)__FILE__,__LINE__,nTGen,nGenPart);\r |
1086 | \r |
1087 | \r |
1088 | //____ analysis, fill histos ___________________________________________________\r |
1089 | \r |
1090 | // loop over tracks\r |
1091 | \r |
1092 | for(Int_t it=0; it<nRecPart; ++it){\r |
1093 | AliVParticle *part = dynamic_cast<AliVParticle*>(fTracksRec->At(it));\r |
1094 | fQATrackHistosRec->FillTrackQA( part->Eta(), TVector2::Phi_0_2pi(part->Phi()), part->Pt());\r |
1095 | }\r |
1096 | for(Int_t it=0; it<nRecPartCuts; ++it){\r |
1097 | AliVParticle *part = dynamic_cast<AliVParticle*>(fTracksRecCuts->At(it));\r |
1098 | fQATrackHistosRecCuts->FillTrackQA( part->Eta(), TVector2::Phi_0_2pi(part->Phi()), part->Pt());\r |
1099 | }\r |
1100 | for(Int_t it=0; it<nGenPart; ++it){\r |
1101 | AliVParticle *part = dynamic_cast<AliVParticle*>(fTracksGen->At(it));\r |
1102 | fQATrackHistosGen->FillTrackQA( part->Eta(), TVector2::Phi_0_2pi(part->Phi()), part->Pt());\r |
1103 | }\r |
1104 | \r |
1105 | // loop over jets\r |
1106 | \r |
1107 | for(Int_t ij=0; ij<nRecJets; ++ij){\r |
1108 | \r |
1109 | AliAODJet* jet = dynamic_cast<AliAODJet*>(fJetsRec->At(ij));\r |
1110 | fQAJetHistosRec->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());\r |
1111 | }\r |
1112 | \r |
1113 | \r |
1114 | for(Int_t ij=0; ij<nRecJetsCuts; ++ij){\r |
1115 | \r |
1116 | AliAODJet* jet = dynamic_cast<AliAODJet*>(fJetsRecCuts->At(ij));\r |
1117 | fQAJetHistosRecCuts->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());\r |
1118 | \r |
1119 | if(ij==0){ // leading jet\r |
1120 | \r |
1121 | fQAJetHistosRecCutsLeading->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt() );\r |
1122 | \r |
1123 | TList* jettracklist = new TList();\r |
1124 | Double_t sumPt = 0.;\r |
1125 | Float_t leadTrackPt = 0.;\r |
1126 | \r |
1127 | if(GetFFRadius()<=0){\r |
1128 | GetJetTracksTrackrefs(jettracklist, jet);\r |
1129 | } else {\r |
1130 | GetJetTracksPointing(fTracksRecCuts, jettracklist, jet, GetFFRadius(), sumPt);\r |
1131 | }\r |
1132 | \r |
1133 | for(Int_t it=0; it<jettracklist->GetSize(); ++it){\r |
1134 | Float_t trackPt = (dynamic_cast<AliVParticle*> (jettracklist->At(it)))->Pt();\r |
1135 | Float_t jetPt = jet->Pt();\r |
1136 | Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;\r |
1137 | \r |
1138 | fFFHistosRecCuts->FillFF( trackPt, jetPt, incrementJetPt);\r |
1139 | \r |
1140 | if(it==0){ \r |
1141 | leadTrackPt = trackPt;\r |
1142 | fFFHistosRecLeadingTrack->FillFF( leadTrackPt, jetPt, kTRUE);\r |
1143 | }\r |
1144 | fFFHistosRecLeading->FillFF( trackPt, leadTrackPt , incrementJetPt);\r |
1145 | }\r |
1146 | \r |
1147 | delete jettracklist;\r |
1148 | }\r |
1149 | }\r |
1150 | \r |
1151 | \r |
1152 | for(Int_t ij=0; ij<nGenJets; ++ij){\r |
1153 | \r |
1154 | AliAODJet* jet = dynamic_cast<AliAODJet*>(fJetsGen->At(ij));\r |
1155 | fQAJetHistosGen->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());\r |
1156 | \r |
1157 | if(ij==0){ // leading jet\r |
1158 | \r |
1159 | fQAJetHistosGenLeading->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());\r |
1160 | \r |
1161 | TList* jettracklist = new TList();\r |
1162 | Double_t sumPt = 0.;\r |
1163 | Float_t leadTrackPt = 0.;\r |
1164 | \r |
1165 | if(GetFFRadius()<=0){\r |
1166 | GetJetTracksTrackrefs(jettracklist, jet);\r |
1167 | } else {\r |
1168 | GetJetTracksPointing(fTracksGen, jettracklist, jet, GetFFRadius(), sumPt);\r |
1169 | }\r |
1170 | \r |
1171 | for(Int_t it=0; it<jettracklist->GetSize(); ++it){\r |
1172 | Float_t trackPt = (dynamic_cast<AliVParticle*>(jettracklist->At(it)))->Pt();\r |
1173 | Float_t jetPt = jet->Pt();\r |
1174 | Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;\r |
1175 | \r |
1176 | fFFHistosGen->FillFF( trackPt, jetPt, incrementJetPt);\r |
1177 | \r |
1178 | if(it==0){ \r |
1179 | leadTrackPt = trackPt;\r |
1180 | fFFHistosGenLeadingTrack->FillFF( leadTrackPt, jetPt, kTRUE);\r |
1181 | }\r |
1182 | fFFHistosGenLeading->FillFF( trackPt, leadTrackPt, incrementJetPt);\r |
1183 | }\r |
1184 | \r |
1185 | delete jettracklist;\r |
1186 | }\r |
1187 | }\r |
1188 | \r |
1189 | fTracksRec->Clear();\r |
1190 | fTracksRecCuts->Clear();\r |
1191 | fTracksGen->Clear();\r |
1192 | fJetsRec->Clear();\r |
1193 | fJetsRecCuts->Clear();\r |
1194 | fJetsGen->Clear();\r |
1195 | \r |
1196 | //Post output data.\r |
1197 | PostData(1, fCommonHistList);\r |
1198 | \r |
1199 | }\r |
1200 | \r |
1201 | //______________________________________________________________\r |
1202 | void AliAnalysisTaskFragmentationFunction::Terminate(Option_t *) \r |
1203 | {\r |
1204 | // terminated\r |
1205 | \r |
1206 | if(fDebug > 1) printf("AliAnalysisTaskFragmentationFunction::Terminate() \n");\r |
1207 | } \r |
1208 | \r |
1209 | //_________________________________________________________________________________\r |
1210 | Int_t AliAnalysisTaskFragmentationFunction::GetListOfTracks(TList *list, Int_t type)\r |
1211 | {\r |
1212 | // fill list of tracks selected according to type\r |
1213 | \r |
1214 | if(fDebug > 2) Printf("%s:%d Selecting tracks with %d", (char*)__FILE__,__LINE__,type);\r |
1215 | \r |
1216 | if(!list){\r |
1217 | if(fDebug>1) Printf("%s:%d no input list", (char*)__FILE__,__LINE__);\r |
1218 | return -1;\r |
1219 | }\r |
1220 | \r |
1221 | if(type==kTrackUndef) return -1;\r |
1222 | \r |
1223 | Int_t iCount = 0;\r |
1224 | if(type==kTrackAODCuts || type==kTrackAOD){\r |
1225 | \r |
1226 | // all rec. tracks, esd filter mask, eta range\r |
1227 | if(!fAOD) return -1;\r |
1228 | \r |
1229 | for(Int_t it=0; it<fAOD->GetNumberOfTracks(); ++it){\r |
1230 | AliAODTrack *tr = fAOD->GetTrack(it);\r |
1231 | \r |
1232 | if(type == kTrackAODCuts){\r |
1233 | if((fFilterMask>0)&&!(tr->TestFilterBit(fFilterMask))) continue;\r |
1234 | if(tr->Eta() < fTrackEtaMin || tr->Eta() > fTrackEtaMax) continue;\r |
1235 | if(tr->Phi() < fTrackPhiMin || tr->Phi() > fTrackPhiMax) continue;\r |
1236 | if(tr->Pt() < fTrackPtCut) continue;\r |
1237 | }\r |
1238 | list->Add(tr);\r |
1239 | iCount++;\r |
1240 | }\r |
1241 | }\r |
1242 | else if (type==kTrackKineAll || type==kTrackKineCharged || type==kTrackKineChargedAcceptance){\r |
1243 | // kine particles, all or rather charged\r |
1244 | if(!fMCEvent) return iCount;\r |
1245 | \r |
1246 | for(Int_t it=0; it<fMCEvent->GetNumberOfTracks(); ++it){\r |
1247 | AliMCParticle* part = (AliMCParticle*) fMCEvent->GetTrack(it);\r |
1248 | \r |
1249 | if(type == kTrackKineCharged || type == kTrackKineChargedAcceptance){\r |
1250 | if(part->Charge()==0) continue;\r |
1251 | \r |
1252 | if(type == kTrackKineChargedAcceptance && \r |
1253 | ( part->Eta() < fTrackEtaMin\r |
1254 | || part->Eta() > fTrackEtaMax\r |
1255 | || part->Phi() < fTrackPhiMin\r |
1256 | || part->Phi() > fTrackPhiMax \r |
1257 | || part->Pt() < fTrackPtCut)) continue;\r |
1258 | }\r |
1259 | \r |
1260 | list->Add(part);\r |
1261 | iCount++;\r |
1262 | }\r |
1263 | }\r |
1264 | else if (type==kTrackAODMCCharged || type==kTrackAODMCAll || type==kTrackAODMCChargedAcceptance) {\r |
1265 | // MC particles (from AOD), physical primaries, all or rather charged or rather charged within acceptance\r |
1266 | if(!fAOD) return -1;\r |
1267 | \r |
1268 | TClonesArray *tca = dynamic_cast<TClonesArray*>(fAOD->FindListObject(AliAODMCParticle::StdBranchName()));\r |
1269 | if(!tca)return iCount;\r |
1270 | \r |
1271 | for(int it=0; it<tca->GetEntriesFast(); ++it){\r |
1272 | AliAODMCParticle *part = dynamic_cast<AliAODMCParticle*>(tca->At(it));\r |
1273 | if(!part->IsPhysicalPrimary())continue;\r |
1274 | \r |
1275 | if (type==kTrackAODMCCharged || type==kTrackAODMCChargedAcceptance){\r |
1276 | if(part->Charge()==0) continue;\r |
1277 | if(type==kTrackAODMCChargedAcceptance && \r |
1278 | ( part->Eta() > fTrackEtaMax\r |
1279 | || part->Eta() < fTrackEtaMin\r |
1280 | || part->Phi() > fTrackPhiMax\r |
1281 | || part->Phi() < fTrackPhiMin\r |
1282 | || part->Pt() < fTrackPtCut)) continue;\r |
1283 | }\r |
1284 | \r |
1285 | list->Add(part);\r |
1286 | iCount++;\r |
1287 | }\r |
1288 | }\r |
1289 | \r |
1290 | list->Sort();\r |
1291 | return iCount;\r |
1292 | \r |
1293 | }\r |
1294 | // _______________________________________________________________________________\r |
1295 | Int_t AliAnalysisTaskFragmentationFunction::GetListOfJets(TList *list, Int_t type)\r |
1296 | {\r |
1297 | // fill list of jets selected according to type\r |
1298 | \r |
1299 | if(!list){\r |
1300 | if(fDebug>1) Printf("%s:%d no input list", (char*)__FILE__,__LINE__);\r |
1301 | return -1;\r |
1302 | }\r |
1303 | \r |
1304 | if(type == kJetsRec || type == kJetsRecAcceptance){ // reconstructed jets\r |
1305 | \r |
1306 | if(fBranchRecJets.Length()==0){\r |
1307 | Printf("%s:%d no rec jet branch specified", (char*)__FILE__,__LINE__);\r |
1308 | if(fDebug>1)fAOD->Print();\r |
1309 | return 0;\r |
1310 | }\r |
1311 | \r |
1312 | TClonesArray *aodRecJets = 0x0;\r |
1313 | if(fBranchRecJets.Length()) aodRecJets = dynamic_cast<TClonesArray*>(fAOD->FindListObject(fBranchRecJets.Data()));\r |
1314 | if(!aodRecJets) aodRecJets = dynamic_cast<TClonesArray*>(fAOD->GetList()->FindObject(fBranchRecJets.Data()));\r |
1315 | \r |
1316 | if(!aodRecJets){\r |
1317 | if(fBranchRecJets.Length()) Printf("%s:%d no reconstructed jet array with name %s found", (char*)__FILE__,__LINE__,fBranchRecJets.Data());\r |
1318 | \r |
1319 | if(fDebug>1)fAOD->Print();\r |
1320 | return 0;\r |
1321 | }\r |
1322 | \r |
1323 | Int_t nRecJets = 0;\r |
1324 | \r |
1325 | for(Int_t ij=0; ij<aodRecJets->GetEntries(); ++ij){\r |
1326 | \r |
1327 | AliAODJet *tmp = dynamic_cast<AliAODJet*>(aodRecJets->At(ij));\r |
1328 | if(!tmp) continue;\r |
1329 | \r |
1330 | if( tmp->Pt() < fJetPtCut ) continue;\r |
1331 | if( type == kJetsRecAcceptance &&\r |
1332 | ( tmp->Eta() < fJetEtaMin\r |
1333 | || tmp->Eta() > fJetEtaMax\r |
1334 | || tmp->Phi() < fJetPhiMin\r |
1335 | || tmp->Phi() > fJetPhiMax )) continue;\r |
1336 | \r |
1337 | list->Add(tmp);\r |
1338 | \r |
1339 | nRecJets++;\r |
1340 | }\r |
1341 | \r |
1342 | list->Sort();\r |
1343 | return nRecJets;\r |
1344 | }\r |
1345 | else if(type == kJetsKine || type == kJetsKineAcceptance){\r |
1346 | \r |
1347 | // generated jets\r |
1348 | Int_t nGenJets = 0;\r |
1349 | \r |
1350 | if(!fMCEvent){\r |
1351 | if(fDebug>1) Printf("%s:%d no mcEvent",(char*)__FILE__,__LINE__);\r |
1352 | return 0;\r |
1353 | }\r |
1354 | \r |
1355 | AliGenPythiaEventHeader* pythiaGenHeader = AliAnalysisHelperJetTasks::GetPythiaEventHeader(fMCEvent);\r |
1356 | if(!pythiaGenHeader){\r |
1357 | Printf("%s:%d no pythiaGenHeader found", (char*)__FILE__,__LINE__);\r |
1358 | return 0;\r |
1359 | }\r |
1360 | \r |
1361 | // fetch the pythia generated jets\r |
1362 | for(int ip=0; ip<pythiaGenHeader->NTriggerJets(); ++ip){\r |
1363 | \r |
1364 | Float_t p[4];\r |
1365 | AliAODJet *jet = new AliAODJet();\r |
1366 | pythiaGenHeader->TriggerJet(ip, p);\r |
1367 | jet->SetPxPyPzE(p[0], p[1], p[2], p[3]);\r |
1368 | \r |
1369 | if( type == kJetsKineAcceptance &&\r |
1370 | ( jet->Eta() < fJetEtaMin\r |
1371 | || jet->Eta() > fJetEtaMax\r |
1372 | || jet->Phi() < fJetPhiMin\r |
1373 | || jet->Phi() > fJetPhiMax )) continue;\r |
1374 | \r |
1375 | list->Add(jet);\r |
1376 | nGenJets++;\r |
1377 | }\r |
1378 | list->Sort();\r |
1379 | return nGenJets;\r |
1380 | }\r |
1381 | else if(type == kJetsGen || type == kJetsGenAcceptance ){\r |
1382 | \r |
1383 | if(fBranchGenJets.Length()==0){\r |
1384 | if(fDebug>1) Printf("%s:%d no gen jet branch specified", (char*)__FILE__,__LINE__);\r |
1385 | return 0;\r |
1386 | }\r |
1387 | \r |
1388 | TClonesArray *aodGenJets = 0x0;\r |
1389 | if(fBranchGenJets.Length()) aodGenJets = dynamic_cast<TClonesArray*>(fAOD->FindListObject(fBranchGenJets.Data()));\r |
1390 | if(!aodGenJets) aodGenJets = dynamic_cast<TClonesArray*>(fAOD->GetList()->FindObject(fBranchGenJets.Data()));\r |
1391 | \r |
1392 | if(!aodGenJets){\r |
1393 | if(fDebug>0){\r |
1394 | if(fBranchGenJets.Length()) Printf("%s:%d Generated jet branch %s not found",(char*)__FILE__,__LINE__,fBranchGenJets.Data());\r |
1395 | }\r |
1396 | if(fDebug>1)fAOD->Print();\r |
1397 | return 0;\r |
1398 | }\r |
1399 | \r |
1400 | Int_t nGenJets = 0;\r |
1401 | \r |
1402 | for(Int_t ig=0; ig<aodGenJets->GetEntries(); ++ig){\r |
1403 | \r |
1404 | AliAODJet *tmp = dynamic_cast<AliAODJet*>(aodGenJets->At(ig));\r |
1405 | if(!tmp) continue;\r |
1406 | \r |
1407 | if( tmp->Pt() < fJetPtCut ) continue;\r |
1408 | if( type == kJetsGenAcceptance &&\r |
1409 | ( tmp->Eta() < fJetEtaMin\r |
1410 | || tmp->Eta() > fJetEtaMax\r |
1411 | || tmp->Phi() < fJetPhiMin\r |
1412 | || tmp->Phi() > fJetPhiMax )) continue;\r |
1413 | \r |
1414 | list->Add(tmp);\r |
1415 | \r |
1416 | nGenJets++;\r |
1417 | }\r |
1418 | list->Sort();\r |
1419 | return nGenJets;\r |
1420 | } \r |
1421 | else{\r |
1422 | if(fDebug>0)Printf("%s:%d no such type %d",(char*)__FILE__,__LINE__,type);\r |
1423 | return 0;\r |
1424 | }\r |
1425 | }\r |
1426 | \r |
1427 | \r |
1428 | // __________________________________________________________________________________________\r |
1429 | void AliAnalysisTaskFragmentationFunction::SetProperties(TH1* h,const char* x, const char* y)\r |
1430 | {\r |
1431 | //Set properties of histos (x and y title)\r |
1432 | \r |
1433 | h->SetXTitle(x);\r |
1434 | h->SetYTitle(y);\r |
1435 | h->GetXaxis()->SetTitleColor(1);\r |
1436 | h->GetYaxis()->SetTitleColor(1);\r |
1437 | }\r |
1438 | \r |
1439 | // _________________________________________________________________________________________________________\r |
1440 | void AliAnalysisTaskFragmentationFunction::SetProperties(TH2* h,const char* x, const char* y, const char* z)\r |
1441 | {\r |
1442 | //Set properties of histos (x,y and z title)\r |
1443 | \r |
1444 | h->SetXTitle(x);\r |
1445 | h->SetYTitle(y);\r |
1446 | h->SetZTitle(z);\r |
1447 | h->GetXaxis()->SetTitleColor(1);\r |
1448 | h->GetYaxis()->SetTitleColor(1);\r |
1449 | h->GetZaxis()->SetTitleColor(1);\r |
1450 | }\r |
1451 | \r |
1452 | // ________________________________________________________________________________________________________________________________________________________\r |
1453 | void AliAnalysisTaskFragmentationFunction::GetJetTracksPointing(TList* inputlist, TList* outputlist, AliAODJet* jet, const Double_t radius,Double_t& sumPt)\r |
1454 | {\r |
1455 | // fill list of tracks in cone around jet axis \r |
1456 | \r |
1457 | sumPt = 0;\r |
1458 | \r |
1459 | Double_t jetMom[3];\r |
1460 | jet->PxPyPz(jetMom);\r |
1461 | TVector3 jet3mom(jetMom);\r |
1462 | \r |
1463 | for (Int_t itrack=0; itrack<inputlist->GetSize(); itrack++){\r |
1464 | \r |
1465 | AliVParticle* track = dynamic_cast<AliVParticle*>(inputlist->At(itrack));\r |
1466 | \r |
1467 | Double_t trackMom[3];\r |
1468 | track->PxPyPz(trackMom);\r |
1469 | TVector3 track3mom(trackMom);\r |
1470 | \r |
1471 | Double_t dR = jet3mom.DeltaR(track3mom);\r |
1472 | \r |
1473 | if(dR<radius){\r |
1474 | \r |
1475 | outputlist->Add(track);\r |
1476 | \r |
1477 | sumPt += track->Pt();\r |
1478 | }\r |
1479 | }\r |
1480 | \r |
1481 | outputlist->Sort();\r |
1482 | }\r |
1483 | \r |
1484 | // ___________________________________________________________________________________________\r |
1485 | void AliAnalysisTaskFragmentationFunction::GetJetTracksTrackrefs(TList* list, AliAODJet* jet)\r |
1486 | {\r |
1487 | // list of jet tracks from trackrefs\r |
1488 | \r |
1489 | Int_t nTracks = jet->GetRefTracks()->GetEntriesFast();\r |
1490 | \r |
1491 | for (Int_t itrack=0; itrack<nTracks; itrack++) {\r |
1492 | \r |
1493 | AliVParticle* track = dynamic_cast<AliVParticle*>(jet->GetRefTracks()->At(itrack));\r |
1494 | if(!track){\r |
1495 | AliError("expected ref track not found ");\r |
1496 | continue;\r |
1497 | }\r |
1498 | \r |
1499 | list->Add(track);\r |
1500 | }\r |
1501 | \r |
1502 | list->Sort();\r |
1503 | }\r |