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),
112 //------------------------------------------------
114 //------------------------------------------------
116 fTreeCascVarCharge(0),
117 fTreeCascVarMassAsXi(0),
118 fTreeCascVarMassAsOmega(0),
121 fTreeCascVarRapMC(0),
122 fTreeCascVarRapXi(0),
123 fTreeCascVarRapOmega(0),
124 fTreeCascVarNegEta(0),
125 fTreeCascVarPosEta(0),
126 fTreeCascVarBachEta(0),
127 fTreeCascVarDCACascDaughters(0),
128 fTreeCascVarDCABachToPrimVtx(0),
129 fTreeCascVarDCAV0Daughters(0),
130 fTreeCascVarDCAV0ToPrimVtx(0),
131 fTreeCascVarDCAPosToPrimVtx(0),
132 fTreeCascVarDCANegToPrimVtx(0),
133 fTreeCascVarCascCosPointingAngle(0),
134 fTreeCascVarCascRadius(0),
135 fTreeCascVarV0Mass(0),
136 fTreeCascVarV0CosPointingAngle(0),
137 fTreeCascVarV0CosPointingAngleSpecial(0),
138 fTreeCascVarV0Radius(0),
139 fTreeCascVarLeastNbrClusters(0),
140 fTreeCascVarMultiplicity(0),
141 fTreeCascVarMultiplicityV0A(0),
142 fTreeCascVarMultiplicityZNA(0),
143 fTreeCascVarMultiplicityTRK(0),
144 fTreeCascVarMultiplicitySPD(0),
145 fTreeCascVarMultiplicityMC(0),
146 fTreeCascVarDistOverTotMom(0),
147 fTreeCascVarIsPhysicalPrimary(0),
149 fTreeCascVarPIDSwapped(0),
150 fTreeCascVarPIDBachelor(0),
151 fTreeCascVarPIDNegative(0),
152 fTreeCascVarPIDPositive(0),
153 fTreeCascVarBachTransMom(0),
154 fTreeCascVarPosTransMom(0),
155 fTreeCascVarNegTransMom(0),
156 fTreeCascVarPosTransMomMC(0),
157 fTreeCascVarNegTransMomMC(0),
158 fTreeCascVarNegNSigmaPion(0),
159 fTreeCascVarNegNSigmaProton(0),
160 fTreeCascVarPosNSigmaPion(0),
161 fTreeCascVarPosNSigmaProton(0),
162 fTreeCascVarBachNSigmaPion(0),
163 fTreeCascVarBachNSigmaKaon(0),
165 fTreeCascVarkITSRefitBachelor(0),
166 fTreeCascVarkITSRefitNegative(0),
167 fTreeCascVarkITSRefitPositive(0),
169 fTreeCascVarNegClusters(0),
170 fTreeCascVarPosClusters(0),
171 fTreeCascVarBachClusters(0),
172 fTreeCascVarNegSharedClusters(0),
173 fTreeCascVarPosSharedClusters(0),
174 fTreeCascVarBachSharedClusters(0),
176 fTreeCascVarEvHasXiMinus(0),
177 fTreeCascVarEvHasXiPlus(0),
178 fTreeCascVarEvHasOmegaMinus(0),
179 fTreeCascVarEvHasOmegaPlus(0),
180 fTreeCascVarEvHasLambda(0),
181 fTreeCascVarEvHasAntiLambda(0),
183 fTreeCascVarEvHasLowPtXiMinus(0),
184 fTreeCascVarEvHasLowPtXiPlus(0),
185 fTreeCascVarEvHasLowPtOmegaMinus(0),
186 fTreeCascVarEvHasLowPtOmegaPlus(0),
187 fTreeCascVarEvHasLowPtLambda(0),
188 fTreeCascVarEvHasLowPtAntiLambda(0),
190 fTreeCascVarEvHasVeryLowPtXiMinus(0),
191 fTreeCascVarEvHasVeryLowPtXiPlus(0),
192 fTreeCascVarEvHasVeryLowPtOmegaMinus(0),
193 fTreeCascVarEvHasVeryLowPtOmegaPlus(0),
194 fTreeCascVarEvHasVeryLowPtLambda(0),
195 fTreeCascVarEvHasVeryLowPtAntiLambda(0),
197 fTreeCascVarBadCascadeJai(0),
198 fTreeCascVarDeltaDCA(0),
200 //------------------------------------------------
202 // --- Filled on an Event-by-event basis
203 //------------------------------------------------
204 fHistV0MultiplicityBeforeTrigSel(0),
205 fHistV0MultiplicityForTrigEvt(0),
206 fHistV0MultiplicityForSelEvt(0),
207 fHistV0MultiplicityForSelEvtNoTPCOnly(0),
208 fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup(0),
209 fHistMultiplicityBeforeTrigSel(0),
210 fHistMultiplicityForTrigEvt(0),
211 fHistMultiplicity(0),
212 fHistMultiplicityNoTPCOnly(0),
213 fHistMultiplicityNoTPCOnlyNoPileup(0),
216 fHistMultiplicityV0ABeforeTrigSel(0),
217 fHistMultiplicityV0AForTrigEvt(0),
218 fHistMultiplicityV0A(0),
219 fHistMultiplicityV0ANoTPCOnly(0),
220 fHistMultiplicityV0ANoTPCOnlyNoPileup(0),
223 fHistMultiplicityZNABeforeTrigSel(0),
224 fHistMultiplicityZNAForTrigEvt(0),
225 fHistMultiplicityZNA(0),
226 fHistMultiplicityZNANoTPCOnly(0),
227 fHistMultiplicityZNANoTPCOnlyNoPileup(0),
230 fHistMultiplicityTRKBeforeTrigSel(0),
231 fHistMultiplicityTRKForTrigEvt(0),
232 fHistMultiplicityTRK(0),
233 fHistMultiplicityTRKNoTPCOnly(0),
234 fHistMultiplicityTRKNoTPCOnlyNoPileup(0),
237 fHistMultiplicitySPDBeforeTrigSel(0),
238 fHistMultiplicitySPDForTrigEvt(0),
239 fHistMultiplicitySPD(0),
240 fHistMultiplicitySPDNoTPCOnly(0),
241 fHistMultiplicitySPDNoTPCOnlyNoPileup(0),
244 //------------------------------------------------
245 // PARTICLE HISTOGRAMS
246 // --- Filled on a Particle-by-Particle basis
247 //------------------------------------------------
248 f3dHistGenPtVsYVsMultXiMinus(0),
249 f3dHistGenPtVsYVsMultXiPlus(0),
250 f3dHistGenPtVsYVsMultOmegaMinus(0),
251 f3dHistGenPtVsYVsMultOmegaPlus(0),
252 f3dHistGenSelectedPtVsYVsMultXiMinus(0),
253 f3dHistGenSelectedPtVsYVsMultXiPlus(0),
254 f3dHistGenSelectedPtVsYVsMultOmegaMinus(0),
255 f3dHistGenSelectedPtVsYVsMultOmegaPlus(0),
256 f3dHistGenPtVsYCMSVsMultXiMinus(0),
257 f3dHistGenPtVsYCMSVsMultXiPlus(0),
258 f3dHistGenPtVsYCMSVsMultOmegaMinus(0),
259 f3dHistGenPtVsYCMSVsMultOmegaPlus(0),
260 f3dHistGenSelectedPtVsYCMSVsMultXiMinus(0),
261 f3dHistGenSelectedPtVsYCMSVsMultXiPlus(0),
262 f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus(0),
263 f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus(0),
267 f3dHistGenPtVsYVsMultMCXiMinus(0),
268 f3dHistGenPtVsYVsMultMCXiPlus(0),
269 f3dHistGenPtVsYVsMultMCOmegaMinus(0),
270 f3dHistGenPtVsYVsMultMCOmegaPlus(0),
271 f3dHistGenSelectedPtVsYVsMultMCXiMinus(0),
272 f3dHistGenSelectedPtVsYVsMultMCXiPlus(0),
273 f3dHistGenSelectedPtVsYVsMultMCOmegaMinus(0),
274 f3dHistGenSelectedPtVsYVsMultMCOmegaPlus(0),
275 f3dHistGenPtVsYCMSVsMultMCXiMinus(0),
276 f3dHistGenPtVsYCMSVsMultMCXiPlus(0),
277 f3dHistGenPtVsYCMSVsMultMCOmegaMinus(0),
278 f3dHistGenPtVsYCMSVsMultMCOmegaPlus(0),
279 f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus(0),
280 f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus(0),
281 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus(0),
282 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus(0),
286 f3dHistGenPtVsYVsMultV0AXiMinus(0),
287 f3dHistGenPtVsYVsMultV0AXiPlus(0),
288 f3dHistGenPtVsYVsMultV0AOmegaMinus(0),
289 f3dHistGenPtVsYVsMultV0AOmegaPlus(0),
290 f3dHistGenSelectedPtVsYVsMultV0AXiMinus(0),
291 f3dHistGenSelectedPtVsYVsMultV0AXiPlus(0),
292 f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus(0),
293 f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus(0),
294 f3dHistGenPtVsYCMSVsMultV0AXiMinus(0),
295 f3dHistGenPtVsYCMSVsMultV0AXiPlus(0),
296 f3dHistGenPtVsYCMSVsMultV0AOmegaMinus(0),
297 f3dHistGenPtVsYCMSVsMultV0AOmegaPlus(0),
298 f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus(0),
299 f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus(0),
300 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus(0),
301 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus(0),
302 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiMinus(0),
303 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiPlus(0),
304 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaMinus(0),
305 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaPlus(0),
309 f3dHistGenPtVsYVsMultZNAXiMinus(0),
310 f3dHistGenPtVsYVsMultZNAXiPlus(0),
311 f3dHistGenPtVsYVsMultZNAOmegaMinus(0),
312 f3dHistGenPtVsYVsMultZNAOmegaPlus(0),
313 f3dHistGenSelectedPtVsYVsMultZNAXiMinus(0),
314 f3dHistGenSelectedPtVsYVsMultZNAXiPlus(0),
315 f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus(0),
316 f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus(0),
317 f3dHistGenPtVsYCMSVsMultZNAXiMinus(0),
318 f3dHistGenPtVsYCMSVsMultZNAXiPlus(0),
319 f3dHistGenPtVsYCMSVsMultZNAOmegaMinus(0),
320 f3dHistGenPtVsYCMSVsMultZNAOmegaPlus(0),
321 f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus(0),
322 f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus(0),
323 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus(0),
324 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus(0),
328 f3dHistGenPtVsYVsMultTRKXiMinus(0),
329 f3dHistGenPtVsYVsMultTRKXiPlus(0),
330 f3dHistGenPtVsYVsMultTRKOmegaMinus(0),
331 f3dHistGenPtVsYVsMultTRKOmegaPlus(0),
332 f3dHistGenSelectedPtVsYVsMultTRKXiMinus(0),
333 f3dHistGenSelectedPtVsYVsMultTRKXiPlus(0),
334 f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus(0),
335 f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus(0),
336 f3dHistGenPtVsYCMSVsMultTRKXiMinus(0),
337 f3dHistGenPtVsYCMSVsMultTRKXiPlus(0),
338 f3dHistGenPtVsYCMSVsMultTRKOmegaMinus(0),
339 f3dHistGenPtVsYCMSVsMultTRKOmegaPlus(0),
340 f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus(0),
341 f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus(0),
342 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus(0),
343 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus(0),
347 f3dHistGenPtVsYVsMultSPDXiMinus(0),
348 f3dHistGenPtVsYVsMultSPDXiPlus(0),
349 f3dHistGenPtVsYVsMultSPDOmegaMinus(0),
350 f3dHistGenPtVsYVsMultSPDOmegaPlus(0),
351 f3dHistGenSelectedPtVsYVsMultSPDXiMinus(0),
352 f3dHistGenSelectedPtVsYVsMultSPDXiPlus(0),
353 f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus(0),
354 f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus(0),
355 f3dHistGenPtVsYCMSVsMultSPDXiMinus(0),
356 f3dHistGenPtVsYCMSVsMultSPDXiPlus(0),
357 f3dHistGenPtVsYCMSVsMultSPDOmegaMinus(0),
358 f3dHistGenPtVsYCMSVsMultSPDOmegaPlus(0),
359 f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus(0),
360 f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus(0),
361 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus(0),
362 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus(0),
375 AliAnalysisTaskExtractPerformanceCascade::AliAnalysisTaskExtractPerformanceCascade(const char *name)
376 : AliAnalysisTaskSE(name), fListHist(0), fTreeCascade(0), fPIDResponse(0), fESDtrackCuts(0), fUtils(0),
377 fkIsNuclear ( kFALSE ),
378 fkSwitchINT7 ( kFALSE ),
379 fpArapidityShift ( 0.465 ),
380 fCentralityEstimator("V0M"),
381 fkpAVertexSelection( kFALSE ),
383 fkRunVertexers ( kFALSE ),
384 fkCheckSwapping( kFALSE ),
385 fkSelectCentrality (kFALSE),
389 //------------------------------------------------
391 //------------------------------------------------
393 fTreeCascVarCharge(0),
394 fTreeCascVarMassAsXi(0),
395 fTreeCascVarMassAsOmega(0),
398 fTreeCascVarRapMC(0),
399 fTreeCascVarRapXi(0),
400 fTreeCascVarRapOmega(0),
401 fTreeCascVarNegEta(0),
402 fTreeCascVarPosEta(0),
403 fTreeCascVarBachEta(0),
404 fTreeCascVarDCACascDaughters(0),
405 fTreeCascVarDCABachToPrimVtx(0),
406 fTreeCascVarDCAV0Daughters(0),
407 fTreeCascVarDCAV0ToPrimVtx(0),
408 fTreeCascVarDCAPosToPrimVtx(0),
409 fTreeCascVarDCANegToPrimVtx(0),
410 fTreeCascVarCascCosPointingAngle(0),
411 fTreeCascVarCascRadius(0),
412 fTreeCascVarV0Mass(0),
413 fTreeCascVarV0CosPointingAngle(0),
414 fTreeCascVarV0CosPointingAngleSpecial(0),
415 fTreeCascVarV0Radius(0),
416 fTreeCascVarLeastNbrClusters(0),
417 fTreeCascVarMultiplicity(0),
418 fTreeCascVarMultiplicityV0A(0),
419 fTreeCascVarMultiplicityZNA(0),
420 fTreeCascVarMultiplicityTRK(0),
421 fTreeCascVarMultiplicitySPD(0),
422 fTreeCascVarMultiplicityMC(0),
423 fTreeCascVarDistOverTotMom(0),
424 fTreeCascVarIsPhysicalPrimary(0),
426 fTreeCascVarPIDSwapped(0),
427 fTreeCascVarPIDBachelor(0),
428 fTreeCascVarPIDNegative(0),
429 fTreeCascVarPIDPositive(0),
430 fTreeCascVarBachTransMom(0),
431 fTreeCascVarPosTransMom(0),
432 fTreeCascVarNegTransMom(0),
433 fTreeCascVarPosTransMomMC(0),
434 fTreeCascVarNegTransMomMC(0),
435 fTreeCascVarNegNSigmaPion(0),
436 fTreeCascVarNegNSigmaProton(0),
437 fTreeCascVarPosNSigmaPion(0),
438 fTreeCascVarPosNSigmaProton(0),
439 fTreeCascVarBachNSigmaPion(0),
440 fTreeCascVarBachNSigmaKaon(0),
442 fTreeCascVarkITSRefitBachelor(0),
443 fTreeCascVarkITSRefitNegative(0),
444 fTreeCascVarkITSRefitPositive(0),
446 fTreeCascVarNegClusters(0),
447 fTreeCascVarPosClusters(0),
448 fTreeCascVarBachClusters(0),
449 fTreeCascVarNegSharedClusters(0),
450 fTreeCascVarPosSharedClusters(0),
451 fTreeCascVarBachSharedClusters(0),
453 fTreeCascVarEvHasXiMinus(0),
454 fTreeCascVarEvHasXiPlus(0),
455 fTreeCascVarEvHasOmegaMinus(0),
456 fTreeCascVarEvHasOmegaPlus(0),
457 fTreeCascVarEvHasLambda(0),
458 fTreeCascVarEvHasAntiLambda(0),
460 fTreeCascVarEvHasLowPtXiMinus(0),
461 fTreeCascVarEvHasLowPtXiPlus(0),
462 fTreeCascVarEvHasLowPtOmegaMinus(0),
463 fTreeCascVarEvHasLowPtOmegaPlus(0),
464 fTreeCascVarEvHasLowPtLambda(0),
465 fTreeCascVarEvHasLowPtAntiLambda(0),
467 fTreeCascVarEvHasVeryLowPtXiMinus(0),
468 fTreeCascVarEvHasVeryLowPtXiPlus(0),
469 fTreeCascVarEvHasVeryLowPtOmegaMinus(0),
470 fTreeCascVarEvHasVeryLowPtOmegaPlus(0),
471 fTreeCascVarEvHasVeryLowPtLambda(0),
472 fTreeCascVarEvHasVeryLowPtAntiLambda(0),
474 fTreeCascVarBadCascadeJai(0),
475 fTreeCascVarDeltaDCA(0),
477 //------------------------------------------------
479 // --- Filled on an Event-by-event basis
480 //------------------------------------------------
481 fHistV0MultiplicityBeforeTrigSel(0),
482 fHistV0MultiplicityForTrigEvt(0),
483 fHistV0MultiplicityForSelEvt(0),
484 fHistV0MultiplicityForSelEvtNoTPCOnly(0),
485 fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup(0),
486 fHistMultiplicityBeforeTrigSel(0),
487 fHistMultiplicityForTrigEvt(0),
488 fHistMultiplicity(0),
489 fHistMultiplicityNoTPCOnly(0),
490 fHistMultiplicityNoTPCOnlyNoPileup(0),
493 fHistMultiplicityV0ABeforeTrigSel(0),
494 fHistMultiplicityV0AForTrigEvt(0),
495 fHistMultiplicityV0A(0),
496 fHistMultiplicityV0ANoTPCOnly(0),
497 fHistMultiplicityV0ANoTPCOnlyNoPileup(0),
500 fHistMultiplicityZNABeforeTrigSel(0),
501 fHistMultiplicityZNAForTrigEvt(0),
502 fHistMultiplicityZNA(0),
503 fHistMultiplicityZNANoTPCOnly(0),
504 fHistMultiplicityZNANoTPCOnlyNoPileup(0),
507 fHistMultiplicityTRKBeforeTrigSel(0),
508 fHistMultiplicityTRKForTrigEvt(0),
509 fHistMultiplicityTRK(0),
510 fHistMultiplicityTRKNoTPCOnly(0),
511 fHistMultiplicityTRKNoTPCOnlyNoPileup(0),
514 fHistMultiplicitySPDBeforeTrigSel(0),
515 fHistMultiplicitySPDForTrigEvt(0),
516 fHistMultiplicitySPD(0),
517 fHistMultiplicitySPDNoTPCOnly(0),
518 fHistMultiplicitySPDNoTPCOnlyNoPileup(0),
520 //------------------------------------------------
521 // PARTICLE HISTOGRAMS
522 // --- Filled on a Particle-by-Particle basis
523 //------------------------------------------------
524 f3dHistGenPtVsYVsMultXiMinus(0),
525 f3dHistGenPtVsYVsMultXiPlus(0),
526 f3dHistGenPtVsYVsMultOmegaMinus(0),
527 f3dHistGenPtVsYVsMultOmegaPlus(0),
528 f3dHistGenSelectedPtVsYVsMultXiMinus(0),
529 f3dHistGenSelectedPtVsYVsMultXiPlus(0),
530 f3dHistGenSelectedPtVsYVsMultOmegaMinus(0),
531 f3dHistGenSelectedPtVsYVsMultOmegaPlus(0),
532 f3dHistGenPtVsYCMSVsMultXiMinus(0),
533 f3dHistGenPtVsYCMSVsMultXiPlus(0),
534 f3dHistGenPtVsYCMSVsMultOmegaMinus(0),
535 f3dHistGenPtVsYCMSVsMultOmegaPlus(0),
536 f3dHistGenSelectedPtVsYCMSVsMultXiMinus(0),
537 f3dHistGenSelectedPtVsYCMSVsMultXiPlus(0),
538 f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus(0),
539 f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus(0),
543 f3dHistGenPtVsYVsMultMCXiMinus(0),
544 f3dHistGenPtVsYVsMultMCXiPlus(0),
545 f3dHistGenPtVsYVsMultMCOmegaMinus(0),
546 f3dHistGenPtVsYVsMultMCOmegaPlus(0),
547 f3dHistGenSelectedPtVsYVsMultMCXiMinus(0),
548 f3dHistGenSelectedPtVsYVsMultMCXiPlus(0),
549 f3dHistGenSelectedPtVsYVsMultMCOmegaMinus(0),
550 f3dHistGenSelectedPtVsYVsMultMCOmegaPlus(0),
551 f3dHistGenPtVsYCMSVsMultMCXiMinus(0),
552 f3dHistGenPtVsYCMSVsMultMCXiPlus(0),
553 f3dHistGenPtVsYCMSVsMultMCOmegaMinus(0),
554 f3dHistGenPtVsYCMSVsMultMCOmegaPlus(0),
555 f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus(0),
556 f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus(0),
557 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus(0),
558 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus(0),
562 f3dHistGenPtVsYVsMultV0AXiMinus(0),
563 f3dHistGenPtVsYVsMultV0AXiPlus(0),
564 f3dHistGenPtVsYVsMultV0AOmegaMinus(0),
565 f3dHistGenPtVsYVsMultV0AOmegaPlus(0),
566 f3dHistGenSelectedPtVsYVsMultV0AXiMinus(0),
567 f3dHistGenSelectedPtVsYVsMultV0AXiPlus(0),
568 f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus(0),
569 f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus(0),
570 f3dHistGenPtVsYCMSVsMultV0AXiMinus(0),
571 f3dHistGenPtVsYCMSVsMultV0AXiPlus(0),
572 f3dHistGenPtVsYCMSVsMultV0AOmegaMinus(0),
573 f3dHistGenPtVsYCMSVsMultV0AOmegaPlus(0),
574 f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus(0),
575 f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus(0),
576 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus(0),
577 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus(0),
578 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiMinus(0),
579 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiPlus(0),
580 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaMinus(0),
581 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaPlus(0),
585 f3dHistGenPtVsYVsMultZNAXiMinus(0),
586 f3dHistGenPtVsYVsMultZNAXiPlus(0),
587 f3dHistGenPtVsYVsMultZNAOmegaMinus(0),
588 f3dHistGenPtVsYVsMultZNAOmegaPlus(0),
589 f3dHistGenSelectedPtVsYVsMultZNAXiMinus(0),
590 f3dHistGenSelectedPtVsYVsMultZNAXiPlus(0),
591 f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus(0),
592 f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus(0),
593 f3dHistGenPtVsYCMSVsMultZNAXiMinus(0),
594 f3dHistGenPtVsYCMSVsMultZNAXiPlus(0),
595 f3dHistGenPtVsYCMSVsMultZNAOmegaMinus(0),
596 f3dHistGenPtVsYCMSVsMultZNAOmegaPlus(0),
597 f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus(0),
598 f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus(0),
599 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus(0),
600 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus(0),
604 f3dHistGenPtVsYVsMultTRKXiMinus(0),
605 f3dHistGenPtVsYVsMultTRKXiPlus(0),
606 f3dHistGenPtVsYVsMultTRKOmegaMinus(0),
607 f3dHistGenPtVsYVsMultTRKOmegaPlus(0),
608 f3dHistGenSelectedPtVsYVsMultTRKXiMinus(0),
609 f3dHistGenSelectedPtVsYVsMultTRKXiPlus(0),
610 f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus(0),
611 f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus(0),
612 f3dHistGenPtVsYCMSVsMultTRKXiMinus(0),
613 f3dHistGenPtVsYCMSVsMultTRKXiPlus(0),
614 f3dHistGenPtVsYCMSVsMultTRKOmegaMinus(0),
615 f3dHistGenPtVsYCMSVsMultTRKOmegaPlus(0),
616 f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus(0),
617 f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus(0),
618 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus(0),
619 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus(0),
623 f3dHistGenPtVsYVsMultSPDXiMinus(0),
624 f3dHistGenPtVsYVsMultSPDXiPlus(0),
625 f3dHistGenPtVsYVsMultSPDOmegaMinus(0),
626 f3dHistGenPtVsYVsMultSPDOmegaPlus(0),
627 f3dHistGenSelectedPtVsYVsMultSPDXiMinus(0),
628 f3dHistGenSelectedPtVsYVsMultSPDXiPlus(0),
629 f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus(0),
630 f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus(0),
631 f3dHistGenPtVsYCMSVsMultSPDXiMinus(0),
632 f3dHistGenPtVsYCMSVsMultSPDXiPlus(0),
633 f3dHistGenPtVsYCMSVsMultSPDOmegaMinus(0),
634 f3dHistGenPtVsYCMSVsMultSPDOmegaPlus(0),
635 f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus(0),
636 f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus(0),
637 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus(0),
638 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus(0),
650 //Set Variables for re-running the cascade vertexers (as done for MS paper)
652 // New Loose : 1st step for the 7 TeV pp analysis
654 fV0VertexerSels[0] = 33. ; // max allowed chi2
655 fV0VertexerSels[1] = 0.02; // min allowed impact parameter for the 1st daughter (LHC09a4 : 0.05)
656 fV0VertexerSels[2] = 0.02; // min allowed impact parameter for the 2nd daughter (LHC09a4 : 0.05)
657 fV0VertexerSels[3] = 2.0 ; // max allowed DCA between the daughter tracks (LHC09a4 : 0.5)
658 fV0VertexerSels[4] = 0.95; // min allowed cosine of V0's pointing angle (LHC09a4 : 0.99)
659 fV0VertexerSels[5] = 1.0 ; // min radius of the fiducial volume (LHC09a4 : 0.2)
660 fV0VertexerSels[6] = 200. ; // max radius of the fiducial volume (LHC09a4 : 100.0)
662 fCascadeVertexerSels[0] = 33. ; // max allowed chi2 (same as PDC07)
663 fCascadeVertexerSels[1] = 0.05 ; // min allowed V0 impact parameter (PDC07 : 0.05 / LHC09a4 : 0.025 )
664 fCascadeVertexerSels[2] = 0.010; // "window" around the Lambda mass (PDC07 : 0.008 / LHC09a4 : 0.010 )
665 fCascadeVertexerSels[3] = 0.03 ; // min allowed bachelor's impact parameter (PDC07 : 0.035 / LHC09a4 : 0.025 )
666 fCascadeVertexerSels[4] = 2.0 ; // max allowed DCA between the V0 and the bachelor (PDC07 : 0.1 / LHC09a4 : 0.2 )
667 fCascadeVertexerSels[5] = 0.95 ; // min allowed cosine of the cascade pointing angle (PDC07 : 0.9985 / LHC09a4 : 0.998 )
668 fCascadeVertexerSels[6] = 0.4 ; // min radius of the fiducial volume (PDC07 : 0.9 / LHC09a4 : 0.2 )
669 fCascadeVertexerSels[7] = 100. ; // max radius of the fiducial volume (PDC07 : 100 / LHC09a4 : 100 )
671 // Output slot #0 writes into a TList container (Cascade)
672 DefineOutput(1, TList::Class());
673 DefineOutput(2, TTree::Class());
677 AliAnalysisTaskExtractPerformanceCascade::~AliAnalysisTaskExtractPerformanceCascade()
679 //------------------------------------------------
681 //------------------------------------------------
691 //cleanup esd track cuts object too...
693 delete fESDtrackCuts;
703 //________________________________________________________________________
704 void AliAnalysisTaskExtractPerformanceCascade::UserCreateOutputObjects()
709 //------------------------------------------------
711 fTreeCascade = new TTree("fTreeCascade","CascadeCandidates");
713 //------------------------------------------------
714 // fTreeCascade Branch definitions - Cascade Tree
715 //------------------------------------------------
717 //------------------------------------------------
718 // fTreeCascade Branch definitions
719 //------------------------------------------------
721 //-----------BASIC-INFO---------------------------
722 /* 1*/ fTreeCascade->Branch("fTreeCascVarCharge",&fTreeCascVarCharge,"fTreeCascVarCharge/I");
723 /* 2*/ fTreeCascade->Branch("fTreeCascVarMassAsXi",&fTreeCascVarMassAsXi,"fTreeCascVarMassAsXi/F");
724 /* 3*/ fTreeCascade->Branch("fTreeCascVarMassAsOmega",&fTreeCascVarMassAsOmega,"fTreeCascVarMassAsOmega/F");
725 /* 4*/ fTreeCascade->Branch("fTreeCascVarPt",&fTreeCascVarPt,"fTreeCascVarPt/F");
726 /* 5*/ fTreeCascade->Branch("fTreeCascVarPtMC",&fTreeCascVarPtMC,"fTreeCascVarPtMC/F");
727 /* 6*/ fTreeCascade->Branch("fTreeCascVarRapXi",&fTreeCascVarRapXi,"fTreeCascVarRapXi/F");
728 /* 7*/ fTreeCascade->Branch("fTreeCascVarRapMC",&fTreeCascVarRapMC,"fTreeCascVarRapMC/F");
729 /* 8*/ fTreeCascade->Branch("fTreeCascVarRapOmega",&fTreeCascVarRapOmega,"fTreeCascVarRapOmega/F");
730 /* 9*/ fTreeCascade->Branch("fTreeCascVarNegEta",&fTreeCascVarNegEta,"fTreeCascVarNegEta/F");
731 /*10*/ fTreeCascade->Branch("fTreeCascVarPosEta",&fTreeCascVarPosEta,"fTreeCascVarPosEta/F");
732 /*11*/ fTreeCascade->Branch("fTreeCascVarBachEta",&fTreeCascVarBachEta,"fTreeCascVarBachEta/F");
733 //-----------INFO-FOR-CUTS------------------------
734 /*12*/ fTreeCascade->Branch("fTreeCascVarDCACascDaughters",&fTreeCascVarDCACascDaughters,"fTreeCascVarDCACascDaughters/F");
735 /*13*/ fTreeCascade->Branch("fTreeCascVarDCABachToPrimVtx",&fTreeCascVarDCABachToPrimVtx,"fTreeCascVarDCABachToPrimVtx/F");
736 /*14*/ fTreeCascade->Branch("fTreeCascVarDCAV0Daughters",&fTreeCascVarDCAV0Daughters,"fTreeCascVarDCAV0Daughters/F");
737 /*15*/ fTreeCascade->Branch("fTreeCascVarDCAV0ToPrimVtx",&fTreeCascVarDCAV0ToPrimVtx,"fTreeCascVarDCAV0ToPrimVtx/F");
738 /*16*/ fTreeCascade->Branch("fTreeCascVarDCAPosToPrimVtx",&fTreeCascVarDCAPosToPrimVtx,"fTreeCascVarDCAPosToPrimVtx/F");
739 /*17*/ fTreeCascade->Branch("fTreeCascVarDCANegToPrimVtx",&fTreeCascVarDCANegToPrimVtx,"fTreeCascVarDCANegToPrimVtx/F");
740 /*18*/ fTreeCascade->Branch("fTreeCascVarCascCosPointingAngle",&fTreeCascVarCascCosPointingAngle,"fTreeCascVarCascCosPointingAngle/F");
741 /*19*/ fTreeCascade->Branch("fTreeCascVarCascRadius",&fTreeCascVarCascRadius,"fTreeCascVarCascRadius/F");
742 /*20*/ fTreeCascade->Branch("fTreeCascVarV0Mass",&fTreeCascVarV0Mass,"fTreeCascVarV0Mass/F");
743 /*21*/ fTreeCascade->Branch("fTreeCascVarV0CosPointingAngle",&fTreeCascVarV0CosPointingAngle,"fTreeCascVarV0CosPointingAngle/F");
744 /*21*/ fTreeCascade->Branch("fTreeCascVarV0CosPointingAngleSpecial",&fTreeCascVarV0CosPointingAngleSpecial,"fTreeCascVarV0CosPointingAngleSpecial/F");
745 /*22*/ fTreeCascade->Branch("fTreeCascVarV0Radius",&fTreeCascVarV0Radius,"fTreeCascVarV0Radius/F");
746 /*23*/ fTreeCascade->Branch("fTreeCascVarLeastNbrClusters",&fTreeCascVarLeastNbrClusters,"fTreeCascVarLeastNbrClusters/I");
748 /*23*/ fTreeCascade->Branch("fTreeCascVarNegClusters",&fTreeCascVarNegClusters,"fTreeCascVarNegClusters/I");
749 /*23*/ fTreeCascade->Branch("fTreeCascVarPosClusters",&fTreeCascVarPosClusters,"fTreeCascVarPosClusters/I");
750 /*23*/ fTreeCascade->Branch("fTreeCascVarBachClusters",&fTreeCascVarBachClusters,"fTreeCascVarBachClusters/I");
751 /*23*/ fTreeCascade->Branch("fTreeCascVarNegSharedClusters",&fTreeCascVarNegSharedClusters,"fTreeCascVarNegSharedClusters/I");
752 /*23*/ fTreeCascade->Branch("fTreeCascVarPosSharedClusters",&fTreeCascVarPosSharedClusters,"fTreeCascVarPosSharedClusters/I");
753 /*23*/ fTreeCascade->Branch("fTreeCascVarBachSharedClusters",&fTreeCascVarBachSharedClusters,"fTreeCascVarBachSharedClusters/I");
754 //-----------MULTIPLICITY-INFO--------------------
755 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicity",&fTreeCascVarMultiplicity,"fTreeCascVarMultiplicity/I");
756 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicityV0A",&fTreeCascVarMultiplicityV0A,"fTreeCascVarMultiplicityV0A/I");
757 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicityZNA",&fTreeCascVarMultiplicityZNA,"fTreeCascVarMultiplicityZNA/I");
758 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicityTRK",&fTreeCascVarMultiplicityTRK,"fTreeCascVarMultiplicityTRK/I");
759 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicitySPD",&fTreeCascVarMultiplicitySPD,"fTreeCascVarMultiplicitySPD/I");
760 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicityMC",&fTreeCascVarMultiplicityMC,"fTreeCascVarMultiplicityMC/I");
761 //-----------DECAY-LENGTH-INFO--------------------
762 /*25*/ fTreeCascade->Branch("fTreeCascVarDistOverTotMom",&fTreeCascVarDistOverTotMom,"fTreeCascVarDistOverTotMom/F");
763 //-----------MC-PID-------------------------------
764 /*25bis*/ fTreeCascade->Branch("fTreeCascVarIsPhysicalPrimary",&fTreeCascVarIsPhysicalPrimary,"fTreeCascVarIsPhysicalPrimary/I");
765 /*26*/ fTreeCascade->Branch("fTreeCascVarPID",&fTreeCascVarPID,"fTreeCascVarPID/I");
766 /*26*/ fTreeCascade->Branch("fTreeCascVarPIDSwapped",&fTreeCascVarPIDSwapped,"fTreeCascVarPIDSwapped/I");
767 /*27*/ fTreeCascade->Branch("fTreeCascVarPIDBachelor",&fTreeCascVarPIDBachelor,"fTreeCascVarPIDBachelor/I");
768 /*28*/ fTreeCascade->Branch("fTreeCascVarPIDNegative",&fTreeCascVarPIDNegative,"fTreeCascVarPIDNegative/I");
769 /*29*/ fTreeCascade->Branch("fTreeCascVarPIDPositive",&fTreeCascVarPIDPositive,"fTreeCascVarPIDPositive/I");
770 /*30*/ fTreeCascade->Branch("fTreeCascVarBachTransMom",&fTreeCascVarBachTransMom,"fTreeCascVarBachTransMom/F");
771 /*30*/ fTreeCascade->Branch("fTreeCascVarPosTransMom",&fTreeCascVarPosTransMom,"fTreeCascVarPosTransMom/F");
772 /*31*/ fTreeCascade->Branch("fTreeCascVarNegTransMom",&fTreeCascVarNegTransMom,"fTreeCascVarNegTransMom/F");
773 /*32*/ fTreeCascade->Branch("fTreeCascVarPosTransMomMC",&fTreeCascVarPosTransMomMC,"fTreeCascVarPosTransMomMC/F");
774 /*33*/ fTreeCascade->Branch("fTreeCascVarNegTransMomMC",&fTreeCascVarNegTransMomMC,"fTreeCascVarNegTransMomMC/F");
775 //------------------------------------------------
776 /*34*/ fTreeCascade->Branch("fTreeCascVarNegNSigmaPion",&fTreeCascVarNegNSigmaPion,"fTreeCascVarNegNSigmaPion/F");
777 /*35*/ fTreeCascade->Branch("fTreeCascVarNegNSigmaProton",&fTreeCascVarNegNSigmaProton,"fTreeCascVarNegNSigmaProton/F");
778 /*36*/ fTreeCascade->Branch("fTreeCascVarPosNSigmaPion",&fTreeCascVarPosNSigmaPion,"fTreeCascVarPosNSigmaPion/F");
779 /*37*/ fTreeCascade->Branch("fTreeCascVarPosNSigmaProton",&fTreeCascVarPosNSigmaProton,"fTreeCascVarPosNSigmaProton/F");
780 /*38*/ fTreeCascade->Branch("fTreeCascVarBachNSigmaPion",&fTreeCascVarBachNSigmaPion,"fTreeCascVarBachNSigmaPion/F");
781 /*39*/ fTreeCascade->Branch("fTreeCascVarBachNSigmaKaon",&fTreeCascVarBachNSigmaKaon,"fTreeCascVarBachNSigmaKaon/F");
783 /*29*/ fTreeCascade->Branch("fTreeCascVarkITSRefitBachelor",&fTreeCascVarkITSRefitBachelor,"fTreeCascVarkITSRefitBachelor/O");
784 /*29*/ fTreeCascade->Branch("fTreeCascVarkITSRefitNegative",&fTreeCascVarkITSRefitNegative,"fTreeCascVarkITSRefitNegative/O");
785 /*29*/ fTreeCascade->Branch("fTreeCascVarkITSRefitPositive",&fTreeCascVarkITSRefitPositive,"fTreeCascVarkITSRefitPositive/O");
787 fTreeCascade->Branch("fTreeCascVarNegClusters",&fTreeCascVarNegClusters,"fTreeCascVarNegClusters/I");
788 fTreeCascade->Branch("fTreeCascVarPosClusters",&fTreeCascVarPosClusters,"fTreeCascVarPosClusters/I");
789 fTreeCascade->Branch("fTreeCascVarBachClusters",&fTreeCascVarBachClusters,"fTreeCascVarBachClusters/I");
790 fTreeCascade->Branch("fTreeCascVarNegSharedClusters",&fTreeCascVarNegSharedClusters,"fTreeCascVarNegSharedClusters/I");
791 fTreeCascade->Branch("fTreeCascVarPosSharedClusters",&fTreeCascVarPosSharedClusters,"fTreeCascVarPosSharedClusters/I");
792 fTreeCascade->Branch("fTreeCascVarBachSharedClusters",&fTreeCascVarBachSharedClusters,"fTreeCascVarBachSharedClusters/I");
794 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasXiMinus", &fTreeCascVarEvHasXiMinus, "fTreeCascVarEvHasXiMinus/O");
795 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasXiPlus", &fTreeCascVarEvHasXiPlus, "fTreeCascVarEvHasXiPlus/O");
796 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasOmegaMinus",&fTreeCascVarEvHasOmegaMinus,"fTreeCascVarEvHasOmegaMinus/O");
797 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasOmegaPlus", &fTreeCascVarEvHasOmegaPlus, "fTreeCascVarEvHasOmegaPlus/O");
798 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLambda", &fTreeCascVarEvHasLambda, "fTreeCascVarEvHasLambda/O");
799 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasAntiLambda",&fTreeCascVarEvHasAntiLambda,"fTreeCascVarEvHasAntiLambda/O");
801 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLowPtXiMinus", &fTreeCascVarEvHasLowPtXiMinus, "fTreeCascVarEvHasLowPtXiMinus/O");
802 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLowPtXiPlus", &fTreeCascVarEvHasLowPtXiPlus, "fTreeCascVarEvHasLowPtXiPlus/O");
803 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLowPtOmegaMinus",&fTreeCascVarEvHasLowPtOmegaMinus,"fTreeCascVarEvHasLowPtOmegaMinus/O");
804 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLowPtOmegaPlus", &fTreeCascVarEvHasLowPtOmegaPlus, "fTreeCascVarEvHasLowPtOmegaPlus/O");
805 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLowPtLambda", &fTreeCascVarEvHasLowPtLambda, "fTreeCascVarEvHasLowPtLambda/O");
806 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLowPtAntiLambda",&fTreeCascVarEvHasLowPtAntiLambda,"fTreeCascVarEvHasLowPtAntiLambda/O");
808 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasVeryLowPtXiMinus", &fTreeCascVarEvHasVeryLowPtXiMinus, "fTreeCascVarEvHasVeryLowPtXiMinus/O");
809 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasVeryLowPtXiPlus", &fTreeCascVarEvHasVeryLowPtXiPlus, "fTreeCascVarEvHasVeryLowPtXiPlus/O");
810 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasVeryLowPtOmegaMinus",&fTreeCascVarEvHasVeryLowPtOmegaMinus,"fTreeCascVarEvHasVeryLowPtOmegaMinus/O");
811 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasVeryLowPtOmegaPlus", &fTreeCascVarEvHasVeryLowPtOmegaPlus, "fTreeCascVarEvHasVeryLowPtOmegaPlus/O");
812 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasVeryLowPtLambda", &fTreeCascVarEvHasVeryLowPtLambda, "fTreeCascVarEvHasVeryLowPtLambda/O");
813 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasVeryLowPtAntiLambda",&fTreeCascVarEvHasVeryLowPtAntiLambda,"fTreeCascVarEvHasVeryLowPtAntiLambda/O");
815 fTreeCascade->Branch("fTreeCascVarBadCascadeJai",&fTreeCascVarBadCascadeJai,"fTreeCascVarBadCascadeJai/O");
816 fTreeCascade->Branch("fTreeCascVarDeltaDCA",&fTreeCascVarDeltaDCA,"fTreeCascVarDeltaDCA/F");
818 //------------------------------------------------
819 // Particle Identification Setup
820 //------------------------------------------------
822 AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
823 AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
824 fPIDResponse = inputHandler->GetPIDResponse();
828 if(! fESDtrackCuts ){
829 fESDtrackCuts = new AliESDtrackCuts();
832 fUtils = new AliAnalysisUtils();
835 //------------------------------------------------
836 // V0 Multiplicity Histograms
837 //------------------------------------------------
841 fListHist = new TList();
842 fListHist->SetOwner(); // See http://root.cern.ch/root/html/TCollection.html#TCollection:SetOwner
845 if(! fHistV0MultiplicityBeforeTrigSel) {
846 fHistV0MultiplicityBeforeTrigSel = new TH1F("fHistV0MultiplicityBeforeTrigSel",
847 "V0s per event (before Trig. Sel.);Nbr of V0s/Evt;Events",
849 fListHist->Add(fHistV0MultiplicityBeforeTrigSel);
852 if(! fHistV0MultiplicityForTrigEvt) {
853 fHistV0MultiplicityForTrigEvt = new TH1F("fHistV0MultiplicityForTrigEvt",
854 "V0s per event (for triggered evt);Nbr of V0s/Evt;Events",
856 fListHist->Add(fHistV0MultiplicityForTrigEvt);
859 if(! fHistV0MultiplicityForSelEvt) {
860 fHistV0MultiplicityForSelEvt = new TH1F("fHistV0MultiplicityForSelEvt",
861 "V0s per event;Nbr of V0s/Evt;Events",
863 fListHist->Add(fHistV0MultiplicityForSelEvt);
866 if(! fHistV0MultiplicityForSelEvtNoTPCOnly) {
867 fHistV0MultiplicityForSelEvtNoTPCOnly = new TH1F("fHistV0MultiplicityForSelEvtNoTPCOnly",
868 "V0s per event;Nbr of V0s/Evt;Events",
870 fListHist->Add(fHistV0MultiplicityForSelEvtNoTPCOnly);
872 if(! fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup) {
873 fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup = new TH1F("fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup",
874 "V0s per event;Nbr of V0s/Evt;Events",
876 fListHist->Add(fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup);
879 //------------------------------------------------
880 // Track Multiplicity Histograms
881 //------------------------------------------------
883 if(! fHistMultiplicityBeforeTrigSel) {
884 fHistMultiplicityBeforeTrigSel = new TH1F("fHistMultiplicityBeforeTrigSel",
885 "Tracks per event;Nbr of Tracks;Events",
887 fListHist->Add(fHistMultiplicityBeforeTrigSel);
889 if(! fHistMultiplicityForTrigEvt) {
890 fHistMultiplicityForTrigEvt = new TH1F("fHistMultiplicityForTrigEvt",
891 "Tracks per event;Nbr of Tracks;Events",
893 fListHist->Add(fHistMultiplicityForTrigEvt);
895 if(! fHistMultiplicity) {
896 fHistMultiplicity = new TH1F("fHistMultiplicity",
897 "Tracks per event;Nbr of Tracks;Events",
899 fListHist->Add(fHistMultiplicity);
901 if(! fHistMultiplicityNoTPCOnly) {
902 fHistMultiplicityNoTPCOnly = new TH1F("fHistMultiplicityNoTPCOnly",
903 "Tracks per event;Nbr of Tracks;Events",
905 fListHist->Add(fHistMultiplicityNoTPCOnly);
907 if(! fHistMultiplicityNoTPCOnlyNoPileup) {
908 fHistMultiplicityNoTPCOnlyNoPileup = new TH1F("fHistMultiplicityNoTPCOnlyNoPileup",
909 "Tracks per event;Nbr of Tracks;Events",
911 fListHist->Add(fHistMultiplicityNoTPCOnlyNoPileup);
915 //V0A Centrality (if PbPb / pPb)
916 if(! fHistMultiplicityV0ABeforeTrigSel) {
917 fHistMultiplicityV0ABeforeTrigSel = new TH1F("fHistMultiplicityV0ABeforeTrigSel",
918 "Centrality Distribution: V0A;V0A Centrality;Events",
920 fListHist->Add(fHistMultiplicityV0ABeforeTrigSel);
922 if(! fHistMultiplicityV0AForTrigEvt) {
923 fHistMultiplicityV0AForTrigEvt = new TH1F("fHistMultiplicityV0AForTrigEvt",
924 "Centrality Distribution: V0A;V0A Centrality;Events",
926 fListHist->Add(fHistMultiplicityV0AForTrigEvt);
928 if(! fHistMultiplicityV0A) {
929 fHistMultiplicityV0A = new TH1F("fHistMultiplicityV0A",
930 "Centrality Distribution: V0A;V0A Centrality;Events",
932 fListHist->Add(fHistMultiplicityV0A);
934 if(! fHistMultiplicityV0ANoTPCOnly) {
935 fHistMultiplicityV0ANoTPCOnly = new TH1F("fHistMultiplicityV0ANoTPCOnly",
936 "Centrality Distribution: V0A;V0A Centrality;Events",
938 fListHist->Add(fHistMultiplicityV0ANoTPCOnly);
940 if(! fHistMultiplicityV0ANoTPCOnlyNoPileup) {
941 fHistMultiplicityV0ANoTPCOnlyNoPileup = new TH1F("fHistMultiplicityV0ANoTPCOnlyNoPileup",
942 "Centrality Distribution: V0A;V0A Centrality;Events",
944 fListHist->Add(fHistMultiplicityV0ANoTPCOnlyNoPileup);
947 //ZNA Centrality (if PbPb / pPb)
948 if(! fHistMultiplicityZNABeforeTrigSel) {
949 fHistMultiplicityZNABeforeTrigSel = new TH1F("fHistMultiplicityZNABeforeTrigSel",
950 "Centrality Distribution: ZNA;ZNA Centrality;Events",
952 fListHist->Add(fHistMultiplicityZNABeforeTrigSel);
954 if(! fHistMultiplicityZNAForTrigEvt) {
955 fHistMultiplicityZNAForTrigEvt = new TH1F("fHistMultiplicityZNAForTrigEvt",
956 "Centrality Distribution: ZNA;ZNA Centrality;Events",
958 fListHist->Add(fHistMultiplicityZNAForTrigEvt);
960 if(! fHistMultiplicityZNA) {
961 fHistMultiplicityZNA = new TH1F("fHistMultiplicityZNA",
962 "Centrality Distribution: ZNA;ZNA Centrality;Events",
964 fListHist->Add(fHistMultiplicityZNA);
966 if(! fHistMultiplicityZNANoTPCOnly) {
967 fHistMultiplicityZNANoTPCOnly = new TH1F("fHistMultiplicityZNANoTPCOnly",
968 "Centrality Distribution: ZNA;ZNA Centrality;Events",
970 fListHist->Add(fHistMultiplicityZNANoTPCOnly);
972 if(! fHistMultiplicityZNANoTPCOnlyNoPileup) {
973 fHistMultiplicityZNANoTPCOnlyNoPileup = new TH1F("fHistMultiplicityZNANoTPCOnlyNoPileup",
974 "Centrality Distribution: ZNA;ZNA Centrality;Events",
976 fListHist->Add(fHistMultiplicityZNANoTPCOnlyNoPileup);
979 //TRK Centrality (if PbPb / pPb)
980 if(! fHistMultiplicityTRKBeforeTrigSel) {
981 fHistMultiplicityTRKBeforeTrigSel = new TH1F("fHistMultiplicityTRKBeforeTrigSel",
982 "Centrality Distribution: TRK;TRK Centrality;Events",
984 fListHist->Add(fHistMultiplicityTRKBeforeTrigSel);
986 if(! fHistMultiplicityTRKForTrigEvt) {
987 fHistMultiplicityTRKForTrigEvt = new TH1F("fHistMultiplicityTRKForTrigEvt",
988 "Centrality Distribution: TRK;TRK Centrality;Events",
990 fListHist->Add(fHistMultiplicityTRKForTrigEvt);
992 if(! fHistMultiplicityTRK) {
993 fHistMultiplicityTRK = new TH1F("fHistMultiplicityTRK",
994 "Centrality Distribution: TRK;TRK Centrality;Events",
996 fListHist->Add(fHistMultiplicityTRK);
998 if(! fHistMultiplicityTRKNoTPCOnly) {
999 fHistMultiplicityTRKNoTPCOnly = new TH1F("fHistMultiplicityTRKNoTPCOnly",
1000 "Centrality Distribution: TRK;TRK Centrality;Events",
1002 fListHist->Add(fHistMultiplicityTRKNoTPCOnly);
1004 if(! fHistMultiplicityTRKNoTPCOnlyNoPileup) {
1005 fHistMultiplicityTRKNoTPCOnlyNoPileup = new TH1F("fHistMultiplicityTRKNoTPCOnlyNoPileup",
1006 "Centrality Distribution: TRK;TRK Centrality;Events",
1008 fListHist->Add(fHistMultiplicityTRKNoTPCOnlyNoPileup);
1011 //SPD Centrality (if PbPb / pPb)
1012 if(! fHistMultiplicitySPDBeforeTrigSel) {
1013 fHistMultiplicitySPDBeforeTrigSel = new TH1F("fHistMultiplicitySPDBeforeTrigSel",
1014 "Centrality Distribution: SPD;SPD Centrality;Events",
1016 fListHist->Add(fHistMultiplicitySPDBeforeTrigSel);
1018 if(! fHistMultiplicitySPDForTrigEvt) {
1019 fHistMultiplicitySPDForTrigEvt = new TH1F("fHistMultiplicitySPDForTrigEvt",
1020 "Centrality Distribution: SPD;SPD Centrality;Events",
1022 fListHist->Add(fHistMultiplicitySPDForTrigEvt);
1024 if(! fHistMultiplicitySPD) {
1025 fHistMultiplicitySPD = new TH1F("fHistMultiplicitySPD",
1026 "Centrality Distribution: SPD;SPD Centrality;Events",
1028 fListHist->Add(fHistMultiplicitySPD);
1030 if(! fHistMultiplicitySPDNoTPCOnly) {
1031 fHistMultiplicitySPDNoTPCOnly = new TH1F("fHistMultiplicitySPDNoTPCOnly",
1032 "Centrality Distribution: SPD;SPD Centrality;Events",
1034 fListHist->Add(fHistMultiplicitySPDNoTPCOnly);
1036 if(! fHistMultiplicitySPDNoTPCOnlyNoPileup) {
1037 fHistMultiplicitySPDNoTPCOnlyNoPileup = new TH1F("fHistMultiplicitySPDNoTPCOnlyNoPileup",
1038 "Centrality Distribution: SPD;SPD Centrality;Events",
1040 fListHist->Add(fHistMultiplicitySPDNoTPCOnlyNoPileup);
1046 //------------------------------------------------
1047 // Generated Particle Histograms
1048 //------------------------------------------------
1050 Int_t lCustomNBins = 200;
1051 Double_t lCustomPtUpperLimit = 20;
1052 Int_t lCustomNBinsMultiplicity = 100;
1054 //----------------------------------
1055 // Raw Generated (Pre-physics-selection)
1056 //----------------------------------
1058 //--------------------------------------------------------------------------------------
1059 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1061 if(! f3dHistGenPtVsYVsMultXiMinus) {
1062 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);
1063 fListHist->Add(f3dHistGenPtVsYVsMultXiMinus);
1065 if(! f3dHistGenPtVsYVsMultXiPlus) {
1066 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);
1067 fListHist->Add(f3dHistGenPtVsYVsMultXiPlus);
1069 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1071 if(! f3dHistGenPtVsYVsMultOmegaMinus) {
1072 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);
1073 fListHist->Add(f3dHistGenPtVsYVsMultOmegaMinus);
1075 if(! f3dHistGenPtVsYVsMultOmegaPlus) {
1076 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);
1077 fListHist->Add(f3dHistGenPtVsYVsMultOmegaPlus);
1080 //All generated cascades, YCMS
1082 if(! f3dHistGenPtVsYCMSVsMultXiMinus) {
1083 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);
1084 fListHist->Add(f3dHistGenPtVsYCMSVsMultXiMinus);
1086 if(! f3dHistGenPtVsYCMSVsMultXiPlus) {
1087 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);
1088 fListHist->Add(f3dHistGenPtVsYCMSVsMultXiPlus);
1090 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1092 if(! f3dHistGenPtVsYCMSVsMultOmegaMinus) {
1093 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);
1094 fListHist->Add(f3dHistGenPtVsYCMSVsMultOmegaMinus);
1096 if(! f3dHistGenPtVsYCMSVsMultOmegaPlus) {
1097 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);
1098 fListHist->Add(f3dHistGenPtVsYCMSVsMultOmegaPlus);
1102 //--------------------------------------------------------------------------------------
1103 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1105 if(! f3dHistGenSelectedPtVsYVsMultXiMinus) {
1106 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);
1107 fListHist->Add(f3dHistGenSelectedPtVsYVsMultXiMinus);
1109 if(! f3dHistGenSelectedPtVsYVsMultXiPlus) {
1110 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);
1111 fListHist->Add(f3dHistGenSelectedPtVsYVsMultXiPlus);
1113 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1115 if(! f3dHistGenSelectedPtVsYVsMultOmegaMinus) {
1116 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);
1117 fListHist->Add(f3dHistGenSelectedPtVsYVsMultOmegaMinus);
1119 if(! f3dHistGenSelectedPtVsYVsMultOmegaPlus) {
1120 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);
1121 fListHist->Add(f3dHistGenSelectedPtVsYVsMultOmegaPlus);
1124 //ANALYSIS level Cascades, YCMS
1127 if(! f3dHistGenSelectedPtVsYCMSVsMultXiMinus) {
1128 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);
1129 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultXiMinus);
1131 if(! f3dHistGenSelectedPtVsYCMSVsMultXiPlus) {
1132 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);
1133 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultXiPlus);
1135 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1137 if(! f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus) {
1138 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);
1139 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus);
1141 if(! f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus) {
1142 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);
1143 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus);
1146 //======================================================================================
1147 //--------------------------------------------------------------------------------------
1148 // True Generated (For Multiplicity Unfolding)
1149 //--------------------------------------------------------------------------------------
1150 //======================================================================================
1152 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1154 if(! f3dHistGenPtVsYVsMultMCXiMinus) {
1155 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);
1156 fListHist->Add(f3dHistGenPtVsYVsMultMCXiMinus);
1158 if(! f3dHistGenPtVsYVsMultMCXiPlus) {
1159 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);
1160 fListHist->Add(f3dHistGenPtVsYVsMultMCXiPlus);
1162 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1164 if(! f3dHistGenPtVsYVsMultMCOmegaMinus) {
1165 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);
1166 fListHist->Add(f3dHistGenPtVsYVsMultMCOmegaMinus);
1168 if(! f3dHistGenPtVsYVsMultMCOmegaPlus) {
1169 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);
1170 fListHist->Add(f3dHistGenPtVsYVsMultMCOmegaPlus);
1173 //All generated cascades, YCMS
1175 if(! f3dHistGenPtVsYCMSVsMultMCXiMinus) {
1176 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);
1177 fListHist->Add(f3dHistGenPtVsYCMSVsMultMCXiMinus);
1179 if(! f3dHistGenPtVsYCMSVsMultMCXiPlus) {
1180 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);
1181 fListHist->Add(f3dHistGenPtVsYCMSVsMultMCXiPlus);
1183 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1185 if(! f3dHistGenPtVsYCMSVsMultMCOmegaMinus) {
1186 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);
1187 fListHist->Add(f3dHistGenPtVsYCMSVsMultMCOmegaMinus);
1189 if(! f3dHistGenPtVsYCMSVsMultMCOmegaPlus) {
1190 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);
1191 fListHist->Add(f3dHistGenPtVsYCMSVsMultMCOmegaPlus);
1195 //--------------------------------------------------------------------------------------
1196 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1198 if(! f3dHistGenSelectedPtVsYVsMultMCXiMinus) {
1199 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);
1200 fListHist->Add(f3dHistGenSelectedPtVsYVsMultMCXiMinus);
1202 if(! f3dHistGenSelectedPtVsYVsMultMCXiPlus) {
1203 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);
1204 fListHist->Add(f3dHistGenSelectedPtVsYVsMultMCXiPlus);
1206 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1208 if(! f3dHistGenSelectedPtVsYVsMultMCOmegaMinus) {
1209 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);
1210 fListHist->Add(f3dHistGenSelectedPtVsYVsMultMCOmegaMinus);
1212 if(! f3dHistGenSelectedPtVsYVsMultMCOmegaPlus) {
1213 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);
1214 fListHist->Add(f3dHistGenSelectedPtVsYVsMultMCOmegaPlus);
1217 //ANALYSIS level Cascades, YCMS
1220 if(! f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus) {
1221 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);
1222 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus);
1224 if(! f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus) {
1225 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);
1226 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus);
1228 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1230 if(! f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus) {
1231 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);
1232 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus);
1234 if(! f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus) {
1235 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);
1236 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus);
1239 //======================================================================================
1240 //--------------------------------------------------------------------------------------
1242 //--------------------------------------------------------------------------------------
1243 //======================================================================================
1245 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1247 if(! f3dHistGenPtVsYVsMultV0AXiMinus) {
1248 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);
1249 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultV0AXiMinus);
1251 if(! f3dHistGenPtVsYVsMultV0AXiPlus) {
1252 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);
1253 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultV0AXiPlus);
1255 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1257 if(! f3dHistGenPtVsYVsMultV0AOmegaMinus) {
1258 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);
1259 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultV0AOmegaMinus);
1261 if(! f3dHistGenPtVsYVsMultV0AOmegaPlus) {
1262 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);
1263 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultV0AOmegaPlus);
1266 //All generated cascades, YCMS
1268 if(! f3dHistGenPtVsYCMSVsMultV0AXiMinus) {
1269 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);
1270 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultV0AXiMinus);
1272 if(! f3dHistGenPtVsYCMSVsMultV0AXiPlus) {
1273 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);
1274 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultV0AXiPlus);
1276 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1278 if(! f3dHistGenPtVsYCMSVsMultV0AOmegaMinus) {
1279 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);
1280 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultV0AOmegaMinus);
1282 if(! f3dHistGenPtVsYCMSVsMultV0AOmegaPlus) {
1283 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);
1284 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultV0AOmegaPlus);
1288 //--------------------------------------------------------------------------------------
1289 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1291 if(! f3dHistGenSelectedPtVsYVsMultV0AXiMinus) {
1292 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);
1293 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultV0AXiMinus);
1295 if(! f3dHistGenSelectedPtVsYVsMultV0AXiPlus) {
1296 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);
1297 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultV0AXiPlus);
1299 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1301 if(! f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus) {
1302 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);
1303 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus);
1305 if(! f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus) {
1306 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);
1307 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus);
1310 //ANALYSIS level Cascades, YCMS
1313 if(! f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus) {
1314 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);
1315 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus);
1317 if(! f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus) {
1318 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);
1319 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus);
1321 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1323 if(! f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus) {
1324 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);
1325 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus);
1327 if(! f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus) {
1328 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);
1329 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus);
1332 //Cross-check primary selection criteria
1333 //Should not impact much but inspired by rumors of DPMJet issues with primary selection (?)
1335 if(! f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiMinus) {
1336 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);
1337 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiMinus);
1339 if(! f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiPlus) {
1340 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);
1341 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiPlus);
1343 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1345 if(! f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaMinus) {
1346 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);
1347 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaMinus);
1349 if(! f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaPlus) {
1350 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);
1351 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaPlus);
1354 //======================================================================================
1355 //--------------------------------------------------------------------------------------
1357 //--------------------------------------------------------------------------------------
1358 //======================================================================================
1360 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1362 if(! f3dHistGenPtVsYVsMultZNAXiMinus) {
1363 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);
1364 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultZNAXiMinus);
1366 if(! f3dHistGenPtVsYVsMultZNAXiPlus) {
1367 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);
1368 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultZNAXiPlus);
1370 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1372 if(! f3dHistGenPtVsYVsMultZNAOmegaMinus) {
1373 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);
1374 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultZNAOmegaMinus);
1376 if(! f3dHistGenPtVsYVsMultZNAOmegaPlus) {
1377 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);
1378 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultZNAOmegaPlus);
1381 //All generated cascades, YCMS
1383 if(! f3dHistGenPtVsYCMSVsMultZNAXiMinus) {
1384 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);
1385 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultZNAXiMinus);
1387 if(! f3dHistGenPtVsYCMSVsMultZNAXiPlus) {
1388 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);
1389 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultZNAXiPlus);
1391 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1393 if(! f3dHistGenPtVsYCMSVsMultZNAOmegaMinus) {
1394 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);
1395 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultZNAOmegaMinus);
1397 if(! f3dHistGenPtVsYCMSVsMultZNAOmegaPlus) {
1398 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);
1399 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultZNAOmegaPlus);
1403 //--------------------------------------------------------------------------------------
1404 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1406 if(! f3dHistGenSelectedPtVsYVsMultZNAXiMinus) {
1407 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);
1408 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultZNAXiMinus);
1410 if(! f3dHistGenSelectedPtVsYVsMultZNAXiPlus) {
1411 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);
1412 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultZNAXiPlus);
1414 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1416 if(! f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus) {
1417 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);
1418 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus);
1420 if(! f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus) {
1421 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);
1422 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus);
1425 //ANALYSIS level Cascades, YCMS
1428 if(! f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus) {
1429 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);
1430 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus);
1432 if(! f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus) {
1433 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);
1434 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus);
1436 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1438 if(! f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus) {
1439 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);
1440 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus);
1442 if(! f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus) {
1443 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);
1444 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus);
1448 //======================================================================================
1449 //--------------------------------------------------------------------------------------
1451 //--------------------------------------------------------------------------------------
1452 //======================================================================================
1454 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1456 if(! f3dHistGenPtVsYVsMultTRKXiMinus) {
1457 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);
1458 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultTRKXiMinus);
1460 if(! f3dHistGenPtVsYVsMultTRKXiPlus) {
1461 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);
1462 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultTRKXiPlus);
1464 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1466 if(! f3dHistGenPtVsYVsMultTRKOmegaMinus) {
1467 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);
1468 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultTRKOmegaMinus);
1470 if(! f3dHistGenPtVsYVsMultTRKOmegaPlus) {
1471 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);
1472 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultTRKOmegaPlus);
1475 //All generated cascades, YCMS
1477 if(! f3dHistGenPtVsYCMSVsMultTRKXiMinus) {
1478 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);
1479 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultTRKXiMinus);
1481 if(! f3dHistGenPtVsYCMSVsMultTRKXiPlus) {
1482 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);
1483 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultTRKXiPlus);
1485 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1487 if(! f3dHistGenPtVsYCMSVsMultTRKOmegaMinus) {
1488 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);
1489 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultTRKOmegaMinus);
1491 if(! f3dHistGenPtVsYCMSVsMultTRKOmegaPlus) {
1492 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);
1493 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultTRKOmegaPlus);
1497 //--------------------------------------------------------------------------------------
1498 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1500 if(! f3dHistGenSelectedPtVsYVsMultTRKXiMinus) {
1501 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);
1502 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultTRKXiMinus);
1504 if(! f3dHistGenSelectedPtVsYVsMultTRKXiPlus) {
1505 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);
1506 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultTRKXiPlus);
1508 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1510 if(! f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus) {
1511 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);
1512 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus);
1514 if(! f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus) {
1515 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);
1516 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus);
1519 //ANALYSIS level Cascades, YCMS
1522 if(! f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus) {
1523 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);
1524 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus);
1526 if(! f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus) {
1527 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);
1528 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus);
1530 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1532 if(! f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus) {
1533 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);
1534 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus);
1536 if(! f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus) {
1537 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);
1538 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus);
1541 //======================================================================================
1542 //--------------------------------------------------------------------------------------
1544 //--------------------------------------------------------------------------------------
1545 //======================================================================================
1547 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1549 if(! f3dHistGenPtVsYVsMultSPDXiMinus) {
1550 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);
1551 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultSPDXiMinus);
1553 if(! f3dHistGenPtVsYVsMultSPDXiPlus) {
1554 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);
1555 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultSPDXiPlus);
1557 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1559 if(! f3dHistGenPtVsYVsMultSPDOmegaMinus) {
1560 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);
1561 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultSPDOmegaMinus);
1563 if(! f3dHistGenPtVsYVsMultSPDOmegaPlus) {
1564 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);
1565 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultSPDOmegaPlus);
1568 //All generated cascades, YCMS
1570 if(! f3dHistGenPtVsYCMSVsMultSPDXiMinus) {
1571 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);
1572 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultSPDXiMinus);
1574 if(! f3dHistGenPtVsYCMSVsMultSPDXiPlus) {
1575 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);
1576 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultSPDXiPlus);
1578 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1580 if(! f3dHistGenPtVsYCMSVsMultSPDOmegaMinus) {
1581 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);
1582 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultSPDOmegaMinus);
1584 if(! f3dHistGenPtVsYCMSVsMultSPDOmegaPlus) {
1585 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);
1586 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultSPDOmegaPlus);
1590 //--------------------------------------------------------------------------------------
1591 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1593 if(! f3dHistGenSelectedPtVsYVsMultSPDXiMinus) {
1594 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);
1595 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultSPDXiMinus);
1597 if(! f3dHistGenSelectedPtVsYVsMultSPDXiPlus) {
1598 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);
1599 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultSPDXiPlus);
1601 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1603 if(! f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus) {
1604 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);
1605 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus);
1607 if(! f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus) {
1608 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);
1609 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus);
1612 //ANALYSIS level Cascades, YCMS
1615 if(! f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus) {
1616 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);
1617 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus);
1619 if(! f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus) {
1620 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);
1621 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus);
1623 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1625 if(! f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus) {
1626 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);
1627 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus);
1629 if(! f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus) {
1630 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);
1631 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus);
1634 //----------------------------------
1635 // Primary Vertex Position Histos
1636 //----------------------------------
1639 fHistPVx = new TH1F("fHistPVx",
1640 "PV x position;Nbr of Evts;x",
1642 fListHist->Add(fHistPVx);
1645 fHistPVy = new TH1F("fHistPVy",
1646 "PV y position;Nbr of Evts;y",
1648 fListHist->Add(fHistPVy);
1651 fHistPVz = new TH1F("fHistPVz",
1652 "PV z position;Nbr of Evts;z",
1654 fListHist->Add(fHistPVz);
1657 if(! fHistPVxAnalysis) {
1658 fHistPVxAnalysis = new TH1F("fHistPVxAnalysis",
1659 "PV x position;Nbr of Evts;x",
1661 fListHist->Add(fHistPVxAnalysis);
1663 if(! fHistPVyAnalysis) {
1664 fHistPVyAnalysis = new TH1F("fHistPVyAnalysis",
1665 "PV y position;Nbr of Evts;y",
1667 fListHist->Add(fHistPVyAnalysis);
1669 if(! fHistPVzAnalysis) {
1670 fHistPVzAnalysis = new TH1F("fHistPVzAnalysis",
1671 "PV z position;Nbr of Evts;z",
1673 fListHist->Add(fHistPVzAnalysis);
1676 //List of Histograms: Normal
1677 PostData(1, fListHist);
1679 //TTree Object: Saved to base directory. Should cache to disk while saving.
1680 //(Important to avoid excessive memory usage, particularly when merging)
1681 PostData(2, fTreeCascade);
1683 }// end UserCreateOutputObjects
1686 //________________________________________________________________________
1687 void AliAnalysisTaskExtractPerformanceCascade::UserExec(Option_t *)
1690 // Called for each event
1692 AliESDEvent *lESDevent = 0x0;
1693 AliMCEvent *lMCevent = 0x0;
1694 AliStack *lMCstack = 0x0;
1696 Int_t lNumberOfV0s = -1;
1697 Double_t lTrkgPrimaryVtxPos[3] = {-100.0, -100.0, -100.0};
1698 Double_t lBestPrimaryVtxPos[3] = {-100.0, -100.0, -100.0};
1699 Double_t lMagneticField = -10.;
1701 // Connect to the InputEvent
1702 // After these lines, we should have an ESD/AOD event + the number of V0s in it.
1704 // Appropriate for ESD analysis!
1706 lESDevent = dynamic_cast<AliESDEvent*>( InputEvent() );
1708 AliWarning("ERROR: lESDevent not available \n");
1712 /* --- Acquisition of exact event ID
1713 fTreeVariableRunNumber = lESDevent->GetRunNumber();
1714 fTreeVariableEventNumber =
1715 ( ( ((ULong64_t)lESDevent->GetPeriodNumber() ) << 36 ) |
1716 ( ((ULong64_t)lESDevent->GetOrbitNumber () ) << 12 ) |
1717 ((ULong64_t)lESDevent->GetBunchCrossNumber() ) );
1719 lMCevent = MCEvent();
1721 Printf("ERROR: Could not retrieve MC event \n");
1722 cout << "Name of the file with pb :" << fInputHandler->GetTree()->GetCurrentFile()->GetName() << endl;
1726 lMCstack = lMCevent->Stack();
1728 Printf("ERROR: Could not retrieve MC stack \n");
1729 cout << "Name of the file with pb :" << fInputHandler->GetTree()->GetCurrentFile()->GetName() << endl;
1732 TArrayF mcPrimaryVtx;
1733 AliGenEventHeader* mcHeader=lMCevent->GenEventHeader();
1734 if(!mcHeader) return;
1735 mcHeader->PrimaryVertex(mcPrimaryVtx);
1737 //------------------------------------------------
1738 // Multiplicity Information Acquistion
1739 //------------------------------------------------
1741 //REVISED multiplicity estimator after 'multiplicity day' (2011)
1742 Int_t lMultiplicity = -100;
1743 Int_t lMultiplicityV0A = -100;
1744 Int_t lMultiplicityZNA = -100;
1745 Int_t lMultiplicityTRK = -100;
1746 Int_t lMultiplicitySPD = -100;
1749 if(fkIsNuclear == kFALSE) lMultiplicity = fESDtrackCuts->GetReferenceMultiplicity(lESDevent, AliESDtrackCuts::kTrackletsITSTPC, fEtaRefMult );
1751 //--------- GENERATED NUMBER OF CHARGED PARTICLES
1752 // ---> Set Variables to Zero again
1753 // ---> Variable Definition
1755 Long_t lNumberOfCharged = 0;
1757 //----- Loop on Stack ----------------------------------------------------------------
1758 for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < (lMCstack->GetNtrack()); iCurrentLabelStack++)
1759 {// This is the begining of the loop on tracks
1760 TParticle* particleOne = lMCstack->Particle(iCurrentLabelStack);
1761 if(!particleOne) continue;
1762 if(!particleOne->GetPDG()) continue;
1763 Double_t lThisCharge = particleOne->GetPDG()->Charge()/3.;
1764 if(TMath::Abs(lThisCharge)<0.001) continue;
1765 if(! (lMCstack->IsPhysicalPrimary(iCurrentLabelStack)) ) continue;
1767 //Double_t gpt = particleOne -> Pt();
1768 Double_t geta = particleOne -> Eta();
1770 if( TMath::Abs(geta) < 0.5) lNumberOfCharged++;
1771 }//End of loop on tracks
1772 //----- End Loop on Stack ------------------------------------------------------------
1775 //---> If this is a nuclear collision, then go nuclear on "multiplicity" variable...
1776 //---> Warning: Experimental
1777 if(fkIsNuclear == kTRUE){
1778 AliCentrality* centrality;
1779 centrality = lESDevent->GetCentrality();
1780 lMultiplicity = ( ( Int_t ) ( centrality->GetCentralityPercentile( fCentralityEstimator.Data() ) ) );
1781 lMultiplicityV0A = ( ( Int_t ) ( centrality->GetCentralityPercentile( "V0A" ) ) );
1782 lMultiplicityZNA = ( ( Int_t ) ( centrality->GetCentralityPercentile( "ZNA" ) ) );
1783 lMultiplicityTRK = ( ( Int_t ) ( centrality->GetCentralityPercentile( "TRK" ) ) );
1784 lMultiplicitySPD = ( ( Int_t ) ( centrality->GetCentralityPercentile( "CL1" ) ) );
1785 if (centrality->GetQuality()>1) {
1786 PostData(1, fListHist);
1787 PostData(2, fTreeCascade);
1792 if( fkSelectCentrality ){
1793 if( lMultiplicity < fCentSel_Low || lMultiplicity >= fCentSel_High ){
1794 //Event is outside desired centrality centrality in V0M!
1795 PostData(1, fListHist);
1796 PostData(2, fTreeCascade);
1802 //Set variable for filling tree afterwards!
1803 //---> pp case......: GetReferenceMultiplicity
1804 //---> Pb-Pb case...: Centrality by V0M
1806 fTreeCascVarMultiplicity = lMultiplicity;
1807 fTreeCascVarMultiplicityMC = lNumberOfCharged;
1808 fTreeCascVarMultiplicityV0A = lMultiplicityV0A;
1809 fTreeCascVarMultiplicityZNA = lMultiplicityZNA;
1810 fTreeCascVarMultiplicityTRK = lMultiplicityTRK;
1811 fTreeCascVarMultiplicitySPD = lMultiplicitySPD;
1813 fHistV0MultiplicityBeforeTrigSel->Fill ( lESDevent->GetNumberOfV0s() );
1814 fHistMultiplicityBeforeTrigSel->Fill ( lMultiplicity );
1815 fHistMultiplicityV0ABeforeTrigSel->Fill ( lMultiplicityV0A );
1816 fHistMultiplicityZNABeforeTrigSel->Fill ( lMultiplicityZNA );
1817 fHistMultiplicityTRKBeforeTrigSel->Fill ( lMultiplicityTRK );
1818 fHistMultiplicitySPDBeforeTrigSel->Fill ( lMultiplicitySPD );
1820 //------------------------------------------------
1821 // MC Information Acquistion
1822 //------------------------------------------------
1824 Int_t iNumberOfPrimaries = -1;
1825 iNumberOfPrimaries = lMCstack->GetNprimary();
1826 if(iNumberOfPrimaries < 1) return;
1828 //------------------------------------------------
1829 // Variable Definition
1830 //------------------------------------------------
1832 Int_t lNbMCPrimary = 0;
1834 Double_t lPtCurrentPart = 0;
1836 //Int_t lComeFromSigma = 0;
1838 // current mc particle 's mother
1839 //Int_t iCurrentMother = 0;
1840 lNbMCPrimary = lMCstack->GetNprimary();
1842 //------------------------------------------------
1843 // Pre-Physics Selection
1844 //------------------------------------------------
1847 fTreeCascVarEvHasXiMinus = kFALSE;
1848 fTreeCascVarEvHasXiPlus = kFALSE;
1849 fTreeCascVarEvHasOmegaMinus = kFALSE;
1850 fTreeCascVarEvHasOmegaPlus = kFALSE;
1851 fTreeCascVarEvHasLambda = kFALSE;
1852 fTreeCascVarEvHasAntiLambda = kFALSE;
1854 fTreeCascVarEvHasLowPtXiMinus = kFALSE;
1855 fTreeCascVarEvHasLowPtXiPlus = kFALSE;
1856 fTreeCascVarEvHasLowPtOmegaMinus = kFALSE;
1857 fTreeCascVarEvHasLowPtOmegaPlus = kFALSE;
1858 fTreeCascVarEvHasLowPtLambda = kFALSE;
1859 fTreeCascVarEvHasLowPtAntiLambda = kFALSE;
1861 fTreeCascVarEvHasVeryLowPtXiMinus = kFALSE;
1862 fTreeCascVarEvHasVeryLowPtXiPlus = kFALSE;
1863 fTreeCascVarEvHasVeryLowPtOmegaMinus = kFALSE;
1864 fTreeCascVarEvHasVeryLowPtOmegaPlus = kFALSE;
1865 fTreeCascVarEvHasVeryLowPtLambda = kFALSE;
1866 fTreeCascVarEvHasVeryLowPtAntiLambda = kFALSE;
1869 //----- Loop on primary Xi, Omega --------------------------------------------------------------
1870 for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < lNbMCPrimary; iCurrentLabelStack++)
1871 {// This is the begining of the loop on primaries
1873 TParticle* lCurrentParticlePrimary = 0x0;
1874 lCurrentParticlePrimary = lMCstack->Particle( iCurrentLabelStack );
1875 if(!lCurrentParticlePrimary){
1876 Printf("Cascade loop %d - MC TParticle pointer to current stack particle = 0x0 ! Skip ...\n", iCurrentLabelStack );
1880 //Event Type Acquisition
1881 if(lCurrentParticlePrimary->GetPdgCode() == 3312){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) ) fTreeCascVarEvHasXiMinus = kTRUE; }
1882 if(lCurrentParticlePrimary->GetPdgCode() ==-3312){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) ) fTreeCascVarEvHasXiPlus = kTRUE; }
1883 if(lCurrentParticlePrimary->GetPdgCode() == 3334){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) ) fTreeCascVarEvHasOmegaMinus = kTRUE; }
1884 if(lCurrentParticlePrimary->GetPdgCode() ==-3334){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) ) fTreeCascVarEvHasOmegaPlus = kTRUE; }
1885 if(lCurrentParticlePrimary->GetPdgCode() == 3122){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) ) fTreeCascVarEvHasLambda = kTRUE; }
1886 if(lCurrentParticlePrimary->GetPdgCode() ==-3122){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) ) fTreeCascVarEvHasAntiLambda = kTRUE; }
1888 if(lCurrentParticlePrimary->GetPdgCode() == 3312){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<2.0) fTreeCascVarEvHasLowPtXiMinus = kTRUE; }
1889 if(lCurrentParticlePrimary->GetPdgCode() ==-3312){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<2.0) fTreeCascVarEvHasLowPtXiPlus = kTRUE; }
1890 if(lCurrentParticlePrimary->GetPdgCode() == 3334){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<2.0) fTreeCascVarEvHasLowPtOmegaMinus = kTRUE; }
1891 if(lCurrentParticlePrimary->GetPdgCode() ==-3334){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<2.0) fTreeCascVarEvHasLowPtOmegaPlus = kTRUE; }
1892 if(lCurrentParticlePrimary->GetPdgCode() == 3122){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<2.0) fTreeCascVarEvHasLowPtLambda = kTRUE; }
1893 if(lCurrentParticlePrimary->GetPdgCode() ==-3122){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<2.0) fTreeCascVarEvHasLowPtAntiLambda = kTRUE; }
1895 if(lCurrentParticlePrimary->GetPdgCode() == 3312){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<1.2) fTreeCascVarEvHasVeryLowPtXiMinus = kTRUE; }
1896 if(lCurrentParticlePrimary->GetPdgCode() ==-3312){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<1.2) fTreeCascVarEvHasVeryLowPtXiPlus = kTRUE; }
1897 if(lCurrentParticlePrimary->GetPdgCode() == 3334){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<1.2) fTreeCascVarEvHasVeryLowPtOmegaMinus = kTRUE; }
1898 if(lCurrentParticlePrimary->GetPdgCode() ==-3334){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<1.2) fTreeCascVarEvHasVeryLowPtOmegaPlus = kTRUE; }
1899 if(lCurrentParticlePrimary->GetPdgCode() == 3122){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<1.2) fTreeCascVarEvHasVeryLowPtLambda = kTRUE; }
1900 if(lCurrentParticlePrimary->GetPdgCode() ==-3122){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<1.2) fTreeCascVarEvHasVeryLowPtAntiLambda = kTRUE; }
1902 if ( TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3312 || TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3334 ) {
1903 Double_t lRapXiMCPrimary = -100;
1904 if( (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) != 0 ) {
1905 if ( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) !=0 ){
1906 lRapXiMCPrimary = 0.5*TMath::Log( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) );
1910 //=================================================================================
1912 if( lCurrentParticlePrimary->GetPdgCode() == 3312 ){
1913 lPtCurrentPart = lCurrentParticlePrimary->Pt();
1914 f3dHistGenPtVsYVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
1915 f3dHistGenPtVsYCMSVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
1917 f3dHistGenPtVsYVsMultMCXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
1918 f3dHistGenPtVsYCMSVsMultMCXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
1920 f3dHistGenPtVsYVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
1921 f3dHistGenPtVsYCMSVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
1923 f3dHistGenPtVsYVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
1924 f3dHistGenPtVsYCMSVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
1926 f3dHistGenPtVsYVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
1927 f3dHistGenPtVsYCMSVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
1929 f3dHistGenPtVsYVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
1930 f3dHistGenPtVsYCMSVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
1932 if( lCurrentParticlePrimary->GetPdgCode() == -3312 ){
1933 lPtCurrentPart = lCurrentParticlePrimary->Pt();
1934 f3dHistGenPtVsYVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
1935 f3dHistGenPtVsYCMSVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
1937 f3dHistGenPtVsYVsMultMCXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
1938 f3dHistGenPtVsYCMSVsMultMCXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
1940 f3dHistGenPtVsYVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
1941 f3dHistGenPtVsYCMSVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
1943 f3dHistGenPtVsYVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
1944 f3dHistGenPtVsYCMSVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
1946 f3dHistGenPtVsYVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
1947 f3dHistGenPtVsYCMSVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
1949 f3dHistGenPtVsYVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
1950 f3dHistGenPtVsYCMSVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
1953 if( lCurrentParticlePrimary->GetPdgCode() == 3334 ){
1954 lPtCurrentPart = lCurrentParticlePrimary->Pt();
1955 f3dHistGenPtVsYVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
1956 f3dHistGenPtVsYCMSVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
1958 f3dHistGenPtVsYVsMultMCOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
1959 f3dHistGenPtVsYCMSVsMultMCOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
1961 f3dHistGenPtVsYVsMultV0AOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
1962 f3dHistGenPtVsYCMSVsMultV0AOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
1964 f3dHistGenPtVsYVsMultZNAOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
1965 f3dHistGenPtVsYCMSVsMultZNAOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
1967 f3dHistGenPtVsYVsMultTRKOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
1968 f3dHistGenPtVsYCMSVsMultTRKOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
1970 f3dHistGenPtVsYVsMultSPDOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
1971 f3dHistGenPtVsYCMSVsMultSPDOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
1973 if( lCurrentParticlePrimary->GetPdgCode() == -3334 ){
1974 lPtCurrentPart = lCurrentParticlePrimary->Pt();
1975 f3dHistGenPtVsYVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
1976 f3dHistGenPtVsYCMSVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
1978 f3dHistGenPtVsYVsMultMCOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
1979 f3dHistGenPtVsYCMSVsMultMCOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
1981 f3dHistGenPtVsYVsMultV0AOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
1982 f3dHistGenPtVsYCMSVsMultV0AOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
1984 f3dHistGenPtVsYVsMultZNAOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
1985 f3dHistGenPtVsYCMSVsMultZNAOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
1987 f3dHistGenPtVsYVsMultTRKOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
1988 f3dHistGenPtVsYCMSVsMultTRKOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
1990 f3dHistGenPtVsYVsMultSPDOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
1991 f3dHistGenPtVsYCMSVsMultSPDOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
1995 //----- End Loop on primary Xi, Omega ----------------------------------------------------------
1997 // ---> Set Variables to Zero again
1998 // ---> Variable Definition
2002 //------------------------------------------------
2003 // Physics Selection
2004 //------------------------------------------------
2006 UInt_t maskIsSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
2007 Bool_t isSelected = 0;
2008 isSelected = (maskIsSelected & AliVEvent::kMB) == AliVEvent::kMB;
2010 //pA triggering: CINT7
2011 if( fkSwitchINT7 ) isSelected = (maskIsSelected & AliVEvent::kINT7) == AliVEvent::kINT7;
2013 //Standard Min-Bias Selection
2014 if ( ! isSelected ) {
2015 PostData(1, fListHist);
2016 PostData(2, fTreeCascade);
2020 //------------------------------------------------
2021 // Rerun cascade vertexer!
2022 //------------------------------------------------
2024 if( fkRunVertexers ){
2025 lESDevent->ResetCascades();
2026 lESDevent->ResetV0s();
2028 AliV0vertexer lV0vtxer;
2029 AliCascadeVertexer lCascVtxer;
2031 lV0vtxer.SetDefaultCuts(fV0VertexerSels);
2032 lCascVtxer.SetDefaultCuts(fCascadeVertexerSels);
2034 lV0vtxer.Tracks2V0vertices(lESDevent);
2035 lCascVtxer.V0sTracks2CascadeVertices(lESDevent);
2037 //------------------------------------------------
2038 // After Trigger Selection
2039 //------------------------------------------------
2041 lNumberOfV0s = lESDevent->GetNumberOfV0s();
2043 //Set variable for filling tree afterwards!
2044 fHistV0MultiplicityForTrigEvt->Fill(lNumberOfV0s);
2045 fHistMultiplicityForTrigEvt->Fill ( lMultiplicity );
2046 fHistMultiplicityV0AForTrigEvt ->Fill( lMultiplicityV0A );
2047 fHistMultiplicityZNAForTrigEvt ->Fill( lMultiplicityZNA );
2048 fHistMultiplicityTRKForTrigEvt ->Fill( lMultiplicityTRK );
2049 fHistMultiplicitySPDForTrigEvt ->Fill( lMultiplicitySPD );
2051 //------------------------------------------------
2052 // Getting: Primary Vertex + MagField Info
2053 //------------------------------------------------
2055 const AliESDVertex *lPrimaryTrackingESDVtx = lESDevent->GetPrimaryVertexTracks();
2056 // get the vtx stored in ESD found with tracks
2057 lPrimaryTrackingESDVtx->GetXYZ( lTrkgPrimaryVtxPos );
2059 const AliESDVertex *lPrimaryBestESDVtx = lESDevent->GetPrimaryVertex();
2060 // get the best primary vertex available for the event
2061 // As done in AliCascadeVertexer, we keep the one which is the best one available.
2062 // between : Tracking vertex > SPD vertex > TPC vertex > default SPD vertex
2063 // This one will be used for next calculations (DCA essentially)
2064 lPrimaryBestESDVtx->GetXYZ( lBestPrimaryVtxPos );
2066 Double_t lPrimaryVtxPosition[3];
2067 const AliVVertex *primaryVtx = lESDevent->GetPrimaryVertex();
2068 lPrimaryVtxPosition[0] = primaryVtx->GetX();
2069 lPrimaryVtxPosition[1] = primaryVtx->GetY();
2070 lPrimaryVtxPosition[2] = primaryVtx->GetZ();
2071 fHistPVx->Fill( lPrimaryVtxPosition[0] );
2072 fHistPVy->Fill( lPrimaryVtxPosition[1] );
2073 fHistPVz->Fill( lPrimaryVtxPosition[2] );
2075 //------------------------------------------------
2076 // Primary Vertex Requirements Section:
2077 // ---> pp and PbPb: Only requires |z|<10cm
2078 // ---> pPb: all requirements checked at this stage
2079 //------------------------------------------------
2081 //Roberto's PV selection criteria, implemented 17th April 2013
2083 /* vertex selection */
2084 Bool_t fHasVertex = kFALSE;
2086 const AliESDVertex *vertex = lESDevent->GetPrimaryVertexTracks();
2087 if (vertex->GetNContributors() < 1) {
2088 vertex = lESDevent->GetPrimaryVertexSPD();
2089 if (vertex->GetNContributors() < 1) fHasVertex = kFALSE;
2090 else fHasVertex = kTRUE;
2091 TString vtxTyp = vertex->GetTitle();
2092 Double_t cov[6]={0};
2093 vertex->GetCovarianceMatrix(cov);
2094 Double_t zRes = TMath::Sqrt(cov[5]);
2095 if (vtxTyp.Contains("vertexer:Z") && (zRes>0.25)) fHasVertex = kFALSE;
2097 else fHasVertex = kTRUE;
2099 //Is First event in chunk rejection: Still present!
2100 if(fkpAVertexSelection==kTRUE && fHasVertex == kFALSE) {
2101 AliWarning("Pb / | PV does not satisfy selection criteria!");
2102 PostData(1, fListHist);
2103 PostData(2, fTreeCascade);
2107 //Is First event in chunk rejection: Still present!
2108 if(fkpAVertexSelection==kTRUE && fUtils->IsFirstEventInChunk(lESDevent)) {
2109 AliWarning("Pb / | This is the first event in the chunk!");
2110 PostData(1, fListHist);
2111 PostData(2, fTreeCascade);
2115 //17 April Fix: Always do primary vertex Z selection, after pA vertex selection from Roberto
2116 if(TMath::Abs(lBestPrimaryVtxPos[2]) > 10.0) {
2117 AliWarning("Pb / | Z position of Best Prim Vtx | > 10.0 cm ... return !");
2118 PostData(1, fListHist);
2119 PostData(2, fTreeCascade);
2123 lMagneticField = lESDevent->GetMagneticField( );
2124 fHistV0MultiplicityForSelEvt ->Fill( lNumberOfV0s );
2125 fHistMultiplicity->Fill(lMultiplicity);
2126 fHistMultiplicityV0A->Fill(lMultiplicityV0A);
2127 fHistMultiplicityZNA->Fill(lMultiplicityZNA);
2128 fHistMultiplicityTRK->Fill(lMultiplicityTRK);
2129 fHistMultiplicitySPD->Fill(lMultiplicitySPD);
2131 //------------------------------------------------
2132 // SKIP: Events with well-established PVtx
2133 //------------------------------------------------
2135 const AliESDVertex *lPrimaryTrackingESDVtxCheck = lESDevent->GetPrimaryVertexTracks();
2136 const AliESDVertex *lPrimarySPDVtx = lESDevent->GetPrimaryVertexSPD();
2137 if (!lPrimarySPDVtx->GetStatus() && !lPrimaryTrackingESDVtxCheck->GetStatus() && fkpAVertexSelection==kFALSE ){
2138 AliWarning("Pb / No SPD prim. vertex nor prim. Tracking vertex ... return !");
2139 PostData(1, fListHist);
2140 PostData(2, fTreeCascade);
2143 fHistV0MultiplicityForSelEvtNoTPCOnly ->Fill( lNumberOfV0s );
2144 fHistMultiplicityNoTPCOnly->Fill(lMultiplicity);
2145 fHistMultiplicityV0ANoTPCOnly->Fill(lMultiplicityV0A);
2146 fHistMultiplicityZNANoTPCOnly->Fill(lMultiplicityZNA);
2147 fHistMultiplicityTRKNoTPCOnly->Fill(lMultiplicityTRK);
2148 fHistMultiplicitySPDNoTPCOnly->Fill(lMultiplicitySPD);
2150 //------------------------------------------------
2151 // Pileup Rejection Studies
2152 //------------------------------------------------
2154 // FIXME : quality selection regarding pile-up rejection
2155 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
2156 AliWarning("Pb / This is tagged as Pileup from SPD... return !");
2157 PostData(1, fListHist);
2158 PostData(2, fTreeCascade);
2161 fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup ->Fill( lNumberOfV0s );
2162 fHistMultiplicityNoTPCOnlyNoPileup->Fill(lMultiplicity);
2163 fHistMultiplicityV0ANoTPCOnlyNoPileup->Fill(lMultiplicityV0A);
2164 fHistMultiplicityZNANoTPCOnlyNoPileup->Fill(lMultiplicityZNA);
2165 fHistMultiplicityTRKNoTPCOnlyNoPileup->Fill(lMultiplicityTRK);
2166 fHistMultiplicitySPDNoTPCOnlyNoPileup->Fill(lMultiplicitySPD);
2168 //Do control histograms without the IsFromVertexerZ events, but consider them in analysis...
2169 if( ! (lESDevent->GetPrimaryVertex()->IsFromVertexerZ() ) ){
2170 fHistPVxAnalysis->Fill( lPrimaryVtxPosition[0] );
2171 fHistPVyAnalysis->Fill( lPrimaryVtxPosition[1] );
2172 fHistPVzAnalysis->Fill( lPrimaryVtxPosition[2] );
2175 //------------------------------------------------
2176 // stack loop starts here
2177 //------------------------------------------------
2179 //----- Loop on primary Xi, Omega --------------------------------------------------------------
2180 for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < lNbMCPrimary; iCurrentLabelStack++)
2181 {// This is the begining of the loop on primaries
2183 TParticle* lCurrentParticlePrimary = 0x0;
2184 lCurrentParticlePrimary = lMCstack->Particle( iCurrentLabelStack );
2185 if(!lCurrentParticlePrimary){
2186 Printf("Cascade loop %d - MC TParticle pointer to current stack particle = 0x0 ! Skip ...\n", iCurrentLabelStack );
2189 if ( TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3312 || TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3334 ) {
2190 Double_t lRapXiMCPrimary = -100;
2191 if( (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) != 0 ) {
2192 if ( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) !=0 ){
2193 lRapXiMCPrimary = 0.5*TMath::Log( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) );
2197 //=================================================================================
2199 if( lCurrentParticlePrimary->GetPdgCode() == 3312 ){
2200 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2201 f3dHistGenSelectedPtVsYVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
2202 f3dHistGenSelectedPtVsYCMSVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
2204 f3dHistGenSelectedPtVsYVsMultMCXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
2205 f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
2207 f3dHistGenSelectedPtVsYVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
2208 f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2210 f3dHistGenSelectedPtVsYVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
2211 f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
2213 f3dHistGenSelectedPtVsYVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
2214 f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
2216 f3dHistGenSelectedPtVsYVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
2217 f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
2219 if( lCurrentParticlePrimary->GetPdgCode() == -3312 ){
2220 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2221 f3dHistGenSelectedPtVsYVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
2222 f3dHistGenSelectedPtVsYCMSVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
2224 f3dHistGenSelectedPtVsYVsMultMCXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
2225 f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
2227 f3dHistGenSelectedPtVsYVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
2228 f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2230 f3dHistGenSelectedPtVsYVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
2231 f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
2233 f3dHistGenSelectedPtVsYVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
2234 f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
2236 f3dHistGenSelectedPtVsYVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
2237 f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
2240 if( lCurrentParticlePrimary->GetPdgCode() == 3334 ){
2241 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2242 f3dHistGenSelectedPtVsYVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
2243 f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
2245 f3dHistGenSelectedPtVsYVsMultMCOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
2246 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
2248 f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
2249 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2251 f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
2252 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
2254 f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
2255 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
2257 f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
2258 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
2260 if( lCurrentParticlePrimary->GetPdgCode() == -3334 ){
2261 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2262 f3dHistGenSelectedPtVsYVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
2263 f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
2265 f3dHistGenSelectedPtVsYVsMultMCOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
2266 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
2268 f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
2269 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2271 f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
2272 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
2274 f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
2275 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
2277 f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
2278 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
2282 //----- End Loop on primary Xi, Omega ----------------------------------------------------------
2285 //----- Loop on primary Xi, Omega --------------------------------------------------------------
2286 for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < (lMCstack->GetNtrack()); iCurrentLabelStack++)
2287 {// This is the begining of the loop on primaries
2289 TParticle* lCurrentParticlePrimary = 0x0;
2290 lCurrentParticlePrimary = lMCstack->Particle( iCurrentLabelStack );
2291 if(!lCurrentParticlePrimary){
2292 Printf("Cascade loop %d - MC TParticle pointer to current stack particle = 0x0 ! Skip ...\n", iCurrentLabelStack );
2295 if ( TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3312 || TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3334 ) {
2296 Double_t lRapXiMCPrimary = -100;
2297 if( (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) != 0 ) {
2298 if ( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) !=0 ){
2299 lRapXiMCPrimary = 0.5*TMath::Log( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) );
2302 //IsPhysicalPrimary: Cross-check with old index test
2303 // (cascades -> negligible difference ?... )
2304 if ( lMCstack->IsPhysicalPrimary(iCurrentLabelStack)!=kTRUE ) continue;
2306 //=================================================================================
2308 if( lCurrentParticlePrimary->GetPdgCode() == 3312 ){
2309 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2310 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2312 if( lCurrentParticlePrimary->GetPdgCode() == -3312 ){
2313 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2314 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2317 if( lCurrentParticlePrimary->GetPdgCode() == 3334 ){
2318 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2319 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2321 if( lCurrentParticlePrimary->GetPdgCode() == -3334 ){
2322 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2323 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2327 //----- End Loop on primary Xi, Omega ----------------------------------------------------------
2330 //------------------------------------------------
2331 // MAIN CASCADE LOOP STARTS HERE
2332 //------------------------------------------------
2333 // Code Credit: Antonin Maire (thanks^100)
2334 // ---> This is an adaptation
2336 Long_t ncascades = 0;
2337 ncascades = lESDevent->GetNumberOfCascades();
2340 for (Int_t iXi = 0; iXi < ncascades; iXi++){
2341 //------------------------------------------------
2343 //------------------------------------------------
2344 //Double_t lTrkgPrimaryVtxRadius3D = -500.0;
2345 //Double_t lBestPrimaryVtxRadius3D = -500.0;
2347 // - 1st part of initialisation : variables needed to store AliESDCascade data members
2348 Double_t lEffMassXi = 0. ;
2349 //Double_t lChi2Xi = -1. ;
2350 Double_t lDcaXiDaughters = -1. ;
2351 Double_t lXiCosineOfPointingAngle = -1. ;
2352 Double_t lPosXi[3] = { -1000.0, -1000.0, -1000.0 };
2353 Double_t lXiRadius = -1000. ;
2355 // - 2nd part of initialisation : Nbr of clusters within TPC for the 3 daughter cascade tracks
2356 Int_t lPosTPCClusters = -1; // For ESD only ...//FIXME : wait for availability in AOD
2357 Int_t lNegTPCClusters = -1; // For ESD only ...
2358 Int_t lBachTPCClusters = -1; // For ESD only ...
2360 // - 3rd part of initialisation : about V0 part in cascades
2361 Double_t lInvMassLambdaAsCascDghter = 0.;
2362 //Double_t lV0Chi2Xi = -1. ;
2363 Double_t lDcaV0DaughtersXi = -1.;
2365 Double_t lDcaBachToPrimVertexXi = -1., lDcaV0ToPrimVertexXi = -1.;
2366 Double_t lDcaPosToPrimVertexXi = -1.;
2367 Double_t lDcaNegToPrimVertexXi = -1.;
2368 Double_t lV0CosineOfPointingAngleXi = -1. ;
2369 Double_t lV0CosineOfPointingAngleXiSpecial = -1. ;
2370 Double_t lPosV0Xi[3] = { -1000. , -1000., -1000. }; // Position of VO coming from cascade
2371 Double_t lV0RadiusXi = -1000.0;
2372 Double_t lV0quality = 0.;
2374 // - 4th part of initialisation : Effective masses
2375 Double_t lInvMassXiMinus = 0.;
2376 Double_t lInvMassXiPlus = 0.;
2377 Double_t lInvMassOmegaMinus = 0.;
2378 Double_t lInvMassOmegaPlus = 0.;
2380 // - 6th part of initialisation : extra info for QA
2381 Double_t lXiMomX = 0. , lXiMomY = 0., lXiMomZ = 0.;
2382 Double_t lXiTransvMom = 0. ;
2383 Double_t lXiTransvMomMC= 0. ;
2384 Double_t lXiTotMom = 0. ;
2386 Double_t lBachMomX = 0., lBachMomY = 0., lBachMomZ = 0.;
2387 //Double_t lBachTransvMom = 0.;
2388 //Double_t lBachTotMom = 0.;
2390 fTreeCascVarNegNSigmaPion = -100;
2391 fTreeCascVarNegNSigmaProton = -100;
2392 fTreeCascVarPosNSigmaPion = -100;
2393 fTreeCascVarPosNSigmaProton = -100;
2394 fTreeCascVarBachNSigmaPion = -100;
2395 fTreeCascVarBachNSigmaKaon = -100;
2397 Short_t lChargeXi = -2;
2398 //Double_t lV0toXiCosineOfPointingAngle = 0. ;
2400 Double_t lRapXi = -20.0, lRapOmega = -20.0, lRapMC = -20.0; // lEta = -20.0, lTheta = 360., lPhi = 720. ;
2401 //Double_t lAlphaXi = -200., lPtArmXi = -200.0;
2403 // -------------------------------------
2404 // II.ESD - Calculation Part dedicated to Xi vertices (ESD)
2406 AliESDcascade *xi = lESDevent->GetCascade(iXi);
2410 // - II.Step 1 : around primary vertex
2412 //lTrkgPrimaryVtxRadius3D = TMath::Sqrt( lTrkgPrimaryVtxPos[0] * lTrkgPrimaryVtxPos[0] +
2413 // lTrkgPrimaryVtxPos[1] * lTrkgPrimaryVtxPos[1] +
2414 // lTrkgPrimaryVtxPos[2] * lTrkgPrimaryVtxPos[2] );
2416 //lBestPrimaryVtxRadius3D = TMath::Sqrt( lBestPrimaryVtxPos[0] * lBestPrimaryVtxPos[0] +
2417 // lBestPrimaryVtxPos[1] * lBestPrimaryVtxPos[1] +
2418 // lBestPrimaryVtxPos[2] * lBestPrimaryVtxPos[2] );
2420 // - II.Step 2 : Assigning the necessary variables for specific AliESDcascade data members (ESD)
2423 xi->ChangeMassHypothesis(lV0quality , 3312); // default working hypothesis : cascade = Xi- decay
2425 lEffMassXi = xi->GetEffMassXi();
2426 //lChi2Xi = xi->GetChi2Xi();
2427 lDcaXiDaughters = xi->GetDcaXiDaughters();
2428 lXiCosineOfPointingAngle = xi->GetCascadeCosineOfPointingAngle( lBestPrimaryVtxPos[0],
2429 lBestPrimaryVtxPos[1],
2430 lBestPrimaryVtxPos[2] );
2431 // Take care : the best available vertex should be used (like in AliCascadeVertexer)
2433 xi->GetXYZcascade( lPosXi[0], lPosXi[1], lPosXi[2] );
2434 lXiRadius = TMath::Sqrt( lPosXi[0]*lPosXi[0] + lPosXi[1]*lPosXi[1] );
2436 // - II.Step 3 : around the tracks : Bach + V0 (ESD)
2437 // ~ Necessary variables for ESDcascade data members coming from the ESDv0 part (inheritance)
2440 UInt_t lIdxPosXi = (UInt_t) TMath::Abs( xi->GetPindex() );
2441 UInt_t lIdxNegXi = (UInt_t) TMath::Abs( xi->GetNindex() );
2442 UInt_t lBachIdx = (UInt_t) TMath::Abs( xi->GetBindex() );
2443 // Care track label can be negative in MC production (linked with the track quality)
2444 // However = normally, not the case for track index ...
2446 // FIXME : rejection of a double use of a daughter track (nothing but just a crosscheck of what is done in the cascade vertexer)
2447 if(lBachIdx == lIdxNegXi) {
2448 AliWarning("Pb / Idx(Bach. track) = Idx(Neg. track) ... continue!"); continue;
2450 if(lBachIdx == lIdxPosXi) {
2451 AliWarning("Pb / Idx(Bach. track) = Idx(Pos. track) ... continue!"); continue;
2454 AliESDtrack *pTrackXi = lESDevent->GetTrack( lIdxPosXi );
2455 AliESDtrack *nTrackXi = lESDevent->GetTrack( lIdxNegXi );
2456 AliESDtrack *bachTrackXi = lESDevent->GetTrack( lBachIdx );
2458 if (!pTrackXi || !nTrackXi || !bachTrackXi ) {
2459 AliWarning("ERROR: Could not retrieve one of the 3 ESD daughter tracks of the cascade ...");
2463 fTreeCascVarPosEta = pTrackXi->Eta();
2464 fTreeCascVarNegEta = nTrackXi->Eta();
2465 fTreeCascVarBachEta = bachTrackXi->Eta();
2467 //Save shared clusters information
2468 fTreeCascVarNegSharedClusters = nTrackXi->GetTPCnclsS(0,159);
2469 fTreeCascVarPosSharedClusters = pTrackXi->GetTPCnclsS(0,159);
2470 fTreeCascVarBachSharedClusters = bachTrackXi->GetTPCnclsS(0,159);
2472 Double_t lBMom[3], lNMom[3], lPMom[3];
2473 xi->GetBPxPyPz( lBMom[0], lBMom[1], lBMom[2] );
2474 xi->GetPPxPyPz( lPMom[0], lPMom[1], lPMom[2] );
2475 xi->GetNPxPyPz( lNMom[0], lNMom[1], lNMom[2] );
2477 fTreeCascVarBachTransMom = TMath::Sqrt( lBMom[0]*lBMom[0] + lBMom[1]*lBMom[1] );
2478 fTreeCascVarPosTransMom = TMath::Sqrt( lPMom[0]*lPMom[0] + lPMom[1]*lPMom[1] );
2479 fTreeCascVarNegTransMom = TMath::Sqrt( lNMom[0]*lNMom[0] + lNMom[1]*lNMom[1] );
2481 //------------------------------------------------
2482 // TPC dEdx information
2483 //------------------------------------------------
2484 fTreeCascVarNegNSigmaPion = fPIDResponse->NumberOfSigmasTPC( nTrackXi, AliPID::kPion );
2485 fTreeCascVarNegNSigmaProton = fPIDResponse->NumberOfSigmasTPC( nTrackXi, AliPID::kProton );
2486 fTreeCascVarPosNSigmaPion = fPIDResponse->NumberOfSigmasTPC( pTrackXi, AliPID::kPion );
2487 fTreeCascVarPosNSigmaProton = fPIDResponse->NumberOfSigmasTPC( pTrackXi, AliPID::kProton );
2488 fTreeCascVarBachNSigmaPion = fPIDResponse->NumberOfSigmasTPC( bachTrackXi, AliPID::kPion );
2489 fTreeCascVarBachNSigmaKaon = fPIDResponse->NumberOfSigmasTPC( bachTrackXi, AliPID::kKaon );
2491 //------------------------------------------------
2492 // TPC Number of clusters info
2493 // --- modified to save the smallest number
2494 // --- of TPC clusters for the 3 tracks
2495 //------------------------------------------------
2497 lPosTPCClusters = pTrackXi->GetTPCNcls();
2498 lNegTPCClusters = nTrackXi->GetTPCNcls();
2499 lBachTPCClusters = bachTrackXi->GetTPCNcls();
2501 fTreeCascVarNegClusters = lNegTPCClusters;
2502 fTreeCascVarPosClusters = lPosTPCClusters;
2503 fTreeCascVarBachClusters = lBachTPCClusters;
2505 fTreeCascVarkITSRefitBachelor = kTRUE;
2506 fTreeCascVarkITSRefitNegative = kTRUE;
2507 fTreeCascVarkITSRefitPositive = kTRUE;
2509 // 1 - Poor quality related to TPCrefit
2510 ULong_t pStatus = pTrackXi->GetStatus();
2511 ULong_t nStatus = nTrackXi->GetStatus();
2512 ULong_t bachStatus = bachTrackXi->GetStatus();
2513 if ((pStatus&AliESDtrack::kTPCrefit) == 0) { AliWarning("Pb / V0 Pos. track has no TPCrefit ... continue!"); continue; }
2514 if ((nStatus&AliESDtrack::kTPCrefit) == 0) { AliWarning("Pb / V0 Neg. track has no TPCrefit ... continue!"); continue; }
2515 if ((bachStatus&AliESDtrack::kTPCrefit) == 0) { AliWarning("Pb / Bach. track has no TPCrefit ... continue!"); continue; }
2517 //Extra Debug Information: booleans for ITS refit
2518 if ((pStatus&AliESDtrack::kITSrefit) == 0) { fTreeCascVarkITSRefitPositive = kFALSE; }
2519 if ((nStatus&AliESDtrack::kITSrefit) == 0) { fTreeCascVarkITSRefitNegative = kFALSE; }
2520 if ((bachStatus&AliESDtrack::kITSrefit) == 0) { fTreeCascVarkITSRefitBachelor = kFALSE; }
2522 // 2 - Poor quality related to TPC clusters: lowest cut of 70 clusters
2523 if(lPosTPCClusters < 70) { AliWarning("Pb / V0 Pos. track has less than 70 TPC clusters ... continue!"); continue; }
2524 if(lNegTPCClusters < 70) { AliWarning("Pb / V0 Neg. track has less than 70 TPC clusters ... continue!"); continue; }
2525 if(lBachTPCClusters < 70) { AliWarning("Pb / Bach. track has less than 70 TPC clusters ... continue!"); continue; }
2526 Int_t leastnumberofclusters = 1000;
2527 if( lPosTPCClusters < leastnumberofclusters ) leastnumberofclusters = lPosTPCClusters;
2528 if( lNegTPCClusters < leastnumberofclusters ) leastnumberofclusters = lNegTPCClusters;
2529 if( lBachTPCClusters < leastnumberofclusters ) leastnumberofclusters = lBachTPCClusters;
2531 lInvMassLambdaAsCascDghter = xi->GetEffMass();
2532 // This value shouldn't change, whatever the working hyp. is : Xi-, Xi+, Omega-, Omega+
2533 lDcaV0DaughtersXi = xi->GetDcaV0Daughters();
2534 //lV0Chi2Xi = xi->GetChi2V0();
2536 lV0CosineOfPointingAngleXi = xi->GetV0CosineOfPointingAngle( lBestPrimaryVtxPos[0],
2537 lBestPrimaryVtxPos[1],
2538 lBestPrimaryVtxPos[2] );
2539 //Modification to check cosPA of v0 wrt to cascade vertex
2540 lV0CosineOfPointingAngleXiSpecial = xi->GetV0CosineOfPointingAngle( lPosXi[0],
2544 lDcaV0ToPrimVertexXi = xi->GetD( lBestPrimaryVtxPos[0],
2545 lBestPrimaryVtxPos[1],
2546 lBestPrimaryVtxPos[2] );
2548 lDcaBachToPrimVertexXi = TMath::Abs( bachTrackXi->GetD( lBestPrimaryVtxPos[0],
2549 lBestPrimaryVtxPos[1],
2551 // Note : AliExternalTrackParam::GetD returns an algebraic value ...
2553 xi->GetXYZ( lPosV0Xi[0], lPosV0Xi[1], lPosV0Xi[2] );
2554 lV0RadiusXi = TMath::Sqrt( lPosV0Xi[0]*lPosV0Xi[0] + lPosV0Xi[1]*lPosV0Xi[1] );
2556 lDcaPosToPrimVertexXi = TMath::Abs( pTrackXi ->GetD( lBestPrimaryVtxPos[0],
2557 lBestPrimaryVtxPos[1],
2560 lDcaNegToPrimVertexXi = TMath::Abs( nTrackXi ->GetD( lBestPrimaryVtxPos[0],
2561 lBestPrimaryVtxPos[1],
2564 // - II.Step 4 : around effective masses (ESD)
2565 // ~ change mass hypotheses to cover all the possibilities : Xi-/+, Omega -/+
2567 if( bachTrackXi->Charge() < 0 ) {
2569 xi->ChangeMassHypothesis(lV0quality , 3312);
2570 // Calculate the effective mass of the Xi- candidate.
2571 // pdg code 3312 = Xi-
2572 lInvMassXiMinus = xi->GetEffMassXi();
2575 xi->ChangeMassHypothesis(lV0quality , 3334);
2576 // Calculate the effective mass of the Xi- candidate.
2577 // pdg code 3334 = Omega-
2578 lInvMassOmegaMinus = xi->GetEffMassXi();
2581 xi->ChangeMassHypothesis(lV0quality , 3312); // Back to default hyp.
2582 }// end if negative bachelor
2585 if( bachTrackXi->Charge() > 0 ){
2587 xi->ChangeMassHypothesis(lV0quality , -3312);
2588 // Calculate the effective mass of the Xi+ candidate.
2589 // pdg code -3312 = Xi+
2590 lInvMassXiPlus = xi->GetEffMassXi();
2593 xi->ChangeMassHypothesis(lV0quality , -3334);
2594 // Calculate the effective mass of the Xi+ candidate.
2595 // pdg code -3334 = Omega+
2596 lInvMassOmegaPlus = xi->GetEffMassXi();
2599 xi->ChangeMassHypothesis(lV0quality , -3312); // Back to "default" hyp.
2600 }// end if positive bachelor
2601 // - II.Step 6 : extra info for QA (ESD)
2602 // miscellaneous pieces of info that may help regarding data quality assessment.
2605 xi->GetPxPyPz( lXiMomX, lXiMomY, lXiMomZ );
2606 lXiTransvMom = TMath::Sqrt( lXiMomX*lXiMomX + lXiMomY*lXiMomY );
2607 lXiTotMom = TMath::Sqrt( lXiMomX*lXiMomX + lXiMomY*lXiMomY + lXiMomZ*lXiMomZ );
2609 xi->GetBPxPyPz( lBachMomX, lBachMomY, lBachMomZ );
2610 //lBachTransvMom = TMath::Sqrt( lBachMomX*lBachMomX + lBachMomY*lBachMomY );
2611 //lBachTotMom = TMath::Sqrt( lBachMomX*lBachMomX + lBachMomY*lBachMomY + lBachMomZ*lBachMomZ );
2613 lChargeXi = xi->Charge();
2615 //lV0toXiCosineOfPointingAngle = xi->GetV0CosineOfPointingAngle( lPosXi[0], lPosXi[1], lPosXi[2] );
2617 lRapXi = xi->RapXi();
2618 lRapOmega = xi->RapOmega();
2620 //lTheta = xi->Theta() *180.0/TMath::Pi();
2621 //lPhi = xi->Phi() *180.0/TMath::Pi();
2622 //lAlphaXi = xi->AlphaXi();
2623 //lPtArmXi = xi->PtArmXi();
2625 //------------------------------------------------
2626 // Associate Cascade Candidates to Monte Carlo!
2627 //------------------------------------------------
2629 //Warning: Not using Continues... Need to fill tree later!
2631 Int_t lPDGCodeCascade = 0;
2633 Int_t lPID_BachMother = 0;
2634 Int_t lPID_NegMother = 0;
2635 Int_t lPID_PosMother = 0;
2636 fTreeCascVarIsPhysicalPrimary = 0; // 0: not defined, any candidate may have this
2638 fTreeCascVarPIDPositive = 0;
2639 fTreeCascVarPIDNegative = 0;
2640 fTreeCascVarPIDBachelor = 0;
2644 cout << "MC EventNumber : " << lMCevent->Header()->GetEvent()
2645 << " / MC event Number in Run : " << lMCevent->Header()->GetEventNrInRun() << endl;
2647 // - Step 4.1 : level of the V0 daughters
2649 //----------------------------------------
2650 // Regular MC ASSOCIATION STARTS HERE
2651 //----------------------------------------
2653 Int_t lblPosV0Dghter = (Int_t) TMath::Abs( pTrackXi->GetLabel() );
2654 // Abs value = needed ! question of quality track association ...
2655 Int_t lblNegV0Dghter = (Int_t) TMath::Abs( nTrackXi->GetLabel() );
2656 Int_t lblBach = (Int_t) TMath::Abs( bachTrackXi->GetLabel() );
2658 TParticle* mcPosV0Dghter = lMCstack->Particle( lblPosV0Dghter );
2659 TParticle* mcNegV0Dghter = lMCstack->Particle( lblNegV0Dghter );
2660 TParticle* mcBach = lMCstack->Particle( lblBach );
2662 fTreeCascVarPosTransMomMC = mcPosV0Dghter->Pt();
2663 fTreeCascVarNegTransMomMC = mcNegV0Dghter->Pt();
2665 fTreeCascVarPIDPositive = mcPosV0Dghter -> GetPdgCode();
2666 fTreeCascVarPIDNegative = mcNegV0Dghter -> GetPdgCode();
2667 fTreeCascVarPIDBachelor = mcBach->GetPdgCode();
2669 // - Step 4.2 : level of the Xi daughters
2671 Int_t lblMotherPosV0Dghter = mcPosV0Dghter->GetFirstMother() ;
2672 Int_t lblMotherNegV0Dghter = mcNegV0Dghter->GetFirstMother();
2674 //Rather uncivilized: Open brackets for each 'continue'
2675 if(! (lblMotherPosV0Dghter != lblMotherNegV0Dghter) ) { // same mother
2676 if(! (lblMotherPosV0Dghter < 0) ) { // mother != primary (!= -1)
2677 if(! (lblMotherNegV0Dghter < 0) ) {
2679 // mothers = Lambda candidate ... a priori
2681 TParticle* mcMotherPosV0Dghter = lMCstack->Particle( lblMotherPosV0Dghter );
2682 TParticle* mcMotherNegV0Dghter = lMCstack->Particle( lblMotherNegV0Dghter );
2684 // - Step 4.3 : level of Xi candidate
2686 Int_t lblGdMotherPosV0Dghter = mcMotherPosV0Dghter->GetFirstMother() ;
2687 Int_t lblGdMotherNegV0Dghter = mcMotherNegV0Dghter->GetFirstMother() ;
2689 if(! (lblGdMotherPosV0Dghter != lblGdMotherNegV0Dghter) ) {
2690 if(! (lblGdMotherPosV0Dghter < 0) ) { // primary lambda ...
2691 if(! (lblGdMotherNegV0Dghter < 0) ) { // primary lambda ...
2693 // Gd mothers = Xi candidate ... a priori
2695 TParticle* mcGdMotherPosV0Dghter = lMCstack->Particle( lblGdMotherPosV0Dghter );
2696 TParticle* mcGdMotherNegV0Dghter = lMCstack->Particle( lblGdMotherNegV0Dghter );
2698 Int_t lblMotherBach = (Int_t) TMath::Abs( mcBach->GetFirstMother() );
2700 // if( lblMotherBach != lblGdMotherPosV0Dghter ) continue; //same mother for bach and V0 daughters
2701 if(!(lblMotherBach != lblGdMotherPosV0Dghter)) { //same mother for bach and V0 daughters
2703 TParticle* mcMotherBach = lMCstack->Particle( lblMotherBach );
2705 lPID_BachMother = mcMotherBach->GetPdgCode();
2706 lPID_NegMother = mcGdMotherPosV0Dghter->GetPdgCode();
2707 lPID_PosMother = mcGdMotherNegV0Dghter->GetPdgCode();
2709 if(lPID_BachMother==lPID_NegMother && lPID_BachMother==lPID_PosMother){
2710 lPDGCodeCascade = lPID_BachMother;
2711 lXiTransvMomMC = mcMotherBach->Pt();
2712 if( lMCstack->IsPhysicalPrimary (lblMotherBach) ) fTreeCascVarIsPhysicalPrimary = 1; //Is Primary!
2713 if( lMCstack->IsSecondaryFromWeakDecay(lblMotherBach) ) fTreeCascVarIsPhysicalPrimary = 2; //Weak Decay!
2714 if( lMCstack->IsSecondaryFromMaterial (lblMotherBach) ) fTreeCascVarIsPhysicalPrimary = 3; //From Material!
2715 if ( (mcMotherBach->Energy() + mcMotherBach->Pz()) / (mcMotherBach->Energy() - mcMotherBach->Pz() +1.e-13) !=0 ){
2716 lRapMC = 0.5*TMath::Log( (mcMotherBach->Energy() + mcMotherBach->Pz()) / (mcMotherBach->Energy() - mcMotherBach->Pz() +1.e-13) );
2720 }}}}}}} //Ends all conditionals above...
2722 //----------------------------------------
2723 // Regular MC ASSOCIATION ENDS HERE
2724 //----------------------------------------
2726 //----------------------------------------
2727 // Swapped MC Association Starts Here
2728 //----------------------------------------
2730 fTreeCascVarPIDSwapped = 0; //Nothing
2731 if ( fkCheckSwapping ) { //on/off switch if not needed or otherwise broken
2733 Int_t lPID_BachMotherSwapped = 0;
2734 Int_t lPID_NegMotherSwapped = 0;
2735 Int_t lPID_PosMotherSwapped = 0;
2737 Int_t lblPosV0DghterSwapped = (Int_t) TMath::Abs( pTrackXi->GetLabel() );
2738 // Abs value = needed ! question of quality track association ...
2739 Int_t lblNegV0DghterSwapped = (Int_t) TMath::Abs( nTrackXi->GetLabel() );
2740 Int_t lblBachSwapped = (Int_t) TMath::Abs( bachTrackXi->GetLabel() );
2742 //This is SWAPPED association: swap like-sign particles
2743 TParticle* mcPosV0DghterSwapped = 0x0;
2744 TParticle* mcNegV0DghterSwapped = 0x0;
2745 TParticle* mcBachSwapped = 0x0;
2747 //Swapping Case 1: XiMinus/OmegaMinus swapped: exchange negative V0 daughter with bachelor
2748 if( lChargeXi == -1 ){
2749 mcPosV0DghterSwapped = lMCstack->Particle( lblPosV0DghterSwapped );
2750 mcNegV0DghterSwapped = lMCstack->Particle( lblBachSwapped );
2751 mcBachSwapped = lMCstack->Particle( lblNegV0DghterSwapped );
2753 //Swapping Case 2: XiPlus/OmegaPlus swapped: exchange positive V0 daughter with bachelor
2754 if( lChargeXi == 1 ){
2755 mcPosV0DghterSwapped = lMCstack->Particle( lblBachSwapped );
2756 mcNegV0DghterSwapped = lMCstack->Particle( lblNegV0DghterSwapped );
2757 mcBachSwapped = lMCstack->Particle( lblPosV0DghterSwapped );
2760 //fTreeCascVarPosTransMomMC = mcPosV0Dghter->Pt();
2761 //fTreeCascVarNegTransMomMC = mcNegV0Dghter->Pt();
2763 //fTreeCascVarPIDPositive = mcPosV0Dghter -> GetPdgCode();
2764 //fTreeCascVarPIDNegative = mcNegV0Dghter -> GetPdgCode();
2765 //fTreeCascVarPIDBachelor = mcBach->GetPdgCode();
2767 // - Step 4.2 : level of the Xi daughters
2769 Int_t lblMotherPosV0DghterSwapped = mcPosV0DghterSwapped->GetFirstMother() ;
2770 Int_t lblMotherNegV0DghterSwapped = mcNegV0DghterSwapped->GetFirstMother();
2772 //Rather uncivilized: Open brackets for each 'continue'
2773 if(! (lblMotherPosV0DghterSwapped != lblMotherNegV0DghterSwapped) ) { // same mother
2774 if(! (lblMotherPosV0DghterSwapped < 0) ) { // mother != primary (!= -1)
2775 if(! (lblMotherNegV0DghterSwapped < 0) ) {
2777 // mothers = Lambda candidate ... a priori
2779 TParticle* mcMotherPosV0DghterSwapped = lMCstack->Particle( lblMotherPosV0DghterSwapped );
2780 TParticle* mcMotherNegV0DghterSwapped = lMCstack->Particle( lblMotherNegV0DghterSwapped );
2782 // - Step 4.3 : level of Xi candidate
2784 Int_t lblGdMotherPosV0DghterSwapped = mcMotherPosV0DghterSwapped->GetFirstMother() ;
2785 Int_t lblGdMotherNegV0DghterSwapped = mcMotherNegV0DghterSwapped->GetFirstMother() ;
2787 if(! (lblGdMotherPosV0DghterSwapped != lblGdMotherNegV0DghterSwapped) ) {
2788 if(! (lblGdMotherPosV0DghterSwapped < 0) ) { // primary lambda ...
2789 if(! (lblGdMotherNegV0DghterSwapped < 0) ) { // primary lambda ...
2791 // Gd mothers = Xi candidate ... a priori
2793 TParticle* mcGdMotherPosV0DghterSwapped = lMCstack->Particle( lblGdMotherPosV0DghterSwapped );
2794 TParticle* mcGdMotherNegV0DghterSwapped = lMCstack->Particle( lblGdMotherNegV0DghterSwapped );
2796 Int_t lblMotherBachSwapped = (Int_t) TMath::Abs( mcBachSwapped->GetFirstMother() );
2798 // if( lblMotherBach != lblGdMotherPosV0Dghter ) continue; //same mother for bach and V0 daughters
2799 if(!(lblMotherBachSwapped != lblGdMotherPosV0DghterSwapped)) { //same mother for bach and V0 daughters
2801 TParticle* mcMotherBachSwapped = lMCstack->Particle( lblMotherBachSwapped );
2803 lPID_BachMotherSwapped = mcMotherBachSwapped->GetPdgCode();
2804 lPID_NegMotherSwapped = mcGdMotherPosV0DghterSwapped->GetPdgCode();
2805 lPID_PosMotherSwapped = mcGdMotherNegV0DghterSwapped->GetPdgCode();
2807 if(lPID_BachMotherSwapped==lPID_NegMotherSwapped && lPID_BachMotherSwapped==lPID_PosMotherSwapped){
2808 fTreeCascVarPIDSwapped = lPID_BachMotherSwapped; //there!
2811 }}}}}}} //Ends all conditionals above...
2814 //----------------------------------------
2815 // Swapped MC ASSOCIATION ENDS HERE
2816 //----------------------------------------
2818 //------------------------------------------------
2819 // Jai Salzwedel's femto-cut: better V0 exists
2820 //------------------------------------------------
2822 fTreeCascVarBadCascadeJai = kFALSE;
2823 fTreeCascVarDeltaDCA = -100;
2824 Float_t DCAV0DaughtersDiff = -100;
2825 for (Int_t iv0=0; iv0<lESDevent->GetNumberOfV0s(); iv0++) {
2826 AliESDv0 *v0 = lESDevent->GetV0(iv0);
2827 UInt_t posV0TrackIdx = (UInt_t) v0->GetPindex();
2828 UInt_t negV0TrackIdx = (UInt_t) v0->GetNindex();
2829 if ((posV0TrackIdx == lIdxPosXi) && (negV0TrackIdx == lIdxNegXi)) continue;
2830 // 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
2831 if ((posV0TrackIdx == lIdxPosXi) || (negV0TrackIdx == lIdxNegXi)) {
2832 DCAV0DaughtersDiff = lDcaV0DaughtersXi - v0->GetDcaV0Daughters();
2833 if( fTreeCascVarDeltaDCA < DCAV0DaughtersDiff ) fTreeCascVarDeltaDCA = DCAV0DaughtersDiff;
2834 if ( lDcaV0DaughtersXi > v0->GetDcaV0Daughters() ) { // DCA comparison criterion
2835 fTreeCascVarBadCascadeJai = kTRUE;
2836 } //end DCA comparison
2837 } // end shares a daughter check
2840 //------------------------------------------------
2841 // Set Variables for adding to tree
2842 //------------------------------------------------
2844 /* 1*/ fTreeCascVarCharge = lChargeXi;
2845 /* 2*/ if(lInvMassXiMinus!=0) fTreeCascVarMassAsXi = lInvMassXiMinus;
2846 /* 2*/ if(lInvMassXiPlus!=0) fTreeCascVarMassAsXi = lInvMassXiPlus;
2847 /* 3*/ if(lInvMassOmegaMinus!=0) fTreeCascVarMassAsOmega = lInvMassOmegaMinus;
2848 /* 3*/ if(lInvMassOmegaPlus!=0) fTreeCascVarMassAsOmega = lInvMassOmegaPlus;
2849 /* 4*/ fTreeCascVarPt = lXiTransvMom;
2850 /* 4*/ fTreeCascVarPtMC = lXiTransvMomMC;
2851 /* 5*/ fTreeCascVarRapXi = lRapXi ;
2852 /* 5*/ fTreeCascVarRapMC = lRapMC ;
2853 /* 6*/ fTreeCascVarRapOmega = lRapOmega ;
2854 /* 7*/ fTreeCascVarDCACascDaughters = lDcaXiDaughters;
2855 /* 8*/ fTreeCascVarDCABachToPrimVtx = lDcaBachToPrimVertexXi;
2856 /* 9*/ fTreeCascVarDCAV0Daughters = lDcaV0DaughtersXi;
2857 /*10*/ fTreeCascVarDCAV0ToPrimVtx = lDcaV0ToPrimVertexXi;
2858 /*11*/ fTreeCascVarDCAPosToPrimVtx = lDcaPosToPrimVertexXi;
2859 /*12*/ fTreeCascVarDCANegToPrimVtx = lDcaNegToPrimVertexXi;
2860 /*13*/ fTreeCascVarCascCosPointingAngle = lXiCosineOfPointingAngle;
2861 /*14*/ fTreeCascVarCascRadius = lXiRadius;
2862 /*15*/ fTreeCascVarV0Mass = lInvMassLambdaAsCascDghter;
2863 /*16*/ fTreeCascVarV0CosPointingAngle = lV0CosineOfPointingAngleXi;
2864 /*16*/ fTreeCascVarV0CosPointingAngleSpecial = lV0CosineOfPointingAngleXiSpecial;
2865 /*17*/ fTreeCascVarV0Radius = lV0RadiusXi;
2866 /*20*/ fTreeCascVarLeastNbrClusters = leastnumberofclusters;
2867 /*21*/ fTreeCascVarMultiplicity = lMultiplicity; //multiplicity, whatever that may be
2869 /*23*/ fTreeCascVarDistOverTotMom = TMath::Sqrt(
2870 TMath::Power( lPosXi[0] - lBestPrimaryVtxPos[0] , 2) +
2871 TMath::Power( lPosXi[1] - lBestPrimaryVtxPos[1] , 2) +
2872 TMath::Power( lPosXi[2] - lBestPrimaryVtxPos[2] , 2)
2874 /*23*/ fTreeCascVarDistOverTotMom /= (lXiTotMom+1e-13);
2875 /*24*/ //Not specified here, it has been set already (TRunNumber)
2876 /*25*/ fTreeCascVarPID = lPDGCodeCascade;
2878 //------------------------------------------------
2880 //------------------------------------------------
2882 // The conditional is meant to decrease excessive
2883 // memory usage! Be careful when loosening the
2886 //Xi Mass window: 150MeV wide
2887 //Omega mass window: 150MeV wide
2889 if( (fTreeCascVarMassAsXi<1.32+0.075&&fTreeCascVarMassAsXi>1.32-0.075) ||
2890 (fTreeCascVarMassAsOmega<1.68+0.075&&fTreeCascVarMassAsOmega>1.68-0.075) ){
2892 if( !fkIsNuclear ) fTreeCascade->Fill();
2894 //Extra selections in case this is a nuclear collision...
2895 if (TMath::Abs(fTreeCascVarNegEta) < 0.8 &&
2896 TMath::Abs(fTreeCascVarPosEta) < 0.8 &&
2897 TMath::Abs(fTreeCascVarBachEta) < 0.8 &&
2898 fTreeCascVarPt > fLowPtCutoff){ //beware ptMC and ptreco differences
2899 fTreeCascade->Fill();
2904 //------------------------------------------------
2906 //------------------------------------------------
2908 }// end of the Cascade loop (ESD or AOD)
2910 // Post output data.
2911 PostData(1, fListHist);
2912 PostData(2, fTreeCascade);
2915 //________________________________________________________________________
2916 void AliAnalysisTaskExtractPerformanceCascade::Terminate(Option_t *)
2918 // Draw result to the screen
2919 // Called once at the end of the query
2921 TList *cRetrievedList = 0x0;
2922 cRetrievedList = (TList*)GetOutputData(1);
2923 if(!cRetrievedList){
2924 Printf("ERROR - AliAnalysisTaskExtractCascade : ouput data container list not available\n");
2928 fHistV0MultiplicityForTrigEvt = dynamic_cast<TH1F*> ( cRetrievedList->FindObject("fHistV0MultiplicityForTrigEvt") );
2929 if (!fHistV0MultiplicityForTrigEvt) {
2930 Printf("ERROR - AliAnalysisTaskExtractCascade : fHistV0MultiplicityForTrigEvt not available");
2934 TCanvas *canCheck = new TCanvas("AliAnalysisTaskExtractCascade","V0 Multiplicity",10,10,510,510);
2935 canCheck->cd(1)->SetLogy();
2937 fHistV0MultiplicityForTrigEvt->SetMarkerStyle(22);
2938 fHistV0MultiplicityForTrigEvt->DrawCopy("E");
2941 //----------------------------------------------------------------------------
2943 Double_t AliAnalysisTaskExtractPerformanceCascade::MyRapidity(Double_t rE, Double_t rPz) const
2945 // Local calculation for rapidity
2946 Double_t ReturnValue = -100;
2947 if( (rE-rPz+1.e-13) != 0 && (rE+rPz) != 0 ){
2948 ReturnValue = 0.5*TMath::Log((rE+rPz)/(rE-rPz+1.e-13));