1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
16 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
18 // Modified version of AliAnalysisTaskCheckCascade.cxx.
19 // This is a 'hybrid' output version, in that it uses a classic TTree
20 // ROOT object to store the candidates, plus a couple of histograms filled on
21 // a per-event basis for storing variables too numerous to put in a tree.
23 // --- Adapted to look for lambdas as well, using code from
24 // AliAnalysisTaskCheckPerformanceStrange.cxx
26 // --- Algorithm Description
27 // 1. Loop over primaries in stack to acquire generated charged Xi
28 // 2. Loop over stack to find Cascades, fill TH3Fs "PrimRawPt"s for Efficiency
29 // 3. Perform Physics Selection
30 // 4. Perform Primary Vertex |z|<10cm selection
31 // 5. Perform Primary Vertex NoTPCOnly vertexing selection (>0 contrib.)
32 // 6. Perform Pileup Rejection
34 // 7a. Fill TH3Fs "PrimAnalysisPt" for control purposes only
36 // Please Report Any Bugs!
38 // --- David Dobrigkeit Chinellato
39 // (david.chinellato@gmail.com)
41 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
47 //class AliMCEventHandler;
56 #include <Riostream.h>
62 #include "THnSparse.h"
69 #include "AliESDEvent.h"
70 #include "AliAODEvent.h"
71 #include "AliV0vertexer.h"
72 #include "AliCascadeVertexer.h"
73 #include "AliESDpid.h"
74 #include "AliESDtrack.h"
75 #include "AliESDtrackCuts.h"
76 #include "AliInputEventHandler.h"
77 #include "AliAnalysisManager.h"
78 #include "AliMCEventHandler.h"
79 #include "AliMCEvent.h"
82 #include "AliCFContainer.h"
83 #include "AliMultiplicity.h"
84 #include "AliAODMCParticle.h"
85 #include "AliESDcascade.h"
86 #include "AliAODcascade.h"
87 #include "AliESDUtils.h"
88 #include "AliAnalysisUtils.h"
89 #include "AliGenEventHeader.h"
91 #include "AliAnalysisTaskExtractPerformanceCascade.h"
96 ClassImp(AliAnalysisTaskExtractPerformanceCascade)
98 AliAnalysisTaskExtractPerformanceCascade::AliAnalysisTaskExtractPerformanceCascade()
99 : AliAnalysisTaskSE(), fListHist(0), fTreeCascade(0), fPIDResponse(0), fESDtrackCuts(0), fUtils(0),
100 fkIsNuclear ( kFALSE ),
101 fkSwitchINT7 ( kFALSE ),
102 fpArapidityShift ( 0.465 ),
103 fCentralityEstimator("V0M"),
104 fkpAVertexSelection( kFALSE ),
105 //------------------------------------------------
107 //------------------------------------------------
109 fTreeCascVarCharge(0),
110 fTreeCascVarMassAsXi(0),
111 fTreeCascVarMassAsOmega(0),
114 fTreeCascVarRapMC(0),
115 fTreeCascVarRapXi(0),
116 fTreeCascVarRapOmega(0),
117 fTreeCascVarNegEta(0),
118 fTreeCascVarPosEta(0),
119 fTreeCascVarBachEta(0),
120 fTreeCascVarDCACascDaughters(0),
121 fTreeCascVarDCABachToPrimVtx(0),
122 fTreeCascVarDCAV0Daughters(0),
123 fTreeCascVarDCAV0ToPrimVtx(0),
124 fTreeCascVarDCAPosToPrimVtx(0),
125 fTreeCascVarDCANegToPrimVtx(0),
126 fTreeCascVarCascCosPointingAngle(0),
127 fTreeCascVarCascRadius(0),
128 fTreeCascVarV0Mass(0),
129 fTreeCascVarV0CosPointingAngle(0),
130 fTreeCascVarV0Radius(0),
131 fTreeCascVarLeastNbrClusters(0),
132 fTreeCascVarMultiplicity(0),
133 fTreeCascVarMultiplicityV0A(0),
134 fTreeCascVarMultiplicityZNA(0),
135 fTreeCascVarMultiplicityTRK(0),
136 fTreeCascVarMultiplicitySPD(0),
137 fTreeCascVarMultiplicityMC(0),
138 fTreeCascVarDistOverTotMom(0),
140 fTreeCascVarPIDBachelor(0),
141 fTreeCascVarPIDNegative(0),
142 fTreeCascVarPIDPositive(0),
143 fTreeCascVarPosTransMom(0),
144 fTreeCascVarNegTransMom(0),
145 fTreeCascVarPosTransMomMC(0),
146 fTreeCascVarNegTransMomMC(0),
147 fTreeCascVarNegNSigmaPion(0),
148 fTreeCascVarNegNSigmaProton(0),
149 fTreeCascVarPosNSigmaPion(0),
150 fTreeCascVarPosNSigmaProton(0),
151 fTreeCascVarBachNSigmaPion(0),
152 fTreeCascVarBachNSigmaKaon(0),
154 //------------------------------------------------
156 // --- Filled on an Event-by-event basis
157 //------------------------------------------------
158 fHistV0MultiplicityBeforeTrigSel(0),
159 fHistV0MultiplicityForTrigEvt(0),
160 fHistV0MultiplicityForSelEvt(0),
161 fHistV0MultiplicityForSelEvtNoTPCOnly(0),
162 fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup(0),
163 fHistMultiplicityBeforeTrigSel(0),
164 fHistMultiplicityForTrigEvt(0),
165 fHistMultiplicity(0),
166 fHistMultiplicityNoTPCOnly(0),
167 fHistMultiplicityNoTPCOnlyNoPileup(0),
170 fHistMultiplicityV0ABeforeTrigSel(0),
171 fHistMultiplicityV0AForTrigEvt(0),
172 fHistMultiplicityV0A(0),
173 fHistMultiplicityV0ANoTPCOnly(0),
174 fHistMultiplicityV0ANoTPCOnlyNoPileup(0),
177 fHistMultiplicityZNABeforeTrigSel(0),
178 fHistMultiplicityZNAForTrigEvt(0),
179 fHistMultiplicityZNA(0),
180 fHistMultiplicityZNANoTPCOnly(0),
181 fHistMultiplicityZNANoTPCOnlyNoPileup(0),
184 fHistMultiplicityTRKBeforeTrigSel(0),
185 fHistMultiplicityTRKForTrigEvt(0),
186 fHistMultiplicityTRK(0),
187 fHistMultiplicityTRKNoTPCOnly(0),
188 fHistMultiplicityTRKNoTPCOnlyNoPileup(0),
191 fHistMultiplicitySPDBeforeTrigSel(0),
192 fHistMultiplicitySPDForTrigEvt(0),
193 fHistMultiplicitySPD(0),
194 fHistMultiplicitySPDNoTPCOnly(0),
195 fHistMultiplicitySPDNoTPCOnlyNoPileup(0),
198 //------------------------------------------------
199 // PARTICLE HISTOGRAMS
200 // --- Filled on a Particle-by-Particle basis
201 //------------------------------------------------
202 f3dHistGenPtVsYVsMultXiMinus(0),
203 f3dHistGenPtVsYVsMultXiPlus(0),
204 f3dHistGenPtVsYVsMultOmegaMinus(0),
205 f3dHistGenPtVsYVsMultOmegaPlus(0),
206 f3dHistGenSelectedPtVsYVsMultXiMinus(0),
207 f3dHistGenSelectedPtVsYVsMultXiPlus(0),
208 f3dHistGenSelectedPtVsYVsMultOmegaMinus(0),
209 f3dHistGenSelectedPtVsYVsMultOmegaPlus(0),
210 f3dHistGenPtVsYCMSVsMultXiMinus(0),
211 f3dHistGenPtVsYCMSVsMultXiPlus(0),
212 f3dHistGenPtVsYCMSVsMultOmegaMinus(0),
213 f3dHistGenPtVsYCMSVsMultOmegaPlus(0),
214 f3dHistGenSelectedPtVsYCMSVsMultXiMinus(0),
215 f3dHistGenSelectedPtVsYCMSVsMultXiPlus(0),
216 f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus(0),
217 f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus(0),
221 f3dHistGenPtVsYVsMultMCXiMinus(0),
222 f3dHistGenPtVsYVsMultMCXiPlus(0),
223 f3dHistGenPtVsYVsMultMCOmegaMinus(0),
224 f3dHistGenPtVsYVsMultMCOmegaPlus(0),
225 f3dHistGenSelectedPtVsYVsMultMCXiMinus(0),
226 f3dHistGenSelectedPtVsYVsMultMCXiPlus(0),
227 f3dHistGenSelectedPtVsYVsMultMCOmegaMinus(0),
228 f3dHistGenSelectedPtVsYVsMultMCOmegaPlus(0),
229 f3dHistGenPtVsYCMSVsMultMCXiMinus(0),
230 f3dHistGenPtVsYCMSVsMultMCXiPlus(0),
231 f3dHistGenPtVsYCMSVsMultMCOmegaMinus(0),
232 f3dHistGenPtVsYCMSVsMultMCOmegaPlus(0),
233 f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus(0),
234 f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus(0),
235 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus(0),
236 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus(0),
240 f3dHistGenPtVsYVsMultV0AXiMinus(0),
241 f3dHistGenPtVsYVsMultV0AXiPlus(0),
242 f3dHistGenPtVsYVsMultV0AOmegaMinus(0),
243 f3dHistGenPtVsYVsMultV0AOmegaPlus(0),
244 f3dHistGenSelectedPtVsYVsMultV0AXiMinus(0),
245 f3dHistGenSelectedPtVsYVsMultV0AXiPlus(0),
246 f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus(0),
247 f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus(0),
248 f3dHistGenPtVsYCMSVsMultV0AXiMinus(0),
249 f3dHistGenPtVsYCMSVsMultV0AXiPlus(0),
250 f3dHistGenPtVsYCMSVsMultV0AOmegaMinus(0),
251 f3dHistGenPtVsYCMSVsMultV0AOmegaPlus(0),
252 f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus(0),
253 f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus(0),
254 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus(0),
255 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus(0),
259 f3dHistGenPtVsYVsMultZNAXiMinus(0),
260 f3dHistGenPtVsYVsMultZNAXiPlus(0),
261 f3dHistGenPtVsYVsMultZNAOmegaMinus(0),
262 f3dHistGenPtVsYVsMultZNAOmegaPlus(0),
263 f3dHistGenSelectedPtVsYVsMultZNAXiMinus(0),
264 f3dHistGenSelectedPtVsYVsMultZNAXiPlus(0),
265 f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus(0),
266 f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus(0),
267 f3dHistGenPtVsYCMSVsMultZNAXiMinus(0),
268 f3dHistGenPtVsYCMSVsMultZNAXiPlus(0),
269 f3dHistGenPtVsYCMSVsMultZNAOmegaMinus(0),
270 f3dHistGenPtVsYCMSVsMultZNAOmegaPlus(0),
271 f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus(0),
272 f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus(0),
273 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus(0),
274 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus(0),
278 f3dHistGenPtVsYVsMultTRKXiMinus(0),
279 f3dHistGenPtVsYVsMultTRKXiPlus(0),
280 f3dHistGenPtVsYVsMultTRKOmegaMinus(0),
281 f3dHistGenPtVsYVsMultTRKOmegaPlus(0),
282 f3dHistGenSelectedPtVsYVsMultTRKXiMinus(0),
283 f3dHistGenSelectedPtVsYVsMultTRKXiPlus(0),
284 f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus(0),
285 f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus(0),
286 f3dHistGenPtVsYCMSVsMultTRKXiMinus(0),
287 f3dHistGenPtVsYCMSVsMultTRKXiPlus(0),
288 f3dHistGenPtVsYCMSVsMultTRKOmegaMinus(0),
289 f3dHistGenPtVsYCMSVsMultTRKOmegaPlus(0),
290 f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus(0),
291 f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus(0),
292 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus(0),
293 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus(0),
297 f3dHistGenPtVsYVsMultSPDXiMinus(0),
298 f3dHistGenPtVsYVsMultSPDXiPlus(0),
299 f3dHistGenPtVsYVsMultSPDOmegaMinus(0),
300 f3dHistGenPtVsYVsMultSPDOmegaPlus(0),
301 f3dHistGenSelectedPtVsYVsMultSPDXiMinus(0),
302 f3dHistGenSelectedPtVsYVsMultSPDXiPlus(0),
303 f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus(0),
304 f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus(0),
305 f3dHistGenPtVsYCMSVsMultSPDXiMinus(0),
306 f3dHistGenPtVsYCMSVsMultSPDXiPlus(0),
307 f3dHistGenPtVsYCMSVsMultSPDOmegaMinus(0),
308 f3dHistGenPtVsYCMSVsMultSPDOmegaPlus(0),
309 f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus(0),
310 f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus(0),
311 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus(0),
312 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus(0),
325 AliAnalysisTaskExtractPerformanceCascade::AliAnalysisTaskExtractPerformanceCascade(const char *name)
326 : AliAnalysisTaskSE(name), fListHist(0), fTreeCascade(0), fPIDResponse(0), fESDtrackCuts(0), fUtils(0),
327 fkIsNuclear ( kFALSE ),
328 fkSwitchINT7 ( kFALSE ),
329 fpArapidityShift ( 0.465 ),
330 fCentralityEstimator("V0M"),
331 fkpAVertexSelection( kFALSE ),
332 //------------------------------------------------
334 //------------------------------------------------
336 fTreeCascVarCharge(0),
337 fTreeCascVarMassAsXi(0),
338 fTreeCascVarMassAsOmega(0),
341 fTreeCascVarRapMC(0),
342 fTreeCascVarRapXi(0),
343 fTreeCascVarRapOmega(0),
344 fTreeCascVarNegEta(0),
345 fTreeCascVarPosEta(0),
346 fTreeCascVarBachEta(0),
347 fTreeCascVarDCACascDaughters(0),
348 fTreeCascVarDCABachToPrimVtx(0),
349 fTreeCascVarDCAV0Daughters(0),
350 fTreeCascVarDCAV0ToPrimVtx(0),
351 fTreeCascVarDCAPosToPrimVtx(0),
352 fTreeCascVarDCANegToPrimVtx(0),
353 fTreeCascVarCascCosPointingAngle(0),
354 fTreeCascVarCascRadius(0),
355 fTreeCascVarV0Mass(0),
356 fTreeCascVarV0CosPointingAngle(0),
357 fTreeCascVarV0Radius(0),
358 fTreeCascVarLeastNbrClusters(0),
359 fTreeCascVarMultiplicity(0),
360 fTreeCascVarMultiplicityV0A(0),
361 fTreeCascVarMultiplicityZNA(0),
362 fTreeCascVarMultiplicityTRK(0),
363 fTreeCascVarMultiplicitySPD(0),
364 fTreeCascVarMultiplicityMC(0),
365 fTreeCascVarDistOverTotMom(0),
367 fTreeCascVarPIDBachelor(0),
368 fTreeCascVarPIDNegative(0),
369 fTreeCascVarPIDPositive(0),
370 fTreeCascVarPosTransMom(0),
371 fTreeCascVarNegTransMom(0),
372 fTreeCascVarPosTransMomMC(0),
373 fTreeCascVarNegTransMomMC(0),
374 fTreeCascVarNegNSigmaPion(0),
375 fTreeCascVarNegNSigmaProton(0),
376 fTreeCascVarPosNSigmaPion(0),
377 fTreeCascVarPosNSigmaProton(0),
378 fTreeCascVarBachNSigmaPion(0),
379 fTreeCascVarBachNSigmaKaon(0),
381 //------------------------------------------------
383 // --- Filled on an Event-by-event basis
384 //------------------------------------------------
385 fHistV0MultiplicityBeforeTrigSel(0),
386 fHistV0MultiplicityForTrigEvt(0),
387 fHistV0MultiplicityForSelEvt(0),
388 fHistV0MultiplicityForSelEvtNoTPCOnly(0),
389 fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup(0),
390 fHistMultiplicityBeforeTrigSel(0),
391 fHistMultiplicityForTrigEvt(0),
392 fHistMultiplicity(0),
393 fHistMultiplicityNoTPCOnly(0),
394 fHistMultiplicityNoTPCOnlyNoPileup(0),
397 fHistMultiplicityV0ABeforeTrigSel(0),
398 fHistMultiplicityV0AForTrigEvt(0),
399 fHistMultiplicityV0A(0),
400 fHistMultiplicityV0ANoTPCOnly(0),
401 fHistMultiplicityV0ANoTPCOnlyNoPileup(0),
404 fHistMultiplicityZNABeforeTrigSel(0),
405 fHistMultiplicityZNAForTrigEvt(0),
406 fHistMultiplicityZNA(0),
407 fHistMultiplicityZNANoTPCOnly(0),
408 fHistMultiplicityZNANoTPCOnlyNoPileup(0),
411 fHistMultiplicityTRKBeforeTrigSel(0),
412 fHistMultiplicityTRKForTrigEvt(0),
413 fHistMultiplicityTRK(0),
414 fHistMultiplicityTRKNoTPCOnly(0),
415 fHistMultiplicityTRKNoTPCOnlyNoPileup(0),
418 fHistMultiplicitySPDBeforeTrigSel(0),
419 fHistMultiplicitySPDForTrigEvt(0),
420 fHistMultiplicitySPD(0),
421 fHistMultiplicitySPDNoTPCOnly(0),
422 fHistMultiplicitySPDNoTPCOnlyNoPileup(0),
424 //------------------------------------------------
425 // PARTICLE HISTOGRAMS
426 // --- Filled on a Particle-by-Particle basis
427 //------------------------------------------------
428 f3dHistGenPtVsYVsMultXiMinus(0),
429 f3dHistGenPtVsYVsMultXiPlus(0),
430 f3dHistGenPtVsYVsMultOmegaMinus(0),
431 f3dHistGenPtVsYVsMultOmegaPlus(0),
432 f3dHistGenSelectedPtVsYVsMultXiMinus(0),
433 f3dHistGenSelectedPtVsYVsMultXiPlus(0),
434 f3dHistGenSelectedPtVsYVsMultOmegaMinus(0),
435 f3dHistGenSelectedPtVsYVsMultOmegaPlus(0),
436 f3dHistGenPtVsYCMSVsMultXiMinus(0),
437 f3dHistGenPtVsYCMSVsMultXiPlus(0),
438 f3dHistGenPtVsYCMSVsMultOmegaMinus(0),
439 f3dHistGenPtVsYCMSVsMultOmegaPlus(0),
440 f3dHistGenSelectedPtVsYCMSVsMultXiMinus(0),
441 f3dHistGenSelectedPtVsYCMSVsMultXiPlus(0),
442 f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus(0),
443 f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus(0),
447 f3dHistGenPtVsYVsMultMCXiMinus(0),
448 f3dHistGenPtVsYVsMultMCXiPlus(0),
449 f3dHistGenPtVsYVsMultMCOmegaMinus(0),
450 f3dHistGenPtVsYVsMultMCOmegaPlus(0),
451 f3dHistGenSelectedPtVsYVsMultMCXiMinus(0),
452 f3dHistGenSelectedPtVsYVsMultMCXiPlus(0),
453 f3dHistGenSelectedPtVsYVsMultMCOmegaMinus(0),
454 f3dHistGenSelectedPtVsYVsMultMCOmegaPlus(0),
455 f3dHistGenPtVsYCMSVsMultMCXiMinus(0),
456 f3dHistGenPtVsYCMSVsMultMCXiPlus(0),
457 f3dHistGenPtVsYCMSVsMultMCOmegaMinus(0),
458 f3dHistGenPtVsYCMSVsMultMCOmegaPlus(0),
459 f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus(0),
460 f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus(0),
461 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus(0),
462 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus(0),
466 f3dHistGenPtVsYVsMultV0AXiMinus(0),
467 f3dHistGenPtVsYVsMultV0AXiPlus(0),
468 f3dHistGenPtVsYVsMultV0AOmegaMinus(0),
469 f3dHistGenPtVsYVsMultV0AOmegaPlus(0),
470 f3dHistGenSelectedPtVsYVsMultV0AXiMinus(0),
471 f3dHistGenSelectedPtVsYVsMultV0AXiPlus(0),
472 f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus(0),
473 f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus(0),
474 f3dHistGenPtVsYCMSVsMultV0AXiMinus(0),
475 f3dHistGenPtVsYCMSVsMultV0AXiPlus(0),
476 f3dHistGenPtVsYCMSVsMultV0AOmegaMinus(0),
477 f3dHistGenPtVsYCMSVsMultV0AOmegaPlus(0),
478 f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus(0),
479 f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus(0),
480 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus(0),
481 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus(0),
485 f3dHistGenPtVsYVsMultZNAXiMinus(0),
486 f3dHistGenPtVsYVsMultZNAXiPlus(0),
487 f3dHistGenPtVsYVsMultZNAOmegaMinus(0),
488 f3dHistGenPtVsYVsMultZNAOmegaPlus(0),
489 f3dHistGenSelectedPtVsYVsMultZNAXiMinus(0),
490 f3dHistGenSelectedPtVsYVsMultZNAXiPlus(0),
491 f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus(0),
492 f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus(0),
493 f3dHistGenPtVsYCMSVsMultZNAXiMinus(0),
494 f3dHistGenPtVsYCMSVsMultZNAXiPlus(0),
495 f3dHistGenPtVsYCMSVsMultZNAOmegaMinus(0),
496 f3dHistGenPtVsYCMSVsMultZNAOmegaPlus(0),
497 f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus(0),
498 f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus(0),
499 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus(0),
500 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus(0),
504 f3dHistGenPtVsYVsMultTRKXiMinus(0),
505 f3dHistGenPtVsYVsMultTRKXiPlus(0),
506 f3dHistGenPtVsYVsMultTRKOmegaMinus(0),
507 f3dHistGenPtVsYVsMultTRKOmegaPlus(0),
508 f3dHistGenSelectedPtVsYVsMultTRKXiMinus(0),
509 f3dHistGenSelectedPtVsYVsMultTRKXiPlus(0),
510 f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus(0),
511 f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus(0),
512 f3dHistGenPtVsYCMSVsMultTRKXiMinus(0),
513 f3dHistGenPtVsYCMSVsMultTRKXiPlus(0),
514 f3dHistGenPtVsYCMSVsMultTRKOmegaMinus(0),
515 f3dHistGenPtVsYCMSVsMultTRKOmegaPlus(0),
516 f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus(0),
517 f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus(0),
518 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus(0),
519 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus(0),
523 f3dHistGenPtVsYVsMultSPDXiMinus(0),
524 f3dHistGenPtVsYVsMultSPDXiPlus(0),
525 f3dHistGenPtVsYVsMultSPDOmegaMinus(0),
526 f3dHistGenPtVsYVsMultSPDOmegaPlus(0),
527 f3dHistGenSelectedPtVsYVsMultSPDXiMinus(0),
528 f3dHistGenSelectedPtVsYVsMultSPDXiPlus(0),
529 f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus(0),
530 f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus(0),
531 f3dHistGenPtVsYCMSVsMultSPDXiMinus(0),
532 f3dHistGenPtVsYCMSVsMultSPDXiPlus(0),
533 f3dHistGenPtVsYCMSVsMultSPDOmegaMinus(0),
534 f3dHistGenPtVsYCMSVsMultSPDOmegaPlus(0),
535 f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus(0),
536 f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus(0),
537 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus(0),
538 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus(0),
550 //Set Variables for re-running the cascade vertexers (as done for MS paper)
552 // New Loose : 1st step for the 7 TeV pp analysis
554 fV0Sels[0] = 33. ; // max allowed chi2
555 fV0Sels[1] = 0.02; // min allowed impact parameter for the 1st daughter (LHC09a4 : 0.05)
556 fV0Sels[2] = 0.02; // min allowed impact parameter for the 2nd daughter (LHC09a4 : 0.05)
557 fV0Sels[3] = 2.0 ; // max allowed DCA between the daughter tracks (LHC09a4 : 0.5)
558 fV0Sels[4] = 0.95; // min allowed cosine of V0's pointing angle (LHC09a4 : 0.99)
559 fV0Sels[5] = 1.0 ; // min radius of the fiducial volume (LHC09a4 : 0.2)
560 fV0Sels[6] = 100. ; // max radius of the fiducial volume (LHC09a4 : 100.0)
562 fCascSels[0] = 33. ; // max allowed chi2 (same as PDC07)
563 fCascSels[1] = 0.05 ; // min allowed V0 impact parameter (PDC07 : 0.05 / LHC09a4 : 0.025 )
564 fCascSels[2] = 0.010; // "window" around the Lambda mass (PDC07 : 0.008 / LHC09a4 : 0.010 )
565 fCascSels[3] = 0.03 ; // min allowed bachelor's impact parameter (PDC07 : 0.035 / LHC09a4 : 0.025 )
566 fCascSels[4] = 2.0 ; // max allowed DCA between the V0 and the bachelor (PDC07 : 0.1 / LHC09a4 : 0.2 )
567 fCascSels[5] = 0.95 ; // min allowed cosine of the cascade pointing angle (PDC07 : 0.9985 / LHC09a4 : 0.998 )
568 fCascSels[6] = 0.4 ; // min radius of the fiducial volume (PDC07 : 0.9 / LHC09a4 : 0.2 )
569 fCascSels[7] = 100. ; // max radius of the fiducial volume (PDC07 : 100 / LHC09a4 : 100 )
571 // Output slot #0 writes into a TList container (Cascade)
572 DefineOutput(1, TList::Class());
573 DefineOutput(2, TTree::Class());
577 AliAnalysisTaskExtractPerformanceCascade::~AliAnalysisTaskExtractPerformanceCascade()
579 //------------------------------------------------
581 //------------------------------------------------
591 //cleanup esd track cuts object too...
593 delete fESDtrackCuts;
603 //________________________________________________________________________
604 void AliAnalysisTaskExtractPerformanceCascade::UserCreateOutputObjects()
609 //------------------------------------------------
611 fTreeCascade = new TTree("fTreeCascade","CascadeCandidates");
613 //------------------------------------------------
614 // fTreeCascade Branch definitions - Cascade Tree
615 //------------------------------------------------
617 //------------------------------------------------
618 // fTreeCascade Branch definitions
619 //------------------------------------------------
621 //-----------BASIC-INFO---------------------------
622 /* 1*/ fTreeCascade->Branch("fTreeCascVarCharge",&fTreeCascVarCharge,"fTreeCascVarCharge/I");
623 /* 2*/ fTreeCascade->Branch("fTreeCascVarMassAsXi",&fTreeCascVarMassAsXi,"fTreeCascVarMassAsXi/F");
624 /* 3*/ fTreeCascade->Branch("fTreeCascVarMassAsOmega",&fTreeCascVarMassAsOmega,"fTreeCascVarMassAsOmega/F");
625 /* 4*/ fTreeCascade->Branch("fTreeCascVarPt",&fTreeCascVarPt,"fTreeCascVarPt/F");
626 /* 5*/ fTreeCascade->Branch("fTreeCascVarPtMC",&fTreeCascVarPtMC,"fTreeCascVarPtMC/F");
627 /* 6*/ fTreeCascade->Branch("fTreeCascVarRapXi",&fTreeCascVarRapXi,"fTreeCascVarRapXi/F");
628 /* 7*/ fTreeCascade->Branch("fTreeCascVarRapMC",&fTreeCascVarRapMC,"fTreeCascVarRapMC/F");
629 /* 8*/ fTreeCascade->Branch("fTreeCascVarRapOmega",&fTreeCascVarRapOmega,"fTreeCascVarRapOmega/F");
630 /* 9*/ fTreeCascade->Branch("fTreeCascVarNegEta",&fTreeCascVarNegEta,"fTreeCascVarNegEta/F");
631 /*10*/ fTreeCascade->Branch("fTreeCascVarPosEta",&fTreeCascVarPosEta,"fTreeCascVarPosEta/F");
632 /*11*/ fTreeCascade->Branch("fTreeCascVarBachEta",&fTreeCascVarBachEta,"fTreeCascVarBachEta/F");
633 //-----------INFO-FOR-CUTS------------------------
634 /*12*/ fTreeCascade->Branch("fTreeCascVarDCACascDaughters",&fTreeCascVarDCACascDaughters,"fTreeCascVarDCACascDaughters/F");
635 /*13*/ fTreeCascade->Branch("fTreeCascVarDCABachToPrimVtx",&fTreeCascVarDCABachToPrimVtx,"fTreeCascVarDCABachToPrimVtx/F");
636 /*14*/ fTreeCascade->Branch("fTreeCascVarDCAV0Daughters",&fTreeCascVarDCAV0Daughters,"fTreeCascVarDCAV0Daughters/F");
637 /*15*/ fTreeCascade->Branch("fTreeCascVarDCAV0ToPrimVtx",&fTreeCascVarDCAV0ToPrimVtx,"fTreeCascVarDCAV0ToPrimVtx/F");
638 /*16*/ fTreeCascade->Branch("fTreeCascVarDCAPosToPrimVtx",&fTreeCascVarDCAPosToPrimVtx,"fTreeCascVarDCAPosToPrimVtx/F");
639 /*17*/ fTreeCascade->Branch("fTreeCascVarDCANegToPrimVtx",&fTreeCascVarDCANegToPrimVtx,"fTreeCascVarDCANegToPrimVtx/F");
640 /*18*/ fTreeCascade->Branch("fTreeCascVarCascCosPointingAngle",&fTreeCascVarCascCosPointingAngle,"fTreeCascVarCascCosPointingAngle/F");
641 /*19*/ fTreeCascade->Branch("fTreeCascVarCascRadius",&fTreeCascVarCascRadius,"fTreeCascVarCascRadius/F");
642 /*20*/ fTreeCascade->Branch("fTreeCascVarV0Mass",&fTreeCascVarV0Mass,"fTreeCascVarV0Mass/F");
643 /*21*/ fTreeCascade->Branch("fTreeCascVarV0CosPointingAngle",&fTreeCascVarV0CosPointingAngle,"fTreeCascVarV0CosPointingAngle/F");
644 /*22*/ fTreeCascade->Branch("fTreeCascVarV0Radius",&fTreeCascVarV0Radius,"fTreeCascVarV0Radius/F");
645 /*23*/ fTreeCascade->Branch("fTreeCascVarLeastNbrClusters",&fTreeCascVarLeastNbrClusters,"fTreeCascVarLeastNbrClusters/I");
646 //-----------MULTIPLICITY-INFO--------------------
647 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicity",&fTreeCascVarMultiplicity,"fTreeCascVarMultiplicity/I");
648 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicityV0A",&fTreeCascVarMultiplicityV0A,"fTreeCascVarMultiplicityV0A/I");
649 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicityZNA",&fTreeCascVarMultiplicityZNA,"fTreeCascVarMultiplicityZNA/I");
650 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicityTRK",&fTreeCascVarMultiplicityTRK,"fTreeCascVarMultiplicityTRK/I");
651 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicitySPD",&fTreeCascVarMultiplicitySPD,"fTreeCascVarMultiplicitySPD/I");
652 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicityMC",&fTreeCascVarMultiplicityMC,"fTreeCascVarMultiplicityMC/I");
653 //-----------DECAY-LENGTH-INFO--------------------
654 /*25*/ fTreeCascade->Branch("fTreeCascVarDistOverTotMom",&fTreeCascVarDistOverTotMom,"fTreeCascVarDistOverTotMom/F");
655 //-----------MC-PID-------------------------------
656 /*26*/ fTreeCascade->Branch("fTreeCascVarPID",&fTreeCascVarPID,"fTreeCascVarPID/I");
657 /*27*/ fTreeCascade->Branch("fTreeCascVarPIDBachelor",&fTreeCascVarPIDBachelor,"fTreeCascVarPIDBachelor/I");
658 /*28*/ fTreeCascade->Branch("fTreeCascVarPIDNegative",&fTreeCascVarPIDNegative,"fTreeCascVarPIDNegative/I");
659 /*29*/ fTreeCascade->Branch("fTreeCascVarPIDPositive",&fTreeCascVarPIDPositive,"fTreeCascVarPIDPositive/I");
660 /*30*/ fTreeCascade->Branch("fTreeCascVarPosTransMom",&fTreeCascVarPosTransMom,"fTreeCascVarPosTransMom/F");
661 /*31*/ fTreeCascade->Branch("fTreeCascVarNegTransMom",&fTreeCascVarNegTransMom,"fTreeCascVarNegTransMom/F");
662 /*32*/ fTreeCascade->Branch("fTreeCascVarPosTransMomMC",&fTreeCascVarPosTransMomMC,"fTreeCascVarPosTransMomMC/F");
663 /*33*/ fTreeCascade->Branch("fTreeCascVarNegTransMomMC",&fTreeCascVarNegTransMomMC,"fTreeCascVarNegTransMomMC/F");
664 //------------------------------------------------
665 /*34*/ fTreeCascade->Branch("fTreeCascVarNegNSigmaPion",&fTreeCascVarNegNSigmaPion,"fTreeCascVarNegNSigmaPion/F");
666 /*35*/ fTreeCascade->Branch("fTreeCascVarNegNSigmaProton",&fTreeCascVarNegNSigmaProton,"fTreeCascVarNegNSigmaProton/F");
667 /*36*/ fTreeCascade->Branch("fTreeCascVarPosNSigmaPion",&fTreeCascVarPosNSigmaPion,"fTreeCascVarPosNSigmaPion/F");
668 /*37*/ fTreeCascade->Branch("fTreeCascVarPosNSigmaProton",&fTreeCascVarPosNSigmaProton,"fTreeCascVarPosNSigmaProton/F");
669 /*38*/ fTreeCascade->Branch("fTreeCascVarBachNSigmaPion",&fTreeCascVarBachNSigmaPion,"fTreeCascVarBachNSigmaPion/F");
670 /*39*/ fTreeCascade->Branch("fTreeCascVarBachNSigmaKaon",&fTreeCascVarBachNSigmaKaon,"fTreeCascVarBachNSigmaKaon/F");
672 //------------------------------------------------
673 // Particle Identification Setup
674 //------------------------------------------------
676 AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
677 AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
678 fPIDResponse = inputHandler->GetPIDResponse();
682 if(! fESDtrackCuts ){
683 fESDtrackCuts = new AliESDtrackCuts();
686 fUtils = new AliAnalysisUtils();
689 //------------------------------------------------
690 // V0 Multiplicity Histograms
691 //------------------------------------------------
695 fListHist = new TList();
696 fListHist->SetOwner(); // See http://root.cern.ch/root/html/TCollection.html#TCollection:SetOwner
699 if(! fHistV0MultiplicityBeforeTrigSel) {
700 fHistV0MultiplicityBeforeTrigSel = new TH1F("fHistV0MultiplicityBeforeTrigSel",
701 "V0s per event (before Trig. Sel.);Nbr of V0s/Evt;Events",
703 fListHist->Add(fHistV0MultiplicityBeforeTrigSel);
706 if(! fHistV0MultiplicityForTrigEvt) {
707 fHistV0MultiplicityForTrigEvt = new TH1F("fHistV0MultiplicityForTrigEvt",
708 "V0s per event (for triggered evt);Nbr of V0s/Evt;Events",
710 fListHist->Add(fHistV0MultiplicityForTrigEvt);
713 if(! fHistV0MultiplicityForSelEvt) {
714 fHistV0MultiplicityForSelEvt = new TH1F("fHistV0MultiplicityForSelEvt",
715 "V0s per event;Nbr of V0s/Evt;Events",
717 fListHist->Add(fHistV0MultiplicityForSelEvt);
720 if(! fHistV0MultiplicityForSelEvtNoTPCOnly) {
721 fHistV0MultiplicityForSelEvtNoTPCOnly = new TH1F("fHistV0MultiplicityForSelEvtNoTPCOnly",
722 "V0s per event;Nbr of V0s/Evt;Events",
724 fListHist->Add(fHistV0MultiplicityForSelEvtNoTPCOnly);
726 if(! fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup) {
727 fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup = new TH1F("fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup",
728 "V0s per event;Nbr of V0s/Evt;Events",
730 fListHist->Add(fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup);
733 //------------------------------------------------
734 // Track Multiplicity Histograms
735 //------------------------------------------------
737 if(! fHistMultiplicityBeforeTrigSel) {
738 fHistMultiplicityBeforeTrigSel = new TH1F("fHistMultiplicityBeforeTrigSel",
739 "Tracks per event;Nbr of Tracks;Events",
741 fListHist->Add(fHistMultiplicityBeforeTrigSel);
743 if(! fHistMultiplicityForTrigEvt) {
744 fHistMultiplicityForTrigEvt = new TH1F("fHistMultiplicityForTrigEvt",
745 "Tracks per event;Nbr of Tracks;Events",
747 fListHist->Add(fHistMultiplicityForTrigEvt);
749 if(! fHistMultiplicity) {
750 fHistMultiplicity = new TH1F("fHistMultiplicity",
751 "Tracks per event;Nbr of Tracks;Events",
753 fListHist->Add(fHistMultiplicity);
755 if(! fHistMultiplicityNoTPCOnly) {
756 fHistMultiplicityNoTPCOnly = new TH1F("fHistMultiplicityNoTPCOnly",
757 "Tracks per event;Nbr of Tracks;Events",
759 fListHist->Add(fHistMultiplicityNoTPCOnly);
761 if(! fHistMultiplicityNoTPCOnlyNoPileup) {
762 fHistMultiplicityNoTPCOnlyNoPileup = new TH1F("fHistMultiplicityNoTPCOnlyNoPileup",
763 "Tracks per event;Nbr of Tracks;Events",
765 fListHist->Add(fHistMultiplicityNoTPCOnlyNoPileup);
769 //V0A Centrality (if PbPb / pPb)
770 if(! fHistMultiplicityV0ABeforeTrigSel) {
771 fHistMultiplicityV0ABeforeTrigSel = new TH1F("fHistMultiplicityV0ABeforeTrigSel",
772 "Centrality Distribution: V0A;V0A Centrality;Events",
774 fListHist->Add(fHistMultiplicityV0ABeforeTrigSel);
776 if(! fHistMultiplicityV0AForTrigEvt) {
777 fHistMultiplicityV0AForTrigEvt = new TH1F("fHistMultiplicityV0AForTrigEvt",
778 "Centrality Distribution: V0A;V0A Centrality;Events",
780 fListHist->Add(fHistMultiplicityV0AForTrigEvt);
782 if(! fHistMultiplicityV0A) {
783 fHistMultiplicityV0A = new TH1F("fHistMultiplicityV0A",
784 "Centrality Distribution: V0A;V0A Centrality;Events",
786 fListHist->Add(fHistMultiplicityV0A);
788 if(! fHistMultiplicityV0ANoTPCOnly) {
789 fHistMultiplicityV0ANoTPCOnly = new TH1F("fHistMultiplicityV0ANoTPCOnly",
790 "Centrality Distribution: V0A;V0A Centrality;Events",
792 fListHist->Add(fHistMultiplicityV0ANoTPCOnly);
794 if(! fHistMultiplicityV0ANoTPCOnlyNoPileup) {
795 fHistMultiplicityV0ANoTPCOnlyNoPileup = new TH1F("fHistMultiplicityV0ANoTPCOnlyNoPileup",
796 "Centrality Distribution: V0A;V0A Centrality;Events",
798 fListHist->Add(fHistMultiplicityV0ANoTPCOnlyNoPileup);
801 //ZNA Centrality (if PbPb / pPb)
802 if(! fHistMultiplicityZNABeforeTrigSel) {
803 fHistMultiplicityZNABeforeTrigSel = new TH1F("fHistMultiplicityZNABeforeTrigSel",
804 "Centrality Distribution: ZNA;ZNA Centrality;Events",
806 fListHist->Add(fHistMultiplicityZNABeforeTrigSel);
808 if(! fHistMultiplicityZNAForTrigEvt) {
809 fHistMultiplicityZNAForTrigEvt = new TH1F("fHistMultiplicityZNAForTrigEvt",
810 "Centrality Distribution: ZNA;ZNA Centrality;Events",
812 fListHist->Add(fHistMultiplicityZNAForTrigEvt);
814 if(! fHistMultiplicityZNA) {
815 fHistMultiplicityZNA = new TH1F("fHistMultiplicityZNA",
816 "Centrality Distribution: ZNA;ZNA Centrality;Events",
818 fListHist->Add(fHistMultiplicityZNA);
820 if(! fHistMultiplicityZNANoTPCOnly) {
821 fHistMultiplicityZNANoTPCOnly = new TH1F("fHistMultiplicityZNANoTPCOnly",
822 "Centrality Distribution: ZNA;ZNA Centrality;Events",
824 fListHist->Add(fHistMultiplicityZNANoTPCOnly);
826 if(! fHistMultiplicityZNANoTPCOnlyNoPileup) {
827 fHistMultiplicityZNANoTPCOnlyNoPileup = new TH1F("fHistMultiplicityZNANoTPCOnlyNoPileup",
828 "Centrality Distribution: ZNA;ZNA Centrality;Events",
830 fListHist->Add(fHistMultiplicityZNANoTPCOnlyNoPileup);
833 //TRK Centrality (if PbPb / pPb)
834 if(! fHistMultiplicityTRKBeforeTrigSel) {
835 fHistMultiplicityTRKBeforeTrigSel = new TH1F("fHistMultiplicityTRKBeforeTrigSel",
836 "Centrality Distribution: TRK;TRK Centrality;Events",
838 fListHist->Add(fHistMultiplicityTRKBeforeTrigSel);
840 if(! fHistMultiplicityTRKForTrigEvt) {
841 fHistMultiplicityTRKForTrigEvt = new TH1F("fHistMultiplicityTRKForTrigEvt",
842 "Centrality Distribution: TRK;TRK Centrality;Events",
844 fListHist->Add(fHistMultiplicityTRKForTrigEvt);
846 if(! fHistMultiplicityTRK) {
847 fHistMultiplicityTRK = new TH1F("fHistMultiplicityTRK",
848 "Centrality Distribution: TRK;TRK Centrality;Events",
850 fListHist->Add(fHistMultiplicityTRK);
852 if(! fHistMultiplicityTRKNoTPCOnly) {
853 fHistMultiplicityTRKNoTPCOnly = new TH1F("fHistMultiplicityTRKNoTPCOnly",
854 "Centrality Distribution: TRK;TRK Centrality;Events",
856 fListHist->Add(fHistMultiplicityTRKNoTPCOnly);
858 if(! fHistMultiplicityTRKNoTPCOnlyNoPileup) {
859 fHistMultiplicityTRKNoTPCOnlyNoPileup = new TH1F("fHistMultiplicityTRKNoTPCOnlyNoPileup",
860 "Centrality Distribution: TRK;TRK Centrality;Events",
862 fListHist->Add(fHistMultiplicityTRKNoTPCOnlyNoPileup);
865 //SPD Centrality (if PbPb / pPb)
866 if(! fHistMultiplicitySPDBeforeTrigSel) {
867 fHistMultiplicitySPDBeforeTrigSel = new TH1F("fHistMultiplicitySPDBeforeTrigSel",
868 "Centrality Distribution: SPD;SPD Centrality;Events",
870 fListHist->Add(fHistMultiplicitySPDBeforeTrigSel);
872 if(! fHistMultiplicitySPDForTrigEvt) {
873 fHistMultiplicitySPDForTrigEvt = new TH1F("fHistMultiplicitySPDForTrigEvt",
874 "Centrality Distribution: SPD;SPD Centrality;Events",
876 fListHist->Add(fHistMultiplicitySPDForTrigEvt);
878 if(! fHistMultiplicitySPD) {
879 fHistMultiplicitySPD = new TH1F("fHistMultiplicitySPD",
880 "Centrality Distribution: SPD;SPD Centrality;Events",
882 fListHist->Add(fHistMultiplicitySPD);
884 if(! fHistMultiplicitySPDNoTPCOnly) {
885 fHistMultiplicitySPDNoTPCOnly = new TH1F("fHistMultiplicitySPDNoTPCOnly",
886 "Centrality Distribution: SPD;SPD Centrality;Events",
888 fListHist->Add(fHistMultiplicitySPDNoTPCOnly);
890 if(! fHistMultiplicitySPDNoTPCOnlyNoPileup) {
891 fHistMultiplicitySPDNoTPCOnlyNoPileup = new TH1F("fHistMultiplicitySPDNoTPCOnlyNoPileup",
892 "Centrality Distribution: SPD;SPD Centrality;Events",
894 fListHist->Add(fHistMultiplicitySPDNoTPCOnlyNoPileup);
900 //------------------------------------------------
901 // Generated Particle Histograms
902 //------------------------------------------------
904 Int_t lCustomNBins = 200;
905 Double_t lCustomPtUpperLimit = 20;
906 Int_t lCustomNBinsMultiplicity = 100;
908 //----------------------------------
909 // Raw Generated (Pre-physics-selection)
910 //----------------------------------
912 //--------------------------------------------------------------------------------------
913 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
915 if(! f3dHistGenPtVsYVsMultXiMinus) {
916 f3dHistGenPtVsYVsMultXiMinus = new TH3F( "f3dHistGenPtVsYVsMultXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
917 fListHist->Add(f3dHistGenPtVsYVsMultXiMinus);
919 if(! f3dHistGenPtVsYVsMultXiPlus) {
920 f3dHistGenPtVsYVsMultXiPlus = new TH3F( "f3dHistGenPtVsYVsMultXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
921 fListHist->Add(f3dHistGenPtVsYVsMultXiPlus);
923 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
925 if(! f3dHistGenPtVsYVsMultOmegaMinus) {
926 f3dHistGenPtVsYVsMultOmegaMinus = new TH3F( "f3dHistGenPtVsYVsMultOmegaMinus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
927 fListHist->Add(f3dHistGenPtVsYVsMultOmegaMinus);
929 if(! f3dHistGenPtVsYVsMultOmegaPlus) {
930 f3dHistGenPtVsYVsMultOmegaPlus = new TH3F( "f3dHistGenPtVsYVsMultOmegaPlus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
931 fListHist->Add(f3dHistGenPtVsYVsMultOmegaPlus);
934 //All generated cascades, YCMS
936 if(! f3dHistGenPtVsYCMSVsMultXiMinus) {
937 f3dHistGenPtVsYCMSVsMultXiMinus = new TH3F( "f3dHistGenPtVsYCMSVsMultXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
938 fListHist->Add(f3dHistGenPtVsYCMSVsMultXiMinus);
940 if(! f3dHistGenPtVsYCMSVsMultXiPlus) {
941 f3dHistGenPtVsYCMSVsMultXiPlus = new TH3F( "f3dHistGenPtVsYCMSVsMultXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
942 fListHist->Add(f3dHistGenPtVsYCMSVsMultXiPlus);
944 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
946 if(! f3dHistGenPtVsYCMSVsMultOmegaMinus) {
947 f3dHistGenPtVsYCMSVsMultOmegaMinus = new TH3F( "f3dHistGenPtVsYCMSVsMultOmegaMinus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
948 fListHist->Add(f3dHistGenPtVsYCMSVsMultOmegaMinus);
950 if(! f3dHistGenPtVsYCMSVsMultOmegaPlus) {
951 f3dHistGenPtVsYCMSVsMultOmegaPlus = new TH3F( "f3dHistGenPtVsYCMSVsMultOmegaPlus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
952 fListHist->Add(f3dHistGenPtVsYCMSVsMultOmegaPlus);
956 //--------------------------------------------------------------------------------------
957 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
959 if(! f3dHistGenSelectedPtVsYVsMultXiMinus) {
960 f3dHistGenSelectedPtVsYVsMultXiMinus = new TH3F( "f3dHistGenSelectedPtVsYVsMultXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
961 fListHist->Add(f3dHistGenSelectedPtVsYVsMultXiMinus);
963 if(! f3dHistGenSelectedPtVsYVsMultXiPlus) {
964 f3dHistGenSelectedPtVsYVsMultXiPlus = new TH3F( "f3dHistGenSelectedPtVsYVsMultXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
965 fListHist->Add(f3dHistGenSelectedPtVsYVsMultXiPlus);
967 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
969 if(! f3dHistGenSelectedPtVsYVsMultOmegaMinus) {
970 f3dHistGenSelectedPtVsYVsMultOmegaMinus = new TH3F( "f3dHistGenSelectedPtVsYVsMultOmegaMinus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
971 fListHist->Add(f3dHistGenSelectedPtVsYVsMultOmegaMinus);
973 if(! f3dHistGenSelectedPtVsYVsMultOmegaPlus) {
974 f3dHistGenSelectedPtVsYVsMultOmegaPlus = new TH3F( "f3dHistGenSelectedPtVsYVsMultOmegaPlus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
975 fListHist->Add(f3dHistGenSelectedPtVsYVsMultOmegaPlus);
978 //ANALYSIS level Cascades, YCMS
981 if(! f3dHistGenSelectedPtVsYCMSVsMultXiMinus) {
982 f3dHistGenSelectedPtVsYCMSVsMultXiMinus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
983 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultXiMinus);
985 if(! f3dHistGenSelectedPtVsYCMSVsMultXiPlus) {
986 f3dHistGenSelectedPtVsYCMSVsMultXiPlus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
987 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultXiPlus);
989 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
991 if(! f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus) {
992 f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
993 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus);
995 if(! f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus) {
996 f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
997 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus);
1000 //======================================================================================
1001 //--------------------------------------------------------------------------------------
1002 // True Generated (For Multiplicity Unfolding)
1003 //--------------------------------------------------------------------------------------
1004 //======================================================================================
1006 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1008 if(! f3dHistGenPtVsYVsMultMCXiMinus) {
1009 f3dHistGenPtVsYVsMultMCXiMinus = new TH3F( "f3dHistGenPtVsYVsMultMCXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1010 fListHist->Add(f3dHistGenPtVsYVsMultMCXiMinus);
1012 if(! f3dHistGenPtVsYVsMultMCXiPlus) {
1013 f3dHistGenPtVsYVsMultMCXiPlus = new TH3F( "f3dHistGenPtVsYVsMultMCXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1014 fListHist->Add(f3dHistGenPtVsYVsMultMCXiPlus);
1016 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1018 if(! f3dHistGenPtVsYVsMultMCOmegaMinus) {
1019 f3dHistGenPtVsYVsMultMCOmegaMinus = new TH3F( "f3dHistGenPtVsYVsMultMCOmegaMinus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1020 fListHist->Add(f3dHistGenPtVsYVsMultMCOmegaMinus);
1022 if(! f3dHistGenPtVsYVsMultMCOmegaPlus) {
1023 f3dHistGenPtVsYVsMultMCOmegaPlus = new TH3F( "f3dHistGenPtVsYVsMultMCOmegaPlus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1024 fListHist->Add(f3dHistGenPtVsYVsMultMCOmegaPlus);
1027 //All generated cascades, YCMS
1029 if(! f3dHistGenPtVsYCMSVsMultMCXiMinus) {
1030 f3dHistGenPtVsYCMSVsMultMCXiMinus = new TH3F( "f3dHistGenPtVsYCMSVsMultMCXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1031 fListHist->Add(f3dHistGenPtVsYCMSVsMultMCXiMinus);
1033 if(! f3dHistGenPtVsYCMSVsMultMCXiPlus) {
1034 f3dHistGenPtVsYCMSVsMultMCXiPlus = new TH3F( "f3dHistGenPtVsYCMSVsMultMCXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1035 fListHist->Add(f3dHistGenPtVsYCMSVsMultMCXiPlus);
1037 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1039 if(! f3dHistGenPtVsYCMSVsMultMCOmegaMinus) {
1040 f3dHistGenPtVsYCMSVsMultMCOmegaMinus = new TH3F( "f3dHistGenPtVsYCMSVsMultMCOmegaMinus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1041 fListHist->Add(f3dHistGenPtVsYCMSVsMultMCOmegaMinus);
1043 if(! f3dHistGenPtVsYCMSVsMultMCOmegaPlus) {
1044 f3dHistGenPtVsYCMSVsMultMCOmegaPlus = new TH3F( "f3dHistGenPtVsYCMSVsMultMCOmegaPlus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1045 fListHist->Add(f3dHistGenPtVsYCMSVsMultMCOmegaPlus);
1049 //--------------------------------------------------------------------------------------
1050 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1052 if(! f3dHistGenSelectedPtVsYVsMultMCXiMinus) {
1053 f3dHistGenSelectedPtVsYVsMultMCXiMinus = new TH3F( "f3dHistGenSelectedPtVsYVsMultMCXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1054 fListHist->Add(f3dHistGenSelectedPtVsYVsMultMCXiMinus);
1056 if(! f3dHistGenSelectedPtVsYVsMultMCXiPlus) {
1057 f3dHistGenSelectedPtVsYVsMultMCXiPlus = new TH3F( "f3dHistGenSelectedPtVsYVsMultMCXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1058 fListHist->Add(f3dHistGenSelectedPtVsYVsMultMCXiPlus);
1060 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1062 if(! f3dHistGenSelectedPtVsYVsMultMCOmegaMinus) {
1063 f3dHistGenSelectedPtVsYVsMultMCOmegaMinus = new TH3F( "f3dHistGenSelectedPtVsYVsMultMCOmegaMinus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1064 fListHist->Add(f3dHistGenSelectedPtVsYVsMultMCOmegaMinus);
1066 if(! f3dHistGenSelectedPtVsYVsMultMCOmegaPlus) {
1067 f3dHistGenSelectedPtVsYVsMultMCOmegaPlus = new TH3F( "f3dHistGenSelectedPtVsYVsMultMCOmegaPlus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1068 fListHist->Add(f3dHistGenSelectedPtVsYVsMultMCOmegaPlus);
1071 //ANALYSIS level Cascades, YCMS
1074 if(! f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus) {
1075 f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1076 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus);
1078 if(! f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus) {
1079 f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1080 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus);
1082 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1084 if(! f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus) {
1085 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1086 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus);
1088 if(! f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus) {
1089 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1090 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus);
1093 //======================================================================================
1094 //--------------------------------------------------------------------------------------
1096 //--------------------------------------------------------------------------------------
1097 //======================================================================================
1099 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1101 if(! f3dHistGenPtVsYVsMultV0AXiMinus) {
1102 f3dHistGenPtVsYVsMultV0AXiMinus = new TH3F( "f3dHistGenPtVsYVsMultV0AXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1103 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultV0AXiMinus);
1105 if(! f3dHistGenPtVsYVsMultV0AXiPlus) {
1106 f3dHistGenPtVsYVsMultV0AXiPlus = new TH3F( "f3dHistGenPtVsYVsMultV0AXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1107 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultV0AXiPlus);
1109 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1111 if(! f3dHistGenPtVsYVsMultV0AOmegaMinus) {
1112 f3dHistGenPtVsYVsMultV0AOmegaMinus = new TH3F( "f3dHistGenPtVsYVsMultV0AOmegaMinus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1113 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultV0AOmegaMinus);
1115 if(! f3dHistGenPtVsYVsMultV0AOmegaPlus) {
1116 f3dHistGenPtVsYVsMultV0AOmegaPlus = new TH3F( "f3dHistGenPtVsYVsMultV0AOmegaPlus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1117 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultV0AOmegaPlus);
1120 //All generated cascades, YCMS
1122 if(! f3dHistGenPtVsYCMSVsMultV0AXiMinus) {
1123 f3dHistGenPtVsYCMSVsMultV0AXiMinus = new TH3F( "f3dHistGenPtVsYCMSVsMultV0AXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1124 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultV0AXiMinus);
1126 if(! f3dHistGenPtVsYCMSVsMultV0AXiPlus) {
1127 f3dHistGenPtVsYCMSVsMultV0AXiPlus = new TH3F( "f3dHistGenPtVsYCMSVsMultV0AXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1128 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultV0AXiPlus);
1130 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1132 if(! f3dHistGenPtVsYCMSVsMultV0AOmegaMinus) {
1133 f3dHistGenPtVsYCMSVsMultV0AOmegaMinus = new TH3F( "f3dHistGenPtVsYCMSVsMultV0AOmegaMinus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1134 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultV0AOmegaMinus);
1136 if(! f3dHistGenPtVsYCMSVsMultV0AOmegaPlus) {
1137 f3dHistGenPtVsYCMSVsMultV0AOmegaPlus = new TH3F( "f3dHistGenPtVsYCMSVsMultV0AOmegaPlus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1138 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultV0AOmegaPlus);
1142 //--------------------------------------------------------------------------------------
1143 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1145 if(! f3dHistGenSelectedPtVsYVsMultV0AXiMinus) {
1146 f3dHistGenSelectedPtVsYVsMultV0AXiMinus = new TH3F( "f3dHistGenSelectedPtVsYVsMultV0AXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1147 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultV0AXiMinus);
1149 if(! f3dHistGenSelectedPtVsYVsMultV0AXiPlus) {
1150 f3dHistGenSelectedPtVsYVsMultV0AXiPlus = new TH3F( "f3dHistGenSelectedPtVsYVsMultV0AXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1151 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultV0AXiPlus);
1153 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1155 if(! f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus) {
1156 f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus = new TH3F( "f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1157 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus);
1159 if(! f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus) {
1160 f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus = new TH3F( "f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1161 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus);
1164 //ANALYSIS level Cascades, YCMS
1167 if(! f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus) {
1168 f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1169 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus);
1171 if(! f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus) {
1172 f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1173 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus);
1175 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1177 if(! f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus) {
1178 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1179 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus);
1181 if(! f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus) {
1182 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1183 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus);
1187 //======================================================================================
1188 //--------------------------------------------------------------------------------------
1190 //--------------------------------------------------------------------------------------
1191 //======================================================================================
1193 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1195 if(! f3dHistGenPtVsYVsMultZNAXiMinus) {
1196 f3dHistGenPtVsYVsMultZNAXiMinus = new TH3F( "f3dHistGenPtVsYVsMultZNAXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1197 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultZNAXiMinus);
1199 if(! f3dHistGenPtVsYVsMultZNAXiPlus) {
1200 f3dHistGenPtVsYVsMultZNAXiPlus = new TH3F( "f3dHistGenPtVsYVsMultZNAXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1201 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultZNAXiPlus);
1203 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1205 if(! f3dHistGenPtVsYVsMultZNAOmegaMinus) {
1206 f3dHistGenPtVsYVsMultZNAOmegaMinus = new TH3F( "f3dHistGenPtVsYVsMultZNAOmegaMinus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1207 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultZNAOmegaMinus);
1209 if(! f3dHistGenPtVsYVsMultZNAOmegaPlus) {
1210 f3dHistGenPtVsYVsMultZNAOmegaPlus = new TH3F( "f3dHistGenPtVsYVsMultZNAOmegaPlus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1211 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultZNAOmegaPlus);
1214 //All generated cascades, YCMS
1216 if(! f3dHistGenPtVsYCMSVsMultZNAXiMinus) {
1217 f3dHistGenPtVsYCMSVsMultZNAXiMinus = new TH3F( "f3dHistGenPtVsYCMSVsMultZNAXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1218 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultZNAXiMinus);
1220 if(! f3dHistGenPtVsYCMSVsMultZNAXiPlus) {
1221 f3dHistGenPtVsYCMSVsMultZNAXiPlus = new TH3F( "f3dHistGenPtVsYCMSVsMultZNAXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1222 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultZNAXiPlus);
1224 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1226 if(! f3dHistGenPtVsYCMSVsMultZNAOmegaMinus) {
1227 f3dHistGenPtVsYCMSVsMultZNAOmegaMinus = new TH3F( "f3dHistGenPtVsYCMSVsMultZNAOmegaMinus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1228 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultZNAOmegaMinus);
1230 if(! f3dHistGenPtVsYCMSVsMultZNAOmegaPlus) {
1231 f3dHistGenPtVsYCMSVsMultZNAOmegaPlus = new TH3F( "f3dHistGenPtVsYCMSVsMultZNAOmegaPlus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1232 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultZNAOmegaPlus);
1236 //--------------------------------------------------------------------------------------
1237 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1239 if(! f3dHistGenSelectedPtVsYVsMultZNAXiMinus) {
1240 f3dHistGenSelectedPtVsYVsMultZNAXiMinus = new TH3F( "f3dHistGenSelectedPtVsYVsMultZNAXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1241 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultZNAXiMinus);
1243 if(! f3dHistGenSelectedPtVsYVsMultZNAXiPlus) {
1244 f3dHistGenSelectedPtVsYVsMultZNAXiPlus = new TH3F( "f3dHistGenSelectedPtVsYVsMultZNAXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1245 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultZNAXiPlus);
1247 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1249 if(! f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus) {
1250 f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus = new TH3F( "f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1251 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus);
1253 if(! f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus) {
1254 f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus = new TH3F( "f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1255 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus);
1258 //ANALYSIS level Cascades, YCMS
1261 if(! f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus) {
1262 f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1263 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus);
1265 if(! f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus) {
1266 f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1267 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus);
1269 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1271 if(! f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus) {
1272 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1273 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus);
1275 if(! f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus) {
1276 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1277 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus);
1281 //======================================================================================
1282 //--------------------------------------------------------------------------------------
1284 //--------------------------------------------------------------------------------------
1285 //======================================================================================
1287 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1289 if(! f3dHistGenPtVsYVsMultTRKXiMinus) {
1290 f3dHistGenPtVsYVsMultTRKXiMinus = new TH3F( "f3dHistGenPtVsYVsMultTRKXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1291 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultTRKXiMinus);
1293 if(! f3dHistGenPtVsYVsMultTRKXiPlus) {
1294 f3dHistGenPtVsYVsMultTRKXiPlus = new TH3F( "f3dHistGenPtVsYVsMultTRKXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1295 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultTRKXiPlus);
1297 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1299 if(! f3dHistGenPtVsYVsMultTRKOmegaMinus) {
1300 f3dHistGenPtVsYVsMultTRKOmegaMinus = new TH3F( "f3dHistGenPtVsYVsMultTRKOmegaMinus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1301 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultTRKOmegaMinus);
1303 if(! f3dHistGenPtVsYVsMultTRKOmegaPlus) {
1304 f3dHistGenPtVsYVsMultTRKOmegaPlus = new TH3F( "f3dHistGenPtVsYVsMultTRKOmegaPlus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1305 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultTRKOmegaPlus);
1308 //All generated cascades, YCMS
1310 if(! f3dHistGenPtVsYCMSVsMultTRKXiMinus) {
1311 f3dHistGenPtVsYCMSVsMultTRKXiMinus = new TH3F( "f3dHistGenPtVsYCMSVsMultTRKXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1312 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultTRKXiMinus);
1314 if(! f3dHistGenPtVsYCMSVsMultTRKXiPlus) {
1315 f3dHistGenPtVsYCMSVsMultTRKXiPlus = new TH3F( "f3dHistGenPtVsYCMSVsMultTRKXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1316 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultTRKXiPlus);
1318 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1320 if(! f3dHistGenPtVsYCMSVsMultTRKOmegaMinus) {
1321 f3dHistGenPtVsYCMSVsMultTRKOmegaMinus = new TH3F( "f3dHistGenPtVsYCMSVsMultTRKOmegaMinus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1322 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultTRKOmegaMinus);
1324 if(! f3dHistGenPtVsYCMSVsMultTRKOmegaPlus) {
1325 f3dHistGenPtVsYCMSVsMultTRKOmegaPlus = new TH3F( "f3dHistGenPtVsYCMSVsMultTRKOmegaPlus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1326 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultTRKOmegaPlus);
1330 //--------------------------------------------------------------------------------------
1331 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1333 if(! f3dHistGenSelectedPtVsYVsMultTRKXiMinus) {
1334 f3dHistGenSelectedPtVsYVsMultTRKXiMinus = new TH3F( "f3dHistGenSelectedPtVsYVsMultTRKXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1335 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultTRKXiMinus);
1337 if(! f3dHistGenSelectedPtVsYVsMultTRKXiPlus) {
1338 f3dHistGenSelectedPtVsYVsMultTRKXiPlus = new TH3F( "f3dHistGenSelectedPtVsYVsMultTRKXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1339 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultTRKXiPlus);
1341 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1343 if(! f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus) {
1344 f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus = new TH3F( "f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1345 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus);
1347 if(! f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus) {
1348 f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus = new TH3F( "f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1349 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus);
1352 //ANALYSIS level Cascades, YCMS
1355 if(! f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus) {
1356 f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1357 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus);
1359 if(! f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus) {
1360 f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1361 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus);
1363 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1365 if(! f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus) {
1366 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1367 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus);
1369 if(! f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus) {
1370 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1371 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus);
1374 //======================================================================================
1375 //--------------------------------------------------------------------------------------
1377 //--------------------------------------------------------------------------------------
1378 //======================================================================================
1380 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1382 if(! f3dHistGenPtVsYVsMultSPDXiMinus) {
1383 f3dHistGenPtVsYVsMultSPDXiMinus = new TH3F( "f3dHistGenPtVsYVsMultSPDXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1384 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultSPDXiMinus);
1386 if(! f3dHistGenPtVsYVsMultSPDXiPlus) {
1387 f3dHistGenPtVsYVsMultSPDXiPlus = new TH3F( "f3dHistGenPtVsYVsMultSPDXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1388 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultSPDXiPlus);
1390 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1392 if(! f3dHistGenPtVsYVsMultSPDOmegaMinus) {
1393 f3dHistGenPtVsYVsMultSPDOmegaMinus = new TH3F( "f3dHistGenPtVsYVsMultSPDOmegaMinus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1394 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultSPDOmegaMinus);
1396 if(! f3dHistGenPtVsYVsMultSPDOmegaPlus) {
1397 f3dHistGenPtVsYVsMultSPDOmegaPlus = new TH3F( "f3dHistGenPtVsYVsMultSPDOmegaPlus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1398 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultSPDOmegaPlus);
1401 //All generated cascades, YCMS
1403 if(! f3dHistGenPtVsYCMSVsMultSPDXiMinus) {
1404 f3dHistGenPtVsYCMSVsMultSPDXiMinus = new TH3F( "f3dHistGenPtVsYCMSVsMultSPDXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1405 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultSPDXiMinus);
1407 if(! f3dHistGenPtVsYCMSVsMultSPDXiPlus) {
1408 f3dHistGenPtVsYCMSVsMultSPDXiPlus = new TH3F( "f3dHistGenPtVsYCMSVsMultSPDXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1409 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultSPDXiPlus);
1411 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1413 if(! f3dHistGenPtVsYCMSVsMultSPDOmegaMinus) {
1414 f3dHistGenPtVsYCMSVsMultSPDOmegaMinus = new TH3F( "f3dHistGenPtVsYCMSVsMultSPDOmegaMinus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1415 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultSPDOmegaMinus);
1417 if(! f3dHistGenPtVsYCMSVsMultSPDOmegaPlus) {
1418 f3dHistGenPtVsYCMSVsMultSPDOmegaPlus = new TH3F( "f3dHistGenPtVsYCMSVsMultSPDOmegaPlus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1419 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultSPDOmegaPlus);
1423 //--------------------------------------------------------------------------------------
1424 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1426 if(! f3dHistGenSelectedPtVsYVsMultSPDXiMinus) {
1427 f3dHistGenSelectedPtVsYVsMultSPDXiMinus = new TH3F( "f3dHistGenSelectedPtVsYVsMultSPDXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1428 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultSPDXiMinus);
1430 if(! f3dHistGenSelectedPtVsYVsMultSPDXiPlus) {
1431 f3dHistGenSelectedPtVsYVsMultSPDXiPlus = new TH3F( "f3dHistGenSelectedPtVsYVsMultSPDXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1432 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultSPDXiPlus);
1434 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1436 if(! f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus) {
1437 f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus = new TH3F( "f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1438 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus);
1440 if(! f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus) {
1441 f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus = new TH3F( "f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1442 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus);
1445 //ANALYSIS level Cascades, YCMS
1448 if(! f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus) {
1449 f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1450 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus);
1452 if(! f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus) {
1453 f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1454 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus);
1456 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1458 if(! f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus) {
1459 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1460 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus);
1462 if(! f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus) {
1463 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1464 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus);
1467 //----------------------------------
1468 // Primary Vertex Position Histos
1469 //----------------------------------
1472 fHistPVx = new TH1F("fHistPVx",
1473 "PV x position;Nbr of Evts;x",
1475 fListHist->Add(fHistPVx);
1478 fHistPVy = new TH1F("fHistPVy",
1479 "PV y position;Nbr of Evts;y",
1481 fListHist->Add(fHistPVy);
1484 fHistPVz = new TH1F("fHistPVz",
1485 "PV z position;Nbr of Evts;z",
1487 fListHist->Add(fHistPVz);
1490 if(! fHistPVxAnalysis) {
1491 fHistPVxAnalysis = new TH1F("fHistPVxAnalysis",
1492 "PV x position;Nbr of Evts;x",
1494 fListHist->Add(fHistPVxAnalysis);
1496 if(! fHistPVyAnalysis) {
1497 fHistPVyAnalysis = new TH1F("fHistPVyAnalysis",
1498 "PV y position;Nbr of Evts;y",
1500 fListHist->Add(fHistPVyAnalysis);
1502 if(! fHistPVzAnalysis) {
1503 fHistPVzAnalysis = new TH1F("fHistPVzAnalysis",
1504 "PV z position;Nbr of Evts;z",
1506 fListHist->Add(fHistPVzAnalysis);
1509 //List of Histograms: Normal
1510 PostData(1, fListHist);
1512 //TTree Object: Saved to base directory. Should cache to disk while saving.
1513 //(Important to avoid excessive memory usage, particularly when merging)
1514 PostData(2, fTreeCascade);
1516 }// end UserCreateOutputObjects
1519 //________________________________________________________________________
1520 void AliAnalysisTaskExtractPerformanceCascade::UserExec(Option_t *)
1523 // Called for each event
1525 AliESDEvent *lESDevent = 0x0;
1526 AliMCEvent *lMCevent = 0x0;
1527 AliStack *lMCstack = 0x0;
1529 Int_t lNumberOfV0s = -1;
1530 Double_t lTrkgPrimaryVtxPos[3] = {-100.0, -100.0, -100.0};
1531 Double_t lBestPrimaryVtxPos[3] = {-100.0, -100.0, -100.0};
1532 Double_t lMagneticField = -10.;
1534 // Connect to the InputEvent
1535 // After these lines, we should have an ESD/AOD event + the number of V0s in it.
1537 // Appropriate for ESD analysis!
1539 lESDevent = dynamic_cast<AliESDEvent*>( InputEvent() );
1541 AliWarning("ERROR: lESDevent not available \n");
1545 /* --- Acquisition of exact event ID
1546 fTreeVariableRunNumber = lESDevent->GetRunNumber();
1547 fTreeVariableEventNumber =
1548 ( ( ((ULong64_t)lESDevent->GetPeriodNumber() ) << 36 ) |
1549 ( ((ULong64_t)lESDevent->GetOrbitNumber () ) << 12 ) |
1550 ((ULong64_t)lESDevent->GetBunchCrossNumber() ) );
1552 lMCevent = MCEvent();
1554 Printf("ERROR: Could not retrieve MC event \n");
1555 cout << "Name of the file with pb :" << fInputHandler->GetTree()->GetCurrentFile()->GetName() << endl;
1559 lMCstack = lMCevent->Stack();
1561 Printf("ERROR: Could not retrieve MC stack \n");
1562 cout << "Name of the file with pb :" << fInputHandler->GetTree()->GetCurrentFile()->GetName() << endl;
1565 TArrayF mcPrimaryVtx;
1566 AliGenEventHeader* mcHeader=lMCevent->GenEventHeader();
1567 if(!mcHeader) return;
1568 mcHeader->PrimaryVertex(mcPrimaryVtx);
1570 //------------------------------------------------
1571 // Multiplicity Information Acquistion
1572 //------------------------------------------------
1574 //REVISED multiplicity estimator after 'multiplicity day' (2011)
1575 Int_t lMultiplicity = -100;
1576 Int_t lMultiplicityV0A = -100;
1577 Int_t lMultiplicityZNA = -100;
1578 Int_t lMultiplicityTRK = -100;
1579 Int_t lMultiplicitySPD = -100;
1582 if(fkIsNuclear == kFALSE) lMultiplicity = fESDtrackCuts->GetReferenceMultiplicity(lESDevent, AliESDtrackCuts::kTrackletsITSTPC,0.5);
1584 //--------- GENERATED NUMBER OF CHARGED PARTICLES
1585 // ---> Set Variables to Zero again
1586 // ---> Variable Definition
1588 Long_t lNumberOfCharged = 0;
1590 //----- Loop on Stack ----------------------------------------------------------------
1591 for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < (lMCstack->GetNtrack()); iCurrentLabelStack++)
1592 {// This is the begining of the loop on tracks
1593 TParticle* particleOne = lMCstack->Particle(iCurrentLabelStack);
1594 if(!particleOne) continue;
1595 if(!particleOne->GetPDG()) continue;
1596 Double_t lThisCharge = particleOne->GetPDG()->Charge()/3.;
1597 if(TMath::Abs(lThisCharge)<0.001) continue;
1598 if(! (lMCstack->IsPhysicalPrimary(iCurrentLabelStack)) ) continue;
1600 //Double_t gpt = particleOne -> Pt();
1601 Double_t geta = particleOne -> Eta();
1603 if( TMath::Abs(geta) < 0.5) lNumberOfCharged++;
1604 }//End of loop on tracks
1605 //----- End Loop on Stack ------------------------------------------------------------
1608 //---> If this is a nuclear collision, then go nuclear on "multiplicity" variable...
1609 //---> Warning: Experimental
1610 if(fkIsNuclear == kTRUE){
1611 AliCentrality* centrality;
1612 centrality = lESDevent->GetCentrality();
1613 lMultiplicity = ( ( Int_t ) ( centrality->GetCentralityPercentile( fCentralityEstimator.Data() ) ) );
1614 lMultiplicityV0A = ( ( Int_t ) ( centrality->GetCentralityPercentile( "V0A" ) ) );
1615 lMultiplicityZNA = ( ( Int_t ) ( centrality->GetCentralityPercentile( "ZNA" ) ) );
1616 lMultiplicityTRK = ( ( Int_t ) ( centrality->GetCentralityPercentile( "TRK" ) ) );
1617 lMultiplicitySPD = ( ( Int_t ) ( centrality->GetCentralityPercentile( "CL1" ) ) );
1618 if (centrality->GetQuality()>1) {
1619 PostData(1, fListHist);
1620 PostData(2, fTreeCascade);
1625 //Set variable for filling tree afterwards!
1626 //---> pp case......: GetReferenceMultiplicity
1627 //---> Pb-Pb case...: Centrality by V0M
1629 fTreeCascVarMultiplicity = lMultiplicity;
1630 fTreeCascVarMultiplicityMC = lNumberOfCharged;
1631 fTreeCascVarMultiplicityV0A = lMultiplicityV0A;
1632 fTreeCascVarMultiplicityZNA = lMultiplicityZNA;
1633 fTreeCascVarMultiplicityTRK = lMultiplicityTRK;
1634 fTreeCascVarMultiplicitySPD = lMultiplicitySPD;
1636 fHistV0MultiplicityBeforeTrigSel->Fill ( lESDevent->GetNumberOfV0s() );
1637 fHistMultiplicityBeforeTrigSel->Fill ( lMultiplicity );
1638 fHistMultiplicityV0ABeforeTrigSel->Fill ( lMultiplicityV0A );
1639 fHistMultiplicityZNABeforeTrigSel->Fill ( lMultiplicityZNA );
1640 fHistMultiplicityTRKBeforeTrigSel->Fill ( lMultiplicityTRK );
1641 fHistMultiplicitySPDBeforeTrigSel->Fill ( lMultiplicitySPD );
1643 //------------------------------------------------
1644 // MC Information Acquistion
1645 //------------------------------------------------
1647 Int_t iNumberOfPrimaries = -1;
1648 iNumberOfPrimaries = lMCstack->GetNprimary();
1649 if(iNumberOfPrimaries < 1) return;
1651 //------------------------------------------------
1652 // Variable Definition
1653 //------------------------------------------------
1655 Int_t lNbMCPrimary = 0;
1657 Double_t lPtCurrentPart = 0;
1659 //Int_t lComeFromSigma = 0;
1661 // current mc particle 's mother
1662 //Int_t iCurrentMother = 0;
1663 lNbMCPrimary = lMCstack->GetNprimary();
1665 //------------------------------------------------
1666 // Pre-Physics Selection
1667 //------------------------------------------------
1669 //----- Loop on primary Xi, Omega --------------------------------------------------------------
1670 for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < lNbMCPrimary; iCurrentLabelStack++)
1671 {// This is the begining of the loop on primaries
1673 TParticle* lCurrentParticlePrimary = 0x0;
1674 lCurrentParticlePrimary = lMCstack->Particle( iCurrentLabelStack );
1675 if(!lCurrentParticlePrimary){
1676 Printf("Cascade loop %d - MC TParticle pointer to current stack particle = 0x0 ! Skip ...\n", iCurrentLabelStack );
1679 if ( TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3312 || TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3334 ) {
1680 Double_t lRapXiMCPrimary = -100;
1681 if( (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) != 0 ) {
1682 if ( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) !=0 ){
1683 lRapXiMCPrimary = 0.5*TMath::Log( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) );
1687 //=================================================================================
1689 if( lCurrentParticlePrimary->GetPdgCode() == 3312 ){
1690 lPtCurrentPart = lCurrentParticlePrimary->Pt();
1691 f3dHistGenPtVsYVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
1692 f3dHistGenPtVsYCMSVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
1694 f3dHistGenPtVsYVsMultMCXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
1695 f3dHistGenPtVsYCMSVsMultMCXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
1697 f3dHistGenPtVsYVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
1698 f3dHistGenPtVsYCMSVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
1700 f3dHistGenPtVsYVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
1701 f3dHistGenPtVsYCMSVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
1703 f3dHistGenPtVsYVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
1704 f3dHistGenPtVsYCMSVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
1706 f3dHistGenPtVsYVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
1707 f3dHistGenPtVsYCMSVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
1709 if( lCurrentParticlePrimary->GetPdgCode() == -3312 ){
1710 lPtCurrentPart = lCurrentParticlePrimary->Pt();
1711 f3dHistGenPtVsYVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
1712 f3dHistGenPtVsYCMSVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
1714 f3dHistGenPtVsYVsMultMCXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
1715 f3dHistGenPtVsYCMSVsMultMCXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
1717 f3dHistGenPtVsYVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
1718 f3dHistGenPtVsYCMSVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
1720 f3dHistGenPtVsYVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
1721 f3dHistGenPtVsYCMSVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
1723 f3dHistGenPtVsYVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
1724 f3dHistGenPtVsYCMSVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
1726 f3dHistGenPtVsYVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
1727 f3dHistGenPtVsYCMSVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
1730 if( lCurrentParticlePrimary->GetPdgCode() == 3334 ){
1731 lPtCurrentPart = lCurrentParticlePrimary->Pt();
1732 f3dHistGenPtVsYVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
1733 f3dHistGenPtVsYCMSVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
1735 f3dHistGenPtVsYVsMultMCOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
1736 f3dHistGenPtVsYCMSVsMultMCOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
1738 f3dHistGenPtVsYVsMultV0AOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
1739 f3dHistGenPtVsYCMSVsMultV0AOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
1741 f3dHistGenPtVsYVsMultZNAOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
1742 f3dHistGenPtVsYCMSVsMultZNAOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
1744 f3dHistGenPtVsYVsMultTRKOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
1745 f3dHistGenPtVsYCMSVsMultTRKOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
1747 f3dHistGenPtVsYVsMultSPDOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
1748 f3dHistGenPtVsYCMSVsMultSPDOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
1750 if( lCurrentParticlePrimary->GetPdgCode() == -3334 ){
1751 lPtCurrentPart = lCurrentParticlePrimary->Pt();
1752 f3dHistGenPtVsYVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
1753 f3dHistGenPtVsYCMSVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
1755 f3dHistGenPtVsYVsMultMCOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
1756 f3dHistGenPtVsYCMSVsMultMCOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
1758 f3dHistGenPtVsYVsMultV0AOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
1759 f3dHistGenPtVsYCMSVsMultV0AOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
1761 f3dHistGenPtVsYVsMultZNAOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
1762 f3dHistGenPtVsYCMSVsMultZNAOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
1764 f3dHistGenPtVsYVsMultTRKOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
1765 f3dHistGenPtVsYCMSVsMultTRKOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
1767 f3dHistGenPtVsYVsMultSPDOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
1768 f3dHistGenPtVsYCMSVsMultSPDOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
1772 //----- End Loop on primary Xi, Omega ----------------------------------------------------------
1774 // ---> Set Variables to Zero again
1775 // ---> Variable Definition
1779 //------------------------------------------------
1780 // Physics Selection
1781 //------------------------------------------------
1783 UInt_t maskIsSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
1784 Bool_t isSelected = 0;
1785 isSelected = (maskIsSelected & AliVEvent::kMB) == AliVEvent::kMB;
1787 //pA triggering: CINT7
1788 if( fkSwitchINT7 ) isSelected = (maskIsSelected & AliVEvent::kINT7) == AliVEvent::kINT7;
1790 //Standard Min-Bias Selection
1791 if ( ! isSelected ) {
1792 PostData(1, fListHist);
1793 PostData(2, fTreeCascade);
1797 //------------------------------------------------
1798 // Rerun cascade vertexer!
1799 //------------------------------------------------
1801 lESDevent->ResetCascades();
1802 lESDevent->ResetV0s();
1804 AliV0vertexer lV0vtxer;
1805 AliCascadeVertexer lCascVtxer;
1807 lV0vtxer.SetDefaultCuts(fV0Sels);
1808 lCascVtxer.SetDefaultCuts(fCascSels);
1810 lV0vtxer.Tracks2V0vertices(lESDevent);
1811 lCascVtxer.V0sTracks2CascadeVertices(lESDevent);
1813 //------------------------------------------------
1814 // After Trigger Selection
1815 //------------------------------------------------
1817 lNumberOfV0s = lESDevent->GetNumberOfV0s();
1819 //Set variable for filling tree afterwards!
1820 fHistV0MultiplicityForTrigEvt->Fill(lNumberOfV0s);
1821 fHistMultiplicityForTrigEvt->Fill ( lMultiplicity );
1822 fHistMultiplicityV0AForTrigEvt ->Fill( lMultiplicityV0A );
1823 fHistMultiplicityZNAForTrigEvt ->Fill( lMultiplicityZNA );
1824 fHistMultiplicityTRKForTrigEvt ->Fill( lMultiplicityTRK );
1825 fHistMultiplicitySPDForTrigEvt ->Fill( lMultiplicitySPD );
1827 //------------------------------------------------
1828 // Getting: Primary Vertex + MagField Info
1829 //------------------------------------------------
1831 const AliESDVertex *lPrimaryTrackingESDVtx = lESDevent->GetPrimaryVertexTracks();
1832 // get the vtx stored in ESD found with tracks
1833 lPrimaryTrackingESDVtx->GetXYZ( lTrkgPrimaryVtxPos );
1835 const AliESDVertex *lPrimaryBestESDVtx = lESDevent->GetPrimaryVertex();
1836 // get the best primary vertex available for the event
1837 // As done in AliCascadeVertexer, we keep the one which is the best one available.
1838 // between : Tracking vertex > SPD vertex > TPC vertex > default SPD vertex
1839 // This one will be used for next calculations (DCA essentially)
1840 lPrimaryBestESDVtx->GetXYZ( lBestPrimaryVtxPos );
1842 Double_t lPrimaryVtxPosition[3];
1843 const AliVVertex *primaryVtx = lESDevent->GetPrimaryVertex();
1844 lPrimaryVtxPosition[0] = primaryVtx->GetX();
1845 lPrimaryVtxPosition[1] = primaryVtx->GetY();
1846 lPrimaryVtxPosition[2] = primaryVtx->GetZ();
1847 fHistPVx->Fill( lPrimaryVtxPosition[0] );
1848 fHistPVy->Fill( lPrimaryVtxPosition[1] );
1849 fHistPVz->Fill( lPrimaryVtxPosition[2] );
1851 //------------------------------------------------
1852 // Primary Vertex Z position: SKIP
1853 //------------------------------------------------
1855 if(TMath::Abs(lBestPrimaryVtxPos[2]) > 10.0 && fkpAVertexSelection==kFALSE) {
1856 AliWarning("Pb / | Z position of Best Prim Vtx | > 10.0 cm ... return !");
1857 PostData(1, fListHist);
1858 PostData(2, fTreeCascade);
1861 if(fkpAVertexSelection==kTRUE && fUtils->IsFirstEventInChunk(lESDevent)) {
1862 AliWarning("Pb / | This is the first event in the chunk!");
1863 PostData(1, fListHist);
1864 PostData(2, fTreeCascade);
1867 if(fkpAVertexSelection==kTRUE && !fUtils->IsVertexSelected2013pA(lESDevent)) {
1868 AliWarning("Pb / | Vertex not selected by 2013 pA criteria!");
1869 PostData(1, fListHist);
1870 PostData(2, fTreeCascade);
1874 lMagneticField = lESDevent->GetMagneticField( );
1875 fHistV0MultiplicityForSelEvt ->Fill( lNumberOfV0s );
1876 fHistMultiplicity->Fill(lMultiplicity);
1877 fHistMultiplicityV0A->Fill(lMultiplicityV0A);
1878 fHistMultiplicityZNA->Fill(lMultiplicityZNA);
1879 fHistMultiplicityTRK->Fill(lMultiplicityTRK);
1880 fHistMultiplicitySPD->Fill(lMultiplicitySPD);
1882 //------------------------------------------------
1883 // SKIP: Events with well-established PVtx
1884 //------------------------------------------------
1886 const AliESDVertex *lPrimaryTrackingESDVtxCheck = lESDevent->GetPrimaryVertexTracks();
1887 const AliESDVertex *lPrimarySPDVtx = lESDevent->GetPrimaryVertexSPD();
1888 if (!lPrimarySPDVtx->GetStatus() && !lPrimaryTrackingESDVtxCheck->GetStatus() && fkpAVertexSelection==kFALSE ){
1889 AliWarning("Pb / No SPD prim. vertex nor prim. Tracking vertex ... return !");
1890 PostData(1, fListHist);
1891 PostData(2, fTreeCascade);
1894 fHistV0MultiplicityForSelEvtNoTPCOnly ->Fill( lNumberOfV0s );
1895 fHistMultiplicityNoTPCOnly->Fill(lMultiplicity);
1896 fHistMultiplicityV0ANoTPCOnly->Fill(lMultiplicityV0A);
1897 fHistMultiplicityZNANoTPCOnly->Fill(lMultiplicityZNA);
1898 fHistMultiplicityTRKNoTPCOnly->Fill(lMultiplicityTRK);
1899 fHistMultiplicitySPDNoTPCOnly->Fill(lMultiplicitySPD);
1901 //------------------------------------------------
1902 // Pileup Rejection Studies
1903 //------------------------------------------------
1905 // FIXME : quality selection regarding pile-up rejection
1906 if(lESDevent->IsPileupFromSPD() && !fkIsNuclear ){// minContributors=3, minZdist=0.8, nSigmaZdist=3., nSigmaDiamXY=2., nSigmaDiamZ=5. -> see http://alisoft.cern.ch/viewvc/trunk/STEER/AliESDEvent.h?root=AliRoot&r1=41914&r2=42199&pathrev=42199
1907 AliWarning("Pb / This is tagged as Pileup from SPD... return !");
1908 PostData(1, fListHist);
1909 PostData(2, fTreeCascade);
1912 fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup ->Fill( lNumberOfV0s );
1913 fHistMultiplicityNoTPCOnlyNoPileup->Fill(lMultiplicity);
1914 fHistMultiplicityV0ANoTPCOnlyNoPileup->Fill(lMultiplicityV0A);
1915 fHistMultiplicityZNANoTPCOnlyNoPileup->Fill(lMultiplicityZNA);
1916 fHistMultiplicityTRKNoTPCOnlyNoPileup->Fill(lMultiplicityTRK);
1917 fHistMultiplicitySPDNoTPCOnlyNoPileup->Fill(lMultiplicitySPD);
1919 //Do control histograms without the IsFromVertexerZ events, but consider them in analysis...
1920 if( ! (lESDevent->GetPrimaryVertex()->IsFromVertexerZ() ) ){
1921 fHistPVxAnalysis->Fill( lPrimaryVtxPosition[0] );
1922 fHistPVyAnalysis->Fill( lPrimaryVtxPosition[1] );
1923 fHistPVzAnalysis->Fill( lPrimaryVtxPosition[2] );
1926 //------------------------------------------------
1927 // stack loop starts here
1928 //------------------------------------------------
1930 //----- Loop on primary Xi, Omega --------------------------------------------------------------
1931 for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < lNbMCPrimary; iCurrentLabelStack++)
1932 {// This is the begining of the loop on primaries
1934 TParticle* lCurrentParticlePrimary = 0x0;
1935 lCurrentParticlePrimary = lMCstack->Particle( iCurrentLabelStack );
1936 if(!lCurrentParticlePrimary){
1937 Printf("Cascade loop %d - MC TParticle pointer to current stack particle = 0x0 ! Skip ...\n", iCurrentLabelStack );
1940 if ( TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3312 || TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3334 ) {
1941 Double_t lRapXiMCPrimary = -100;
1942 if( (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) != 0 ) {
1943 if ( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) !=0 ){
1944 lRapXiMCPrimary = 0.5*TMath::Log( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) );
1948 //=================================================================================
1950 if( lCurrentParticlePrimary->GetPdgCode() == 3312 ){
1951 lPtCurrentPart = lCurrentParticlePrimary->Pt();
1952 f3dHistGenSelectedPtVsYVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
1953 f3dHistGenSelectedPtVsYCMSVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
1955 f3dHistGenSelectedPtVsYVsMultMCXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
1956 f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
1958 f3dHistGenSelectedPtVsYVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
1959 f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
1961 f3dHistGenSelectedPtVsYVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
1962 f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
1964 f3dHistGenSelectedPtVsYVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
1965 f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
1967 f3dHistGenSelectedPtVsYVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
1968 f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
1970 if( lCurrentParticlePrimary->GetPdgCode() == -3312 ){
1971 lPtCurrentPart = lCurrentParticlePrimary->Pt();
1972 f3dHistGenSelectedPtVsYVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
1973 f3dHistGenSelectedPtVsYCMSVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
1975 f3dHistGenSelectedPtVsYVsMultMCXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
1976 f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
1978 f3dHistGenSelectedPtVsYVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
1979 f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
1981 f3dHistGenSelectedPtVsYVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
1982 f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
1984 f3dHistGenSelectedPtVsYVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
1985 f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
1987 f3dHistGenSelectedPtVsYVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
1988 f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
1991 if( lCurrentParticlePrimary->GetPdgCode() == 3334 ){
1992 lPtCurrentPart = lCurrentParticlePrimary->Pt();
1993 f3dHistGenSelectedPtVsYVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
1994 f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
1996 f3dHistGenSelectedPtVsYVsMultMCOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
1997 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
1999 f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
2000 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2002 f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
2003 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
2005 f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
2006 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
2008 f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
2009 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
2011 if( lCurrentParticlePrimary->GetPdgCode() == -3334 ){
2012 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2013 f3dHistGenSelectedPtVsYVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
2014 f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
2016 f3dHistGenSelectedPtVsYVsMultMCOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
2017 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
2019 f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
2020 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2022 f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
2023 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
2025 f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
2026 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
2028 f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
2029 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
2033 //----- End Loop on primary Xi, Omega ----------------------------------------------------------
2035 //------------------------------------------------
2036 // MAIN CASCADE LOOP STARTS HERE
2037 //------------------------------------------------
2038 // Code Credit: Antonin Maire (thanks^100)
2039 // ---> This is an adaptation
2041 Long_t ncascades = 0;
2042 ncascades = lESDevent->GetNumberOfCascades();
2045 for (Int_t iXi = 0; iXi < ncascades; iXi++){
2046 //------------------------------------------------
2048 //------------------------------------------------
2049 //Double_t lTrkgPrimaryVtxRadius3D = -500.0;
2050 //Double_t lBestPrimaryVtxRadius3D = -500.0;
2052 // - 1st part of initialisation : variables needed to store AliESDCascade data members
2053 Double_t lEffMassXi = 0. ;
2054 //Double_t lChi2Xi = -1. ;
2055 Double_t lDcaXiDaughters = -1. ;
2056 Double_t lXiCosineOfPointingAngle = -1. ;
2057 Double_t lPosXi[3] = { -1000.0, -1000.0, -1000.0 };
2058 Double_t lXiRadius = -1000. ;
2060 // - 2nd part of initialisation : Nbr of clusters within TPC for the 3 daughter cascade tracks
2061 Int_t lPosTPCClusters = -1; // For ESD only ...//FIXME : wait for availability in AOD
2062 Int_t lNegTPCClusters = -1; // For ESD only ...
2063 Int_t lBachTPCClusters = -1; // For ESD only ...
2065 // - 3rd part of initialisation : about V0 part in cascades
2066 Double_t lInvMassLambdaAsCascDghter = 0.;
2067 //Double_t lV0Chi2Xi = -1. ;
2068 Double_t lDcaV0DaughtersXi = -1.;
2070 Double_t lDcaBachToPrimVertexXi = -1., lDcaV0ToPrimVertexXi = -1.;
2071 Double_t lDcaPosToPrimVertexXi = -1.;
2072 Double_t lDcaNegToPrimVertexXi = -1.;
2073 Double_t lV0CosineOfPointingAngleXi = -1. ;
2074 Double_t lPosV0Xi[3] = { -1000. , -1000., -1000. }; // Position of VO coming from cascade
2075 Double_t lV0RadiusXi = -1000.0;
2076 Double_t lV0quality = 0.;
2078 // - 4th part of initialisation : Effective masses
2079 Double_t lInvMassXiMinus = 0.;
2080 Double_t lInvMassXiPlus = 0.;
2081 Double_t lInvMassOmegaMinus = 0.;
2082 Double_t lInvMassOmegaPlus = 0.;
2084 // - 6th part of initialisation : extra info for QA
2085 Double_t lXiMomX = 0. , lXiMomY = 0., lXiMomZ = 0.;
2086 Double_t lXiTransvMom = 0. ;
2087 Double_t lXiTransvMomMC= 0. ;
2088 Double_t lXiTotMom = 0. ;
2090 Double_t lBachMomX = 0., lBachMomY = 0., lBachMomZ = 0.;
2091 //Double_t lBachTransvMom = 0.;
2092 //Double_t lBachTotMom = 0.;
2094 fTreeCascVarNegNSigmaPion = -100;
2095 fTreeCascVarNegNSigmaProton = -100;
2096 fTreeCascVarPosNSigmaPion = -100;
2097 fTreeCascVarPosNSigmaProton = -100;
2098 fTreeCascVarBachNSigmaPion = -100;
2099 fTreeCascVarBachNSigmaKaon = -100;
2101 Short_t lChargeXi = -2;
2102 //Double_t lV0toXiCosineOfPointingAngle = 0. ;
2104 Double_t lRapXi = -20.0, lRapOmega = -20.0, lRapMC = -20.0; // lEta = -20.0, lTheta = 360., lPhi = 720. ;
2105 //Double_t lAlphaXi = -200., lPtArmXi = -200.0;
2107 // -------------------------------------
2108 // II.ESD - Calculation Part dedicated to Xi vertices (ESD)
2110 AliESDcascade *xi = lESDevent->GetCascade(iXi);
2114 // - II.Step 1 : around primary vertex
2116 //lTrkgPrimaryVtxRadius3D = TMath::Sqrt( lTrkgPrimaryVtxPos[0] * lTrkgPrimaryVtxPos[0] +
2117 // lTrkgPrimaryVtxPos[1] * lTrkgPrimaryVtxPos[1] +
2118 // lTrkgPrimaryVtxPos[2] * lTrkgPrimaryVtxPos[2] );
2120 //lBestPrimaryVtxRadius3D = TMath::Sqrt( lBestPrimaryVtxPos[0] * lBestPrimaryVtxPos[0] +
2121 // lBestPrimaryVtxPos[1] * lBestPrimaryVtxPos[1] +
2122 // lBestPrimaryVtxPos[2] * lBestPrimaryVtxPos[2] );
2124 // - II.Step 2 : Assigning the necessary variables for specific AliESDcascade data members (ESD)
2127 xi->ChangeMassHypothesis(lV0quality , 3312); // default working hypothesis : cascade = Xi- decay
2129 lEffMassXi = xi->GetEffMassXi();
2130 //lChi2Xi = xi->GetChi2Xi();
2131 lDcaXiDaughters = xi->GetDcaXiDaughters();
2132 lXiCosineOfPointingAngle = xi->GetCascadeCosineOfPointingAngle( lBestPrimaryVtxPos[0],
2133 lBestPrimaryVtxPos[1],
2134 lBestPrimaryVtxPos[2] );
2135 // Take care : the best available vertex should be used (like in AliCascadeVertexer)
2137 xi->GetXYZcascade( lPosXi[0], lPosXi[1], lPosXi[2] );
2138 lXiRadius = TMath::Sqrt( lPosXi[0]*lPosXi[0] + lPosXi[1]*lPosXi[1] );
2140 // - II.Step 3 : around the tracks : Bach + V0 (ESD)
2141 // ~ Necessary variables for ESDcascade data members coming from the ESDv0 part (inheritance)
2144 UInt_t lIdxPosXi = (UInt_t) TMath::Abs( xi->GetPindex() );
2145 UInt_t lIdxNegXi = (UInt_t) TMath::Abs( xi->GetNindex() );
2146 UInt_t lBachIdx = (UInt_t) TMath::Abs( xi->GetBindex() );
2147 // Care track label can be negative in MC production (linked with the track quality)
2148 // However = normally, not the case for track index ...
2150 // FIXME : rejection of a double use of a daughter track (nothing but just a crosscheck of what is done in the cascade vertexer)
2151 if(lBachIdx == lIdxNegXi) {
2152 AliWarning("Pb / Idx(Bach. track) = Idx(Neg. track) ... continue!"); continue;
2154 if(lBachIdx == lIdxPosXi) {
2155 AliWarning("Pb / Idx(Bach. track) = Idx(Pos. track) ... continue!"); continue;
2158 AliESDtrack *pTrackXi = lESDevent->GetTrack( lIdxPosXi );
2159 AliESDtrack *nTrackXi = lESDevent->GetTrack( lIdxNegXi );
2160 AliESDtrack *bachTrackXi = lESDevent->GetTrack( lBachIdx );
2162 if (!pTrackXi || !nTrackXi || !bachTrackXi ) {
2163 AliWarning("ERROR: Could not retrieve one of the 3 ESD daughter tracks of the cascade ...");
2167 fTreeCascVarPosEta = pTrackXi->Eta();
2168 fTreeCascVarNegEta = nTrackXi->Eta();
2169 fTreeCascVarBachEta = bachTrackXi->Eta();
2171 //------------------------------------------------
2172 // TPC dEdx information
2173 //------------------------------------------------
2174 fTreeCascVarNegNSigmaPion = fPIDResponse->NumberOfSigmasTPC( nTrackXi, AliPID::kPion );
2175 fTreeCascVarNegNSigmaProton = fPIDResponse->NumberOfSigmasTPC( nTrackXi, AliPID::kProton );
2176 fTreeCascVarPosNSigmaPion = fPIDResponse->NumberOfSigmasTPC( pTrackXi, AliPID::kPion );
2177 fTreeCascVarPosNSigmaProton = fPIDResponse->NumberOfSigmasTPC( pTrackXi, AliPID::kProton );
2178 fTreeCascVarBachNSigmaPion = fPIDResponse->NumberOfSigmasTPC( bachTrackXi, AliPID::kPion );
2179 fTreeCascVarBachNSigmaKaon = fPIDResponse->NumberOfSigmasTPC( bachTrackXi, AliPID::kKaon );
2181 //------------------------------------------------
2182 // TPC Number of clusters info
2183 // --- modified to save the smallest number
2184 // --- of TPC clusters for the 3 tracks
2185 //------------------------------------------------
2187 lPosTPCClusters = pTrackXi->GetTPCNcls();
2188 lNegTPCClusters = nTrackXi->GetTPCNcls();
2189 lBachTPCClusters = bachTrackXi->GetTPCNcls();
2191 // 1 - Poor quality related to TPCrefit
2192 ULong_t pStatus = pTrackXi->GetStatus();
2193 ULong_t nStatus = nTrackXi->GetStatus();
2194 ULong_t bachStatus = bachTrackXi->GetStatus();
2195 if ((pStatus&AliESDtrack::kTPCrefit) == 0) { AliWarning("Pb / V0 Pos. track has no TPCrefit ... continue!"); continue; }
2196 if ((nStatus&AliESDtrack::kTPCrefit) == 0) { AliWarning("Pb / V0 Neg. track has no TPCrefit ... continue!"); continue; }
2197 if ((bachStatus&AliESDtrack::kTPCrefit) == 0) { AliWarning("Pb / Bach. track has no TPCrefit ... continue!"); continue; }
2198 // 2 - Poor quality related to TPC clusters: lowest cut of 70 clusters
2199 if(lPosTPCClusters < 70) { AliWarning("Pb / V0 Pos. track has less than 70 TPC clusters ... continue!"); continue; }
2200 if(lNegTPCClusters < 70) { AliWarning("Pb / V0 Neg. track has less than 70 TPC clusters ... continue!"); continue; }
2201 if(lBachTPCClusters < 70) { AliWarning("Pb / Bach. track has less than 70 TPC clusters ... continue!"); continue; }
2202 Int_t leastnumberofclusters = 1000;
2203 if( lPosTPCClusters < leastnumberofclusters ) leastnumberofclusters = lPosTPCClusters;
2204 if( lNegTPCClusters < leastnumberofclusters ) leastnumberofclusters = lNegTPCClusters;
2205 if( lBachTPCClusters < leastnumberofclusters ) leastnumberofclusters = lBachTPCClusters;
2207 lInvMassLambdaAsCascDghter = xi->GetEffMass();
2208 // This value shouldn't change, whatever the working hyp. is : Xi-, Xi+, Omega-, Omega+
2209 lDcaV0DaughtersXi = xi->GetDcaV0Daughters();
2210 //lV0Chi2Xi = xi->GetChi2V0();
2212 lV0CosineOfPointingAngleXi = xi->GetV0CosineOfPointingAngle( lBestPrimaryVtxPos[0],
2213 lBestPrimaryVtxPos[1],
2214 lBestPrimaryVtxPos[2] );
2216 lDcaV0ToPrimVertexXi = xi->GetD( lBestPrimaryVtxPos[0],
2217 lBestPrimaryVtxPos[1],
2218 lBestPrimaryVtxPos[2] );
2220 lDcaBachToPrimVertexXi = TMath::Abs( bachTrackXi->GetD( lBestPrimaryVtxPos[0],
2221 lBestPrimaryVtxPos[1],
2223 // Note : AliExternalTrackParam::GetD returns an algebraic value ...
2225 xi->GetXYZ( lPosV0Xi[0], lPosV0Xi[1], lPosV0Xi[2] );
2226 lV0RadiusXi = TMath::Sqrt( lPosV0Xi[0]*lPosV0Xi[0] + lPosV0Xi[1]*lPosV0Xi[1] );
2228 lDcaPosToPrimVertexXi = TMath::Abs( pTrackXi ->GetD( lBestPrimaryVtxPos[0],
2229 lBestPrimaryVtxPos[1],
2232 lDcaNegToPrimVertexXi = TMath::Abs( nTrackXi ->GetD( lBestPrimaryVtxPos[0],
2233 lBestPrimaryVtxPos[1],
2236 // - II.Step 4 : around effective masses (ESD)
2237 // ~ change mass hypotheses to cover all the possibilities : Xi-/+, Omega -/+
2239 if( bachTrackXi->Charge() < 0 ) {
2241 xi->ChangeMassHypothesis(lV0quality , 3312);
2242 // Calculate the effective mass of the Xi- candidate.
2243 // pdg code 3312 = Xi-
2244 lInvMassXiMinus = xi->GetEffMassXi();
2247 xi->ChangeMassHypothesis(lV0quality , 3334);
2248 // Calculate the effective mass of the Xi- candidate.
2249 // pdg code 3334 = Omega-
2250 lInvMassOmegaMinus = xi->GetEffMassXi();
2253 xi->ChangeMassHypothesis(lV0quality , 3312); // Back to default hyp.
2254 }// end if negative bachelor
2257 if( bachTrackXi->Charge() > 0 ){
2259 xi->ChangeMassHypothesis(lV0quality , -3312);
2260 // Calculate the effective mass of the Xi+ candidate.
2261 // pdg code -3312 = Xi+
2262 lInvMassXiPlus = xi->GetEffMassXi();
2265 xi->ChangeMassHypothesis(lV0quality , -3334);
2266 // Calculate the effective mass of the Xi+ candidate.
2267 // pdg code -3334 = Omega+
2268 lInvMassOmegaPlus = xi->GetEffMassXi();
2271 xi->ChangeMassHypothesis(lV0quality , -3312); // Back to "default" hyp.
2272 }// end if positive bachelor
2273 // - II.Step 6 : extra info for QA (ESD)
2274 // miscellaneous pieces of info that may help regarding data quality assessment.
2277 xi->GetPxPyPz( lXiMomX, lXiMomY, lXiMomZ );
2278 lXiTransvMom = TMath::Sqrt( lXiMomX*lXiMomX + lXiMomY*lXiMomY );
2279 lXiTotMom = TMath::Sqrt( lXiMomX*lXiMomX + lXiMomY*lXiMomY + lXiMomZ*lXiMomZ );
2281 xi->GetBPxPyPz( lBachMomX, lBachMomY, lBachMomZ );
2282 //lBachTransvMom = TMath::Sqrt( lBachMomX*lBachMomX + lBachMomY*lBachMomY );
2283 //lBachTotMom = TMath::Sqrt( lBachMomX*lBachMomX + lBachMomY*lBachMomY + lBachMomZ*lBachMomZ );
2285 lChargeXi = xi->Charge();
2287 //lV0toXiCosineOfPointingAngle = xi->GetV0CosineOfPointingAngle( lPosXi[0], lPosXi[1], lPosXi[2] );
2289 lRapXi = xi->RapXi();
2290 lRapOmega = xi->RapOmega();
2292 //lTheta = xi->Theta() *180.0/TMath::Pi();
2293 //lPhi = xi->Phi() *180.0/TMath::Pi();
2294 //lAlphaXi = xi->AlphaXi();
2295 //lPtArmXi = xi->PtArmXi();
2297 //------------------------------------------------
2298 // Associate Cascade Candidates to Monte Carlo!
2299 //------------------------------------------------
2301 //Warning: Not using Continues... Need to fill tree later!
2303 Int_t lPDGCodeCascade = 0;
2305 Int_t lPID_BachMother = 0;
2306 Int_t lPID_NegMother = 0;
2307 Int_t lPID_PosMother = 0;
2310 fTreeCascVarPIDPositive = 0;
2311 fTreeCascVarPIDNegative = 0;
2312 fTreeCascVarPIDBachelor = 0;
2316 cout << "MC EventNumber : " << lMCevent->Header()->GetEvent()
2317 << " / MC event Number in Run : " << lMCevent->Header()->GetEventNrInRun() << endl;
2319 // - Step 4.1 : level of the V0 daughters
2321 //----------------------------------------
2322 // Regular MC ASSOCIATION STARTS HERE
2323 //----------------------------------------
2325 Int_t lblPosV0Dghter = (Int_t) TMath::Abs( pTrackXi->GetLabel() );
2326 // Abs value = needed ! question of quality track association ...
2327 Int_t lblNegV0Dghter = (Int_t) TMath::Abs( nTrackXi->GetLabel() );
2328 Int_t lblBach = (Int_t) TMath::Abs( bachTrackXi->GetLabel() );
2330 TParticle* mcPosV0Dghter = lMCstack->Particle( lblPosV0Dghter );
2331 TParticle* mcNegV0Dghter = lMCstack->Particle( lblNegV0Dghter );
2332 TParticle* mcBach = lMCstack->Particle( lblBach );
2334 fTreeCascVarPosTransMomMC = mcPosV0Dghter->Pt();
2335 fTreeCascVarNegTransMomMC = mcNegV0Dghter->Pt();
2337 fTreeCascVarPIDPositive = mcPosV0Dghter -> GetPdgCode();
2338 fTreeCascVarPIDNegative = mcNegV0Dghter -> GetPdgCode();
2339 fTreeCascVarPIDBachelor = mcBach->GetPdgCode();
2341 // - Step 4.2 : level of the Xi daughters
2343 Int_t lblMotherPosV0Dghter = mcPosV0Dghter->GetFirstMother() ;
2344 Int_t lblMotherNegV0Dghter = mcNegV0Dghter->GetFirstMother();
2346 //Rather uncivilized: Open brackets for each 'continue'
2347 if(! (lblMotherPosV0Dghter != lblMotherNegV0Dghter) ) { // same mother
2348 if(! (lblMotherPosV0Dghter < 0) ) { // mother != primary (!= -1)
2349 if(! (lblMotherNegV0Dghter < 0) ) {
2351 // mothers = Lambda candidate ... a priori
2353 TParticle* mcMotherPosV0Dghter = lMCstack->Particle( lblMotherPosV0Dghter );
2354 TParticle* mcMotherNegV0Dghter = lMCstack->Particle( lblMotherNegV0Dghter );
2356 // - Step 4.3 : level of Xi candidate
2358 Int_t lblGdMotherPosV0Dghter = mcMotherPosV0Dghter->GetFirstMother() ;
2359 Int_t lblGdMotherNegV0Dghter = mcMotherNegV0Dghter->GetFirstMother() ;
2361 if(! (lblGdMotherPosV0Dghter != lblGdMotherNegV0Dghter) ) {
2362 if(! (lblGdMotherPosV0Dghter < 0) ) { // primary lambda ...
2363 if(! (lblGdMotherNegV0Dghter < 0) ) { // primary lambda ...
2365 // Gd mothers = Xi candidate ... a priori
2367 TParticle* mcGdMotherPosV0Dghter = lMCstack->Particle( lblGdMotherPosV0Dghter );
2368 TParticle* mcGdMotherNegV0Dghter = lMCstack->Particle( lblGdMotherNegV0Dghter );
2370 Int_t lblMotherBach = (Int_t) TMath::Abs( mcBach->GetFirstMother() );
2372 // if( lblMotherBach != lblGdMotherPosV0Dghter ) continue; //same mother for bach and V0 daughters
2373 if(!(lblMotherBach != lblGdMotherPosV0Dghter)) { //same mother for bach and V0 daughters
2375 TParticle* mcMotherBach = lMCstack->Particle( lblMotherBach );
2377 lPID_BachMother = mcMotherBach->GetPdgCode();
2378 lPID_NegMother = mcGdMotherPosV0Dghter->GetPdgCode();
2379 lPID_PosMother = mcGdMotherNegV0Dghter->GetPdgCode();
2381 if(lPID_BachMother==lPID_NegMother && lPID_BachMother==lPID_PosMother){
2382 lPDGCodeCascade = lPID_BachMother;
2383 lXiTransvMomMC = mcMotherBach->Pt();
2384 if ( (mcMotherBach->Energy() + mcMotherBach->Pz()) / (mcMotherBach->Energy() - mcMotherBach->Pz() +1.e-13) !=0 ){
2385 lRapMC = 0.5*TMath::Log( (mcMotherBach->Energy() + mcMotherBach->Pz()) / (mcMotherBach->Energy() - mcMotherBach->Pz() +1.e-13) );
2389 }}}}}}} //Ends all conditionals above...
2391 //----------------------------------------
2392 // Regular MC ASSOCIATION ENDS HERE
2393 //----------------------------------------
2395 //------------------------------------------------
2396 // Set Variables for adding to tree
2397 //------------------------------------------------
2399 /* 1*/ fTreeCascVarCharge = lChargeXi;
2400 /* 2*/ if(lInvMassXiMinus!=0) fTreeCascVarMassAsXi = lInvMassXiMinus;
2401 /* 2*/ if(lInvMassXiPlus!=0) fTreeCascVarMassAsXi = lInvMassXiPlus;
2402 /* 3*/ if(lInvMassOmegaMinus!=0) fTreeCascVarMassAsOmega = lInvMassOmegaMinus;
2403 /* 3*/ if(lInvMassOmegaPlus!=0) fTreeCascVarMassAsOmega = lInvMassOmegaPlus;
2404 /* 4*/ fTreeCascVarPt = lXiTransvMom;
2405 /* 4*/ fTreeCascVarPtMC = lXiTransvMomMC;
2406 /* 5*/ fTreeCascVarRapXi = lRapXi ;
2407 /* 5*/ fTreeCascVarRapMC = lRapMC ;
2408 /* 6*/ fTreeCascVarRapOmega = lRapOmega ;
2409 /* 7*/ fTreeCascVarDCACascDaughters = lDcaXiDaughters;
2410 /* 8*/ fTreeCascVarDCABachToPrimVtx = lDcaBachToPrimVertexXi;
2411 /* 9*/ fTreeCascVarDCAV0Daughters = lDcaV0DaughtersXi;
2412 /*10*/ fTreeCascVarDCAV0ToPrimVtx = lDcaV0ToPrimVertexXi;
2413 /*11*/ fTreeCascVarDCAPosToPrimVtx = lDcaPosToPrimVertexXi;
2414 /*12*/ fTreeCascVarDCANegToPrimVtx = lDcaNegToPrimVertexXi;
2415 /*13*/ fTreeCascVarCascCosPointingAngle = lXiCosineOfPointingAngle;
2416 /*14*/ fTreeCascVarCascRadius = lXiRadius;
2417 /*15*/ fTreeCascVarV0Mass = lInvMassLambdaAsCascDghter;
2418 /*16*/ fTreeCascVarV0CosPointingAngle = lV0CosineOfPointingAngleXi;
2419 /*17*/ fTreeCascVarV0Radius = lV0RadiusXi;
2420 /*20*/ fTreeCascVarLeastNbrClusters = leastnumberofclusters;
2421 /*21*/ fTreeCascVarMultiplicity = lMultiplicity; //multiplicity, whatever that may be
2423 /*23*/ fTreeCascVarDistOverTotMom = TMath::Sqrt(
2424 TMath::Power( lPosXi[0] - lBestPrimaryVtxPos[0] , 2) +
2425 TMath::Power( lPosXi[1] - lBestPrimaryVtxPos[1] , 2) +
2426 TMath::Power( lPosXi[2] - lBestPrimaryVtxPos[2] , 2)
2428 /*23*/ fTreeCascVarDistOverTotMom /= (lXiTotMom+1e-13);
2429 /*24*/ //Not specified here, it has been set already (TRunNumber)
2430 /*25*/ fTreeCascVarPID = lPDGCodeCascade;
2432 //------------------------------------------------
2434 //------------------------------------------------
2436 // The conditional is meant to decrease excessive
2437 // memory usage! Be careful when loosening the
2440 //Xi Mass window: 150MeV wide
2441 //Omega mass window: 150MeV wide
2443 if( (fTreeCascVarMassAsXi<1.32+0.075&&fTreeCascVarMassAsXi>1.32-0.075) ||
2444 (fTreeCascVarMassAsOmega<1.68+0.075&&fTreeCascVarMassAsOmega>1.68-0.075) ){
2445 fTreeCascade->Fill();
2448 //------------------------------------------------
2450 //------------------------------------------------
2452 }// end of the Cascade loop (ESD or AOD)
2454 // Post output data.
2455 PostData(1, fListHist);
2456 PostData(2, fTreeCascade);
2459 //________________________________________________________________________
2460 void AliAnalysisTaskExtractPerformanceCascade::Terminate(Option_t *)
2462 // Draw result to the screen
2463 // Called once at the end of the query
2465 TList *cRetrievedList = 0x0;
2466 cRetrievedList = (TList*)GetOutputData(1);
2467 if(!cRetrievedList){
2468 Printf("ERROR - AliAnalysisTaskExtractCascade : ouput data container list not available\n");
2472 fHistV0MultiplicityForTrigEvt = dynamic_cast<TH1F*> ( cRetrievedList->FindObject("fHistV0MultiplicityForTrigEvt") );
2473 if (!fHistV0MultiplicityForTrigEvt) {
2474 Printf("ERROR - AliAnalysisTaskExtractCascade : fHistV0MultiplicityForTrigEvt not available");
2478 TCanvas *canCheck = new TCanvas("AliAnalysisTaskExtractCascade","V0 Multiplicity",10,10,510,510);
2479 canCheck->cd(1)->SetLogy();
2481 fHistV0MultiplicityForTrigEvt->SetMarkerStyle(22);
2482 fHistV0MultiplicityForTrigEvt->DrawCopy("E");
2485 //----------------------------------------------------------------------------
2487 Double_t AliAnalysisTaskExtractPerformanceCascade::MyRapidity(Double_t rE, Double_t rPz) const
2489 // Local calculation for rapidity
2490 Double_t ReturnValue = -100;
2491 if( (rE-rPz+1.e-13) != 0 && (rE+rPz) != 0 ){
2492 ReturnValue = 0.5*TMath::Log((rE+rPz)/(rE-rPz+1.e-13));