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 fkSelectCentrality (kFALSE),
111 //------------------------------------------------
113 //------------------------------------------------
115 fTreeCascVarCharge(0),
116 fTreeCascVarMassAsXi(0),
117 fTreeCascVarMassAsOmega(0),
120 fTreeCascVarRapMC(0),
121 fTreeCascVarRapXi(0),
122 fTreeCascVarRapOmega(0),
123 fTreeCascVarNegEta(0),
124 fTreeCascVarPosEta(0),
125 fTreeCascVarBachEta(0),
126 fTreeCascVarDCACascDaughters(0),
127 fTreeCascVarDCABachToPrimVtx(0),
128 fTreeCascVarDCAV0Daughters(0),
129 fTreeCascVarDCAV0ToPrimVtx(0),
130 fTreeCascVarDCAPosToPrimVtx(0),
131 fTreeCascVarDCANegToPrimVtx(0),
132 fTreeCascVarCascCosPointingAngle(0),
133 fTreeCascVarCascRadius(0),
134 fTreeCascVarV0Mass(0),
135 fTreeCascVarV0CosPointingAngle(0),
136 fTreeCascVarV0CosPointingAngleSpecial(0),
137 fTreeCascVarV0Radius(0),
138 fTreeCascVarLeastNbrClusters(0),
139 fTreeCascVarMultiplicity(0),
140 fTreeCascVarMultiplicityV0A(0),
141 fTreeCascVarMultiplicityZNA(0),
142 fTreeCascVarMultiplicityTRK(0),
143 fTreeCascVarMultiplicitySPD(0),
144 fTreeCascVarMultiplicityMC(0),
145 fTreeCascVarDistOverTotMom(0),
146 fTreeCascVarIsPhysicalPrimary(0),
148 fTreeCascVarPIDSwapped(0),
149 fTreeCascVarPIDBachelor(0),
150 fTreeCascVarPIDNegative(0),
151 fTreeCascVarPIDPositive(0),
152 fTreeCascVarBachTransMom(0),
153 fTreeCascVarPosTransMom(0),
154 fTreeCascVarNegTransMom(0),
155 fTreeCascVarPosTransMomMC(0),
156 fTreeCascVarNegTransMomMC(0),
157 fTreeCascVarNegNSigmaPion(0),
158 fTreeCascVarNegNSigmaProton(0),
159 fTreeCascVarPosNSigmaPion(0),
160 fTreeCascVarPosNSigmaProton(0),
161 fTreeCascVarBachNSigmaPion(0),
162 fTreeCascVarBachNSigmaKaon(0),
164 fTreeCascVarkITSRefitBachelor(0),
165 fTreeCascVarkITSRefitNegative(0),
166 fTreeCascVarkITSRefitPositive(0),
168 fTreeCascVarNegClusters(0),
169 fTreeCascVarPosClusters(0),
170 fTreeCascVarBachClusters(0),
171 fTreeCascVarNegSharedClusters(0),
172 fTreeCascVarPosSharedClusters(0),
173 fTreeCascVarBachSharedClusters(0),
175 fTreeCascVarEvHasXiMinus(0),
176 fTreeCascVarEvHasXiPlus(0),
177 fTreeCascVarEvHasOmegaMinus(0),
178 fTreeCascVarEvHasOmegaPlus(0),
179 fTreeCascVarEvHasLambda(0),
180 fTreeCascVarEvHasAntiLambda(0),
182 fTreeCascVarEvHasLowPtXiMinus(0),
183 fTreeCascVarEvHasLowPtXiPlus(0),
184 fTreeCascVarEvHasLowPtOmegaMinus(0),
185 fTreeCascVarEvHasLowPtOmegaPlus(0),
186 fTreeCascVarEvHasLowPtLambda(0),
187 fTreeCascVarEvHasLowPtAntiLambda(0),
189 fTreeCascVarEvHasVeryLowPtXiMinus(0),
190 fTreeCascVarEvHasVeryLowPtXiPlus(0),
191 fTreeCascVarEvHasVeryLowPtOmegaMinus(0),
192 fTreeCascVarEvHasVeryLowPtOmegaPlus(0),
193 fTreeCascVarEvHasVeryLowPtLambda(0),
194 fTreeCascVarEvHasVeryLowPtAntiLambda(0),
196 fTreeCascVarBadCascadeJai(0),
197 fTreeCascVarDeltaDCA(0),
199 //------------------------------------------------
201 // --- Filled on an Event-by-event basis
202 //------------------------------------------------
203 fHistV0MultiplicityBeforeTrigSel(0),
204 fHistV0MultiplicityForTrigEvt(0),
205 fHistV0MultiplicityForSelEvt(0),
206 fHistV0MultiplicityForSelEvtNoTPCOnly(0),
207 fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup(0),
208 fHistMultiplicityBeforeTrigSel(0),
209 fHistMultiplicityForTrigEvt(0),
210 fHistMultiplicity(0),
211 fHistMultiplicityNoTPCOnly(0),
212 fHistMultiplicityNoTPCOnlyNoPileup(0),
215 fHistMultiplicityV0ABeforeTrigSel(0),
216 fHistMultiplicityV0AForTrigEvt(0),
217 fHistMultiplicityV0A(0),
218 fHistMultiplicityV0ANoTPCOnly(0),
219 fHistMultiplicityV0ANoTPCOnlyNoPileup(0),
222 fHistMultiplicityZNABeforeTrigSel(0),
223 fHistMultiplicityZNAForTrigEvt(0),
224 fHistMultiplicityZNA(0),
225 fHistMultiplicityZNANoTPCOnly(0),
226 fHistMultiplicityZNANoTPCOnlyNoPileup(0),
229 fHistMultiplicityTRKBeforeTrigSel(0),
230 fHistMultiplicityTRKForTrigEvt(0),
231 fHistMultiplicityTRK(0),
232 fHistMultiplicityTRKNoTPCOnly(0),
233 fHistMultiplicityTRKNoTPCOnlyNoPileup(0),
236 fHistMultiplicitySPDBeforeTrigSel(0),
237 fHistMultiplicitySPDForTrigEvt(0),
238 fHistMultiplicitySPD(0),
239 fHistMultiplicitySPDNoTPCOnly(0),
240 fHistMultiplicitySPDNoTPCOnlyNoPileup(0),
243 //------------------------------------------------
244 // PARTICLE HISTOGRAMS
245 // --- Filled on a Particle-by-Particle basis
246 //------------------------------------------------
247 f3dHistGenPtVsYVsMultXiMinus(0),
248 f3dHistGenPtVsYVsMultXiPlus(0),
249 f3dHistGenPtVsYVsMultOmegaMinus(0),
250 f3dHistGenPtVsYVsMultOmegaPlus(0),
251 f3dHistGenSelectedPtVsYVsMultXiMinus(0),
252 f3dHistGenSelectedPtVsYVsMultXiPlus(0),
253 f3dHistGenSelectedPtVsYVsMultOmegaMinus(0),
254 f3dHistGenSelectedPtVsYVsMultOmegaPlus(0),
255 f3dHistGenPtVsYCMSVsMultXiMinus(0),
256 f3dHistGenPtVsYCMSVsMultXiPlus(0),
257 f3dHistGenPtVsYCMSVsMultOmegaMinus(0),
258 f3dHistGenPtVsYCMSVsMultOmegaPlus(0),
259 f3dHistGenSelectedPtVsYCMSVsMultXiMinus(0),
260 f3dHistGenSelectedPtVsYCMSVsMultXiPlus(0),
261 f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus(0),
262 f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus(0),
266 f3dHistGenPtVsYVsMultMCXiMinus(0),
267 f3dHistGenPtVsYVsMultMCXiPlus(0),
268 f3dHistGenPtVsYVsMultMCOmegaMinus(0),
269 f3dHistGenPtVsYVsMultMCOmegaPlus(0),
270 f3dHistGenSelectedPtVsYVsMultMCXiMinus(0),
271 f3dHistGenSelectedPtVsYVsMultMCXiPlus(0),
272 f3dHistGenSelectedPtVsYVsMultMCOmegaMinus(0),
273 f3dHistGenSelectedPtVsYVsMultMCOmegaPlus(0),
274 f3dHistGenPtVsYCMSVsMultMCXiMinus(0),
275 f3dHistGenPtVsYCMSVsMultMCXiPlus(0),
276 f3dHistGenPtVsYCMSVsMultMCOmegaMinus(0),
277 f3dHistGenPtVsYCMSVsMultMCOmegaPlus(0),
278 f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus(0),
279 f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus(0),
280 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus(0),
281 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus(0),
285 f3dHistGenPtVsYVsMultV0AXiMinus(0),
286 f3dHistGenPtVsYVsMultV0AXiPlus(0),
287 f3dHistGenPtVsYVsMultV0AOmegaMinus(0),
288 f3dHistGenPtVsYVsMultV0AOmegaPlus(0),
289 f3dHistGenSelectedPtVsYVsMultV0AXiMinus(0),
290 f3dHistGenSelectedPtVsYVsMultV0AXiPlus(0),
291 f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus(0),
292 f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus(0),
293 f3dHistGenPtVsYCMSVsMultV0AXiMinus(0),
294 f3dHistGenPtVsYCMSVsMultV0AXiPlus(0),
295 f3dHistGenPtVsYCMSVsMultV0AOmegaMinus(0),
296 f3dHistGenPtVsYCMSVsMultV0AOmegaPlus(0),
297 f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus(0),
298 f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus(0),
299 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus(0),
300 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus(0),
301 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiMinus(0),
302 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiPlus(0),
303 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaMinus(0),
304 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaPlus(0),
308 f3dHistGenPtVsYVsMultZNAXiMinus(0),
309 f3dHistGenPtVsYVsMultZNAXiPlus(0),
310 f3dHistGenPtVsYVsMultZNAOmegaMinus(0),
311 f3dHistGenPtVsYVsMultZNAOmegaPlus(0),
312 f3dHistGenSelectedPtVsYVsMultZNAXiMinus(0),
313 f3dHistGenSelectedPtVsYVsMultZNAXiPlus(0),
314 f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus(0),
315 f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus(0),
316 f3dHistGenPtVsYCMSVsMultZNAXiMinus(0),
317 f3dHistGenPtVsYCMSVsMultZNAXiPlus(0),
318 f3dHistGenPtVsYCMSVsMultZNAOmegaMinus(0),
319 f3dHistGenPtVsYCMSVsMultZNAOmegaPlus(0),
320 f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus(0),
321 f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus(0),
322 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus(0),
323 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus(0),
327 f3dHistGenPtVsYVsMultTRKXiMinus(0),
328 f3dHistGenPtVsYVsMultTRKXiPlus(0),
329 f3dHistGenPtVsYVsMultTRKOmegaMinus(0),
330 f3dHistGenPtVsYVsMultTRKOmegaPlus(0),
331 f3dHistGenSelectedPtVsYVsMultTRKXiMinus(0),
332 f3dHistGenSelectedPtVsYVsMultTRKXiPlus(0),
333 f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus(0),
334 f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus(0),
335 f3dHistGenPtVsYCMSVsMultTRKXiMinus(0),
336 f3dHistGenPtVsYCMSVsMultTRKXiPlus(0),
337 f3dHistGenPtVsYCMSVsMultTRKOmegaMinus(0),
338 f3dHistGenPtVsYCMSVsMultTRKOmegaPlus(0),
339 f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus(0),
340 f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus(0),
341 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus(0),
342 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus(0),
346 f3dHistGenPtVsYVsMultSPDXiMinus(0),
347 f3dHistGenPtVsYVsMultSPDXiPlus(0),
348 f3dHistGenPtVsYVsMultSPDOmegaMinus(0),
349 f3dHistGenPtVsYVsMultSPDOmegaPlus(0),
350 f3dHistGenSelectedPtVsYVsMultSPDXiMinus(0),
351 f3dHistGenSelectedPtVsYVsMultSPDXiPlus(0),
352 f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus(0),
353 f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus(0),
354 f3dHistGenPtVsYCMSVsMultSPDXiMinus(0),
355 f3dHistGenPtVsYCMSVsMultSPDXiPlus(0),
356 f3dHistGenPtVsYCMSVsMultSPDOmegaMinus(0),
357 f3dHistGenPtVsYCMSVsMultSPDOmegaPlus(0),
358 f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus(0),
359 f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus(0),
360 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus(0),
361 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus(0),
374 AliAnalysisTaskExtractPerformanceCascade::AliAnalysisTaskExtractPerformanceCascade(const char *name)
375 : AliAnalysisTaskSE(name), fListHist(0), fTreeCascade(0), fPIDResponse(0), fESDtrackCuts(0), fUtils(0),
376 fkIsNuclear ( kFALSE ),
377 fkSwitchINT7 ( kFALSE ),
378 fpArapidityShift ( 0.465 ),
379 fCentralityEstimator("V0M"),
380 fkpAVertexSelection( kFALSE ),
382 fkRunVertexers ( kFALSE ),
383 fkCheckSwapping( kFALSE ),
384 fkSelectCentrality (kFALSE),
387 //------------------------------------------------
389 //------------------------------------------------
391 fTreeCascVarCharge(0),
392 fTreeCascVarMassAsXi(0),
393 fTreeCascVarMassAsOmega(0),
396 fTreeCascVarRapMC(0),
397 fTreeCascVarRapXi(0),
398 fTreeCascVarRapOmega(0),
399 fTreeCascVarNegEta(0),
400 fTreeCascVarPosEta(0),
401 fTreeCascVarBachEta(0),
402 fTreeCascVarDCACascDaughters(0),
403 fTreeCascVarDCABachToPrimVtx(0),
404 fTreeCascVarDCAV0Daughters(0),
405 fTreeCascVarDCAV0ToPrimVtx(0),
406 fTreeCascVarDCAPosToPrimVtx(0),
407 fTreeCascVarDCANegToPrimVtx(0),
408 fTreeCascVarCascCosPointingAngle(0),
409 fTreeCascVarCascRadius(0),
410 fTreeCascVarV0Mass(0),
411 fTreeCascVarV0CosPointingAngle(0),
412 fTreeCascVarV0CosPointingAngleSpecial(0),
413 fTreeCascVarV0Radius(0),
414 fTreeCascVarLeastNbrClusters(0),
415 fTreeCascVarMultiplicity(0),
416 fTreeCascVarMultiplicityV0A(0),
417 fTreeCascVarMultiplicityZNA(0),
418 fTreeCascVarMultiplicityTRK(0),
419 fTreeCascVarMultiplicitySPD(0),
420 fTreeCascVarMultiplicityMC(0),
421 fTreeCascVarDistOverTotMom(0),
422 fTreeCascVarIsPhysicalPrimary(0),
424 fTreeCascVarPIDSwapped(0),
425 fTreeCascVarPIDBachelor(0),
426 fTreeCascVarPIDNegative(0),
427 fTreeCascVarPIDPositive(0),
428 fTreeCascVarBachTransMom(0),
429 fTreeCascVarPosTransMom(0),
430 fTreeCascVarNegTransMom(0),
431 fTreeCascVarPosTransMomMC(0),
432 fTreeCascVarNegTransMomMC(0),
433 fTreeCascVarNegNSigmaPion(0),
434 fTreeCascVarNegNSigmaProton(0),
435 fTreeCascVarPosNSigmaPion(0),
436 fTreeCascVarPosNSigmaProton(0),
437 fTreeCascVarBachNSigmaPion(0),
438 fTreeCascVarBachNSigmaKaon(0),
440 fTreeCascVarkITSRefitBachelor(0),
441 fTreeCascVarkITSRefitNegative(0),
442 fTreeCascVarkITSRefitPositive(0),
444 fTreeCascVarNegClusters(0),
445 fTreeCascVarPosClusters(0),
446 fTreeCascVarBachClusters(0),
447 fTreeCascVarNegSharedClusters(0),
448 fTreeCascVarPosSharedClusters(0),
449 fTreeCascVarBachSharedClusters(0),
451 fTreeCascVarEvHasXiMinus(0),
452 fTreeCascVarEvHasXiPlus(0),
453 fTreeCascVarEvHasOmegaMinus(0),
454 fTreeCascVarEvHasOmegaPlus(0),
455 fTreeCascVarEvHasLambda(0),
456 fTreeCascVarEvHasAntiLambda(0),
458 fTreeCascVarEvHasLowPtXiMinus(0),
459 fTreeCascVarEvHasLowPtXiPlus(0),
460 fTreeCascVarEvHasLowPtOmegaMinus(0),
461 fTreeCascVarEvHasLowPtOmegaPlus(0),
462 fTreeCascVarEvHasLowPtLambda(0),
463 fTreeCascVarEvHasLowPtAntiLambda(0),
465 fTreeCascVarEvHasVeryLowPtXiMinus(0),
466 fTreeCascVarEvHasVeryLowPtXiPlus(0),
467 fTreeCascVarEvHasVeryLowPtOmegaMinus(0),
468 fTreeCascVarEvHasVeryLowPtOmegaPlus(0),
469 fTreeCascVarEvHasVeryLowPtLambda(0),
470 fTreeCascVarEvHasVeryLowPtAntiLambda(0),
472 fTreeCascVarBadCascadeJai(0),
473 fTreeCascVarDeltaDCA(0),
475 //------------------------------------------------
477 // --- Filled on an Event-by-event basis
478 //------------------------------------------------
479 fHistV0MultiplicityBeforeTrigSel(0),
480 fHistV0MultiplicityForTrigEvt(0),
481 fHistV0MultiplicityForSelEvt(0),
482 fHistV0MultiplicityForSelEvtNoTPCOnly(0),
483 fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup(0),
484 fHistMultiplicityBeforeTrigSel(0),
485 fHistMultiplicityForTrigEvt(0),
486 fHistMultiplicity(0),
487 fHistMultiplicityNoTPCOnly(0),
488 fHistMultiplicityNoTPCOnlyNoPileup(0),
491 fHistMultiplicityV0ABeforeTrigSel(0),
492 fHistMultiplicityV0AForTrigEvt(0),
493 fHistMultiplicityV0A(0),
494 fHistMultiplicityV0ANoTPCOnly(0),
495 fHistMultiplicityV0ANoTPCOnlyNoPileup(0),
498 fHistMultiplicityZNABeforeTrigSel(0),
499 fHistMultiplicityZNAForTrigEvt(0),
500 fHistMultiplicityZNA(0),
501 fHistMultiplicityZNANoTPCOnly(0),
502 fHistMultiplicityZNANoTPCOnlyNoPileup(0),
505 fHistMultiplicityTRKBeforeTrigSel(0),
506 fHistMultiplicityTRKForTrigEvt(0),
507 fHistMultiplicityTRK(0),
508 fHistMultiplicityTRKNoTPCOnly(0),
509 fHistMultiplicityTRKNoTPCOnlyNoPileup(0),
512 fHistMultiplicitySPDBeforeTrigSel(0),
513 fHistMultiplicitySPDForTrigEvt(0),
514 fHistMultiplicitySPD(0),
515 fHistMultiplicitySPDNoTPCOnly(0),
516 fHistMultiplicitySPDNoTPCOnlyNoPileup(0),
518 //------------------------------------------------
519 // PARTICLE HISTOGRAMS
520 // --- Filled on a Particle-by-Particle basis
521 //------------------------------------------------
522 f3dHistGenPtVsYVsMultXiMinus(0),
523 f3dHistGenPtVsYVsMultXiPlus(0),
524 f3dHistGenPtVsYVsMultOmegaMinus(0),
525 f3dHistGenPtVsYVsMultOmegaPlus(0),
526 f3dHistGenSelectedPtVsYVsMultXiMinus(0),
527 f3dHistGenSelectedPtVsYVsMultXiPlus(0),
528 f3dHistGenSelectedPtVsYVsMultOmegaMinus(0),
529 f3dHistGenSelectedPtVsYVsMultOmegaPlus(0),
530 f3dHistGenPtVsYCMSVsMultXiMinus(0),
531 f3dHistGenPtVsYCMSVsMultXiPlus(0),
532 f3dHistGenPtVsYCMSVsMultOmegaMinus(0),
533 f3dHistGenPtVsYCMSVsMultOmegaPlus(0),
534 f3dHistGenSelectedPtVsYCMSVsMultXiMinus(0),
535 f3dHistGenSelectedPtVsYCMSVsMultXiPlus(0),
536 f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus(0),
537 f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus(0),
541 f3dHistGenPtVsYVsMultMCXiMinus(0),
542 f3dHistGenPtVsYVsMultMCXiPlus(0),
543 f3dHistGenPtVsYVsMultMCOmegaMinus(0),
544 f3dHistGenPtVsYVsMultMCOmegaPlus(0),
545 f3dHistGenSelectedPtVsYVsMultMCXiMinus(0),
546 f3dHistGenSelectedPtVsYVsMultMCXiPlus(0),
547 f3dHistGenSelectedPtVsYVsMultMCOmegaMinus(0),
548 f3dHistGenSelectedPtVsYVsMultMCOmegaPlus(0),
549 f3dHistGenPtVsYCMSVsMultMCXiMinus(0),
550 f3dHistGenPtVsYCMSVsMultMCXiPlus(0),
551 f3dHistGenPtVsYCMSVsMultMCOmegaMinus(0),
552 f3dHistGenPtVsYCMSVsMultMCOmegaPlus(0),
553 f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus(0),
554 f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus(0),
555 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus(0),
556 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus(0),
560 f3dHistGenPtVsYVsMultV0AXiMinus(0),
561 f3dHistGenPtVsYVsMultV0AXiPlus(0),
562 f3dHistGenPtVsYVsMultV0AOmegaMinus(0),
563 f3dHistGenPtVsYVsMultV0AOmegaPlus(0),
564 f3dHistGenSelectedPtVsYVsMultV0AXiMinus(0),
565 f3dHistGenSelectedPtVsYVsMultV0AXiPlus(0),
566 f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus(0),
567 f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus(0),
568 f3dHistGenPtVsYCMSVsMultV0AXiMinus(0),
569 f3dHistGenPtVsYCMSVsMultV0AXiPlus(0),
570 f3dHistGenPtVsYCMSVsMultV0AOmegaMinus(0),
571 f3dHistGenPtVsYCMSVsMultV0AOmegaPlus(0),
572 f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus(0),
573 f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus(0),
574 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus(0),
575 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus(0),
576 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiMinus(0),
577 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiPlus(0),
578 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaMinus(0),
579 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaPlus(0),
583 f3dHistGenPtVsYVsMultZNAXiMinus(0),
584 f3dHistGenPtVsYVsMultZNAXiPlus(0),
585 f3dHistGenPtVsYVsMultZNAOmegaMinus(0),
586 f3dHistGenPtVsYVsMultZNAOmegaPlus(0),
587 f3dHistGenSelectedPtVsYVsMultZNAXiMinus(0),
588 f3dHistGenSelectedPtVsYVsMultZNAXiPlus(0),
589 f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus(0),
590 f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus(0),
591 f3dHistGenPtVsYCMSVsMultZNAXiMinus(0),
592 f3dHistGenPtVsYCMSVsMultZNAXiPlus(0),
593 f3dHistGenPtVsYCMSVsMultZNAOmegaMinus(0),
594 f3dHistGenPtVsYCMSVsMultZNAOmegaPlus(0),
595 f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus(0),
596 f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus(0),
597 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus(0),
598 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus(0),
602 f3dHistGenPtVsYVsMultTRKXiMinus(0),
603 f3dHistGenPtVsYVsMultTRKXiPlus(0),
604 f3dHistGenPtVsYVsMultTRKOmegaMinus(0),
605 f3dHistGenPtVsYVsMultTRKOmegaPlus(0),
606 f3dHistGenSelectedPtVsYVsMultTRKXiMinus(0),
607 f3dHistGenSelectedPtVsYVsMultTRKXiPlus(0),
608 f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus(0),
609 f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus(0),
610 f3dHistGenPtVsYCMSVsMultTRKXiMinus(0),
611 f3dHistGenPtVsYCMSVsMultTRKXiPlus(0),
612 f3dHistGenPtVsYCMSVsMultTRKOmegaMinus(0),
613 f3dHistGenPtVsYCMSVsMultTRKOmegaPlus(0),
614 f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus(0),
615 f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus(0),
616 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus(0),
617 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus(0),
621 f3dHistGenPtVsYVsMultSPDXiMinus(0),
622 f3dHistGenPtVsYVsMultSPDXiPlus(0),
623 f3dHistGenPtVsYVsMultSPDOmegaMinus(0),
624 f3dHistGenPtVsYVsMultSPDOmegaPlus(0),
625 f3dHistGenSelectedPtVsYVsMultSPDXiMinus(0),
626 f3dHistGenSelectedPtVsYVsMultSPDXiPlus(0),
627 f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus(0),
628 f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus(0),
629 f3dHistGenPtVsYCMSVsMultSPDXiMinus(0),
630 f3dHistGenPtVsYCMSVsMultSPDXiPlus(0),
631 f3dHistGenPtVsYCMSVsMultSPDOmegaMinus(0),
632 f3dHistGenPtVsYCMSVsMultSPDOmegaPlus(0),
633 f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus(0),
634 f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus(0),
635 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus(0),
636 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus(0),
648 //Set Variables for re-running the cascade vertexers (as done for MS paper)
650 // New Loose : 1st step for the 7 TeV pp analysis
652 fV0VertexerSels[0] = 33. ; // max allowed chi2
653 fV0VertexerSels[1] = 0.02; // min allowed impact parameter for the 1st daughter (LHC09a4 : 0.05)
654 fV0VertexerSels[2] = 0.02; // min allowed impact parameter for the 2nd daughter (LHC09a4 : 0.05)
655 fV0VertexerSels[3] = 2.0 ; // max allowed DCA between the daughter tracks (LHC09a4 : 0.5)
656 fV0VertexerSels[4] = 0.95; // min allowed cosine of V0's pointing angle (LHC09a4 : 0.99)
657 fV0VertexerSels[5] = 1.0 ; // min radius of the fiducial volume (LHC09a4 : 0.2)
658 fV0VertexerSels[6] = 200. ; // max radius of the fiducial volume (LHC09a4 : 100.0)
660 fCascadeVertexerSels[0] = 33. ; // max allowed chi2 (same as PDC07)
661 fCascadeVertexerSels[1] = 0.05 ; // min allowed V0 impact parameter (PDC07 : 0.05 / LHC09a4 : 0.025 )
662 fCascadeVertexerSels[2] = 0.010; // "window" around the Lambda mass (PDC07 : 0.008 / LHC09a4 : 0.010 )
663 fCascadeVertexerSels[3] = 0.03 ; // min allowed bachelor's impact parameter (PDC07 : 0.035 / LHC09a4 : 0.025 )
664 fCascadeVertexerSels[4] = 2.0 ; // max allowed DCA between the V0 and the bachelor (PDC07 : 0.1 / LHC09a4 : 0.2 )
665 fCascadeVertexerSels[5] = 0.95 ; // min allowed cosine of the cascade pointing angle (PDC07 : 0.9985 / LHC09a4 : 0.998 )
666 fCascadeVertexerSels[6] = 0.4 ; // min radius of the fiducial volume (PDC07 : 0.9 / LHC09a4 : 0.2 )
667 fCascadeVertexerSels[7] = 100. ; // max radius of the fiducial volume (PDC07 : 100 / LHC09a4 : 100 )
669 // Output slot #0 writes into a TList container (Cascade)
670 DefineOutput(1, TList::Class());
671 DefineOutput(2, TTree::Class());
675 AliAnalysisTaskExtractPerformanceCascade::~AliAnalysisTaskExtractPerformanceCascade()
677 //------------------------------------------------
679 //------------------------------------------------
689 //cleanup esd track cuts object too...
691 delete fESDtrackCuts;
701 //________________________________________________________________________
702 void AliAnalysisTaskExtractPerformanceCascade::UserCreateOutputObjects()
707 //------------------------------------------------
709 fTreeCascade = new TTree("fTreeCascade","CascadeCandidates");
711 //------------------------------------------------
712 // fTreeCascade Branch definitions - Cascade Tree
713 //------------------------------------------------
715 //------------------------------------------------
716 // fTreeCascade Branch definitions
717 //------------------------------------------------
719 //-----------BASIC-INFO---------------------------
720 /* 1*/ fTreeCascade->Branch("fTreeCascVarCharge",&fTreeCascVarCharge,"fTreeCascVarCharge/I");
721 /* 2*/ fTreeCascade->Branch("fTreeCascVarMassAsXi",&fTreeCascVarMassAsXi,"fTreeCascVarMassAsXi/F");
722 /* 3*/ fTreeCascade->Branch("fTreeCascVarMassAsOmega",&fTreeCascVarMassAsOmega,"fTreeCascVarMassAsOmega/F");
723 /* 4*/ fTreeCascade->Branch("fTreeCascVarPt",&fTreeCascVarPt,"fTreeCascVarPt/F");
724 /* 5*/ fTreeCascade->Branch("fTreeCascVarPtMC",&fTreeCascVarPtMC,"fTreeCascVarPtMC/F");
725 /* 6*/ fTreeCascade->Branch("fTreeCascVarRapXi",&fTreeCascVarRapXi,"fTreeCascVarRapXi/F");
726 /* 7*/ fTreeCascade->Branch("fTreeCascVarRapMC",&fTreeCascVarRapMC,"fTreeCascVarRapMC/F");
727 /* 8*/ fTreeCascade->Branch("fTreeCascVarRapOmega",&fTreeCascVarRapOmega,"fTreeCascVarRapOmega/F");
728 /* 9*/ fTreeCascade->Branch("fTreeCascVarNegEta",&fTreeCascVarNegEta,"fTreeCascVarNegEta/F");
729 /*10*/ fTreeCascade->Branch("fTreeCascVarPosEta",&fTreeCascVarPosEta,"fTreeCascVarPosEta/F");
730 /*11*/ fTreeCascade->Branch("fTreeCascVarBachEta",&fTreeCascVarBachEta,"fTreeCascVarBachEta/F");
731 //-----------INFO-FOR-CUTS------------------------
732 /*12*/ fTreeCascade->Branch("fTreeCascVarDCACascDaughters",&fTreeCascVarDCACascDaughters,"fTreeCascVarDCACascDaughters/F");
733 /*13*/ fTreeCascade->Branch("fTreeCascVarDCABachToPrimVtx",&fTreeCascVarDCABachToPrimVtx,"fTreeCascVarDCABachToPrimVtx/F");
734 /*14*/ fTreeCascade->Branch("fTreeCascVarDCAV0Daughters",&fTreeCascVarDCAV0Daughters,"fTreeCascVarDCAV0Daughters/F");
735 /*15*/ fTreeCascade->Branch("fTreeCascVarDCAV0ToPrimVtx",&fTreeCascVarDCAV0ToPrimVtx,"fTreeCascVarDCAV0ToPrimVtx/F");
736 /*16*/ fTreeCascade->Branch("fTreeCascVarDCAPosToPrimVtx",&fTreeCascVarDCAPosToPrimVtx,"fTreeCascVarDCAPosToPrimVtx/F");
737 /*17*/ fTreeCascade->Branch("fTreeCascVarDCANegToPrimVtx",&fTreeCascVarDCANegToPrimVtx,"fTreeCascVarDCANegToPrimVtx/F");
738 /*18*/ fTreeCascade->Branch("fTreeCascVarCascCosPointingAngle",&fTreeCascVarCascCosPointingAngle,"fTreeCascVarCascCosPointingAngle/F");
739 /*19*/ fTreeCascade->Branch("fTreeCascVarCascRadius",&fTreeCascVarCascRadius,"fTreeCascVarCascRadius/F");
740 /*20*/ fTreeCascade->Branch("fTreeCascVarV0Mass",&fTreeCascVarV0Mass,"fTreeCascVarV0Mass/F");
741 /*21*/ fTreeCascade->Branch("fTreeCascVarV0CosPointingAngle",&fTreeCascVarV0CosPointingAngle,"fTreeCascVarV0CosPointingAngle/F");
742 /*21*/ fTreeCascade->Branch("fTreeCascVarV0CosPointingAngleSpecial",&fTreeCascVarV0CosPointingAngleSpecial,"fTreeCascVarV0CosPointingAngleSpecial/F");
743 /*22*/ fTreeCascade->Branch("fTreeCascVarV0Radius",&fTreeCascVarV0Radius,"fTreeCascVarV0Radius/F");
744 /*23*/ fTreeCascade->Branch("fTreeCascVarLeastNbrClusters",&fTreeCascVarLeastNbrClusters,"fTreeCascVarLeastNbrClusters/I");
746 /*23*/ fTreeCascade->Branch("fTreeCascVarNegClusters",&fTreeCascVarNegClusters,"fTreeCascVarNegClusters/I");
747 /*23*/ fTreeCascade->Branch("fTreeCascVarPosClusters",&fTreeCascVarPosClusters,"fTreeCascVarPosClusters/I");
748 /*23*/ fTreeCascade->Branch("fTreeCascVarBachClusters",&fTreeCascVarBachClusters,"fTreeCascVarBachClusters/I");
749 /*23*/ fTreeCascade->Branch("fTreeCascVarNegSharedClusters",&fTreeCascVarNegSharedClusters,"fTreeCascVarNegSharedClusters/I");
750 /*23*/ fTreeCascade->Branch("fTreeCascVarPosSharedClusters",&fTreeCascVarPosSharedClusters,"fTreeCascVarPosSharedClusters/I");
751 /*23*/ fTreeCascade->Branch("fTreeCascVarBachSharedClusters",&fTreeCascVarBachSharedClusters,"fTreeCascVarBachSharedClusters/I");
752 //-----------MULTIPLICITY-INFO--------------------
753 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicity",&fTreeCascVarMultiplicity,"fTreeCascVarMultiplicity/I");
754 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicityV0A",&fTreeCascVarMultiplicityV0A,"fTreeCascVarMultiplicityV0A/I");
755 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicityZNA",&fTreeCascVarMultiplicityZNA,"fTreeCascVarMultiplicityZNA/I");
756 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicityTRK",&fTreeCascVarMultiplicityTRK,"fTreeCascVarMultiplicityTRK/I");
757 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicitySPD",&fTreeCascVarMultiplicitySPD,"fTreeCascVarMultiplicitySPD/I");
758 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicityMC",&fTreeCascVarMultiplicityMC,"fTreeCascVarMultiplicityMC/I");
759 //-----------DECAY-LENGTH-INFO--------------------
760 /*25*/ fTreeCascade->Branch("fTreeCascVarDistOverTotMom",&fTreeCascVarDistOverTotMom,"fTreeCascVarDistOverTotMom/F");
761 //-----------MC-PID-------------------------------
762 /*25bis*/ fTreeCascade->Branch("fTreeCascVarIsPhysicalPrimary",&fTreeCascVarIsPhysicalPrimary,"fTreeCascVarIsPhysicalPrimary/I");
763 /*26*/ fTreeCascade->Branch("fTreeCascVarPID",&fTreeCascVarPID,"fTreeCascVarPID/I");
764 /*26*/ fTreeCascade->Branch("fTreeCascVarPIDSwapped",&fTreeCascVarPIDSwapped,"fTreeCascVarPIDSwapped/I");
765 /*27*/ fTreeCascade->Branch("fTreeCascVarPIDBachelor",&fTreeCascVarPIDBachelor,"fTreeCascVarPIDBachelor/I");
766 /*28*/ fTreeCascade->Branch("fTreeCascVarPIDNegative",&fTreeCascVarPIDNegative,"fTreeCascVarPIDNegative/I");
767 /*29*/ fTreeCascade->Branch("fTreeCascVarPIDPositive",&fTreeCascVarPIDPositive,"fTreeCascVarPIDPositive/I");
768 /*30*/ fTreeCascade->Branch("fTreeCascVarBachTransMom",&fTreeCascVarBachTransMom,"fTreeCascVarBachTransMom/F");
769 /*30*/ fTreeCascade->Branch("fTreeCascVarPosTransMom",&fTreeCascVarPosTransMom,"fTreeCascVarPosTransMom/F");
770 /*31*/ fTreeCascade->Branch("fTreeCascVarNegTransMom",&fTreeCascVarNegTransMom,"fTreeCascVarNegTransMom/F");
771 /*32*/ fTreeCascade->Branch("fTreeCascVarPosTransMomMC",&fTreeCascVarPosTransMomMC,"fTreeCascVarPosTransMomMC/F");
772 /*33*/ fTreeCascade->Branch("fTreeCascVarNegTransMomMC",&fTreeCascVarNegTransMomMC,"fTreeCascVarNegTransMomMC/F");
773 //------------------------------------------------
774 /*34*/ fTreeCascade->Branch("fTreeCascVarNegNSigmaPion",&fTreeCascVarNegNSigmaPion,"fTreeCascVarNegNSigmaPion/F");
775 /*35*/ fTreeCascade->Branch("fTreeCascVarNegNSigmaProton",&fTreeCascVarNegNSigmaProton,"fTreeCascVarNegNSigmaProton/F");
776 /*36*/ fTreeCascade->Branch("fTreeCascVarPosNSigmaPion",&fTreeCascVarPosNSigmaPion,"fTreeCascVarPosNSigmaPion/F");
777 /*37*/ fTreeCascade->Branch("fTreeCascVarPosNSigmaProton",&fTreeCascVarPosNSigmaProton,"fTreeCascVarPosNSigmaProton/F");
778 /*38*/ fTreeCascade->Branch("fTreeCascVarBachNSigmaPion",&fTreeCascVarBachNSigmaPion,"fTreeCascVarBachNSigmaPion/F");
779 /*39*/ fTreeCascade->Branch("fTreeCascVarBachNSigmaKaon",&fTreeCascVarBachNSigmaKaon,"fTreeCascVarBachNSigmaKaon/F");
781 /*29*/ fTreeCascade->Branch("fTreeCascVarkITSRefitBachelor",&fTreeCascVarkITSRefitBachelor,"fTreeCascVarkITSRefitBachelor/O");
782 /*29*/ fTreeCascade->Branch("fTreeCascVarkITSRefitNegative",&fTreeCascVarkITSRefitNegative,"fTreeCascVarkITSRefitNegative/O");
783 /*29*/ fTreeCascade->Branch("fTreeCascVarkITSRefitPositive",&fTreeCascVarkITSRefitPositive,"fTreeCascVarkITSRefitPositive/O");
785 fTreeCascade->Branch("fTreeCascVarNegClusters",&fTreeCascVarNegClusters,"fTreeCascVarNegClusters/I");
786 fTreeCascade->Branch("fTreeCascVarPosClusters",&fTreeCascVarPosClusters,"fTreeCascVarPosClusters/I");
787 fTreeCascade->Branch("fTreeCascVarBachClusters",&fTreeCascVarBachClusters,"fTreeCascVarBachClusters/I");
788 fTreeCascade->Branch("fTreeCascVarNegSharedClusters",&fTreeCascVarNegSharedClusters,"fTreeCascVarNegSharedClusters/I");
789 fTreeCascade->Branch("fTreeCascVarPosSharedClusters",&fTreeCascVarPosSharedClusters,"fTreeCascVarPosSharedClusters/I");
790 fTreeCascade->Branch("fTreeCascVarBachSharedClusters",&fTreeCascVarBachSharedClusters,"fTreeCascVarBachSharedClusters/I");
792 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasXiMinus", &fTreeCascVarEvHasXiMinus, "fTreeCascVarEvHasXiMinus/O");
793 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasXiPlus", &fTreeCascVarEvHasXiPlus, "fTreeCascVarEvHasXiPlus/O");
794 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasOmegaMinus",&fTreeCascVarEvHasOmegaMinus,"fTreeCascVarEvHasOmegaMinus/O");
795 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasOmegaPlus", &fTreeCascVarEvHasOmegaPlus, "fTreeCascVarEvHasOmegaPlus/O");
796 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLambda", &fTreeCascVarEvHasLambda, "fTreeCascVarEvHasLambda/O");
797 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasAntiLambda",&fTreeCascVarEvHasAntiLambda,"fTreeCascVarEvHasAntiLambda/O");
799 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLowPtXiMinus", &fTreeCascVarEvHasLowPtXiMinus, "fTreeCascVarEvHasLowPtXiMinus/O");
800 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLowPtXiPlus", &fTreeCascVarEvHasLowPtXiPlus, "fTreeCascVarEvHasLowPtXiPlus/O");
801 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLowPtOmegaMinus",&fTreeCascVarEvHasLowPtOmegaMinus,"fTreeCascVarEvHasLowPtOmegaMinus/O");
802 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLowPtOmegaPlus", &fTreeCascVarEvHasLowPtOmegaPlus, "fTreeCascVarEvHasLowPtOmegaPlus/O");
803 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLowPtLambda", &fTreeCascVarEvHasLowPtLambda, "fTreeCascVarEvHasLowPtLambda/O");
804 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLowPtAntiLambda",&fTreeCascVarEvHasLowPtAntiLambda,"fTreeCascVarEvHasLowPtAntiLambda/O");
806 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasVeryLowPtXiMinus", &fTreeCascVarEvHasVeryLowPtXiMinus, "fTreeCascVarEvHasVeryLowPtXiMinus/O");
807 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasVeryLowPtXiPlus", &fTreeCascVarEvHasVeryLowPtXiPlus, "fTreeCascVarEvHasVeryLowPtXiPlus/O");
808 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasVeryLowPtOmegaMinus",&fTreeCascVarEvHasVeryLowPtOmegaMinus,"fTreeCascVarEvHasVeryLowPtOmegaMinus/O");
809 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasVeryLowPtOmegaPlus", &fTreeCascVarEvHasVeryLowPtOmegaPlus, "fTreeCascVarEvHasVeryLowPtOmegaPlus/O");
810 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasVeryLowPtLambda", &fTreeCascVarEvHasVeryLowPtLambda, "fTreeCascVarEvHasVeryLowPtLambda/O");
811 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasVeryLowPtAntiLambda",&fTreeCascVarEvHasVeryLowPtAntiLambda,"fTreeCascVarEvHasVeryLowPtAntiLambda/O");
813 fTreeCascade->Branch("fTreeCascVarBadCascadeJai",&fTreeCascVarBadCascadeJai,"fTreeCascVarBadCascadeJai/O");
814 fTreeCascade->Branch("fTreeCascVarDeltaDCA",&fTreeCascVarDeltaDCA,"fTreeCascVarDeltaDCA/F");
816 //------------------------------------------------
817 // Particle Identification Setup
818 //------------------------------------------------
820 AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
821 AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
822 fPIDResponse = inputHandler->GetPIDResponse();
826 if(! fESDtrackCuts ){
827 fESDtrackCuts = new AliESDtrackCuts();
830 fUtils = new AliAnalysisUtils();
833 //------------------------------------------------
834 // V0 Multiplicity Histograms
835 //------------------------------------------------
839 fListHist = new TList();
840 fListHist->SetOwner(); // See http://root.cern.ch/root/html/TCollection.html#TCollection:SetOwner
843 if(! fHistV0MultiplicityBeforeTrigSel) {
844 fHistV0MultiplicityBeforeTrigSel = new TH1F("fHistV0MultiplicityBeforeTrigSel",
845 "V0s per event (before Trig. Sel.);Nbr of V0s/Evt;Events",
847 fListHist->Add(fHistV0MultiplicityBeforeTrigSel);
850 if(! fHistV0MultiplicityForTrigEvt) {
851 fHistV0MultiplicityForTrigEvt = new TH1F("fHistV0MultiplicityForTrigEvt",
852 "V0s per event (for triggered evt);Nbr of V0s/Evt;Events",
854 fListHist->Add(fHistV0MultiplicityForTrigEvt);
857 if(! fHistV0MultiplicityForSelEvt) {
858 fHistV0MultiplicityForSelEvt = new TH1F("fHistV0MultiplicityForSelEvt",
859 "V0s per event;Nbr of V0s/Evt;Events",
861 fListHist->Add(fHistV0MultiplicityForSelEvt);
864 if(! fHistV0MultiplicityForSelEvtNoTPCOnly) {
865 fHistV0MultiplicityForSelEvtNoTPCOnly = new TH1F("fHistV0MultiplicityForSelEvtNoTPCOnly",
866 "V0s per event;Nbr of V0s/Evt;Events",
868 fListHist->Add(fHistV0MultiplicityForSelEvtNoTPCOnly);
870 if(! fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup) {
871 fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup = new TH1F("fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup",
872 "V0s per event;Nbr of V0s/Evt;Events",
874 fListHist->Add(fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup);
877 //------------------------------------------------
878 // Track Multiplicity Histograms
879 //------------------------------------------------
881 if(! fHistMultiplicityBeforeTrigSel) {
882 fHistMultiplicityBeforeTrigSel = new TH1F("fHistMultiplicityBeforeTrigSel",
883 "Tracks per event;Nbr of Tracks;Events",
885 fListHist->Add(fHistMultiplicityBeforeTrigSel);
887 if(! fHistMultiplicityForTrigEvt) {
888 fHistMultiplicityForTrigEvt = new TH1F("fHistMultiplicityForTrigEvt",
889 "Tracks per event;Nbr of Tracks;Events",
891 fListHist->Add(fHistMultiplicityForTrigEvt);
893 if(! fHistMultiplicity) {
894 fHistMultiplicity = new TH1F("fHistMultiplicity",
895 "Tracks per event;Nbr of Tracks;Events",
897 fListHist->Add(fHistMultiplicity);
899 if(! fHistMultiplicityNoTPCOnly) {
900 fHistMultiplicityNoTPCOnly = new TH1F("fHistMultiplicityNoTPCOnly",
901 "Tracks per event;Nbr of Tracks;Events",
903 fListHist->Add(fHistMultiplicityNoTPCOnly);
905 if(! fHistMultiplicityNoTPCOnlyNoPileup) {
906 fHistMultiplicityNoTPCOnlyNoPileup = new TH1F("fHistMultiplicityNoTPCOnlyNoPileup",
907 "Tracks per event;Nbr of Tracks;Events",
909 fListHist->Add(fHistMultiplicityNoTPCOnlyNoPileup);
913 //V0A Centrality (if PbPb / pPb)
914 if(! fHistMultiplicityV0ABeforeTrigSel) {
915 fHistMultiplicityV0ABeforeTrigSel = new TH1F("fHistMultiplicityV0ABeforeTrigSel",
916 "Centrality Distribution: V0A;V0A Centrality;Events",
918 fListHist->Add(fHistMultiplicityV0ABeforeTrigSel);
920 if(! fHistMultiplicityV0AForTrigEvt) {
921 fHistMultiplicityV0AForTrigEvt = new TH1F("fHistMultiplicityV0AForTrigEvt",
922 "Centrality Distribution: V0A;V0A Centrality;Events",
924 fListHist->Add(fHistMultiplicityV0AForTrigEvt);
926 if(! fHistMultiplicityV0A) {
927 fHistMultiplicityV0A = new TH1F("fHistMultiplicityV0A",
928 "Centrality Distribution: V0A;V0A Centrality;Events",
930 fListHist->Add(fHistMultiplicityV0A);
932 if(! fHistMultiplicityV0ANoTPCOnly) {
933 fHistMultiplicityV0ANoTPCOnly = new TH1F("fHistMultiplicityV0ANoTPCOnly",
934 "Centrality Distribution: V0A;V0A Centrality;Events",
936 fListHist->Add(fHistMultiplicityV0ANoTPCOnly);
938 if(! fHistMultiplicityV0ANoTPCOnlyNoPileup) {
939 fHistMultiplicityV0ANoTPCOnlyNoPileup = new TH1F("fHistMultiplicityV0ANoTPCOnlyNoPileup",
940 "Centrality Distribution: V0A;V0A Centrality;Events",
942 fListHist->Add(fHistMultiplicityV0ANoTPCOnlyNoPileup);
945 //ZNA Centrality (if PbPb / pPb)
946 if(! fHistMultiplicityZNABeforeTrigSel) {
947 fHistMultiplicityZNABeforeTrigSel = new TH1F("fHistMultiplicityZNABeforeTrigSel",
948 "Centrality Distribution: ZNA;ZNA Centrality;Events",
950 fListHist->Add(fHistMultiplicityZNABeforeTrigSel);
952 if(! fHistMultiplicityZNAForTrigEvt) {
953 fHistMultiplicityZNAForTrigEvt = new TH1F("fHistMultiplicityZNAForTrigEvt",
954 "Centrality Distribution: ZNA;ZNA Centrality;Events",
956 fListHist->Add(fHistMultiplicityZNAForTrigEvt);
958 if(! fHistMultiplicityZNA) {
959 fHistMultiplicityZNA = new TH1F("fHistMultiplicityZNA",
960 "Centrality Distribution: ZNA;ZNA Centrality;Events",
962 fListHist->Add(fHistMultiplicityZNA);
964 if(! fHistMultiplicityZNANoTPCOnly) {
965 fHistMultiplicityZNANoTPCOnly = new TH1F("fHistMultiplicityZNANoTPCOnly",
966 "Centrality Distribution: ZNA;ZNA Centrality;Events",
968 fListHist->Add(fHistMultiplicityZNANoTPCOnly);
970 if(! fHistMultiplicityZNANoTPCOnlyNoPileup) {
971 fHistMultiplicityZNANoTPCOnlyNoPileup = new TH1F("fHistMultiplicityZNANoTPCOnlyNoPileup",
972 "Centrality Distribution: ZNA;ZNA Centrality;Events",
974 fListHist->Add(fHistMultiplicityZNANoTPCOnlyNoPileup);
977 //TRK Centrality (if PbPb / pPb)
978 if(! fHistMultiplicityTRKBeforeTrigSel) {
979 fHistMultiplicityTRKBeforeTrigSel = new TH1F("fHistMultiplicityTRKBeforeTrigSel",
980 "Centrality Distribution: TRK;TRK Centrality;Events",
982 fListHist->Add(fHistMultiplicityTRKBeforeTrigSel);
984 if(! fHistMultiplicityTRKForTrigEvt) {
985 fHistMultiplicityTRKForTrigEvt = new TH1F("fHistMultiplicityTRKForTrigEvt",
986 "Centrality Distribution: TRK;TRK Centrality;Events",
988 fListHist->Add(fHistMultiplicityTRKForTrigEvt);
990 if(! fHistMultiplicityTRK) {
991 fHistMultiplicityTRK = new TH1F("fHistMultiplicityTRK",
992 "Centrality Distribution: TRK;TRK Centrality;Events",
994 fListHist->Add(fHistMultiplicityTRK);
996 if(! fHistMultiplicityTRKNoTPCOnly) {
997 fHistMultiplicityTRKNoTPCOnly = new TH1F("fHistMultiplicityTRKNoTPCOnly",
998 "Centrality Distribution: TRK;TRK Centrality;Events",
1000 fListHist->Add(fHistMultiplicityTRKNoTPCOnly);
1002 if(! fHistMultiplicityTRKNoTPCOnlyNoPileup) {
1003 fHistMultiplicityTRKNoTPCOnlyNoPileup = new TH1F("fHistMultiplicityTRKNoTPCOnlyNoPileup",
1004 "Centrality Distribution: TRK;TRK Centrality;Events",
1006 fListHist->Add(fHistMultiplicityTRKNoTPCOnlyNoPileup);
1009 //SPD Centrality (if PbPb / pPb)
1010 if(! fHistMultiplicitySPDBeforeTrigSel) {
1011 fHistMultiplicitySPDBeforeTrigSel = new TH1F("fHistMultiplicitySPDBeforeTrigSel",
1012 "Centrality Distribution: SPD;SPD Centrality;Events",
1014 fListHist->Add(fHistMultiplicitySPDBeforeTrigSel);
1016 if(! fHistMultiplicitySPDForTrigEvt) {
1017 fHistMultiplicitySPDForTrigEvt = new TH1F("fHistMultiplicitySPDForTrigEvt",
1018 "Centrality Distribution: SPD;SPD Centrality;Events",
1020 fListHist->Add(fHistMultiplicitySPDForTrigEvt);
1022 if(! fHistMultiplicitySPD) {
1023 fHistMultiplicitySPD = new TH1F("fHistMultiplicitySPD",
1024 "Centrality Distribution: SPD;SPD Centrality;Events",
1026 fListHist->Add(fHistMultiplicitySPD);
1028 if(! fHistMultiplicitySPDNoTPCOnly) {
1029 fHistMultiplicitySPDNoTPCOnly = new TH1F("fHistMultiplicitySPDNoTPCOnly",
1030 "Centrality Distribution: SPD;SPD Centrality;Events",
1032 fListHist->Add(fHistMultiplicitySPDNoTPCOnly);
1034 if(! fHistMultiplicitySPDNoTPCOnlyNoPileup) {
1035 fHistMultiplicitySPDNoTPCOnlyNoPileup = new TH1F("fHistMultiplicitySPDNoTPCOnlyNoPileup",
1036 "Centrality Distribution: SPD;SPD Centrality;Events",
1038 fListHist->Add(fHistMultiplicitySPDNoTPCOnlyNoPileup);
1044 //------------------------------------------------
1045 // Generated Particle Histograms
1046 //------------------------------------------------
1048 Int_t lCustomNBins = 200;
1049 Double_t lCustomPtUpperLimit = 20;
1050 Int_t lCustomNBinsMultiplicity = 100;
1052 //----------------------------------
1053 // Raw Generated (Pre-physics-selection)
1054 //----------------------------------
1056 //--------------------------------------------------------------------------------------
1057 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1059 if(! f3dHistGenPtVsYVsMultXiMinus) {
1060 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);
1061 fListHist->Add(f3dHistGenPtVsYVsMultXiMinus);
1063 if(! f3dHistGenPtVsYVsMultXiPlus) {
1064 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);
1065 fListHist->Add(f3dHistGenPtVsYVsMultXiPlus);
1067 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1069 if(! f3dHistGenPtVsYVsMultOmegaMinus) {
1070 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);
1071 fListHist->Add(f3dHistGenPtVsYVsMultOmegaMinus);
1073 if(! f3dHistGenPtVsYVsMultOmegaPlus) {
1074 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);
1075 fListHist->Add(f3dHistGenPtVsYVsMultOmegaPlus);
1078 //All generated cascades, YCMS
1080 if(! f3dHistGenPtVsYCMSVsMultXiMinus) {
1081 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);
1082 fListHist->Add(f3dHistGenPtVsYCMSVsMultXiMinus);
1084 if(! f3dHistGenPtVsYCMSVsMultXiPlus) {
1085 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);
1086 fListHist->Add(f3dHistGenPtVsYCMSVsMultXiPlus);
1088 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1090 if(! f3dHistGenPtVsYCMSVsMultOmegaMinus) {
1091 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);
1092 fListHist->Add(f3dHistGenPtVsYCMSVsMultOmegaMinus);
1094 if(! f3dHistGenPtVsYCMSVsMultOmegaPlus) {
1095 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);
1096 fListHist->Add(f3dHistGenPtVsYCMSVsMultOmegaPlus);
1100 //--------------------------------------------------------------------------------------
1101 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1103 if(! f3dHistGenSelectedPtVsYVsMultXiMinus) {
1104 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);
1105 fListHist->Add(f3dHistGenSelectedPtVsYVsMultXiMinus);
1107 if(! f3dHistGenSelectedPtVsYVsMultXiPlus) {
1108 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);
1109 fListHist->Add(f3dHistGenSelectedPtVsYVsMultXiPlus);
1111 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1113 if(! f3dHistGenSelectedPtVsYVsMultOmegaMinus) {
1114 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);
1115 fListHist->Add(f3dHistGenSelectedPtVsYVsMultOmegaMinus);
1117 if(! f3dHistGenSelectedPtVsYVsMultOmegaPlus) {
1118 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);
1119 fListHist->Add(f3dHistGenSelectedPtVsYVsMultOmegaPlus);
1122 //ANALYSIS level Cascades, YCMS
1125 if(! f3dHistGenSelectedPtVsYCMSVsMultXiMinus) {
1126 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);
1127 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultXiMinus);
1129 if(! f3dHistGenSelectedPtVsYCMSVsMultXiPlus) {
1130 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);
1131 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultXiPlus);
1133 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1135 if(! f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus) {
1136 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);
1137 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus);
1139 if(! f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus) {
1140 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);
1141 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus);
1144 //======================================================================================
1145 //--------------------------------------------------------------------------------------
1146 // True Generated (For Multiplicity Unfolding)
1147 //--------------------------------------------------------------------------------------
1148 //======================================================================================
1150 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1152 if(! f3dHistGenPtVsYVsMultMCXiMinus) {
1153 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);
1154 fListHist->Add(f3dHistGenPtVsYVsMultMCXiMinus);
1156 if(! f3dHistGenPtVsYVsMultMCXiPlus) {
1157 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);
1158 fListHist->Add(f3dHistGenPtVsYVsMultMCXiPlus);
1160 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1162 if(! f3dHistGenPtVsYVsMultMCOmegaMinus) {
1163 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);
1164 fListHist->Add(f3dHistGenPtVsYVsMultMCOmegaMinus);
1166 if(! f3dHistGenPtVsYVsMultMCOmegaPlus) {
1167 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);
1168 fListHist->Add(f3dHistGenPtVsYVsMultMCOmegaPlus);
1171 //All generated cascades, YCMS
1173 if(! f3dHistGenPtVsYCMSVsMultMCXiMinus) {
1174 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);
1175 fListHist->Add(f3dHistGenPtVsYCMSVsMultMCXiMinus);
1177 if(! f3dHistGenPtVsYCMSVsMultMCXiPlus) {
1178 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);
1179 fListHist->Add(f3dHistGenPtVsYCMSVsMultMCXiPlus);
1181 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1183 if(! f3dHistGenPtVsYCMSVsMultMCOmegaMinus) {
1184 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);
1185 fListHist->Add(f3dHistGenPtVsYCMSVsMultMCOmegaMinus);
1187 if(! f3dHistGenPtVsYCMSVsMultMCOmegaPlus) {
1188 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);
1189 fListHist->Add(f3dHistGenPtVsYCMSVsMultMCOmegaPlus);
1193 //--------------------------------------------------------------------------------------
1194 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1196 if(! f3dHistGenSelectedPtVsYVsMultMCXiMinus) {
1197 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);
1198 fListHist->Add(f3dHistGenSelectedPtVsYVsMultMCXiMinus);
1200 if(! f3dHistGenSelectedPtVsYVsMultMCXiPlus) {
1201 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);
1202 fListHist->Add(f3dHistGenSelectedPtVsYVsMultMCXiPlus);
1204 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1206 if(! f3dHistGenSelectedPtVsYVsMultMCOmegaMinus) {
1207 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);
1208 fListHist->Add(f3dHistGenSelectedPtVsYVsMultMCOmegaMinus);
1210 if(! f3dHistGenSelectedPtVsYVsMultMCOmegaPlus) {
1211 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);
1212 fListHist->Add(f3dHistGenSelectedPtVsYVsMultMCOmegaPlus);
1215 //ANALYSIS level Cascades, YCMS
1218 if(! f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus) {
1219 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);
1220 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus);
1222 if(! f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus) {
1223 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);
1224 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus);
1226 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1228 if(! f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus) {
1229 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);
1230 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus);
1232 if(! f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus) {
1233 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);
1234 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus);
1237 //======================================================================================
1238 //--------------------------------------------------------------------------------------
1240 //--------------------------------------------------------------------------------------
1241 //======================================================================================
1243 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1245 if(! f3dHistGenPtVsYVsMultV0AXiMinus) {
1246 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);
1247 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultV0AXiMinus);
1249 if(! f3dHistGenPtVsYVsMultV0AXiPlus) {
1250 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);
1251 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultV0AXiPlus);
1253 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1255 if(! f3dHistGenPtVsYVsMultV0AOmegaMinus) {
1256 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);
1257 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultV0AOmegaMinus);
1259 if(! f3dHistGenPtVsYVsMultV0AOmegaPlus) {
1260 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);
1261 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultV0AOmegaPlus);
1264 //All generated cascades, YCMS
1266 if(! f3dHistGenPtVsYCMSVsMultV0AXiMinus) {
1267 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);
1268 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultV0AXiMinus);
1270 if(! f3dHistGenPtVsYCMSVsMultV0AXiPlus) {
1271 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);
1272 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultV0AXiPlus);
1274 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1276 if(! f3dHistGenPtVsYCMSVsMultV0AOmegaMinus) {
1277 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);
1278 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultV0AOmegaMinus);
1280 if(! f3dHistGenPtVsYCMSVsMultV0AOmegaPlus) {
1281 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);
1282 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultV0AOmegaPlus);
1286 //--------------------------------------------------------------------------------------
1287 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1289 if(! f3dHistGenSelectedPtVsYVsMultV0AXiMinus) {
1290 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);
1291 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultV0AXiMinus);
1293 if(! f3dHistGenSelectedPtVsYVsMultV0AXiPlus) {
1294 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);
1295 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultV0AXiPlus);
1297 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1299 if(! f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus) {
1300 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);
1301 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus);
1303 if(! f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus) {
1304 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);
1305 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus);
1308 //ANALYSIS level Cascades, YCMS
1311 if(! f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus) {
1312 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);
1313 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus);
1315 if(! f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus) {
1316 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);
1317 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus);
1319 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1321 if(! f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus) {
1322 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);
1323 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus);
1325 if(! f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus) {
1326 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);
1327 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus);
1330 //Cross-check primary selection criteria
1331 //Should not impact much but inspired by rumors of DPMJet issues with primary selection (?)
1333 if(! f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiMinus) {
1334 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiMinus = new TH3F( "f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1335 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiMinus);
1337 if(! f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiPlus) {
1338 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiPlus = new TH3F( "f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1339 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiPlus);
1341 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1343 if(! f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaMinus) {
1344 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaMinus = new TH3F( "f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaMinus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1345 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaMinus);
1347 if(! f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaPlus) {
1348 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaPlus = new TH3F( "f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaPlus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1349 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaPlus);
1352 //======================================================================================
1353 //--------------------------------------------------------------------------------------
1355 //--------------------------------------------------------------------------------------
1356 //======================================================================================
1358 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1360 if(! f3dHistGenPtVsYVsMultZNAXiMinus) {
1361 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);
1362 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultZNAXiMinus);
1364 if(! f3dHistGenPtVsYVsMultZNAXiPlus) {
1365 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);
1366 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultZNAXiPlus);
1368 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1370 if(! f3dHistGenPtVsYVsMultZNAOmegaMinus) {
1371 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);
1372 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultZNAOmegaMinus);
1374 if(! f3dHistGenPtVsYVsMultZNAOmegaPlus) {
1375 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);
1376 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultZNAOmegaPlus);
1379 //All generated cascades, YCMS
1381 if(! f3dHistGenPtVsYCMSVsMultZNAXiMinus) {
1382 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);
1383 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultZNAXiMinus);
1385 if(! f3dHistGenPtVsYCMSVsMultZNAXiPlus) {
1386 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);
1387 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultZNAXiPlus);
1389 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1391 if(! f3dHistGenPtVsYCMSVsMultZNAOmegaMinus) {
1392 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);
1393 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultZNAOmegaMinus);
1395 if(! f3dHistGenPtVsYCMSVsMultZNAOmegaPlus) {
1396 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);
1397 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultZNAOmegaPlus);
1401 //--------------------------------------------------------------------------------------
1402 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1404 if(! f3dHistGenSelectedPtVsYVsMultZNAXiMinus) {
1405 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);
1406 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultZNAXiMinus);
1408 if(! f3dHistGenSelectedPtVsYVsMultZNAXiPlus) {
1409 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);
1410 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultZNAXiPlus);
1412 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1414 if(! f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus) {
1415 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);
1416 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus);
1418 if(! f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus) {
1419 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);
1420 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus);
1423 //ANALYSIS level Cascades, YCMS
1426 if(! f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus) {
1427 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);
1428 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus);
1430 if(! f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus) {
1431 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);
1432 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus);
1434 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1436 if(! f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus) {
1437 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);
1438 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus);
1440 if(! f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus) {
1441 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);
1442 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus);
1446 //======================================================================================
1447 //--------------------------------------------------------------------------------------
1449 //--------------------------------------------------------------------------------------
1450 //======================================================================================
1452 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1454 if(! f3dHistGenPtVsYVsMultTRKXiMinus) {
1455 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);
1456 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultTRKXiMinus);
1458 if(! f3dHistGenPtVsYVsMultTRKXiPlus) {
1459 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);
1460 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultTRKXiPlus);
1462 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1464 if(! f3dHistGenPtVsYVsMultTRKOmegaMinus) {
1465 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);
1466 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultTRKOmegaMinus);
1468 if(! f3dHistGenPtVsYVsMultTRKOmegaPlus) {
1469 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);
1470 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultTRKOmegaPlus);
1473 //All generated cascades, YCMS
1475 if(! f3dHistGenPtVsYCMSVsMultTRKXiMinus) {
1476 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);
1477 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultTRKXiMinus);
1479 if(! f3dHistGenPtVsYCMSVsMultTRKXiPlus) {
1480 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);
1481 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultTRKXiPlus);
1483 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1485 if(! f3dHistGenPtVsYCMSVsMultTRKOmegaMinus) {
1486 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);
1487 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultTRKOmegaMinus);
1489 if(! f3dHistGenPtVsYCMSVsMultTRKOmegaPlus) {
1490 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);
1491 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultTRKOmegaPlus);
1495 //--------------------------------------------------------------------------------------
1496 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1498 if(! f3dHistGenSelectedPtVsYVsMultTRKXiMinus) {
1499 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);
1500 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultTRKXiMinus);
1502 if(! f3dHistGenSelectedPtVsYVsMultTRKXiPlus) {
1503 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);
1504 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultTRKXiPlus);
1506 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1508 if(! f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus) {
1509 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);
1510 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus);
1512 if(! f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus) {
1513 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);
1514 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus);
1517 //ANALYSIS level Cascades, YCMS
1520 if(! f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus) {
1521 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);
1522 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus);
1524 if(! f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus) {
1525 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);
1526 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus);
1528 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1530 if(! f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus) {
1531 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);
1532 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus);
1534 if(! f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus) {
1535 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);
1536 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus);
1539 //======================================================================================
1540 //--------------------------------------------------------------------------------------
1542 //--------------------------------------------------------------------------------------
1543 //======================================================================================
1545 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1547 if(! f3dHistGenPtVsYVsMultSPDXiMinus) {
1548 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);
1549 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultSPDXiMinus);
1551 if(! f3dHistGenPtVsYVsMultSPDXiPlus) {
1552 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);
1553 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultSPDXiPlus);
1555 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1557 if(! f3dHistGenPtVsYVsMultSPDOmegaMinus) {
1558 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);
1559 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultSPDOmegaMinus);
1561 if(! f3dHistGenPtVsYVsMultSPDOmegaPlus) {
1562 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);
1563 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultSPDOmegaPlus);
1566 //All generated cascades, YCMS
1568 if(! f3dHistGenPtVsYCMSVsMultSPDXiMinus) {
1569 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);
1570 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultSPDXiMinus);
1572 if(! f3dHistGenPtVsYCMSVsMultSPDXiPlus) {
1573 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);
1574 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultSPDXiPlus);
1576 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1578 if(! f3dHistGenPtVsYCMSVsMultSPDOmegaMinus) {
1579 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);
1580 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultSPDOmegaMinus);
1582 if(! f3dHistGenPtVsYCMSVsMultSPDOmegaPlus) {
1583 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);
1584 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultSPDOmegaPlus);
1588 //--------------------------------------------------------------------------------------
1589 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1591 if(! f3dHistGenSelectedPtVsYVsMultSPDXiMinus) {
1592 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);
1593 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultSPDXiMinus);
1595 if(! f3dHistGenSelectedPtVsYVsMultSPDXiPlus) {
1596 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);
1597 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultSPDXiPlus);
1599 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1601 if(! f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus) {
1602 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);
1603 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus);
1605 if(! f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus) {
1606 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);
1607 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus);
1610 //ANALYSIS level Cascades, YCMS
1613 if(! f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus) {
1614 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);
1615 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus);
1617 if(! f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus) {
1618 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);
1619 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus);
1621 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1623 if(! f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus) {
1624 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);
1625 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus);
1627 if(! f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus) {
1628 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);
1629 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus);
1632 //----------------------------------
1633 // Primary Vertex Position Histos
1634 //----------------------------------
1637 fHistPVx = new TH1F("fHistPVx",
1638 "PV x position;Nbr of Evts;x",
1640 fListHist->Add(fHistPVx);
1643 fHistPVy = new TH1F("fHistPVy",
1644 "PV y position;Nbr of Evts;y",
1646 fListHist->Add(fHistPVy);
1649 fHistPVz = new TH1F("fHistPVz",
1650 "PV z position;Nbr of Evts;z",
1652 fListHist->Add(fHistPVz);
1655 if(! fHistPVxAnalysis) {
1656 fHistPVxAnalysis = new TH1F("fHistPVxAnalysis",
1657 "PV x position;Nbr of Evts;x",
1659 fListHist->Add(fHistPVxAnalysis);
1661 if(! fHistPVyAnalysis) {
1662 fHistPVyAnalysis = new TH1F("fHistPVyAnalysis",
1663 "PV y position;Nbr of Evts;y",
1665 fListHist->Add(fHistPVyAnalysis);
1667 if(! fHistPVzAnalysis) {
1668 fHistPVzAnalysis = new TH1F("fHistPVzAnalysis",
1669 "PV z position;Nbr of Evts;z",
1671 fListHist->Add(fHistPVzAnalysis);
1674 //List of Histograms: Normal
1675 PostData(1, fListHist);
1677 //TTree Object: Saved to base directory. Should cache to disk while saving.
1678 //(Important to avoid excessive memory usage, particularly when merging)
1679 PostData(2, fTreeCascade);
1681 }// end UserCreateOutputObjects
1684 //________________________________________________________________________
1685 void AliAnalysisTaskExtractPerformanceCascade::UserExec(Option_t *)
1688 // Called for each event
1690 AliESDEvent *lESDevent = 0x0;
1691 AliMCEvent *lMCevent = 0x0;
1692 AliStack *lMCstack = 0x0;
1694 Int_t lNumberOfV0s = -1;
1695 Double_t lTrkgPrimaryVtxPos[3] = {-100.0, -100.0, -100.0};
1696 Double_t lBestPrimaryVtxPos[3] = {-100.0, -100.0, -100.0};
1697 Double_t lMagneticField = -10.;
1699 // Connect to the InputEvent
1700 // After these lines, we should have an ESD/AOD event + the number of V0s in it.
1702 // Appropriate for ESD analysis!
1704 lESDevent = dynamic_cast<AliESDEvent*>( InputEvent() );
1706 AliWarning("ERROR: lESDevent not available \n");
1710 /* --- Acquisition of exact event ID
1711 fTreeVariableRunNumber = lESDevent->GetRunNumber();
1712 fTreeVariableEventNumber =
1713 ( ( ((ULong64_t)lESDevent->GetPeriodNumber() ) << 36 ) |
1714 ( ((ULong64_t)lESDevent->GetOrbitNumber () ) << 12 ) |
1715 ((ULong64_t)lESDevent->GetBunchCrossNumber() ) );
1717 lMCevent = MCEvent();
1719 Printf("ERROR: Could not retrieve MC event \n");
1720 cout << "Name of the file with pb :" << fInputHandler->GetTree()->GetCurrentFile()->GetName() << endl;
1724 lMCstack = lMCevent->Stack();
1726 Printf("ERROR: Could not retrieve MC stack \n");
1727 cout << "Name of the file with pb :" << fInputHandler->GetTree()->GetCurrentFile()->GetName() << endl;
1730 TArrayF mcPrimaryVtx;
1731 AliGenEventHeader* mcHeader=lMCevent->GenEventHeader();
1732 if(!mcHeader) return;
1733 mcHeader->PrimaryVertex(mcPrimaryVtx);
1735 //------------------------------------------------
1736 // Multiplicity Information Acquistion
1737 //------------------------------------------------
1739 //REVISED multiplicity estimator after 'multiplicity day' (2011)
1740 Int_t lMultiplicity = -100;
1741 Int_t lMultiplicityV0A = -100;
1742 Int_t lMultiplicityZNA = -100;
1743 Int_t lMultiplicityTRK = -100;
1744 Int_t lMultiplicitySPD = -100;
1747 if(fkIsNuclear == kFALSE) lMultiplicity = fESDtrackCuts->GetReferenceMultiplicity(lESDevent, AliESDtrackCuts::kTrackletsITSTPC, fEtaRefMult );
1749 //--------- GENERATED NUMBER OF CHARGED PARTICLES
1750 // ---> Set Variables to Zero again
1751 // ---> Variable Definition
1753 Long_t lNumberOfCharged = 0;
1755 //----- Loop on Stack ----------------------------------------------------------------
1756 for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < (lMCstack->GetNtrack()); iCurrentLabelStack++)
1757 {// This is the begining of the loop on tracks
1758 TParticle* particleOne = lMCstack->Particle(iCurrentLabelStack);
1759 if(!particleOne) continue;
1760 if(!particleOne->GetPDG()) continue;
1761 Double_t lThisCharge = particleOne->GetPDG()->Charge()/3.;
1762 if(TMath::Abs(lThisCharge)<0.001) continue;
1763 if(! (lMCstack->IsPhysicalPrimary(iCurrentLabelStack)) ) continue;
1765 //Double_t gpt = particleOne -> Pt();
1766 Double_t geta = particleOne -> Eta();
1768 if( TMath::Abs(geta) < 0.5) lNumberOfCharged++;
1769 }//End of loop on tracks
1770 //----- End Loop on Stack ------------------------------------------------------------
1773 //---> If this is a nuclear collision, then go nuclear on "multiplicity" variable...
1774 //---> Warning: Experimental
1775 if(fkIsNuclear == kTRUE){
1776 AliCentrality* centrality;
1777 centrality = lESDevent->GetCentrality();
1778 lMultiplicity = ( ( Int_t ) ( centrality->GetCentralityPercentile( fCentralityEstimator.Data() ) ) );
1779 lMultiplicityV0A = ( ( Int_t ) ( centrality->GetCentralityPercentile( "V0A" ) ) );
1780 lMultiplicityZNA = ( ( Int_t ) ( centrality->GetCentralityPercentile( "ZNA" ) ) );
1781 lMultiplicityTRK = ( ( Int_t ) ( centrality->GetCentralityPercentile( "TRK" ) ) );
1782 lMultiplicitySPD = ( ( Int_t ) ( centrality->GetCentralityPercentile( "CL1" ) ) );
1783 if (centrality->GetQuality()>1) {
1784 PostData(1, fListHist);
1785 PostData(2, fTreeCascade);
1790 if( fkSelectCentrality ){
1791 if( lMultiplicity < fCentSel_Low || lMultiplicity >= fCentSel_High ){
1792 //Event is outside desired centrality centrality in V0M!
1793 PostData(1, fListHist);
1794 PostData(2, fTreeCascade);
1800 //Set variable for filling tree afterwards!
1801 //---> pp case......: GetReferenceMultiplicity
1802 //---> Pb-Pb case...: Centrality by V0M
1804 fTreeCascVarMultiplicity = lMultiplicity;
1805 fTreeCascVarMultiplicityMC = lNumberOfCharged;
1806 fTreeCascVarMultiplicityV0A = lMultiplicityV0A;
1807 fTreeCascVarMultiplicityZNA = lMultiplicityZNA;
1808 fTreeCascVarMultiplicityTRK = lMultiplicityTRK;
1809 fTreeCascVarMultiplicitySPD = lMultiplicitySPD;
1811 fHistV0MultiplicityBeforeTrigSel->Fill ( lESDevent->GetNumberOfV0s() );
1812 fHistMultiplicityBeforeTrigSel->Fill ( lMultiplicity );
1813 fHistMultiplicityV0ABeforeTrigSel->Fill ( lMultiplicityV0A );
1814 fHistMultiplicityZNABeforeTrigSel->Fill ( lMultiplicityZNA );
1815 fHistMultiplicityTRKBeforeTrigSel->Fill ( lMultiplicityTRK );
1816 fHistMultiplicitySPDBeforeTrigSel->Fill ( lMultiplicitySPD );
1818 //------------------------------------------------
1819 // MC Information Acquistion
1820 //------------------------------------------------
1822 Int_t iNumberOfPrimaries = -1;
1823 iNumberOfPrimaries = lMCstack->GetNprimary();
1824 if(iNumberOfPrimaries < 1) return;
1826 //------------------------------------------------
1827 // Variable Definition
1828 //------------------------------------------------
1830 Int_t lNbMCPrimary = 0;
1832 Double_t lPtCurrentPart = 0;
1834 //Int_t lComeFromSigma = 0;
1836 // current mc particle 's mother
1837 //Int_t iCurrentMother = 0;
1838 lNbMCPrimary = lMCstack->GetNprimary();
1840 //------------------------------------------------
1841 // Pre-Physics Selection
1842 //------------------------------------------------
1845 fTreeCascVarEvHasXiMinus = kFALSE;
1846 fTreeCascVarEvHasXiPlus = kFALSE;
1847 fTreeCascVarEvHasOmegaMinus = kFALSE;
1848 fTreeCascVarEvHasOmegaPlus = kFALSE;
1849 fTreeCascVarEvHasLambda = kFALSE;
1850 fTreeCascVarEvHasAntiLambda = kFALSE;
1852 fTreeCascVarEvHasLowPtXiMinus = kFALSE;
1853 fTreeCascVarEvHasLowPtXiPlus = kFALSE;
1854 fTreeCascVarEvHasLowPtOmegaMinus = kFALSE;
1855 fTreeCascVarEvHasLowPtOmegaPlus = kFALSE;
1856 fTreeCascVarEvHasLowPtLambda = kFALSE;
1857 fTreeCascVarEvHasLowPtAntiLambda = kFALSE;
1859 fTreeCascVarEvHasVeryLowPtXiMinus = kFALSE;
1860 fTreeCascVarEvHasVeryLowPtXiPlus = kFALSE;
1861 fTreeCascVarEvHasVeryLowPtOmegaMinus = kFALSE;
1862 fTreeCascVarEvHasVeryLowPtOmegaPlus = kFALSE;
1863 fTreeCascVarEvHasVeryLowPtLambda = kFALSE;
1864 fTreeCascVarEvHasVeryLowPtAntiLambda = kFALSE;
1867 //----- Loop on primary Xi, Omega --------------------------------------------------------------
1868 for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < lNbMCPrimary; iCurrentLabelStack++)
1869 {// This is the begining of the loop on primaries
1871 TParticle* lCurrentParticlePrimary = 0x0;
1872 lCurrentParticlePrimary = lMCstack->Particle( iCurrentLabelStack );
1873 if(!lCurrentParticlePrimary){
1874 Printf("Cascade loop %d - MC TParticle pointer to current stack particle = 0x0 ! Skip ...\n", iCurrentLabelStack );
1878 //Event Type Acquisition
1879 if(lCurrentParticlePrimary->GetPdgCode() == 3312){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) ) fTreeCascVarEvHasXiMinus = kTRUE; }
1880 if(lCurrentParticlePrimary->GetPdgCode() ==-3312){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) ) fTreeCascVarEvHasXiPlus = kTRUE; }
1881 if(lCurrentParticlePrimary->GetPdgCode() == 3334){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) ) fTreeCascVarEvHasOmegaMinus = kTRUE; }
1882 if(lCurrentParticlePrimary->GetPdgCode() ==-3334){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) ) fTreeCascVarEvHasOmegaPlus = kTRUE; }
1883 if(lCurrentParticlePrimary->GetPdgCode() == 3122){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) ) fTreeCascVarEvHasLambda = kTRUE; }
1884 if(lCurrentParticlePrimary->GetPdgCode() ==-3122){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) ) fTreeCascVarEvHasAntiLambda = kTRUE; }
1886 if(lCurrentParticlePrimary->GetPdgCode() == 3312){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<2.0) fTreeCascVarEvHasLowPtXiMinus = kTRUE; }
1887 if(lCurrentParticlePrimary->GetPdgCode() ==-3312){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<2.0) fTreeCascVarEvHasLowPtXiPlus = kTRUE; }
1888 if(lCurrentParticlePrimary->GetPdgCode() == 3334){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<2.0) fTreeCascVarEvHasLowPtOmegaMinus = kTRUE; }
1889 if(lCurrentParticlePrimary->GetPdgCode() ==-3334){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<2.0) fTreeCascVarEvHasLowPtOmegaPlus = kTRUE; }
1890 if(lCurrentParticlePrimary->GetPdgCode() == 3122){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<2.0) fTreeCascVarEvHasLowPtLambda = kTRUE; }
1891 if(lCurrentParticlePrimary->GetPdgCode() ==-3122){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<2.0) fTreeCascVarEvHasLowPtAntiLambda = kTRUE; }
1893 if(lCurrentParticlePrimary->GetPdgCode() == 3312){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<1.2) fTreeCascVarEvHasVeryLowPtXiMinus = kTRUE; }
1894 if(lCurrentParticlePrimary->GetPdgCode() ==-3312){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<1.2) fTreeCascVarEvHasVeryLowPtXiPlus = kTRUE; }
1895 if(lCurrentParticlePrimary->GetPdgCode() == 3334){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<1.2) fTreeCascVarEvHasVeryLowPtOmegaMinus = kTRUE; }
1896 if(lCurrentParticlePrimary->GetPdgCode() ==-3334){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<1.2) fTreeCascVarEvHasVeryLowPtOmegaPlus = kTRUE; }
1897 if(lCurrentParticlePrimary->GetPdgCode() == 3122){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<1.2) fTreeCascVarEvHasVeryLowPtLambda = kTRUE; }
1898 if(lCurrentParticlePrimary->GetPdgCode() ==-3122){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<1.2) fTreeCascVarEvHasVeryLowPtAntiLambda = kTRUE; }
1900 if ( TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3312 || TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3334 ) {
1901 Double_t lRapXiMCPrimary = -100;
1902 if( (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) != 0 ) {
1903 if ( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) !=0 ){
1904 lRapXiMCPrimary = 0.5*TMath::Log( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) );
1908 //=================================================================================
1910 if( lCurrentParticlePrimary->GetPdgCode() == 3312 ){
1911 lPtCurrentPart = lCurrentParticlePrimary->Pt();
1912 f3dHistGenPtVsYVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
1913 f3dHistGenPtVsYCMSVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
1915 f3dHistGenPtVsYVsMultMCXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
1916 f3dHistGenPtVsYCMSVsMultMCXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
1918 f3dHistGenPtVsYVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
1919 f3dHistGenPtVsYCMSVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
1921 f3dHistGenPtVsYVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
1922 f3dHistGenPtVsYCMSVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
1924 f3dHistGenPtVsYVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
1925 f3dHistGenPtVsYCMSVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
1927 f3dHistGenPtVsYVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
1928 f3dHistGenPtVsYCMSVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
1930 if( lCurrentParticlePrimary->GetPdgCode() == -3312 ){
1931 lPtCurrentPart = lCurrentParticlePrimary->Pt();
1932 f3dHistGenPtVsYVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
1933 f3dHistGenPtVsYCMSVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
1935 f3dHistGenPtVsYVsMultMCXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
1936 f3dHistGenPtVsYCMSVsMultMCXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
1938 f3dHistGenPtVsYVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
1939 f3dHistGenPtVsYCMSVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
1941 f3dHistGenPtVsYVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
1942 f3dHistGenPtVsYCMSVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
1944 f3dHistGenPtVsYVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
1945 f3dHistGenPtVsYCMSVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
1947 f3dHistGenPtVsYVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
1948 f3dHistGenPtVsYCMSVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
1951 if( lCurrentParticlePrimary->GetPdgCode() == 3334 ){
1952 lPtCurrentPart = lCurrentParticlePrimary->Pt();
1953 f3dHistGenPtVsYVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
1954 f3dHistGenPtVsYCMSVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
1956 f3dHistGenPtVsYVsMultMCOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
1957 f3dHistGenPtVsYCMSVsMultMCOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
1959 f3dHistGenPtVsYVsMultV0AOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
1960 f3dHistGenPtVsYCMSVsMultV0AOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
1962 f3dHistGenPtVsYVsMultZNAOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
1963 f3dHistGenPtVsYCMSVsMultZNAOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
1965 f3dHistGenPtVsYVsMultTRKOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
1966 f3dHistGenPtVsYCMSVsMultTRKOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
1968 f3dHistGenPtVsYVsMultSPDOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
1969 f3dHistGenPtVsYCMSVsMultSPDOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
1971 if( lCurrentParticlePrimary->GetPdgCode() == -3334 ){
1972 lPtCurrentPart = lCurrentParticlePrimary->Pt();
1973 f3dHistGenPtVsYVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
1974 f3dHistGenPtVsYCMSVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
1976 f3dHistGenPtVsYVsMultMCOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
1977 f3dHistGenPtVsYCMSVsMultMCOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
1979 f3dHistGenPtVsYVsMultV0AOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
1980 f3dHistGenPtVsYCMSVsMultV0AOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
1982 f3dHistGenPtVsYVsMultZNAOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
1983 f3dHistGenPtVsYCMSVsMultZNAOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
1985 f3dHistGenPtVsYVsMultTRKOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
1986 f3dHistGenPtVsYCMSVsMultTRKOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
1988 f3dHistGenPtVsYVsMultSPDOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
1989 f3dHistGenPtVsYCMSVsMultSPDOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
1993 //----- End Loop on primary Xi, Omega ----------------------------------------------------------
1995 // ---> Set Variables to Zero again
1996 // ---> Variable Definition
2000 //------------------------------------------------
2001 // Physics Selection
2002 //------------------------------------------------
2004 UInt_t maskIsSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
2005 Bool_t isSelected = 0;
2006 isSelected = (maskIsSelected & AliVEvent::kMB) == AliVEvent::kMB;
2008 //pA triggering: CINT7
2009 if( fkSwitchINT7 ) isSelected = (maskIsSelected & AliVEvent::kINT7) == AliVEvent::kINT7;
2011 //Standard Min-Bias Selection
2012 if ( ! isSelected ) {
2013 PostData(1, fListHist);
2014 PostData(2, fTreeCascade);
2018 //------------------------------------------------
2019 // Rerun cascade vertexer!
2020 //------------------------------------------------
2022 if( fkRunVertexers ){
2023 lESDevent->ResetCascades();
2024 lESDevent->ResetV0s();
2026 AliV0vertexer lV0vtxer;
2027 AliCascadeVertexer lCascVtxer;
2029 lV0vtxer.SetDefaultCuts(fV0VertexerSels);
2030 lCascVtxer.SetDefaultCuts(fCascadeVertexerSels);
2032 lV0vtxer.Tracks2V0vertices(lESDevent);
2033 lCascVtxer.V0sTracks2CascadeVertices(lESDevent);
2035 //------------------------------------------------
2036 // After Trigger Selection
2037 //------------------------------------------------
2039 lNumberOfV0s = lESDevent->GetNumberOfV0s();
2041 //Set variable for filling tree afterwards!
2042 fHistV0MultiplicityForTrigEvt->Fill(lNumberOfV0s);
2043 fHistMultiplicityForTrigEvt->Fill ( lMultiplicity );
2044 fHistMultiplicityV0AForTrigEvt ->Fill( lMultiplicityV0A );
2045 fHistMultiplicityZNAForTrigEvt ->Fill( lMultiplicityZNA );
2046 fHistMultiplicityTRKForTrigEvt ->Fill( lMultiplicityTRK );
2047 fHistMultiplicitySPDForTrigEvt ->Fill( lMultiplicitySPD );
2049 //------------------------------------------------
2050 // Getting: Primary Vertex + MagField Info
2051 //------------------------------------------------
2053 const AliESDVertex *lPrimaryTrackingESDVtx = lESDevent->GetPrimaryVertexTracks();
2054 // get the vtx stored in ESD found with tracks
2055 lPrimaryTrackingESDVtx->GetXYZ( lTrkgPrimaryVtxPos );
2057 const AliESDVertex *lPrimaryBestESDVtx = lESDevent->GetPrimaryVertex();
2058 // get the best primary vertex available for the event
2059 // As done in AliCascadeVertexer, we keep the one which is the best one available.
2060 // between : Tracking vertex > SPD vertex > TPC vertex > default SPD vertex
2061 // This one will be used for next calculations (DCA essentially)
2062 lPrimaryBestESDVtx->GetXYZ( lBestPrimaryVtxPos );
2064 Double_t lPrimaryVtxPosition[3];
2065 const AliVVertex *primaryVtx = lESDevent->GetPrimaryVertex();
2066 lPrimaryVtxPosition[0] = primaryVtx->GetX();
2067 lPrimaryVtxPosition[1] = primaryVtx->GetY();
2068 lPrimaryVtxPosition[2] = primaryVtx->GetZ();
2069 fHistPVx->Fill( lPrimaryVtxPosition[0] );
2070 fHistPVy->Fill( lPrimaryVtxPosition[1] );
2071 fHistPVz->Fill( lPrimaryVtxPosition[2] );
2073 //------------------------------------------------
2074 // Primary Vertex Requirements Section:
2075 // ---> pp and PbPb: Only requires |z|<10cm
2076 // ---> pPb: all requirements checked at this stage
2077 //------------------------------------------------
2079 //Roberto's PV selection criteria, implemented 17th April 2013
2081 /* vertex selection */
2082 Bool_t fHasVertex = kFALSE;
2084 const AliESDVertex *vertex = lESDevent->GetPrimaryVertexTracks();
2085 if (vertex->GetNContributors() < 1) {
2086 vertex = lESDevent->GetPrimaryVertexSPD();
2087 if (vertex->GetNContributors() < 1) fHasVertex = kFALSE;
2088 else fHasVertex = kTRUE;
2089 TString vtxTyp = vertex->GetTitle();
2090 Double_t cov[6]={0};
2091 vertex->GetCovarianceMatrix(cov);
2092 Double_t zRes = TMath::Sqrt(cov[5]);
2093 if (vtxTyp.Contains("vertexer:Z") && (zRes>0.25)) fHasVertex = kFALSE;
2095 else fHasVertex = kTRUE;
2097 //Is First event in chunk rejection: Still present!
2098 if(fkpAVertexSelection==kTRUE && fHasVertex == kFALSE) {
2099 AliWarning("Pb / | PV does not satisfy selection criteria!");
2100 PostData(1, fListHist);
2101 PostData(2, fTreeCascade);
2105 //Is First event in chunk rejection: Still present!
2106 if(fkpAVertexSelection==kTRUE && fUtils->IsFirstEventInChunk(lESDevent)) {
2107 AliWarning("Pb / | This is the first event in the chunk!");
2108 PostData(1, fListHist);
2109 PostData(2, fTreeCascade);
2113 //17 April Fix: Always do primary vertex Z selection, after pA vertex selection from Roberto
2114 if(TMath::Abs(lBestPrimaryVtxPos[2]) > 10.0) {
2115 AliWarning("Pb / | Z position of Best Prim Vtx | > 10.0 cm ... return !");
2116 PostData(1, fListHist);
2117 PostData(2, fTreeCascade);
2121 lMagneticField = lESDevent->GetMagneticField( );
2122 fHistV0MultiplicityForSelEvt ->Fill( lNumberOfV0s );
2123 fHistMultiplicity->Fill(lMultiplicity);
2124 fHistMultiplicityV0A->Fill(lMultiplicityV0A);
2125 fHistMultiplicityZNA->Fill(lMultiplicityZNA);
2126 fHistMultiplicityTRK->Fill(lMultiplicityTRK);
2127 fHistMultiplicitySPD->Fill(lMultiplicitySPD);
2129 //------------------------------------------------
2130 // SKIP: Events with well-established PVtx
2131 //------------------------------------------------
2133 const AliESDVertex *lPrimaryTrackingESDVtxCheck = lESDevent->GetPrimaryVertexTracks();
2134 const AliESDVertex *lPrimarySPDVtx = lESDevent->GetPrimaryVertexSPD();
2135 if (!lPrimarySPDVtx->GetStatus() && !lPrimaryTrackingESDVtxCheck->GetStatus() && fkpAVertexSelection==kFALSE ){
2136 AliWarning("Pb / No SPD prim. vertex nor prim. Tracking vertex ... return !");
2137 PostData(1, fListHist);
2138 PostData(2, fTreeCascade);
2141 fHistV0MultiplicityForSelEvtNoTPCOnly ->Fill( lNumberOfV0s );
2142 fHistMultiplicityNoTPCOnly->Fill(lMultiplicity);
2143 fHistMultiplicityV0ANoTPCOnly->Fill(lMultiplicityV0A);
2144 fHistMultiplicityZNANoTPCOnly->Fill(lMultiplicityZNA);
2145 fHistMultiplicityTRKNoTPCOnly->Fill(lMultiplicityTRK);
2146 fHistMultiplicitySPDNoTPCOnly->Fill(lMultiplicitySPD);
2148 //------------------------------------------------
2149 // Pileup Rejection Studies
2150 //------------------------------------------------
2152 // FIXME : quality selection regarding pile-up rejection
2153 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
2154 AliWarning("Pb / This is tagged as Pileup from SPD... return !");
2155 PostData(1, fListHist);
2156 PostData(2, fTreeCascade);
2159 fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup ->Fill( lNumberOfV0s );
2160 fHistMultiplicityNoTPCOnlyNoPileup->Fill(lMultiplicity);
2161 fHistMultiplicityV0ANoTPCOnlyNoPileup->Fill(lMultiplicityV0A);
2162 fHistMultiplicityZNANoTPCOnlyNoPileup->Fill(lMultiplicityZNA);
2163 fHistMultiplicityTRKNoTPCOnlyNoPileup->Fill(lMultiplicityTRK);
2164 fHistMultiplicitySPDNoTPCOnlyNoPileup->Fill(lMultiplicitySPD);
2166 //Do control histograms without the IsFromVertexerZ events, but consider them in analysis...
2167 if( ! (lESDevent->GetPrimaryVertex()->IsFromVertexerZ() ) ){
2168 fHistPVxAnalysis->Fill( lPrimaryVtxPosition[0] );
2169 fHistPVyAnalysis->Fill( lPrimaryVtxPosition[1] );
2170 fHistPVzAnalysis->Fill( lPrimaryVtxPosition[2] );
2173 //------------------------------------------------
2174 // stack loop starts here
2175 //------------------------------------------------
2177 //----- Loop on primary Xi, Omega --------------------------------------------------------------
2178 for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < lNbMCPrimary; iCurrentLabelStack++)
2179 {// This is the begining of the loop on primaries
2181 TParticle* lCurrentParticlePrimary = 0x0;
2182 lCurrentParticlePrimary = lMCstack->Particle( iCurrentLabelStack );
2183 if(!lCurrentParticlePrimary){
2184 Printf("Cascade loop %d - MC TParticle pointer to current stack particle = 0x0 ! Skip ...\n", iCurrentLabelStack );
2187 if ( TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3312 || TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3334 ) {
2188 Double_t lRapXiMCPrimary = -100;
2189 if( (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) != 0 ) {
2190 if ( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) !=0 ){
2191 lRapXiMCPrimary = 0.5*TMath::Log( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) );
2195 //=================================================================================
2197 if( lCurrentParticlePrimary->GetPdgCode() == 3312 ){
2198 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2199 f3dHistGenSelectedPtVsYVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
2200 f3dHistGenSelectedPtVsYCMSVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
2202 f3dHistGenSelectedPtVsYVsMultMCXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
2203 f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
2205 f3dHistGenSelectedPtVsYVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
2206 f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2208 f3dHistGenSelectedPtVsYVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
2209 f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
2211 f3dHistGenSelectedPtVsYVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
2212 f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
2214 f3dHistGenSelectedPtVsYVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
2215 f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
2217 if( lCurrentParticlePrimary->GetPdgCode() == -3312 ){
2218 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2219 f3dHistGenSelectedPtVsYVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
2220 f3dHistGenSelectedPtVsYCMSVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
2222 f3dHistGenSelectedPtVsYVsMultMCXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
2223 f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
2225 f3dHistGenSelectedPtVsYVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
2226 f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2228 f3dHistGenSelectedPtVsYVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
2229 f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
2231 f3dHistGenSelectedPtVsYVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
2232 f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
2234 f3dHistGenSelectedPtVsYVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
2235 f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
2238 if( lCurrentParticlePrimary->GetPdgCode() == 3334 ){
2239 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2240 f3dHistGenSelectedPtVsYVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
2241 f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
2243 f3dHistGenSelectedPtVsYVsMultMCOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
2244 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
2246 f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
2247 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2249 f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
2250 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
2252 f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
2253 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
2255 f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
2256 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
2258 if( lCurrentParticlePrimary->GetPdgCode() == -3334 ){
2259 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2260 f3dHistGenSelectedPtVsYVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
2261 f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
2263 f3dHistGenSelectedPtVsYVsMultMCOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
2264 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
2266 f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
2267 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2269 f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
2270 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
2272 f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
2273 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
2275 f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
2276 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
2280 //----- End Loop on primary Xi, Omega ----------------------------------------------------------
2283 //----- Loop on primary Xi, Omega --------------------------------------------------------------
2284 for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < (lMCstack->GetNtrack()); iCurrentLabelStack++)
2285 {// This is the begining of the loop on primaries
2287 TParticle* lCurrentParticlePrimary = 0x0;
2288 lCurrentParticlePrimary = lMCstack->Particle( iCurrentLabelStack );
2289 if(!lCurrentParticlePrimary){
2290 Printf("Cascade loop %d - MC TParticle pointer to current stack particle = 0x0 ! Skip ...\n", iCurrentLabelStack );
2293 if ( TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3312 || TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3334 ) {
2294 Double_t lRapXiMCPrimary = -100;
2295 if( (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) != 0 ) {
2296 if ( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) !=0 ){
2297 lRapXiMCPrimary = 0.5*TMath::Log( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) );
2300 //IsPhysicalPrimary: Cross-check with old index test
2301 // (cascades -> negligible difference ?... )
2302 if ( lMCstack->IsPhysicalPrimary(iCurrentLabelStack)!=kTRUE ) continue;
2304 //=================================================================================
2306 if( lCurrentParticlePrimary->GetPdgCode() == 3312 ){
2307 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2308 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2310 if( lCurrentParticlePrimary->GetPdgCode() == -3312 ){
2311 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2312 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2315 if( lCurrentParticlePrimary->GetPdgCode() == 3334 ){
2316 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2317 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2319 if( lCurrentParticlePrimary->GetPdgCode() == -3334 ){
2320 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2321 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2325 //----- End Loop on primary Xi, Omega ----------------------------------------------------------
2328 //------------------------------------------------
2329 // MAIN CASCADE LOOP STARTS HERE
2330 //------------------------------------------------
2331 // Code Credit: Antonin Maire (thanks^100)
2332 // ---> This is an adaptation
2334 Long_t ncascades = 0;
2335 ncascades = lESDevent->GetNumberOfCascades();
2338 for (Int_t iXi = 0; iXi < ncascades; iXi++){
2339 //------------------------------------------------
2341 //------------------------------------------------
2342 //Double_t lTrkgPrimaryVtxRadius3D = -500.0;
2343 //Double_t lBestPrimaryVtxRadius3D = -500.0;
2345 // - 1st part of initialisation : variables needed to store AliESDCascade data members
2346 Double_t lEffMassXi = 0. ;
2347 //Double_t lChi2Xi = -1. ;
2348 Double_t lDcaXiDaughters = -1. ;
2349 Double_t lXiCosineOfPointingAngle = -1. ;
2350 Double_t lPosXi[3] = { -1000.0, -1000.0, -1000.0 };
2351 Double_t lXiRadius = -1000. ;
2353 // - 2nd part of initialisation : Nbr of clusters within TPC for the 3 daughter cascade tracks
2354 Int_t lPosTPCClusters = -1; // For ESD only ...//FIXME : wait for availability in AOD
2355 Int_t lNegTPCClusters = -1; // For ESD only ...
2356 Int_t lBachTPCClusters = -1; // For ESD only ...
2358 // - 3rd part of initialisation : about V0 part in cascades
2359 Double_t lInvMassLambdaAsCascDghter = 0.;
2360 //Double_t lV0Chi2Xi = -1. ;
2361 Double_t lDcaV0DaughtersXi = -1.;
2363 Double_t lDcaBachToPrimVertexXi = -1., lDcaV0ToPrimVertexXi = -1.;
2364 Double_t lDcaPosToPrimVertexXi = -1.;
2365 Double_t lDcaNegToPrimVertexXi = -1.;
2366 Double_t lV0CosineOfPointingAngleXi = -1. ;
2367 Double_t lV0CosineOfPointingAngleXiSpecial = -1. ;
2368 Double_t lPosV0Xi[3] = { -1000. , -1000., -1000. }; // Position of VO coming from cascade
2369 Double_t lV0RadiusXi = -1000.0;
2370 Double_t lV0quality = 0.;
2372 // - 4th part of initialisation : Effective masses
2373 Double_t lInvMassXiMinus = 0.;
2374 Double_t lInvMassXiPlus = 0.;
2375 Double_t lInvMassOmegaMinus = 0.;
2376 Double_t lInvMassOmegaPlus = 0.;
2378 // - 6th part of initialisation : extra info for QA
2379 Double_t lXiMomX = 0. , lXiMomY = 0., lXiMomZ = 0.;
2380 Double_t lXiTransvMom = 0. ;
2381 Double_t lXiTransvMomMC= 0. ;
2382 Double_t lXiTotMom = 0. ;
2384 Double_t lBachMomX = 0., lBachMomY = 0., lBachMomZ = 0.;
2385 //Double_t lBachTransvMom = 0.;
2386 //Double_t lBachTotMom = 0.;
2388 fTreeCascVarNegNSigmaPion = -100;
2389 fTreeCascVarNegNSigmaProton = -100;
2390 fTreeCascVarPosNSigmaPion = -100;
2391 fTreeCascVarPosNSigmaProton = -100;
2392 fTreeCascVarBachNSigmaPion = -100;
2393 fTreeCascVarBachNSigmaKaon = -100;
2395 Short_t lChargeXi = -2;
2396 //Double_t lV0toXiCosineOfPointingAngle = 0. ;
2398 Double_t lRapXi = -20.0, lRapOmega = -20.0, lRapMC = -20.0; // lEta = -20.0, lTheta = 360., lPhi = 720. ;
2399 //Double_t lAlphaXi = -200., lPtArmXi = -200.0;
2401 // -------------------------------------
2402 // II.ESD - Calculation Part dedicated to Xi vertices (ESD)
2404 AliESDcascade *xi = lESDevent->GetCascade(iXi);
2408 // - II.Step 1 : around primary vertex
2410 //lTrkgPrimaryVtxRadius3D = TMath::Sqrt( lTrkgPrimaryVtxPos[0] * lTrkgPrimaryVtxPos[0] +
2411 // lTrkgPrimaryVtxPos[1] * lTrkgPrimaryVtxPos[1] +
2412 // lTrkgPrimaryVtxPos[2] * lTrkgPrimaryVtxPos[2] );
2414 //lBestPrimaryVtxRadius3D = TMath::Sqrt( lBestPrimaryVtxPos[0] * lBestPrimaryVtxPos[0] +
2415 // lBestPrimaryVtxPos[1] * lBestPrimaryVtxPos[1] +
2416 // lBestPrimaryVtxPos[2] * lBestPrimaryVtxPos[2] );
2418 // - II.Step 2 : Assigning the necessary variables for specific AliESDcascade data members (ESD)
2421 xi->ChangeMassHypothesis(lV0quality , 3312); // default working hypothesis : cascade = Xi- decay
2423 lEffMassXi = xi->GetEffMassXi();
2424 //lChi2Xi = xi->GetChi2Xi();
2425 lDcaXiDaughters = xi->GetDcaXiDaughters();
2426 lXiCosineOfPointingAngle = xi->GetCascadeCosineOfPointingAngle( lBestPrimaryVtxPos[0],
2427 lBestPrimaryVtxPos[1],
2428 lBestPrimaryVtxPos[2] );
2429 // Take care : the best available vertex should be used (like in AliCascadeVertexer)
2431 xi->GetXYZcascade( lPosXi[0], lPosXi[1], lPosXi[2] );
2432 lXiRadius = TMath::Sqrt( lPosXi[0]*lPosXi[0] + lPosXi[1]*lPosXi[1] );
2434 // - II.Step 3 : around the tracks : Bach + V0 (ESD)
2435 // ~ Necessary variables for ESDcascade data members coming from the ESDv0 part (inheritance)
2438 UInt_t lIdxPosXi = (UInt_t) TMath::Abs( xi->GetPindex() );
2439 UInt_t lIdxNegXi = (UInt_t) TMath::Abs( xi->GetNindex() );
2440 UInt_t lBachIdx = (UInt_t) TMath::Abs( xi->GetBindex() );
2441 // Care track label can be negative in MC production (linked with the track quality)
2442 // However = normally, not the case for track index ...
2444 // FIXME : rejection of a double use of a daughter track (nothing but just a crosscheck of what is done in the cascade vertexer)
2445 if(lBachIdx == lIdxNegXi) {
2446 AliWarning("Pb / Idx(Bach. track) = Idx(Neg. track) ... continue!"); continue;
2448 if(lBachIdx == lIdxPosXi) {
2449 AliWarning("Pb / Idx(Bach. track) = Idx(Pos. track) ... continue!"); continue;
2452 AliESDtrack *pTrackXi = lESDevent->GetTrack( lIdxPosXi );
2453 AliESDtrack *nTrackXi = lESDevent->GetTrack( lIdxNegXi );
2454 AliESDtrack *bachTrackXi = lESDevent->GetTrack( lBachIdx );
2456 if (!pTrackXi || !nTrackXi || !bachTrackXi ) {
2457 AliWarning("ERROR: Could not retrieve one of the 3 ESD daughter tracks of the cascade ...");
2461 fTreeCascVarPosEta = pTrackXi->Eta();
2462 fTreeCascVarNegEta = nTrackXi->Eta();
2463 fTreeCascVarBachEta = bachTrackXi->Eta();
2465 //Save shared clusters information
2466 fTreeCascVarNegSharedClusters = nTrackXi->GetTPCnclsS(0,159);
2467 fTreeCascVarPosSharedClusters = pTrackXi->GetTPCnclsS(0,159);
2468 fTreeCascVarBachSharedClusters = bachTrackXi->GetTPCnclsS(0,159);
2470 Double_t lBMom[3], lNMom[3], lPMom[3];
2471 xi->GetBPxPyPz( lBMom[0], lBMom[1], lBMom[2] );
2472 xi->GetPPxPyPz( lPMom[0], lPMom[1], lPMom[2] );
2473 xi->GetNPxPyPz( lNMom[0], lNMom[1], lNMom[2] );
2475 fTreeCascVarBachTransMom = TMath::Sqrt( lBMom[0]*lBMom[0] + lBMom[1]*lBMom[1] );
2476 fTreeCascVarPosTransMom = TMath::Sqrt( lPMom[0]*lPMom[0] + lPMom[1]*lPMom[1] );
2477 fTreeCascVarNegTransMom = TMath::Sqrt( lNMom[0]*lNMom[0] + lNMom[1]*lNMom[1] );
2479 //------------------------------------------------
2480 // TPC dEdx information
2481 //------------------------------------------------
2482 fTreeCascVarNegNSigmaPion = fPIDResponse->NumberOfSigmasTPC( nTrackXi, AliPID::kPion );
2483 fTreeCascVarNegNSigmaProton = fPIDResponse->NumberOfSigmasTPC( nTrackXi, AliPID::kProton );
2484 fTreeCascVarPosNSigmaPion = fPIDResponse->NumberOfSigmasTPC( pTrackXi, AliPID::kPion );
2485 fTreeCascVarPosNSigmaProton = fPIDResponse->NumberOfSigmasTPC( pTrackXi, AliPID::kProton );
2486 fTreeCascVarBachNSigmaPion = fPIDResponse->NumberOfSigmasTPC( bachTrackXi, AliPID::kPion );
2487 fTreeCascVarBachNSigmaKaon = fPIDResponse->NumberOfSigmasTPC( bachTrackXi, AliPID::kKaon );
2489 //------------------------------------------------
2490 // TPC Number of clusters info
2491 // --- modified to save the smallest number
2492 // --- of TPC clusters for the 3 tracks
2493 //------------------------------------------------
2495 lPosTPCClusters = pTrackXi->GetTPCNcls();
2496 lNegTPCClusters = nTrackXi->GetTPCNcls();
2497 lBachTPCClusters = bachTrackXi->GetTPCNcls();
2499 fTreeCascVarNegClusters = lNegTPCClusters;
2500 fTreeCascVarPosClusters = lPosTPCClusters;
2501 fTreeCascVarBachClusters = lBachTPCClusters;
2503 fTreeCascVarkITSRefitBachelor = kTRUE;
2504 fTreeCascVarkITSRefitNegative = kTRUE;
2505 fTreeCascVarkITSRefitPositive = kTRUE;
2507 // 1 - Poor quality related to TPCrefit
2508 ULong_t pStatus = pTrackXi->GetStatus();
2509 ULong_t nStatus = nTrackXi->GetStatus();
2510 ULong_t bachStatus = bachTrackXi->GetStatus();
2511 if ((pStatus&AliESDtrack::kTPCrefit) == 0) { AliWarning("Pb / V0 Pos. track has no TPCrefit ... continue!"); continue; }
2512 if ((nStatus&AliESDtrack::kTPCrefit) == 0) { AliWarning("Pb / V0 Neg. track has no TPCrefit ... continue!"); continue; }
2513 if ((bachStatus&AliESDtrack::kTPCrefit) == 0) { AliWarning("Pb / Bach. track has no TPCrefit ... continue!"); continue; }
2515 //Extra Debug Information: booleans for ITS refit
2516 if ((pStatus&AliESDtrack::kITSrefit) == 0) { fTreeCascVarkITSRefitPositive = kFALSE; }
2517 if ((nStatus&AliESDtrack::kITSrefit) == 0) { fTreeCascVarkITSRefitNegative = kFALSE; }
2518 if ((bachStatus&AliESDtrack::kITSrefit) == 0) { fTreeCascVarkITSRefitBachelor = kFALSE; }
2520 // 2 - Poor quality related to TPC clusters: lowest cut of 70 clusters
2521 if(lPosTPCClusters < 70) { AliWarning("Pb / V0 Pos. track has less than 70 TPC clusters ... continue!"); continue; }
2522 if(lNegTPCClusters < 70) { AliWarning("Pb / V0 Neg. track has less than 70 TPC clusters ... continue!"); continue; }
2523 if(lBachTPCClusters < 70) { AliWarning("Pb / Bach. track has less than 70 TPC clusters ... continue!"); continue; }
2524 Int_t leastnumberofclusters = 1000;
2525 if( lPosTPCClusters < leastnumberofclusters ) leastnumberofclusters = lPosTPCClusters;
2526 if( lNegTPCClusters < leastnumberofclusters ) leastnumberofclusters = lNegTPCClusters;
2527 if( lBachTPCClusters < leastnumberofclusters ) leastnumberofclusters = lBachTPCClusters;
2529 lInvMassLambdaAsCascDghter = xi->GetEffMass();
2530 // This value shouldn't change, whatever the working hyp. is : Xi-, Xi+, Omega-, Omega+
2531 lDcaV0DaughtersXi = xi->GetDcaV0Daughters();
2532 //lV0Chi2Xi = xi->GetChi2V0();
2534 lV0CosineOfPointingAngleXi = xi->GetV0CosineOfPointingAngle( lBestPrimaryVtxPos[0],
2535 lBestPrimaryVtxPos[1],
2536 lBestPrimaryVtxPos[2] );
2537 //Modification to check cosPA of v0 wrt to cascade vertex
2538 lV0CosineOfPointingAngleXiSpecial = xi->GetV0CosineOfPointingAngle( lPosXi[0],
2542 lDcaV0ToPrimVertexXi = xi->GetD( lBestPrimaryVtxPos[0],
2543 lBestPrimaryVtxPos[1],
2544 lBestPrimaryVtxPos[2] );
2546 lDcaBachToPrimVertexXi = TMath::Abs( bachTrackXi->GetD( lBestPrimaryVtxPos[0],
2547 lBestPrimaryVtxPos[1],
2549 // Note : AliExternalTrackParam::GetD returns an algebraic value ...
2551 xi->GetXYZ( lPosV0Xi[0], lPosV0Xi[1], lPosV0Xi[2] );
2552 lV0RadiusXi = TMath::Sqrt( lPosV0Xi[0]*lPosV0Xi[0] + lPosV0Xi[1]*lPosV0Xi[1] );
2554 lDcaPosToPrimVertexXi = TMath::Abs( pTrackXi ->GetD( lBestPrimaryVtxPos[0],
2555 lBestPrimaryVtxPos[1],
2558 lDcaNegToPrimVertexXi = TMath::Abs( nTrackXi ->GetD( lBestPrimaryVtxPos[0],
2559 lBestPrimaryVtxPos[1],
2562 // - II.Step 4 : around effective masses (ESD)
2563 // ~ change mass hypotheses to cover all the possibilities : Xi-/+, Omega -/+
2565 if( bachTrackXi->Charge() < 0 ) {
2567 xi->ChangeMassHypothesis(lV0quality , 3312);
2568 // Calculate the effective mass of the Xi- candidate.
2569 // pdg code 3312 = Xi-
2570 lInvMassXiMinus = xi->GetEffMassXi();
2573 xi->ChangeMassHypothesis(lV0quality , 3334);
2574 // Calculate the effective mass of the Xi- candidate.
2575 // pdg code 3334 = Omega-
2576 lInvMassOmegaMinus = xi->GetEffMassXi();
2579 xi->ChangeMassHypothesis(lV0quality , 3312); // Back to default hyp.
2580 }// end if negative bachelor
2583 if( bachTrackXi->Charge() > 0 ){
2585 xi->ChangeMassHypothesis(lV0quality , -3312);
2586 // Calculate the effective mass of the Xi+ candidate.
2587 // pdg code -3312 = Xi+
2588 lInvMassXiPlus = xi->GetEffMassXi();
2591 xi->ChangeMassHypothesis(lV0quality , -3334);
2592 // Calculate the effective mass of the Xi+ candidate.
2593 // pdg code -3334 = Omega+
2594 lInvMassOmegaPlus = xi->GetEffMassXi();
2597 xi->ChangeMassHypothesis(lV0quality , -3312); // Back to "default" hyp.
2598 }// end if positive bachelor
2599 // - II.Step 6 : extra info for QA (ESD)
2600 // miscellaneous pieces of info that may help regarding data quality assessment.
2603 xi->GetPxPyPz( lXiMomX, lXiMomY, lXiMomZ );
2604 lXiTransvMom = TMath::Sqrt( lXiMomX*lXiMomX + lXiMomY*lXiMomY );
2605 lXiTotMom = TMath::Sqrt( lXiMomX*lXiMomX + lXiMomY*lXiMomY + lXiMomZ*lXiMomZ );
2607 xi->GetBPxPyPz( lBachMomX, lBachMomY, lBachMomZ );
2608 //lBachTransvMom = TMath::Sqrt( lBachMomX*lBachMomX + lBachMomY*lBachMomY );
2609 //lBachTotMom = TMath::Sqrt( lBachMomX*lBachMomX + lBachMomY*lBachMomY + lBachMomZ*lBachMomZ );
2611 lChargeXi = xi->Charge();
2613 //lV0toXiCosineOfPointingAngle = xi->GetV0CosineOfPointingAngle( lPosXi[0], lPosXi[1], lPosXi[2] );
2615 lRapXi = xi->RapXi();
2616 lRapOmega = xi->RapOmega();
2618 //lTheta = xi->Theta() *180.0/TMath::Pi();
2619 //lPhi = xi->Phi() *180.0/TMath::Pi();
2620 //lAlphaXi = xi->AlphaXi();
2621 //lPtArmXi = xi->PtArmXi();
2623 //------------------------------------------------
2624 // Associate Cascade Candidates to Monte Carlo!
2625 //------------------------------------------------
2627 //Warning: Not using Continues... Need to fill tree later!
2629 Int_t lPDGCodeCascade = 0;
2631 Int_t lPID_BachMother = 0;
2632 Int_t lPID_NegMother = 0;
2633 Int_t lPID_PosMother = 0;
2634 fTreeCascVarIsPhysicalPrimary = 0; // 0: not defined, any candidate may have this
2636 fTreeCascVarPIDPositive = 0;
2637 fTreeCascVarPIDNegative = 0;
2638 fTreeCascVarPIDBachelor = 0;
2642 cout << "MC EventNumber : " << lMCevent->Header()->GetEvent()
2643 << " / MC event Number in Run : " << lMCevent->Header()->GetEventNrInRun() << endl;
2645 // - Step 4.1 : level of the V0 daughters
2647 //----------------------------------------
2648 // Regular MC ASSOCIATION STARTS HERE
2649 //----------------------------------------
2651 Int_t lblPosV0Dghter = (Int_t) TMath::Abs( pTrackXi->GetLabel() );
2652 // Abs value = needed ! question of quality track association ...
2653 Int_t lblNegV0Dghter = (Int_t) TMath::Abs( nTrackXi->GetLabel() );
2654 Int_t lblBach = (Int_t) TMath::Abs( bachTrackXi->GetLabel() );
2656 TParticle* mcPosV0Dghter = lMCstack->Particle( lblPosV0Dghter );
2657 TParticle* mcNegV0Dghter = lMCstack->Particle( lblNegV0Dghter );
2658 TParticle* mcBach = lMCstack->Particle( lblBach );
2660 fTreeCascVarPosTransMomMC = mcPosV0Dghter->Pt();
2661 fTreeCascVarNegTransMomMC = mcNegV0Dghter->Pt();
2663 fTreeCascVarPIDPositive = mcPosV0Dghter -> GetPdgCode();
2664 fTreeCascVarPIDNegative = mcNegV0Dghter -> GetPdgCode();
2665 fTreeCascVarPIDBachelor = mcBach->GetPdgCode();
2667 // - Step 4.2 : level of the Xi daughters
2669 Int_t lblMotherPosV0Dghter = mcPosV0Dghter->GetFirstMother() ;
2670 Int_t lblMotherNegV0Dghter = mcNegV0Dghter->GetFirstMother();
2672 //Rather uncivilized: Open brackets for each 'continue'
2673 if(! (lblMotherPosV0Dghter != lblMotherNegV0Dghter) ) { // same mother
2674 if(! (lblMotherPosV0Dghter < 0) ) { // mother != primary (!= -1)
2675 if(! (lblMotherNegV0Dghter < 0) ) {
2677 // mothers = Lambda candidate ... a priori
2679 TParticle* mcMotherPosV0Dghter = lMCstack->Particle( lblMotherPosV0Dghter );
2680 TParticle* mcMotherNegV0Dghter = lMCstack->Particle( lblMotherNegV0Dghter );
2682 // - Step 4.3 : level of Xi candidate
2684 Int_t lblGdMotherPosV0Dghter = mcMotherPosV0Dghter->GetFirstMother() ;
2685 Int_t lblGdMotherNegV0Dghter = mcMotherNegV0Dghter->GetFirstMother() ;
2687 if(! (lblGdMotherPosV0Dghter != lblGdMotherNegV0Dghter) ) {
2688 if(! (lblGdMotherPosV0Dghter < 0) ) { // primary lambda ...
2689 if(! (lblGdMotherNegV0Dghter < 0) ) { // primary lambda ...
2691 // Gd mothers = Xi candidate ... a priori
2693 TParticle* mcGdMotherPosV0Dghter = lMCstack->Particle( lblGdMotherPosV0Dghter );
2694 TParticle* mcGdMotherNegV0Dghter = lMCstack->Particle( lblGdMotherNegV0Dghter );
2696 Int_t lblMotherBach = (Int_t) TMath::Abs( mcBach->GetFirstMother() );
2698 // if( lblMotherBach != lblGdMotherPosV0Dghter ) continue; //same mother for bach and V0 daughters
2699 if(!(lblMotherBach != lblGdMotherPosV0Dghter)) { //same mother for bach and V0 daughters
2701 TParticle* mcMotherBach = lMCstack->Particle( lblMotherBach );
2703 lPID_BachMother = mcMotherBach->GetPdgCode();
2704 lPID_NegMother = mcGdMotherPosV0Dghter->GetPdgCode();
2705 lPID_PosMother = mcGdMotherNegV0Dghter->GetPdgCode();
2707 if(lPID_BachMother==lPID_NegMother && lPID_BachMother==lPID_PosMother){
2708 lPDGCodeCascade = lPID_BachMother;
2709 lXiTransvMomMC = mcMotherBach->Pt();
2710 if( lMCstack->IsPhysicalPrimary (lblMotherBach) ) fTreeCascVarIsPhysicalPrimary = 1; //Is Primary!
2711 if( lMCstack->IsSecondaryFromWeakDecay(lblMotherBach) ) fTreeCascVarIsPhysicalPrimary = 2; //Weak Decay!
2712 if( lMCstack->IsSecondaryFromMaterial (lblMotherBach) ) fTreeCascVarIsPhysicalPrimary = 3; //From Material!
2713 if ( (mcMotherBach->Energy() + mcMotherBach->Pz()) / (mcMotherBach->Energy() - mcMotherBach->Pz() +1.e-13) !=0 ){
2714 lRapMC = 0.5*TMath::Log( (mcMotherBach->Energy() + mcMotherBach->Pz()) / (mcMotherBach->Energy() - mcMotherBach->Pz() +1.e-13) );
2718 }}}}}}} //Ends all conditionals above...
2720 //----------------------------------------
2721 // Regular MC ASSOCIATION ENDS HERE
2722 //----------------------------------------
2724 //----------------------------------------
2725 // Swapped MC Association Starts Here
2726 //----------------------------------------
2728 fTreeCascVarPIDSwapped = 0; //Nothing
2729 if ( fkCheckSwapping ) { //on/off switch if not needed or otherwise broken
2731 Int_t lPID_BachMotherSwapped = 0;
2732 Int_t lPID_NegMotherSwapped = 0;
2733 Int_t lPID_PosMotherSwapped = 0;
2735 Int_t lblPosV0DghterSwapped = (Int_t) TMath::Abs( pTrackXi->GetLabel() );
2736 // Abs value = needed ! question of quality track association ...
2737 Int_t lblNegV0DghterSwapped = (Int_t) TMath::Abs( nTrackXi->GetLabel() );
2738 Int_t lblBachSwapped = (Int_t) TMath::Abs( bachTrackXi->GetLabel() );
2740 //This is SWAPPED association: swap like-sign particles
2741 TParticle* mcPosV0DghterSwapped = 0x0;
2742 TParticle* mcNegV0DghterSwapped = 0x0;
2743 TParticle* mcBachSwapped = 0x0;
2745 //Swapping Case 1: XiMinus/OmegaMinus swapped: exchange negative V0 daughter with bachelor
2746 if( lChargeXi == -1 ){
2747 mcPosV0DghterSwapped = lMCstack->Particle( lblPosV0DghterSwapped );
2748 mcNegV0DghterSwapped = lMCstack->Particle( lblBachSwapped );
2749 mcBachSwapped = lMCstack->Particle( lblNegV0DghterSwapped );
2751 //Swapping Case 2: XiPlus/OmegaPlus swapped: exchange positive V0 daughter with bachelor
2752 if( lChargeXi == 1 ){
2753 mcPosV0DghterSwapped = lMCstack->Particle( lblBachSwapped );
2754 mcNegV0DghterSwapped = lMCstack->Particle( lblNegV0DghterSwapped );
2755 mcBachSwapped = lMCstack->Particle( lblPosV0DghterSwapped );
2758 //fTreeCascVarPosTransMomMC = mcPosV0Dghter->Pt();
2759 //fTreeCascVarNegTransMomMC = mcNegV0Dghter->Pt();
2761 //fTreeCascVarPIDPositive = mcPosV0Dghter -> GetPdgCode();
2762 //fTreeCascVarPIDNegative = mcNegV0Dghter -> GetPdgCode();
2763 //fTreeCascVarPIDBachelor = mcBach->GetPdgCode();
2765 // - Step 4.2 : level of the Xi daughters
2767 Int_t lblMotherPosV0DghterSwapped = mcPosV0DghterSwapped->GetFirstMother() ;
2768 Int_t lblMotherNegV0DghterSwapped = mcNegV0DghterSwapped->GetFirstMother();
2770 //Rather uncivilized: Open brackets for each 'continue'
2771 if(! (lblMotherPosV0DghterSwapped != lblMotherNegV0DghterSwapped) ) { // same mother
2772 if(! (lblMotherPosV0DghterSwapped < 0) ) { // mother != primary (!= -1)
2773 if(! (lblMotherNegV0DghterSwapped < 0) ) {
2775 // mothers = Lambda candidate ... a priori
2777 TParticle* mcMotherPosV0DghterSwapped = lMCstack->Particle( lblMotherPosV0DghterSwapped );
2778 TParticle* mcMotherNegV0DghterSwapped = lMCstack->Particle( lblMotherNegV0DghterSwapped );
2780 // - Step 4.3 : level of Xi candidate
2782 Int_t lblGdMotherPosV0DghterSwapped = mcMotherPosV0DghterSwapped->GetFirstMother() ;
2783 Int_t lblGdMotherNegV0DghterSwapped = mcMotherNegV0DghterSwapped->GetFirstMother() ;
2785 if(! (lblGdMotherPosV0DghterSwapped != lblGdMotherNegV0DghterSwapped) ) {
2786 if(! (lblGdMotherPosV0DghterSwapped < 0) ) { // primary lambda ...
2787 if(! (lblGdMotherNegV0DghterSwapped < 0) ) { // primary lambda ...
2789 // Gd mothers = Xi candidate ... a priori
2791 TParticle* mcGdMotherPosV0DghterSwapped = lMCstack->Particle( lblGdMotherPosV0DghterSwapped );
2792 TParticle* mcGdMotherNegV0DghterSwapped = lMCstack->Particle( lblGdMotherNegV0DghterSwapped );
2794 Int_t lblMotherBachSwapped = (Int_t) TMath::Abs( mcBachSwapped->GetFirstMother() );
2796 // if( lblMotherBach != lblGdMotherPosV0Dghter ) continue; //same mother for bach and V0 daughters
2797 if(!(lblMotherBachSwapped != lblGdMotherPosV0DghterSwapped)) { //same mother for bach and V0 daughters
2799 TParticle* mcMotherBachSwapped = lMCstack->Particle( lblMotherBachSwapped );
2801 lPID_BachMotherSwapped = mcMotherBachSwapped->GetPdgCode();
2802 lPID_NegMotherSwapped = mcGdMotherPosV0DghterSwapped->GetPdgCode();
2803 lPID_PosMotherSwapped = mcGdMotherNegV0DghterSwapped->GetPdgCode();
2805 if(lPID_BachMotherSwapped==lPID_NegMotherSwapped && lPID_BachMotherSwapped==lPID_PosMotherSwapped){
2806 fTreeCascVarPIDSwapped = lPID_BachMotherSwapped; //there!
2809 }}}}}}} //Ends all conditionals above...
2812 //----------------------------------------
2813 // Swapped MC ASSOCIATION ENDS HERE
2814 //----------------------------------------
2816 //------------------------------------------------
2817 // Jai Salzwedel's femto-cut: better V0 exists
2818 //------------------------------------------------
2820 fTreeCascVarBadCascadeJai = kFALSE;
2821 fTreeCascVarDeltaDCA = -100;
2822 Float_t DCAV0DaughtersDiff = -100;
2823 for (Int_t iv0=0; iv0<lESDevent->GetNumberOfV0s(); iv0++) {
2824 AliESDv0 *v0 = lESDevent->GetV0(iv0);
2825 UInt_t posV0TrackIdx = (UInt_t) v0->GetPindex();
2826 UInt_t negV0TrackIdx = (UInt_t) v0->GetNindex();
2827 if ((posV0TrackIdx == lIdxPosXi) && (negV0TrackIdx == lIdxNegXi)) continue;
2828 // if both tracks are the same ones as the cascades V0 daughter tracks, then the V0 belongs to the cascade being analysed; so avoid it
2829 if ((posV0TrackIdx == lIdxPosXi) || (negV0TrackIdx == lIdxNegXi)) {
2830 DCAV0DaughtersDiff = lDcaV0DaughtersXi - v0->GetDcaV0Daughters();
2831 if( fTreeCascVarDeltaDCA < DCAV0DaughtersDiff ) fTreeCascVarDeltaDCA = DCAV0DaughtersDiff;
2832 if ( lDcaV0DaughtersXi > v0->GetDcaV0Daughters() ) { // DCA comparison criterion
2833 fTreeCascVarBadCascadeJai = kTRUE;
2834 } //end DCA comparison
2835 } // end shares a daughter check
2838 //------------------------------------------------
2839 // Set Variables for adding to tree
2840 //------------------------------------------------
2842 /* 1*/ fTreeCascVarCharge = lChargeXi;
2843 /* 2*/ if(lInvMassXiMinus!=0) fTreeCascVarMassAsXi = lInvMassXiMinus;
2844 /* 2*/ if(lInvMassXiPlus!=0) fTreeCascVarMassAsXi = lInvMassXiPlus;
2845 /* 3*/ if(lInvMassOmegaMinus!=0) fTreeCascVarMassAsOmega = lInvMassOmegaMinus;
2846 /* 3*/ if(lInvMassOmegaPlus!=0) fTreeCascVarMassAsOmega = lInvMassOmegaPlus;
2847 /* 4*/ fTreeCascVarPt = lXiTransvMom;
2848 /* 4*/ fTreeCascVarPtMC = lXiTransvMomMC;
2849 /* 5*/ fTreeCascVarRapXi = lRapXi ;
2850 /* 5*/ fTreeCascVarRapMC = lRapMC ;
2851 /* 6*/ fTreeCascVarRapOmega = lRapOmega ;
2852 /* 7*/ fTreeCascVarDCACascDaughters = lDcaXiDaughters;
2853 /* 8*/ fTreeCascVarDCABachToPrimVtx = lDcaBachToPrimVertexXi;
2854 /* 9*/ fTreeCascVarDCAV0Daughters = lDcaV0DaughtersXi;
2855 /*10*/ fTreeCascVarDCAV0ToPrimVtx = lDcaV0ToPrimVertexXi;
2856 /*11*/ fTreeCascVarDCAPosToPrimVtx = lDcaPosToPrimVertexXi;
2857 /*12*/ fTreeCascVarDCANegToPrimVtx = lDcaNegToPrimVertexXi;
2858 /*13*/ fTreeCascVarCascCosPointingAngle = lXiCosineOfPointingAngle;
2859 /*14*/ fTreeCascVarCascRadius = lXiRadius;
2860 /*15*/ fTreeCascVarV0Mass = lInvMassLambdaAsCascDghter;
2861 /*16*/ fTreeCascVarV0CosPointingAngle = lV0CosineOfPointingAngleXi;
2862 /*16*/ fTreeCascVarV0CosPointingAngleSpecial = lV0CosineOfPointingAngleXiSpecial;
2863 /*17*/ fTreeCascVarV0Radius = lV0RadiusXi;
2864 /*20*/ fTreeCascVarLeastNbrClusters = leastnumberofclusters;
2865 /*21*/ fTreeCascVarMultiplicity = lMultiplicity; //multiplicity, whatever that may be
2867 /*23*/ fTreeCascVarDistOverTotMom = TMath::Sqrt(
2868 TMath::Power( lPosXi[0] - lBestPrimaryVtxPos[0] , 2) +
2869 TMath::Power( lPosXi[1] - lBestPrimaryVtxPos[1] , 2) +
2870 TMath::Power( lPosXi[2] - lBestPrimaryVtxPos[2] , 2)
2872 /*23*/ fTreeCascVarDistOverTotMom /= (lXiTotMom+1e-13);
2873 /*24*/ //Not specified here, it has been set already (TRunNumber)
2874 /*25*/ fTreeCascVarPID = lPDGCodeCascade;
2876 //------------------------------------------------
2878 //------------------------------------------------
2880 // The conditional is meant to decrease excessive
2881 // memory usage! Be careful when loosening the
2884 //Xi Mass window: 150MeV wide
2885 //Omega mass window: 150MeV wide
2887 if( (fTreeCascVarMassAsXi<1.32+0.075&&fTreeCascVarMassAsXi>1.32-0.075) ||
2888 (fTreeCascVarMassAsOmega<1.68+0.075&&fTreeCascVarMassAsOmega>1.68-0.075) ){
2889 fTreeCascade->Fill();
2892 //------------------------------------------------
2894 //------------------------------------------------
2896 }// end of the Cascade loop (ESD or AOD)
2898 // Post output data.
2899 PostData(1, fListHist);
2900 PostData(2, fTreeCascade);
2903 //________________________________________________________________________
2904 void AliAnalysisTaskExtractPerformanceCascade::Terminate(Option_t *)
2906 // Draw result to the screen
2907 // Called once at the end of the query
2909 TList *cRetrievedList = 0x0;
2910 cRetrievedList = (TList*)GetOutputData(1);
2911 if(!cRetrievedList){
2912 Printf("ERROR - AliAnalysisTaskExtractCascade : ouput data container list not available\n");
2916 fHistV0MultiplicityForTrigEvt = dynamic_cast<TH1F*> ( cRetrievedList->FindObject("fHistV0MultiplicityForTrigEvt") );
2917 if (!fHistV0MultiplicityForTrigEvt) {
2918 Printf("ERROR - AliAnalysisTaskExtractCascade : fHistV0MultiplicityForTrigEvt not available");
2922 TCanvas *canCheck = new TCanvas("AliAnalysisTaskExtractCascade","V0 Multiplicity",10,10,510,510);
2923 canCheck->cd(1)->SetLogy();
2925 fHistV0MultiplicityForTrigEvt->SetMarkerStyle(22);
2926 fHistV0MultiplicityForTrigEvt->DrawCopy("E");
2929 //----------------------------------------------------------------------------
2931 Double_t AliAnalysisTaskExtractPerformanceCascade::MyRapidity(Double_t rE, Double_t rPz) const
2933 // Local calculation for rapidity
2934 Double_t ReturnValue = -100;
2935 if( (rE-rPz+1.e-13) != 0 && (rE+rPz) != 0 ){
2936 ReturnValue = 0.5*TMath::Log((rE+rPz)/(rE-rPz+1.e-13));