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 fkSelectPeripheral ( kFALSE ),
109 //------------------------------------------------
111 //------------------------------------------------
113 fTreeCascVarCharge(0),
114 fTreeCascVarMassAsXi(0),
115 fTreeCascVarMassAsOmega(0),
118 fTreeCascVarRapMC(0),
119 fTreeCascVarRapXi(0),
120 fTreeCascVarRapOmega(0),
121 fTreeCascVarNegEta(0),
122 fTreeCascVarPosEta(0),
123 fTreeCascVarBachEta(0),
124 fTreeCascVarDCACascDaughters(0),
125 fTreeCascVarDCABachToPrimVtx(0),
126 fTreeCascVarDCAV0Daughters(0),
127 fTreeCascVarDCAV0ToPrimVtx(0),
128 fTreeCascVarDCAPosToPrimVtx(0),
129 fTreeCascVarDCANegToPrimVtx(0),
130 fTreeCascVarCascCosPointingAngle(0),
131 fTreeCascVarCascRadius(0),
132 fTreeCascVarV0Mass(0),
133 fTreeCascVarV0CosPointingAngle(0),
134 fTreeCascVarV0CosPointingAngleSpecial(0),
135 fTreeCascVarV0Radius(0),
136 fTreeCascVarLeastNbrClusters(0),
137 fTreeCascVarMultiplicity(0),
138 fTreeCascVarMultiplicityV0A(0),
139 fTreeCascVarMultiplicityZNA(0),
140 fTreeCascVarMultiplicityTRK(0),
141 fTreeCascVarMultiplicitySPD(0),
142 fTreeCascVarMultiplicityMC(0),
143 fTreeCascVarDistOverTotMom(0),
144 fTreeCascVarIsPhysicalPrimary(0),
146 fTreeCascVarPIDSwapped(0),
147 fTreeCascVarPIDBachelor(0),
148 fTreeCascVarPIDNegative(0),
149 fTreeCascVarPIDPositive(0),
150 fTreeCascVarBachTransMom(0),
151 fTreeCascVarPosTransMom(0),
152 fTreeCascVarNegTransMom(0),
153 fTreeCascVarPosTransMomMC(0),
154 fTreeCascVarNegTransMomMC(0),
155 fTreeCascVarNegNSigmaPion(0),
156 fTreeCascVarNegNSigmaProton(0),
157 fTreeCascVarPosNSigmaPion(0),
158 fTreeCascVarPosNSigmaProton(0),
159 fTreeCascVarBachNSigmaPion(0),
160 fTreeCascVarBachNSigmaKaon(0),
162 fTreeCascVarkITSRefitBachelor(0),
163 fTreeCascVarkITSRefitNegative(0),
164 fTreeCascVarkITSRefitPositive(0),
166 fTreeCascVarNegClusters(0),
167 fTreeCascVarPosClusters(0),
168 fTreeCascVarBachClusters(0),
169 fTreeCascVarNegSharedClusters(0),
170 fTreeCascVarPosSharedClusters(0),
171 fTreeCascVarBachSharedClusters(0),
173 fTreeCascVarEvHasXiMinus(0),
174 fTreeCascVarEvHasXiPlus(0),
175 fTreeCascVarEvHasOmegaMinus(0),
176 fTreeCascVarEvHasOmegaPlus(0),
177 fTreeCascVarEvHasLambda(0),
178 fTreeCascVarEvHasAntiLambda(0),
180 fTreeCascVarEvHasLowPtXiMinus(0),
181 fTreeCascVarEvHasLowPtXiPlus(0),
182 fTreeCascVarEvHasLowPtOmegaMinus(0),
183 fTreeCascVarEvHasLowPtOmegaPlus(0),
184 fTreeCascVarEvHasLowPtLambda(0),
185 fTreeCascVarEvHasLowPtAntiLambda(0),
187 fTreeCascVarEvHasVeryLowPtXiMinus(0),
188 fTreeCascVarEvHasVeryLowPtXiPlus(0),
189 fTreeCascVarEvHasVeryLowPtOmegaMinus(0),
190 fTreeCascVarEvHasVeryLowPtOmegaPlus(0),
191 fTreeCascVarEvHasVeryLowPtLambda(0),
192 fTreeCascVarEvHasVeryLowPtAntiLambda(0),
194 fTreeCascVarBadCascadeJai(0),
195 fTreeCascVarDeltaDCA(0),
197 //------------------------------------------------
199 // --- Filled on an Event-by-event basis
200 //------------------------------------------------
201 fHistV0MultiplicityBeforeTrigSel(0),
202 fHistV0MultiplicityForTrigEvt(0),
203 fHistV0MultiplicityForSelEvt(0),
204 fHistV0MultiplicityForSelEvtNoTPCOnly(0),
205 fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup(0),
206 fHistMultiplicityBeforeTrigSel(0),
207 fHistMultiplicityForTrigEvt(0),
208 fHistMultiplicity(0),
209 fHistMultiplicityNoTPCOnly(0),
210 fHistMultiplicityNoTPCOnlyNoPileup(0),
213 fHistMultiplicityV0ABeforeTrigSel(0),
214 fHistMultiplicityV0AForTrigEvt(0),
215 fHistMultiplicityV0A(0),
216 fHistMultiplicityV0ANoTPCOnly(0),
217 fHistMultiplicityV0ANoTPCOnlyNoPileup(0),
220 fHistMultiplicityZNABeforeTrigSel(0),
221 fHistMultiplicityZNAForTrigEvt(0),
222 fHistMultiplicityZNA(0),
223 fHistMultiplicityZNANoTPCOnly(0),
224 fHistMultiplicityZNANoTPCOnlyNoPileup(0),
227 fHistMultiplicityTRKBeforeTrigSel(0),
228 fHistMultiplicityTRKForTrigEvt(0),
229 fHistMultiplicityTRK(0),
230 fHistMultiplicityTRKNoTPCOnly(0),
231 fHistMultiplicityTRKNoTPCOnlyNoPileup(0),
234 fHistMultiplicitySPDBeforeTrigSel(0),
235 fHistMultiplicitySPDForTrigEvt(0),
236 fHistMultiplicitySPD(0),
237 fHistMultiplicitySPDNoTPCOnly(0),
238 fHistMultiplicitySPDNoTPCOnlyNoPileup(0),
241 //------------------------------------------------
242 // PARTICLE HISTOGRAMS
243 // --- Filled on a Particle-by-Particle basis
244 //------------------------------------------------
245 f3dHistGenPtVsYVsMultXiMinus(0),
246 f3dHistGenPtVsYVsMultXiPlus(0),
247 f3dHistGenPtVsYVsMultOmegaMinus(0),
248 f3dHistGenPtVsYVsMultOmegaPlus(0),
249 f3dHistGenSelectedPtVsYVsMultXiMinus(0),
250 f3dHistGenSelectedPtVsYVsMultXiPlus(0),
251 f3dHistGenSelectedPtVsYVsMultOmegaMinus(0),
252 f3dHistGenSelectedPtVsYVsMultOmegaPlus(0),
253 f3dHistGenPtVsYCMSVsMultXiMinus(0),
254 f3dHistGenPtVsYCMSVsMultXiPlus(0),
255 f3dHistGenPtVsYCMSVsMultOmegaMinus(0),
256 f3dHistGenPtVsYCMSVsMultOmegaPlus(0),
257 f3dHistGenSelectedPtVsYCMSVsMultXiMinus(0),
258 f3dHistGenSelectedPtVsYCMSVsMultXiPlus(0),
259 f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus(0),
260 f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus(0),
264 f3dHistGenPtVsYVsMultMCXiMinus(0),
265 f3dHistGenPtVsYVsMultMCXiPlus(0),
266 f3dHistGenPtVsYVsMultMCOmegaMinus(0),
267 f3dHistGenPtVsYVsMultMCOmegaPlus(0),
268 f3dHistGenSelectedPtVsYVsMultMCXiMinus(0),
269 f3dHistGenSelectedPtVsYVsMultMCXiPlus(0),
270 f3dHistGenSelectedPtVsYVsMultMCOmegaMinus(0),
271 f3dHistGenSelectedPtVsYVsMultMCOmegaPlus(0),
272 f3dHistGenPtVsYCMSVsMultMCXiMinus(0),
273 f3dHistGenPtVsYCMSVsMultMCXiPlus(0),
274 f3dHistGenPtVsYCMSVsMultMCOmegaMinus(0),
275 f3dHistGenPtVsYCMSVsMultMCOmegaPlus(0),
276 f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus(0),
277 f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus(0),
278 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus(0),
279 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus(0),
283 f3dHistGenPtVsYVsMultV0AXiMinus(0),
284 f3dHistGenPtVsYVsMultV0AXiPlus(0),
285 f3dHistGenPtVsYVsMultV0AOmegaMinus(0),
286 f3dHistGenPtVsYVsMultV0AOmegaPlus(0),
287 f3dHistGenSelectedPtVsYVsMultV0AXiMinus(0),
288 f3dHistGenSelectedPtVsYVsMultV0AXiPlus(0),
289 f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus(0),
290 f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus(0),
291 f3dHistGenPtVsYCMSVsMultV0AXiMinus(0),
292 f3dHistGenPtVsYCMSVsMultV0AXiPlus(0),
293 f3dHistGenPtVsYCMSVsMultV0AOmegaMinus(0),
294 f3dHistGenPtVsYCMSVsMultV0AOmegaPlus(0),
295 f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus(0),
296 f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus(0),
297 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus(0),
298 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus(0),
299 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiMinus(0),
300 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiPlus(0),
301 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaMinus(0),
302 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaPlus(0),
306 f3dHistGenPtVsYVsMultZNAXiMinus(0),
307 f3dHistGenPtVsYVsMultZNAXiPlus(0),
308 f3dHistGenPtVsYVsMultZNAOmegaMinus(0),
309 f3dHistGenPtVsYVsMultZNAOmegaPlus(0),
310 f3dHistGenSelectedPtVsYVsMultZNAXiMinus(0),
311 f3dHistGenSelectedPtVsYVsMultZNAXiPlus(0),
312 f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus(0),
313 f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus(0),
314 f3dHistGenPtVsYCMSVsMultZNAXiMinus(0),
315 f3dHistGenPtVsYCMSVsMultZNAXiPlus(0),
316 f3dHistGenPtVsYCMSVsMultZNAOmegaMinus(0),
317 f3dHistGenPtVsYCMSVsMultZNAOmegaPlus(0),
318 f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus(0),
319 f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus(0),
320 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus(0),
321 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus(0),
325 f3dHistGenPtVsYVsMultTRKXiMinus(0),
326 f3dHistGenPtVsYVsMultTRKXiPlus(0),
327 f3dHistGenPtVsYVsMultTRKOmegaMinus(0),
328 f3dHistGenPtVsYVsMultTRKOmegaPlus(0),
329 f3dHistGenSelectedPtVsYVsMultTRKXiMinus(0),
330 f3dHistGenSelectedPtVsYVsMultTRKXiPlus(0),
331 f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus(0),
332 f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus(0),
333 f3dHistGenPtVsYCMSVsMultTRKXiMinus(0),
334 f3dHistGenPtVsYCMSVsMultTRKXiPlus(0),
335 f3dHistGenPtVsYCMSVsMultTRKOmegaMinus(0),
336 f3dHistGenPtVsYCMSVsMultTRKOmegaPlus(0),
337 f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus(0),
338 f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus(0),
339 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus(0),
340 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus(0),
344 f3dHistGenPtVsYVsMultSPDXiMinus(0),
345 f3dHistGenPtVsYVsMultSPDXiPlus(0),
346 f3dHistGenPtVsYVsMultSPDOmegaMinus(0),
347 f3dHistGenPtVsYVsMultSPDOmegaPlus(0),
348 f3dHistGenSelectedPtVsYVsMultSPDXiMinus(0),
349 f3dHistGenSelectedPtVsYVsMultSPDXiPlus(0),
350 f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus(0),
351 f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus(0),
352 f3dHistGenPtVsYCMSVsMultSPDXiMinus(0),
353 f3dHistGenPtVsYCMSVsMultSPDXiPlus(0),
354 f3dHistGenPtVsYCMSVsMultSPDOmegaMinus(0),
355 f3dHistGenPtVsYCMSVsMultSPDOmegaPlus(0),
356 f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus(0),
357 f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus(0),
358 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus(0),
359 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus(0),
372 AliAnalysisTaskExtractPerformanceCascade::AliAnalysisTaskExtractPerformanceCascade(const char *name)
373 : AliAnalysisTaskSE(name), fListHist(0), fTreeCascade(0), fPIDResponse(0), fESDtrackCuts(0), fUtils(0),
374 fkIsNuclear ( kFALSE ),
375 fkSwitchINT7 ( kFALSE ),
376 fpArapidityShift ( 0.465 ),
377 fCentralityEstimator("V0M"),
378 fkpAVertexSelection( kFALSE ),
380 fkRunVertexers ( kFALSE ),
381 fkCheckSwapping( kFALSE ),
382 fkSelectPeripheral ( kFALSE ),
383 //------------------------------------------------
385 //------------------------------------------------
387 fTreeCascVarCharge(0),
388 fTreeCascVarMassAsXi(0),
389 fTreeCascVarMassAsOmega(0),
392 fTreeCascVarRapMC(0),
393 fTreeCascVarRapXi(0),
394 fTreeCascVarRapOmega(0),
395 fTreeCascVarNegEta(0),
396 fTreeCascVarPosEta(0),
397 fTreeCascVarBachEta(0),
398 fTreeCascVarDCACascDaughters(0),
399 fTreeCascVarDCABachToPrimVtx(0),
400 fTreeCascVarDCAV0Daughters(0),
401 fTreeCascVarDCAV0ToPrimVtx(0),
402 fTreeCascVarDCAPosToPrimVtx(0),
403 fTreeCascVarDCANegToPrimVtx(0),
404 fTreeCascVarCascCosPointingAngle(0),
405 fTreeCascVarCascRadius(0),
406 fTreeCascVarV0Mass(0),
407 fTreeCascVarV0CosPointingAngle(0),
408 fTreeCascVarV0CosPointingAngleSpecial(0),
409 fTreeCascVarV0Radius(0),
410 fTreeCascVarLeastNbrClusters(0),
411 fTreeCascVarMultiplicity(0),
412 fTreeCascVarMultiplicityV0A(0),
413 fTreeCascVarMultiplicityZNA(0),
414 fTreeCascVarMultiplicityTRK(0),
415 fTreeCascVarMultiplicitySPD(0),
416 fTreeCascVarMultiplicityMC(0),
417 fTreeCascVarDistOverTotMom(0),
418 fTreeCascVarIsPhysicalPrimary(0),
420 fTreeCascVarPIDSwapped(0),
421 fTreeCascVarPIDBachelor(0),
422 fTreeCascVarPIDNegative(0),
423 fTreeCascVarPIDPositive(0),
424 fTreeCascVarBachTransMom(0),
425 fTreeCascVarPosTransMom(0),
426 fTreeCascVarNegTransMom(0),
427 fTreeCascVarPosTransMomMC(0),
428 fTreeCascVarNegTransMomMC(0),
429 fTreeCascVarNegNSigmaPion(0),
430 fTreeCascVarNegNSigmaProton(0),
431 fTreeCascVarPosNSigmaPion(0),
432 fTreeCascVarPosNSigmaProton(0),
433 fTreeCascVarBachNSigmaPion(0),
434 fTreeCascVarBachNSigmaKaon(0),
436 fTreeCascVarkITSRefitBachelor(0),
437 fTreeCascVarkITSRefitNegative(0),
438 fTreeCascVarkITSRefitPositive(0),
440 fTreeCascVarNegClusters(0),
441 fTreeCascVarPosClusters(0),
442 fTreeCascVarBachClusters(0),
443 fTreeCascVarNegSharedClusters(0),
444 fTreeCascVarPosSharedClusters(0),
445 fTreeCascVarBachSharedClusters(0),
447 fTreeCascVarEvHasXiMinus(0),
448 fTreeCascVarEvHasXiPlus(0),
449 fTreeCascVarEvHasOmegaMinus(0),
450 fTreeCascVarEvHasOmegaPlus(0),
451 fTreeCascVarEvHasLambda(0),
452 fTreeCascVarEvHasAntiLambda(0),
454 fTreeCascVarEvHasLowPtXiMinus(0),
455 fTreeCascVarEvHasLowPtXiPlus(0),
456 fTreeCascVarEvHasLowPtOmegaMinus(0),
457 fTreeCascVarEvHasLowPtOmegaPlus(0),
458 fTreeCascVarEvHasLowPtLambda(0),
459 fTreeCascVarEvHasLowPtAntiLambda(0),
461 fTreeCascVarEvHasVeryLowPtXiMinus(0),
462 fTreeCascVarEvHasVeryLowPtXiPlus(0),
463 fTreeCascVarEvHasVeryLowPtOmegaMinus(0),
464 fTreeCascVarEvHasVeryLowPtOmegaPlus(0),
465 fTreeCascVarEvHasVeryLowPtLambda(0),
466 fTreeCascVarEvHasVeryLowPtAntiLambda(0),
468 fTreeCascVarBadCascadeJai(0),
469 fTreeCascVarDeltaDCA(0),
471 //------------------------------------------------
473 // --- Filled on an Event-by-event basis
474 //------------------------------------------------
475 fHistV0MultiplicityBeforeTrigSel(0),
476 fHistV0MultiplicityForTrigEvt(0),
477 fHistV0MultiplicityForSelEvt(0),
478 fHistV0MultiplicityForSelEvtNoTPCOnly(0),
479 fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup(0),
480 fHistMultiplicityBeforeTrigSel(0),
481 fHistMultiplicityForTrigEvt(0),
482 fHistMultiplicity(0),
483 fHistMultiplicityNoTPCOnly(0),
484 fHistMultiplicityNoTPCOnlyNoPileup(0),
487 fHistMultiplicityV0ABeforeTrigSel(0),
488 fHistMultiplicityV0AForTrigEvt(0),
489 fHistMultiplicityV0A(0),
490 fHistMultiplicityV0ANoTPCOnly(0),
491 fHistMultiplicityV0ANoTPCOnlyNoPileup(0),
494 fHistMultiplicityZNABeforeTrigSel(0),
495 fHistMultiplicityZNAForTrigEvt(0),
496 fHistMultiplicityZNA(0),
497 fHistMultiplicityZNANoTPCOnly(0),
498 fHistMultiplicityZNANoTPCOnlyNoPileup(0),
501 fHistMultiplicityTRKBeforeTrigSel(0),
502 fHistMultiplicityTRKForTrigEvt(0),
503 fHistMultiplicityTRK(0),
504 fHistMultiplicityTRKNoTPCOnly(0),
505 fHistMultiplicityTRKNoTPCOnlyNoPileup(0),
508 fHistMultiplicitySPDBeforeTrigSel(0),
509 fHistMultiplicitySPDForTrigEvt(0),
510 fHistMultiplicitySPD(0),
511 fHistMultiplicitySPDNoTPCOnly(0),
512 fHistMultiplicitySPDNoTPCOnlyNoPileup(0),
514 //------------------------------------------------
515 // PARTICLE HISTOGRAMS
516 // --- Filled on a Particle-by-Particle basis
517 //------------------------------------------------
518 f3dHistGenPtVsYVsMultXiMinus(0),
519 f3dHistGenPtVsYVsMultXiPlus(0),
520 f3dHistGenPtVsYVsMultOmegaMinus(0),
521 f3dHistGenPtVsYVsMultOmegaPlus(0),
522 f3dHistGenSelectedPtVsYVsMultXiMinus(0),
523 f3dHistGenSelectedPtVsYVsMultXiPlus(0),
524 f3dHistGenSelectedPtVsYVsMultOmegaMinus(0),
525 f3dHistGenSelectedPtVsYVsMultOmegaPlus(0),
526 f3dHistGenPtVsYCMSVsMultXiMinus(0),
527 f3dHistGenPtVsYCMSVsMultXiPlus(0),
528 f3dHistGenPtVsYCMSVsMultOmegaMinus(0),
529 f3dHistGenPtVsYCMSVsMultOmegaPlus(0),
530 f3dHistGenSelectedPtVsYCMSVsMultXiMinus(0),
531 f3dHistGenSelectedPtVsYCMSVsMultXiPlus(0),
532 f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus(0),
533 f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus(0),
537 f3dHistGenPtVsYVsMultMCXiMinus(0),
538 f3dHistGenPtVsYVsMultMCXiPlus(0),
539 f3dHistGenPtVsYVsMultMCOmegaMinus(0),
540 f3dHistGenPtVsYVsMultMCOmegaPlus(0),
541 f3dHistGenSelectedPtVsYVsMultMCXiMinus(0),
542 f3dHistGenSelectedPtVsYVsMultMCXiPlus(0),
543 f3dHistGenSelectedPtVsYVsMultMCOmegaMinus(0),
544 f3dHistGenSelectedPtVsYVsMultMCOmegaPlus(0),
545 f3dHistGenPtVsYCMSVsMultMCXiMinus(0),
546 f3dHistGenPtVsYCMSVsMultMCXiPlus(0),
547 f3dHistGenPtVsYCMSVsMultMCOmegaMinus(0),
548 f3dHistGenPtVsYCMSVsMultMCOmegaPlus(0),
549 f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus(0),
550 f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus(0),
551 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus(0),
552 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus(0),
556 f3dHistGenPtVsYVsMultV0AXiMinus(0),
557 f3dHistGenPtVsYVsMultV0AXiPlus(0),
558 f3dHistGenPtVsYVsMultV0AOmegaMinus(0),
559 f3dHistGenPtVsYVsMultV0AOmegaPlus(0),
560 f3dHistGenSelectedPtVsYVsMultV0AXiMinus(0),
561 f3dHistGenSelectedPtVsYVsMultV0AXiPlus(0),
562 f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus(0),
563 f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus(0),
564 f3dHistGenPtVsYCMSVsMultV0AXiMinus(0),
565 f3dHistGenPtVsYCMSVsMultV0AXiPlus(0),
566 f3dHistGenPtVsYCMSVsMultV0AOmegaMinus(0),
567 f3dHistGenPtVsYCMSVsMultV0AOmegaPlus(0),
568 f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus(0),
569 f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus(0),
570 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus(0),
571 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus(0),
572 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiMinus(0),
573 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiPlus(0),
574 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaMinus(0),
575 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaPlus(0),
579 f3dHistGenPtVsYVsMultZNAXiMinus(0),
580 f3dHistGenPtVsYVsMultZNAXiPlus(0),
581 f3dHistGenPtVsYVsMultZNAOmegaMinus(0),
582 f3dHistGenPtVsYVsMultZNAOmegaPlus(0),
583 f3dHistGenSelectedPtVsYVsMultZNAXiMinus(0),
584 f3dHistGenSelectedPtVsYVsMultZNAXiPlus(0),
585 f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus(0),
586 f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus(0),
587 f3dHistGenPtVsYCMSVsMultZNAXiMinus(0),
588 f3dHistGenPtVsYCMSVsMultZNAXiPlus(0),
589 f3dHistGenPtVsYCMSVsMultZNAOmegaMinus(0),
590 f3dHistGenPtVsYCMSVsMultZNAOmegaPlus(0),
591 f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus(0),
592 f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus(0),
593 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus(0),
594 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus(0),
598 f3dHistGenPtVsYVsMultTRKXiMinus(0),
599 f3dHistGenPtVsYVsMultTRKXiPlus(0),
600 f3dHistGenPtVsYVsMultTRKOmegaMinus(0),
601 f3dHistGenPtVsYVsMultTRKOmegaPlus(0),
602 f3dHistGenSelectedPtVsYVsMultTRKXiMinus(0),
603 f3dHistGenSelectedPtVsYVsMultTRKXiPlus(0),
604 f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus(0),
605 f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus(0),
606 f3dHistGenPtVsYCMSVsMultTRKXiMinus(0),
607 f3dHistGenPtVsYCMSVsMultTRKXiPlus(0),
608 f3dHistGenPtVsYCMSVsMultTRKOmegaMinus(0),
609 f3dHistGenPtVsYCMSVsMultTRKOmegaPlus(0),
610 f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus(0),
611 f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus(0),
612 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus(0),
613 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus(0),
617 f3dHistGenPtVsYVsMultSPDXiMinus(0),
618 f3dHistGenPtVsYVsMultSPDXiPlus(0),
619 f3dHistGenPtVsYVsMultSPDOmegaMinus(0),
620 f3dHistGenPtVsYVsMultSPDOmegaPlus(0),
621 f3dHistGenSelectedPtVsYVsMultSPDXiMinus(0),
622 f3dHistGenSelectedPtVsYVsMultSPDXiPlus(0),
623 f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus(0),
624 f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus(0),
625 f3dHistGenPtVsYCMSVsMultSPDXiMinus(0),
626 f3dHistGenPtVsYCMSVsMultSPDXiPlus(0),
627 f3dHistGenPtVsYCMSVsMultSPDOmegaMinus(0),
628 f3dHistGenPtVsYCMSVsMultSPDOmegaPlus(0),
629 f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus(0),
630 f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus(0),
631 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus(0),
632 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus(0),
644 //Set Variables for re-running the cascade vertexers (as done for MS paper)
646 // New Loose : 1st step for the 7 TeV pp analysis
648 fV0VertexerSels[0] = 33. ; // max allowed chi2
649 fV0VertexerSels[1] = 0.02; // min allowed impact parameter for the 1st daughter (LHC09a4 : 0.05)
650 fV0VertexerSels[2] = 0.02; // min allowed impact parameter for the 2nd daughter (LHC09a4 : 0.05)
651 fV0VertexerSels[3] = 2.0 ; // max allowed DCA between the daughter tracks (LHC09a4 : 0.5)
652 fV0VertexerSels[4] = 0.95; // min allowed cosine of V0's pointing angle (LHC09a4 : 0.99)
653 fV0VertexerSels[5] = 1.0 ; // min radius of the fiducial volume (LHC09a4 : 0.2)
654 fV0VertexerSels[6] = 200. ; // max radius of the fiducial volume (LHC09a4 : 100.0)
656 fCascadeVertexerSels[0] = 33. ; // max allowed chi2 (same as PDC07)
657 fCascadeVertexerSels[1] = 0.05 ; // min allowed V0 impact parameter (PDC07 : 0.05 / LHC09a4 : 0.025 )
658 fCascadeVertexerSels[2] = 0.010; // "window" around the Lambda mass (PDC07 : 0.008 / LHC09a4 : 0.010 )
659 fCascadeVertexerSels[3] = 0.03 ; // min allowed bachelor's impact parameter (PDC07 : 0.035 / LHC09a4 : 0.025 )
660 fCascadeVertexerSels[4] = 2.0 ; // max allowed DCA between the V0 and the bachelor (PDC07 : 0.1 / LHC09a4 : 0.2 )
661 fCascadeVertexerSels[5] = 0.95 ; // min allowed cosine of the cascade pointing angle (PDC07 : 0.9985 / LHC09a4 : 0.998 )
662 fCascadeVertexerSels[6] = 0.4 ; // min radius of the fiducial volume (PDC07 : 0.9 / LHC09a4 : 0.2 )
663 fCascadeVertexerSels[7] = 100. ; // max radius of the fiducial volume (PDC07 : 100 / LHC09a4 : 100 )
665 // Output slot #0 writes into a TList container (Cascade)
666 DefineOutput(1, TList::Class());
667 DefineOutput(2, TTree::Class());
671 AliAnalysisTaskExtractPerformanceCascade::~AliAnalysisTaskExtractPerformanceCascade()
673 //------------------------------------------------
675 //------------------------------------------------
685 //cleanup esd track cuts object too...
687 delete fESDtrackCuts;
697 //________________________________________________________________________
698 void AliAnalysisTaskExtractPerformanceCascade::UserCreateOutputObjects()
703 //------------------------------------------------
705 fTreeCascade = new TTree("fTreeCascade","CascadeCandidates");
707 //------------------------------------------------
708 // fTreeCascade Branch definitions - Cascade Tree
709 //------------------------------------------------
711 //------------------------------------------------
712 // fTreeCascade Branch definitions
713 //------------------------------------------------
715 //-----------BASIC-INFO---------------------------
716 /* 1*/ fTreeCascade->Branch("fTreeCascVarCharge",&fTreeCascVarCharge,"fTreeCascVarCharge/I");
717 /* 2*/ fTreeCascade->Branch("fTreeCascVarMassAsXi",&fTreeCascVarMassAsXi,"fTreeCascVarMassAsXi/F");
718 /* 3*/ fTreeCascade->Branch("fTreeCascVarMassAsOmega",&fTreeCascVarMassAsOmega,"fTreeCascVarMassAsOmega/F");
719 /* 4*/ fTreeCascade->Branch("fTreeCascVarPt",&fTreeCascVarPt,"fTreeCascVarPt/F");
720 /* 5*/ fTreeCascade->Branch("fTreeCascVarPtMC",&fTreeCascVarPtMC,"fTreeCascVarPtMC/F");
721 /* 6*/ fTreeCascade->Branch("fTreeCascVarRapXi",&fTreeCascVarRapXi,"fTreeCascVarRapXi/F");
722 /* 7*/ fTreeCascade->Branch("fTreeCascVarRapMC",&fTreeCascVarRapMC,"fTreeCascVarRapMC/F");
723 /* 8*/ fTreeCascade->Branch("fTreeCascVarRapOmega",&fTreeCascVarRapOmega,"fTreeCascVarRapOmega/F");
724 /* 9*/ fTreeCascade->Branch("fTreeCascVarNegEta",&fTreeCascVarNegEta,"fTreeCascVarNegEta/F");
725 /*10*/ fTreeCascade->Branch("fTreeCascVarPosEta",&fTreeCascVarPosEta,"fTreeCascVarPosEta/F");
726 /*11*/ fTreeCascade->Branch("fTreeCascVarBachEta",&fTreeCascVarBachEta,"fTreeCascVarBachEta/F");
727 //-----------INFO-FOR-CUTS------------------------
728 /*12*/ fTreeCascade->Branch("fTreeCascVarDCACascDaughters",&fTreeCascVarDCACascDaughters,"fTreeCascVarDCACascDaughters/F");
729 /*13*/ fTreeCascade->Branch("fTreeCascVarDCABachToPrimVtx",&fTreeCascVarDCABachToPrimVtx,"fTreeCascVarDCABachToPrimVtx/F");
730 /*14*/ fTreeCascade->Branch("fTreeCascVarDCAV0Daughters",&fTreeCascVarDCAV0Daughters,"fTreeCascVarDCAV0Daughters/F");
731 /*15*/ fTreeCascade->Branch("fTreeCascVarDCAV0ToPrimVtx",&fTreeCascVarDCAV0ToPrimVtx,"fTreeCascVarDCAV0ToPrimVtx/F");
732 /*16*/ fTreeCascade->Branch("fTreeCascVarDCAPosToPrimVtx",&fTreeCascVarDCAPosToPrimVtx,"fTreeCascVarDCAPosToPrimVtx/F");
733 /*17*/ fTreeCascade->Branch("fTreeCascVarDCANegToPrimVtx",&fTreeCascVarDCANegToPrimVtx,"fTreeCascVarDCANegToPrimVtx/F");
734 /*18*/ fTreeCascade->Branch("fTreeCascVarCascCosPointingAngle",&fTreeCascVarCascCosPointingAngle,"fTreeCascVarCascCosPointingAngle/F");
735 /*19*/ fTreeCascade->Branch("fTreeCascVarCascRadius",&fTreeCascVarCascRadius,"fTreeCascVarCascRadius/F");
736 /*20*/ fTreeCascade->Branch("fTreeCascVarV0Mass",&fTreeCascVarV0Mass,"fTreeCascVarV0Mass/F");
737 /*21*/ fTreeCascade->Branch("fTreeCascVarV0CosPointingAngle",&fTreeCascVarV0CosPointingAngle,"fTreeCascVarV0CosPointingAngle/F");
738 /*21*/ fTreeCascade->Branch("fTreeCascVarV0CosPointingAngleSpecial",&fTreeCascVarV0CosPointingAngleSpecial,"fTreeCascVarV0CosPointingAngleSpecial/F");
739 /*22*/ fTreeCascade->Branch("fTreeCascVarV0Radius",&fTreeCascVarV0Radius,"fTreeCascVarV0Radius/F");
740 /*23*/ fTreeCascade->Branch("fTreeCascVarLeastNbrClusters",&fTreeCascVarLeastNbrClusters,"fTreeCascVarLeastNbrClusters/I");
742 /*23*/ fTreeCascade->Branch("fTreeCascVarNegClusters",&fTreeCascVarNegClusters,"fTreeCascVarNegClusters/I");
743 /*23*/ fTreeCascade->Branch("fTreeCascVarPosClusters",&fTreeCascVarPosClusters,"fTreeCascVarPosClusters/I");
744 /*23*/ fTreeCascade->Branch("fTreeCascVarBachClusters",&fTreeCascVarBachClusters,"fTreeCascVarBachClusters/I");
745 /*23*/ fTreeCascade->Branch("fTreeCascVarNegSharedClusters",&fTreeCascVarNegSharedClusters,"fTreeCascVarNegSharedClusters/I");
746 /*23*/ fTreeCascade->Branch("fTreeCascVarPosSharedClusters",&fTreeCascVarPosSharedClusters,"fTreeCascVarPosSharedClusters/I");
747 /*23*/ fTreeCascade->Branch("fTreeCascVarBachSharedClusters",&fTreeCascVarBachSharedClusters,"fTreeCascVarBachSharedClusters/I");
748 //-----------MULTIPLICITY-INFO--------------------
749 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicity",&fTreeCascVarMultiplicity,"fTreeCascVarMultiplicity/I");
750 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicityV0A",&fTreeCascVarMultiplicityV0A,"fTreeCascVarMultiplicityV0A/I");
751 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicityZNA",&fTreeCascVarMultiplicityZNA,"fTreeCascVarMultiplicityZNA/I");
752 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicityTRK",&fTreeCascVarMultiplicityTRK,"fTreeCascVarMultiplicityTRK/I");
753 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicitySPD",&fTreeCascVarMultiplicitySPD,"fTreeCascVarMultiplicitySPD/I");
754 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicityMC",&fTreeCascVarMultiplicityMC,"fTreeCascVarMultiplicityMC/I");
755 //-----------DECAY-LENGTH-INFO--------------------
756 /*25*/ fTreeCascade->Branch("fTreeCascVarDistOverTotMom",&fTreeCascVarDistOverTotMom,"fTreeCascVarDistOverTotMom/F");
757 //-----------MC-PID-------------------------------
758 /*25bis*/ fTreeCascade->Branch("fTreeCascVarIsPhysicalPrimary",&fTreeCascVarIsPhysicalPrimary,"fTreeCascVarIsPhysicalPrimary/I");
759 /*26*/ fTreeCascade->Branch("fTreeCascVarPID",&fTreeCascVarPID,"fTreeCascVarPID/I");
760 /*26*/ fTreeCascade->Branch("fTreeCascVarPIDSwapped",&fTreeCascVarPIDSwapped,"fTreeCascVarPIDSwapped/I");
761 /*27*/ fTreeCascade->Branch("fTreeCascVarPIDBachelor",&fTreeCascVarPIDBachelor,"fTreeCascVarPIDBachelor/I");
762 /*28*/ fTreeCascade->Branch("fTreeCascVarPIDNegative",&fTreeCascVarPIDNegative,"fTreeCascVarPIDNegative/I");
763 /*29*/ fTreeCascade->Branch("fTreeCascVarPIDPositive",&fTreeCascVarPIDPositive,"fTreeCascVarPIDPositive/I");
764 /*30*/ fTreeCascade->Branch("fTreeCascVarBachTransMom",&fTreeCascVarBachTransMom,"fTreeCascVarBachTransMom/F");
765 /*30*/ fTreeCascade->Branch("fTreeCascVarPosTransMom",&fTreeCascVarPosTransMom,"fTreeCascVarPosTransMom/F");
766 /*31*/ fTreeCascade->Branch("fTreeCascVarNegTransMom",&fTreeCascVarNegTransMom,"fTreeCascVarNegTransMom/F");
767 /*32*/ fTreeCascade->Branch("fTreeCascVarPosTransMomMC",&fTreeCascVarPosTransMomMC,"fTreeCascVarPosTransMomMC/F");
768 /*33*/ fTreeCascade->Branch("fTreeCascVarNegTransMomMC",&fTreeCascVarNegTransMomMC,"fTreeCascVarNegTransMomMC/F");
769 //------------------------------------------------
770 /*34*/ fTreeCascade->Branch("fTreeCascVarNegNSigmaPion",&fTreeCascVarNegNSigmaPion,"fTreeCascVarNegNSigmaPion/F");
771 /*35*/ fTreeCascade->Branch("fTreeCascVarNegNSigmaProton",&fTreeCascVarNegNSigmaProton,"fTreeCascVarNegNSigmaProton/F");
772 /*36*/ fTreeCascade->Branch("fTreeCascVarPosNSigmaPion",&fTreeCascVarPosNSigmaPion,"fTreeCascVarPosNSigmaPion/F");
773 /*37*/ fTreeCascade->Branch("fTreeCascVarPosNSigmaProton",&fTreeCascVarPosNSigmaProton,"fTreeCascVarPosNSigmaProton/F");
774 /*38*/ fTreeCascade->Branch("fTreeCascVarBachNSigmaPion",&fTreeCascVarBachNSigmaPion,"fTreeCascVarBachNSigmaPion/F");
775 /*39*/ fTreeCascade->Branch("fTreeCascVarBachNSigmaKaon",&fTreeCascVarBachNSigmaKaon,"fTreeCascVarBachNSigmaKaon/F");
777 /*29*/ fTreeCascade->Branch("fTreeCascVarkITSRefitBachelor",&fTreeCascVarkITSRefitBachelor,"fTreeCascVarkITSRefitBachelor/O");
778 /*29*/ fTreeCascade->Branch("fTreeCascVarkITSRefitNegative",&fTreeCascVarkITSRefitNegative,"fTreeCascVarkITSRefitNegative/O");
779 /*29*/ fTreeCascade->Branch("fTreeCascVarkITSRefitPositive",&fTreeCascVarkITSRefitPositive,"fTreeCascVarkITSRefitPositive/O");
781 fTreeCascade->Branch("fTreeCascVarNegClusters",&fTreeCascVarNegClusters,"fTreeCascVarNegClusters/I");
782 fTreeCascade->Branch("fTreeCascVarPosClusters",&fTreeCascVarPosClusters,"fTreeCascVarPosClusters/I");
783 fTreeCascade->Branch("fTreeCascVarBachClusters",&fTreeCascVarBachClusters,"fTreeCascVarBachClusters/I");
784 fTreeCascade->Branch("fTreeCascVarNegSharedClusters",&fTreeCascVarNegSharedClusters,"fTreeCascVarNegSharedClusters/I");
785 fTreeCascade->Branch("fTreeCascVarPosSharedClusters",&fTreeCascVarPosSharedClusters,"fTreeCascVarPosSharedClusters/I");
786 fTreeCascade->Branch("fTreeCascVarBachSharedClusters",&fTreeCascVarBachSharedClusters,"fTreeCascVarBachSharedClusters/I");
788 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasXiMinus", &fTreeCascVarEvHasXiMinus, "fTreeCascVarEvHasXiMinus/O");
789 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasXiPlus", &fTreeCascVarEvHasXiPlus, "fTreeCascVarEvHasXiPlus/O");
790 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasOmegaMinus",&fTreeCascVarEvHasOmegaMinus,"fTreeCascVarEvHasOmegaMinus/O");
791 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasOmegaPlus", &fTreeCascVarEvHasOmegaPlus, "fTreeCascVarEvHasOmegaPlus/O");
792 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLambda", &fTreeCascVarEvHasLambda, "fTreeCascVarEvHasLambda/O");
793 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasAntiLambda",&fTreeCascVarEvHasAntiLambda,"fTreeCascVarEvHasAntiLambda/O");
795 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLowPtXiMinus", &fTreeCascVarEvHasLowPtXiMinus, "fTreeCascVarEvHasLowPtXiMinus/O");
796 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLowPtXiPlus", &fTreeCascVarEvHasLowPtXiPlus, "fTreeCascVarEvHasLowPtXiPlus/O");
797 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLowPtOmegaMinus",&fTreeCascVarEvHasLowPtOmegaMinus,"fTreeCascVarEvHasLowPtOmegaMinus/O");
798 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLowPtOmegaPlus", &fTreeCascVarEvHasLowPtOmegaPlus, "fTreeCascVarEvHasLowPtOmegaPlus/O");
799 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLowPtLambda", &fTreeCascVarEvHasLowPtLambda, "fTreeCascVarEvHasLowPtLambda/O");
800 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLowPtAntiLambda",&fTreeCascVarEvHasLowPtAntiLambda,"fTreeCascVarEvHasLowPtAntiLambda/O");
802 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasVeryLowPtXiMinus", &fTreeCascVarEvHasVeryLowPtXiMinus, "fTreeCascVarEvHasVeryLowPtXiMinus/O");
803 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasVeryLowPtXiPlus", &fTreeCascVarEvHasVeryLowPtXiPlus, "fTreeCascVarEvHasVeryLowPtXiPlus/O");
804 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasVeryLowPtOmegaMinus",&fTreeCascVarEvHasVeryLowPtOmegaMinus,"fTreeCascVarEvHasVeryLowPtOmegaMinus/O");
805 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasVeryLowPtOmegaPlus", &fTreeCascVarEvHasVeryLowPtOmegaPlus, "fTreeCascVarEvHasVeryLowPtOmegaPlus/O");
806 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasVeryLowPtLambda", &fTreeCascVarEvHasVeryLowPtLambda, "fTreeCascVarEvHasVeryLowPtLambda/O");
807 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasVeryLowPtAntiLambda",&fTreeCascVarEvHasVeryLowPtAntiLambda,"fTreeCascVarEvHasVeryLowPtAntiLambda/O");
809 fTreeCascade->Branch("fTreeCascVarBadCascadeJai",&fTreeCascVarBadCascadeJai,"fTreeCascVarBadCascadeJai/O");
810 fTreeCascade->Branch("fTreeCascVarDeltaDCA",&fTreeCascVarDeltaDCA,"fTreeCascVarDeltaDCA/F");
812 //------------------------------------------------
813 // Particle Identification Setup
814 //------------------------------------------------
816 AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
817 AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
818 fPIDResponse = inputHandler->GetPIDResponse();
822 if(! fESDtrackCuts ){
823 fESDtrackCuts = new AliESDtrackCuts();
826 fUtils = new AliAnalysisUtils();
829 //------------------------------------------------
830 // V0 Multiplicity Histograms
831 //------------------------------------------------
835 fListHist = new TList();
836 fListHist->SetOwner(); // See http://root.cern.ch/root/html/TCollection.html#TCollection:SetOwner
839 if(! fHistV0MultiplicityBeforeTrigSel) {
840 fHistV0MultiplicityBeforeTrigSel = new TH1F("fHistV0MultiplicityBeforeTrigSel",
841 "V0s per event (before Trig. Sel.);Nbr of V0s/Evt;Events",
843 fListHist->Add(fHistV0MultiplicityBeforeTrigSel);
846 if(! fHistV0MultiplicityForTrigEvt) {
847 fHistV0MultiplicityForTrigEvt = new TH1F("fHistV0MultiplicityForTrigEvt",
848 "V0s per event (for triggered evt);Nbr of V0s/Evt;Events",
850 fListHist->Add(fHistV0MultiplicityForTrigEvt);
853 if(! fHistV0MultiplicityForSelEvt) {
854 fHistV0MultiplicityForSelEvt = new TH1F("fHistV0MultiplicityForSelEvt",
855 "V0s per event;Nbr of V0s/Evt;Events",
857 fListHist->Add(fHistV0MultiplicityForSelEvt);
860 if(! fHistV0MultiplicityForSelEvtNoTPCOnly) {
861 fHistV0MultiplicityForSelEvtNoTPCOnly = new TH1F("fHistV0MultiplicityForSelEvtNoTPCOnly",
862 "V0s per event;Nbr of V0s/Evt;Events",
864 fListHist->Add(fHistV0MultiplicityForSelEvtNoTPCOnly);
866 if(! fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup) {
867 fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup = new TH1F("fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup",
868 "V0s per event;Nbr of V0s/Evt;Events",
870 fListHist->Add(fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup);
873 //------------------------------------------------
874 // Track Multiplicity Histograms
875 //------------------------------------------------
877 if(! fHistMultiplicityBeforeTrigSel) {
878 fHistMultiplicityBeforeTrigSel = new TH1F("fHistMultiplicityBeforeTrigSel",
879 "Tracks per event;Nbr of Tracks;Events",
881 fListHist->Add(fHistMultiplicityBeforeTrigSel);
883 if(! fHistMultiplicityForTrigEvt) {
884 fHistMultiplicityForTrigEvt = new TH1F("fHistMultiplicityForTrigEvt",
885 "Tracks per event;Nbr of Tracks;Events",
887 fListHist->Add(fHistMultiplicityForTrigEvt);
889 if(! fHistMultiplicity) {
890 fHistMultiplicity = new TH1F("fHistMultiplicity",
891 "Tracks per event;Nbr of Tracks;Events",
893 fListHist->Add(fHistMultiplicity);
895 if(! fHistMultiplicityNoTPCOnly) {
896 fHistMultiplicityNoTPCOnly = new TH1F("fHistMultiplicityNoTPCOnly",
897 "Tracks per event;Nbr of Tracks;Events",
899 fListHist->Add(fHistMultiplicityNoTPCOnly);
901 if(! fHistMultiplicityNoTPCOnlyNoPileup) {
902 fHistMultiplicityNoTPCOnlyNoPileup = new TH1F("fHistMultiplicityNoTPCOnlyNoPileup",
903 "Tracks per event;Nbr of Tracks;Events",
905 fListHist->Add(fHistMultiplicityNoTPCOnlyNoPileup);
909 //V0A Centrality (if PbPb / pPb)
910 if(! fHistMultiplicityV0ABeforeTrigSel) {
911 fHistMultiplicityV0ABeforeTrigSel = new TH1F("fHistMultiplicityV0ABeforeTrigSel",
912 "Centrality Distribution: V0A;V0A Centrality;Events",
914 fListHist->Add(fHistMultiplicityV0ABeforeTrigSel);
916 if(! fHistMultiplicityV0AForTrigEvt) {
917 fHistMultiplicityV0AForTrigEvt = new TH1F("fHistMultiplicityV0AForTrigEvt",
918 "Centrality Distribution: V0A;V0A Centrality;Events",
920 fListHist->Add(fHistMultiplicityV0AForTrigEvt);
922 if(! fHistMultiplicityV0A) {
923 fHistMultiplicityV0A = new TH1F("fHistMultiplicityV0A",
924 "Centrality Distribution: V0A;V0A Centrality;Events",
926 fListHist->Add(fHistMultiplicityV0A);
928 if(! fHistMultiplicityV0ANoTPCOnly) {
929 fHistMultiplicityV0ANoTPCOnly = new TH1F("fHistMultiplicityV0ANoTPCOnly",
930 "Centrality Distribution: V0A;V0A Centrality;Events",
932 fListHist->Add(fHistMultiplicityV0ANoTPCOnly);
934 if(! fHistMultiplicityV0ANoTPCOnlyNoPileup) {
935 fHistMultiplicityV0ANoTPCOnlyNoPileup = new TH1F("fHistMultiplicityV0ANoTPCOnlyNoPileup",
936 "Centrality Distribution: V0A;V0A Centrality;Events",
938 fListHist->Add(fHistMultiplicityV0ANoTPCOnlyNoPileup);
941 //ZNA Centrality (if PbPb / pPb)
942 if(! fHistMultiplicityZNABeforeTrigSel) {
943 fHistMultiplicityZNABeforeTrigSel = new TH1F("fHistMultiplicityZNABeforeTrigSel",
944 "Centrality Distribution: ZNA;ZNA Centrality;Events",
946 fListHist->Add(fHistMultiplicityZNABeforeTrigSel);
948 if(! fHistMultiplicityZNAForTrigEvt) {
949 fHistMultiplicityZNAForTrigEvt = new TH1F("fHistMultiplicityZNAForTrigEvt",
950 "Centrality Distribution: ZNA;ZNA Centrality;Events",
952 fListHist->Add(fHistMultiplicityZNAForTrigEvt);
954 if(! fHistMultiplicityZNA) {
955 fHistMultiplicityZNA = new TH1F("fHistMultiplicityZNA",
956 "Centrality Distribution: ZNA;ZNA Centrality;Events",
958 fListHist->Add(fHistMultiplicityZNA);
960 if(! fHistMultiplicityZNANoTPCOnly) {
961 fHistMultiplicityZNANoTPCOnly = new TH1F("fHistMultiplicityZNANoTPCOnly",
962 "Centrality Distribution: ZNA;ZNA Centrality;Events",
964 fListHist->Add(fHistMultiplicityZNANoTPCOnly);
966 if(! fHistMultiplicityZNANoTPCOnlyNoPileup) {
967 fHistMultiplicityZNANoTPCOnlyNoPileup = new TH1F("fHistMultiplicityZNANoTPCOnlyNoPileup",
968 "Centrality Distribution: ZNA;ZNA Centrality;Events",
970 fListHist->Add(fHistMultiplicityZNANoTPCOnlyNoPileup);
973 //TRK Centrality (if PbPb / pPb)
974 if(! fHistMultiplicityTRKBeforeTrigSel) {
975 fHistMultiplicityTRKBeforeTrigSel = new TH1F("fHistMultiplicityTRKBeforeTrigSel",
976 "Centrality Distribution: TRK;TRK Centrality;Events",
978 fListHist->Add(fHistMultiplicityTRKBeforeTrigSel);
980 if(! fHistMultiplicityTRKForTrigEvt) {
981 fHistMultiplicityTRKForTrigEvt = new TH1F("fHistMultiplicityTRKForTrigEvt",
982 "Centrality Distribution: TRK;TRK Centrality;Events",
984 fListHist->Add(fHistMultiplicityTRKForTrigEvt);
986 if(! fHistMultiplicityTRK) {
987 fHistMultiplicityTRK = new TH1F("fHistMultiplicityTRK",
988 "Centrality Distribution: TRK;TRK Centrality;Events",
990 fListHist->Add(fHistMultiplicityTRK);
992 if(! fHistMultiplicityTRKNoTPCOnly) {
993 fHistMultiplicityTRKNoTPCOnly = new TH1F("fHistMultiplicityTRKNoTPCOnly",
994 "Centrality Distribution: TRK;TRK Centrality;Events",
996 fListHist->Add(fHistMultiplicityTRKNoTPCOnly);
998 if(! fHistMultiplicityTRKNoTPCOnlyNoPileup) {
999 fHistMultiplicityTRKNoTPCOnlyNoPileup = new TH1F("fHistMultiplicityTRKNoTPCOnlyNoPileup",
1000 "Centrality Distribution: TRK;TRK Centrality;Events",
1002 fListHist->Add(fHistMultiplicityTRKNoTPCOnlyNoPileup);
1005 //SPD Centrality (if PbPb / pPb)
1006 if(! fHistMultiplicitySPDBeforeTrigSel) {
1007 fHistMultiplicitySPDBeforeTrigSel = new TH1F("fHistMultiplicitySPDBeforeTrigSel",
1008 "Centrality Distribution: SPD;SPD Centrality;Events",
1010 fListHist->Add(fHistMultiplicitySPDBeforeTrigSel);
1012 if(! fHistMultiplicitySPDForTrigEvt) {
1013 fHistMultiplicitySPDForTrigEvt = new TH1F("fHistMultiplicitySPDForTrigEvt",
1014 "Centrality Distribution: SPD;SPD Centrality;Events",
1016 fListHist->Add(fHistMultiplicitySPDForTrigEvt);
1018 if(! fHistMultiplicitySPD) {
1019 fHistMultiplicitySPD = new TH1F("fHistMultiplicitySPD",
1020 "Centrality Distribution: SPD;SPD Centrality;Events",
1022 fListHist->Add(fHistMultiplicitySPD);
1024 if(! fHistMultiplicitySPDNoTPCOnly) {
1025 fHistMultiplicitySPDNoTPCOnly = new TH1F("fHistMultiplicitySPDNoTPCOnly",
1026 "Centrality Distribution: SPD;SPD Centrality;Events",
1028 fListHist->Add(fHistMultiplicitySPDNoTPCOnly);
1030 if(! fHistMultiplicitySPDNoTPCOnlyNoPileup) {
1031 fHistMultiplicitySPDNoTPCOnlyNoPileup = new TH1F("fHistMultiplicitySPDNoTPCOnlyNoPileup",
1032 "Centrality Distribution: SPD;SPD Centrality;Events",
1034 fListHist->Add(fHistMultiplicitySPDNoTPCOnlyNoPileup);
1040 //------------------------------------------------
1041 // Generated Particle Histograms
1042 //------------------------------------------------
1044 Int_t lCustomNBins = 200;
1045 Double_t lCustomPtUpperLimit = 20;
1046 Int_t lCustomNBinsMultiplicity = 100;
1048 //----------------------------------
1049 // Raw Generated (Pre-physics-selection)
1050 //----------------------------------
1052 //--------------------------------------------------------------------------------------
1053 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1055 if(! f3dHistGenPtVsYVsMultXiMinus) {
1056 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);
1057 fListHist->Add(f3dHistGenPtVsYVsMultXiMinus);
1059 if(! f3dHistGenPtVsYVsMultXiPlus) {
1060 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);
1061 fListHist->Add(f3dHistGenPtVsYVsMultXiPlus);
1063 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1065 if(! f3dHistGenPtVsYVsMultOmegaMinus) {
1066 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);
1067 fListHist->Add(f3dHistGenPtVsYVsMultOmegaMinus);
1069 if(! f3dHistGenPtVsYVsMultOmegaPlus) {
1070 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);
1071 fListHist->Add(f3dHistGenPtVsYVsMultOmegaPlus);
1074 //All generated cascades, YCMS
1076 if(! f3dHistGenPtVsYCMSVsMultXiMinus) {
1077 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);
1078 fListHist->Add(f3dHistGenPtVsYCMSVsMultXiMinus);
1080 if(! f3dHistGenPtVsYCMSVsMultXiPlus) {
1081 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);
1082 fListHist->Add(f3dHistGenPtVsYCMSVsMultXiPlus);
1084 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1086 if(! f3dHistGenPtVsYCMSVsMultOmegaMinus) {
1087 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);
1088 fListHist->Add(f3dHistGenPtVsYCMSVsMultOmegaMinus);
1090 if(! f3dHistGenPtVsYCMSVsMultOmegaPlus) {
1091 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);
1092 fListHist->Add(f3dHistGenPtVsYCMSVsMultOmegaPlus);
1096 //--------------------------------------------------------------------------------------
1097 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1099 if(! f3dHistGenSelectedPtVsYVsMultXiMinus) {
1100 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);
1101 fListHist->Add(f3dHistGenSelectedPtVsYVsMultXiMinus);
1103 if(! f3dHistGenSelectedPtVsYVsMultXiPlus) {
1104 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);
1105 fListHist->Add(f3dHistGenSelectedPtVsYVsMultXiPlus);
1107 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1109 if(! f3dHistGenSelectedPtVsYVsMultOmegaMinus) {
1110 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);
1111 fListHist->Add(f3dHistGenSelectedPtVsYVsMultOmegaMinus);
1113 if(! f3dHistGenSelectedPtVsYVsMultOmegaPlus) {
1114 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);
1115 fListHist->Add(f3dHistGenSelectedPtVsYVsMultOmegaPlus);
1118 //ANALYSIS level Cascades, YCMS
1121 if(! f3dHistGenSelectedPtVsYCMSVsMultXiMinus) {
1122 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);
1123 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultXiMinus);
1125 if(! f3dHistGenSelectedPtVsYCMSVsMultXiPlus) {
1126 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);
1127 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultXiPlus);
1129 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1131 if(! f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus) {
1132 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);
1133 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus);
1135 if(! f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus) {
1136 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);
1137 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus);
1140 //======================================================================================
1141 //--------------------------------------------------------------------------------------
1142 // True Generated (For Multiplicity Unfolding)
1143 //--------------------------------------------------------------------------------------
1144 //======================================================================================
1146 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1148 if(! f3dHistGenPtVsYVsMultMCXiMinus) {
1149 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);
1150 fListHist->Add(f3dHistGenPtVsYVsMultMCXiMinus);
1152 if(! f3dHistGenPtVsYVsMultMCXiPlus) {
1153 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);
1154 fListHist->Add(f3dHistGenPtVsYVsMultMCXiPlus);
1156 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1158 if(! f3dHistGenPtVsYVsMultMCOmegaMinus) {
1159 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);
1160 fListHist->Add(f3dHistGenPtVsYVsMultMCOmegaMinus);
1162 if(! f3dHistGenPtVsYVsMultMCOmegaPlus) {
1163 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);
1164 fListHist->Add(f3dHistGenPtVsYVsMultMCOmegaPlus);
1167 //All generated cascades, YCMS
1169 if(! f3dHistGenPtVsYCMSVsMultMCXiMinus) {
1170 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);
1171 fListHist->Add(f3dHistGenPtVsYCMSVsMultMCXiMinus);
1173 if(! f3dHistGenPtVsYCMSVsMultMCXiPlus) {
1174 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);
1175 fListHist->Add(f3dHistGenPtVsYCMSVsMultMCXiPlus);
1177 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1179 if(! f3dHistGenPtVsYCMSVsMultMCOmegaMinus) {
1180 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);
1181 fListHist->Add(f3dHistGenPtVsYCMSVsMultMCOmegaMinus);
1183 if(! f3dHistGenPtVsYCMSVsMultMCOmegaPlus) {
1184 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);
1185 fListHist->Add(f3dHistGenPtVsYCMSVsMultMCOmegaPlus);
1189 //--------------------------------------------------------------------------------------
1190 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1192 if(! f3dHistGenSelectedPtVsYVsMultMCXiMinus) {
1193 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);
1194 fListHist->Add(f3dHistGenSelectedPtVsYVsMultMCXiMinus);
1196 if(! f3dHistGenSelectedPtVsYVsMultMCXiPlus) {
1197 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);
1198 fListHist->Add(f3dHistGenSelectedPtVsYVsMultMCXiPlus);
1200 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1202 if(! f3dHistGenSelectedPtVsYVsMultMCOmegaMinus) {
1203 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);
1204 fListHist->Add(f3dHistGenSelectedPtVsYVsMultMCOmegaMinus);
1206 if(! f3dHistGenSelectedPtVsYVsMultMCOmegaPlus) {
1207 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);
1208 fListHist->Add(f3dHistGenSelectedPtVsYVsMultMCOmegaPlus);
1211 //ANALYSIS level Cascades, YCMS
1214 if(! f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus) {
1215 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);
1216 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus);
1218 if(! f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus) {
1219 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);
1220 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus);
1222 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1224 if(! f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus) {
1225 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);
1226 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus);
1228 if(! f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus) {
1229 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);
1230 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus);
1233 //======================================================================================
1234 //--------------------------------------------------------------------------------------
1236 //--------------------------------------------------------------------------------------
1237 //======================================================================================
1239 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1241 if(! f3dHistGenPtVsYVsMultV0AXiMinus) {
1242 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);
1243 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultV0AXiMinus);
1245 if(! f3dHistGenPtVsYVsMultV0AXiPlus) {
1246 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);
1247 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultV0AXiPlus);
1249 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1251 if(! f3dHistGenPtVsYVsMultV0AOmegaMinus) {
1252 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);
1253 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultV0AOmegaMinus);
1255 if(! f3dHistGenPtVsYVsMultV0AOmegaPlus) {
1256 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);
1257 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultV0AOmegaPlus);
1260 //All generated cascades, YCMS
1262 if(! f3dHistGenPtVsYCMSVsMultV0AXiMinus) {
1263 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);
1264 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultV0AXiMinus);
1266 if(! f3dHistGenPtVsYCMSVsMultV0AXiPlus) {
1267 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);
1268 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultV0AXiPlus);
1270 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1272 if(! f3dHistGenPtVsYCMSVsMultV0AOmegaMinus) {
1273 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);
1274 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultV0AOmegaMinus);
1276 if(! f3dHistGenPtVsYCMSVsMultV0AOmegaPlus) {
1277 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);
1278 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultV0AOmegaPlus);
1282 //--------------------------------------------------------------------------------------
1283 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1285 if(! f3dHistGenSelectedPtVsYVsMultV0AXiMinus) {
1286 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);
1287 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultV0AXiMinus);
1289 if(! f3dHistGenSelectedPtVsYVsMultV0AXiPlus) {
1290 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);
1291 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultV0AXiPlus);
1293 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1295 if(! f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus) {
1296 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);
1297 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus);
1299 if(! f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus) {
1300 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);
1301 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus);
1304 //ANALYSIS level Cascades, YCMS
1307 if(! f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus) {
1308 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);
1309 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus);
1311 if(! f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus) {
1312 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);
1313 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus);
1315 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1317 if(! f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus) {
1318 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);
1319 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus);
1321 if(! f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus) {
1322 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);
1323 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus);
1326 //Cross-check primary selection criteria
1327 //Should not impact much but inspired by rumors of DPMJet issues with primary selection (?)
1329 if(! f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiMinus) {
1330 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);
1331 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiMinus);
1333 if(! f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiPlus) {
1334 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);
1335 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiPlus);
1337 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1339 if(! f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaMinus) {
1340 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);
1341 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaMinus);
1343 if(! f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaPlus) {
1344 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);
1345 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaPlus);
1348 //======================================================================================
1349 //--------------------------------------------------------------------------------------
1351 //--------------------------------------------------------------------------------------
1352 //======================================================================================
1354 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1356 if(! f3dHistGenPtVsYVsMultZNAXiMinus) {
1357 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);
1358 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultZNAXiMinus);
1360 if(! f3dHistGenPtVsYVsMultZNAXiPlus) {
1361 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);
1362 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultZNAXiPlus);
1364 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1366 if(! f3dHistGenPtVsYVsMultZNAOmegaMinus) {
1367 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);
1368 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultZNAOmegaMinus);
1370 if(! f3dHistGenPtVsYVsMultZNAOmegaPlus) {
1371 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);
1372 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultZNAOmegaPlus);
1375 //All generated cascades, YCMS
1377 if(! f3dHistGenPtVsYCMSVsMultZNAXiMinus) {
1378 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);
1379 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultZNAXiMinus);
1381 if(! f3dHistGenPtVsYCMSVsMultZNAXiPlus) {
1382 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);
1383 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultZNAXiPlus);
1385 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1387 if(! f3dHistGenPtVsYCMSVsMultZNAOmegaMinus) {
1388 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);
1389 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultZNAOmegaMinus);
1391 if(! f3dHistGenPtVsYCMSVsMultZNAOmegaPlus) {
1392 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);
1393 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultZNAOmegaPlus);
1397 //--------------------------------------------------------------------------------------
1398 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1400 if(! f3dHistGenSelectedPtVsYVsMultZNAXiMinus) {
1401 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);
1402 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultZNAXiMinus);
1404 if(! f3dHistGenSelectedPtVsYVsMultZNAXiPlus) {
1405 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);
1406 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultZNAXiPlus);
1408 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1410 if(! f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus) {
1411 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);
1412 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus);
1414 if(! f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus) {
1415 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);
1416 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus);
1419 //ANALYSIS level Cascades, YCMS
1422 if(! f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus) {
1423 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);
1424 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus);
1426 if(! f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus) {
1427 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);
1428 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus);
1430 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1432 if(! f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus) {
1433 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);
1434 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus);
1436 if(! f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus) {
1437 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);
1438 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus);
1442 //======================================================================================
1443 //--------------------------------------------------------------------------------------
1445 //--------------------------------------------------------------------------------------
1446 //======================================================================================
1448 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1450 if(! f3dHistGenPtVsYVsMultTRKXiMinus) {
1451 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);
1452 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultTRKXiMinus);
1454 if(! f3dHistGenPtVsYVsMultTRKXiPlus) {
1455 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);
1456 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultTRKXiPlus);
1458 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1460 if(! f3dHistGenPtVsYVsMultTRKOmegaMinus) {
1461 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);
1462 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultTRKOmegaMinus);
1464 if(! f3dHistGenPtVsYVsMultTRKOmegaPlus) {
1465 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);
1466 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultTRKOmegaPlus);
1469 //All generated cascades, YCMS
1471 if(! f3dHistGenPtVsYCMSVsMultTRKXiMinus) {
1472 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);
1473 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultTRKXiMinus);
1475 if(! f3dHistGenPtVsYCMSVsMultTRKXiPlus) {
1476 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);
1477 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultTRKXiPlus);
1479 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1481 if(! f3dHistGenPtVsYCMSVsMultTRKOmegaMinus) {
1482 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);
1483 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultTRKOmegaMinus);
1485 if(! f3dHistGenPtVsYCMSVsMultTRKOmegaPlus) {
1486 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);
1487 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultTRKOmegaPlus);
1491 //--------------------------------------------------------------------------------------
1492 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1494 if(! f3dHistGenSelectedPtVsYVsMultTRKXiMinus) {
1495 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);
1496 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultTRKXiMinus);
1498 if(! f3dHistGenSelectedPtVsYVsMultTRKXiPlus) {
1499 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);
1500 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultTRKXiPlus);
1502 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1504 if(! f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus) {
1505 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);
1506 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus);
1508 if(! f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus) {
1509 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);
1510 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus);
1513 //ANALYSIS level Cascades, YCMS
1516 if(! f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus) {
1517 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);
1518 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus);
1520 if(! f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus) {
1521 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);
1522 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus);
1524 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1526 if(! f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus) {
1527 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);
1528 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus);
1530 if(! f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus) {
1531 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);
1532 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus);
1535 //======================================================================================
1536 //--------------------------------------------------------------------------------------
1538 //--------------------------------------------------------------------------------------
1539 //======================================================================================
1541 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1543 if(! f3dHistGenPtVsYVsMultSPDXiMinus) {
1544 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);
1545 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultSPDXiMinus);
1547 if(! f3dHistGenPtVsYVsMultSPDXiPlus) {
1548 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);
1549 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultSPDXiPlus);
1551 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1553 if(! f3dHistGenPtVsYVsMultSPDOmegaMinus) {
1554 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);
1555 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultSPDOmegaMinus);
1557 if(! f3dHistGenPtVsYVsMultSPDOmegaPlus) {
1558 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);
1559 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultSPDOmegaPlus);
1562 //All generated cascades, YCMS
1564 if(! f3dHistGenPtVsYCMSVsMultSPDXiMinus) {
1565 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);
1566 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultSPDXiMinus);
1568 if(! f3dHistGenPtVsYCMSVsMultSPDXiPlus) {
1569 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);
1570 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultSPDXiPlus);
1572 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1574 if(! f3dHistGenPtVsYCMSVsMultSPDOmegaMinus) {
1575 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);
1576 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultSPDOmegaMinus);
1578 if(! f3dHistGenPtVsYCMSVsMultSPDOmegaPlus) {
1579 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);
1580 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultSPDOmegaPlus);
1584 //--------------------------------------------------------------------------------------
1585 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1587 if(! f3dHistGenSelectedPtVsYVsMultSPDXiMinus) {
1588 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);
1589 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultSPDXiMinus);
1591 if(! f3dHistGenSelectedPtVsYVsMultSPDXiPlus) {
1592 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);
1593 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultSPDXiPlus);
1595 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1597 if(! f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus) {
1598 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);
1599 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus);
1601 if(! f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus) {
1602 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);
1603 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus);
1606 //ANALYSIS level Cascades, YCMS
1609 if(! f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus) {
1610 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);
1611 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus);
1613 if(! f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus) {
1614 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);
1615 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus);
1617 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1619 if(! f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus) {
1620 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);
1621 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus);
1623 if(! f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus) {
1624 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);
1625 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus);
1628 //----------------------------------
1629 // Primary Vertex Position Histos
1630 //----------------------------------
1633 fHistPVx = new TH1F("fHistPVx",
1634 "PV x position;Nbr of Evts;x",
1636 fListHist->Add(fHistPVx);
1639 fHistPVy = new TH1F("fHistPVy",
1640 "PV y position;Nbr of Evts;y",
1642 fListHist->Add(fHistPVy);
1645 fHistPVz = new TH1F("fHistPVz",
1646 "PV z position;Nbr of Evts;z",
1648 fListHist->Add(fHistPVz);
1651 if(! fHistPVxAnalysis) {
1652 fHistPVxAnalysis = new TH1F("fHistPVxAnalysis",
1653 "PV x position;Nbr of Evts;x",
1655 fListHist->Add(fHistPVxAnalysis);
1657 if(! fHistPVyAnalysis) {
1658 fHistPVyAnalysis = new TH1F("fHistPVyAnalysis",
1659 "PV y position;Nbr of Evts;y",
1661 fListHist->Add(fHistPVyAnalysis);
1663 if(! fHistPVzAnalysis) {
1664 fHistPVzAnalysis = new TH1F("fHistPVzAnalysis",
1665 "PV z position;Nbr of Evts;z",
1667 fListHist->Add(fHistPVzAnalysis);
1670 //List of Histograms: Normal
1671 PostData(1, fListHist);
1673 //TTree Object: Saved to base directory. Should cache to disk while saving.
1674 //(Important to avoid excessive memory usage, particularly when merging)
1675 PostData(2, fTreeCascade);
1677 }// end UserCreateOutputObjects
1680 //________________________________________________________________________
1681 void AliAnalysisTaskExtractPerformanceCascade::UserExec(Option_t *)
1684 // Called for each event
1686 AliESDEvent *lESDevent = 0x0;
1687 AliMCEvent *lMCevent = 0x0;
1688 AliStack *lMCstack = 0x0;
1690 Int_t lNumberOfV0s = -1;
1691 Double_t lTrkgPrimaryVtxPos[3] = {-100.0, -100.0, -100.0};
1692 Double_t lBestPrimaryVtxPos[3] = {-100.0, -100.0, -100.0};
1693 Double_t lMagneticField = -10.;
1695 // Connect to the InputEvent
1696 // After these lines, we should have an ESD/AOD event + the number of V0s in it.
1698 // Appropriate for ESD analysis!
1700 lESDevent = dynamic_cast<AliESDEvent*>( InputEvent() );
1702 AliWarning("ERROR: lESDevent not available \n");
1706 /* --- Acquisition of exact event ID
1707 fTreeVariableRunNumber = lESDevent->GetRunNumber();
1708 fTreeVariableEventNumber =
1709 ( ( ((ULong64_t)lESDevent->GetPeriodNumber() ) << 36 ) |
1710 ( ((ULong64_t)lESDevent->GetOrbitNumber () ) << 12 ) |
1711 ((ULong64_t)lESDevent->GetBunchCrossNumber() ) );
1713 lMCevent = MCEvent();
1715 Printf("ERROR: Could not retrieve MC event \n");
1716 cout << "Name of the file with pb :" << fInputHandler->GetTree()->GetCurrentFile()->GetName() << endl;
1720 lMCstack = lMCevent->Stack();
1722 Printf("ERROR: Could not retrieve MC stack \n");
1723 cout << "Name of the file with pb :" << fInputHandler->GetTree()->GetCurrentFile()->GetName() << endl;
1726 TArrayF mcPrimaryVtx;
1727 AliGenEventHeader* mcHeader=lMCevent->GenEventHeader();
1728 if(!mcHeader) return;
1729 mcHeader->PrimaryVertex(mcPrimaryVtx);
1731 //------------------------------------------------
1732 // Multiplicity Information Acquistion
1733 //------------------------------------------------
1735 //REVISED multiplicity estimator after 'multiplicity day' (2011)
1736 Int_t lMultiplicity = -100;
1737 Int_t lMultiplicityV0A = -100;
1738 Int_t lMultiplicityZNA = -100;
1739 Int_t lMultiplicityTRK = -100;
1740 Int_t lMultiplicitySPD = -100;
1743 if(fkIsNuclear == kFALSE) lMultiplicity = fESDtrackCuts->GetReferenceMultiplicity(lESDevent, AliESDtrackCuts::kTrackletsITSTPC, fEtaRefMult );
1745 //--------- GENERATED NUMBER OF CHARGED PARTICLES
1746 // ---> Set Variables to Zero again
1747 // ---> Variable Definition
1749 Long_t lNumberOfCharged = 0;
1751 //----- Loop on Stack ----------------------------------------------------------------
1752 for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < (lMCstack->GetNtrack()); iCurrentLabelStack++)
1753 {// This is the begining of the loop on tracks
1754 TParticle* particleOne = lMCstack->Particle(iCurrentLabelStack);
1755 if(!particleOne) continue;
1756 if(!particleOne->GetPDG()) continue;
1757 Double_t lThisCharge = particleOne->GetPDG()->Charge()/3.;
1758 if(TMath::Abs(lThisCharge)<0.001) continue;
1759 if(! (lMCstack->IsPhysicalPrimary(iCurrentLabelStack)) ) continue;
1761 //Double_t gpt = particleOne -> Pt();
1762 Double_t geta = particleOne -> Eta();
1764 if( TMath::Abs(geta) < 0.5) lNumberOfCharged++;
1765 }//End of loop on tracks
1766 //----- End Loop on Stack ------------------------------------------------------------
1769 //---> If this is a nuclear collision, then go nuclear on "multiplicity" variable...
1770 //---> Warning: Experimental
1771 if(fkIsNuclear == kTRUE){
1772 AliCentrality* centrality;
1773 centrality = lESDevent->GetCentrality();
1774 lMultiplicity = ( ( Int_t ) ( centrality->GetCentralityPercentile( fCentralityEstimator.Data() ) ) );
1775 lMultiplicityV0A = ( ( Int_t ) ( centrality->GetCentralityPercentile( "V0A" ) ) );
1776 lMultiplicityZNA = ( ( Int_t ) ( centrality->GetCentralityPercentile( "ZNA" ) ) );
1777 lMultiplicityTRK = ( ( Int_t ) ( centrality->GetCentralityPercentile( "TRK" ) ) );
1778 lMultiplicitySPD = ( ( Int_t ) ( centrality->GetCentralityPercentile( "CL1" ) ) );
1779 if (centrality->GetQuality()>1) {
1780 PostData(1, fListHist);
1781 PostData(2, fTreeCascade);
1786 if( fkSelectPeripheral ){
1787 if( lMultiplicity < 60 || lMultiplicity >= 80. ){
1788 //Event is outside 60-80% centrality in V0M!
1789 PostData(1, fListHist);
1790 PostData(2, fTreeCascade);
1796 //Set variable for filling tree afterwards!
1797 //---> pp case......: GetReferenceMultiplicity
1798 //---> Pb-Pb case...: Centrality by V0M
1800 fTreeCascVarMultiplicity = lMultiplicity;
1801 fTreeCascVarMultiplicityMC = lNumberOfCharged;
1802 fTreeCascVarMultiplicityV0A = lMultiplicityV0A;
1803 fTreeCascVarMultiplicityZNA = lMultiplicityZNA;
1804 fTreeCascVarMultiplicityTRK = lMultiplicityTRK;
1805 fTreeCascVarMultiplicitySPD = lMultiplicitySPD;
1807 fHistV0MultiplicityBeforeTrigSel->Fill ( lESDevent->GetNumberOfV0s() );
1808 fHistMultiplicityBeforeTrigSel->Fill ( lMultiplicity );
1809 fHistMultiplicityV0ABeforeTrigSel->Fill ( lMultiplicityV0A );
1810 fHistMultiplicityZNABeforeTrigSel->Fill ( lMultiplicityZNA );
1811 fHistMultiplicityTRKBeforeTrigSel->Fill ( lMultiplicityTRK );
1812 fHistMultiplicitySPDBeforeTrigSel->Fill ( lMultiplicitySPD );
1814 //------------------------------------------------
1815 // MC Information Acquistion
1816 //------------------------------------------------
1818 Int_t iNumberOfPrimaries = -1;
1819 iNumberOfPrimaries = lMCstack->GetNprimary();
1820 if(iNumberOfPrimaries < 1) return;
1822 //------------------------------------------------
1823 // Variable Definition
1824 //------------------------------------------------
1826 Int_t lNbMCPrimary = 0;
1828 Double_t lPtCurrentPart = 0;
1830 //Int_t lComeFromSigma = 0;
1832 // current mc particle 's mother
1833 //Int_t iCurrentMother = 0;
1834 lNbMCPrimary = lMCstack->GetNprimary();
1836 //------------------------------------------------
1837 // Pre-Physics Selection
1838 //------------------------------------------------
1841 fTreeCascVarEvHasXiMinus = kFALSE;
1842 fTreeCascVarEvHasXiPlus = kFALSE;
1843 fTreeCascVarEvHasOmegaMinus = kFALSE;
1844 fTreeCascVarEvHasOmegaPlus = kFALSE;
1845 fTreeCascVarEvHasLambda = kFALSE;
1846 fTreeCascVarEvHasAntiLambda = kFALSE;
1848 fTreeCascVarEvHasLowPtXiMinus = kFALSE;
1849 fTreeCascVarEvHasLowPtXiPlus = kFALSE;
1850 fTreeCascVarEvHasLowPtOmegaMinus = kFALSE;
1851 fTreeCascVarEvHasLowPtOmegaPlus = kFALSE;
1852 fTreeCascVarEvHasLowPtLambda = kFALSE;
1853 fTreeCascVarEvHasLowPtAntiLambda = kFALSE;
1855 fTreeCascVarEvHasVeryLowPtXiMinus = kFALSE;
1856 fTreeCascVarEvHasVeryLowPtXiPlus = kFALSE;
1857 fTreeCascVarEvHasVeryLowPtOmegaMinus = kFALSE;
1858 fTreeCascVarEvHasVeryLowPtOmegaPlus = kFALSE;
1859 fTreeCascVarEvHasVeryLowPtLambda = kFALSE;
1860 fTreeCascVarEvHasVeryLowPtAntiLambda = kFALSE;
1863 //----- Loop on primary Xi, Omega --------------------------------------------------------------
1864 for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < lNbMCPrimary; iCurrentLabelStack++)
1865 {// This is the begining of the loop on primaries
1867 TParticle* lCurrentParticlePrimary = 0x0;
1868 lCurrentParticlePrimary = lMCstack->Particle( iCurrentLabelStack );
1869 if(!lCurrentParticlePrimary){
1870 Printf("Cascade loop %d - MC TParticle pointer to current stack particle = 0x0 ! Skip ...\n", iCurrentLabelStack );
1874 //Event Type Acquisition
1875 if(lCurrentParticlePrimary->GetPdgCode() == 3312){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) ) fTreeCascVarEvHasXiMinus = kTRUE; }
1876 if(lCurrentParticlePrimary->GetPdgCode() ==-3312){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) ) fTreeCascVarEvHasXiPlus = kTRUE; }
1877 if(lCurrentParticlePrimary->GetPdgCode() == 3334){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) ) fTreeCascVarEvHasOmegaMinus = kTRUE; }
1878 if(lCurrentParticlePrimary->GetPdgCode() ==-3334){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) ) fTreeCascVarEvHasOmegaPlus = kTRUE; }
1879 if(lCurrentParticlePrimary->GetPdgCode() == 3122){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) ) fTreeCascVarEvHasLambda = kTRUE; }
1880 if(lCurrentParticlePrimary->GetPdgCode() ==-3122){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) ) fTreeCascVarEvHasAntiLambda = kTRUE; }
1882 if(lCurrentParticlePrimary->GetPdgCode() == 3312){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<2.0) fTreeCascVarEvHasLowPtXiMinus = kTRUE; }
1883 if(lCurrentParticlePrimary->GetPdgCode() ==-3312){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<2.0) fTreeCascVarEvHasLowPtXiPlus = kTRUE; }
1884 if(lCurrentParticlePrimary->GetPdgCode() == 3334){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<2.0) fTreeCascVarEvHasLowPtOmegaMinus = kTRUE; }
1885 if(lCurrentParticlePrimary->GetPdgCode() ==-3334){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<2.0) fTreeCascVarEvHasLowPtOmegaPlus = kTRUE; }
1886 if(lCurrentParticlePrimary->GetPdgCode() == 3122){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<2.0) fTreeCascVarEvHasLowPtLambda = kTRUE; }
1887 if(lCurrentParticlePrimary->GetPdgCode() ==-3122){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<2.0) fTreeCascVarEvHasLowPtAntiLambda = kTRUE; }
1889 if(lCurrentParticlePrimary->GetPdgCode() == 3312){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<1.2) fTreeCascVarEvHasVeryLowPtXiMinus = kTRUE; }
1890 if(lCurrentParticlePrimary->GetPdgCode() ==-3312){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<1.2) fTreeCascVarEvHasVeryLowPtXiPlus = kTRUE; }
1891 if(lCurrentParticlePrimary->GetPdgCode() == 3334){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<1.2) fTreeCascVarEvHasVeryLowPtOmegaMinus = kTRUE; }
1892 if(lCurrentParticlePrimary->GetPdgCode() ==-3334){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<1.2) fTreeCascVarEvHasVeryLowPtOmegaPlus = kTRUE; }
1893 if(lCurrentParticlePrimary->GetPdgCode() == 3122){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<1.2) fTreeCascVarEvHasVeryLowPtLambda = kTRUE; }
1894 if(lCurrentParticlePrimary->GetPdgCode() ==-3122){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<1.2) fTreeCascVarEvHasVeryLowPtAntiLambda = kTRUE; }
1896 if ( TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3312 || TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3334 ) {
1897 Double_t lRapXiMCPrimary = -100;
1898 if( (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) != 0 ) {
1899 if ( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) !=0 ){
1900 lRapXiMCPrimary = 0.5*TMath::Log( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) );
1904 //=================================================================================
1906 if( lCurrentParticlePrimary->GetPdgCode() == 3312 ){
1907 lPtCurrentPart = lCurrentParticlePrimary->Pt();
1908 f3dHistGenPtVsYVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
1909 f3dHistGenPtVsYCMSVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
1911 f3dHistGenPtVsYVsMultMCXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
1912 f3dHistGenPtVsYCMSVsMultMCXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
1914 f3dHistGenPtVsYVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
1915 f3dHistGenPtVsYCMSVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
1917 f3dHistGenPtVsYVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
1918 f3dHistGenPtVsYCMSVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
1920 f3dHistGenPtVsYVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
1921 f3dHistGenPtVsYCMSVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
1923 f3dHistGenPtVsYVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
1924 f3dHistGenPtVsYCMSVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
1926 if( lCurrentParticlePrimary->GetPdgCode() == -3312 ){
1927 lPtCurrentPart = lCurrentParticlePrimary->Pt();
1928 f3dHistGenPtVsYVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
1929 f3dHistGenPtVsYCMSVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
1931 f3dHistGenPtVsYVsMultMCXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
1932 f3dHistGenPtVsYCMSVsMultMCXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
1934 f3dHistGenPtVsYVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
1935 f3dHistGenPtVsYCMSVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
1937 f3dHistGenPtVsYVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
1938 f3dHistGenPtVsYCMSVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
1940 f3dHistGenPtVsYVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
1941 f3dHistGenPtVsYCMSVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
1943 f3dHistGenPtVsYVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
1944 f3dHistGenPtVsYCMSVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
1947 if( lCurrentParticlePrimary->GetPdgCode() == 3334 ){
1948 lPtCurrentPart = lCurrentParticlePrimary->Pt();
1949 f3dHistGenPtVsYVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
1950 f3dHistGenPtVsYCMSVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
1952 f3dHistGenPtVsYVsMultMCOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
1953 f3dHistGenPtVsYCMSVsMultMCOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
1955 f3dHistGenPtVsYVsMultV0AOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
1956 f3dHistGenPtVsYCMSVsMultV0AOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
1958 f3dHistGenPtVsYVsMultZNAOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
1959 f3dHistGenPtVsYCMSVsMultZNAOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
1961 f3dHistGenPtVsYVsMultTRKOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
1962 f3dHistGenPtVsYCMSVsMultTRKOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
1964 f3dHistGenPtVsYVsMultSPDOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
1965 f3dHistGenPtVsYCMSVsMultSPDOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
1967 if( lCurrentParticlePrimary->GetPdgCode() == -3334 ){
1968 lPtCurrentPart = lCurrentParticlePrimary->Pt();
1969 f3dHistGenPtVsYVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
1970 f3dHistGenPtVsYCMSVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
1972 f3dHistGenPtVsYVsMultMCOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
1973 f3dHistGenPtVsYCMSVsMultMCOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
1975 f3dHistGenPtVsYVsMultV0AOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
1976 f3dHistGenPtVsYCMSVsMultV0AOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
1978 f3dHistGenPtVsYVsMultZNAOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
1979 f3dHistGenPtVsYCMSVsMultZNAOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
1981 f3dHistGenPtVsYVsMultTRKOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
1982 f3dHistGenPtVsYCMSVsMultTRKOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
1984 f3dHistGenPtVsYVsMultSPDOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
1985 f3dHistGenPtVsYCMSVsMultSPDOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
1989 //----- End Loop on primary Xi, Omega ----------------------------------------------------------
1991 // ---> Set Variables to Zero again
1992 // ---> Variable Definition
1996 //------------------------------------------------
1997 // Physics Selection
1998 //------------------------------------------------
2000 UInt_t maskIsSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
2001 Bool_t isSelected = 0;
2002 isSelected = (maskIsSelected & AliVEvent::kMB) == AliVEvent::kMB;
2004 //pA triggering: CINT7
2005 if( fkSwitchINT7 ) isSelected = (maskIsSelected & AliVEvent::kINT7) == AliVEvent::kINT7;
2007 //Standard Min-Bias Selection
2008 if ( ! isSelected ) {
2009 PostData(1, fListHist);
2010 PostData(2, fTreeCascade);
2014 //------------------------------------------------
2015 // Rerun cascade vertexer!
2016 //------------------------------------------------
2018 if( fkRunVertexers ){
2019 lESDevent->ResetCascades();
2020 lESDevent->ResetV0s();
2022 AliV0vertexer lV0vtxer;
2023 AliCascadeVertexer lCascVtxer;
2025 lV0vtxer.SetDefaultCuts(fV0VertexerSels);
2026 lCascVtxer.SetDefaultCuts(fCascadeVertexerSels);
2028 lV0vtxer.Tracks2V0vertices(lESDevent);
2029 lCascVtxer.V0sTracks2CascadeVertices(lESDevent);
2031 //------------------------------------------------
2032 // After Trigger Selection
2033 //------------------------------------------------
2035 lNumberOfV0s = lESDevent->GetNumberOfV0s();
2037 //Set variable for filling tree afterwards!
2038 fHistV0MultiplicityForTrigEvt->Fill(lNumberOfV0s);
2039 fHistMultiplicityForTrigEvt->Fill ( lMultiplicity );
2040 fHistMultiplicityV0AForTrigEvt ->Fill( lMultiplicityV0A );
2041 fHistMultiplicityZNAForTrigEvt ->Fill( lMultiplicityZNA );
2042 fHistMultiplicityTRKForTrigEvt ->Fill( lMultiplicityTRK );
2043 fHistMultiplicitySPDForTrigEvt ->Fill( lMultiplicitySPD );
2045 //------------------------------------------------
2046 // Getting: Primary Vertex + MagField Info
2047 //------------------------------------------------
2049 const AliESDVertex *lPrimaryTrackingESDVtx = lESDevent->GetPrimaryVertexTracks();
2050 // get the vtx stored in ESD found with tracks
2051 lPrimaryTrackingESDVtx->GetXYZ( lTrkgPrimaryVtxPos );
2053 const AliESDVertex *lPrimaryBestESDVtx = lESDevent->GetPrimaryVertex();
2054 // get the best primary vertex available for the event
2055 // As done in AliCascadeVertexer, we keep the one which is the best one available.
2056 // between : Tracking vertex > SPD vertex > TPC vertex > default SPD vertex
2057 // This one will be used for next calculations (DCA essentially)
2058 lPrimaryBestESDVtx->GetXYZ( lBestPrimaryVtxPos );
2060 Double_t lPrimaryVtxPosition[3];
2061 const AliVVertex *primaryVtx = lESDevent->GetPrimaryVertex();
2062 lPrimaryVtxPosition[0] = primaryVtx->GetX();
2063 lPrimaryVtxPosition[1] = primaryVtx->GetY();
2064 lPrimaryVtxPosition[2] = primaryVtx->GetZ();
2065 fHistPVx->Fill( lPrimaryVtxPosition[0] );
2066 fHistPVy->Fill( lPrimaryVtxPosition[1] );
2067 fHistPVz->Fill( lPrimaryVtxPosition[2] );
2069 //------------------------------------------------
2070 // Primary Vertex Requirements Section:
2071 // ---> pp and PbPb: Only requires |z|<10cm
2072 // ---> pPb: all requirements checked at this stage
2073 //------------------------------------------------
2075 //Roberto's PV selection criteria, implemented 17th April 2013
2077 /* vertex selection */
2078 Bool_t fHasVertex = kFALSE;
2080 const AliESDVertex *vertex = lESDevent->GetPrimaryVertexTracks();
2081 if (vertex->GetNContributors() < 1) {
2082 vertex = lESDevent->GetPrimaryVertexSPD();
2083 if (vertex->GetNContributors() < 1) fHasVertex = kFALSE;
2084 else fHasVertex = kTRUE;
2085 TString vtxTyp = vertex->GetTitle();
2086 Double_t cov[6]={0};
2087 vertex->GetCovarianceMatrix(cov);
2088 Double_t zRes = TMath::Sqrt(cov[5]);
2089 if (vtxTyp.Contains("vertexer:Z") && (zRes>0.25)) fHasVertex = kFALSE;
2091 else fHasVertex = kTRUE;
2093 //Is First event in chunk rejection: Still present!
2094 if(fkpAVertexSelection==kTRUE && fHasVertex == kFALSE) {
2095 AliWarning("Pb / | PV does not satisfy selection criteria!");
2096 PostData(1, fListHist);
2097 PostData(2, fTreeCascade);
2101 //Is First event in chunk rejection: Still present!
2102 if(fkpAVertexSelection==kTRUE && fUtils->IsFirstEventInChunk(lESDevent)) {
2103 AliWarning("Pb / | This is the first event in the chunk!");
2104 PostData(1, fListHist);
2105 PostData(2, fTreeCascade);
2109 //17 April Fix: Always do primary vertex Z selection, after pA vertex selection from Roberto
2110 if(TMath::Abs(lBestPrimaryVtxPos[2]) > 10.0) {
2111 AliWarning("Pb / | Z position of Best Prim Vtx | > 10.0 cm ... return !");
2112 PostData(1, fListHist);
2113 PostData(2, fTreeCascade);
2117 lMagneticField = lESDevent->GetMagneticField( );
2118 fHistV0MultiplicityForSelEvt ->Fill( lNumberOfV0s );
2119 fHistMultiplicity->Fill(lMultiplicity);
2120 fHistMultiplicityV0A->Fill(lMultiplicityV0A);
2121 fHistMultiplicityZNA->Fill(lMultiplicityZNA);
2122 fHistMultiplicityTRK->Fill(lMultiplicityTRK);
2123 fHistMultiplicitySPD->Fill(lMultiplicitySPD);
2125 //------------------------------------------------
2126 // SKIP: Events with well-established PVtx
2127 //------------------------------------------------
2129 const AliESDVertex *lPrimaryTrackingESDVtxCheck = lESDevent->GetPrimaryVertexTracks();
2130 const AliESDVertex *lPrimarySPDVtx = lESDevent->GetPrimaryVertexSPD();
2131 if (!lPrimarySPDVtx->GetStatus() && !lPrimaryTrackingESDVtxCheck->GetStatus() && fkpAVertexSelection==kFALSE ){
2132 AliWarning("Pb / No SPD prim. vertex nor prim. Tracking vertex ... return !");
2133 PostData(1, fListHist);
2134 PostData(2, fTreeCascade);
2137 fHistV0MultiplicityForSelEvtNoTPCOnly ->Fill( lNumberOfV0s );
2138 fHistMultiplicityNoTPCOnly->Fill(lMultiplicity);
2139 fHistMultiplicityV0ANoTPCOnly->Fill(lMultiplicityV0A);
2140 fHistMultiplicityZNANoTPCOnly->Fill(lMultiplicityZNA);
2141 fHistMultiplicityTRKNoTPCOnly->Fill(lMultiplicityTRK);
2142 fHistMultiplicitySPDNoTPCOnly->Fill(lMultiplicitySPD);
2144 //------------------------------------------------
2145 // Pileup Rejection Studies
2146 //------------------------------------------------
2148 // FIXME : quality selection regarding pile-up rejection
2149 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
2150 AliWarning("Pb / This is tagged as Pileup from SPD... return !");
2151 PostData(1, fListHist);
2152 PostData(2, fTreeCascade);
2155 fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup ->Fill( lNumberOfV0s );
2156 fHistMultiplicityNoTPCOnlyNoPileup->Fill(lMultiplicity);
2157 fHistMultiplicityV0ANoTPCOnlyNoPileup->Fill(lMultiplicityV0A);
2158 fHistMultiplicityZNANoTPCOnlyNoPileup->Fill(lMultiplicityZNA);
2159 fHistMultiplicityTRKNoTPCOnlyNoPileup->Fill(lMultiplicityTRK);
2160 fHistMultiplicitySPDNoTPCOnlyNoPileup->Fill(lMultiplicitySPD);
2162 //Do control histograms without the IsFromVertexerZ events, but consider them in analysis...
2163 if( ! (lESDevent->GetPrimaryVertex()->IsFromVertexerZ() ) ){
2164 fHistPVxAnalysis->Fill( lPrimaryVtxPosition[0] );
2165 fHistPVyAnalysis->Fill( lPrimaryVtxPosition[1] );
2166 fHistPVzAnalysis->Fill( lPrimaryVtxPosition[2] );
2169 //------------------------------------------------
2170 // stack loop starts here
2171 //------------------------------------------------
2173 //----- Loop on primary Xi, Omega --------------------------------------------------------------
2174 for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < lNbMCPrimary; iCurrentLabelStack++)
2175 {// This is the begining of the loop on primaries
2177 TParticle* lCurrentParticlePrimary = 0x0;
2178 lCurrentParticlePrimary = lMCstack->Particle( iCurrentLabelStack );
2179 if(!lCurrentParticlePrimary){
2180 Printf("Cascade loop %d - MC TParticle pointer to current stack particle = 0x0 ! Skip ...\n", iCurrentLabelStack );
2183 if ( TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3312 || TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3334 ) {
2184 Double_t lRapXiMCPrimary = -100;
2185 if( (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) != 0 ) {
2186 if ( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) !=0 ){
2187 lRapXiMCPrimary = 0.5*TMath::Log( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) );
2191 //=================================================================================
2193 if( lCurrentParticlePrimary->GetPdgCode() == 3312 ){
2194 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2195 f3dHistGenSelectedPtVsYVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
2196 f3dHistGenSelectedPtVsYCMSVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
2198 f3dHistGenSelectedPtVsYVsMultMCXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
2199 f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
2201 f3dHistGenSelectedPtVsYVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
2202 f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2204 f3dHistGenSelectedPtVsYVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
2205 f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
2207 f3dHistGenSelectedPtVsYVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
2208 f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
2210 f3dHistGenSelectedPtVsYVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
2211 f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
2213 if( lCurrentParticlePrimary->GetPdgCode() == -3312 ){
2214 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2215 f3dHistGenSelectedPtVsYVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
2216 f3dHistGenSelectedPtVsYCMSVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
2218 f3dHistGenSelectedPtVsYVsMultMCXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
2219 f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
2221 f3dHistGenSelectedPtVsYVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
2222 f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2224 f3dHistGenSelectedPtVsYVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
2225 f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
2227 f3dHistGenSelectedPtVsYVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
2228 f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
2230 f3dHistGenSelectedPtVsYVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
2231 f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
2234 if( lCurrentParticlePrimary->GetPdgCode() == 3334 ){
2235 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2236 f3dHistGenSelectedPtVsYVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
2237 f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
2239 f3dHistGenSelectedPtVsYVsMultMCOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
2240 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
2242 f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
2243 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2245 f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
2246 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
2248 f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
2249 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
2251 f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
2252 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
2254 if( lCurrentParticlePrimary->GetPdgCode() == -3334 ){
2255 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2256 f3dHistGenSelectedPtVsYVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
2257 f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
2259 f3dHistGenSelectedPtVsYVsMultMCOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
2260 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
2262 f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
2263 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2265 f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
2266 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
2268 f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
2269 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
2271 f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
2272 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
2276 //----- End Loop on primary Xi, Omega ----------------------------------------------------------
2279 //----- Loop on primary Xi, Omega --------------------------------------------------------------
2280 for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < (lMCstack->GetNtrack()); iCurrentLabelStack++)
2281 {// This is the begining of the loop on primaries
2283 TParticle* lCurrentParticlePrimary = 0x0;
2284 lCurrentParticlePrimary = lMCstack->Particle( iCurrentLabelStack );
2285 if(!lCurrentParticlePrimary){
2286 Printf("Cascade loop %d - MC TParticle pointer to current stack particle = 0x0 ! Skip ...\n", iCurrentLabelStack );
2289 if ( TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3312 || TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3334 ) {
2290 Double_t lRapXiMCPrimary = -100;
2291 if( (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) != 0 ) {
2292 if ( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) !=0 ){
2293 lRapXiMCPrimary = 0.5*TMath::Log( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) );
2296 //IsPhysicalPrimary: Cross-check with old index test
2297 // (cascades -> negligible difference ?... )
2298 if ( lMCstack->IsPhysicalPrimary(iCurrentLabelStack)!=kTRUE ) continue;
2300 //=================================================================================
2302 if( lCurrentParticlePrimary->GetPdgCode() == 3312 ){
2303 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2304 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2306 if( lCurrentParticlePrimary->GetPdgCode() == -3312 ){
2307 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2308 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2311 if( lCurrentParticlePrimary->GetPdgCode() == 3334 ){
2312 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2313 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2315 if( lCurrentParticlePrimary->GetPdgCode() == -3334 ){
2316 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2317 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2321 //----- End Loop on primary Xi, Omega ----------------------------------------------------------
2324 //------------------------------------------------
2325 // MAIN CASCADE LOOP STARTS HERE
2326 //------------------------------------------------
2327 // Code Credit: Antonin Maire (thanks^100)
2328 // ---> This is an adaptation
2330 Long_t ncascades = 0;
2331 ncascades = lESDevent->GetNumberOfCascades();
2334 for (Int_t iXi = 0; iXi < ncascades; iXi++){
2335 //------------------------------------------------
2337 //------------------------------------------------
2338 //Double_t lTrkgPrimaryVtxRadius3D = -500.0;
2339 //Double_t lBestPrimaryVtxRadius3D = -500.0;
2341 // - 1st part of initialisation : variables needed to store AliESDCascade data members
2342 Double_t lEffMassXi = 0. ;
2343 //Double_t lChi2Xi = -1. ;
2344 Double_t lDcaXiDaughters = -1. ;
2345 Double_t lXiCosineOfPointingAngle = -1. ;
2346 Double_t lPosXi[3] = { -1000.0, -1000.0, -1000.0 };
2347 Double_t lXiRadius = -1000. ;
2349 // - 2nd part of initialisation : Nbr of clusters within TPC for the 3 daughter cascade tracks
2350 Int_t lPosTPCClusters = -1; // For ESD only ...//FIXME : wait for availability in AOD
2351 Int_t lNegTPCClusters = -1; // For ESD only ...
2352 Int_t lBachTPCClusters = -1; // For ESD only ...
2354 // - 3rd part of initialisation : about V0 part in cascades
2355 Double_t lInvMassLambdaAsCascDghter = 0.;
2356 //Double_t lV0Chi2Xi = -1. ;
2357 Double_t lDcaV0DaughtersXi = -1.;
2359 Double_t lDcaBachToPrimVertexXi = -1., lDcaV0ToPrimVertexXi = -1.;
2360 Double_t lDcaPosToPrimVertexXi = -1.;
2361 Double_t lDcaNegToPrimVertexXi = -1.;
2362 Double_t lV0CosineOfPointingAngleXi = -1. ;
2363 Double_t lV0CosineOfPointingAngleXiSpecial = -1. ;
2364 Double_t lPosV0Xi[3] = { -1000. , -1000., -1000. }; // Position of VO coming from cascade
2365 Double_t lV0RadiusXi = -1000.0;
2366 Double_t lV0quality = 0.;
2368 // - 4th part of initialisation : Effective masses
2369 Double_t lInvMassXiMinus = 0.;
2370 Double_t lInvMassXiPlus = 0.;
2371 Double_t lInvMassOmegaMinus = 0.;
2372 Double_t lInvMassOmegaPlus = 0.;
2374 // - 6th part of initialisation : extra info for QA
2375 Double_t lXiMomX = 0. , lXiMomY = 0., lXiMomZ = 0.;
2376 Double_t lXiTransvMom = 0. ;
2377 Double_t lXiTransvMomMC= 0. ;
2378 Double_t lXiTotMom = 0. ;
2380 Double_t lBachMomX = 0., lBachMomY = 0., lBachMomZ = 0.;
2381 //Double_t lBachTransvMom = 0.;
2382 //Double_t lBachTotMom = 0.;
2384 fTreeCascVarNegNSigmaPion = -100;
2385 fTreeCascVarNegNSigmaProton = -100;
2386 fTreeCascVarPosNSigmaPion = -100;
2387 fTreeCascVarPosNSigmaProton = -100;
2388 fTreeCascVarBachNSigmaPion = -100;
2389 fTreeCascVarBachNSigmaKaon = -100;
2391 Short_t lChargeXi = -2;
2392 //Double_t lV0toXiCosineOfPointingAngle = 0. ;
2394 Double_t lRapXi = -20.0, lRapOmega = -20.0, lRapMC = -20.0; // lEta = -20.0, lTheta = 360., lPhi = 720. ;
2395 //Double_t lAlphaXi = -200., lPtArmXi = -200.0;
2397 // -------------------------------------
2398 // II.ESD - Calculation Part dedicated to Xi vertices (ESD)
2400 AliESDcascade *xi = lESDevent->GetCascade(iXi);
2404 // - II.Step 1 : around primary vertex
2406 //lTrkgPrimaryVtxRadius3D = TMath::Sqrt( lTrkgPrimaryVtxPos[0] * lTrkgPrimaryVtxPos[0] +
2407 // lTrkgPrimaryVtxPos[1] * lTrkgPrimaryVtxPos[1] +
2408 // lTrkgPrimaryVtxPos[2] * lTrkgPrimaryVtxPos[2] );
2410 //lBestPrimaryVtxRadius3D = TMath::Sqrt( lBestPrimaryVtxPos[0] * lBestPrimaryVtxPos[0] +
2411 // lBestPrimaryVtxPos[1] * lBestPrimaryVtxPos[1] +
2412 // lBestPrimaryVtxPos[2] * lBestPrimaryVtxPos[2] );
2414 // - II.Step 2 : Assigning the necessary variables for specific AliESDcascade data members (ESD)
2417 xi->ChangeMassHypothesis(lV0quality , 3312); // default working hypothesis : cascade = Xi- decay
2419 lEffMassXi = xi->GetEffMassXi();
2420 //lChi2Xi = xi->GetChi2Xi();
2421 lDcaXiDaughters = xi->GetDcaXiDaughters();
2422 lXiCosineOfPointingAngle = xi->GetCascadeCosineOfPointingAngle( lBestPrimaryVtxPos[0],
2423 lBestPrimaryVtxPos[1],
2424 lBestPrimaryVtxPos[2] );
2425 // Take care : the best available vertex should be used (like in AliCascadeVertexer)
2427 xi->GetXYZcascade( lPosXi[0], lPosXi[1], lPosXi[2] );
2428 lXiRadius = TMath::Sqrt( lPosXi[0]*lPosXi[0] + lPosXi[1]*lPosXi[1] );
2430 // - II.Step 3 : around the tracks : Bach + V0 (ESD)
2431 // ~ Necessary variables for ESDcascade data members coming from the ESDv0 part (inheritance)
2434 UInt_t lIdxPosXi = (UInt_t) TMath::Abs( xi->GetPindex() );
2435 UInt_t lIdxNegXi = (UInt_t) TMath::Abs( xi->GetNindex() );
2436 UInt_t lBachIdx = (UInt_t) TMath::Abs( xi->GetBindex() );
2437 // Care track label can be negative in MC production (linked with the track quality)
2438 // However = normally, not the case for track index ...
2440 // FIXME : rejection of a double use of a daughter track (nothing but just a crosscheck of what is done in the cascade vertexer)
2441 if(lBachIdx == lIdxNegXi) {
2442 AliWarning("Pb / Idx(Bach. track) = Idx(Neg. track) ... continue!"); continue;
2444 if(lBachIdx == lIdxPosXi) {
2445 AliWarning("Pb / Idx(Bach. track) = Idx(Pos. track) ... continue!"); continue;
2448 AliESDtrack *pTrackXi = lESDevent->GetTrack( lIdxPosXi );
2449 AliESDtrack *nTrackXi = lESDevent->GetTrack( lIdxNegXi );
2450 AliESDtrack *bachTrackXi = lESDevent->GetTrack( lBachIdx );
2452 if (!pTrackXi || !nTrackXi || !bachTrackXi ) {
2453 AliWarning("ERROR: Could not retrieve one of the 3 ESD daughter tracks of the cascade ...");
2457 fTreeCascVarPosEta = pTrackXi->Eta();
2458 fTreeCascVarNegEta = nTrackXi->Eta();
2459 fTreeCascVarBachEta = bachTrackXi->Eta();
2461 //Save shared clusters information
2462 fTreeCascVarNegSharedClusters = nTrackXi->GetTPCnclsS(0,159);
2463 fTreeCascVarPosSharedClusters = pTrackXi->GetTPCnclsS(0,159);
2464 fTreeCascVarBachSharedClusters = bachTrackXi->GetTPCnclsS(0,159);
2466 Double_t lBMom[3], lNMom[3], lPMom[3];
2467 xi->GetBPxPyPz( lBMom[0], lBMom[1], lBMom[2] );
2468 xi->GetPPxPyPz( lPMom[0], lPMom[1], lPMom[2] );
2469 xi->GetNPxPyPz( lNMom[0], lNMom[1], lNMom[2] );
2471 fTreeCascVarBachTransMom = TMath::Sqrt( lBMom[0]*lBMom[0] + lBMom[1]*lBMom[1] );
2472 fTreeCascVarPosTransMom = TMath::Sqrt( lPMom[0]*lPMom[0] + lPMom[1]*lPMom[1] );
2473 fTreeCascVarNegTransMom = TMath::Sqrt( lNMom[0]*lNMom[0] + lNMom[1]*lNMom[1] );
2475 //------------------------------------------------
2476 // TPC dEdx information
2477 //------------------------------------------------
2478 fTreeCascVarNegNSigmaPion = fPIDResponse->NumberOfSigmasTPC( nTrackXi, AliPID::kPion );
2479 fTreeCascVarNegNSigmaProton = fPIDResponse->NumberOfSigmasTPC( nTrackXi, AliPID::kProton );
2480 fTreeCascVarPosNSigmaPion = fPIDResponse->NumberOfSigmasTPC( pTrackXi, AliPID::kPion );
2481 fTreeCascVarPosNSigmaProton = fPIDResponse->NumberOfSigmasTPC( pTrackXi, AliPID::kProton );
2482 fTreeCascVarBachNSigmaPion = fPIDResponse->NumberOfSigmasTPC( bachTrackXi, AliPID::kPion );
2483 fTreeCascVarBachNSigmaKaon = fPIDResponse->NumberOfSigmasTPC( bachTrackXi, AliPID::kKaon );
2485 //------------------------------------------------
2486 // TPC Number of clusters info
2487 // --- modified to save the smallest number
2488 // --- of TPC clusters for the 3 tracks
2489 //------------------------------------------------
2491 lPosTPCClusters = pTrackXi->GetTPCNcls();
2492 lNegTPCClusters = nTrackXi->GetTPCNcls();
2493 lBachTPCClusters = bachTrackXi->GetTPCNcls();
2495 fTreeCascVarNegClusters = lNegTPCClusters;
2496 fTreeCascVarPosClusters = lPosTPCClusters;
2497 fTreeCascVarBachClusters = lBachTPCClusters;
2499 fTreeCascVarkITSRefitBachelor = kTRUE;
2500 fTreeCascVarkITSRefitNegative = kTRUE;
2501 fTreeCascVarkITSRefitPositive = kTRUE;
2503 // 1 - Poor quality related to TPCrefit
2504 ULong_t pStatus = pTrackXi->GetStatus();
2505 ULong_t nStatus = nTrackXi->GetStatus();
2506 ULong_t bachStatus = bachTrackXi->GetStatus();
2507 if ((pStatus&AliESDtrack::kTPCrefit) == 0) { AliWarning("Pb / V0 Pos. track has no TPCrefit ... continue!"); continue; }
2508 if ((nStatus&AliESDtrack::kTPCrefit) == 0) { AliWarning("Pb / V0 Neg. track has no TPCrefit ... continue!"); continue; }
2509 if ((bachStatus&AliESDtrack::kTPCrefit) == 0) { AliWarning("Pb / Bach. track has no TPCrefit ... continue!"); continue; }
2511 //Extra Debug Information: booleans for ITS refit
2512 if ((pStatus&AliESDtrack::kITSrefit) == 0) { fTreeCascVarkITSRefitPositive = kFALSE; }
2513 if ((nStatus&AliESDtrack::kITSrefit) == 0) { fTreeCascVarkITSRefitNegative = kFALSE; }
2514 if ((bachStatus&AliESDtrack::kITSrefit) == 0) { fTreeCascVarkITSRefitBachelor = kFALSE; }
2516 // 2 - Poor quality related to TPC clusters: lowest cut of 70 clusters
2517 if(lPosTPCClusters < 70) { AliWarning("Pb / V0 Pos. track has less than 70 TPC clusters ... continue!"); continue; }
2518 if(lNegTPCClusters < 70) { AliWarning("Pb / V0 Neg. track has less than 70 TPC clusters ... continue!"); continue; }
2519 if(lBachTPCClusters < 70) { AliWarning("Pb / Bach. track has less than 70 TPC clusters ... continue!"); continue; }
2520 Int_t leastnumberofclusters = 1000;
2521 if( lPosTPCClusters < leastnumberofclusters ) leastnumberofclusters = lPosTPCClusters;
2522 if( lNegTPCClusters < leastnumberofclusters ) leastnumberofclusters = lNegTPCClusters;
2523 if( lBachTPCClusters < leastnumberofclusters ) leastnumberofclusters = lBachTPCClusters;
2525 lInvMassLambdaAsCascDghter = xi->GetEffMass();
2526 // This value shouldn't change, whatever the working hyp. is : Xi-, Xi+, Omega-, Omega+
2527 lDcaV0DaughtersXi = xi->GetDcaV0Daughters();
2528 //lV0Chi2Xi = xi->GetChi2V0();
2530 lV0CosineOfPointingAngleXi = xi->GetV0CosineOfPointingAngle( lBestPrimaryVtxPos[0],
2531 lBestPrimaryVtxPos[1],
2532 lBestPrimaryVtxPos[2] );
2533 //Modification to check cosPA of v0 wrt to cascade vertex
2534 lV0CosineOfPointingAngleXiSpecial = xi->GetV0CosineOfPointingAngle( lPosXi[0],
2538 lDcaV0ToPrimVertexXi = xi->GetD( lBestPrimaryVtxPos[0],
2539 lBestPrimaryVtxPos[1],
2540 lBestPrimaryVtxPos[2] );
2542 lDcaBachToPrimVertexXi = TMath::Abs( bachTrackXi->GetD( lBestPrimaryVtxPos[0],
2543 lBestPrimaryVtxPos[1],
2545 // Note : AliExternalTrackParam::GetD returns an algebraic value ...
2547 xi->GetXYZ( lPosV0Xi[0], lPosV0Xi[1], lPosV0Xi[2] );
2548 lV0RadiusXi = TMath::Sqrt( lPosV0Xi[0]*lPosV0Xi[0] + lPosV0Xi[1]*lPosV0Xi[1] );
2550 lDcaPosToPrimVertexXi = TMath::Abs( pTrackXi ->GetD( lBestPrimaryVtxPos[0],
2551 lBestPrimaryVtxPos[1],
2554 lDcaNegToPrimVertexXi = TMath::Abs( nTrackXi ->GetD( lBestPrimaryVtxPos[0],
2555 lBestPrimaryVtxPos[1],
2558 // - II.Step 4 : around effective masses (ESD)
2559 // ~ change mass hypotheses to cover all the possibilities : Xi-/+, Omega -/+
2561 if( bachTrackXi->Charge() < 0 ) {
2563 xi->ChangeMassHypothesis(lV0quality , 3312);
2564 // Calculate the effective mass of the Xi- candidate.
2565 // pdg code 3312 = Xi-
2566 lInvMassXiMinus = xi->GetEffMassXi();
2569 xi->ChangeMassHypothesis(lV0quality , 3334);
2570 // Calculate the effective mass of the Xi- candidate.
2571 // pdg code 3334 = Omega-
2572 lInvMassOmegaMinus = xi->GetEffMassXi();
2575 xi->ChangeMassHypothesis(lV0quality , 3312); // Back to default hyp.
2576 }// end if negative bachelor
2579 if( bachTrackXi->Charge() > 0 ){
2581 xi->ChangeMassHypothesis(lV0quality , -3312);
2582 // Calculate the effective mass of the Xi+ candidate.
2583 // pdg code -3312 = Xi+
2584 lInvMassXiPlus = xi->GetEffMassXi();
2587 xi->ChangeMassHypothesis(lV0quality , -3334);
2588 // Calculate the effective mass of the Xi+ candidate.
2589 // pdg code -3334 = Omega+
2590 lInvMassOmegaPlus = xi->GetEffMassXi();
2593 xi->ChangeMassHypothesis(lV0quality , -3312); // Back to "default" hyp.
2594 }// end if positive bachelor
2595 // - II.Step 6 : extra info for QA (ESD)
2596 // miscellaneous pieces of info that may help regarding data quality assessment.
2599 xi->GetPxPyPz( lXiMomX, lXiMomY, lXiMomZ );
2600 lXiTransvMom = TMath::Sqrt( lXiMomX*lXiMomX + lXiMomY*lXiMomY );
2601 lXiTotMom = TMath::Sqrt( lXiMomX*lXiMomX + lXiMomY*lXiMomY + lXiMomZ*lXiMomZ );
2603 xi->GetBPxPyPz( lBachMomX, lBachMomY, lBachMomZ );
2604 //lBachTransvMom = TMath::Sqrt( lBachMomX*lBachMomX + lBachMomY*lBachMomY );
2605 //lBachTotMom = TMath::Sqrt( lBachMomX*lBachMomX + lBachMomY*lBachMomY + lBachMomZ*lBachMomZ );
2607 lChargeXi = xi->Charge();
2609 //lV0toXiCosineOfPointingAngle = xi->GetV0CosineOfPointingAngle( lPosXi[0], lPosXi[1], lPosXi[2] );
2611 lRapXi = xi->RapXi();
2612 lRapOmega = xi->RapOmega();
2614 //lTheta = xi->Theta() *180.0/TMath::Pi();
2615 //lPhi = xi->Phi() *180.0/TMath::Pi();
2616 //lAlphaXi = xi->AlphaXi();
2617 //lPtArmXi = xi->PtArmXi();
2619 //------------------------------------------------
2620 // Associate Cascade Candidates to Monte Carlo!
2621 //------------------------------------------------
2623 //Warning: Not using Continues... Need to fill tree later!
2625 Int_t lPDGCodeCascade = 0;
2627 Int_t lPID_BachMother = 0;
2628 Int_t lPID_NegMother = 0;
2629 Int_t lPID_PosMother = 0;
2630 fTreeCascVarIsPhysicalPrimary = 0; // 0: not defined, any candidate may have this
2632 fTreeCascVarPIDPositive = 0;
2633 fTreeCascVarPIDNegative = 0;
2634 fTreeCascVarPIDBachelor = 0;
2638 cout << "MC EventNumber : " << lMCevent->Header()->GetEvent()
2639 << " / MC event Number in Run : " << lMCevent->Header()->GetEventNrInRun() << endl;
2641 // - Step 4.1 : level of the V0 daughters
2643 //----------------------------------------
2644 // Regular MC ASSOCIATION STARTS HERE
2645 //----------------------------------------
2647 Int_t lblPosV0Dghter = (Int_t) TMath::Abs( pTrackXi->GetLabel() );
2648 // Abs value = needed ! question of quality track association ...
2649 Int_t lblNegV0Dghter = (Int_t) TMath::Abs( nTrackXi->GetLabel() );
2650 Int_t lblBach = (Int_t) TMath::Abs( bachTrackXi->GetLabel() );
2652 TParticle* mcPosV0Dghter = lMCstack->Particle( lblPosV0Dghter );
2653 TParticle* mcNegV0Dghter = lMCstack->Particle( lblNegV0Dghter );
2654 TParticle* mcBach = lMCstack->Particle( lblBach );
2656 fTreeCascVarPosTransMomMC = mcPosV0Dghter->Pt();
2657 fTreeCascVarNegTransMomMC = mcNegV0Dghter->Pt();
2659 fTreeCascVarPIDPositive = mcPosV0Dghter -> GetPdgCode();
2660 fTreeCascVarPIDNegative = mcNegV0Dghter -> GetPdgCode();
2661 fTreeCascVarPIDBachelor = mcBach->GetPdgCode();
2663 // - Step 4.2 : level of the Xi daughters
2665 Int_t lblMotherPosV0Dghter = mcPosV0Dghter->GetFirstMother() ;
2666 Int_t lblMotherNegV0Dghter = mcNegV0Dghter->GetFirstMother();
2668 //Rather uncivilized: Open brackets for each 'continue'
2669 if(! (lblMotherPosV0Dghter != lblMotherNegV0Dghter) ) { // same mother
2670 if(! (lblMotherPosV0Dghter < 0) ) { // mother != primary (!= -1)
2671 if(! (lblMotherNegV0Dghter < 0) ) {
2673 // mothers = Lambda candidate ... a priori
2675 TParticle* mcMotherPosV0Dghter = lMCstack->Particle( lblMotherPosV0Dghter );
2676 TParticle* mcMotherNegV0Dghter = lMCstack->Particle( lblMotherNegV0Dghter );
2678 // - Step 4.3 : level of Xi candidate
2680 Int_t lblGdMotherPosV0Dghter = mcMotherPosV0Dghter->GetFirstMother() ;
2681 Int_t lblGdMotherNegV0Dghter = mcMotherNegV0Dghter->GetFirstMother() ;
2683 if(! (lblGdMotherPosV0Dghter != lblGdMotherNegV0Dghter) ) {
2684 if(! (lblGdMotherPosV0Dghter < 0) ) { // primary lambda ...
2685 if(! (lblGdMotherNegV0Dghter < 0) ) { // primary lambda ...
2687 // Gd mothers = Xi candidate ... a priori
2689 TParticle* mcGdMotherPosV0Dghter = lMCstack->Particle( lblGdMotherPosV0Dghter );
2690 TParticle* mcGdMotherNegV0Dghter = lMCstack->Particle( lblGdMotherNegV0Dghter );
2692 Int_t lblMotherBach = (Int_t) TMath::Abs( mcBach->GetFirstMother() );
2694 // if( lblMotherBach != lblGdMotherPosV0Dghter ) continue; //same mother for bach and V0 daughters
2695 if(!(lblMotherBach != lblGdMotherPosV0Dghter)) { //same mother for bach and V0 daughters
2697 TParticle* mcMotherBach = lMCstack->Particle( lblMotherBach );
2699 lPID_BachMother = mcMotherBach->GetPdgCode();
2700 lPID_NegMother = mcGdMotherPosV0Dghter->GetPdgCode();
2701 lPID_PosMother = mcGdMotherNegV0Dghter->GetPdgCode();
2703 if(lPID_BachMother==lPID_NegMother && lPID_BachMother==lPID_PosMother){
2704 lPDGCodeCascade = lPID_BachMother;
2705 lXiTransvMomMC = mcMotherBach->Pt();
2706 if( lMCstack->IsPhysicalPrimary (lblMotherBach) ) fTreeCascVarIsPhysicalPrimary = 1; //Is Primary!
2707 if( lMCstack->IsSecondaryFromWeakDecay(lblMotherBach) ) fTreeCascVarIsPhysicalPrimary = 2; //Weak Decay!
2708 if( lMCstack->IsSecondaryFromMaterial (lblMotherBach) ) fTreeCascVarIsPhysicalPrimary = 3; //From Material!
2709 if ( (mcMotherBach->Energy() + mcMotherBach->Pz()) / (mcMotherBach->Energy() - mcMotherBach->Pz() +1.e-13) !=0 ){
2710 lRapMC = 0.5*TMath::Log( (mcMotherBach->Energy() + mcMotherBach->Pz()) / (mcMotherBach->Energy() - mcMotherBach->Pz() +1.e-13) );
2714 }}}}}}} //Ends all conditionals above...
2716 //----------------------------------------
2717 // Regular MC ASSOCIATION ENDS HERE
2718 //----------------------------------------
2720 //----------------------------------------
2721 // Swapped MC Association Starts Here
2722 //----------------------------------------
2724 fTreeCascVarPIDSwapped = 0; //Nothing
2725 if ( fkCheckSwapping ) { //on/off switch if not needed or otherwise broken
2727 Int_t lPID_BachMotherSwapped = 0;
2728 Int_t lPID_NegMotherSwapped = 0;
2729 Int_t lPID_PosMotherSwapped = 0;
2731 Int_t lblPosV0DghterSwapped = (Int_t) TMath::Abs( pTrackXi->GetLabel() );
2732 // Abs value = needed ! question of quality track association ...
2733 Int_t lblNegV0DghterSwapped = (Int_t) TMath::Abs( nTrackXi->GetLabel() );
2734 Int_t lblBachSwapped = (Int_t) TMath::Abs( bachTrackXi->GetLabel() );
2736 //This is SWAPPED association: swap like-sign particles
2737 TParticle* mcPosV0DghterSwapped = 0x0;
2738 TParticle* mcNegV0DghterSwapped = 0x0;
2739 TParticle* mcBachSwapped = 0x0;
2741 //Swapping Case 1: XiMinus/OmegaMinus swapped: exchange negative V0 daughter with bachelor
2742 if( lChargeXi == -1 ){
2743 mcPosV0DghterSwapped = lMCstack->Particle( lblPosV0DghterSwapped );
2744 mcNegV0DghterSwapped = lMCstack->Particle( lblBachSwapped );
2745 mcBachSwapped = lMCstack->Particle( lblNegV0DghterSwapped );
2747 //Swapping Case 2: XiPlus/OmegaPlus swapped: exchange positive V0 daughter with bachelor
2748 if( lChargeXi == 1 ){
2749 mcPosV0DghterSwapped = lMCstack->Particle( lblBachSwapped );
2750 mcNegV0DghterSwapped = lMCstack->Particle( lblNegV0DghterSwapped );
2751 mcBachSwapped = lMCstack->Particle( lblPosV0DghterSwapped );
2754 //fTreeCascVarPosTransMomMC = mcPosV0Dghter->Pt();
2755 //fTreeCascVarNegTransMomMC = mcNegV0Dghter->Pt();
2757 //fTreeCascVarPIDPositive = mcPosV0Dghter -> GetPdgCode();
2758 //fTreeCascVarPIDNegative = mcNegV0Dghter -> GetPdgCode();
2759 //fTreeCascVarPIDBachelor = mcBach->GetPdgCode();
2761 // - Step 4.2 : level of the Xi daughters
2763 Int_t lblMotherPosV0DghterSwapped = mcPosV0DghterSwapped->GetFirstMother() ;
2764 Int_t lblMotherNegV0DghterSwapped = mcNegV0DghterSwapped->GetFirstMother();
2766 //Rather uncivilized: Open brackets for each 'continue'
2767 if(! (lblMotherPosV0DghterSwapped != lblMotherNegV0DghterSwapped) ) { // same mother
2768 if(! (lblMotherPosV0DghterSwapped < 0) ) { // mother != primary (!= -1)
2769 if(! (lblMotherNegV0DghterSwapped < 0) ) {
2771 // mothers = Lambda candidate ... a priori
2773 TParticle* mcMotherPosV0DghterSwapped = lMCstack->Particle( lblMotherPosV0DghterSwapped );
2774 TParticle* mcMotherNegV0DghterSwapped = lMCstack->Particle( lblMotherNegV0DghterSwapped );
2776 // - Step 4.3 : level of Xi candidate
2778 Int_t lblGdMotherPosV0DghterSwapped = mcMotherPosV0DghterSwapped->GetFirstMother() ;
2779 Int_t lblGdMotherNegV0DghterSwapped = mcMotherNegV0DghterSwapped->GetFirstMother() ;
2781 if(! (lblGdMotherPosV0DghterSwapped != lblGdMotherNegV0DghterSwapped) ) {
2782 if(! (lblGdMotherPosV0DghterSwapped < 0) ) { // primary lambda ...
2783 if(! (lblGdMotherNegV0DghterSwapped < 0) ) { // primary lambda ...
2785 // Gd mothers = Xi candidate ... a priori
2787 TParticle* mcGdMotherPosV0DghterSwapped = lMCstack->Particle( lblGdMotherPosV0DghterSwapped );
2788 TParticle* mcGdMotherNegV0DghterSwapped = lMCstack->Particle( lblGdMotherNegV0DghterSwapped );
2790 Int_t lblMotherBachSwapped = (Int_t) TMath::Abs( mcBachSwapped->GetFirstMother() );
2792 // if( lblMotherBach != lblGdMotherPosV0Dghter ) continue; //same mother for bach and V0 daughters
2793 if(!(lblMotherBachSwapped != lblGdMotherPosV0DghterSwapped)) { //same mother for bach and V0 daughters
2795 TParticle* mcMotherBachSwapped = lMCstack->Particle( lblMotherBachSwapped );
2797 lPID_BachMotherSwapped = mcMotherBachSwapped->GetPdgCode();
2798 lPID_NegMotherSwapped = mcGdMotherPosV0DghterSwapped->GetPdgCode();
2799 lPID_PosMotherSwapped = mcGdMotherNegV0DghterSwapped->GetPdgCode();
2801 if(lPID_BachMotherSwapped==lPID_NegMotherSwapped && lPID_BachMotherSwapped==lPID_PosMotherSwapped){
2802 fTreeCascVarPIDSwapped = lPID_BachMotherSwapped; //there!
2805 }}}}}}} //Ends all conditionals above...
2808 //----------------------------------------
2809 // Swapped MC ASSOCIATION ENDS HERE
2810 //----------------------------------------
2812 //------------------------------------------------
2813 // Jai Salzwedel's femto-cut: better V0 exists
2814 //------------------------------------------------
2816 fTreeCascVarBadCascadeJai = kFALSE;
2817 fTreeCascVarDeltaDCA = -100;
2818 Float_t DCAV0DaughtersDiff = -100;
2819 for (Int_t iv0=0; iv0<lESDevent->GetNumberOfV0s(); iv0++) {
2820 AliESDv0 *v0 = lESDevent->GetV0(iv0);
2821 UInt_t posV0TrackIdx = (UInt_t) v0->GetPindex();
2822 UInt_t negV0TrackIdx = (UInt_t) v0->GetNindex();
2823 if ((posV0TrackIdx == lIdxPosXi) && (negV0TrackIdx == lIdxNegXi)) continue;
2824 // 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
2825 if ((posV0TrackIdx == lIdxPosXi) || (negV0TrackIdx == lIdxNegXi)) {
2826 DCAV0DaughtersDiff = lDcaV0DaughtersXi - v0->GetDcaV0Daughters();
2827 if( fTreeCascVarDeltaDCA < DCAV0DaughtersDiff ) fTreeCascVarDeltaDCA = DCAV0DaughtersDiff;
2828 if ( lDcaV0DaughtersXi > v0->GetDcaV0Daughters() ) { // DCA comparison criterion
2829 fTreeCascVarBadCascadeJai = kTRUE;
2830 } //end DCA comparison
2831 } // end shares a daughter check
2834 //------------------------------------------------
2835 // Set Variables for adding to tree
2836 //------------------------------------------------
2838 /* 1*/ fTreeCascVarCharge = lChargeXi;
2839 /* 2*/ if(lInvMassXiMinus!=0) fTreeCascVarMassAsXi = lInvMassXiMinus;
2840 /* 2*/ if(lInvMassXiPlus!=0) fTreeCascVarMassAsXi = lInvMassXiPlus;
2841 /* 3*/ if(lInvMassOmegaMinus!=0) fTreeCascVarMassAsOmega = lInvMassOmegaMinus;
2842 /* 3*/ if(lInvMassOmegaPlus!=0) fTreeCascVarMassAsOmega = lInvMassOmegaPlus;
2843 /* 4*/ fTreeCascVarPt = lXiTransvMom;
2844 /* 4*/ fTreeCascVarPtMC = lXiTransvMomMC;
2845 /* 5*/ fTreeCascVarRapXi = lRapXi ;
2846 /* 5*/ fTreeCascVarRapMC = lRapMC ;
2847 /* 6*/ fTreeCascVarRapOmega = lRapOmega ;
2848 /* 7*/ fTreeCascVarDCACascDaughters = lDcaXiDaughters;
2849 /* 8*/ fTreeCascVarDCABachToPrimVtx = lDcaBachToPrimVertexXi;
2850 /* 9*/ fTreeCascVarDCAV0Daughters = lDcaV0DaughtersXi;
2851 /*10*/ fTreeCascVarDCAV0ToPrimVtx = lDcaV0ToPrimVertexXi;
2852 /*11*/ fTreeCascVarDCAPosToPrimVtx = lDcaPosToPrimVertexXi;
2853 /*12*/ fTreeCascVarDCANegToPrimVtx = lDcaNegToPrimVertexXi;
2854 /*13*/ fTreeCascVarCascCosPointingAngle = lXiCosineOfPointingAngle;
2855 /*14*/ fTreeCascVarCascRadius = lXiRadius;
2856 /*15*/ fTreeCascVarV0Mass = lInvMassLambdaAsCascDghter;
2857 /*16*/ fTreeCascVarV0CosPointingAngle = lV0CosineOfPointingAngleXi;
2858 /*16*/ fTreeCascVarV0CosPointingAngleSpecial = lV0CosineOfPointingAngleXiSpecial;
2859 /*17*/ fTreeCascVarV0Radius = lV0RadiusXi;
2860 /*20*/ fTreeCascVarLeastNbrClusters = leastnumberofclusters;
2861 /*21*/ fTreeCascVarMultiplicity = lMultiplicity; //multiplicity, whatever that may be
2863 /*23*/ fTreeCascVarDistOverTotMom = TMath::Sqrt(
2864 TMath::Power( lPosXi[0] - lBestPrimaryVtxPos[0] , 2) +
2865 TMath::Power( lPosXi[1] - lBestPrimaryVtxPos[1] , 2) +
2866 TMath::Power( lPosXi[2] - lBestPrimaryVtxPos[2] , 2)
2868 /*23*/ fTreeCascVarDistOverTotMom /= (lXiTotMom+1e-13);
2869 /*24*/ //Not specified here, it has been set already (TRunNumber)
2870 /*25*/ fTreeCascVarPID = lPDGCodeCascade;
2872 //------------------------------------------------
2874 //------------------------------------------------
2876 // The conditional is meant to decrease excessive
2877 // memory usage! Be careful when loosening the
2880 //Xi Mass window: 150MeV wide
2881 //Omega mass window: 150MeV wide
2883 if( (fTreeCascVarMassAsXi<1.32+0.075&&fTreeCascVarMassAsXi>1.32-0.075) ||
2884 (fTreeCascVarMassAsOmega<1.68+0.075&&fTreeCascVarMassAsOmega>1.68-0.075) ){
2885 fTreeCascade->Fill();
2888 //------------------------------------------------
2890 //------------------------------------------------
2892 }// end of the Cascade loop (ESD or AOD)
2894 // Post output data.
2895 PostData(1, fListHist);
2896 PostData(2, fTreeCascade);
2899 //________________________________________________________________________
2900 void AliAnalysisTaskExtractPerformanceCascade::Terminate(Option_t *)
2902 // Draw result to the screen
2903 // Called once at the end of the query
2905 TList *cRetrievedList = 0x0;
2906 cRetrievedList = (TList*)GetOutputData(1);
2907 if(!cRetrievedList){
2908 Printf("ERROR - AliAnalysisTaskExtractCascade : ouput data container list not available\n");
2912 fHistV0MultiplicityForTrigEvt = dynamic_cast<TH1F*> ( cRetrievedList->FindObject("fHistV0MultiplicityForTrigEvt") );
2913 if (!fHistV0MultiplicityForTrigEvt) {
2914 Printf("ERROR - AliAnalysisTaskExtractCascade : fHistV0MultiplicityForTrigEvt not available");
2918 TCanvas *canCheck = new TCanvas("AliAnalysisTaskExtractCascade","V0 Multiplicity",10,10,510,510);
2919 canCheck->cd(1)->SetLogy();
2921 fHistV0MultiplicityForTrigEvt->SetMarkerStyle(22);
2922 fHistV0MultiplicityForTrigEvt->DrawCopy("E");
2925 //----------------------------------------------------------------------------
2927 Double_t AliAnalysisTaskExtractPerformanceCascade::MyRapidity(Double_t rE, Double_t rPz) const
2929 // Local calculation for rapidity
2930 Double_t ReturnValue = -100;
2931 if( (rE-rPz+1.e-13) != 0 && (rE+rPz) != 0 ){
2932 ReturnValue = 0.5*TMath::Log((rE+rPz)/(rE-rPz+1.e-13));