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 ),
106 fkRunVertexers ( kFALSE ),
107 fkCheckSwapping( kFALSE ),
108 //------------------------------------------------
110 //------------------------------------------------
112 fTreeCascVarCharge(0),
113 fTreeCascVarMassAsXi(0),
114 fTreeCascVarMassAsOmega(0),
117 fTreeCascVarRapMC(0),
118 fTreeCascVarRapXi(0),
119 fTreeCascVarRapOmega(0),
120 fTreeCascVarNegEta(0),
121 fTreeCascVarPosEta(0),
122 fTreeCascVarBachEta(0),
123 fTreeCascVarDCACascDaughters(0),
124 fTreeCascVarDCABachToPrimVtx(0),
125 fTreeCascVarDCAV0Daughters(0),
126 fTreeCascVarDCAV0ToPrimVtx(0),
127 fTreeCascVarDCAPosToPrimVtx(0),
128 fTreeCascVarDCANegToPrimVtx(0),
129 fTreeCascVarCascCosPointingAngle(0),
130 fTreeCascVarCascRadius(0),
131 fTreeCascVarV0Mass(0),
132 fTreeCascVarV0CosPointingAngle(0),
133 fTreeCascVarV0CosPointingAngleSpecial(0),
134 fTreeCascVarV0Radius(0),
135 fTreeCascVarLeastNbrClusters(0),
136 fTreeCascVarMultiplicity(0),
137 fTreeCascVarMultiplicityV0A(0),
138 fTreeCascVarMultiplicityZNA(0),
139 fTreeCascVarMultiplicityTRK(0),
140 fTreeCascVarMultiplicitySPD(0),
141 fTreeCascVarMultiplicityMC(0),
142 fTreeCascVarDistOverTotMom(0),
143 fTreeCascVarIsPhysicalPrimary(0),
145 fTreeCascVarPIDSwapped(0),
146 fTreeCascVarPIDBachelor(0),
147 fTreeCascVarPIDNegative(0),
148 fTreeCascVarPIDPositive(0),
149 fTreeCascVarBachTransMom(0),
150 fTreeCascVarPosTransMom(0),
151 fTreeCascVarNegTransMom(0),
152 fTreeCascVarPosTransMomMC(0),
153 fTreeCascVarNegTransMomMC(0),
154 fTreeCascVarNegNSigmaPion(0),
155 fTreeCascVarNegNSigmaProton(0),
156 fTreeCascVarPosNSigmaPion(0),
157 fTreeCascVarPosNSigmaProton(0),
158 fTreeCascVarBachNSigmaPion(0),
159 fTreeCascVarBachNSigmaKaon(0),
161 fTreeCascVarkITSRefitBachelor(0),
162 fTreeCascVarkITSRefitNegative(0),
163 fTreeCascVarkITSRefitPositive(0),
165 fTreeCascVarEvHasXiMinus(0),
166 fTreeCascVarEvHasXiPlus(0),
167 fTreeCascVarEvHasOmegaMinus(0),
168 fTreeCascVarEvHasOmegaPlus(0),
169 fTreeCascVarEvHasLambda(0),
170 fTreeCascVarEvHasAntiLambda(0),
172 fTreeCascVarEvHasLowPtXiMinus(0),
173 fTreeCascVarEvHasLowPtXiPlus(0),
174 fTreeCascVarEvHasLowPtOmegaMinus(0),
175 fTreeCascVarEvHasLowPtOmegaPlus(0),
176 fTreeCascVarEvHasLowPtLambda(0),
177 fTreeCascVarEvHasLowPtAntiLambda(0),
179 fTreeCascVarEvHasVeryLowPtXiMinus(0),
180 fTreeCascVarEvHasVeryLowPtXiPlus(0),
181 fTreeCascVarEvHasVeryLowPtOmegaMinus(0),
182 fTreeCascVarEvHasVeryLowPtOmegaPlus(0),
183 fTreeCascVarEvHasVeryLowPtLambda(0),
184 fTreeCascVarEvHasVeryLowPtAntiLambda(0),
186 //------------------------------------------------
188 // --- Filled on an Event-by-event basis
189 //------------------------------------------------
190 fHistV0MultiplicityBeforeTrigSel(0),
191 fHistV0MultiplicityForTrigEvt(0),
192 fHistV0MultiplicityForSelEvt(0),
193 fHistV0MultiplicityForSelEvtNoTPCOnly(0),
194 fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup(0),
195 fHistMultiplicityBeforeTrigSel(0),
196 fHistMultiplicityForTrigEvt(0),
197 fHistMultiplicity(0),
198 fHistMultiplicityNoTPCOnly(0),
199 fHistMultiplicityNoTPCOnlyNoPileup(0),
202 fHistMultiplicityV0ABeforeTrigSel(0),
203 fHistMultiplicityV0AForTrigEvt(0),
204 fHistMultiplicityV0A(0),
205 fHistMultiplicityV0ANoTPCOnly(0),
206 fHistMultiplicityV0ANoTPCOnlyNoPileup(0),
209 fHistMultiplicityZNABeforeTrigSel(0),
210 fHistMultiplicityZNAForTrigEvt(0),
211 fHistMultiplicityZNA(0),
212 fHistMultiplicityZNANoTPCOnly(0),
213 fHistMultiplicityZNANoTPCOnlyNoPileup(0),
216 fHistMultiplicityTRKBeforeTrigSel(0),
217 fHistMultiplicityTRKForTrigEvt(0),
218 fHistMultiplicityTRK(0),
219 fHistMultiplicityTRKNoTPCOnly(0),
220 fHistMultiplicityTRKNoTPCOnlyNoPileup(0),
223 fHistMultiplicitySPDBeforeTrigSel(0),
224 fHistMultiplicitySPDForTrigEvt(0),
225 fHistMultiplicitySPD(0),
226 fHistMultiplicitySPDNoTPCOnly(0),
227 fHistMultiplicitySPDNoTPCOnlyNoPileup(0),
230 //------------------------------------------------
231 // PARTICLE HISTOGRAMS
232 // --- Filled on a Particle-by-Particle basis
233 //------------------------------------------------
234 f3dHistGenPtVsYVsMultXiMinus(0),
235 f3dHistGenPtVsYVsMultXiPlus(0),
236 f3dHistGenPtVsYVsMultOmegaMinus(0),
237 f3dHistGenPtVsYVsMultOmegaPlus(0),
238 f3dHistGenSelectedPtVsYVsMultXiMinus(0),
239 f3dHistGenSelectedPtVsYVsMultXiPlus(0),
240 f3dHistGenSelectedPtVsYVsMultOmegaMinus(0),
241 f3dHistGenSelectedPtVsYVsMultOmegaPlus(0),
242 f3dHistGenPtVsYCMSVsMultXiMinus(0),
243 f3dHistGenPtVsYCMSVsMultXiPlus(0),
244 f3dHistGenPtVsYCMSVsMultOmegaMinus(0),
245 f3dHistGenPtVsYCMSVsMultOmegaPlus(0),
246 f3dHistGenSelectedPtVsYCMSVsMultXiMinus(0),
247 f3dHistGenSelectedPtVsYCMSVsMultXiPlus(0),
248 f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus(0),
249 f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus(0),
253 f3dHistGenPtVsYVsMultMCXiMinus(0),
254 f3dHistGenPtVsYVsMultMCXiPlus(0),
255 f3dHistGenPtVsYVsMultMCOmegaMinus(0),
256 f3dHistGenPtVsYVsMultMCOmegaPlus(0),
257 f3dHistGenSelectedPtVsYVsMultMCXiMinus(0),
258 f3dHistGenSelectedPtVsYVsMultMCXiPlus(0),
259 f3dHistGenSelectedPtVsYVsMultMCOmegaMinus(0),
260 f3dHistGenSelectedPtVsYVsMultMCOmegaPlus(0),
261 f3dHistGenPtVsYCMSVsMultMCXiMinus(0),
262 f3dHistGenPtVsYCMSVsMultMCXiPlus(0),
263 f3dHistGenPtVsYCMSVsMultMCOmegaMinus(0),
264 f3dHistGenPtVsYCMSVsMultMCOmegaPlus(0),
265 f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus(0),
266 f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus(0),
267 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus(0),
268 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus(0),
272 f3dHistGenPtVsYVsMultV0AXiMinus(0),
273 f3dHistGenPtVsYVsMultV0AXiPlus(0),
274 f3dHistGenPtVsYVsMultV0AOmegaMinus(0),
275 f3dHistGenPtVsYVsMultV0AOmegaPlus(0),
276 f3dHistGenSelectedPtVsYVsMultV0AXiMinus(0),
277 f3dHistGenSelectedPtVsYVsMultV0AXiPlus(0),
278 f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus(0),
279 f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus(0),
280 f3dHistGenPtVsYCMSVsMultV0AXiMinus(0),
281 f3dHistGenPtVsYCMSVsMultV0AXiPlus(0),
282 f3dHistGenPtVsYCMSVsMultV0AOmegaMinus(0),
283 f3dHistGenPtVsYCMSVsMultV0AOmegaPlus(0),
284 f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus(0),
285 f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus(0),
286 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus(0),
287 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus(0),
291 f3dHistGenPtVsYVsMultZNAXiMinus(0),
292 f3dHistGenPtVsYVsMultZNAXiPlus(0),
293 f3dHistGenPtVsYVsMultZNAOmegaMinus(0),
294 f3dHistGenPtVsYVsMultZNAOmegaPlus(0),
295 f3dHistGenSelectedPtVsYVsMultZNAXiMinus(0),
296 f3dHistGenSelectedPtVsYVsMultZNAXiPlus(0),
297 f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus(0),
298 f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus(0),
299 f3dHistGenPtVsYCMSVsMultZNAXiMinus(0),
300 f3dHistGenPtVsYCMSVsMultZNAXiPlus(0),
301 f3dHistGenPtVsYCMSVsMultZNAOmegaMinus(0),
302 f3dHistGenPtVsYCMSVsMultZNAOmegaPlus(0),
303 f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus(0),
304 f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus(0),
305 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus(0),
306 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus(0),
310 f3dHistGenPtVsYVsMultTRKXiMinus(0),
311 f3dHistGenPtVsYVsMultTRKXiPlus(0),
312 f3dHistGenPtVsYVsMultTRKOmegaMinus(0),
313 f3dHistGenPtVsYVsMultTRKOmegaPlus(0),
314 f3dHistGenSelectedPtVsYVsMultTRKXiMinus(0),
315 f3dHistGenSelectedPtVsYVsMultTRKXiPlus(0),
316 f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus(0),
317 f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus(0),
318 f3dHistGenPtVsYCMSVsMultTRKXiMinus(0),
319 f3dHistGenPtVsYCMSVsMultTRKXiPlus(0),
320 f3dHistGenPtVsYCMSVsMultTRKOmegaMinus(0),
321 f3dHistGenPtVsYCMSVsMultTRKOmegaPlus(0),
322 f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus(0),
323 f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus(0),
324 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus(0),
325 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus(0),
329 f3dHistGenPtVsYVsMultSPDXiMinus(0),
330 f3dHistGenPtVsYVsMultSPDXiPlus(0),
331 f3dHistGenPtVsYVsMultSPDOmegaMinus(0),
332 f3dHistGenPtVsYVsMultSPDOmegaPlus(0),
333 f3dHistGenSelectedPtVsYVsMultSPDXiMinus(0),
334 f3dHistGenSelectedPtVsYVsMultSPDXiPlus(0),
335 f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus(0),
336 f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus(0),
337 f3dHistGenPtVsYCMSVsMultSPDXiMinus(0),
338 f3dHistGenPtVsYCMSVsMultSPDXiPlus(0),
339 f3dHistGenPtVsYCMSVsMultSPDOmegaMinus(0),
340 f3dHistGenPtVsYCMSVsMultSPDOmegaPlus(0),
341 f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus(0),
342 f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus(0),
343 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus(0),
344 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus(0),
357 AliAnalysisTaskExtractPerformanceCascade::AliAnalysisTaskExtractPerformanceCascade(const char *name)
358 : AliAnalysisTaskSE(name), fListHist(0), fTreeCascade(0), fPIDResponse(0), fESDtrackCuts(0), fUtils(0),
359 fkIsNuclear ( kFALSE ),
360 fkSwitchINT7 ( kFALSE ),
361 fpArapidityShift ( 0.465 ),
362 fCentralityEstimator("V0M"),
363 fkpAVertexSelection( kFALSE ),
365 fkRunVertexers ( kFALSE ),
366 fkCheckSwapping( kFALSE ),
367 //------------------------------------------------
369 //------------------------------------------------
371 fTreeCascVarCharge(0),
372 fTreeCascVarMassAsXi(0),
373 fTreeCascVarMassAsOmega(0),
376 fTreeCascVarRapMC(0),
377 fTreeCascVarRapXi(0),
378 fTreeCascVarRapOmega(0),
379 fTreeCascVarNegEta(0),
380 fTreeCascVarPosEta(0),
381 fTreeCascVarBachEta(0),
382 fTreeCascVarDCACascDaughters(0),
383 fTreeCascVarDCABachToPrimVtx(0),
384 fTreeCascVarDCAV0Daughters(0),
385 fTreeCascVarDCAV0ToPrimVtx(0),
386 fTreeCascVarDCAPosToPrimVtx(0),
387 fTreeCascVarDCANegToPrimVtx(0),
388 fTreeCascVarCascCosPointingAngle(0),
389 fTreeCascVarCascRadius(0),
390 fTreeCascVarV0Mass(0),
391 fTreeCascVarV0CosPointingAngle(0),
392 fTreeCascVarV0CosPointingAngleSpecial(0),
393 fTreeCascVarV0Radius(0),
394 fTreeCascVarLeastNbrClusters(0),
395 fTreeCascVarMultiplicity(0),
396 fTreeCascVarMultiplicityV0A(0),
397 fTreeCascVarMultiplicityZNA(0),
398 fTreeCascVarMultiplicityTRK(0),
399 fTreeCascVarMultiplicitySPD(0),
400 fTreeCascVarMultiplicityMC(0),
401 fTreeCascVarDistOverTotMom(0),
402 fTreeCascVarIsPhysicalPrimary(0),
404 fTreeCascVarPIDSwapped(0),
405 fTreeCascVarPIDBachelor(0),
406 fTreeCascVarPIDNegative(0),
407 fTreeCascVarPIDPositive(0),
408 fTreeCascVarBachTransMom(0),
409 fTreeCascVarPosTransMom(0),
410 fTreeCascVarNegTransMom(0),
411 fTreeCascVarPosTransMomMC(0),
412 fTreeCascVarNegTransMomMC(0),
413 fTreeCascVarNegNSigmaPion(0),
414 fTreeCascVarNegNSigmaProton(0),
415 fTreeCascVarPosNSigmaPion(0),
416 fTreeCascVarPosNSigmaProton(0),
417 fTreeCascVarBachNSigmaPion(0),
418 fTreeCascVarBachNSigmaKaon(0),
420 fTreeCascVarkITSRefitBachelor(0),
421 fTreeCascVarkITSRefitNegative(0),
422 fTreeCascVarkITSRefitPositive(0),
424 fTreeCascVarEvHasXiMinus(0),
425 fTreeCascVarEvHasXiPlus(0),
426 fTreeCascVarEvHasOmegaMinus(0),
427 fTreeCascVarEvHasOmegaPlus(0),
428 fTreeCascVarEvHasLambda(0),
429 fTreeCascVarEvHasAntiLambda(0),
431 fTreeCascVarEvHasLowPtXiMinus(0),
432 fTreeCascVarEvHasLowPtXiPlus(0),
433 fTreeCascVarEvHasLowPtOmegaMinus(0),
434 fTreeCascVarEvHasLowPtOmegaPlus(0),
435 fTreeCascVarEvHasLowPtLambda(0),
436 fTreeCascVarEvHasLowPtAntiLambda(0),
438 fTreeCascVarEvHasVeryLowPtXiMinus(0),
439 fTreeCascVarEvHasVeryLowPtXiPlus(0),
440 fTreeCascVarEvHasVeryLowPtOmegaMinus(0),
441 fTreeCascVarEvHasVeryLowPtOmegaPlus(0),
442 fTreeCascVarEvHasVeryLowPtLambda(0),
443 fTreeCascVarEvHasVeryLowPtAntiLambda(0),
445 //------------------------------------------------
447 // --- Filled on an Event-by-event basis
448 //------------------------------------------------
449 fHistV0MultiplicityBeforeTrigSel(0),
450 fHistV0MultiplicityForTrigEvt(0),
451 fHistV0MultiplicityForSelEvt(0),
452 fHistV0MultiplicityForSelEvtNoTPCOnly(0),
453 fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup(0),
454 fHistMultiplicityBeforeTrigSel(0),
455 fHistMultiplicityForTrigEvt(0),
456 fHistMultiplicity(0),
457 fHistMultiplicityNoTPCOnly(0),
458 fHistMultiplicityNoTPCOnlyNoPileup(0),
461 fHistMultiplicityV0ABeforeTrigSel(0),
462 fHistMultiplicityV0AForTrigEvt(0),
463 fHistMultiplicityV0A(0),
464 fHistMultiplicityV0ANoTPCOnly(0),
465 fHistMultiplicityV0ANoTPCOnlyNoPileup(0),
468 fHistMultiplicityZNABeforeTrigSel(0),
469 fHistMultiplicityZNAForTrigEvt(0),
470 fHistMultiplicityZNA(0),
471 fHistMultiplicityZNANoTPCOnly(0),
472 fHistMultiplicityZNANoTPCOnlyNoPileup(0),
475 fHistMultiplicityTRKBeforeTrigSel(0),
476 fHistMultiplicityTRKForTrigEvt(0),
477 fHistMultiplicityTRK(0),
478 fHistMultiplicityTRKNoTPCOnly(0),
479 fHistMultiplicityTRKNoTPCOnlyNoPileup(0),
482 fHistMultiplicitySPDBeforeTrigSel(0),
483 fHistMultiplicitySPDForTrigEvt(0),
484 fHistMultiplicitySPD(0),
485 fHistMultiplicitySPDNoTPCOnly(0),
486 fHistMultiplicitySPDNoTPCOnlyNoPileup(0),
488 //------------------------------------------------
489 // PARTICLE HISTOGRAMS
490 // --- Filled on a Particle-by-Particle basis
491 //------------------------------------------------
492 f3dHistGenPtVsYVsMultXiMinus(0),
493 f3dHistGenPtVsYVsMultXiPlus(0),
494 f3dHistGenPtVsYVsMultOmegaMinus(0),
495 f3dHistGenPtVsYVsMultOmegaPlus(0),
496 f3dHistGenSelectedPtVsYVsMultXiMinus(0),
497 f3dHistGenSelectedPtVsYVsMultXiPlus(0),
498 f3dHistGenSelectedPtVsYVsMultOmegaMinus(0),
499 f3dHistGenSelectedPtVsYVsMultOmegaPlus(0),
500 f3dHistGenPtVsYCMSVsMultXiMinus(0),
501 f3dHistGenPtVsYCMSVsMultXiPlus(0),
502 f3dHistGenPtVsYCMSVsMultOmegaMinus(0),
503 f3dHistGenPtVsYCMSVsMultOmegaPlus(0),
504 f3dHistGenSelectedPtVsYCMSVsMultXiMinus(0),
505 f3dHistGenSelectedPtVsYCMSVsMultXiPlus(0),
506 f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus(0),
507 f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus(0),
511 f3dHistGenPtVsYVsMultMCXiMinus(0),
512 f3dHistGenPtVsYVsMultMCXiPlus(0),
513 f3dHistGenPtVsYVsMultMCOmegaMinus(0),
514 f3dHistGenPtVsYVsMultMCOmegaPlus(0),
515 f3dHistGenSelectedPtVsYVsMultMCXiMinus(0),
516 f3dHistGenSelectedPtVsYVsMultMCXiPlus(0),
517 f3dHistGenSelectedPtVsYVsMultMCOmegaMinus(0),
518 f3dHistGenSelectedPtVsYVsMultMCOmegaPlus(0),
519 f3dHistGenPtVsYCMSVsMultMCXiMinus(0),
520 f3dHistGenPtVsYCMSVsMultMCXiPlus(0),
521 f3dHistGenPtVsYCMSVsMultMCOmegaMinus(0),
522 f3dHistGenPtVsYCMSVsMultMCOmegaPlus(0),
523 f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus(0),
524 f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus(0),
525 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus(0),
526 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus(0),
530 f3dHistGenPtVsYVsMultV0AXiMinus(0),
531 f3dHistGenPtVsYVsMultV0AXiPlus(0),
532 f3dHistGenPtVsYVsMultV0AOmegaMinus(0),
533 f3dHistGenPtVsYVsMultV0AOmegaPlus(0),
534 f3dHistGenSelectedPtVsYVsMultV0AXiMinus(0),
535 f3dHistGenSelectedPtVsYVsMultV0AXiPlus(0),
536 f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus(0),
537 f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus(0),
538 f3dHistGenPtVsYCMSVsMultV0AXiMinus(0),
539 f3dHistGenPtVsYCMSVsMultV0AXiPlus(0),
540 f3dHistGenPtVsYCMSVsMultV0AOmegaMinus(0),
541 f3dHistGenPtVsYCMSVsMultV0AOmegaPlus(0),
542 f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus(0),
543 f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus(0),
544 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus(0),
545 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus(0),
549 f3dHistGenPtVsYVsMultZNAXiMinus(0),
550 f3dHistGenPtVsYVsMultZNAXiPlus(0),
551 f3dHistGenPtVsYVsMultZNAOmegaMinus(0),
552 f3dHistGenPtVsYVsMultZNAOmegaPlus(0),
553 f3dHistGenSelectedPtVsYVsMultZNAXiMinus(0),
554 f3dHistGenSelectedPtVsYVsMultZNAXiPlus(0),
555 f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus(0),
556 f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus(0),
557 f3dHistGenPtVsYCMSVsMultZNAXiMinus(0),
558 f3dHistGenPtVsYCMSVsMultZNAXiPlus(0),
559 f3dHistGenPtVsYCMSVsMultZNAOmegaMinus(0),
560 f3dHistGenPtVsYCMSVsMultZNAOmegaPlus(0),
561 f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus(0),
562 f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus(0),
563 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus(0),
564 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus(0),
568 f3dHistGenPtVsYVsMultTRKXiMinus(0),
569 f3dHistGenPtVsYVsMultTRKXiPlus(0),
570 f3dHistGenPtVsYVsMultTRKOmegaMinus(0),
571 f3dHistGenPtVsYVsMultTRKOmegaPlus(0),
572 f3dHistGenSelectedPtVsYVsMultTRKXiMinus(0),
573 f3dHistGenSelectedPtVsYVsMultTRKXiPlus(0),
574 f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus(0),
575 f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus(0),
576 f3dHistGenPtVsYCMSVsMultTRKXiMinus(0),
577 f3dHistGenPtVsYCMSVsMultTRKXiPlus(0),
578 f3dHistGenPtVsYCMSVsMultTRKOmegaMinus(0),
579 f3dHistGenPtVsYCMSVsMultTRKOmegaPlus(0),
580 f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus(0),
581 f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus(0),
582 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus(0),
583 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus(0),
587 f3dHistGenPtVsYVsMultSPDXiMinus(0),
588 f3dHistGenPtVsYVsMultSPDXiPlus(0),
589 f3dHistGenPtVsYVsMultSPDOmegaMinus(0),
590 f3dHistGenPtVsYVsMultSPDOmegaPlus(0),
591 f3dHistGenSelectedPtVsYVsMultSPDXiMinus(0),
592 f3dHistGenSelectedPtVsYVsMultSPDXiPlus(0),
593 f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus(0),
594 f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus(0),
595 f3dHistGenPtVsYCMSVsMultSPDXiMinus(0),
596 f3dHistGenPtVsYCMSVsMultSPDXiPlus(0),
597 f3dHistGenPtVsYCMSVsMultSPDOmegaMinus(0),
598 f3dHistGenPtVsYCMSVsMultSPDOmegaPlus(0),
599 f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus(0),
600 f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus(0),
601 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus(0),
602 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus(0),
614 //Set Variables for re-running the cascade vertexers (as done for MS paper)
616 // New Loose : 1st step for the 7 TeV pp analysis
618 fV0VertexerSels[0] = 33. ; // max allowed chi2
619 fV0VertexerSels[1] = 0.02; // min allowed impact parameter for the 1st daughter (LHC09a4 : 0.05)
620 fV0VertexerSels[2] = 0.02; // min allowed impact parameter for the 2nd daughter (LHC09a4 : 0.05)
621 fV0VertexerSels[3] = 2.0 ; // max allowed DCA between the daughter tracks (LHC09a4 : 0.5)
622 fV0VertexerSels[4] = 0.95; // min allowed cosine of V0's pointing angle (LHC09a4 : 0.99)
623 fV0VertexerSels[5] = 1.0 ; // min radius of the fiducial volume (LHC09a4 : 0.2)
624 fV0VertexerSels[6] = 200. ; // max radius of the fiducial volume (LHC09a4 : 100.0)
626 fCascadeVertexerSels[0] = 33. ; // max allowed chi2 (same as PDC07)
627 fCascadeVertexerSels[1] = 0.05 ; // min allowed V0 impact parameter (PDC07 : 0.05 / LHC09a4 : 0.025 )
628 fCascadeVertexerSels[2] = 0.010; // "window" around the Lambda mass (PDC07 : 0.008 / LHC09a4 : 0.010 )
629 fCascadeVertexerSels[3] = 0.03 ; // min allowed bachelor's impact parameter (PDC07 : 0.035 / LHC09a4 : 0.025 )
630 fCascadeVertexerSels[4] = 2.0 ; // max allowed DCA between the V0 and the bachelor (PDC07 : 0.1 / LHC09a4 : 0.2 )
631 fCascadeVertexerSels[5] = 0.95 ; // min allowed cosine of the cascade pointing angle (PDC07 : 0.9985 / LHC09a4 : 0.998 )
632 fCascadeVertexerSels[6] = 0.4 ; // min radius of the fiducial volume (PDC07 : 0.9 / LHC09a4 : 0.2 )
633 fCascadeVertexerSels[7] = 100. ; // max radius of the fiducial volume (PDC07 : 100 / LHC09a4 : 100 )
635 // Output slot #0 writes into a TList container (Cascade)
636 DefineOutput(1, TList::Class());
637 DefineOutput(2, TTree::Class());
641 AliAnalysisTaskExtractPerformanceCascade::~AliAnalysisTaskExtractPerformanceCascade()
643 //------------------------------------------------
645 //------------------------------------------------
655 //cleanup esd track cuts object too...
657 delete fESDtrackCuts;
667 //________________________________________________________________________
668 void AliAnalysisTaskExtractPerformanceCascade::UserCreateOutputObjects()
673 //------------------------------------------------
675 fTreeCascade = new TTree("fTreeCascade","CascadeCandidates");
677 //------------------------------------------------
678 // fTreeCascade Branch definitions - Cascade Tree
679 //------------------------------------------------
681 //------------------------------------------------
682 // fTreeCascade Branch definitions
683 //------------------------------------------------
685 //-----------BASIC-INFO---------------------------
686 /* 1*/ fTreeCascade->Branch("fTreeCascVarCharge",&fTreeCascVarCharge,"fTreeCascVarCharge/I");
687 /* 2*/ fTreeCascade->Branch("fTreeCascVarMassAsXi",&fTreeCascVarMassAsXi,"fTreeCascVarMassAsXi/F");
688 /* 3*/ fTreeCascade->Branch("fTreeCascVarMassAsOmega",&fTreeCascVarMassAsOmega,"fTreeCascVarMassAsOmega/F");
689 /* 4*/ fTreeCascade->Branch("fTreeCascVarPt",&fTreeCascVarPt,"fTreeCascVarPt/F");
690 /* 5*/ fTreeCascade->Branch("fTreeCascVarPtMC",&fTreeCascVarPtMC,"fTreeCascVarPtMC/F");
691 /* 6*/ fTreeCascade->Branch("fTreeCascVarRapXi",&fTreeCascVarRapXi,"fTreeCascVarRapXi/F");
692 /* 7*/ fTreeCascade->Branch("fTreeCascVarRapMC",&fTreeCascVarRapMC,"fTreeCascVarRapMC/F");
693 /* 8*/ fTreeCascade->Branch("fTreeCascVarRapOmega",&fTreeCascVarRapOmega,"fTreeCascVarRapOmega/F");
694 /* 9*/ fTreeCascade->Branch("fTreeCascVarNegEta",&fTreeCascVarNegEta,"fTreeCascVarNegEta/F");
695 /*10*/ fTreeCascade->Branch("fTreeCascVarPosEta",&fTreeCascVarPosEta,"fTreeCascVarPosEta/F");
696 /*11*/ fTreeCascade->Branch("fTreeCascVarBachEta",&fTreeCascVarBachEta,"fTreeCascVarBachEta/F");
697 //-----------INFO-FOR-CUTS------------------------
698 /*12*/ fTreeCascade->Branch("fTreeCascVarDCACascDaughters",&fTreeCascVarDCACascDaughters,"fTreeCascVarDCACascDaughters/F");
699 /*13*/ fTreeCascade->Branch("fTreeCascVarDCABachToPrimVtx",&fTreeCascVarDCABachToPrimVtx,"fTreeCascVarDCABachToPrimVtx/F");
700 /*14*/ fTreeCascade->Branch("fTreeCascVarDCAV0Daughters",&fTreeCascVarDCAV0Daughters,"fTreeCascVarDCAV0Daughters/F");
701 /*15*/ fTreeCascade->Branch("fTreeCascVarDCAV0ToPrimVtx",&fTreeCascVarDCAV0ToPrimVtx,"fTreeCascVarDCAV0ToPrimVtx/F");
702 /*16*/ fTreeCascade->Branch("fTreeCascVarDCAPosToPrimVtx",&fTreeCascVarDCAPosToPrimVtx,"fTreeCascVarDCAPosToPrimVtx/F");
703 /*17*/ fTreeCascade->Branch("fTreeCascVarDCANegToPrimVtx",&fTreeCascVarDCANegToPrimVtx,"fTreeCascVarDCANegToPrimVtx/F");
704 /*18*/ fTreeCascade->Branch("fTreeCascVarCascCosPointingAngle",&fTreeCascVarCascCosPointingAngle,"fTreeCascVarCascCosPointingAngle/F");
705 /*19*/ fTreeCascade->Branch("fTreeCascVarCascRadius",&fTreeCascVarCascRadius,"fTreeCascVarCascRadius/F");
706 /*20*/ fTreeCascade->Branch("fTreeCascVarV0Mass",&fTreeCascVarV0Mass,"fTreeCascVarV0Mass/F");
707 /*21*/ fTreeCascade->Branch("fTreeCascVarV0CosPointingAngle",&fTreeCascVarV0CosPointingAngle,"fTreeCascVarV0CosPointingAngle/F");
708 /*21*/ fTreeCascade->Branch("fTreeCascVarV0CosPointingAngleSpecial",&fTreeCascVarV0CosPointingAngleSpecial,"fTreeCascVarV0CosPointingAngleSpecial/F");
709 /*22*/ fTreeCascade->Branch("fTreeCascVarV0Radius",&fTreeCascVarV0Radius,"fTreeCascVarV0Radius/F");
710 /*23*/ fTreeCascade->Branch("fTreeCascVarLeastNbrClusters",&fTreeCascVarLeastNbrClusters,"fTreeCascVarLeastNbrClusters/I");
711 //-----------MULTIPLICITY-INFO--------------------
712 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicity",&fTreeCascVarMultiplicity,"fTreeCascVarMultiplicity/I");
713 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicityV0A",&fTreeCascVarMultiplicityV0A,"fTreeCascVarMultiplicityV0A/I");
714 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicityZNA",&fTreeCascVarMultiplicityZNA,"fTreeCascVarMultiplicityZNA/I");
715 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicityTRK",&fTreeCascVarMultiplicityTRK,"fTreeCascVarMultiplicityTRK/I");
716 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicitySPD",&fTreeCascVarMultiplicitySPD,"fTreeCascVarMultiplicitySPD/I");
717 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicityMC",&fTreeCascVarMultiplicityMC,"fTreeCascVarMultiplicityMC/I");
718 //-----------DECAY-LENGTH-INFO--------------------
719 /*25*/ fTreeCascade->Branch("fTreeCascVarDistOverTotMom",&fTreeCascVarDistOverTotMom,"fTreeCascVarDistOverTotMom/F");
720 //-----------MC-PID-------------------------------
721 /*25bis*/ fTreeCascade->Branch("fTreeCascVarIsPhysicalPrimary",&fTreeCascVarIsPhysicalPrimary,"fTreeCascVarIsPhysicalPrimary/I");
722 /*26*/ fTreeCascade->Branch("fTreeCascVarPID",&fTreeCascVarPID,"fTreeCascVarPID/I");
723 /*26*/ fTreeCascade->Branch("fTreeCascVarPIDSwapped",&fTreeCascVarPIDSwapped,"fTreeCascVarPIDSwapped/I");
724 /*27*/ fTreeCascade->Branch("fTreeCascVarPIDBachelor",&fTreeCascVarPIDBachelor,"fTreeCascVarPIDBachelor/I");
725 /*28*/ fTreeCascade->Branch("fTreeCascVarPIDNegative",&fTreeCascVarPIDNegative,"fTreeCascVarPIDNegative/I");
726 /*29*/ fTreeCascade->Branch("fTreeCascVarPIDPositive",&fTreeCascVarPIDPositive,"fTreeCascVarPIDPositive/I");
727 /*30*/ fTreeCascade->Branch("fTreeCascVarBachTransMom",&fTreeCascVarBachTransMom,"fTreeCascVarBachTransMom/F");
728 /*30*/ fTreeCascade->Branch("fTreeCascVarPosTransMom",&fTreeCascVarPosTransMom,"fTreeCascVarPosTransMom/F");
729 /*31*/ fTreeCascade->Branch("fTreeCascVarNegTransMom",&fTreeCascVarNegTransMom,"fTreeCascVarNegTransMom/F");
730 /*32*/ fTreeCascade->Branch("fTreeCascVarPosTransMomMC",&fTreeCascVarPosTransMomMC,"fTreeCascVarPosTransMomMC/F");
731 /*33*/ fTreeCascade->Branch("fTreeCascVarNegTransMomMC",&fTreeCascVarNegTransMomMC,"fTreeCascVarNegTransMomMC/F");
732 //------------------------------------------------
733 /*34*/ fTreeCascade->Branch("fTreeCascVarNegNSigmaPion",&fTreeCascVarNegNSigmaPion,"fTreeCascVarNegNSigmaPion/F");
734 /*35*/ fTreeCascade->Branch("fTreeCascVarNegNSigmaProton",&fTreeCascVarNegNSigmaProton,"fTreeCascVarNegNSigmaProton/F");
735 /*36*/ fTreeCascade->Branch("fTreeCascVarPosNSigmaPion",&fTreeCascVarPosNSigmaPion,"fTreeCascVarPosNSigmaPion/F");
736 /*37*/ fTreeCascade->Branch("fTreeCascVarPosNSigmaProton",&fTreeCascVarPosNSigmaProton,"fTreeCascVarPosNSigmaProton/F");
737 /*38*/ fTreeCascade->Branch("fTreeCascVarBachNSigmaPion",&fTreeCascVarBachNSigmaPion,"fTreeCascVarBachNSigmaPion/F");
738 /*39*/ fTreeCascade->Branch("fTreeCascVarBachNSigmaKaon",&fTreeCascVarBachNSigmaKaon,"fTreeCascVarBachNSigmaKaon/F");
740 /*29*/ fTreeCascade->Branch("fTreeCascVarkITSRefitBachelor",&fTreeCascVarkITSRefitBachelor,"fTreeCascVarkITSRefitBachelor/O");
741 /*29*/ fTreeCascade->Branch("fTreeCascVarkITSRefitNegative",&fTreeCascVarkITSRefitNegative,"fTreeCascVarkITSRefitNegative/O");
742 /*29*/ fTreeCascade->Branch("fTreeCascVarkITSRefitPositive",&fTreeCascVarkITSRefitPositive,"fTreeCascVarkITSRefitPositive/O");
744 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasXiMinus", &fTreeCascVarEvHasXiMinus, "fTreeCascVarEvHasXiMinus/O");
745 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasXiPlus", &fTreeCascVarEvHasXiPlus, "fTreeCascVarEvHasXiPlus/O");
746 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasOmegaMinus",&fTreeCascVarEvHasOmegaMinus,"fTreeCascVarEvHasOmegaMinus/O");
747 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasOmegaPlus", &fTreeCascVarEvHasOmegaPlus, "fTreeCascVarEvHasOmegaPlus/O");
748 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLambda", &fTreeCascVarEvHasLambda, "fTreeCascVarEvHasLambda/O");
749 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasAntiLambda",&fTreeCascVarEvHasAntiLambda,"fTreeCascVarEvHasAntiLambda/O");
751 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLowPtXiMinus", &fTreeCascVarEvHasLowPtXiMinus, "fTreeCascVarEvHasLowPtXiMinus/O");
752 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLowPtXiPlus", &fTreeCascVarEvHasLowPtXiPlus, "fTreeCascVarEvHasLowPtXiPlus/O");
753 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLowPtOmegaMinus",&fTreeCascVarEvHasLowPtOmegaMinus,"fTreeCascVarEvHasLowPtOmegaMinus/O");
754 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLowPtOmegaPlus", &fTreeCascVarEvHasLowPtOmegaPlus, "fTreeCascVarEvHasLowPtOmegaPlus/O");
755 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLowPtLambda", &fTreeCascVarEvHasLowPtLambda, "fTreeCascVarEvHasLowPtLambda/O");
756 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLowPtAntiLambda",&fTreeCascVarEvHasLowPtAntiLambda,"fTreeCascVarEvHasLowPtAntiLambda/O");
758 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasVeryLowPtXiMinus", &fTreeCascVarEvHasVeryLowPtXiMinus, "fTreeCascVarEvHasVeryLowPtXiMinus/O");
759 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasVeryLowPtXiPlus", &fTreeCascVarEvHasVeryLowPtXiPlus, "fTreeCascVarEvHasVeryLowPtXiPlus/O");
760 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasVeryLowPtOmegaMinus",&fTreeCascVarEvHasVeryLowPtOmegaMinus,"fTreeCascVarEvHasVeryLowPtOmegaMinus/O");
761 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasVeryLowPtOmegaPlus", &fTreeCascVarEvHasVeryLowPtOmegaPlus, "fTreeCascVarEvHasVeryLowPtOmegaPlus/O");
762 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasVeryLowPtLambda", &fTreeCascVarEvHasVeryLowPtLambda, "fTreeCascVarEvHasVeryLowPtLambda/O");
763 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasVeryLowPtAntiLambda",&fTreeCascVarEvHasVeryLowPtAntiLambda,"fTreeCascVarEvHasVeryLowPtAntiLambda/O");
765 //------------------------------------------------
766 // Particle Identification Setup
767 //------------------------------------------------
769 AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
770 AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
771 fPIDResponse = inputHandler->GetPIDResponse();
775 if(! fESDtrackCuts ){
776 fESDtrackCuts = new AliESDtrackCuts();
779 fUtils = new AliAnalysisUtils();
782 //------------------------------------------------
783 // V0 Multiplicity Histograms
784 //------------------------------------------------
788 fListHist = new TList();
789 fListHist->SetOwner(); // See http://root.cern.ch/root/html/TCollection.html#TCollection:SetOwner
792 if(! fHistV0MultiplicityBeforeTrigSel) {
793 fHistV0MultiplicityBeforeTrigSel = new TH1F("fHistV0MultiplicityBeforeTrigSel",
794 "V0s per event (before Trig. Sel.);Nbr of V0s/Evt;Events",
796 fListHist->Add(fHistV0MultiplicityBeforeTrigSel);
799 if(! fHistV0MultiplicityForTrigEvt) {
800 fHistV0MultiplicityForTrigEvt = new TH1F("fHistV0MultiplicityForTrigEvt",
801 "V0s per event (for triggered evt);Nbr of V0s/Evt;Events",
803 fListHist->Add(fHistV0MultiplicityForTrigEvt);
806 if(! fHistV0MultiplicityForSelEvt) {
807 fHistV0MultiplicityForSelEvt = new TH1F("fHistV0MultiplicityForSelEvt",
808 "V0s per event;Nbr of V0s/Evt;Events",
810 fListHist->Add(fHistV0MultiplicityForSelEvt);
813 if(! fHistV0MultiplicityForSelEvtNoTPCOnly) {
814 fHistV0MultiplicityForSelEvtNoTPCOnly = new TH1F("fHistV0MultiplicityForSelEvtNoTPCOnly",
815 "V0s per event;Nbr of V0s/Evt;Events",
817 fListHist->Add(fHistV0MultiplicityForSelEvtNoTPCOnly);
819 if(! fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup) {
820 fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup = new TH1F("fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup",
821 "V0s per event;Nbr of V0s/Evt;Events",
823 fListHist->Add(fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup);
826 //------------------------------------------------
827 // Track Multiplicity Histograms
828 //------------------------------------------------
830 if(! fHistMultiplicityBeforeTrigSel) {
831 fHistMultiplicityBeforeTrigSel = new TH1F("fHistMultiplicityBeforeTrigSel",
832 "Tracks per event;Nbr of Tracks;Events",
834 fListHist->Add(fHistMultiplicityBeforeTrigSel);
836 if(! fHistMultiplicityForTrigEvt) {
837 fHistMultiplicityForTrigEvt = new TH1F("fHistMultiplicityForTrigEvt",
838 "Tracks per event;Nbr of Tracks;Events",
840 fListHist->Add(fHistMultiplicityForTrigEvt);
842 if(! fHistMultiplicity) {
843 fHistMultiplicity = new TH1F("fHistMultiplicity",
844 "Tracks per event;Nbr of Tracks;Events",
846 fListHist->Add(fHistMultiplicity);
848 if(! fHistMultiplicityNoTPCOnly) {
849 fHistMultiplicityNoTPCOnly = new TH1F("fHistMultiplicityNoTPCOnly",
850 "Tracks per event;Nbr of Tracks;Events",
852 fListHist->Add(fHistMultiplicityNoTPCOnly);
854 if(! fHistMultiplicityNoTPCOnlyNoPileup) {
855 fHistMultiplicityNoTPCOnlyNoPileup = new TH1F("fHistMultiplicityNoTPCOnlyNoPileup",
856 "Tracks per event;Nbr of Tracks;Events",
858 fListHist->Add(fHistMultiplicityNoTPCOnlyNoPileup);
862 //V0A Centrality (if PbPb / pPb)
863 if(! fHistMultiplicityV0ABeforeTrigSel) {
864 fHistMultiplicityV0ABeforeTrigSel = new TH1F("fHistMultiplicityV0ABeforeTrigSel",
865 "Centrality Distribution: V0A;V0A Centrality;Events",
867 fListHist->Add(fHistMultiplicityV0ABeforeTrigSel);
869 if(! fHistMultiplicityV0AForTrigEvt) {
870 fHistMultiplicityV0AForTrigEvt = new TH1F("fHistMultiplicityV0AForTrigEvt",
871 "Centrality Distribution: V0A;V0A Centrality;Events",
873 fListHist->Add(fHistMultiplicityV0AForTrigEvt);
875 if(! fHistMultiplicityV0A) {
876 fHistMultiplicityV0A = new TH1F("fHistMultiplicityV0A",
877 "Centrality Distribution: V0A;V0A Centrality;Events",
879 fListHist->Add(fHistMultiplicityV0A);
881 if(! fHistMultiplicityV0ANoTPCOnly) {
882 fHistMultiplicityV0ANoTPCOnly = new TH1F("fHistMultiplicityV0ANoTPCOnly",
883 "Centrality Distribution: V0A;V0A Centrality;Events",
885 fListHist->Add(fHistMultiplicityV0ANoTPCOnly);
887 if(! fHistMultiplicityV0ANoTPCOnlyNoPileup) {
888 fHistMultiplicityV0ANoTPCOnlyNoPileup = new TH1F("fHistMultiplicityV0ANoTPCOnlyNoPileup",
889 "Centrality Distribution: V0A;V0A Centrality;Events",
891 fListHist->Add(fHistMultiplicityV0ANoTPCOnlyNoPileup);
894 //ZNA Centrality (if PbPb / pPb)
895 if(! fHistMultiplicityZNABeforeTrigSel) {
896 fHistMultiplicityZNABeforeTrigSel = new TH1F("fHistMultiplicityZNABeforeTrigSel",
897 "Centrality Distribution: ZNA;ZNA Centrality;Events",
899 fListHist->Add(fHistMultiplicityZNABeforeTrigSel);
901 if(! fHistMultiplicityZNAForTrigEvt) {
902 fHistMultiplicityZNAForTrigEvt = new TH1F("fHistMultiplicityZNAForTrigEvt",
903 "Centrality Distribution: ZNA;ZNA Centrality;Events",
905 fListHist->Add(fHistMultiplicityZNAForTrigEvt);
907 if(! fHistMultiplicityZNA) {
908 fHistMultiplicityZNA = new TH1F("fHistMultiplicityZNA",
909 "Centrality Distribution: ZNA;ZNA Centrality;Events",
911 fListHist->Add(fHistMultiplicityZNA);
913 if(! fHistMultiplicityZNANoTPCOnly) {
914 fHistMultiplicityZNANoTPCOnly = new TH1F("fHistMultiplicityZNANoTPCOnly",
915 "Centrality Distribution: ZNA;ZNA Centrality;Events",
917 fListHist->Add(fHistMultiplicityZNANoTPCOnly);
919 if(! fHistMultiplicityZNANoTPCOnlyNoPileup) {
920 fHistMultiplicityZNANoTPCOnlyNoPileup = new TH1F("fHistMultiplicityZNANoTPCOnlyNoPileup",
921 "Centrality Distribution: ZNA;ZNA Centrality;Events",
923 fListHist->Add(fHistMultiplicityZNANoTPCOnlyNoPileup);
926 //TRK Centrality (if PbPb / pPb)
927 if(! fHistMultiplicityTRKBeforeTrigSel) {
928 fHistMultiplicityTRKBeforeTrigSel = new TH1F("fHistMultiplicityTRKBeforeTrigSel",
929 "Centrality Distribution: TRK;TRK Centrality;Events",
931 fListHist->Add(fHistMultiplicityTRKBeforeTrigSel);
933 if(! fHistMultiplicityTRKForTrigEvt) {
934 fHistMultiplicityTRKForTrigEvt = new TH1F("fHistMultiplicityTRKForTrigEvt",
935 "Centrality Distribution: TRK;TRK Centrality;Events",
937 fListHist->Add(fHistMultiplicityTRKForTrigEvt);
939 if(! fHistMultiplicityTRK) {
940 fHistMultiplicityTRK = new TH1F("fHistMultiplicityTRK",
941 "Centrality Distribution: TRK;TRK Centrality;Events",
943 fListHist->Add(fHistMultiplicityTRK);
945 if(! fHistMultiplicityTRKNoTPCOnly) {
946 fHistMultiplicityTRKNoTPCOnly = new TH1F("fHistMultiplicityTRKNoTPCOnly",
947 "Centrality Distribution: TRK;TRK Centrality;Events",
949 fListHist->Add(fHistMultiplicityTRKNoTPCOnly);
951 if(! fHistMultiplicityTRKNoTPCOnlyNoPileup) {
952 fHistMultiplicityTRKNoTPCOnlyNoPileup = new TH1F("fHistMultiplicityTRKNoTPCOnlyNoPileup",
953 "Centrality Distribution: TRK;TRK Centrality;Events",
955 fListHist->Add(fHistMultiplicityTRKNoTPCOnlyNoPileup);
958 //SPD Centrality (if PbPb / pPb)
959 if(! fHistMultiplicitySPDBeforeTrigSel) {
960 fHistMultiplicitySPDBeforeTrigSel = new TH1F("fHistMultiplicitySPDBeforeTrigSel",
961 "Centrality Distribution: SPD;SPD Centrality;Events",
963 fListHist->Add(fHistMultiplicitySPDBeforeTrigSel);
965 if(! fHistMultiplicitySPDForTrigEvt) {
966 fHistMultiplicitySPDForTrigEvt = new TH1F("fHistMultiplicitySPDForTrigEvt",
967 "Centrality Distribution: SPD;SPD Centrality;Events",
969 fListHist->Add(fHistMultiplicitySPDForTrigEvt);
971 if(! fHistMultiplicitySPD) {
972 fHistMultiplicitySPD = new TH1F("fHistMultiplicitySPD",
973 "Centrality Distribution: SPD;SPD Centrality;Events",
975 fListHist->Add(fHistMultiplicitySPD);
977 if(! fHistMultiplicitySPDNoTPCOnly) {
978 fHistMultiplicitySPDNoTPCOnly = new TH1F("fHistMultiplicitySPDNoTPCOnly",
979 "Centrality Distribution: SPD;SPD Centrality;Events",
981 fListHist->Add(fHistMultiplicitySPDNoTPCOnly);
983 if(! fHistMultiplicitySPDNoTPCOnlyNoPileup) {
984 fHistMultiplicitySPDNoTPCOnlyNoPileup = new TH1F("fHistMultiplicitySPDNoTPCOnlyNoPileup",
985 "Centrality Distribution: SPD;SPD Centrality;Events",
987 fListHist->Add(fHistMultiplicitySPDNoTPCOnlyNoPileup);
993 //------------------------------------------------
994 // Generated Particle Histograms
995 //------------------------------------------------
997 Int_t lCustomNBins = 200;
998 Double_t lCustomPtUpperLimit = 20;
999 Int_t lCustomNBinsMultiplicity = 100;
1001 //----------------------------------
1002 // Raw Generated (Pre-physics-selection)
1003 //----------------------------------
1005 //--------------------------------------------------------------------------------------
1006 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1008 if(! f3dHistGenPtVsYVsMultXiMinus) {
1009 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);
1010 fListHist->Add(f3dHistGenPtVsYVsMultXiMinus);
1012 if(! f3dHistGenPtVsYVsMultXiPlus) {
1013 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);
1014 fListHist->Add(f3dHistGenPtVsYVsMultXiPlus);
1016 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1018 if(! f3dHistGenPtVsYVsMultOmegaMinus) {
1019 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);
1020 fListHist->Add(f3dHistGenPtVsYVsMultOmegaMinus);
1022 if(! f3dHistGenPtVsYVsMultOmegaPlus) {
1023 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);
1024 fListHist->Add(f3dHistGenPtVsYVsMultOmegaPlus);
1027 //All generated cascades, YCMS
1029 if(! f3dHistGenPtVsYCMSVsMultXiMinus) {
1030 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);
1031 fListHist->Add(f3dHistGenPtVsYCMSVsMultXiMinus);
1033 if(! f3dHistGenPtVsYCMSVsMultXiPlus) {
1034 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);
1035 fListHist->Add(f3dHistGenPtVsYCMSVsMultXiPlus);
1037 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1039 if(! f3dHistGenPtVsYCMSVsMultOmegaMinus) {
1040 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);
1041 fListHist->Add(f3dHistGenPtVsYCMSVsMultOmegaMinus);
1043 if(! f3dHistGenPtVsYCMSVsMultOmegaPlus) {
1044 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);
1045 fListHist->Add(f3dHistGenPtVsYCMSVsMultOmegaPlus);
1049 //--------------------------------------------------------------------------------------
1050 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1052 if(! f3dHistGenSelectedPtVsYVsMultXiMinus) {
1053 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);
1054 fListHist->Add(f3dHistGenSelectedPtVsYVsMultXiMinus);
1056 if(! f3dHistGenSelectedPtVsYVsMultXiPlus) {
1057 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);
1058 fListHist->Add(f3dHistGenSelectedPtVsYVsMultXiPlus);
1060 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1062 if(! f3dHistGenSelectedPtVsYVsMultOmegaMinus) {
1063 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);
1064 fListHist->Add(f3dHistGenSelectedPtVsYVsMultOmegaMinus);
1066 if(! f3dHistGenSelectedPtVsYVsMultOmegaPlus) {
1067 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);
1068 fListHist->Add(f3dHistGenSelectedPtVsYVsMultOmegaPlus);
1071 //ANALYSIS level Cascades, YCMS
1074 if(! f3dHistGenSelectedPtVsYCMSVsMultXiMinus) {
1075 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);
1076 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultXiMinus);
1078 if(! f3dHistGenSelectedPtVsYCMSVsMultXiPlus) {
1079 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);
1080 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultXiPlus);
1082 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1084 if(! f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus) {
1085 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);
1086 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus);
1088 if(! f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus) {
1089 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);
1090 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus);
1093 //======================================================================================
1094 //--------------------------------------------------------------------------------------
1095 // True Generated (For Multiplicity Unfolding)
1096 //--------------------------------------------------------------------------------------
1097 //======================================================================================
1099 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1101 if(! f3dHistGenPtVsYVsMultMCXiMinus) {
1102 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);
1103 fListHist->Add(f3dHistGenPtVsYVsMultMCXiMinus);
1105 if(! f3dHistGenPtVsYVsMultMCXiPlus) {
1106 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);
1107 fListHist->Add(f3dHistGenPtVsYVsMultMCXiPlus);
1109 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1111 if(! f3dHistGenPtVsYVsMultMCOmegaMinus) {
1112 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);
1113 fListHist->Add(f3dHistGenPtVsYVsMultMCOmegaMinus);
1115 if(! f3dHistGenPtVsYVsMultMCOmegaPlus) {
1116 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);
1117 fListHist->Add(f3dHistGenPtVsYVsMultMCOmegaPlus);
1120 //All generated cascades, YCMS
1122 if(! f3dHistGenPtVsYCMSVsMultMCXiMinus) {
1123 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);
1124 fListHist->Add(f3dHistGenPtVsYCMSVsMultMCXiMinus);
1126 if(! f3dHistGenPtVsYCMSVsMultMCXiPlus) {
1127 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);
1128 fListHist->Add(f3dHistGenPtVsYCMSVsMultMCXiPlus);
1130 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1132 if(! f3dHistGenPtVsYCMSVsMultMCOmegaMinus) {
1133 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);
1134 fListHist->Add(f3dHistGenPtVsYCMSVsMultMCOmegaMinus);
1136 if(! f3dHistGenPtVsYCMSVsMultMCOmegaPlus) {
1137 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);
1138 fListHist->Add(f3dHistGenPtVsYCMSVsMultMCOmegaPlus);
1142 //--------------------------------------------------------------------------------------
1143 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1145 if(! f3dHistGenSelectedPtVsYVsMultMCXiMinus) {
1146 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);
1147 fListHist->Add(f3dHistGenSelectedPtVsYVsMultMCXiMinus);
1149 if(! f3dHistGenSelectedPtVsYVsMultMCXiPlus) {
1150 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);
1151 fListHist->Add(f3dHistGenSelectedPtVsYVsMultMCXiPlus);
1153 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1155 if(! f3dHistGenSelectedPtVsYVsMultMCOmegaMinus) {
1156 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);
1157 fListHist->Add(f3dHistGenSelectedPtVsYVsMultMCOmegaMinus);
1159 if(! f3dHistGenSelectedPtVsYVsMultMCOmegaPlus) {
1160 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);
1161 fListHist->Add(f3dHistGenSelectedPtVsYVsMultMCOmegaPlus);
1164 //ANALYSIS level Cascades, YCMS
1167 if(! f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus) {
1168 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);
1169 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus);
1171 if(! f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus) {
1172 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);
1173 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus);
1175 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1177 if(! f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus) {
1178 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);
1179 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus);
1181 if(! f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus) {
1182 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);
1183 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus);
1186 //======================================================================================
1187 //--------------------------------------------------------------------------------------
1189 //--------------------------------------------------------------------------------------
1190 //======================================================================================
1192 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1194 if(! f3dHistGenPtVsYVsMultV0AXiMinus) {
1195 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);
1196 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultV0AXiMinus);
1198 if(! f3dHistGenPtVsYVsMultV0AXiPlus) {
1199 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);
1200 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultV0AXiPlus);
1202 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1204 if(! f3dHistGenPtVsYVsMultV0AOmegaMinus) {
1205 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);
1206 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultV0AOmegaMinus);
1208 if(! f3dHistGenPtVsYVsMultV0AOmegaPlus) {
1209 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);
1210 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultV0AOmegaPlus);
1213 //All generated cascades, YCMS
1215 if(! f3dHistGenPtVsYCMSVsMultV0AXiMinus) {
1216 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);
1217 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultV0AXiMinus);
1219 if(! f3dHistGenPtVsYCMSVsMultV0AXiPlus) {
1220 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);
1221 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultV0AXiPlus);
1223 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1225 if(! f3dHistGenPtVsYCMSVsMultV0AOmegaMinus) {
1226 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);
1227 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultV0AOmegaMinus);
1229 if(! f3dHistGenPtVsYCMSVsMultV0AOmegaPlus) {
1230 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);
1231 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultV0AOmegaPlus);
1235 //--------------------------------------------------------------------------------------
1236 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1238 if(! f3dHistGenSelectedPtVsYVsMultV0AXiMinus) {
1239 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);
1240 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultV0AXiMinus);
1242 if(! f3dHistGenSelectedPtVsYVsMultV0AXiPlus) {
1243 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);
1244 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultV0AXiPlus);
1246 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1248 if(! f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus) {
1249 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);
1250 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus);
1252 if(! f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus) {
1253 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);
1254 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus);
1257 //ANALYSIS level Cascades, YCMS
1260 if(! f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus) {
1261 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);
1262 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus);
1264 if(! f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus) {
1265 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);
1266 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus);
1268 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1270 if(! f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus) {
1271 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);
1272 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus);
1274 if(! f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus) {
1275 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);
1276 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus);
1280 //======================================================================================
1281 //--------------------------------------------------------------------------------------
1283 //--------------------------------------------------------------------------------------
1284 //======================================================================================
1286 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1288 if(! f3dHistGenPtVsYVsMultZNAXiMinus) {
1289 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);
1290 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultZNAXiMinus);
1292 if(! f3dHistGenPtVsYVsMultZNAXiPlus) {
1293 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);
1294 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultZNAXiPlus);
1296 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1298 if(! f3dHistGenPtVsYVsMultZNAOmegaMinus) {
1299 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);
1300 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultZNAOmegaMinus);
1302 if(! f3dHistGenPtVsYVsMultZNAOmegaPlus) {
1303 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);
1304 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultZNAOmegaPlus);
1307 //All generated cascades, YCMS
1309 if(! f3dHistGenPtVsYCMSVsMultZNAXiMinus) {
1310 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);
1311 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultZNAXiMinus);
1313 if(! f3dHistGenPtVsYCMSVsMultZNAXiPlus) {
1314 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);
1315 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultZNAXiPlus);
1317 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1319 if(! f3dHistGenPtVsYCMSVsMultZNAOmegaMinus) {
1320 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);
1321 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultZNAOmegaMinus);
1323 if(! f3dHistGenPtVsYCMSVsMultZNAOmegaPlus) {
1324 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);
1325 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultZNAOmegaPlus);
1329 //--------------------------------------------------------------------------------------
1330 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1332 if(! f3dHistGenSelectedPtVsYVsMultZNAXiMinus) {
1333 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);
1334 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultZNAXiMinus);
1336 if(! f3dHistGenSelectedPtVsYVsMultZNAXiPlus) {
1337 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);
1338 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultZNAXiPlus);
1340 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1342 if(! f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus) {
1343 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);
1344 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus);
1346 if(! f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus) {
1347 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);
1348 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus);
1351 //ANALYSIS level Cascades, YCMS
1354 if(! f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus) {
1355 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);
1356 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus);
1358 if(! f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus) {
1359 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);
1360 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus);
1362 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1364 if(! f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus) {
1365 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);
1366 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus);
1368 if(! f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus) {
1369 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);
1370 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus);
1374 //======================================================================================
1375 //--------------------------------------------------------------------------------------
1377 //--------------------------------------------------------------------------------------
1378 //======================================================================================
1380 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1382 if(! f3dHistGenPtVsYVsMultTRKXiMinus) {
1383 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);
1384 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultTRKXiMinus);
1386 if(! f3dHistGenPtVsYVsMultTRKXiPlus) {
1387 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);
1388 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultTRKXiPlus);
1390 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1392 if(! f3dHistGenPtVsYVsMultTRKOmegaMinus) {
1393 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);
1394 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultTRKOmegaMinus);
1396 if(! f3dHistGenPtVsYVsMultTRKOmegaPlus) {
1397 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);
1398 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultTRKOmegaPlus);
1401 //All generated cascades, YCMS
1403 if(! f3dHistGenPtVsYCMSVsMultTRKXiMinus) {
1404 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);
1405 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultTRKXiMinus);
1407 if(! f3dHistGenPtVsYCMSVsMultTRKXiPlus) {
1408 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);
1409 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultTRKXiPlus);
1411 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1413 if(! f3dHistGenPtVsYCMSVsMultTRKOmegaMinus) {
1414 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);
1415 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultTRKOmegaMinus);
1417 if(! f3dHistGenPtVsYCMSVsMultTRKOmegaPlus) {
1418 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);
1419 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultTRKOmegaPlus);
1423 //--------------------------------------------------------------------------------------
1424 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1426 if(! f3dHistGenSelectedPtVsYVsMultTRKXiMinus) {
1427 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);
1428 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultTRKXiMinus);
1430 if(! f3dHistGenSelectedPtVsYVsMultTRKXiPlus) {
1431 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);
1432 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultTRKXiPlus);
1434 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1436 if(! f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus) {
1437 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);
1438 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus);
1440 if(! f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus) {
1441 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);
1442 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus);
1445 //ANALYSIS level Cascades, YCMS
1448 if(! f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus) {
1449 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);
1450 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus);
1452 if(! f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus) {
1453 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);
1454 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus);
1456 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1458 if(! f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus) {
1459 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);
1460 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus);
1462 if(! f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus) {
1463 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);
1464 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus);
1467 //======================================================================================
1468 //--------------------------------------------------------------------------------------
1470 //--------------------------------------------------------------------------------------
1471 //======================================================================================
1473 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1475 if(! f3dHistGenPtVsYVsMultSPDXiMinus) {
1476 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);
1477 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultSPDXiMinus);
1479 if(! f3dHistGenPtVsYVsMultSPDXiPlus) {
1480 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);
1481 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultSPDXiPlus);
1483 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1485 if(! f3dHistGenPtVsYVsMultSPDOmegaMinus) {
1486 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);
1487 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultSPDOmegaMinus);
1489 if(! f3dHistGenPtVsYVsMultSPDOmegaPlus) {
1490 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);
1491 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultSPDOmegaPlus);
1494 //All generated cascades, YCMS
1496 if(! f3dHistGenPtVsYCMSVsMultSPDXiMinus) {
1497 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);
1498 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultSPDXiMinus);
1500 if(! f3dHistGenPtVsYCMSVsMultSPDXiPlus) {
1501 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);
1502 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultSPDXiPlus);
1504 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1506 if(! f3dHistGenPtVsYCMSVsMultSPDOmegaMinus) {
1507 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);
1508 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultSPDOmegaMinus);
1510 if(! f3dHistGenPtVsYCMSVsMultSPDOmegaPlus) {
1511 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);
1512 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultSPDOmegaPlus);
1516 //--------------------------------------------------------------------------------------
1517 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1519 if(! f3dHistGenSelectedPtVsYVsMultSPDXiMinus) {
1520 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);
1521 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultSPDXiMinus);
1523 if(! f3dHistGenSelectedPtVsYVsMultSPDXiPlus) {
1524 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);
1525 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultSPDXiPlus);
1527 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1529 if(! f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus) {
1530 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);
1531 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus);
1533 if(! f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus) {
1534 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);
1535 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus);
1538 //ANALYSIS level Cascades, YCMS
1541 if(! f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus) {
1542 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);
1543 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus);
1545 if(! f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus) {
1546 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);
1547 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus);
1549 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1551 if(! f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus) {
1552 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);
1553 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus);
1555 if(! f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus) {
1556 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);
1557 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus);
1560 //----------------------------------
1561 // Primary Vertex Position Histos
1562 //----------------------------------
1565 fHistPVx = new TH1F("fHistPVx",
1566 "PV x position;Nbr of Evts;x",
1568 fListHist->Add(fHistPVx);
1571 fHistPVy = new TH1F("fHistPVy",
1572 "PV y position;Nbr of Evts;y",
1574 fListHist->Add(fHistPVy);
1577 fHistPVz = new TH1F("fHistPVz",
1578 "PV z position;Nbr of Evts;z",
1580 fListHist->Add(fHistPVz);
1583 if(! fHistPVxAnalysis) {
1584 fHistPVxAnalysis = new TH1F("fHistPVxAnalysis",
1585 "PV x position;Nbr of Evts;x",
1587 fListHist->Add(fHistPVxAnalysis);
1589 if(! fHistPVyAnalysis) {
1590 fHistPVyAnalysis = new TH1F("fHistPVyAnalysis",
1591 "PV y position;Nbr of Evts;y",
1593 fListHist->Add(fHistPVyAnalysis);
1595 if(! fHistPVzAnalysis) {
1596 fHistPVzAnalysis = new TH1F("fHistPVzAnalysis",
1597 "PV z position;Nbr of Evts;z",
1599 fListHist->Add(fHistPVzAnalysis);
1602 //List of Histograms: Normal
1603 PostData(1, fListHist);
1605 //TTree Object: Saved to base directory. Should cache to disk while saving.
1606 //(Important to avoid excessive memory usage, particularly when merging)
1607 PostData(2, fTreeCascade);
1609 }// end UserCreateOutputObjects
1612 //________________________________________________________________________
1613 void AliAnalysisTaskExtractPerformanceCascade::UserExec(Option_t *)
1616 // Called for each event
1618 AliESDEvent *lESDevent = 0x0;
1619 AliMCEvent *lMCevent = 0x0;
1620 AliStack *lMCstack = 0x0;
1622 Int_t lNumberOfV0s = -1;
1623 Double_t lTrkgPrimaryVtxPos[3] = {-100.0, -100.0, -100.0};
1624 Double_t lBestPrimaryVtxPos[3] = {-100.0, -100.0, -100.0};
1625 Double_t lMagneticField = -10.;
1627 // Connect to the InputEvent
1628 // After these lines, we should have an ESD/AOD event + the number of V0s in it.
1630 // Appropriate for ESD analysis!
1632 lESDevent = dynamic_cast<AliESDEvent*>( InputEvent() );
1634 AliWarning("ERROR: lESDevent not available \n");
1638 /* --- Acquisition of exact event ID
1639 fTreeVariableRunNumber = lESDevent->GetRunNumber();
1640 fTreeVariableEventNumber =
1641 ( ( ((ULong64_t)lESDevent->GetPeriodNumber() ) << 36 ) |
1642 ( ((ULong64_t)lESDevent->GetOrbitNumber () ) << 12 ) |
1643 ((ULong64_t)lESDevent->GetBunchCrossNumber() ) );
1645 lMCevent = MCEvent();
1647 Printf("ERROR: Could not retrieve MC event \n");
1648 cout << "Name of the file with pb :" << fInputHandler->GetTree()->GetCurrentFile()->GetName() << endl;
1652 lMCstack = lMCevent->Stack();
1654 Printf("ERROR: Could not retrieve MC stack \n");
1655 cout << "Name of the file with pb :" << fInputHandler->GetTree()->GetCurrentFile()->GetName() << endl;
1658 TArrayF mcPrimaryVtx;
1659 AliGenEventHeader* mcHeader=lMCevent->GenEventHeader();
1660 if(!mcHeader) return;
1661 mcHeader->PrimaryVertex(mcPrimaryVtx);
1663 //------------------------------------------------
1664 // Multiplicity Information Acquistion
1665 //------------------------------------------------
1667 //REVISED multiplicity estimator after 'multiplicity day' (2011)
1668 Int_t lMultiplicity = -100;
1669 Int_t lMultiplicityV0A = -100;
1670 Int_t lMultiplicityZNA = -100;
1671 Int_t lMultiplicityTRK = -100;
1672 Int_t lMultiplicitySPD = -100;
1675 if(fkIsNuclear == kFALSE) lMultiplicity = fESDtrackCuts->GetReferenceMultiplicity(lESDevent, AliESDtrackCuts::kTrackletsITSTPC, fEtaRefMult );
1677 //--------- GENERATED NUMBER OF CHARGED PARTICLES
1678 // ---> Set Variables to Zero again
1679 // ---> Variable Definition
1681 Long_t lNumberOfCharged = 0;
1683 //----- Loop on Stack ----------------------------------------------------------------
1684 for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < (lMCstack->GetNtrack()); iCurrentLabelStack++)
1685 {// This is the begining of the loop on tracks
1686 TParticle* particleOne = lMCstack->Particle(iCurrentLabelStack);
1687 if(!particleOne) continue;
1688 if(!particleOne->GetPDG()) continue;
1689 Double_t lThisCharge = particleOne->GetPDG()->Charge()/3.;
1690 if(TMath::Abs(lThisCharge)<0.001) continue;
1691 if(! (lMCstack->IsPhysicalPrimary(iCurrentLabelStack)) ) continue;
1693 //Double_t gpt = particleOne -> Pt();
1694 Double_t geta = particleOne -> Eta();
1696 if( TMath::Abs(geta) < 0.5) lNumberOfCharged++;
1697 }//End of loop on tracks
1698 //----- End Loop on Stack ------------------------------------------------------------
1701 //---> If this is a nuclear collision, then go nuclear on "multiplicity" variable...
1702 //---> Warning: Experimental
1703 if(fkIsNuclear == kTRUE){
1704 AliCentrality* centrality;
1705 centrality = lESDevent->GetCentrality();
1706 lMultiplicity = ( ( Int_t ) ( centrality->GetCentralityPercentile( fCentralityEstimator.Data() ) ) );
1707 lMultiplicityV0A = ( ( Int_t ) ( centrality->GetCentralityPercentile( "V0A" ) ) );
1708 lMultiplicityZNA = ( ( Int_t ) ( centrality->GetCentralityPercentile( "ZNA" ) ) );
1709 lMultiplicityTRK = ( ( Int_t ) ( centrality->GetCentralityPercentile( "TRK" ) ) );
1710 lMultiplicitySPD = ( ( Int_t ) ( centrality->GetCentralityPercentile( "CL1" ) ) );
1711 if (centrality->GetQuality()>1) {
1712 PostData(1, fListHist);
1713 PostData(2, fTreeCascade);
1718 //Set variable for filling tree afterwards!
1719 //---> pp case......: GetReferenceMultiplicity
1720 //---> Pb-Pb case...: Centrality by V0M
1722 fTreeCascVarMultiplicity = lMultiplicity;
1723 fTreeCascVarMultiplicityMC = lNumberOfCharged;
1724 fTreeCascVarMultiplicityV0A = lMultiplicityV0A;
1725 fTreeCascVarMultiplicityZNA = lMultiplicityZNA;
1726 fTreeCascVarMultiplicityTRK = lMultiplicityTRK;
1727 fTreeCascVarMultiplicitySPD = lMultiplicitySPD;
1729 fHistV0MultiplicityBeforeTrigSel->Fill ( lESDevent->GetNumberOfV0s() );
1730 fHistMultiplicityBeforeTrigSel->Fill ( lMultiplicity );
1731 fHistMultiplicityV0ABeforeTrigSel->Fill ( lMultiplicityV0A );
1732 fHistMultiplicityZNABeforeTrigSel->Fill ( lMultiplicityZNA );
1733 fHistMultiplicityTRKBeforeTrigSel->Fill ( lMultiplicityTRK );
1734 fHistMultiplicitySPDBeforeTrigSel->Fill ( lMultiplicitySPD );
1736 //------------------------------------------------
1737 // MC Information Acquistion
1738 //------------------------------------------------
1740 Int_t iNumberOfPrimaries = -1;
1741 iNumberOfPrimaries = lMCstack->GetNprimary();
1742 if(iNumberOfPrimaries < 1) return;
1744 //------------------------------------------------
1745 // Variable Definition
1746 //------------------------------------------------
1748 Int_t lNbMCPrimary = 0;
1750 Double_t lPtCurrentPart = 0;
1752 //Int_t lComeFromSigma = 0;
1754 // current mc particle 's mother
1755 //Int_t iCurrentMother = 0;
1756 lNbMCPrimary = lMCstack->GetNprimary();
1758 //------------------------------------------------
1759 // Pre-Physics Selection
1760 //------------------------------------------------
1763 fTreeCascVarEvHasXiMinus = kFALSE;
1764 fTreeCascVarEvHasXiPlus = kFALSE;
1765 fTreeCascVarEvHasOmegaMinus = kFALSE;
1766 fTreeCascVarEvHasOmegaPlus = kFALSE;
1767 fTreeCascVarEvHasLambda = kFALSE;
1768 fTreeCascVarEvHasAntiLambda = kFALSE;
1770 fTreeCascVarEvHasLowPtXiMinus = kFALSE;
1771 fTreeCascVarEvHasLowPtXiPlus = kFALSE;
1772 fTreeCascVarEvHasLowPtOmegaMinus = kFALSE;
1773 fTreeCascVarEvHasLowPtOmegaPlus = kFALSE;
1774 fTreeCascVarEvHasLowPtLambda = kFALSE;
1775 fTreeCascVarEvHasLowPtAntiLambda = kFALSE;
1777 fTreeCascVarEvHasVeryLowPtXiMinus = kFALSE;
1778 fTreeCascVarEvHasVeryLowPtXiPlus = kFALSE;
1779 fTreeCascVarEvHasVeryLowPtOmegaMinus = kFALSE;
1780 fTreeCascVarEvHasVeryLowPtOmegaPlus = kFALSE;
1781 fTreeCascVarEvHasVeryLowPtLambda = kFALSE;
1782 fTreeCascVarEvHasVeryLowPtAntiLambda = kFALSE;
1785 //----- Loop on primary Xi, Omega --------------------------------------------------------------
1786 for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < lNbMCPrimary; iCurrentLabelStack++)
1787 {// This is the begining of the loop on primaries
1789 TParticle* lCurrentParticlePrimary = 0x0;
1790 lCurrentParticlePrimary = lMCstack->Particle( iCurrentLabelStack );
1791 if(!lCurrentParticlePrimary){
1792 Printf("Cascade loop %d - MC TParticle pointer to current stack particle = 0x0 ! Skip ...\n", iCurrentLabelStack );
1796 //Event Type Acquisition
1797 if(lCurrentParticlePrimary->GetPdgCode() == 3312){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) ) fTreeCascVarEvHasXiMinus = kTRUE; }
1798 if(lCurrentParticlePrimary->GetPdgCode() ==-3312){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) ) fTreeCascVarEvHasXiPlus = kTRUE; }
1799 if(lCurrentParticlePrimary->GetPdgCode() == 3334){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) ) fTreeCascVarEvHasOmegaMinus = kTRUE; }
1800 if(lCurrentParticlePrimary->GetPdgCode() ==-3334){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) ) fTreeCascVarEvHasOmegaPlus = kTRUE; }
1801 if(lCurrentParticlePrimary->GetPdgCode() == 3122){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) ) fTreeCascVarEvHasLambda = kTRUE; }
1802 if(lCurrentParticlePrimary->GetPdgCode() ==-3122){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) ) fTreeCascVarEvHasAntiLambda = kTRUE; }
1804 if(lCurrentParticlePrimary->GetPdgCode() == 3312){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<2.0) fTreeCascVarEvHasLowPtXiMinus = kTRUE; }
1805 if(lCurrentParticlePrimary->GetPdgCode() ==-3312){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<2.0) fTreeCascVarEvHasLowPtXiPlus = kTRUE; }
1806 if(lCurrentParticlePrimary->GetPdgCode() == 3334){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<2.0) fTreeCascVarEvHasLowPtOmegaMinus = kTRUE; }
1807 if(lCurrentParticlePrimary->GetPdgCode() ==-3334){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<2.0) fTreeCascVarEvHasLowPtOmegaPlus = kTRUE; }
1808 if(lCurrentParticlePrimary->GetPdgCode() == 3122){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<2.0) fTreeCascVarEvHasLowPtLambda = kTRUE; }
1809 if(lCurrentParticlePrimary->GetPdgCode() ==-3122){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<2.0) fTreeCascVarEvHasLowPtAntiLambda = kTRUE; }
1811 if(lCurrentParticlePrimary->GetPdgCode() == 3312){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<1.2) fTreeCascVarEvHasVeryLowPtXiMinus = kTRUE; }
1812 if(lCurrentParticlePrimary->GetPdgCode() ==-3312){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<1.2) fTreeCascVarEvHasVeryLowPtXiPlus = kTRUE; }
1813 if(lCurrentParticlePrimary->GetPdgCode() == 3334){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<1.2) fTreeCascVarEvHasVeryLowPtOmegaMinus = kTRUE; }
1814 if(lCurrentParticlePrimary->GetPdgCode() ==-3334){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<1.2) fTreeCascVarEvHasVeryLowPtOmegaPlus = kTRUE; }
1815 if(lCurrentParticlePrimary->GetPdgCode() == 3122){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<1.2) fTreeCascVarEvHasVeryLowPtLambda = kTRUE; }
1816 if(lCurrentParticlePrimary->GetPdgCode() ==-3122){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<1.2) fTreeCascVarEvHasVeryLowPtAntiLambda = kTRUE; }
1818 if ( TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3312 || TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3334 ) {
1819 Double_t lRapXiMCPrimary = -100;
1820 if( (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) != 0 ) {
1821 if ( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) !=0 ){
1822 lRapXiMCPrimary = 0.5*TMath::Log( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) );
1826 //=================================================================================
1828 if( lCurrentParticlePrimary->GetPdgCode() == 3312 ){
1829 lPtCurrentPart = lCurrentParticlePrimary->Pt();
1830 f3dHistGenPtVsYVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
1831 f3dHistGenPtVsYCMSVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
1833 f3dHistGenPtVsYVsMultMCXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
1834 f3dHistGenPtVsYCMSVsMultMCXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
1836 f3dHistGenPtVsYVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
1837 f3dHistGenPtVsYCMSVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
1839 f3dHistGenPtVsYVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
1840 f3dHistGenPtVsYCMSVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
1842 f3dHistGenPtVsYVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
1843 f3dHistGenPtVsYCMSVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
1845 f3dHistGenPtVsYVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
1846 f3dHistGenPtVsYCMSVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
1848 if( lCurrentParticlePrimary->GetPdgCode() == -3312 ){
1849 lPtCurrentPart = lCurrentParticlePrimary->Pt();
1850 f3dHistGenPtVsYVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
1851 f3dHistGenPtVsYCMSVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
1853 f3dHistGenPtVsYVsMultMCXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
1854 f3dHistGenPtVsYCMSVsMultMCXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
1856 f3dHistGenPtVsYVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
1857 f3dHistGenPtVsYCMSVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
1859 f3dHistGenPtVsYVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
1860 f3dHistGenPtVsYCMSVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
1862 f3dHistGenPtVsYVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
1863 f3dHistGenPtVsYCMSVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
1865 f3dHistGenPtVsYVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
1866 f3dHistGenPtVsYCMSVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
1869 if( lCurrentParticlePrimary->GetPdgCode() == 3334 ){
1870 lPtCurrentPart = lCurrentParticlePrimary->Pt();
1871 f3dHistGenPtVsYVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
1872 f3dHistGenPtVsYCMSVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
1874 f3dHistGenPtVsYVsMultMCOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
1875 f3dHistGenPtVsYCMSVsMultMCOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
1877 f3dHistGenPtVsYVsMultV0AOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
1878 f3dHistGenPtVsYCMSVsMultV0AOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
1880 f3dHistGenPtVsYVsMultZNAOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
1881 f3dHistGenPtVsYCMSVsMultZNAOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
1883 f3dHistGenPtVsYVsMultTRKOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
1884 f3dHistGenPtVsYCMSVsMultTRKOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
1886 f3dHistGenPtVsYVsMultSPDOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
1887 f3dHistGenPtVsYCMSVsMultSPDOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
1889 if( lCurrentParticlePrimary->GetPdgCode() == -3334 ){
1890 lPtCurrentPart = lCurrentParticlePrimary->Pt();
1891 f3dHistGenPtVsYVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
1892 f3dHistGenPtVsYCMSVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
1894 f3dHistGenPtVsYVsMultMCOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
1895 f3dHistGenPtVsYCMSVsMultMCOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
1897 f3dHistGenPtVsYVsMultV0AOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
1898 f3dHistGenPtVsYCMSVsMultV0AOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
1900 f3dHistGenPtVsYVsMultZNAOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
1901 f3dHistGenPtVsYCMSVsMultZNAOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
1903 f3dHistGenPtVsYVsMultTRKOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
1904 f3dHistGenPtVsYCMSVsMultTRKOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
1906 f3dHistGenPtVsYVsMultSPDOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
1907 f3dHistGenPtVsYCMSVsMultSPDOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
1911 //----- End Loop on primary Xi, Omega ----------------------------------------------------------
1913 // ---> Set Variables to Zero again
1914 // ---> Variable Definition
1918 //------------------------------------------------
1919 // Physics Selection
1920 //------------------------------------------------
1922 UInt_t maskIsSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
1923 Bool_t isSelected = 0;
1924 isSelected = (maskIsSelected & AliVEvent::kMB) == AliVEvent::kMB;
1926 //pA triggering: CINT7
1927 if( fkSwitchINT7 ) isSelected = (maskIsSelected & AliVEvent::kINT7) == AliVEvent::kINT7;
1929 //Standard Min-Bias Selection
1930 if ( ! isSelected ) {
1931 PostData(1, fListHist);
1932 PostData(2, fTreeCascade);
1936 //------------------------------------------------
1937 // Rerun cascade vertexer!
1938 //------------------------------------------------
1940 if( fkRunVertexers ){
1941 lESDevent->ResetCascades();
1942 lESDevent->ResetV0s();
1944 AliV0vertexer lV0vtxer;
1945 AliCascadeVertexer lCascVtxer;
1947 lV0vtxer.SetDefaultCuts(fV0VertexerSels);
1948 lCascVtxer.SetDefaultCuts(fCascadeVertexerSels);
1950 lV0vtxer.Tracks2V0vertices(lESDevent);
1951 lCascVtxer.V0sTracks2CascadeVertices(lESDevent);
1953 //------------------------------------------------
1954 // After Trigger Selection
1955 //------------------------------------------------
1957 lNumberOfV0s = lESDevent->GetNumberOfV0s();
1959 //Set variable for filling tree afterwards!
1960 fHistV0MultiplicityForTrigEvt->Fill(lNumberOfV0s);
1961 fHistMultiplicityForTrigEvt->Fill ( lMultiplicity );
1962 fHistMultiplicityV0AForTrigEvt ->Fill( lMultiplicityV0A );
1963 fHistMultiplicityZNAForTrigEvt ->Fill( lMultiplicityZNA );
1964 fHistMultiplicityTRKForTrigEvt ->Fill( lMultiplicityTRK );
1965 fHistMultiplicitySPDForTrigEvt ->Fill( lMultiplicitySPD );
1967 //------------------------------------------------
1968 // Getting: Primary Vertex + MagField Info
1969 //------------------------------------------------
1971 const AliESDVertex *lPrimaryTrackingESDVtx = lESDevent->GetPrimaryVertexTracks();
1972 // get the vtx stored in ESD found with tracks
1973 lPrimaryTrackingESDVtx->GetXYZ( lTrkgPrimaryVtxPos );
1975 const AliESDVertex *lPrimaryBestESDVtx = lESDevent->GetPrimaryVertex();
1976 // get the best primary vertex available for the event
1977 // As done in AliCascadeVertexer, we keep the one which is the best one available.
1978 // between : Tracking vertex > SPD vertex > TPC vertex > default SPD vertex
1979 // This one will be used for next calculations (DCA essentially)
1980 lPrimaryBestESDVtx->GetXYZ( lBestPrimaryVtxPos );
1982 Double_t lPrimaryVtxPosition[3];
1983 const AliVVertex *primaryVtx = lESDevent->GetPrimaryVertex();
1984 lPrimaryVtxPosition[0] = primaryVtx->GetX();
1985 lPrimaryVtxPosition[1] = primaryVtx->GetY();
1986 lPrimaryVtxPosition[2] = primaryVtx->GetZ();
1987 fHistPVx->Fill( lPrimaryVtxPosition[0] );
1988 fHistPVy->Fill( lPrimaryVtxPosition[1] );
1989 fHistPVz->Fill( lPrimaryVtxPosition[2] );
1991 //------------------------------------------------
1992 // Primary Vertex Requirements Section:
1993 // ---> pp and PbPb: Only requires |z|<10cm
1994 // ---> pPb: all requirements checked at this stage
1995 //------------------------------------------------
1997 //Roberto's PV selection criteria, implemented 17th April 2013
1999 /* vertex selection */
2000 Bool_t fHasVertex = kFALSE;
2002 const AliESDVertex *vertex = lESDevent->GetPrimaryVertexTracks();
2003 if (vertex->GetNContributors() < 1) {
2004 vertex = lESDevent->GetPrimaryVertexSPD();
2005 if (vertex->GetNContributors() < 1) fHasVertex = kFALSE;
2006 else fHasVertex = kTRUE;
2007 TString vtxTyp = vertex->GetTitle();
2008 Double_t cov[6]={0};
2009 vertex->GetCovarianceMatrix(cov);
2010 Double_t zRes = TMath::Sqrt(cov[5]);
2011 if (vtxTyp.Contains("vertexer:Z") && (zRes>0.25)) fHasVertex = kFALSE;
2013 else fHasVertex = kTRUE;
2015 //Is First event in chunk rejection: Still present!
2016 if(fkpAVertexSelection==kTRUE && fHasVertex == kFALSE) {
2017 AliWarning("Pb / | PV does not satisfy selection criteria!");
2018 PostData(1, fListHist);
2019 PostData(2, fTreeCascade);
2023 //Is First event in chunk rejection: Still present!
2024 if(fkpAVertexSelection==kTRUE && fUtils->IsFirstEventInChunk(lESDevent)) {
2025 AliWarning("Pb / | This is the first event in the chunk!");
2026 PostData(1, fListHist);
2027 PostData(2, fTreeCascade);
2031 //17 April Fix: Always do primary vertex Z selection, after pA vertex selection from Roberto
2032 if(TMath::Abs(lBestPrimaryVtxPos[2]) > 10.0) {
2033 AliWarning("Pb / | Z position of Best Prim Vtx | > 10.0 cm ... return !");
2034 PostData(1, fListHist);
2035 PostData(2, fTreeCascade);
2039 lMagneticField = lESDevent->GetMagneticField( );
2040 fHistV0MultiplicityForSelEvt ->Fill( lNumberOfV0s );
2041 fHistMultiplicity->Fill(lMultiplicity);
2042 fHistMultiplicityV0A->Fill(lMultiplicityV0A);
2043 fHistMultiplicityZNA->Fill(lMultiplicityZNA);
2044 fHistMultiplicityTRK->Fill(lMultiplicityTRK);
2045 fHistMultiplicitySPD->Fill(lMultiplicitySPD);
2047 //------------------------------------------------
2048 // SKIP: Events with well-established PVtx
2049 //------------------------------------------------
2051 const AliESDVertex *lPrimaryTrackingESDVtxCheck = lESDevent->GetPrimaryVertexTracks();
2052 const AliESDVertex *lPrimarySPDVtx = lESDevent->GetPrimaryVertexSPD();
2053 if (!lPrimarySPDVtx->GetStatus() && !lPrimaryTrackingESDVtxCheck->GetStatus() && fkpAVertexSelection==kFALSE ){
2054 AliWarning("Pb / No SPD prim. vertex nor prim. Tracking vertex ... return !");
2055 PostData(1, fListHist);
2056 PostData(2, fTreeCascade);
2059 fHistV0MultiplicityForSelEvtNoTPCOnly ->Fill( lNumberOfV0s );
2060 fHistMultiplicityNoTPCOnly->Fill(lMultiplicity);
2061 fHistMultiplicityV0ANoTPCOnly->Fill(lMultiplicityV0A);
2062 fHistMultiplicityZNANoTPCOnly->Fill(lMultiplicityZNA);
2063 fHistMultiplicityTRKNoTPCOnly->Fill(lMultiplicityTRK);
2064 fHistMultiplicitySPDNoTPCOnly->Fill(lMultiplicitySPD);
2066 //------------------------------------------------
2067 // Pileup Rejection Studies
2068 //------------------------------------------------
2070 // FIXME : quality selection regarding pile-up rejection
2071 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
2072 AliWarning("Pb / This is tagged as Pileup from SPD... return !");
2073 PostData(1, fListHist);
2074 PostData(2, fTreeCascade);
2077 fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup ->Fill( lNumberOfV0s );
2078 fHistMultiplicityNoTPCOnlyNoPileup->Fill(lMultiplicity);
2079 fHistMultiplicityV0ANoTPCOnlyNoPileup->Fill(lMultiplicityV0A);
2080 fHistMultiplicityZNANoTPCOnlyNoPileup->Fill(lMultiplicityZNA);
2081 fHistMultiplicityTRKNoTPCOnlyNoPileup->Fill(lMultiplicityTRK);
2082 fHistMultiplicitySPDNoTPCOnlyNoPileup->Fill(lMultiplicitySPD);
2084 //Do control histograms without the IsFromVertexerZ events, but consider them in analysis...
2085 if( ! (lESDevent->GetPrimaryVertex()->IsFromVertexerZ() ) ){
2086 fHistPVxAnalysis->Fill( lPrimaryVtxPosition[0] );
2087 fHistPVyAnalysis->Fill( lPrimaryVtxPosition[1] );
2088 fHistPVzAnalysis->Fill( lPrimaryVtxPosition[2] );
2091 //------------------------------------------------
2092 // stack loop starts here
2093 //------------------------------------------------
2095 //----- Loop on primary Xi, Omega --------------------------------------------------------------
2096 for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < lNbMCPrimary; iCurrentLabelStack++)
2097 {// This is the begining of the loop on primaries
2099 TParticle* lCurrentParticlePrimary = 0x0;
2100 lCurrentParticlePrimary = lMCstack->Particle( iCurrentLabelStack );
2101 if(!lCurrentParticlePrimary){
2102 Printf("Cascade loop %d - MC TParticle pointer to current stack particle = 0x0 ! Skip ...\n", iCurrentLabelStack );
2105 if ( TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3312 || TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3334 ) {
2106 Double_t lRapXiMCPrimary = -100;
2107 if( (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) != 0 ) {
2108 if ( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) !=0 ){
2109 lRapXiMCPrimary = 0.5*TMath::Log( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) );
2113 //=================================================================================
2115 if( lCurrentParticlePrimary->GetPdgCode() == 3312 ){
2116 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2117 f3dHistGenSelectedPtVsYVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
2118 f3dHistGenSelectedPtVsYCMSVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
2120 f3dHistGenSelectedPtVsYVsMultMCXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
2121 f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
2123 f3dHistGenSelectedPtVsYVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
2124 f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2126 f3dHistGenSelectedPtVsYVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
2127 f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
2129 f3dHistGenSelectedPtVsYVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
2130 f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
2132 f3dHistGenSelectedPtVsYVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
2133 f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
2135 if( lCurrentParticlePrimary->GetPdgCode() == -3312 ){
2136 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2137 f3dHistGenSelectedPtVsYVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
2138 f3dHistGenSelectedPtVsYCMSVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
2140 f3dHistGenSelectedPtVsYVsMultMCXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
2141 f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
2143 f3dHistGenSelectedPtVsYVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
2144 f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2146 f3dHistGenSelectedPtVsYVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
2147 f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
2149 f3dHistGenSelectedPtVsYVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
2150 f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
2152 f3dHistGenSelectedPtVsYVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
2153 f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
2156 if( lCurrentParticlePrimary->GetPdgCode() == 3334 ){
2157 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2158 f3dHistGenSelectedPtVsYVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
2159 f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
2161 f3dHistGenSelectedPtVsYVsMultMCOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
2162 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
2164 f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
2165 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2167 f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
2168 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
2170 f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
2171 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
2173 f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
2174 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
2176 if( lCurrentParticlePrimary->GetPdgCode() == -3334 ){
2177 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2178 f3dHistGenSelectedPtVsYVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
2179 f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
2181 f3dHistGenSelectedPtVsYVsMultMCOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
2182 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
2184 f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
2185 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2187 f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
2188 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
2190 f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
2191 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
2193 f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
2194 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
2198 //----- End Loop on primary Xi, Omega ----------------------------------------------------------
2200 //------------------------------------------------
2201 // MAIN CASCADE LOOP STARTS HERE
2202 //------------------------------------------------
2203 // Code Credit: Antonin Maire (thanks^100)
2204 // ---> This is an adaptation
2206 Long_t ncascades = 0;
2207 ncascades = lESDevent->GetNumberOfCascades();
2210 for (Int_t iXi = 0; iXi < ncascades; iXi++){
2211 //------------------------------------------------
2213 //------------------------------------------------
2214 //Double_t lTrkgPrimaryVtxRadius3D = -500.0;
2215 //Double_t lBestPrimaryVtxRadius3D = -500.0;
2217 // - 1st part of initialisation : variables needed to store AliESDCascade data members
2218 Double_t lEffMassXi = 0. ;
2219 //Double_t lChi2Xi = -1. ;
2220 Double_t lDcaXiDaughters = -1. ;
2221 Double_t lXiCosineOfPointingAngle = -1. ;
2222 Double_t lPosXi[3] = { -1000.0, -1000.0, -1000.0 };
2223 Double_t lXiRadius = -1000. ;
2225 // - 2nd part of initialisation : Nbr of clusters within TPC for the 3 daughter cascade tracks
2226 Int_t lPosTPCClusters = -1; // For ESD only ...//FIXME : wait for availability in AOD
2227 Int_t lNegTPCClusters = -1; // For ESD only ...
2228 Int_t lBachTPCClusters = -1; // For ESD only ...
2230 // - 3rd part of initialisation : about V0 part in cascades
2231 Double_t lInvMassLambdaAsCascDghter = 0.;
2232 //Double_t lV0Chi2Xi = -1. ;
2233 Double_t lDcaV0DaughtersXi = -1.;
2235 Double_t lDcaBachToPrimVertexXi = -1., lDcaV0ToPrimVertexXi = -1.;
2236 Double_t lDcaPosToPrimVertexXi = -1.;
2237 Double_t lDcaNegToPrimVertexXi = -1.;
2238 Double_t lV0CosineOfPointingAngleXi = -1. ;
2239 Double_t lV0CosineOfPointingAngleXiSpecial = -1. ;
2240 Double_t lPosV0Xi[3] = { -1000. , -1000., -1000. }; // Position of VO coming from cascade
2241 Double_t lV0RadiusXi = -1000.0;
2242 Double_t lV0quality = 0.;
2244 // - 4th part of initialisation : Effective masses
2245 Double_t lInvMassXiMinus = 0.;
2246 Double_t lInvMassXiPlus = 0.;
2247 Double_t lInvMassOmegaMinus = 0.;
2248 Double_t lInvMassOmegaPlus = 0.;
2250 // - 6th part of initialisation : extra info for QA
2251 Double_t lXiMomX = 0. , lXiMomY = 0., lXiMomZ = 0.;
2252 Double_t lXiTransvMom = 0. ;
2253 Double_t lXiTransvMomMC= 0. ;
2254 Double_t lXiTotMom = 0. ;
2256 Double_t lBachMomX = 0., lBachMomY = 0., lBachMomZ = 0.;
2257 //Double_t lBachTransvMom = 0.;
2258 //Double_t lBachTotMom = 0.;
2260 fTreeCascVarNegNSigmaPion = -100;
2261 fTreeCascVarNegNSigmaProton = -100;
2262 fTreeCascVarPosNSigmaPion = -100;
2263 fTreeCascVarPosNSigmaProton = -100;
2264 fTreeCascVarBachNSigmaPion = -100;
2265 fTreeCascVarBachNSigmaKaon = -100;
2267 Short_t lChargeXi = -2;
2268 //Double_t lV0toXiCosineOfPointingAngle = 0. ;
2270 Double_t lRapXi = -20.0, lRapOmega = -20.0, lRapMC = -20.0; // lEta = -20.0, lTheta = 360., lPhi = 720. ;
2271 //Double_t lAlphaXi = -200., lPtArmXi = -200.0;
2273 // -------------------------------------
2274 // II.ESD - Calculation Part dedicated to Xi vertices (ESD)
2276 AliESDcascade *xi = lESDevent->GetCascade(iXi);
2280 // - II.Step 1 : around primary vertex
2282 //lTrkgPrimaryVtxRadius3D = TMath::Sqrt( lTrkgPrimaryVtxPos[0] * lTrkgPrimaryVtxPos[0] +
2283 // lTrkgPrimaryVtxPos[1] * lTrkgPrimaryVtxPos[1] +
2284 // lTrkgPrimaryVtxPos[2] * lTrkgPrimaryVtxPos[2] );
2286 //lBestPrimaryVtxRadius3D = TMath::Sqrt( lBestPrimaryVtxPos[0] * lBestPrimaryVtxPos[0] +
2287 // lBestPrimaryVtxPos[1] * lBestPrimaryVtxPos[1] +
2288 // lBestPrimaryVtxPos[2] * lBestPrimaryVtxPos[2] );
2290 // - II.Step 2 : Assigning the necessary variables for specific AliESDcascade data members (ESD)
2293 xi->ChangeMassHypothesis(lV0quality , 3312); // default working hypothesis : cascade = Xi- decay
2295 lEffMassXi = xi->GetEffMassXi();
2296 //lChi2Xi = xi->GetChi2Xi();
2297 lDcaXiDaughters = xi->GetDcaXiDaughters();
2298 lXiCosineOfPointingAngle = xi->GetCascadeCosineOfPointingAngle( lBestPrimaryVtxPos[0],
2299 lBestPrimaryVtxPos[1],
2300 lBestPrimaryVtxPos[2] );
2301 // Take care : the best available vertex should be used (like in AliCascadeVertexer)
2303 xi->GetXYZcascade( lPosXi[0], lPosXi[1], lPosXi[2] );
2304 lXiRadius = TMath::Sqrt( lPosXi[0]*lPosXi[0] + lPosXi[1]*lPosXi[1] );
2306 // - II.Step 3 : around the tracks : Bach + V0 (ESD)
2307 // ~ Necessary variables for ESDcascade data members coming from the ESDv0 part (inheritance)
2310 UInt_t lIdxPosXi = (UInt_t) TMath::Abs( xi->GetPindex() );
2311 UInt_t lIdxNegXi = (UInt_t) TMath::Abs( xi->GetNindex() );
2312 UInt_t lBachIdx = (UInt_t) TMath::Abs( xi->GetBindex() );
2313 // Care track label can be negative in MC production (linked with the track quality)
2314 // However = normally, not the case for track index ...
2316 // FIXME : rejection of a double use of a daughter track (nothing but just a crosscheck of what is done in the cascade vertexer)
2317 if(lBachIdx == lIdxNegXi) {
2318 AliWarning("Pb / Idx(Bach. track) = Idx(Neg. track) ... continue!"); continue;
2320 if(lBachIdx == lIdxPosXi) {
2321 AliWarning("Pb / Idx(Bach. track) = Idx(Pos. track) ... continue!"); continue;
2324 AliESDtrack *pTrackXi = lESDevent->GetTrack( lIdxPosXi );
2325 AliESDtrack *nTrackXi = lESDevent->GetTrack( lIdxNegXi );
2326 AliESDtrack *bachTrackXi = lESDevent->GetTrack( lBachIdx );
2328 if (!pTrackXi || !nTrackXi || !bachTrackXi ) {
2329 AliWarning("ERROR: Could not retrieve one of the 3 ESD daughter tracks of the cascade ...");
2333 fTreeCascVarPosEta = pTrackXi->Eta();
2334 fTreeCascVarNegEta = nTrackXi->Eta();
2335 fTreeCascVarBachEta = bachTrackXi->Eta();
2337 Double_t lBMom[3], lNMom[3], lPMom[3];
2338 xi->GetBPxPyPz( lBMom[0], lBMom[1], lBMom[2] );
2339 xi->GetPPxPyPz( lPMom[0], lPMom[1], lPMom[2] );
2340 xi->GetNPxPyPz( lNMom[0], lNMom[1], lNMom[2] );
2342 fTreeCascVarBachTransMom = TMath::Sqrt( lBMom[0]*lBMom[0] + lBMom[1]*lBMom[1] );
2343 fTreeCascVarPosTransMom = TMath::Sqrt( lPMom[0]*lPMom[0] + lPMom[1]*lPMom[1] );
2344 fTreeCascVarNegTransMom = TMath::Sqrt( lNMom[0]*lNMom[0] + lNMom[1]*lNMom[1] );
2346 //------------------------------------------------
2347 // TPC dEdx information
2348 //------------------------------------------------
2349 fTreeCascVarNegNSigmaPion = fPIDResponse->NumberOfSigmasTPC( nTrackXi, AliPID::kPion );
2350 fTreeCascVarNegNSigmaProton = fPIDResponse->NumberOfSigmasTPC( nTrackXi, AliPID::kProton );
2351 fTreeCascVarPosNSigmaPion = fPIDResponse->NumberOfSigmasTPC( pTrackXi, AliPID::kPion );
2352 fTreeCascVarPosNSigmaProton = fPIDResponse->NumberOfSigmasTPC( pTrackXi, AliPID::kProton );
2353 fTreeCascVarBachNSigmaPion = fPIDResponse->NumberOfSigmasTPC( bachTrackXi, AliPID::kPion );
2354 fTreeCascVarBachNSigmaKaon = fPIDResponse->NumberOfSigmasTPC( bachTrackXi, AliPID::kKaon );
2356 //------------------------------------------------
2357 // TPC Number of clusters info
2358 // --- modified to save the smallest number
2359 // --- of TPC clusters for the 3 tracks
2360 //------------------------------------------------
2362 lPosTPCClusters = pTrackXi->GetTPCNcls();
2363 lNegTPCClusters = nTrackXi->GetTPCNcls();
2364 lBachTPCClusters = bachTrackXi->GetTPCNcls();
2366 fTreeCascVarkITSRefitBachelor = kTRUE;
2367 fTreeCascVarkITSRefitNegative = kTRUE;
2368 fTreeCascVarkITSRefitPositive = kTRUE;
2370 // 1 - Poor quality related to TPCrefit
2371 ULong_t pStatus = pTrackXi->GetStatus();
2372 ULong_t nStatus = nTrackXi->GetStatus();
2373 ULong_t bachStatus = bachTrackXi->GetStatus();
2374 if ((pStatus&AliESDtrack::kTPCrefit) == 0) { AliWarning("Pb / V0 Pos. track has no TPCrefit ... continue!"); continue; }
2375 if ((nStatus&AliESDtrack::kTPCrefit) == 0) { AliWarning("Pb / V0 Neg. track has no TPCrefit ... continue!"); continue; }
2376 if ((bachStatus&AliESDtrack::kTPCrefit) == 0) { AliWarning("Pb / Bach. track has no TPCrefit ... continue!"); continue; }
2378 //Extra Debug Information: booleans for ITS refit
2379 if ((pStatus&AliESDtrack::kITSrefit) == 0) { fTreeCascVarkITSRefitPositive = kFALSE; }
2380 if ((nStatus&AliESDtrack::kITSrefit) == 0) { fTreeCascVarkITSRefitNegative = kFALSE; }
2381 if ((bachStatus&AliESDtrack::kITSrefit) == 0) { fTreeCascVarkITSRefitBachelor = kFALSE; }
2383 // 2 - Poor quality related to TPC clusters: lowest cut of 70 clusters
2384 if(lPosTPCClusters < 70) { AliWarning("Pb / V0 Pos. track has less than 70 TPC clusters ... continue!"); continue; }
2385 if(lNegTPCClusters < 70) { AliWarning("Pb / V0 Neg. track has less than 70 TPC clusters ... continue!"); continue; }
2386 if(lBachTPCClusters < 70) { AliWarning("Pb / Bach. track has less than 70 TPC clusters ... continue!"); continue; }
2387 Int_t leastnumberofclusters = 1000;
2388 if( lPosTPCClusters < leastnumberofclusters ) leastnumberofclusters = lPosTPCClusters;
2389 if( lNegTPCClusters < leastnumberofclusters ) leastnumberofclusters = lNegTPCClusters;
2390 if( lBachTPCClusters < leastnumberofclusters ) leastnumberofclusters = lBachTPCClusters;
2392 lInvMassLambdaAsCascDghter = xi->GetEffMass();
2393 // This value shouldn't change, whatever the working hyp. is : Xi-, Xi+, Omega-, Omega+
2394 lDcaV0DaughtersXi = xi->GetDcaV0Daughters();
2395 //lV0Chi2Xi = xi->GetChi2V0();
2397 lV0CosineOfPointingAngleXi = xi->GetV0CosineOfPointingAngle( lBestPrimaryVtxPos[0],
2398 lBestPrimaryVtxPos[1],
2399 lBestPrimaryVtxPos[2] );
2400 //Modification to check cosPA of v0 wrt to cascade vertex
2401 lV0CosineOfPointingAngleXiSpecial = xi->GetV0CosineOfPointingAngle( lPosXi[0],
2405 lDcaV0ToPrimVertexXi = xi->GetD( lBestPrimaryVtxPos[0],
2406 lBestPrimaryVtxPos[1],
2407 lBestPrimaryVtxPos[2] );
2409 lDcaBachToPrimVertexXi = TMath::Abs( bachTrackXi->GetD( lBestPrimaryVtxPos[0],
2410 lBestPrimaryVtxPos[1],
2412 // Note : AliExternalTrackParam::GetD returns an algebraic value ...
2414 xi->GetXYZ( lPosV0Xi[0], lPosV0Xi[1], lPosV0Xi[2] );
2415 lV0RadiusXi = TMath::Sqrt( lPosV0Xi[0]*lPosV0Xi[0] + lPosV0Xi[1]*lPosV0Xi[1] );
2417 lDcaPosToPrimVertexXi = TMath::Abs( pTrackXi ->GetD( lBestPrimaryVtxPos[0],
2418 lBestPrimaryVtxPos[1],
2421 lDcaNegToPrimVertexXi = TMath::Abs( nTrackXi ->GetD( lBestPrimaryVtxPos[0],
2422 lBestPrimaryVtxPos[1],
2425 // - II.Step 4 : around effective masses (ESD)
2426 // ~ change mass hypotheses to cover all the possibilities : Xi-/+, Omega -/+
2428 if( bachTrackXi->Charge() < 0 ) {
2430 xi->ChangeMassHypothesis(lV0quality , 3312);
2431 // Calculate the effective mass of the Xi- candidate.
2432 // pdg code 3312 = Xi-
2433 lInvMassXiMinus = xi->GetEffMassXi();
2436 xi->ChangeMassHypothesis(lV0quality , 3334);
2437 // Calculate the effective mass of the Xi- candidate.
2438 // pdg code 3334 = Omega-
2439 lInvMassOmegaMinus = xi->GetEffMassXi();
2442 xi->ChangeMassHypothesis(lV0quality , 3312); // Back to default hyp.
2443 }// end if negative bachelor
2446 if( bachTrackXi->Charge() > 0 ){
2448 xi->ChangeMassHypothesis(lV0quality , -3312);
2449 // Calculate the effective mass of the Xi+ candidate.
2450 // pdg code -3312 = Xi+
2451 lInvMassXiPlus = xi->GetEffMassXi();
2454 xi->ChangeMassHypothesis(lV0quality , -3334);
2455 // Calculate the effective mass of the Xi+ candidate.
2456 // pdg code -3334 = Omega+
2457 lInvMassOmegaPlus = xi->GetEffMassXi();
2460 xi->ChangeMassHypothesis(lV0quality , -3312); // Back to "default" hyp.
2461 }// end if positive bachelor
2462 // - II.Step 6 : extra info for QA (ESD)
2463 // miscellaneous pieces of info that may help regarding data quality assessment.
2466 xi->GetPxPyPz( lXiMomX, lXiMomY, lXiMomZ );
2467 lXiTransvMom = TMath::Sqrt( lXiMomX*lXiMomX + lXiMomY*lXiMomY );
2468 lXiTotMom = TMath::Sqrt( lXiMomX*lXiMomX + lXiMomY*lXiMomY + lXiMomZ*lXiMomZ );
2470 xi->GetBPxPyPz( lBachMomX, lBachMomY, lBachMomZ );
2471 //lBachTransvMom = TMath::Sqrt( lBachMomX*lBachMomX + lBachMomY*lBachMomY );
2472 //lBachTotMom = TMath::Sqrt( lBachMomX*lBachMomX + lBachMomY*lBachMomY + lBachMomZ*lBachMomZ );
2474 lChargeXi = xi->Charge();
2476 //lV0toXiCosineOfPointingAngle = xi->GetV0CosineOfPointingAngle( lPosXi[0], lPosXi[1], lPosXi[2] );
2478 lRapXi = xi->RapXi();
2479 lRapOmega = xi->RapOmega();
2481 //lTheta = xi->Theta() *180.0/TMath::Pi();
2482 //lPhi = xi->Phi() *180.0/TMath::Pi();
2483 //lAlphaXi = xi->AlphaXi();
2484 //lPtArmXi = xi->PtArmXi();
2486 //------------------------------------------------
2487 // Associate Cascade Candidates to Monte Carlo!
2488 //------------------------------------------------
2490 //Warning: Not using Continues... Need to fill tree later!
2492 Int_t lPDGCodeCascade = 0;
2494 Int_t lPID_BachMother = 0;
2495 Int_t lPID_NegMother = 0;
2496 Int_t lPID_PosMother = 0;
2497 fTreeCascVarIsPhysicalPrimary = 0; // 0: not defined, any candidate may have this
2499 fTreeCascVarPIDPositive = 0;
2500 fTreeCascVarPIDNegative = 0;
2501 fTreeCascVarPIDBachelor = 0;
2505 cout << "MC EventNumber : " << lMCevent->Header()->GetEvent()
2506 << " / MC event Number in Run : " << lMCevent->Header()->GetEventNrInRun() << endl;
2508 // - Step 4.1 : level of the V0 daughters
2510 //----------------------------------------
2511 // Regular MC ASSOCIATION STARTS HERE
2512 //----------------------------------------
2514 Int_t lblPosV0Dghter = (Int_t) TMath::Abs( pTrackXi->GetLabel() );
2515 // Abs value = needed ! question of quality track association ...
2516 Int_t lblNegV0Dghter = (Int_t) TMath::Abs( nTrackXi->GetLabel() );
2517 Int_t lblBach = (Int_t) TMath::Abs( bachTrackXi->GetLabel() );
2519 TParticle* mcPosV0Dghter = lMCstack->Particle( lblPosV0Dghter );
2520 TParticle* mcNegV0Dghter = lMCstack->Particle( lblNegV0Dghter );
2521 TParticle* mcBach = lMCstack->Particle( lblBach );
2523 fTreeCascVarPosTransMomMC = mcPosV0Dghter->Pt();
2524 fTreeCascVarNegTransMomMC = mcNegV0Dghter->Pt();
2526 fTreeCascVarPIDPositive = mcPosV0Dghter -> GetPdgCode();
2527 fTreeCascVarPIDNegative = mcNegV0Dghter -> GetPdgCode();
2528 fTreeCascVarPIDBachelor = mcBach->GetPdgCode();
2530 // - Step 4.2 : level of the Xi daughters
2532 Int_t lblMotherPosV0Dghter = mcPosV0Dghter->GetFirstMother() ;
2533 Int_t lblMotherNegV0Dghter = mcNegV0Dghter->GetFirstMother();
2535 //Rather uncivilized: Open brackets for each 'continue'
2536 if(! (lblMotherPosV0Dghter != lblMotherNegV0Dghter) ) { // same mother
2537 if(! (lblMotherPosV0Dghter < 0) ) { // mother != primary (!= -1)
2538 if(! (lblMotherNegV0Dghter < 0) ) {
2540 // mothers = Lambda candidate ... a priori
2542 TParticle* mcMotherPosV0Dghter = lMCstack->Particle( lblMotherPosV0Dghter );
2543 TParticle* mcMotherNegV0Dghter = lMCstack->Particle( lblMotherNegV0Dghter );
2545 // - Step 4.3 : level of Xi candidate
2547 Int_t lblGdMotherPosV0Dghter = mcMotherPosV0Dghter->GetFirstMother() ;
2548 Int_t lblGdMotherNegV0Dghter = mcMotherNegV0Dghter->GetFirstMother() ;
2550 if(! (lblGdMotherPosV0Dghter != lblGdMotherNegV0Dghter) ) {
2551 if(! (lblGdMotherPosV0Dghter < 0) ) { // primary lambda ...
2552 if(! (lblGdMotherNegV0Dghter < 0) ) { // primary lambda ...
2554 // Gd mothers = Xi candidate ... a priori
2556 TParticle* mcGdMotherPosV0Dghter = lMCstack->Particle( lblGdMotherPosV0Dghter );
2557 TParticle* mcGdMotherNegV0Dghter = lMCstack->Particle( lblGdMotherNegV0Dghter );
2559 Int_t lblMotherBach = (Int_t) TMath::Abs( mcBach->GetFirstMother() );
2561 // if( lblMotherBach != lblGdMotherPosV0Dghter ) continue; //same mother for bach and V0 daughters
2562 if(!(lblMotherBach != lblGdMotherPosV0Dghter)) { //same mother for bach and V0 daughters
2564 TParticle* mcMotherBach = lMCstack->Particle( lblMotherBach );
2566 lPID_BachMother = mcMotherBach->GetPdgCode();
2567 lPID_NegMother = mcGdMotherPosV0Dghter->GetPdgCode();
2568 lPID_PosMother = mcGdMotherNegV0Dghter->GetPdgCode();
2570 if(lPID_BachMother==lPID_NegMother && lPID_BachMother==lPID_PosMother){
2571 lPDGCodeCascade = lPID_BachMother;
2572 lXiTransvMomMC = mcMotherBach->Pt();
2573 if( lMCstack->IsPhysicalPrimary (lblMotherBach) ) fTreeCascVarIsPhysicalPrimary = 1; //Is Primary!
2574 if( lMCstack->IsSecondaryFromWeakDecay(lblMotherBach) ) fTreeCascVarIsPhysicalPrimary = 2; //Weak Decay!
2575 if( lMCstack->IsSecondaryFromMaterial (lblMotherBach) ) fTreeCascVarIsPhysicalPrimary = 3; //From Material!
2576 if ( (mcMotherBach->Energy() + mcMotherBach->Pz()) / (mcMotherBach->Energy() - mcMotherBach->Pz() +1.e-13) !=0 ){
2577 lRapMC = 0.5*TMath::Log( (mcMotherBach->Energy() + mcMotherBach->Pz()) / (mcMotherBach->Energy() - mcMotherBach->Pz() +1.e-13) );
2581 }}}}}}} //Ends all conditionals above...
2583 //----------------------------------------
2584 // Regular MC ASSOCIATION ENDS HERE
2585 //----------------------------------------
2587 //----------------------------------------
2588 // Swapped MC Association Starts Here
2589 //----------------------------------------
2591 fTreeCascVarPIDSwapped = 0; //Nothing
2592 if ( fkCheckSwapping ) { //on/off switch if not needed or otherwise broken
2594 Int_t lPID_BachMotherSwapped = 0;
2595 Int_t lPID_NegMotherSwapped = 0;
2596 Int_t lPID_PosMotherSwapped = 0;
2598 Int_t lblPosV0DghterSwapped = (Int_t) TMath::Abs( pTrackXi->GetLabel() );
2599 // Abs value = needed ! question of quality track association ...
2600 Int_t lblNegV0DghterSwapped = (Int_t) TMath::Abs( nTrackXi->GetLabel() );
2601 Int_t lblBachSwapped = (Int_t) TMath::Abs( bachTrackXi->GetLabel() );
2603 //This is SWAPPED association: swap like-sign particles
2604 TParticle* mcPosV0DghterSwapped = 0x0;
2605 TParticle* mcNegV0DghterSwapped = 0x0;
2606 TParticle* mcBachSwapped = 0x0;
2608 //Swapping Case 1: XiMinus/OmegaMinus swapped: exchange negative V0 daughter with bachelor
2609 if( lChargeXi == -1 ){
2610 mcPosV0DghterSwapped = lMCstack->Particle( lblPosV0DghterSwapped );
2611 mcNegV0DghterSwapped = lMCstack->Particle( lblBachSwapped );
2612 mcBachSwapped = lMCstack->Particle( lblNegV0DghterSwapped );
2614 //Swapping Case 2: XiPlus/OmegaPlus swapped: exchange positive V0 daughter with bachelor
2615 if( lChargeXi == 1 ){
2616 mcPosV0DghterSwapped = lMCstack->Particle( lblBachSwapped );
2617 mcNegV0DghterSwapped = lMCstack->Particle( lblNegV0DghterSwapped );
2618 mcBachSwapped = lMCstack->Particle( lblPosV0DghterSwapped );
2621 //fTreeCascVarPosTransMomMC = mcPosV0Dghter->Pt();
2622 //fTreeCascVarNegTransMomMC = mcNegV0Dghter->Pt();
2624 //fTreeCascVarPIDPositive = mcPosV0Dghter -> GetPdgCode();
2625 //fTreeCascVarPIDNegative = mcNegV0Dghter -> GetPdgCode();
2626 //fTreeCascVarPIDBachelor = mcBach->GetPdgCode();
2628 // - Step 4.2 : level of the Xi daughters
2630 Int_t lblMotherPosV0DghterSwapped = mcPosV0DghterSwapped->GetFirstMother() ;
2631 Int_t lblMotherNegV0DghterSwapped = mcNegV0DghterSwapped->GetFirstMother();
2633 //Rather uncivilized: Open brackets for each 'continue'
2634 if(! (lblMotherPosV0DghterSwapped != lblMotherNegV0DghterSwapped) ) { // same mother
2635 if(! (lblMotherPosV0DghterSwapped < 0) ) { // mother != primary (!= -1)
2636 if(! (lblMotherNegV0DghterSwapped < 0) ) {
2638 // mothers = Lambda candidate ... a priori
2640 TParticle* mcMotherPosV0DghterSwapped = lMCstack->Particle( lblMotherPosV0DghterSwapped );
2641 TParticle* mcMotherNegV0DghterSwapped = lMCstack->Particle( lblMotherNegV0DghterSwapped );
2643 // - Step 4.3 : level of Xi candidate
2645 Int_t lblGdMotherPosV0DghterSwapped = mcMotherPosV0DghterSwapped->GetFirstMother() ;
2646 Int_t lblGdMotherNegV0DghterSwapped = mcMotherNegV0DghterSwapped->GetFirstMother() ;
2648 if(! (lblGdMotherPosV0DghterSwapped != lblGdMotherNegV0DghterSwapped) ) {
2649 if(! (lblGdMotherPosV0DghterSwapped < 0) ) { // primary lambda ...
2650 if(! (lblGdMotherNegV0DghterSwapped < 0) ) { // primary lambda ...
2652 // Gd mothers = Xi candidate ... a priori
2654 TParticle* mcGdMotherPosV0DghterSwapped = lMCstack->Particle( lblGdMotherPosV0DghterSwapped );
2655 TParticle* mcGdMotherNegV0DghterSwapped = lMCstack->Particle( lblGdMotherNegV0DghterSwapped );
2657 Int_t lblMotherBachSwapped = (Int_t) TMath::Abs( mcBachSwapped->GetFirstMother() );
2659 // if( lblMotherBach != lblGdMotherPosV0Dghter ) continue; //same mother for bach and V0 daughters
2660 if(!(lblMotherBachSwapped != lblGdMotherPosV0DghterSwapped)) { //same mother for bach and V0 daughters
2662 TParticle* mcMotherBachSwapped = lMCstack->Particle( lblMotherBachSwapped );
2664 lPID_BachMotherSwapped = mcMotherBachSwapped->GetPdgCode();
2665 lPID_NegMotherSwapped = mcGdMotherPosV0DghterSwapped->GetPdgCode();
2666 lPID_PosMotherSwapped = mcGdMotherNegV0DghterSwapped->GetPdgCode();
2668 if(lPID_BachMotherSwapped==lPID_NegMotherSwapped && lPID_BachMotherSwapped==lPID_PosMotherSwapped){
2669 fTreeCascVarPIDSwapped = lPID_BachMotherSwapped; //there!
2672 }}}}}}} //Ends all conditionals above...
2675 //----------------------------------------
2676 // Swapped MC ASSOCIATION ENDS HERE
2677 //----------------------------------------
2680 //------------------------------------------------
2681 // Set Variables for adding to tree
2682 //------------------------------------------------
2684 /* 1*/ fTreeCascVarCharge = lChargeXi;
2685 /* 2*/ if(lInvMassXiMinus!=0) fTreeCascVarMassAsXi = lInvMassXiMinus;
2686 /* 2*/ if(lInvMassXiPlus!=0) fTreeCascVarMassAsXi = lInvMassXiPlus;
2687 /* 3*/ if(lInvMassOmegaMinus!=0) fTreeCascVarMassAsOmega = lInvMassOmegaMinus;
2688 /* 3*/ if(lInvMassOmegaPlus!=0) fTreeCascVarMassAsOmega = lInvMassOmegaPlus;
2689 /* 4*/ fTreeCascVarPt = lXiTransvMom;
2690 /* 4*/ fTreeCascVarPtMC = lXiTransvMomMC;
2691 /* 5*/ fTreeCascVarRapXi = lRapXi ;
2692 /* 5*/ fTreeCascVarRapMC = lRapMC ;
2693 /* 6*/ fTreeCascVarRapOmega = lRapOmega ;
2694 /* 7*/ fTreeCascVarDCACascDaughters = lDcaXiDaughters;
2695 /* 8*/ fTreeCascVarDCABachToPrimVtx = lDcaBachToPrimVertexXi;
2696 /* 9*/ fTreeCascVarDCAV0Daughters = lDcaV0DaughtersXi;
2697 /*10*/ fTreeCascVarDCAV0ToPrimVtx = lDcaV0ToPrimVertexXi;
2698 /*11*/ fTreeCascVarDCAPosToPrimVtx = lDcaPosToPrimVertexXi;
2699 /*12*/ fTreeCascVarDCANegToPrimVtx = lDcaNegToPrimVertexXi;
2700 /*13*/ fTreeCascVarCascCosPointingAngle = lXiCosineOfPointingAngle;
2701 /*14*/ fTreeCascVarCascRadius = lXiRadius;
2702 /*15*/ fTreeCascVarV0Mass = lInvMassLambdaAsCascDghter;
2703 /*16*/ fTreeCascVarV0CosPointingAngle = lV0CosineOfPointingAngleXi;
2704 /*16*/ fTreeCascVarV0CosPointingAngleSpecial = lV0CosineOfPointingAngleXiSpecial;
2705 /*17*/ fTreeCascVarV0Radius = lV0RadiusXi;
2706 /*20*/ fTreeCascVarLeastNbrClusters = leastnumberofclusters;
2707 /*21*/ fTreeCascVarMultiplicity = lMultiplicity; //multiplicity, whatever that may be
2709 /*23*/ fTreeCascVarDistOverTotMom = TMath::Sqrt(
2710 TMath::Power( lPosXi[0] - lBestPrimaryVtxPos[0] , 2) +
2711 TMath::Power( lPosXi[1] - lBestPrimaryVtxPos[1] , 2) +
2712 TMath::Power( lPosXi[2] - lBestPrimaryVtxPos[2] , 2)
2714 /*23*/ fTreeCascVarDistOverTotMom /= (lXiTotMom+1e-13);
2715 /*24*/ //Not specified here, it has been set already (TRunNumber)
2716 /*25*/ fTreeCascVarPID = lPDGCodeCascade;
2718 //------------------------------------------------
2720 //------------------------------------------------
2722 // The conditional is meant to decrease excessive
2723 // memory usage! Be careful when loosening the
2726 //Xi Mass window: 150MeV wide
2727 //Omega mass window: 150MeV wide
2729 if( (fTreeCascVarMassAsXi<1.32+0.075&&fTreeCascVarMassAsXi>1.32-0.075) ||
2730 (fTreeCascVarMassAsOmega<1.68+0.075&&fTreeCascVarMassAsOmega>1.68-0.075) ){
2731 fTreeCascade->Fill();
2734 //------------------------------------------------
2736 //------------------------------------------------
2738 }// end of the Cascade loop (ESD or AOD)
2740 // Post output data.
2741 PostData(1, fListHist);
2742 PostData(2, fTreeCascade);
2745 //________________________________________________________________________
2746 void AliAnalysisTaskExtractPerformanceCascade::Terminate(Option_t *)
2748 // Draw result to the screen
2749 // Called once at the end of the query
2751 TList *cRetrievedList = 0x0;
2752 cRetrievedList = (TList*)GetOutputData(1);
2753 if(!cRetrievedList){
2754 Printf("ERROR - AliAnalysisTaskExtractCascade : ouput data container list not available\n");
2758 fHistV0MultiplicityForTrigEvt = dynamic_cast<TH1F*> ( cRetrievedList->FindObject("fHistV0MultiplicityForTrigEvt") );
2759 if (!fHistV0MultiplicityForTrigEvt) {
2760 Printf("ERROR - AliAnalysisTaskExtractCascade : fHistV0MultiplicityForTrigEvt not available");
2764 TCanvas *canCheck = new TCanvas("AliAnalysisTaskExtractCascade","V0 Multiplicity",10,10,510,510);
2765 canCheck->cd(1)->SetLogy();
2767 fHistV0MultiplicityForTrigEvt->SetMarkerStyle(22);
2768 fHistV0MultiplicityForTrigEvt->DrawCopy("E");
2771 //----------------------------------------------------------------------------
2773 Double_t AliAnalysisTaskExtractPerformanceCascade::MyRapidity(Double_t rE, Double_t rPz) const
2775 // Local calculation for rapidity
2776 Double_t ReturnValue = -100;
2777 if( (rE-rPz+1.e-13) != 0 && (rE+rPz) != 0 ){
2778 ReturnValue = 0.5*TMath::Log((rE+rPz)/(rE-rPz+1.e-13));