1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
16 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
18 // Modified version of AliAnalysisTaskCheckCascade.cxx.
19 // This is a 'hybrid' output version, in that it uses a classic TTree
20 // ROOT object to store the candidates, plus a couple of histograms filled on
21 // a per-event basis for storing variables too numerous to put in a tree.
23 // --- Adapted to look for lambdas as well, using code from
24 // AliAnalysisTaskCheckPerformanceStrange.cxx
26 // --- Algorithm Description
27 // 1. Loop over primaries in stack to acquire generated charged Xi
28 // 2. Loop over stack to find Cascades, fill TH3Fs "PrimRawPt"s for Efficiency
29 // 3. Perform Physics Selection
30 // 4. Perform Primary Vertex |z|<10cm selection
31 // 5. Perform Primary Vertex NoTPCOnly vertexing selection (>0 contrib.)
32 // 6. Perform Pileup Rejection
34 // 7a. Fill TH3Fs "PrimAnalysisPt" for control purposes only
36 // Please Report Any Bugs!
38 // --- David Dobrigkeit Chinellato
39 // (david.chinellato@gmail.com)
41 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
47 //class AliMCEventHandler;
56 #include <Riostream.h>
62 #include "THnSparse.h"
69 #include "AliESDEvent.h"
70 #include "AliAODEvent.h"
71 #include "AliV0vertexer.h"
72 #include "AliCascadeVertexer.h"
73 #include "AliESDpid.h"
74 #include "AliESDtrack.h"
75 #include "AliESDtrackCuts.h"
76 #include "AliInputEventHandler.h"
77 #include "AliAnalysisManager.h"
78 #include "AliMCEventHandler.h"
79 #include "AliMCEvent.h"
82 #include "AliCFContainer.h"
83 #include "AliMultiplicity.h"
84 #include "AliAODMCParticle.h"
85 #include "AliESDcascade.h"
86 #include "AliAODcascade.h"
87 #include "AliESDUtils.h"
88 #include "AliAnalysisUtils.h"
89 #include "AliGenEventHeader.h"
91 #include "AliAnalysisTaskExtractPerformanceCascade.h"
96 ClassImp(AliAnalysisTaskExtractPerformanceCascade)
98 AliAnalysisTaskExtractPerformanceCascade::AliAnalysisTaskExtractPerformanceCascade()
99 : AliAnalysisTaskSE(), fListHist(0), fTreeCascade(0), fPIDResponse(0), fESDtrackCuts(0), fUtils(0),
100 fkIsNuclear ( kFALSE ),
101 fkSwitchINT7 ( kFALSE ),
102 fpArapidityShift ( 0.465 ),
103 fCentralityEstimator("V0M"),
104 fkpAVertexSelection( kFALSE ),
106 fkRunVertexers ( kFALSE ),
107 fkCheckSwapping( kFALSE ),
108 //------------------------------------------------
110 //------------------------------------------------
112 fTreeCascVarCharge(0),
113 fTreeCascVarMassAsXi(0),
114 fTreeCascVarMassAsOmega(0),
117 fTreeCascVarRapMC(0),
118 fTreeCascVarRapXi(0),
119 fTreeCascVarRapOmega(0),
120 fTreeCascVarNegEta(0),
121 fTreeCascVarPosEta(0),
122 fTreeCascVarBachEta(0),
123 fTreeCascVarDCACascDaughters(0),
124 fTreeCascVarDCABachToPrimVtx(0),
125 fTreeCascVarDCAV0Daughters(0),
126 fTreeCascVarDCAV0ToPrimVtx(0),
127 fTreeCascVarDCAPosToPrimVtx(0),
128 fTreeCascVarDCANegToPrimVtx(0),
129 fTreeCascVarCascCosPointingAngle(0),
130 fTreeCascVarCascRadius(0),
131 fTreeCascVarV0Mass(0),
132 fTreeCascVarV0CosPointingAngle(0),
133 fTreeCascVarV0CosPointingAngleSpecial(0),
134 fTreeCascVarV0Radius(0),
135 fTreeCascVarLeastNbrClusters(0),
136 fTreeCascVarMultiplicity(0),
137 fTreeCascVarMultiplicityV0A(0),
138 fTreeCascVarMultiplicityZNA(0),
139 fTreeCascVarMultiplicityTRK(0),
140 fTreeCascVarMultiplicitySPD(0),
141 fTreeCascVarMultiplicityMC(0),
142 fTreeCascVarDistOverTotMom(0),
143 fTreeCascVarIsPhysicalPrimary(0),
145 fTreeCascVarPIDSwapped(0),
146 fTreeCascVarPIDBachelor(0),
147 fTreeCascVarPIDNegative(0),
148 fTreeCascVarPIDPositive(0),
149 fTreeCascVarBachTransMom(0),
150 fTreeCascVarPosTransMom(0),
151 fTreeCascVarNegTransMom(0),
152 fTreeCascVarPosTransMomMC(0),
153 fTreeCascVarNegTransMomMC(0),
154 fTreeCascVarNegNSigmaPion(0),
155 fTreeCascVarNegNSigmaProton(0),
156 fTreeCascVarPosNSigmaPion(0),
157 fTreeCascVarPosNSigmaProton(0),
158 fTreeCascVarBachNSigmaPion(0),
159 fTreeCascVarBachNSigmaKaon(0),
161 fTreeCascVarkITSRefitBachelor(0),
162 fTreeCascVarkITSRefitNegative(0),
163 fTreeCascVarkITSRefitPositive(0),
165 fTreeCascVarEvHasXiMinus(0),
166 fTreeCascVarEvHasXiPlus(0),
167 fTreeCascVarEvHasOmegaMinus(0),
168 fTreeCascVarEvHasOmegaPlus(0),
169 fTreeCascVarEvHasLambda(0),
170 fTreeCascVarEvHasAntiLambda(0),
172 fTreeCascVarEvHasLowPtXiMinus(0),
173 fTreeCascVarEvHasLowPtXiPlus(0),
174 fTreeCascVarEvHasLowPtOmegaMinus(0),
175 fTreeCascVarEvHasLowPtOmegaPlus(0),
176 fTreeCascVarEvHasLowPtLambda(0),
177 fTreeCascVarEvHasLowPtAntiLambda(0),
179 fTreeCascVarEvHasVeryLowPtXiMinus(0),
180 fTreeCascVarEvHasVeryLowPtXiPlus(0),
181 fTreeCascVarEvHasVeryLowPtOmegaMinus(0),
182 fTreeCascVarEvHasVeryLowPtOmegaPlus(0),
183 fTreeCascVarEvHasVeryLowPtLambda(0),
184 fTreeCascVarEvHasVeryLowPtAntiLambda(0),
186 //------------------------------------------------
188 // --- Filled on an Event-by-event basis
189 //------------------------------------------------
190 fHistV0MultiplicityBeforeTrigSel(0),
191 fHistV0MultiplicityForTrigEvt(0),
192 fHistV0MultiplicityForSelEvt(0),
193 fHistV0MultiplicityForSelEvtNoTPCOnly(0),
194 fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup(0),
195 fHistMultiplicityBeforeTrigSel(0),
196 fHistMultiplicityForTrigEvt(0),
197 fHistMultiplicity(0),
198 fHistMultiplicityNoTPCOnly(0),
199 fHistMultiplicityNoTPCOnlyNoPileup(0),
202 fHistMultiplicityV0ABeforeTrigSel(0),
203 fHistMultiplicityV0AForTrigEvt(0),
204 fHistMultiplicityV0A(0),
205 fHistMultiplicityV0ANoTPCOnly(0),
206 fHistMultiplicityV0ANoTPCOnlyNoPileup(0),
209 fHistMultiplicityZNABeforeTrigSel(0),
210 fHistMultiplicityZNAForTrigEvt(0),
211 fHistMultiplicityZNA(0),
212 fHistMultiplicityZNANoTPCOnly(0),
213 fHistMultiplicityZNANoTPCOnlyNoPileup(0),
216 fHistMultiplicityTRKBeforeTrigSel(0),
217 fHistMultiplicityTRKForTrigEvt(0),
218 fHistMultiplicityTRK(0),
219 fHistMultiplicityTRKNoTPCOnly(0),
220 fHistMultiplicityTRKNoTPCOnlyNoPileup(0),
223 fHistMultiplicitySPDBeforeTrigSel(0),
224 fHistMultiplicitySPDForTrigEvt(0),
225 fHistMultiplicitySPD(0),
226 fHistMultiplicitySPDNoTPCOnly(0),
227 fHistMultiplicitySPDNoTPCOnlyNoPileup(0),
230 //------------------------------------------------
231 // PARTICLE HISTOGRAMS
232 // --- Filled on a Particle-by-Particle basis
233 //------------------------------------------------
234 f3dHistGenPtVsYVsMultXiMinus(0),
235 f3dHistGenPtVsYVsMultXiPlus(0),
236 f3dHistGenPtVsYVsMultOmegaMinus(0),
237 f3dHistGenPtVsYVsMultOmegaPlus(0),
238 f3dHistGenSelectedPtVsYVsMultXiMinus(0),
239 f3dHistGenSelectedPtVsYVsMultXiPlus(0),
240 f3dHistGenSelectedPtVsYVsMultOmegaMinus(0),
241 f3dHistGenSelectedPtVsYVsMultOmegaPlus(0),
242 f3dHistGenPtVsYCMSVsMultXiMinus(0),
243 f3dHistGenPtVsYCMSVsMultXiPlus(0),
244 f3dHistGenPtVsYCMSVsMultOmegaMinus(0),
245 f3dHistGenPtVsYCMSVsMultOmegaPlus(0),
246 f3dHistGenSelectedPtVsYCMSVsMultXiMinus(0),
247 f3dHistGenSelectedPtVsYCMSVsMultXiPlus(0),
248 f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus(0),
249 f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus(0),
253 f3dHistGenPtVsYVsMultMCXiMinus(0),
254 f3dHistGenPtVsYVsMultMCXiPlus(0),
255 f3dHistGenPtVsYVsMultMCOmegaMinus(0),
256 f3dHistGenPtVsYVsMultMCOmegaPlus(0),
257 f3dHistGenSelectedPtVsYVsMultMCXiMinus(0),
258 f3dHistGenSelectedPtVsYVsMultMCXiPlus(0),
259 f3dHistGenSelectedPtVsYVsMultMCOmegaMinus(0),
260 f3dHistGenSelectedPtVsYVsMultMCOmegaPlus(0),
261 f3dHistGenPtVsYCMSVsMultMCXiMinus(0),
262 f3dHistGenPtVsYCMSVsMultMCXiPlus(0),
263 f3dHistGenPtVsYCMSVsMultMCOmegaMinus(0),
264 f3dHistGenPtVsYCMSVsMultMCOmegaPlus(0),
265 f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus(0),
266 f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus(0),
267 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus(0),
268 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus(0),
272 f3dHistGenPtVsYVsMultV0AXiMinus(0),
273 f3dHistGenPtVsYVsMultV0AXiPlus(0),
274 f3dHistGenPtVsYVsMultV0AOmegaMinus(0),
275 f3dHistGenPtVsYVsMultV0AOmegaPlus(0),
276 f3dHistGenSelectedPtVsYVsMultV0AXiMinus(0),
277 f3dHistGenSelectedPtVsYVsMultV0AXiPlus(0),
278 f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus(0),
279 f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus(0),
280 f3dHistGenPtVsYCMSVsMultV0AXiMinus(0),
281 f3dHistGenPtVsYCMSVsMultV0AXiPlus(0),
282 f3dHistGenPtVsYCMSVsMultV0AOmegaMinus(0),
283 f3dHistGenPtVsYCMSVsMultV0AOmegaPlus(0),
284 f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus(0),
285 f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus(0),
286 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus(0),
287 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus(0),
288 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiMinus(0),
289 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiPlus(0),
290 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaMinus(0),
291 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaPlus(0),
295 f3dHistGenPtVsYVsMultZNAXiMinus(0),
296 f3dHistGenPtVsYVsMultZNAXiPlus(0),
297 f3dHistGenPtVsYVsMultZNAOmegaMinus(0),
298 f3dHistGenPtVsYVsMultZNAOmegaPlus(0),
299 f3dHistGenSelectedPtVsYVsMultZNAXiMinus(0),
300 f3dHistGenSelectedPtVsYVsMultZNAXiPlus(0),
301 f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus(0),
302 f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus(0),
303 f3dHistGenPtVsYCMSVsMultZNAXiMinus(0),
304 f3dHistGenPtVsYCMSVsMultZNAXiPlus(0),
305 f3dHistGenPtVsYCMSVsMultZNAOmegaMinus(0),
306 f3dHistGenPtVsYCMSVsMultZNAOmegaPlus(0),
307 f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus(0),
308 f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus(0),
309 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus(0),
310 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus(0),
314 f3dHistGenPtVsYVsMultTRKXiMinus(0),
315 f3dHistGenPtVsYVsMultTRKXiPlus(0),
316 f3dHistGenPtVsYVsMultTRKOmegaMinus(0),
317 f3dHistGenPtVsYVsMultTRKOmegaPlus(0),
318 f3dHistGenSelectedPtVsYVsMultTRKXiMinus(0),
319 f3dHistGenSelectedPtVsYVsMultTRKXiPlus(0),
320 f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus(0),
321 f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus(0),
322 f3dHistGenPtVsYCMSVsMultTRKXiMinus(0),
323 f3dHistGenPtVsYCMSVsMultTRKXiPlus(0),
324 f3dHistGenPtVsYCMSVsMultTRKOmegaMinus(0),
325 f3dHistGenPtVsYCMSVsMultTRKOmegaPlus(0),
326 f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus(0),
327 f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus(0),
328 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus(0),
329 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus(0),
333 f3dHistGenPtVsYVsMultSPDXiMinus(0),
334 f3dHistGenPtVsYVsMultSPDXiPlus(0),
335 f3dHistGenPtVsYVsMultSPDOmegaMinus(0),
336 f3dHistGenPtVsYVsMultSPDOmegaPlus(0),
337 f3dHistGenSelectedPtVsYVsMultSPDXiMinus(0),
338 f3dHistGenSelectedPtVsYVsMultSPDXiPlus(0),
339 f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus(0),
340 f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus(0),
341 f3dHistGenPtVsYCMSVsMultSPDXiMinus(0),
342 f3dHistGenPtVsYCMSVsMultSPDXiPlus(0),
343 f3dHistGenPtVsYCMSVsMultSPDOmegaMinus(0),
344 f3dHistGenPtVsYCMSVsMultSPDOmegaPlus(0),
345 f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus(0),
346 f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus(0),
347 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus(0),
348 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus(0),
361 AliAnalysisTaskExtractPerformanceCascade::AliAnalysisTaskExtractPerformanceCascade(const char *name)
362 : AliAnalysisTaskSE(name), fListHist(0), fTreeCascade(0), fPIDResponse(0), fESDtrackCuts(0), fUtils(0),
363 fkIsNuclear ( kFALSE ),
364 fkSwitchINT7 ( kFALSE ),
365 fpArapidityShift ( 0.465 ),
366 fCentralityEstimator("V0M"),
367 fkpAVertexSelection( kFALSE ),
369 fkRunVertexers ( kFALSE ),
370 fkCheckSwapping( kFALSE ),
371 //------------------------------------------------
373 //------------------------------------------------
375 fTreeCascVarCharge(0),
376 fTreeCascVarMassAsXi(0),
377 fTreeCascVarMassAsOmega(0),
380 fTreeCascVarRapMC(0),
381 fTreeCascVarRapXi(0),
382 fTreeCascVarRapOmega(0),
383 fTreeCascVarNegEta(0),
384 fTreeCascVarPosEta(0),
385 fTreeCascVarBachEta(0),
386 fTreeCascVarDCACascDaughters(0),
387 fTreeCascVarDCABachToPrimVtx(0),
388 fTreeCascVarDCAV0Daughters(0),
389 fTreeCascVarDCAV0ToPrimVtx(0),
390 fTreeCascVarDCAPosToPrimVtx(0),
391 fTreeCascVarDCANegToPrimVtx(0),
392 fTreeCascVarCascCosPointingAngle(0),
393 fTreeCascVarCascRadius(0),
394 fTreeCascVarV0Mass(0),
395 fTreeCascVarV0CosPointingAngle(0),
396 fTreeCascVarV0CosPointingAngleSpecial(0),
397 fTreeCascVarV0Radius(0),
398 fTreeCascVarLeastNbrClusters(0),
399 fTreeCascVarMultiplicity(0),
400 fTreeCascVarMultiplicityV0A(0),
401 fTreeCascVarMultiplicityZNA(0),
402 fTreeCascVarMultiplicityTRK(0),
403 fTreeCascVarMultiplicitySPD(0),
404 fTreeCascVarMultiplicityMC(0),
405 fTreeCascVarDistOverTotMom(0),
406 fTreeCascVarIsPhysicalPrimary(0),
408 fTreeCascVarPIDSwapped(0),
409 fTreeCascVarPIDBachelor(0),
410 fTreeCascVarPIDNegative(0),
411 fTreeCascVarPIDPositive(0),
412 fTreeCascVarBachTransMom(0),
413 fTreeCascVarPosTransMom(0),
414 fTreeCascVarNegTransMom(0),
415 fTreeCascVarPosTransMomMC(0),
416 fTreeCascVarNegTransMomMC(0),
417 fTreeCascVarNegNSigmaPion(0),
418 fTreeCascVarNegNSigmaProton(0),
419 fTreeCascVarPosNSigmaPion(0),
420 fTreeCascVarPosNSigmaProton(0),
421 fTreeCascVarBachNSigmaPion(0),
422 fTreeCascVarBachNSigmaKaon(0),
424 fTreeCascVarkITSRefitBachelor(0),
425 fTreeCascVarkITSRefitNegative(0),
426 fTreeCascVarkITSRefitPositive(0),
428 fTreeCascVarEvHasXiMinus(0),
429 fTreeCascVarEvHasXiPlus(0),
430 fTreeCascVarEvHasOmegaMinus(0),
431 fTreeCascVarEvHasOmegaPlus(0),
432 fTreeCascVarEvHasLambda(0),
433 fTreeCascVarEvHasAntiLambda(0),
435 fTreeCascVarEvHasLowPtXiMinus(0),
436 fTreeCascVarEvHasLowPtXiPlus(0),
437 fTreeCascVarEvHasLowPtOmegaMinus(0),
438 fTreeCascVarEvHasLowPtOmegaPlus(0),
439 fTreeCascVarEvHasLowPtLambda(0),
440 fTreeCascVarEvHasLowPtAntiLambda(0),
442 fTreeCascVarEvHasVeryLowPtXiMinus(0),
443 fTreeCascVarEvHasVeryLowPtXiPlus(0),
444 fTreeCascVarEvHasVeryLowPtOmegaMinus(0),
445 fTreeCascVarEvHasVeryLowPtOmegaPlus(0),
446 fTreeCascVarEvHasVeryLowPtLambda(0),
447 fTreeCascVarEvHasVeryLowPtAntiLambda(0),
449 //------------------------------------------------
451 // --- Filled on an Event-by-event basis
452 //------------------------------------------------
453 fHistV0MultiplicityBeforeTrigSel(0),
454 fHistV0MultiplicityForTrigEvt(0),
455 fHistV0MultiplicityForSelEvt(0),
456 fHistV0MultiplicityForSelEvtNoTPCOnly(0),
457 fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup(0),
458 fHistMultiplicityBeforeTrigSel(0),
459 fHistMultiplicityForTrigEvt(0),
460 fHistMultiplicity(0),
461 fHistMultiplicityNoTPCOnly(0),
462 fHistMultiplicityNoTPCOnlyNoPileup(0),
465 fHistMultiplicityV0ABeforeTrigSel(0),
466 fHistMultiplicityV0AForTrigEvt(0),
467 fHistMultiplicityV0A(0),
468 fHistMultiplicityV0ANoTPCOnly(0),
469 fHistMultiplicityV0ANoTPCOnlyNoPileup(0),
472 fHistMultiplicityZNABeforeTrigSel(0),
473 fHistMultiplicityZNAForTrigEvt(0),
474 fHistMultiplicityZNA(0),
475 fHistMultiplicityZNANoTPCOnly(0),
476 fHistMultiplicityZNANoTPCOnlyNoPileup(0),
479 fHistMultiplicityTRKBeforeTrigSel(0),
480 fHistMultiplicityTRKForTrigEvt(0),
481 fHistMultiplicityTRK(0),
482 fHistMultiplicityTRKNoTPCOnly(0),
483 fHistMultiplicityTRKNoTPCOnlyNoPileup(0),
486 fHistMultiplicitySPDBeforeTrigSel(0),
487 fHistMultiplicitySPDForTrigEvt(0),
488 fHistMultiplicitySPD(0),
489 fHistMultiplicitySPDNoTPCOnly(0),
490 fHistMultiplicitySPDNoTPCOnlyNoPileup(0),
492 //------------------------------------------------
493 // PARTICLE HISTOGRAMS
494 // --- Filled on a Particle-by-Particle basis
495 //------------------------------------------------
496 f3dHistGenPtVsYVsMultXiMinus(0),
497 f3dHistGenPtVsYVsMultXiPlus(0),
498 f3dHistGenPtVsYVsMultOmegaMinus(0),
499 f3dHistGenPtVsYVsMultOmegaPlus(0),
500 f3dHistGenSelectedPtVsYVsMultXiMinus(0),
501 f3dHistGenSelectedPtVsYVsMultXiPlus(0),
502 f3dHistGenSelectedPtVsYVsMultOmegaMinus(0),
503 f3dHistGenSelectedPtVsYVsMultOmegaPlus(0),
504 f3dHistGenPtVsYCMSVsMultXiMinus(0),
505 f3dHistGenPtVsYCMSVsMultXiPlus(0),
506 f3dHistGenPtVsYCMSVsMultOmegaMinus(0),
507 f3dHistGenPtVsYCMSVsMultOmegaPlus(0),
508 f3dHistGenSelectedPtVsYCMSVsMultXiMinus(0),
509 f3dHistGenSelectedPtVsYCMSVsMultXiPlus(0),
510 f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus(0),
511 f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus(0),
515 f3dHistGenPtVsYVsMultMCXiMinus(0),
516 f3dHistGenPtVsYVsMultMCXiPlus(0),
517 f3dHistGenPtVsYVsMultMCOmegaMinus(0),
518 f3dHistGenPtVsYVsMultMCOmegaPlus(0),
519 f3dHistGenSelectedPtVsYVsMultMCXiMinus(0),
520 f3dHistGenSelectedPtVsYVsMultMCXiPlus(0),
521 f3dHistGenSelectedPtVsYVsMultMCOmegaMinus(0),
522 f3dHistGenSelectedPtVsYVsMultMCOmegaPlus(0),
523 f3dHistGenPtVsYCMSVsMultMCXiMinus(0),
524 f3dHistGenPtVsYCMSVsMultMCXiPlus(0),
525 f3dHistGenPtVsYCMSVsMultMCOmegaMinus(0),
526 f3dHistGenPtVsYCMSVsMultMCOmegaPlus(0),
527 f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus(0),
528 f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus(0),
529 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus(0),
530 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus(0),
534 f3dHistGenPtVsYVsMultV0AXiMinus(0),
535 f3dHistGenPtVsYVsMultV0AXiPlus(0),
536 f3dHistGenPtVsYVsMultV0AOmegaMinus(0),
537 f3dHistGenPtVsYVsMultV0AOmegaPlus(0),
538 f3dHistGenSelectedPtVsYVsMultV0AXiMinus(0),
539 f3dHistGenSelectedPtVsYVsMultV0AXiPlus(0),
540 f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus(0),
541 f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus(0),
542 f3dHistGenPtVsYCMSVsMultV0AXiMinus(0),
543 f3dHistGenPtVsYCMSVsMultV0AXiPlus(0),
544 f3dHistGenPtVsYCMSVsMultV0AOmegaMinus(0),
545 f3dHistGenPtVsYCMSVsMultV0AOmegaPlus(0),
546 f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus(0),
547 f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus(0),
548 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus(0),
549 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus(0),
550 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiMinus(0),
551 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiPlus(0),
552 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaMinus(0),
553 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaPlus(0),
557 f3dHistGenPtVsYVsMultZNAXiMinus(0),
558 f3dHistGenPtVsYVsMultZNAXiPlus(0),
559 f3dHistGenPtVsYVsMultZNAOmegaMinus(0),
560 f3dHistGenPtVsYVsMultZNAOmegaPlus(0),
561 f3dHistGenSelectedPtVsYVsMultZNAXiMinus(0),
562 f3dHistGenSelectedPtVsYVsMultZNAXiPlus(0),
563 f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus(0),
564 f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus(0),
565 f3dHistGenPtVsYCMSVsMultZNAXiMinus(0),
566 f3dHistGenPtVsYCMSVsMultZNAXiPlus(0),
567 f3dHistGenPtVsYCMSVsMultZNAOmegaMinus(0),
568 f3dHistGenPtVsYCMSVsMultZNAOmegaPlus(0),
569 f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus(0),
570 f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus(0),
571 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus(0),
572 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus(0),
576 f3dHistGenPtVsYVsMultTRKXiMinus(0),
577 f3dHistGenPtVsYVsMultTRKXiPlus(0),
578 f3dHistGenPtVsYVsMultTRKOmegaMinus(0),
579 f3dHistGenPtVsYVsMultTRKOmegaPlus(0),
580 f3dHistGenSelectedPtVsYVsMultTRKXiMinus(0),
581 f3dHistGenSelectedPtVsYVsMultTRKXiPlus(0),
582 f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus(0),
583 f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus(0),
584 f3dHistGenPtVsYCMSVsMultTRKXiMinus(0),
585 f3dHistGenPtVsYCMSVsMultTRKXiPlus(0),
586 f3dHistGenPtVsYCMSVsMultTRKOmegaMinus(0),
587 f3dHistGenPtVsYCMSVsMultTRKOmegaPlus(0),
588 f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus(0),
589 f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus(0),
590 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus(0),
591 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus(0),
595 f3dHistGenPtVsYVsMultSPDXiMinus(0),
596 f3dHistGenPtVsYVsMultSPDXiPlus(0),
597 f3dHistGenPtVsYVsMultSPDOmegaMinus(0),
598 f3dHistGenPtVsYVsMultSPDOmegaPlus(0),
599 f3dHistGenSelectedPtVsYVsMultSPDXiMinus(0),
600 f3dHistGenSelectedPtVsYVsMultSPDXiPlus(0),
601 f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus(0),
602 f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus(0),
603 f3dHistGenPtVsYCMSVsMultSPDXiMinus(0),
604 f3dHistGenPtVsYCMSVsMultSPDXiPlus(0),
605 f3dHistGenPtVsYCMSVsMultSPDOmegaMinus(0),
606 f3dHistGenPtVsYCMSVsMultSPDOmegaPlus(0),
607 f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus(0),
608 f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus(0),
609 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus(0),
610 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus(0),
622 //Set Variables for re-running the cascade vertexers (as done for MS paper)
624 // New Loose : 1st step for the 7 TeV pp analysis
626 fV0VertexerSels[0] = 33. ; // max allowed chi2
627 fV0VertexerSels[1] = 0.02; // min allowed impact parameter for the 1st daughter (LHC09a4 : 0.05)
628 fV0VertexerSels[2] = 0.02; // min allowed impact parameter for the 2nd daughter (LHC09a4 : 0.05)
629 fV0VertexerSels[3] = 2.0 ; // max allowed DCA between the daughter tracks (LHC09a4 : 0.5)
630 fV0VertexerSels[4] = 0.95; // min allowed cosine of V0's pointing angle (LHC09a4 : 0.99)
631 fV0VertexerSels[5] = 1.0 ; // min radius of the fiducial volume (LHC09a4 : 0.2)
632 fV0VertexerSels[6] = 200. ; // max radius of the fiducial volume (LHC09a4 : 100.0)
634 fCascadeVertexerSels[0] = 33. ; // max allowed chi2 (same as PDC07)
635 fCascadeVertexerSels[1] = 0.05 ; // min allowed V0 impact parameter (PDC07 : 0.05 / LHC09a4 : 0.025 )
636 fCascadeVertexerSels[2] = 0.010; // "window" around the Lambda mass (PDC07 : 0.008 / LHC09a4 : 0.010 )
637 fCascadeVertexerSels[3] = 0.03 ; // min allowed bachelor's impact parameter (PDC07 : 0.035 / LHC09a4 : 0.025 )
638 fCascadeVertexerSels[4] = 2.0 ; // max allowed DCA between the V0 and the bachelor (PDC07 : 0.1 / LHC09a4 : 0.2 )
639 fCascadeVertexerSels[5] = 0.95 ; // min allowed cosine of the cascade pointing angle (PDC07 : 0.9985 / LHC09a4 : 0.998 )
640 fCascadeVertexerSels[6] = 0.4 ; // min radius of the fiducial volume (PDC07 : 0.9 / LHC09a4 : 0.2 )
641 fCascadeVertexerSels[7] = 100. ; // max radius of the fiducial volume (PDC07 : 100 / LHC09a4 : 100 )
643 // Output slot #0 writes into a TList container (Cascade)
644 DefineOutput(1, TList::Class());
645 DefineOutput(2, TTree::Class());
649 AliAnalysisTaskExtractPerformanceCascade::~AliAnalysisTaskExtractPerformanceCascade()
651 //------------------------------------------------
653 //------------------------------------------------
663 //cleanup esd track cuts object too...
665 delete fESDtrackCuts;
675 //________________________________________________________________________
676 void AliAnalysisTaskExtractPerformanceCascade::UserCreateOutputObjects()
681 //------------------------------------------------
683 fTreeCascade = new TTree("fTreeCascade","CascadeCandidates");
685 //------------------------------------------------
686 // fTreeCascade Branch definitions - Cascade Tree
687 //------------------------------------------------
689 //------------------------------------------------
690 // fTreeCascade Branch definitions
691 //------------------------------------------------
693 //-----------BASIC-INFO---------------------------
694 /* 1*/ fTreeCascade->Branch("fTreeCascVarCharge",&fTreeCascVarCharge,"fTreeCascVarCharge/I");
695 /* 2*/ fTreeCascade->Branch("fTreeCascVarMassAsXi",&fTreeCascVarMassAsXi,"fTreeCascVarMassAsXi/F");
696 /* 3*/ fTreeCascade->Branch("fTreeCascVarMassAsOmega",&fTreeCascVarMassAsOmega,"fTreeCascVarMassAsOmega/F");
697 /* 4*/ fTreeCascade->Branch("fTreeCascVarPt",&fTreeCascVarPt,"fTreeCascVarPt/F");
698 /* 5*/ fTreeCascade->Branch("fTreeCascVarPtMC",&fTreeCascVarPtMC,"fTreeCascVarPtMC/F");
699 /* 6*/ fTreeCascade->Branch("fTreeCascVarRapXi",&fTreeCascVarRapXi,"fTreeCascVarRapXi/F");
700 /* 7*/ fTreeCascade->Branch("fTreeCascVarRapMC",&fTreeCascVarRapMC,"fTreeCascVarRapMC/F");
701 /* 8*/ fTreeCascade->Branch("fTreeCascVarRapOmega",&fTreeCascVarRapOmega,"fTreeCascVarRapOmega/F");
702 /* 9*/ fTreeCascade->Branch("fTreeCascVarNegEta",&fTreeCascVarNegEta,"fTreeCascVarNegEta/F");
703 /*10*/ fTreeCascade->Branch("fTreeCascVarPosEta",&fTreeCascVarPosEta,"fTreeCascVarPosEta/F");
704 /*11*/ fTreeCascade->Branch("fTreeCascVarBachEta",&fTreeCascVarBachEta,"fTreeCascVarBachEta/F");
705 //-----------INFO-FOR-CUTS------------------------
706 /*12*/ fTreeCascade->Branch("fTreeCascVarDCACascDaughters",&fTreeCascVarDCACascDaughters,"fTreeCascVarDCACascDaughters/F");
707 /*13*/ fTreeCascade->Branch("fTreeCascVarDCABachToPrimVtx",&fTreeCascVarDCABachToPrimVtx,"fTreeCascVarDCABachToPrimVtx/F");
708 /*14*/ fTreeCascade->Branch("fTreeCascVarDCAV0Daughters",&fTreeCascVarDCAV0Daughters,"fTreeCascVarDCAV0Daughters/F");
709 /*15*/ fTreeCascade->Branch("fTreeCascVarDCAV0ToPrimVtx",&fTreeCascVarDCAV0ToPrimVtx,"fTreeCascVarDCAV0ToPrimVtx/F");
710 /*16*/ fTreeCascade->Branch("fTreeCascVarDCAPosToPrimVtx",&fTreeCascVarDCAPosToPrimVtx,"fTreeCascVarDCAPosToPrimVtx/F");
711 /*17*/ fTreeCascade->Branch("fTreeCascVarDCANegToPrimVtx",&fTreeCascVarDCANegToPrimVtx,"fTreeCascVarDCANegToPrimVtx/F");
712 /*18*/ fTreeCascade->Branch("fTreeCascVarCascCosPointingAngle",&fTreeCascVarCascCosPointingAngle,"fTreeCascVarCascCosPointingAngle/F");
713 /*19*/ fTreeCascade->Branch("fTreeCascVarCascRadius",&fTreeCascVarCascRadius,"fTreeCascVarCascRadius/F");
714 /*20*/ fTreeCascade->Branch("fTreeCascVarV0Mass",&fTreeCascVarV0Mass,"fTreeCascVarV0Mass/F");
715 /*21*/ fTreeCascade->Branch("fTreeCascVarV0CosPointingAngle",&fTreeCascVarV0CosPointingAngle,"fTreeCascVarV0CosPointingAngle/F");
716 /*21*/ fTreeCascade->Branch("fTreeCascVarV0CosPointingAngleSpecial",&fTreeCascVarV0CosPointingAngleSpecial,"fTreeCascVarV0CosPointingAngleSpecial/F");
717 /*22*/ fTreeCascade->Branch("fTreeCascVarV0Radius",&fTreeCascVarV0Radius,"fTreeCascVarV0Radius/F");
718 /*23*/ fTreeCascade->Branch("fTreeCascVarLeastNbrClusters",&fTreeCascVarLeastNbrClusters,"fTreeCascVarLeastNbrClusters/I");
719 //-----------MULTIPLICITY-INFO--------------------
720 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicity",&fTreeCascVarMultiplicity,"fTreeCascVarMultiplicity/I");
721 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicityV0A",&fTreeCascVarMultiplicityV0A,"fTreeCascVarMultiplicityV0A/I");
722 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicityZNA",&fTreeCascVarMultiplicityZNA,"fTreeCascVarMultiplicityZNA/I");
723 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicityTRK",&fTreeCascVarMultiplicityTRK,"fTreeCascVarMultiplicityTRK/I");
724 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicitySPD",&fTreeCascVarMultiplicitySPD,"fTreeCascVarMultiplicitySPD/I");
725 /*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicityMC",&fTreeCascVarMultiplicityMC,"fTreeCascVarMultiplicityMC/I");
726 //-----------DECAY-LENGTH-INFO--------------------
727 /*25*/ fTreeCascade->Branch("fTreeCascVarDistOverTotMom",&fTreeCascVarDistOverTotMom,"fTreeCascVarDistOverTotMom/F");
728 //-----------MC-PID-------------------------------
729 /*25bis*/ fTreeCascade->Branch("fTreeCascVarIsPhysicalPrimary",&fTreeCascVarIsPhysicalPrimary,"fTreeCascVarIsPhysicalPrimary/I");
730 /*26*/ fTreeCascade->Branch("fTreeCascVarPID",&fTreeCascVarPID,"fTreeCascVarPID/I");
731 /*26*/ fTreeCascade->Branch("fTreeCascVarPIDSwapped",&fTreeCascVarPIDSwapped,"fTreeCascVarPIDSwapped/I");
732 /*27*/ fTreeCascade->Branch("fTreeCascVarPIDBachelor",&fTreeCascVarPIDBachelor,"fTreeCascVarPIDBachelor/I");
733 /*28*/ fTreeCascade->Branch("fTreeCascVarPIDNegative",&fTreeCascVarPIDNegative,"fTreeCascVarPIDNegative/I");
734 /*29*/ fTreeCascade->Branch("fTreeCascVarPIDPositive",&fTreeCascVarPIDPositive,"fTreeCascVarPIDPositive/I");
735 /*30*/ fTreeCascade->Branch("fTreeCascVarBachTransMom",&fTreeCascVarBachTransMom,"fTreeCascVarBachTransMom/F");
736 /*30*/ fTreeCascade->Branch("fTreeCascVarPosTransMom",&fTreeCascVarPosTransMom,"fTreeCascVarPosTransMom/F");
737 /*31*/ fTreeCascade->Branch("fTreeCascVarNegTransMom",&fTreeCascVarNegTransMom,"fTreeCascVarNegTransMom/F");
738 /*32*/ fTreeCascade->Branch("fTreeCascVarPosTransMomMC",&fTreeCascVarPosTransMomMC,"fTreeCascVarPosTransMomMC/F");
739 /*33*/ fTreeCascade->Branch("fTreeCascVarNegTransMomMC",&fTreeCascVarNegTransMomMC,"fTreeCascVarNegTransMomMC/F");
740 //------------------------------------------------
741 /*34*/ fTreeCascade->Branch("fTreeCascVarNegNSigmaPion",&fTreeCascVarNegNSigmaPion,"fTreeCascVarNegNSigmaPion/F");
742 /*35*/ fTreeCascade->Branch("fTreeCascVarNegNSigmaProton",&fTreeCascVarNegNSigmaProton,"fTreeCascVarNegNSigmaProton/F");
743 /*36*/ fTreeCascade->Branch("fTreeCascVarPosNSigmaPion",&fTreeCascVarPosNSigmaPion,"fTreeCascVarPosNSigmaPion/F");
744 /*37*/ fTreeCascade->Branch("fTreeCascVarPosNSigmaProton",&fTreeCascVarPosNSigmaProton,"fTreeCascVarPosNSigmaProton/F");
745 /*38*/ fTreeCascade->Branch("fTreeCascVarBachNSigmaPion",&fTreeCascVarBachNSigmaPion,"fTreeCascVarBachNSigmaPion/F");
746 /*39*/ fTreeCascade->Branch("fTreeCascVarBachNSigmaKaon",&fTreeCascVarBachNSigmaKaon,"fTreeCascVarBachNSigmaKaon/F");
748 /*29*/ fTreeCascade->Branch("fTreeCascVarkITSRefitBachelor",&fTreeCascVarkITSRefitBachelor,"fTreeCascVarkITSRefitBachelor/O");
749 /*29*/ fTreeCascade->Branch("fTreeCascVarkITSRefitNegative",&fTreeCascVarkITSRefitNegative,"fTreeCascVarkITSRefitNegative/O");
750 /*29*/ fTreeCascade->Branch("fTreeCascVarkITSRefitPositive",&fTreeCascVarkITSRefitPositive,"fTreeCascVarkITSRefitPositive/O");
752 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasXiMinus", &fTreeCascVarEvHasXiMinus, "fTreeCascVarEvHasXiMinus/O");
753 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasXiPlus", &fTreeCascVarEvHasXiPlus, "fTreeCascVarEvHasXiPlus/O");
754 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasOmegaMinus",&fTreeCascVarEvHasOmegaMinus,"fTreeCascVarEvHasOmegaMinus/O");
755 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasOmegaPlus", &fTreeCascVarEvHasOmegaPlus, "fTreeCascVarEvHasOmegaPlus/O");
756 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLambda", &fTreeCascVarEvHasLambda, "fTreeCascVarEvHasLambda/O");
757 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasAntiLambda",&fTreeCascVarEvHasAntiLambda,"fTreeCascVarEvHasAntiLambda/O");
759 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLowPtXiMinus", &fTreeCascVarEvHasLowPtXiMinus, "fTreeCascVarEvHasLowPtXiMinus/O");
760 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLowPtXiPlus", &fTreeCascVarEvHasLowPtXiPlus, "fTreeCascVarEvHasLowPtXiPlus/O");
761 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLowPtOmegaMinus",&fTreeCascVarEvHasLowPtOmegaMinus,"fTreeCascVarEvHasLowPtOmegaMinus/O");
762 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLowPtOmegaPlus", &fTreeCascVarEvHasLowPtOmegaPlus, "fTreeCascVarEvHasLowPtOmegaPlus/O");
763 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLowPtLambda", &fTreeCascVarEvHasLowPtLambda, "fTreeCascVarEvHasLowPtLambda/O");
764 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasLowPtAntiLambda",&fTreeCascVarEvHasLowPtAntiLambda,"fTreeCascVarEvHasLowPtAntiLambda/O");
766 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasVeryLowPtXiMinus", &fTreeCascVarEvHasVeryLowPtXiMinus, "fTreeCascVarEvHasVeryLowPtXiMinus/O");
767 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasVeryLowPtXiPlus", &fTreeCascVarEvHasVeryLowPtXiPlus, "fTreeCascVarEvHasVeryLowPtXiPlus/O");
768 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasVeryLowPtOmegaMinus",&fTreeCascVarEvHasVeryLowPtOmegaMinus,"fTreeCascVarEvHasVeryLowPtOmegaMinus/O");
769 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasVeryLowPtOmegaPlus", &fTreeCascVarEvHasVeryLowPtOmegaPlus, "fTreeCascVarEvHasVeryLowPtOmegaPlus/O");
770 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasVeryLowPtLambda", &fTreeCascVarEvHasVeryLowPtLambda, "fTreeCascVarEvHasVeryLowPtLambda/O");
771 /*39*/ fTreeCascade->Branch("fTreeCascVarEvHasVeryLowPtAntiLambda",&fTreeCascVarEvHasVeryLowPtAntiLambda,"fTreeCascVarEvHasVeryLowPtAntiLambda/O");
773 //------------------------------------------------
774 // Particle Identification Setup
775 //------------------------------------------------
777 AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
778 AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
779 fPIDResponse = inputHandler->GetPIDResponse();
783 if(! fESDtrackCuts ){
784 fESDtrackCuts = new AliESDtrackCuts();
787 fUtils = new AliAnalysisUtils();
790 //------------------------------------------------
791 // V0 Multiplicity Histograms
792 //------------------------------------------------
796 fListHist = new TList();
797 fListHist->SetOwner(); // See http://root.cern.ch/root/html/TCollection.html#TCollection:SetOwner
800 if(! fHistV0MultiplicityBeforeTrigSel) {
801 fHistV0MultiplicityBeforeTrigSel = new TH1F("fHistV0MultiplicityBeforeTrigSel",
802 "V0s per event (before Trig. Sel.);Nbr of V0s/Evt;Events",
804 fListHist->Add(fHistV0MultiplicityBeforeTrigSel);
807 if(! fHistV0MultiplicityForTrigEvt) {
808 fHistV0MultiplicityForTrigEvt = new TH1F("fHistV0MultiplicityForTrigEvt",
809 "V0s per event (for triggered evt);Nbr of V0s/Evt;Events",
811 fListHist->Add(fHistV0MultiplicityForTrigEvt);
814 if(! fHistV0MultiplicityForSelEvt) {
815 fHistV0MultiplicityForSelEvt = new TH1F("fHistV0MultiplicityForSelEvt",
816 "V0s per event;Nbr of V0s/Evt;Events",
818 fListHist->Add(fHistV0MultiplicityForSelEvt);
821 if(! fHistV0MultiplicityForSelEvtNoTPCOnly) {
822 fHistV0MultiplicityForSelEvtNoTPCOnly = new TH1F("fHistV0MultiplicityForSelEvtNoTPCOnly",
823 "V0s per event;Nbr of V0s/Evt;Events",
825 fListHist->Add(fHistV0MultiplicityForSelEvtNoTPCOnly);
827 if(! fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup) {
828 fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup = new TH1F("fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup",
829 "V0s per event;Nbr of V0s/Evt;Events",
831 fListHist->Add(fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup);
834 //------------------------------------------------
835 // Track Multiplicity Histograms
836 //------------------------------------------------
838 if(! fHistMultiplicityBeforeTrigSel) {
839 fHistMultiplicityBeforeTrigSel = new TH1F("fHistMultiplicityBeforeTrigSel",
840 "Tracks per event;Nbr of Tracks;Events",
842 fListHist->Add(fHistMultiplicityBeforeTrigSel);
844 if(! fHistMultiplicityForTrigEvt) {
845 fHistMultiplicityForTrigEvt = new TH1F("fHistMultiplicityForTrigEvt",
846 "Tracks per event;Nbr of Tracks;Events",
848 fListHist->Add(fHistMultiplicityForTrigEvt);
850 if(! fHistMultiplicity) {
851 fHistMultiplicity = new TH1F("fHistMultiplicity",
852 "Tracks per event;Nbr of Tracks;Events",
854 fListHist->Add(fHistMultiplicity);
856 if(! fHistMultiplicityNoTPCOnly) {
857 fHistMultiplicityNoTPCOnly = new TH1F("fHistMultiplicityNoTPCOnly",
858 "Tracks per event;Nbr of Tracks;Events",
860 fListHist->Add(fHistMultiplicityNoTPCOnly);
862 if(! fHistMultiplicityNoTPCOnlyNoPileup) {
863 fHistMultiplicityNoTPCOnlyNoPileup = new TH1F("fHistMultiplicityNoTPCOnlyNoPileup",
864 "Tracks per event;Nbr of Tracks;Events",
866 fListHist->Add(fHistMultiplicityNoTPCOnlyNoPileup);
870 //V0A Centrality (if PbPb / pPb)
871 if(! fHistMultiplicityV0ABeforeTrigSel) {
872 fHistMultiplicityV0ABeforeTrigSel = new TH1F("fHistMultiplicityV0ABeforeTrigSel",
873 "Centrality Distribution: V0A;V0A Centrality;Events",
875 fListHist->Add(fHistMultiplicityV0ABeforeTrigSel);
877 if(! fHistMultiplicityV0AForTrigEvt) {
878 fHistMultiplicityV0AForTrigEvt = new TH1F("fHistMultiplicityV0AForTrigEvt",
879 "Centrality Distribution: V0A;V0A Centrality;Events",
881 fListHist->Add(fHistMultiplicityV0AForTrigEvt);
883 if(! fHistMultiplicityV0A) {
884 fHistMultiplicityV0A = new TH1F("fHistMultiplicityV0A",
885 "Centrality Distribution: V0A;V0A Centrality;Events",
887 fListHist->Add(fHistMultiplicityV0A);
889 if(! fHistMultiplicityV0ANoTPCOnly) {
890 fHistMultiplicityV0ANoTPCOnly = new TH1F("fHistMultiplicityV0ANoTPCOnly",
891 "Centrality Distribution: V0A;V0A Centrality;Events",
893 fListHist->Add(fHistMultiplicityV0ANoTPCOnly);
895 if(! fHistMultiplicityV0ANoTPCOnlyNoPileup) {
896 fHistMultiplicityV0ANoTPCOnlyNoPileup = new TH1F("fHistMultiplicityV0ANoTPCOnlyNoPileup",
897 "Centrality Distribution: V0A;V0A Centrality;Events",
899 fListHist->Add(fHistMultiplicityV0ANoTPCOnlyNoPileup);
902 //ZNA Centrality (if PbPb / pPb)
903 if(! fHistMultiplicityZNABeforeTrigSel) {
904 fHistMultiplicityZNABeforeTrigSel = new TH1F("fHistMultiplicityZNABeforeTrigSel",
905 "Centrality Distribution: ZNA;ZNA Centrality;Events",
907 fListHist->Add(fHistMultiplicityZNABeforeTrigSel);
909 if(! fHistMultiplicityZNAForTrigEvt) {
910 fHistMultiplicityZNAForTrigEvt = new TH1F("fHistMultiplicityZNAForTrigEvt",
911 "Centrality Distribution: ZNA;ZNA Centrality;Events",
913 fListHist->Add(fHistMultiplicityZNAForTrigEvt);
915 if(! fHistMultiplicityZNA) {
916 fHistMultiplicityZNA = new TH1F("fHistMultiplicityZNA",
917 "Centrality Distribution: ZNA;ZNA Centrality;Events",
919 fListHist->Add(fHistMultiplicityZNA);
921 if(! fHistMultiplicityZNANoTPCOnly) {
922 fHistMultiplicityZNANoTPCOnly = new TH1F("fHistMultiplicityZNANoTPCOnly",
923 "Centrality Distribution: ZNA;ZNA Centrality;Events",
925 fListHist->Add(fHistMultiplicityZNANoTPCOnly);
927 if(! fHistMultiplicityZNANoTPCOnlyNoPileup) {
928 fHistMultiplicityZNANoTPCOnlyNoPileup = new TH1F("fHistMultiplicityZNANoTPCOnlyNoPileup",
929 "Centrality Distribution: ZNA;ZNA Centrality;Events",
931 fListHist->Add(fHistMultiplicityZNANoTPCOnlyNoPileup);
934 //TRK Centrality (if PbPb / pPb)
935 if(! fHistMultiplicityTRKBeforeTrigSel) {
936 fHistMultiplicityTRKBeforeTrigSel = new TH1F("fHistMultiplicityTRKBeforeTrigSel",
937 "Centrality Distribution: TRK;TRK Centrality;Events",
939 fListHist->Add(fHistMultiplicityTRKBeforeTrigSel);
941 if(! fHistMultiplicityTRKForTrigEvt) {
942 fHistMultiplicityTRKForTrigEvt = new TH1F("fHistMultiplicityTRKForTrigEvt",
943 "Centrality Distribution: TRK;TRK Centrality;Events",
945 fListHist->Add(fHistMultiplicityTRKForTrigEvt);
947 if(! fHistMultiplicityTRK) {
948 fHistMultiplicityTRK = new TH1F("fHistMultiplicityTRK",
949 "Centrality Distribution: TRK;TRK Centrality;Events",
951 fListHist->Add(fHistMultiplicityTRK);
953 if(! fHistMultiplicityTRKNoTPCOnly) {
954 fHistMultiplicityTRKNoTPCOnly = new TH1F("fHistMultiplicityTRKNoTPCOnly",
955 "Centrality Distribution: TRK;TRK Centrality;Events",
957 fListHist->Add(fHistMultiplicityTRKNoTPCOnly);
959 if(! fHistMultiplicityTRKNoTPCOnlyNoPileup) {
960 fHistMultiplicityTRKNoTPCOnlyNoPileup = new TH1F("fHistMultiplicityTRKNoTPCOnlyNoPileup",
961 "Centrality Distribution: TRK;TRK Centrality;Events",
963 fListHist->Add(fHistMultiplicityTRKNoTPCOnlyNoPileup);
966 //SPD Centrality (if PbPb / pPb)
967 if(! fHistMultiplicitySPDBeforeTrigSel) {
968 fHistMultiplicitySPDBeforeTrigSel = new TH1F("fHistMultiplicitySPDBeforeTrigSel",
969 "Centrality Distribution: SPD;SPD Centrality;Events",
971 fListHist->Add(fHistMultiplicitySPDBeforeTrigSel);
973 if(! fHistMultiplicitySPDForTrigEvt) {
974 fHistMultiplicitySPDForTrigEvt = new TH1F("fHistMultiplicitySPDForTrigEvt",
975 "Centrality Distribution: SPD;SPD Centrality;Events",
977 fListHist->Add(fHistMultiplicitySPDForTrigEvt);
979 if(! fHistMultiplicitySPD) {
980 fHistMultiplicitySPD = new TH1F("fHistMultiplicitySPD",
981 "Centrality Distribution: SPD;SPD Centrality;Events",
983 fListHist->Add(fHistMultiplicitySPD);
985 if(! fHistMultiplicitySPDNoTPCOnly) {
986 fHistMultiplicitySPDNoTPCOnly = new TH1F("fHistMultiplicitySPDNoTPCOnly",
987 "Centrality Distribution: SPD;SPD Centrality;Events",
989 fListHist->Add(fHistMultiplicitySPDNoTPCOnly);
991 if(! fHistMultiplicitySPDNoTPCOnlyNoPileup) {
992 fHistMultiplicitySPDNoTPCOnlyNoPileup = new TH1F("fHistMultiplicitySPDNoTPCOnlyNoPileup",
993 "Centrality Distribution: SPD;SPD Centrality;Events",
995 fListHist->Add(fHistMultiplicitySPDNoTPCOnlyNoPileup);
1001 //------------------------------------------------
1002 // Generated Particle Histograms
1003 //------------------------------------------------
1005 Int_t lCustomNBins = 200;
1006 Double_t lCustomPtUpperLimit = 20;
1007 Int_t lCustomNBinsMultiplicity = 100;
1009 //----------------------------------
1010 // Raw Generated (Pre-physics-selection)
1011 //----------------------------------
1013 //--------------------------------------------------------------------------------------
1014 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1016 if(! f3dHistGenPtVsYVsMultXiMinus) {
1017 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);
1018 fListHist->Add(f3dHistGenPtVsYVsMultXiMinus);
1020 if(! f3dHistGenPtVsYVsMultXiPlus) {
1021 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);
1022 fListHist->Add(f3dHistGenPtVsYVsMultXiPlus);
1024 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1026 if(! f3dHistGenPtVsYVsMultOmegaMinus) {
1027 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);
1028 fListHist->Add(f3dHistGenPtVsYVsMultOmegaMinus);
1030 if(! f3dHistGenPtVsYVsMultOmegaPlus) {
1031 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);
1032 fListHist->Add(f3dHistGenPtVsYVsMultOmegaPlus);
1035 //All generated cascades, YCMS
1037 if(! f3dHistGenPtVsYCMSVsMultXiMinus) {
1038 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);
1039 fListHist->Add(f3dHistGenPtVsYCMSVsMultXiMinus);
1041 if(! f3dHistGenPtVsYCMSVsMultXiPlus) {
1042 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);
1043 fListHist->Add(f3dHistGenPtVsYCMSVsMultXiPlus);
1045 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1047 if(! f3dHistGenPtVsYCMSVsMultOmegaMinus) {
1048 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);
1049 fListHist->Add(f3dHistGenPtVsYCMSVsMultOmegaMinus);
1051 if(! f3dHistGenPtVsYCMSVsMultOmegaPlus) {
1052 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);
1053 fListHist->Add(f3dHistGenPtVsYCMSVsMultOmegaPlus);
1057 //--------------------------------------------------------------------------------------
1058 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1060 if(! f3dHistGenSelectedPtVsYVsMultXiMinus) {
1061 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);
1062 fListHist->Add(f3dHistGenSelectedPtVsYVsMultXiMinus);
1064 if(! f3dHistGenSelectedPtVsYVsMultXiPlus) {
1065 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);
1066 fListHist->Add(f3dHistGenSelectedPtVsYVsMultXiPlus);
1068 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1070 if(! f3dHistGenSelectedPtVsYVsMultOmegaMinus) {
1071 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);
1072 fListHist->Add(f3dHistGenSelectedPtVsYVsMultOmegaMinus);
1074 if(! f3dHistGenSelectedPtVsYVsMultOmegaPlus) {
1075 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);
1076 fListHist->Add(f3dHistGenSelectedPtVsYVsMultOmegaPlus);
1079 //ANALYSIS level Cascades, YCMS
1082 if(! f3dHistGenSelectedPtVsYCMSVsMultXiMinus) {
1083 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);
1084 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultXiMinus);
1086 if(! f3dHistGenSelectedPtVsYCMSVsMultXiPlus) {
1087 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);
1088 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultXiPlus);
1090 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1092 if(! f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus) {
1093 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);
1094 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus);
1096 if(! f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus) {
1097 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);
1098 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus);
1101 //======================================================================================
1102 //--------------------------------------------------------------------------------------
1103 // True Generated (For Multiplicity Unfolding)
1104 //--------------------------------------------------------------------------------------
1105 //======================================================================================
1107 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1109 if(! f3dHistGenPtVsYVsMultMCXiMinus) {
1110 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);
1111 fListHist->Add(f3dHistGenPtVsYVsMultMCXiMinus);
1113 if(! f3dHistGenPtVsYVsMultMCXiPlus) {
1114 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);
1115 fListHist->Add(f3dHistGenPtVsYVsMultMCXiPlus);
1117 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1119 if(! f3dHistGenPtVsYVsMultMCOmegaMinus) {
1120 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);
1121 fListHist->Add(f3dHistGenPtVsYVsMultMCOmegaMinus);
1123 if(! f3dHistGenPtVsYVsMultMCOmegaPlus) {
1124 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);
1125 fListHist->Add(f3dHistGenPtVsYVsMultMCOmegaPlus);
1128 //All generated cascades, YCMS
1130 if(! f3dHistGenPtVsYCMSVsMultMCXiMinus) {
1131 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);
1132 fListHist->Add(f3dHistGenPtVsYCMSVsMultMCXiMinus);
1134 if(! f3dHistGenPtVsYCMSVsMultMCXiPlus) {
1135 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);
1136 fListHist->Add(f3dHistGenPtVsYCMSVsMultMCXiPlus);
1138 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1140 if(! f3dHistGenPtVsYCMSVsMultMCOmegaMinus) {
1141 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);
1142 fListHist->Add(f3dHistGenPtVsYCMSVsMultMCOmegaMinus);
1144 if(! f3dHistGenPtVsYCMSVsMultMCOmegaPlus) {
1145 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);
1146 fListHist->Add(f3dHistGenPtVsYCMSVsMultMCOmegaPlus);
1150 //--------------------------------------------------------------------------------------
1151 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1153 if(! f3dHistGenSelectedPtVsYVsMultMCXiMinus) {
1154 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);
1155 fListHist->Add(f3dHistGenSelectedPtVsYVsMultMCXiMinus);
1157 if(! f3dHistGenSelectedPtVsYVsMultMCXiPlus) {
1158 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);
1159 fListHist->Add(f3dHistGenSelectedPtVsYVsMultMCXiPlus);
1161 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1163 if(! f3dHistGenSelectedPtVsYVsMultMCOmegaMinus) {
1164 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);
1165 fListHist->Add(f3dHistGenSelectedPtVsYVsMultMCOmegaMinus);
1167 if(! f3dHistGenSelectedPtVsYVsMultMCOmegaPlus) {
1168 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);
1169 fListHist->Add(f3dHistGenSelectedPtVsYVsMultMCOmegaPlus);
1172 //ANALYSIS level Cascades, YCMS
1175 if(! f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus) {
1176 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);
1177 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus);
1179 if(! f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus) {
1180 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);
1181 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus);
1183 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1185 if(! f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus) {
1186 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);
1187 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus);
1189 if(! f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus) {
1190 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);
1191 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus);
1194 //======================================================================================
1195 //--------------------------------------------------------------------------------------
1197 //--------------------------------------------------------------------------------------
1198 //======================================================================================
1200 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1202 if(! f3dHistGenPtVsYVsMultV0AXiMinus) {
1203 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);
1204 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultV0AXiMinus);
1206 if(! f3dHistGenPtVsYVsMultV0AXiPlus) {
1207 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);
1208 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultV0AXiPlus);
1210 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1212 if(! f3dHistGenPtVsYVsMultV0AOmegaMinus) {
1213 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);
1214 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultV0AOmegaMinus);
1216 if(! f3dHistGenPtVsYVsMultV0AOmegaPlus) {
1217 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);
1218 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultV0AOmegaPlus);
1221 //All generated cascades, YCMS
1223 if(! f3dHistGenPtVsYCMSVsMultV0AXiMinus) {
1224 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);
1225 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultV0AXiMinus);
1227 if(! f3dHistGenPtVsYCMSVsMultV0AXiPlus) {
1228 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);
1229 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultV0AXiPlus);
1231 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1233 if(! f3dHistGenPtVsYCMSVsMultV0AOmegaMinus) {
1234 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);
1235 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultV0AOmegaMinus);
1237 if(! f3dHistGenPtVsYCMSVsMultV0AOmegaPlus) {
1238 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);
1239 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultV0AOmegaPlus);
1243 //--------------------------------------------------------------------------------------
1244 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1246 if(! f3dHistGenSelectedPtVsYVsMultV0AXiMinus) {
1247 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);
1248 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultV0AXiMinus);
1250 if(! f3dHistGenSelectedPtVsYVsMultV0AXiPlus) {
1251 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);
1252 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultV0AXiPlus);
1254 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1256 if(! f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus) {
1257 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);
1258 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus);
1260 if(! f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus) {
1261 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);
1262 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus);
1265 //ANALYSIS level Cascades, YCMS
1268 if(! f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus) {
1269 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);
1270 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus);
1272 if(! f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus) {
1273 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);
1274 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus);
1276 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1278 if(! f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus) {
1279 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);
1280 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus);
1282 if(! f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus) {
1283 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);
1284 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus);
1287 //Cross-check primary selection criteria
1288 //Should not impact much but inspired by rumors of DPMJet issues with primary selection (?)
1290 if(! f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiMinus) {
1291 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);
1292 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiMinus);
1294 if(! f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiPlus) {
1295 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);
1296 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiPlus);
1298 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1300 if(! f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaMinus) {
1301 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);
1302 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaMinus);
1304 if(! f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaPlus) {
1305 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);
1306 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaPlus);
1309 //======================================================================================
1310 //--------------------------------------------------------------------------------------
1312 //--------------------------------------------------------------------------------------
1313 //======================================================================================
1315 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1317 if(! f3dHistGenPtVsYVsMultZNAXiMinus) {
1318 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);
1319 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultZNAXiMinus);
1321 if(! f3dHistGenPtVsYVsMultZNAXiPlus) {
1322 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);
1323 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultZNAXiPlus);
1325 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1327 if(! f3dHistGenPtVsYVsMultZNAOmegaMinus) {
1328 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);
1329 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultZNAOmegaMinus);
1331 if(! f3dHistGenPtVsYVsMultZNAOmegaPlus) {
1332 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);
1333 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultZNAOmegaPlus);
1336 //All generated cascades, YCMS
1338 if(! f3dHistGenPtVsYCMSVsMultZNAXiMinus) {
1339 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);
1340 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultZNAXiMinus);
1342 if(! f3dHistGenPtVsYCMSVsMultZNAXiPlus) {
1343 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);
1344 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultZNAXiPlus);
1346 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1348 if(! f3dHistGenPtVsYCMSVsMultZNAOmegaMinus) {
1349 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);
1350 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultZNAOmegaMinus);
1352 if(! f3dHistGenPtVsYCMSVsMultZNAOmegaPlus) {
1353 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);
1354 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultZNAOmegaPlus);
1358 //--------------------------------------------------------------------------------------
1359 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1361 if(! f3dHistGenSelectedPtVsYVsMultZNAXiMinus) {
1362 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);
1363 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultZNAXiMinus);
1365 if(! f3dHistGenSelectedPtVsYVsMultZNAXiPlus) {
1366 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);
1367 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultZNAXiPlus);
1369 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1371 if(! f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus) {
1372 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);
1373 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus);
1375 if(! f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus) {
1376 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);
1377 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus);
1380 //ANALYSIS level Cascades, YCMS
1383 if(! f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus) {
1384 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);
1385 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus);
1387 if(! f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus) {
1388 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);
1389 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus);
1391 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1393 if(! f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus) {
1394 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);
1395 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus);
1397 if(! f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus) {
1398 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);
1399 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus);
1403 //======================================================================================
1404 //--------------------------------------------------------------------------------------
1406 //--------------------------------------------------------------------------------------
1407 //======================================================================================
1409 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1411 if(! f3dHistGenPtVsYVsMultTRKXiMinus) {
1412 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);
1413 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultTRKXiMinus);
1415 if(! f3dHistGenPtVsYVsMultTRKXiPlus) {
1416 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);
1417 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultTRKXiPlus);
1419 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1421 if(! f3dHistGenPtVsYVsMultTRKOmegaMinus) {
1422 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);
1423 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultTRKOmegaMinus);
1425 if(! f3dHistGenPtVsYVsMultTRKOmegaPlus) {
1426 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);
1427 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultTRKOmegaPlus);
1430 //All generated cascades, YCMS
1432 if(! f3dHistGenPtVsYCMSVsMultTRKXiMinus) {
1433 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);
1434 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultTRKXiMinus);
1436 if(! f3dHistGenPtVsYCMSVsMultTRKXiPlus) {
1437 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);
1438 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultTRKXiPlus);
1440 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1442 if(! f3dHistGenPtVsYCMSVsMultTRKOmegaMinus) {
1443 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);
1444 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultTRKOmegaMinus);
1446 if(! f3dHistGenPtVsYCMSVsMultTRKOmegaPlus) {
1447 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);
1448 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultTRKOmegaPlus);
1452 //--------------------------------------------------------------------------------------
1453 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1455 if(! f3dHistGenSelectedPtVsYVsMultTRKXiMinus) {
1456 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);
1457 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultTRKXiMinus);
1459 if(! f3dHistGenSelectedPtVsYVsMultTRKXiPlus) {
1460 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);
1461 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultTRKXiPlus);
1463 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1465 if(! f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus) {
1466 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);
1467 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus);
1469 if(! f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus) {
1470 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);
1471 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus);
1474 //ANALYSIS level Cascades, YCMS
1477 if(! f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus) {
1478 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);
1479 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus);
1481 if(! f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus) {
1482 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);
1483 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus);
1485 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1487 if(! f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus) {
1488 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);
1489 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus);
1491 if(! f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus) {
1492 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);
1493 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus);
1496 //======================================================================================
1497 //--------------------------------------------------------------------------------------
1499 //--------------------------------------------------------------------------------------
1500 //======================================================================================
1502 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1504 if(! f3dHistGenPtVsYVsMultSPDXiMinus) {
1505 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);
1506 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultSPDXiMinus);
1508 if(! f3dHistGenPtVsYVsMultSPDXiPlus) {
1509 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);
1510 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultSPDXiPlus);
1512 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1514 if(! f3dHistGenPtVsYVsMultSPDOmegaMinus) {
1515 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);
1516 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultSPDOmegaMinus);
1518 if(! f3dHistGenPtVsYVsMultSPDOmegaPlus) {
1519 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);
1520 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultSPDOmegaPlus);
1523 //All generated cascades, YCMS
1525 if(! f3dHistGenPtVsYCMSVsMultSPDXiMinus) {
1526 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);
1527 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultSPDXiMinus);
1529 if(! f3dHistGenPtVsYCMSVsMultSPDXiPlus) {
1530 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);
1531 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultSPDXiPlus);
1533 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1535 if(! f3dHistGenPtVsYCMSVsMultSPDOmegaMinus) {
1536 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);
1537 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultSPDOmegaMinus);
1539 if(! f3dHistGenPtVsYCMSVsMultSPDOmegaPlus) {
1540 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);
1541 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultSPDOmegaPlus);
1545 //--------------------------------------------------------------------------------------
1546 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1548 if(! f3dHistGenSelectedPtVsYVsMultSPDXiMinus) {
1549 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);
1550 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultSPDXiMinus);
1552 if(! f3dHistGenSelectedPtVsYVsMultSPDXiPlus) {
1553 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);
1554 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultSPDXiPlus);
1556 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1558 if(! f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus) {
1559 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);
1560 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus);
1562 if(! f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus) {
1563 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);
1564 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus);
1567 //ANALYSIS level Cascades, YCMS
1570 if(! f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus) {
1571 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);
1572 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus);
1574 if(! f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus) {
1575 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);
1576 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus);
1578 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1580 if(! f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus) {
1581 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);
1582 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus);
1584 if(! f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus) {
1585 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);
1586 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus);
1589 //----------------------------------
1590 // Primary Vertex Position Histos
1591 //----------------------------------
1594 fHistPVx = new TH1F("fHistPVx",
1595 "PV x position;Nbr of Evts;x",
1597 fListHist->Add(fHistPVx);
1600 fHistPVy = new TH1F("fHistPVy",
1601 "PV y position;Nbr of Evts;y",
1603 fListHist->Add(fHistPVy);
1606 fHistPVz = new TH1F("fHistPVz",
1607 "PV z position;Nbr of Evts;z",
1609 fListHist->Add(fHistPVz);
1612 if(! fHistPVxAnalysis) {
1613 fHistPVxAnalysis = new TH1F("fHistPVxAnalysis",
1614 "PV x position;Nbr of Evts;x",
1616 fListHist->Add(fHistPVxAnalysis);
1618 if(! fHistPVyAnalysis) {
1619 fHistPVyAnalysis = new TH1F("fHistPVyAnalysis",
1620 "PV y position;Nbr of Evts;y",
1622 fListHist->Add(fHistPVyAnalysis);
1624 if(! fHistPVzAnalysis) {
1625 fHistPVzAnalysis = new TH1F("fHistPVzAnalysis",
1626 "PV z position;Nbr of Evts;z",
1628 fListHist->Add(fHistPVzAnalysis);
1631 //List of Histograms: Normal
1632 PostData(1, fListHist);
1634 //TTree Object: Saved to base directory. Should cache to disk while saving.
1635 //(Important to avoid excessive memory usage, particularly when merging)
1636 PostData(2, fTreeCascade);
1638 }// end UserCreateOutputObjects
1641 //________________________________________________________________________
1642 void AliAnalysisTaskExtractPerformanceCascade::UserExec(Option_t *)
1645 // Called for each event
1647 AliESDEvent *lESDevent = 0x0;
1648 AliMCEvent *lMCevent = 0x0;
1649 AliStack *lMCstack = 0x0;
1651 Int_t lNumberOfV0s = -1;
1652 Double_t lTrkgPrimaryVtxPos[3] = {-100.0, -100.0, -100.0};
1653 Double_t lBestPrimaryVtxPos[3] = {-100.0, -100.0, -100.0};
1654 Double_t lMagneticField = -10.;
1656 // Connect to the InputEvent
1657 // After these lines, we should have an ESD/AOD event + the number of V0s in it.
1659 // Appropriate for ESD analysis!
1661 lESDevent = dynamic_cast<AliESDEvent*>( InputEvent() );
1663 AliWarning("ERROR: lESDevent not available \n");
1667 /* --- Acquisition of exact event ID
1668 fTreeVariableRunNumber = lESDevent->GetRunNumber();
1669 fTreeVariableEventNumber =
1670 ( ( ((ULong64_t)lESDevent->GetPeriodNumber() ) << 36 ) |
1671 ( ((ULong64_t)lESDevent->GetOrbitNumber () ) << 12 ) |
1672 ((ULong64_t)lESDevent->GetBunchCrossNumber() ) );
1674 lMCevent = MCEvent();
1676 Printf("ERROR: Could not retrieve MC event \n");
1677 cout << "Name of the file with pb :" << fInputHandler->GetTree()->GetCurrentFile()->GetName() << endl;
1681 lMCstack = lMCevent->Stack();
1683 Printf("ERROR: Could not retrieve MC stack \n");
1684 cout << "Name of the file with pb :" << fInputHandler->GetTree()->GetCurrentFile()->GetName() << endl;
1687 TArrayF mcPrimaryVtx;
1688 AliGenEventHeader* mcHeader=lMCevent->GenEventHeader();
1689 if(!mcHeader) return;
1690 mcHeader->PrimaryVertex(mcPrimaryVtx);
1692 //------------------------------------------------
1693 // Multiplicity Information Acquistion
1694 //------------------------------------------------
1696 //REVISED multiplicity estimator after 'multiplicity day' (2011)
1697 Int_t lMultiplicity = -100;
1698 Int_t lMultiplicityV0A = -100;
1699 Int_t lMultiplicityZNA = -100;
1700 Int_t lMultiplicityTRK = -100;
1701 Int_t lMultiplicitySPD = -100;
1704 if(fkIsNuclear == kFALSE) lMultiplicity = fESDtrackCuts->GetReferenceMultiplicity(lESDevent, AliESDtrackCuts::kTrackletsITSTPC, fEtaRefMult );
1706 //--------- GENERATED NUMBER OF CHARGED PARTICLES
1707 // ---> Set Variables to Zero again
1708 // ---> Variable Definition
1710 Long_t lNumberOfCharged = 0;
1712 //----- Loop on Stack ----------------------------------------------------------------
1713 for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < (lMCstack->GetNtrack()); iCurrentLabelStack++)
1714 {// This is the begining of the loop on tracks
1715 TParticle* particleOne = lMCstack->Particle(iCurrentLabelStack);
1716 if(!particleOne) continue;
1717 if(!particleOne->GetPDG()) continue;
1718 Double_t lThisCharge = particleOne->GetPDG()->Charge()/3.;
1719 if(TMath::Abs(lThisCharge)<0.001) continue;
1720 if(! (lMCstack->IsPhysicalPrimary(iCurrentLabelStack)) ) continue;
1722 //Double_t gpt = particleOne -> Pt();
1723 Double_t geta = particleOne -> Eta();
1725 if( TMath::Abs(geta) < 0.5) lNumberOfCharged++;
1726 }//End of loop on tracks
1727 //----- End Loop on Stack ------------------------------------------------------------
1730 //---> If this is a nuclear collision, then go nuclear on "multiplicity" variable...
1731 //---> Warning: Experimental
1732 if(fkIsNuclear == kTRUE){
1733 AliCentrality* centrality;
1734 centrality = lESDevent->GetCentrality();
1735 lMultiplicity = ( ( Int_t ) ( centrality->GetCentralityPercentile( fCentralityEstimator.Data() ) ) );
1736 lMultiplicityV0A = ( ( Int_t ) ( centrality->GetCentralityPercentile( "V0A" ) ) );
1737 lMultiplicityZNA = ( ( Int_t ) ( centrality->GetCentralityPercentile( "ZNA" ) ) );
1738 lMultiplicityTRK = ( ( Int_t ) ( centrality->GetCentralityPercentile( "TRK" ) ) );
1739 lMultiplicitySPD = ( ( Int_t ) ( centrality->GetCentralityPercentile( "CL1" ) ) );
1740 if (centrality->GetQuality()>1) {
1741 PostData(1, fListHist);
1742 PostData(2, fTreeCascade);
1747 //Set variable for filling tree afterwards!
1748 //---> pp case......: GetReferenceMultiplicity
1749 //---> Pb-Pb case...: Centrality by V0M
1751 fTreeCascVarMultiplicity = lMultiplicity;
1752 fTreeCascVarMultiplicityMC = lNumberOfCharged;
1753 fTreeCascVarMultiplicityV0A = lMultiplicityV0A;
1754 fTreeCascVarMultiplicityZNA = lMultiplicityZNA;
1755 fTreeCascVarMultiplicityTRK = lMultiplicityTRK;
1756 fTreeCascVarMultiplicitySPD = lMultiplicitySPD;
1758 fHistV0MultiplicityBeforeTrigSel->Fill ( lESDevent->GetNumberOfV0s() );
1759 fHistMultiplicityBeforeTrigSel->Fill ( lMultiplicity );
1760 fHistMultiplicityV0ABeforeTrigSel->Fill ( lMultiplicityV0A );
1761 fHistMultiplicityZNABeforeTrigSel->Fill ( lMultiplicityZNA );
1762 fHistMultiplicityTRKBeforeTrigSel->Fill ( lMultiplicityTRK );
1763 fHistMultiplicitySPDBeforeTrigSel->Fill ( lMultiplicitySPD );
1765 //------------------------------------------------
1766 // MC Information Acquistion
1767 //------------------------------------------------
1769 Int_t iNumberOfPrimaries = -1;
1770 iNumberOfPrimaries = lMCstack->GetNprimary();
1771 if(iNumberOfPrimaries < 1) return;
1773 //------------------------------------------------
1774 // Variable Definition
1775 //------------------------------------------------
1777 Int_t lNbMCPrimary = 0;
1779 Double_t lPtCurrentPart = 0;
1781 //Int_t lComeFromSigma = 0;
1783 // current mc particle 's mother
1784 //Int_t iCurrentMother = 0;
1785 lNbMCPrimary = lMCstack->GetNprimary();
1787 //------------------------------------------------
1788 // Pre-Physics Selection
1789 //------------------------------------------------
1792 fTreeCascVarEvHasXiMinus = kFALSE;
1793 fTreeCascVarEvHasXiPlus = kFALSE;
1794 fTreeCascVarEvHasOmegaMinus = kFALSE;
1795 fTreeCascVarEvHasOmegaPlus = kFALSE;
1796 fTreeCascVarEvHasLambda = kFALSE;
1797 fTreeCascVarEvHasAntiLambda = kFALSE;
1799 fTreeCascVarEvHasLowPtXiMinus = kFALSE;
1800 fTreeCascVarEvHasLowPtXiPlus = kFALSE;
1801 fTreeCascVarEvHasLowPtOmegaMinus = kFALSE;
1802 fTreeCascVarEvHasLowPtOmegaPlus = kFALSE;
1803 fTreeCascVarEvHasLowPtLambda = kFALSE;
1804 fTreeCascVarEvHasLowPtAntiLambda = kFALSE;
1806 fTreeCascVarEvHasVeryLowPtXiMinus = kFALSE;
1807 fTreeCascVarEvHasVeryLowPtXiPlus = kFALSE;
1808 fTreeCascVarEvHasVeryLowPtOmegaMinus = kFALSE;
1809 fTreeCascVarEvHasVeryLowPtOmegaPlus = kFALSE;
1810 fTreeCascVarEvHasVeryLowPtLambda = kFALSE;
1811 fTreeCascVarEvHasVeryLowPtAntiLambda = kFALSE;
1814 //----- Loop on primary Xi, Omega --------------------------------------------------------------
1815 for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < lNbMCPrimary; iCurrentLabelStack++)
1816 {// This is the begining of the loop on primaries
1818 TParticle* lCurrentParticlePrimary = 0x0;
1819 lCurrentParticlePrimary = lMCstack->Particle( iCurrentLabelStack );
1820 if(!lCurrentParticlePrimary){
1821 Printf("Cascade loop %d - MC TParticle pointer to current stack particle = 0x0 ! Skip ...\n", iCurrentLabelStack );
1825 //Event Type Acquisition
1826 if(lCurrentParticlePrimary->GetPdgCode() == 3312){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) ) fTreeCascVarEvHasXiMinus = kTRUE; }
1827 if(lCurrentParticlePrimary->GetPdgCode() ==-3312){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) ) fTreeCascVarEvHasXiPlus = kTRUE; }
1828 if(lCurrentParticlePrimary->GetPdgCode() == 3334){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) ) fTreeCascVarEvHasOmegaMinus = kTRUE; }
1829 if(lCurrentParticlePrimary->GetPdgCode() ==-3334){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) ) fTreeCascVarEvHasOmegaPlus = kTRUE; }
1830 if(lCurrentParticlePrimary->GetPdgCode() == 3122){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) ) fTreeCascVarEvHasLambda = kTRUE; }
1831 if(lCurrentParticlePrimary->GetPdgCode() ==-3122){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) ) fTreeCascVarEvHasAntiLambda = kTRUE; }
1833 if(lCurrentParticlePrimary->GetPdgCode() == 3312){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<2.0) fTreeCascVarEvHasLowPtXiMinus = kTRUE; }
1834 if(lCurrentParticlePrimary->GetPdgCode() ==-3312){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<2.0) fTreeCascVarEvHasLowPtXiPlus = kTRUE; }
1835 if(lCurrentParticlePrimary->GetPdgCode() == 3334){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<2.0) fTreeCascVarEvHasLowPtOmegaMinus = kTRUE; }
1836 if(lCurrentParticlePrimary->GetPdgCode() ==-3334){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<2.0) fTreeCascVarEvHasLowPtOmegaPlus = kTRUE; }
1837 if(lCurrentParticlePrimary->GetPdgCode() == 3122){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<2.0) fTreeCascVarEvHasLowPtLambda = kTRUE; }
1838 if(lCurrentParticlePrimary->GetPdgCode() ==-3122){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<2.0) fTreeCascVarEvHasLowPtAntiLambda = kTRUE; }
1840 if(lCurrentParticlePrimary->GetPdgCode() == 3312){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<1.2) fTreeCascVarEvHasVeryLowPtXiMinus = kTRUE; }
1841 if(lCurrentParticlePrimary->GetPdgCode() ==-3312){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<1.2) fTreeCascVarEvHasVeryLowPtXiPlus = kTRUE; }
1842 if(lCurrentParticlePrimary->GetPdgCode() == 3334){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<1.2) fTreeCascVarEvHasVeryLowPtOmegaMinus = kTRUE; }
1843 if(lCurrentParticlePrimary->GetPdgCode() ==-3334){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<1.2) fTreeCascVarEvHasVeryLowPtOmegaPlus = kTRUE; }
1844 if(lCurrentParticlePrimary->GetPdgCode() == 3122){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<1.2) fTreeCascVarEvHasVeryLowPtLambda = kTRUE; }
1845 if(lCurrentParticlePrimary->GetPdgCode() ==-3122){ if (TMath::Abs(lCurrentParticlePrimary->Eta())<1.2 && lMCstack->IsPhysicalPrimary(iCurrentLabelStack) && lCurrentParticlePrimary->Pt()<1.2) fTreeCascVarEvHasVeryLowPtAntiLambda = kTRUE; }
1847 if ( TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3312 || TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3334 ) {
1848 Double_t lRapXiMCPrimary = -100;
1849 if( (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) != 0 ) {
1850 if ( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) !=0 ){
1851 lRapXiMCPrimary = 0.5*TMath::Log( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) );
1855 //=================================================================================
1857 if( lCurrentParticlePrimary->GetPdgCode() == 3312 ){
1858 lPtCurrentPart = lCurrentParticlePrimary->Pt();
1859 f3dHistGenPtVsYVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
1860 f3dHistGenPtVsYCMSVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
1862 f3dHistGenPtVsYVsMultMCXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
1863 f3dHistGenPtVsYCMSVsMultMCXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
1865 f3dHistGenPtVsYVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
1866 f3dHistGenPtVsYCMSVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
1868 f3dHistGenPtVsYVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
1869 f3dHistGenPtVsYCMSVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
1871 f3dHistGenPtVsYVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
1872 f3dHistGenPtVsYCMSVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
1874 f3dHistGenPtVsYVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
1875 f3dHistGenPtVsYCMSVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
1877 if( lCurrentParticlePrimary->GetPdgCode() == -3312 ){
1878 lPtCurrentPart = lCurrentParticlePrimary->Pt();
1879 f3dHistGenPtVsYVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
1880 f3dHistGenPtVsYCMSVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
1882 f3dHistGenPtVsYVsMultMCXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
1883 f3dHistGenPtVsYCMSVsMultMCXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
1885 f3dHistGenPtVsYVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
1886 f3dHistGenPtVsYCMSVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
1888 f3dHistGenPtVsYVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
1889 f3dHistGenPtVsYCMSVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
1891 f3dHistGenPtVsYVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
1892 f3dHistGenPtVsYCMSVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
1894 f3dHistGenPtVsYVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
1895 f3dHistGenPtVsYCMSVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
1898 if( lCurrentParticlePrimary->GetPdgCode() == 3334 ){
1899 lPtCurrentPart = lCurrentParticlePrimary->Pt();
1900 f3dHistGenPtVsYVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
1901 f3dHistGenPtVsYCMSVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
1903 f3dHistGenPtVsYVsMultMCOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
1904 f3dHistGenPtVsYCMSVsMultMCOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
1906 f3dHistGenPtVsYVsMultV0AOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
1907 f3dHistGenPtVsYCMSVsMultV0AOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
1909 f3dHistGenPtVsYVsMultZNAOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
1910 f3dHistGenPtVsYCMSVsMultZNAOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
1912 f3dHistGenPtVsYVsMultTRKOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
1913 f3dHistGenPtVsYCMSVsMultTRKOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
1915 f3dHistGenPtVsYVsMultSPDOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
1916 f3dHistGenPtVsYCMSVsMultSPDOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
1918 if( lCurrentParticlePrimary->GetPdgCode() == -3334 ){
1919 lPtCurrentPart = lCurrentParticlePrimary->Pt();
1920 f3dHistGenPtVsYVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
1921 f3dHistGenPtVsYCMSVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
1923 f3dHistGenPtVsYVsMultMCOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
1924 f3dHistGenPtVsYCMSVsMultMCOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
1926 f3dHistGenPtVsYVsMultV0AOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
1927 f3dHistGenPtVsYCMSVsMultV0AOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
1929 f3dHistGenPtVsYVsMultZNAOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
1930 f3dHistGenPtVsYCMSVsMultZNAOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
1932 f3dHistGenPtVsYVsMultTRKOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
1933 f3dHistGenPtVsYCMSVsMultTRKOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
1935 f3dHistGenPtVsYVsMultSPDOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
1936 f3dHistGenPtVsYCMSVsMultSPDOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
1940 //----- End Loop on primary Xi, Omega ----------------------------------------------------------
1942 // ---> Set Variables to Zero again
1943 // ---> Variable Definition
1947 //------------------------------------------------
1948 // Physics Selection
1949 //------------------------------------------------
1951 UInt_t maskIsSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
1952 Bool_t isSelected = 0;
1953 isSelected = (maskIsSelected & AliVEvent::kMB) == AliVEvent::kMB;
1955 //pA triggering: CINT7
1956 if( fkSwitchINT7 ) isSelected = (maskIsSelected & AliVEvent::kINT7) == AliVEvent::kINT7;
1958 //Standard Min-Bias Selection
1959 if ( ! isSelected ) {
1960 PostData(1, fListHist);
1961 PostData(2, fTreeCascade);
1965 //------------------------------------------------
1966 // Rerun cascade vertexer!
1967 //------------------------------------------------
1969 if( fkRunVertexers ){
1970 lESDevent->ResetCascades();
1971 lESDevent->ResetV0s();
1973 AliV0vertexer lV0vtxer;
1974 AliCascadeVertexer lCascVtxer;
1976 lV0vtxer.SetDefaultCuts(fV0VertexerSels);
1977 lCascVtxer.SetDefaultCuts(fCascadeVertexerSels);
1979 lV0vtxer.Tracks2V0vertices(lESDevent);
1980 lCascVtxer.V0sTracks2CascadeVertices(lESDevent);
1982 //------------------------------------------------
1983 // After Trigger Selection
1984 //------------------------------------------------
1986 lNumberOfV0s = lESDevent->GetNumberOfV0s();
1988 //Set variable for filling tree afterwards!
1989 fHistV0MultiplicityForTrigEvt->Fill(lNumberOfV0s);
1990 fHistMultiplicityForTrigEvt->Fill ( lMultiplicity );
1991 fHistMultiplicityV0AForTrigEvt ->Fill( lMultiplicityV0A );
1992 fHistMultiplicityZNAForTrigEvt ->Fill( lMultiplicityZNA );
1993 fHistMultiplicityTRKForTrigEvt ->Fill( lMultiplicityTRK );
1994 fHistMultiplicitySPDForTrigEvt ->Fill( lMultiplicitySPD );
1996 //------------------------------------------------
1997 // Getting: Primary Vertex + MagField Info
1998 //------------------------------------------------
2000 const AliESDVertex *lPrimaryTrackingESDVtx = lESDevent->GetPrimaryVertexTracks();
2001 // get the vtx stored in ESD found with tracks
2002 lPrimaryTrackingESDVtx->GetXYZ( lTrkgPrimaryVtxPos );
2004 const AliESDVertex *lPrimaryBestESDVtx = lESDevent->GetPrimaryVertex();
2005 // get the best primary vertex available for the event
2006 // As done in AliCascadeVertexer, we keep the one which is the best one available.
2007 // between : Tracking vertex > SPD vertex > TPC vertex > default SPD vertex
2008 // This one will be used for next calculations (DCA essentially)
2009 lPrimaryBestESDVtx->GetXYZ( lBestPrimaryVtxPos );
2011 Double_t lPrimaryVtxPosition[3];
2012 const AliVVertex *primaryVtx = lESDevent->GetPrimaryVertex();
2013 lPrimaryVtxPosition[0] = primaryVtx->GetX();
2014 lPrimaryVtxPosition[1] = primaryVtx->GetY();
2015 lPrimaryVtxPosition[2] = primaryVtx->GetZ();
2016 fHistPVx->Fill( lPrimaryVtxPosition[0] );
2017 fHistPVy->Fill( lPrimaryVtxPosition[1] );
2018 fHistPVz->Fill( lPrimaryVtxPosition[2] );
2020 //------------------------------------------------
2021 // Primary Vertex Requirements Section:
2022 // ---> pp and PbPb: Only requires |z|<10cm
2023 // ---> pPb: all requirements checked at this stage
2024 //------------------------------------------------
2026 //Roberto's PV selection criteria, implemented 17th April 2013
2028 /* vertex selection */
2029 Bool_t fHasVertex = kFALSE;
2031 const AliESDVertex *vertex = lESDevent->GetPrimaryVertexTracks();
2032 if (vertex->GetNContributors() < 1) {
2033 vertex = lESDevent->GetPrimaryVertexSPD();
2034 if (vertex->GetNContributors() < 1) fHasVertex = kFALSE;
2035 else fHasVertex = kTRUE;
2036 TString vtxTyp = vertex->GetTitle();
2037 Double_t cov[6]={0};
2038 vertex->GetCovarianceMatrix(cov);
2039 Double_t zRes = TMath::Sqrt(cov[5]);
2040 if (vtxTyp.Contains("vertexer:Z") && (zRes>0.25)) fHasVertex = kFALSE;
2042 else fHasVertex = kTRUE;
2044 //Is First event in chunk rejection: Still present!
2045 if(fkpAVertexSelection==kTRUE && fHasVertex == kFALSE) {
2046 AliWarning("Pb / | PV does not satisfy selection criteria!");
2047 PostData(1, fListHist);
2048 PostData(2, fTreeCascade);
2052 //Is First event in chunk rejection: Still present!
2053 if(fkpAVertexSelection==kTRUE && fUtils->IsFirstEventInChunk(lESDevent)) {
2054 AliWarning("Pb / | This is the first event in the chunk!");
2055 PostData(1, fListHist);
2056 PostData(2, fTreeCascade);
2060 //17 April Fix: Always do primary vertex Z selection, after pA vertex selection from Roberto
2061 if(TMath::Abs(lBestPrimaryVtxPos[2]) > 10.0) {
2062 AliWarning("Pb / | Z position of Best Prim Vtx | > 10.0 cm ... return !");
2063 PostData(1, fListHist);
2064 PostData(2, fTreeCascade);
2068 lMagneticField = lESDevent->GetMagneticField( );
2069 fHistV0MultiplicityForSelEvt ->Fill( lNumberOfV0s );
2070 fHistMultiplicity->Fill(lMultiplicity);
2071 fHistMultiplicityV0A->Fill(lMultiplicityV0A);
2072 fHistMultiplicityZNA->Fill(lMultiplicityZNA);
2073 fHistMultiplicityTRK->Fill(lMultiplicityTRK);
2074 fHistMultiplicitySPD->Fill(lMultiplicitySPD);
2076 //------------------------------------------------
2077 // SKIP: Events with well-established PVtx
2078 //------------------------------------------------
2080 const AliESDVertex *lPrimaryTrackingESDVtxCheck = lESDevent->GetPrimaryVertexTracks();
2081 const AliESDVertex *lPrimarySPDVtx = lESDevent->GetPrimaryVertexSPD();
2082 if (!lPrimarySPDVtx->GetStatus() && !lPrimaryTrackingESDVtxCheck->GetStatus() && fkpAVertexSelection==kFALSE ){
2083 AliWarning("Pb / No SPD prim. vertex nor prim. Tracking vertex ... return !");
2084 PostData(1, fListHist);
2085 PostData(2, fTreeCascade);
2088 fHistV0MultiplicityForSelEvtNoTPCOnly ->Fill( lNumberOfV0s );
2089 fHistMultiplicityNoTPCOnly->Fill(lMultiplicity);
2090 fHistMultiplicityV0ANoTPCOnly->Fill(lMultiplicityV0A);
2091 fHistMultiplicityZNANoTPCOnly->Fill(lMultiplicityZNA);
2092 fHistMultiplicityTRKNoTPCOnly->Fill(lMultiplicityTRK);
2093 fHistMultiplicitySPDNoTPCOnly->Fill(lMultiplicitySPD);
2095 //------------------------------------------------
2096 // Pileup Rejection Studies
2097 //------------------------------------------------
2099 // FIXME : quality selection regarding pile-up rejection
2100 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
2101 AliWarning("Pb / This is tagged as Pileup from SPD... return !");
2102 PostData(1, fListHist);
2103 PostData(2, fTreeCascade);
2106 fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup ->Fill( lNumberOfV0s );
2107 fHistMultiplicityNoTPCOnlyNoPileup->Fill(lMultiplicity);
2108 fHistMultiplicityV0ANoTPCOnlyNoPileup->Fill(lMultiplicityV0A);
2109 fHistMultiplicityZNANoTPCOnlyNoPileup->Fill(lMultiplicityZNA);
2110 fHistMultiplicityTRKNoTPCOnlyNoPileup->Fill(lMultiplicityTRK);
2111 fHistMultiplicitySPDNoTPCOnlyNoPileup->Fill(lMultiplicitySPD);
2113 //Do control histograms without the IsFromVertexerZ events, but consider them in analysis...
2114 if( ! (lESDevent->GetPrimaryVertex()->IsFromVertexerZ() ) ){
2115 fHistPVxAnalysis->Fill( lPrimaryVtxPosition[0] );
2116 fHistPVyAnalysis->Fill( lPrimaryVtxPosition[1] );
2117 fHistPVzAnalysis->Fill( lPrimaryVtxPosition[2] );
2120 //------------------------------------------------
2121 // stack loop starts here
2122 //------------------------------------------------
2124 //----- Loop on primary Xi, Omega --------------------------------------------------------------
2125 for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < lNbMCPrimary; iCurrentLabelStack++)
2126 {// This is the begining of the loop on primaries
2128 TParticle* lCurrentParticlePrimary = 0x0;
2129 lCurrentParticlePrimary = lMCstack->Particle( iCurrentLabelStack );
2130 if(!lCurrentParticlePrimary){
2131 Printf("Cascade loop %d - MC TParticle pointer to current stack particle = 0x0 ! Skip ...\n", iCurrentLabelStack );
2134 if ( TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3312 || TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3334 ) {
2135 Double_t lRapXiMCPrimary = -100;
2136 if( (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) != 0 ) {
2137 if ( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) !=0 ){
2138 lRapXiMCPrimary = 0.5*TMath::Log( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) );
2142 //=================================================================================
2144 if( lCurrentParticlePrimary->GetPdgCode() == 3312 ){
2145 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2146 f3dHistGenSelectedPtVsYVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
2147 f3dHistGenSelectedPtVsYCMSVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
2149 f3dHistGenSelectedPtVsYVsMultMCXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
2150 f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
2152 f3dHistGenSelectedPtVsYVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
2153 f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2155 f3dHistGenSelectedPtVsYVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
2156 f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
2158 f3dHistGenSelectedPtVsYVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
2159 f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
2161 f3dHistGenSelectedPtVsYVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
2162 f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
2164 if( lCurrentParticlePrimary->GetPdgCode() == -3312 ){
2165 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2166 f3dHistGenSelectedPtVsYVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
2167 f3dHistGenSelectedPtVsYCMSVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
2169 f3dHistGenSelectedPtVsYVsMultMCXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
2170 f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
2172 f3dHistGenSelectedPtVsYVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
2173 f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2175 f3dHistGenSelectedPtVsYVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
2176 f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
2178 f3dHistGenSelectedPtVsYVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
2179 f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
2181 f3dHistGenSelectedPtVsYVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
2182 f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
2185 if( lCurrentParticlePrimary->GetPdgCode() == 3334 ){
2186 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2187 f3dHistGenSelectedPtVsYVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
2188 f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
2190 f3dHistGenSelectedPtVsYVsMultMCOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
2191 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
2193 f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
2194 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2196 f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
2197 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
2199 f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
2200 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
2202 f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
2203 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
2205 if( lCurrentParticlePrimary->GetPdgCode() == -3334 ){
2206 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2207 f3dHistGenSelectedPtVsYVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
2208 f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
2210 f3dHistGenSelectedPtVsYVsMultMCOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
2211 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
2213 f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
2214 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2216 f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
2217 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
2219 f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
2220 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
2222 f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
2223 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
2227 //----- End Loop on primary Xi, Omega ----------------------------------------------------------
2230 //----- Loop on primary Xi, Omega --------------------------------------------------------------
2231 for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < (lMCstack->GetNtrack()); iCurrentLabelStack++)
2232 {// This is the begining of the loop on primaries
2234 TParticle* lCurrentParticlePrimary = 0x0;
2235 lCurrentParticlePrimary = lMCstack->Particle( iCurrentLabelStack );
2236 if(!lCurrentParticlePrimary){
2237 Printf("Cascade loop %d - MC TParticle pointer to current stack particle = 0x0 ! Skip ...\n", iCurrentLabelStack );
2240 if ( TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3312 || TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3334 ) {
2241 Double_t lRapXiMCPrimary = -100;
2242 if( (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) != 0 ) {
2243 if ( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) !=0 ){
2244 lRapXiMCPrimary = 0.5*TMath::Log( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) );
2247 //IsPhysicalPrimary: Cross-check with old index test
2248 // (cascades -> negligible difference ?... )
2249 if ( lMCstack->IsPhysicalPrimary(iCurrentLabelStack)!=kTRUE ) continue;
2251 //=================================================================================
2253 if( lCurrentParticlePrimary->GetPdgCode() == 3312 ){
2254 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2255 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2257 if( lCurrentParticlePrimary->GetPdgCode() == -3312 ){
2258 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2259 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2262 if( lCurrentParticlePrimary->GetPdgCode() == 3334 ){
2263 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2264 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2266 if( lCurrentParticlePrimary->GetPdgCode() == -3334 ){
2267 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2268 f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2272 //----- End Loop on primary Xi, Omega ----------------------------------------------------------
2275 //------------------------------------------------
2276 // MAIN CASCADE LOOP STARTS HERE
2277 //------------------------------------------------
2278 // Code Credit: Antonin Maire (thanks^100)
2279 // ---> This is an adaptation
2281 Long_t ncascades = 0;
2282 ncascades = lESDevent->GetNumberOfCascades();
2285 for (Int_t iXi = 0; iXi < ncascades; iXi++){
2286 //------------------------------------------------
2288 //------------------------------------------------
2289 //Double_t lTrkgPrimaryVtxRadius3D = -500.0;
2290 //Double_t lBestPrimaryVtxRadius3D = -500.0;
2292 // - 1st part of initialisation : variables needed to store AliESDCascade data members
2293 Double_t lEffMassXi = 0. ;
2294 //Double_t lChi2Xi = -1. ;
2295 Double_t lDcaXiDaughters = -1. ;
2296 Double_t lXiCosineOfPointingAngle = -1. ;
2297 Double_t lPosXi[3] = { -1000.0, -1000.0, -1000.0 };
2298 Double_t lXiRadius = -1000. ;
2300 // - 2nd part of initialisation : Nbr of clusters within TPC for the 3 daughter cascade tracks
2301 Int_t lPosTPCClusters = -1; // For ESD only ...//FIXME : wait for availability in AOD
2302 Int_t lNegTPCClusters = -1; // For ESD only ...
2303 Int_t lBachTPCClusters = -1; // For ESD only ...
2305 // - 3rd part of initialisation : about V0 part in cascades
2306 Double_t lInvMassLambdaAsCascDghter = 0.;
2307 //Double_t lV0Chi2Xi = -1. ;
2308 Double_t lDcaV0DaughtersXi = -1.;
2310 Double_t lDcaBachToPrimVertexXi = -1., lDcaV0ToPrimVertexXi = -1.;
2311 Double_t lDcaPosToPrimVertexXi = -1.;
2312 Double_t lDcaNegToPrimVertexXi = -1.;
2313 Double_t lV0CosineOfPointingAngleXi = -1. ;
2314 Double_t lV0CosineOfPointingAngleXiSpecial = -1. ;
2315 Double_t lPosV0Xi[3] = { -1000. , -1000., -1000. }; // Position of VO coming from cascade
2316 Double_t lV0RadiusXi = -1000.0;
2317 Double_t lV0quality = 0.;
2319 // - 4th part of initialisation : Effective masses
2320 Double_t lInvMassXiMinus = 0.;
2321 Double_t lInvMassXiPlus = 0.;
2322 Double_t lInvMassOmegaMinus = 0.;
2323 Double_t lInvMassOmegaPlus = 0.;
2325 // - 6th part of initialisation : extra info for QA
2326 Double_t lXiMomX = 0. , lXiMomY = 0., lXiMomZ = 0.;
2327 Double_t lXiTransvMom = 0. ;
2328 Double_t lXiTransvMomMC= 0. ;
2329 Double_t lXiTotMom = 0. ;
2331 Double_t lBachMomX = 0., lBachMomY = 0., lBachMomZ = 0.;
2332 //Double_t lBachTransvMom = 0.;
2333 //Double_t lBachTotMom = 0.;
2335 fTreeCascVarNegNSigmaPion = -100;
2336 fTreeCascVarNegNSigmaProton = -100;
2337 fTreeCascVarPosNSigmaPion = -100;
2338 fTreeCascVarPosNSigmaProton = -100;
2339 fTreeCascVarBachNSigmaPion = -100;
2340 fTreeCascVarBachNSigmaKaon = -100;
2342 Short_t lChargeXi = -2;
2343 //Double_t lV0toXiCosineOfPointingAngle = 0. ;
2345 Double_t lRapXi = -20.0, lRapOmega = -20.0, lRapMC = -20.0; // lEta = -20.0, lTheta = 360., lPhi = 720. ;
2346 //Double_t lAlphaXi = -200., lPtArmXi = -200.0;
2348 // -------------------------------------
2349 // II.ESD - Calculation Part dedicated to Xi vertices (ESD)
2351 AliESDcascade *xi = lESDevent->GetCascade(iXi);
2355 // - II.Step 1 : around primary vertex
2357 //lTrkgPrimaryVtxRadius3D = TMath::Sqrt( lTrkgPrimaryVtxPos[0] * lTrkgPrimaryVtxPos[0] +
2358 // lTrkgPrimaryVtxPos[1] * lTrkgPrimaryVtxPos[1] +
2359 // lTrkgPrimaryVtxPos[2] * lTrkgPrimaryVtxPos[2] );
2361 //lBestPrimaryVtxRadius3D = TMath::Sqrt( lBestPrimaryVtxPos[0] * lBestPrimaryVtxPos[0] +
2362 // lBestPrimaryVtxPos[1] * lBestPrimaryVtxPos[1] +
2363 // lBestPrimaryVtxPos[2] * lBestPrimaryVtxPos[2] );
2365 // - II.Step 2 : Assigning the necessary variables for specific AliESDcascade data members (ESD)
2368 xi->ChangeMassHypothesis(lV0quality , 3312); // default working hypothesis : cascade = Xi- decay
2370 lEffMassXi = xi->GetEffMassXi();
2371 //lChi2Xi = xi->GetChi2Xi();
2372 lDcaXiDaughters = xi->GetDcaXiDaughters();
2373 lXiCosineOfPointingAngle = xi->GetCascadeCosineOfPointingAngle( lBestPrimaryVtxPos[0],
2374 lBestPrimaryVtxPos[1],
2375 lBestPrimaryVtxPos[2] );
2376 // Take care : the best available vertex should be used (like in AliCascadeVertexer)
2378 xi->GetXYZcascade( lPosXi[0], lPosXi[1], lPosXi[2] );
2379 lXiRadius = TMath::Sqrt( lPosXi[0]*lPosXi[0] + lPosXi[1]*lPosXi[1] );
2381 // - II.Step 3 : around the tracks : Bach + V0 (ESD)
2382 // ~ Necessary variables for ESDcascade data members coming from the ESDv0 part (inheritance)
2385 UInt_t lIdxPosXi = (UInt_t) TMath::Abs( xi->GetPindex() );
2386 UInt_t lIdxNegXi = (UInt_t) TMath::Abs( xi->GetNindex() );
2387 UInt_t lBachIdx = (UInt_t) TMath::Abs( xi->GetBindex() );
2388 // Care track label can be negative in MC production (linked with the track quality)
2389 // However = normally, not the case for track index ...
2391 // FIXME : rejection of a double use of a daughter track (nothing but just a crosscheck of what is done in the cascade vertexer)
2392 if(lBachIdx == lIdxNegXi) {
2393 AliWarning("Pb / Idx(Bach. track) = Idx(Neg. track) ... continue!"); continue;
2395 if(lBachIdx == lIdxPosXi) {
2396 AliWarning("Pb / Idx(Bach. track) = Idx(Pos. track) ... continue!"); continue;
2399 AliESDtrack *pTrackXi = lESDevent->GetTrack( lIdxPosXi );
2400 AliESDtrack *nTrackXi = lESDevent->GetTrack( lIdxNegXi );
2401 AliESDtrack *bachTrackXi = lESDevent->GetTrack( lBachIdx );
2403 if (!pTrackXi || !nTrackXi || !bachTrackXi ) {
2404 AliWarning("ERROR: Could not retrieve one of the 3 ESD daughter tracks of the cascade ...");
2408 fTreeCascVarPosEta = pTrackXi->Eta();
2409 fTreeCascVarNegEta = nTrackXi->Eta();
2410 fTreeCascVarBachEta = bachTrackXi->Eta();
2412 Double_t lBMom[3], lNMom[3], lPMom[3];
2413 xi->GetBPxPyPz( lBMom[0], lBMom[1], lBMom[2] );
2414 xi->GetPPxPyPz( lPMom[0], lPMom[1], lPMom[2] );
2415 xi->GetNPxPyPz( lNMom[0], lNMom[1], lNMom[2] );
2417 fTreeCascVarBachTransMom = TMath::Sqrt( lBMom[0]*lBMom[0] + lBMom[1]*lBMom[1] );
2418 fTreeCascVarPosTransMom = TMath::Sqrt( lPMom[0]*lPMom[0] + lPMom[1]*lPMom[1] );
2419 fTreeCascVarNegTransMom = TMath::Sqrt( lNMom[0]*lNMom[0] + lNMom[1]*lNMom[1] );
2421 //------------------------------------------------
2422 // TPC dEdx information
2423 //------------------------------------------------
2424 fTreeCascVarNegNSigmaPion = fPIDResponse->NumberOfSigmasTPC( nTrackXi, AliPID::kPion );
2425 fTreeCascVarNegNSigmaProton = fPIDResponse->NumberOfSigmasTPC( nTrackXi, AliPID::kProton );
2426 fTreeCascVarPosNSigmaPion = fPIDResponse->NumberOfSigmasTPC( pTrackXi, AliPID::kPion );
2427 fTreeCascVarPosNSigmaProton = fPIDResponse->NumberOfSigmasTPC( pTrackXi, AliPID::kProton );
2428 fTreeCascVarBachNSigmaPion = fPIDResponse->NumberOfSigmasTPC( bachTrackXi, AliPID::kPion );
2429 fTreeCascVarBachNSigmaKaon = fPIDResponse->NumberOfSigmasTPC( bachTrackXi, AliPID::kKaon );
2431 //------------------------------------------------
2432 // TPC Number of clusters info
2433 // --- modified to save the smallest number
2434 // --- of TPC clusters for the 3 tracks
2435 //------------------------------------------------
2437 lPosTPCClusters = pTrackXi->GetTPCNcls();
2438 lNegTPCClusters = nTrackXi->GetTPCNcls();
2439 lBachTPCClusters = bachTrackXi->GetTPCNcls();
2441 fTreeCascVarkITSRefitBachelor = kTRUE;
2442 fTreeCascVarkITSRefitNegative = kTRUE;
2443 fTreeCascVarkITSRefitPositive = kTRUE;
2445 // 1 - Poor quality related to TPCrefit
2446 ULong_t pStatus = pTrackXi->GetStatus();
2447 ULong_t nStatus = nTrackXi->GetStatus();
2448 ULong_t bachStatus = bachTrackXi->GetStatus();
2449 if ((pStatus&AliESDtrack::kTPCrefit) == 0) { AliWarning("Pb / V0 Pos. track has no TPCrefit ... continue!"); continue; }
2450 if ((nStatus&AliESDtrack::kTPCrefit) == 0) { AliWarning("Pb / V0 Neg. track has no TPCrefit ... continue!"); continue; }
2451 if ((bachStatus&AliESDtrack::kTPCrefit) == 0) { AliWarning("Pb / Bach. track has no TPCrefit ... continue!"); continue; }
2453 //Extra Debug Information: booleans for ITS refit
2454 if ((pStatus&AliESDtrack::kITSrefit) == 0) { fTreeCascVarkITSRefitPositive = kFALSE; }
2455 if ((nStatus&AliESDtrack::kITSrefit) == 0) { fTreeCascVarkITSRefitNegative = kFALSE; }
2456 if ((bachStatus&AliESDtrack::kITSrefit) == 0) { fTreeCascVarkITSRefitBachelor = kFALSE; }
2458 // 2 - Poor quality related to TPC clusters: lowest cut of 70 clusters
2459 if(lPosTPCClusters < 70) { AliWarning("Pb / V0 Pos. track has less than 70 TPC clusters ... continue!"); continue; }
2460 if(lNegTPCClusters < 70) { AliWarning("Pb / V0 Neg. track has less than 70 TPC clusters ... continue!"); continue; }
2461 if(lBachTPCClusters < 70) { AliWarning("Pb / Bach. track has less than 70 TPC clusters ... continue!"); continue; }
2462 Int_t leastnumberofclusters = 1000;
2463 if( lPosTPCClusters < leastnumberofclusters ) leastnumberofclusters = lPosTPCClusters;
2464 if( lNegTPCClusters < leastnumberofclusters ) leastnumberofclusters = lNegTPCClusters;
2465 if( lBachTPCClusters < leastnumberofclusters ) leastnumberofclusters = lBachTPCClusters;
2467 lInvMassLambdaAsCascDghter = xi->GetEffMass();
2468 // This value shouldn't change, whatever the working hyp. is : Xi-, Xi+, Omega-, Omega+
2469 lDcaV0DaughtersXi = xi->GetDcaV0Daughters();
2470 //lV0Chi2Xi = xi->GetChi2V0();
2472 lV0CosineOfPointingAngleXi = xi->GetV0CosineOfPointingAngle( lBestPrimaryVtxPos[0],
2473 lBestPrimaryVtxPos[1],
2474 lBestPrimaryVtxPos[2] );
2475 //Modification to check cosPA of v0 wrt to cascade vertex
2476 lV0CosineOfPointingAngleXiSpecial = xi->GetV0CosineOfPointingAngle( lPosXi[0],
2480 lDcaV0ToPrimVertexXi = xi->GetD( lBestPrimaryVtxPos[0],
2481 lBestPrimaryVtxPos[1],
2482 lBestPrimaryVtxPos[2] );
2484 lDcaBachToPrimVertexXi = TMath::Abs( bachTrackXi->GetD( lBestPrimaryVtxPos[0],
2485 lBestPrimaryVtxPos[1],
2487 // Note : AliExternalTrackParam::GetD returns an algebraic value ...
2489 xi->GetXYZ( lPosV0Xi[0], lPosV0Xi[1], lPosV0Xi[2] );
2490 lV0RadiusXi = TMath::Sqrt( lPosV0Xi[0]*lPosV0Xi[0] + lPosV0Xi[1]*lPosV0Xi[1] );
2492 lDcaPosToPrimVertexXi = TMath::Abs( pTrackXi ->GetD( lBestPrimaryVtxPos[0],
2493 lBestPrimaryVtxPos[1],
2496 lDcaNegToPrimVertexXi = TMath::Abs( nTrackXi ->GetD( lBestPrimaryVtxPos[0],
2497 lBestPrimaryVtxPos[1],
2500 // - II.Step 4 : around effective masses (ESD)
2501 // ~ change mass hypotheses to cover all the possibilities : Xi-/+, Omega -/+
2503 if( bachTrackXi->Charge() < 0 ) {
2505 xi->ChangeMassHypothesis(lV0quality , 3312);
2506 // Calculate the effective mass of the Xi- candidate.
2507 // pdg code 3312 = Xi-
2508 lInvMassXiMinus = xi->GetEffMassXi();
2511 xi->ChangeMassHypothesis(lV0quality , 3334);
2512 // Calculate the effective mass of the Xi- candidate.
2513 // pdg code 3334 = Omega-
2514 lInvMassOmegaMinus = xi->GetEffMassXi();
2517 xi->ChangeMassHypothesis(lV0quality , 3312); // Back to default hyp.
2518 }// end if negative bachelor
2521 if( bachTrackXi->Charge() > 0 ){
2523 xi->ChangeMassHypothesis(lV0quality , -3312);
2524 // Calculate the effective mass of the Xi+ candidate.
2525 // pdg code -3312 = Xi+
2526 lInvMassXiPlus = xi->GetEffMassXi();
2529 xi->ChangeMassHypothesis(lV0quality , -3334);
2530 // Calculate the effective mass of the Xi+ candidate.
2531 // pdg code -3334 = Omega+
2532 lInvMassOmegaPlus = xi->GetEffMassXi();
2535 xi->ChangeMassHypothesis(lV0quality , -3312); // Back to "default" hyp.
2536 }// end if positive bachelor
2537 // - II.Step 6 : extra info for QA (ESD)
2538 // miscellaneous pieces of info that may help regarding data quality assessment.
2541 xi->GetPxPyPz( lXiMomX, lXiMomY, lXiMomZ );
2542 lXiTransvMom = TMath::Sqrt( lXiMomX*lXiMomX + lXiMomY*lXiMomY );
2543 lXiTotMom = TMath::Sqrt( lXiMomX*lXiMomX + lXiMomY*lXiMomY + lXiMomZ*lXiMomZ );
2545 xi->GetBPxPyPz( lBachMomX, lBachMomY, lBachMomZ );
2546 //lBachTransvMom = TMath::Sqrt( lBachMomX*lBachMomX + lBachMomY*lBachMomY );
2547 //lBachTotMom = TMath::Sqrt( lBachMomX*lBachMomX + lBachMomY*lBachMomY + lBachMomZ*lBachMomZ );
2549 lChargeXi = xi->Charge();
2551 //lV0toXiCosineOfPointingAngle = xi->GetV0CosineOfPointingAngle( lPosXi[0], lPosXi[1], lPosXi[2] );
2553 lRapXi = xi->RapXi();
2554 lRapOmega = xi->RapOmega();
2556 //lTheta = xi->Theta() *180.0/TMath::Pi();
2557 //lPhi = xi->Phi() *180.0/TMath::Pi();
2558 //lAlphaXi = xi->AlphaXi();
2559 //lPtArmXi = xi->PtArmXi();
2561 //------------------------------------------------
2562 // Associate Cascade Candidates to Monte Carlo!
2563 //------------------------------------------------
2565 //Warning: Not using Continues... Need to fill tree later!
2567 Int_t lPDGCodeCascade = 0;
2569 Int_t lPID_BachMother = 0;
2570 Int_t lPID_NegMother = 0;
2571 Int_t lPID_PosMother = 0;
2572 fTreeCascVarIsPhysicalPrimary = 0; // 0: not defined, any candidate may have this
2574 fTreeCascVarPIDPositive = 0;
2575 fTreeCascVarPIDNegative = 0;
2576 fTreeCascVarPIDBachelor = 0;
2580 cout << "MC EventNumber : " << lMCevent->Header()->GetEvent()
2581 << " / MC event Number in Run : " << lMCevent->Header()->GetEventNrInRun() << endl;
2583 // - Step 4.1 : level of the V0 daughters
2585 //----------------------------------------
2586 // Regular MC ASSOCIATION STARTS HERE
2587 //----------------------------------------
2589 Int_t lblPosV0Dghter = (Int_t) TMath::Abs( pTrackXi->GetLabel() );
2590 // Abs value = needed ! question of quality track association ...
2591 Int_t lblNegV0Dghter = (Int_t) TMath::Abs( nTrackXi->GetLabel() );
2592 Int_t lblBach = (Int_t) TMath::Abs( bachTrackXi->GetLabel() );
2594 TParticle* mcPosV0Dghter = lMCstack->Particle( lblPosV0Dghter );
2595 TParticle* mcNegV0Dghter = lMCstack->Particle( lblNegV0Dghter );
2596 TParticle* mcBach = lMCstack->Particle( lblBach );
2598 fTreeCascVarPosTransMomMC = mcPosV0Dghter->Pt();
2599 fTreeCascVarNegTransMomMC = mcNegV0Dghter->Pt();
2601 fTreeCascVarPIDPositive = mcPosV0Dghter -> GetPdgCode();
2602 fTreeCascVarPIDNegative = mcNegV0Dghter -> GetPdgCode();
2603 fTreeCascVarPIDBachelor = mcBach->GetPdgCode();
2605 // - Step 4.2 : level of the Xi daughters
2607 Int_t lblMotherPosV0Dghter = mcPosV0Dghter->GetFirstMother() ;
2608 Int_t lblMotherNegV0Dghter = mcNegV0Dghter->GetFirstMother();
2610 //Rather uncivilized: Open brackets for each 'continue'
2611 if(! (lblMotherPosV0Dghter != lblMotherNegV0Dghter) ) { // same mother
2612 if(! (lblMotherPosV0Dghter < 0) ) { // mother != primary (!= -1)
2613 if(! (lblMotherNegV0Dghter < 0) ) {
2615 // mothers = Lambda candidate ... a priori
2617 TParticle* mcMotherPosV0Dghter = lMCstack->Particle( lblMotherPosV0Dghter );
2618 TParticle* mcMotherNegV0Dghter = lMCstack->Particle( lblMotherNegV0Dghter );
2620 // - Step 4.3 : level of Xi candidate
2622 Int_t lblGdMotherPosV0Dghter = mcMotherPosV0Dghter->GetFirstMother() ;
2623 Int_t lblGdMotherNegV0Dghter = mcMotherNegV0Dghter->GetFirstMother() ;
2625 if(! (lblGdMotherPosV0Dghter != lblGdMotherNegV0Dghter) ) {
2626 if(! (lblGdMotherPosV0Dghter < 0) ) { // primary lambda ...
2627 if(! (lblGdMotherNegV0Dghter < 0) ) { // primary lambda ...
2629 // Gd mothers = Xi candidate ... a priori
2631 TParticle* mcGdMotherPosV0Dghter = lMCstack->Particle( lblGdMotherPosV0Dghter );
2632 TParticle* mcGdMotherNegV0Dghter = lMCstack->Particle( lblGdMotherNegV0Dghter );
2634 Int_t lblMotherBach = (Int_t) TMath::Abs( mcBach->GetFirstMother() );
2636 // if( lblMotherBach != lblGdMotherPosV0Dghter ) continue; //same mother for bach and V0 daughters
2637 if(!(lblMotherBach != lblGdMotherPosV0Dghter)) { //same mother for bach and V0 daughters
2639 TParticle* mcMotherBach = lMCstack->Particle( lblMotherBach );
2641 lPID_BachMother = mcMotherBach->GetPdgCode();
2642 lPID_NegMother = mcGdMotherPosV0Dghter->GetPdgCode();
2643 lPID_PosMother = mcGdMotherNegV0Dghter->GetPdgCode();
2645 if(lPID_BachMother==lPID_NegMother && lPID_BachMother==lPID_PosMother){
2646 lPDGCodeCascade = lPID_BachMother;
2647 lXiTransvMomMC = mcMotherBach->Pt();
2648 if( lMCstack->IsPhysicalPrimary (lblMotherBach) ) fTreeCascVarIsPhysicalPrimary = 1; //Is Primary!
2649 if( lMCstack->IsSecondaryFromWeakDecay(lblMotherBach) ) fTreeCascVarIsPhysicalPrimary = 2; //Weak Decay!
2650 if( lMCstack->IsSecondaryFromMaterial (lblMotherBach) ) fTreeCascVarIsPhysicalPrimary = 3; //From Material!
2651 if ( (mcMotherBach->Energy() + mcMotherBach->Pz()) / (mcMotherBach->Energy() - mcMotherBach->Pz() +1.e-13) !=0 ){
2652 lRapMC = 0.5*TMath::Log( (mcMotherBach->Energy() + mcMotherBach->Pz()) / (mcMotherBach->Energy() - mcMotherBach->Pz() +1.e-13) );
2656 }}}}}}} //Ends all conditionals above...
2658 //----------------------------------------
2659 // Regular MC ASSOCIATION ENDS HERE
2660 //----------------------------------------
2662 //----------------------------------------
2663 // Swapped MC Association Starts Here
2664 //----------------------------------------
2666 fTreeCascVarPIDSwapped = 0; //Nothing
2667 if ( fkCheckSwapping ) { //on/off switch if not needed or otherwise broken
2669 Int_t lPID_BachMotherSwapped = 0;
2670 Int_t lPID_NegMotherSwapped = 0;
2671 Int_t lPID_PosMotherSwapped = 0;
2673 Int_t lblPosV0DghterSwapped = (Int_t) TMath::Abs( pTrackXi->GetLabel() );
2674 // Abs value = needed ! question of quality track association ...
2675 Int_t lblNegV0DghterSwapped = (Int_t) TMath::Abs( nTrackXi->GetLabel() );
2676 Int_t lblBachSwapped = (Int_t) TMath::Abs( bachTrackXi->GetLabel() );
2678 //This is SWAPPED association: swap like-sign particles
2679 TParticle* mcPosV0DghterSwapped = 0x0;
2680 TParticle* mcNegV0DghterSwapped = 0x0;
2681 TParticle* mcBachSwapped = 0x0;
2683 //Swapping Case 1: XiMinus/OmegaMinus swapped: exchange negative V0 daughter with bachelor
2684 if( lChargeXi == -1 ){
2685 mcPosV0DghterSwapped = lMCstack->Particle( lblPosV0DghterSwapped );
2686 mcNegV0DghterSwapped = lMCstack->Particle( lblBachSwapped );
2687 mcBachSwapped = lMCstack->Particle( lblNegV0DghterSwapped );
2689 //Swapping Case 2: XiPlus/OmegaPlus swapped: exchange positive V0 daughter with bachelor
2690 if( lChargeXi == 1 ){
2691 mcPosV0DghterSwapped = lMCstack->Particle( lblBachSwapped );
2692 mcNegV0DghterSwapped = lMCstack->Particle( lblNegV0DghterSwapped );
2693 mcBachSwapped = lMCstack->Particle( lblPosV0DghterSwapped );
2696 //fTreeCascVarPosTransMomMC = mcPosV0Dghter->Pt();
2697 //fTreeCascVarNegTransMomMC = mcNegV0Dghter->Pt();
2699 //fTreeCascVarPIDPositive = mcPosV0Dghter -> GetPdgCode();
2700 //fTreeCascVarPIDNegative = mcNegV0Dghter -> GetPdgCode();
2701 //fTreeCascVarPIDBachelor = mcBach->GetPdgCode();
2703 // - Step 4.2 : level of the Xi daughters
2705 Int_t lblMotherPosV0DghterSwapped = mcPosV0DghterSwapped->GetFirstMother() ;
2706 Int_t lblMotherNegV0DghterSwapped = mcNegV0DghterSwapped->GetFirstMother();
2708 //Rather uncivilized: Open brackets for each 'continue'
2709 if(! (lblMotherPosV0DghterSwapped != lblMotherNegV0DghterSwapped) ) { // same mother
2710 if(! (lblMotherPosV0DghterSwapped < 0) ) { // mother != primary (!= -1)
2711 if(! (lblMotherNegV0DghterSwapped < 0) ) {
2713 // mothers = Lambda candidate ... a priori
2715 TParticle* mcMotherPosV0DghterSwapped = lMCstack->Particle( lblMotherPosV0DghterSwapped );
2716 TParticle* mcMotherNegV0DghterSwapped = lMCstack->Particle( lblMotherNegV0DghterSwapped );
2718 // - Step 4.3 : level of Xi candidate
2720 Int_t lblGdMotherPosV0DghterSwapped = mcMotherPosV0DghterSwapped->GetFirstMother() ;
2721 Int_t lblGdMotherNegV0DghterSwapped = mcMotherNegV0DghterSwapped->GetFirstMother() ;
2723 if(! (lblGdMotherPosV0DghterSwapped != lblGdMotherNegV0DghterSwapped) ) {
2724 if(! (lblGdMotherPosV0DghterSwapped < 0) ) { // primary lambda ...
2725 if(! (lblGdMotherNegV0DghterSwapped < 0) ) { // primary lambda ...
2727 // Gd mothers = Xi candidate ... a priori
2729 TParticle* mcGdMotherPosV0DghterSwapped = lMCstack->Particle( lblGdMotherPosV0DghterSwapped );
2730 TParticle* mcGdMotherNegV0DghterSwapped = lMCstack->Particle( lblGdMotherNegV0DghterSwapped );
2732 Int_t lblMotherBachSwapped = (Int_t) TMath::Abs( mcBachSwapped->GetFirstMother() );
2734 // if( lblMotherBach != lblGdMotherPosV0Dghter ) continue; //same mother for bach and V0 daughters
2735 if(!(lblMotherBachSwapped != lblGdMotherPosV0DghterSwapped)) { //same mother for bach and V0 daughters
2737 TParticle* mcMotherBachSwapped = lMCstack->Particle( lblMotherBachSwapped );
2739 lPID_BachMotherSwapped = mcMotherBachSwapped->GetPdgCode();
2740 lPID_NegMotherSwapped = mcGdMotherPosV0DghterSwapped->GetPdgCode();
2741 lPID_PosMotherSwapped = mcGdMotherNegV0DghterSwapped->GetPdgCode();
2743 if(lPID_BachMotherSwapped==lPID_NegMotherSwapped && lPID_BachMotherSwapped==lPID_PosMotherSwapped){
2744 fTreeCascVarPIDSwapped = lPID_BachMotherSwapped; //there!
2747 }}}}}}} //Ends all conditionals above...
2750 //----------------------------------------
2751 // Swapped MC ASSOCIATION ENDS HERE
2752 //----------------------------------------
2755 //------------------------------------------------
2756 // Set Variables for adding to tree
2757 //------------------------------------------------
2759 /* 1*/ fTreeCascVarCharge = lChargeXi;
2760 /* 2*/ if(lInvMassXiMinus!=0) fTreeCascVarMassAsXi = lInvMassXiMinus;
2761 /* 2*/ if(lInvMassXiPlus!=0) fTreeCascVarMassAsXi = lInvMassXiPlus;
2762 /* 3*/ if(lInvMassOmegaMinus!=0) fTreeCascVarMassAsOmega = lInvMassOmegaMinus;
2763 /* 3*/ if(lInvMassOmegaPlus!=0) fTreeCascVarMassAsOmega = lInvMassOmegaPlus;
2764 /* 4*/ fTreeCascVarPt = lXiTransvMom;
2765 /* 4*/ fTreeCascVarPtMC = lXiTransvMomMC;
2766 /* 5*/ fTreeCascVarRapXi = lRapXi ;
2767 /* 5*/ fTreeCascVarRapMC = lRapMC ;
2768 /* 6*/ fTreeCascVarRapOmega = lRapOmega ;
2769 /* 7*/ fTreeCascVarDCACascDaughters = lDcaXiDaughters;
2770 /* 8*/ fTreeCascVarDCABachToPrimVtx = lDcaBachToPrimVertexXi;
2771 /* 9*/ fTreeCascVarDCAV0Daughters = lDcaV0DaughtersXi;
2772 /*10*/ fTreeCascVarDCAV0ToPrimVtx = lDcaV0ToPrimVertexXi;
2773 /*11*/ fTreeCascVarDCAPosToPrimVtx = lDcaPosToPrimVertexXi;
2774 /*12*/ fTreeCascVarDCANegToPrimVtx = lDcaNegToPrimVertexXi;
2775 /*13*/ fTreeCascVarCascCosPointingAngle = lXiCosineOfPointingAngle;
2776 /*14*/ fTreeCascVarCascRadius = lXiRadius;
2777 /*15*/ fTreeCascVarV0Mass = lInvMassLambdaAsCascDghter;
2778 /*16*/ fTreeCascVarV0CosPointingAngle = lV0CosineOfPointingAngleXi;
2779 /*16*/ fTreeCascVarV0CosPointingAngleSpecial = lV0CosineOfPointingAngleXiSpecial;
2780 /*17*/ fTreeCascVarV0Radius = lV0RadiusXi;
2781 /*20*/ fTreeCascVarLeastNbrClusters = leastnumberofclusters;
2782 /*21*/ fTreeCascVarMultiplicity = lMultiplicity; //multiplicity, whatever that may be
2784 /*23*/ fTreeCascVarDistOverTotMom = TMath::Sqrt(
2785 TMath::Power( lPosXi[0] - lBestPrimaryVtxPos[0] , 2) +
2786 TMath::Power( lPosXi[1] - lBestPrimaryVtxPos[1] , 2) +
2787 TMath::Power( lPosXi[2] - lBestPrimaryVtxPos[2] , 2)
2789 /*23*/ fTreeCascVarDistOverTotMom /= (lXiTotMom+1e-13);
2790 /*24*/ //Not specified here, it has been set already (TRunNumber)
2791 /*25*/ fTreeCascVarPID = lPDGCodeCascade;
2793 //------------------------------------------------
2795 //------------------------------------------------
2797 // The conditional is meant to decrease excessive
2798 // memory usage! Be careful when loosening the
2801 //Xi Mass window: 150MeV wide
2802 //Omega mass window: 150MeV wide
2804 if( (fTreeCascVarMassAsXi<1.32+0.075&&fTreeCascVarMassAsXi>1.32-0.075) ||
2805 (fTreeCascVarMassAsOmega<1.68+0.075&&fTreeCascVarMassAsOmega>1.68-0.075) ){
2806 fTreeCascade->Fill();
2809 //------------------------------------------------
2811 //------------------------------------------------
2813 }// end of the Cascade loop (ESD or AOD)
2815 // Post output data.
2816 PostData(1, fListHist);
2817 PostData(2, fTreeCascade);
2820 //________________________________________________________________________
2821 void AliAnalysisTaskExtractPerformanceCascade::Terminate(Option_t *)
2823 // Draw result to the screen
2824 // Called once at the end of the query
2826 TList *cRetrievedList = 0x0;
2827 cRetrievedList = (TList*)GetOutputData(1);
2828 if(!cRetrievedList){
2829 Printf("ERROR - AliAnalysisTaskExtractCascade : ouput data container list not available\n");
2833 fHistV0MultiplicityForTrigEvt = dynamic_cast<TH1F*> ( cRetrievedList->FindObject("fHistV0MultiplicityForTrigEvt") );
2834 if (!fHistV0MultiplicityForTrigEvt) {
2835 Printf("ERROR - AliAnalysisTaskExtractCascade : fHistV0MultiplicityForTrigEvt not available");
2839 TCanvas *canCheck = new TCanvas("AliAnalysisTaskExtractCascade","V0 Multiplicity",10,10,510,510);
2840 canCheck->cd(1)->SetLogy();
2842 fHistV0MultiplicityForTrigEvt->SetMarkerStyle(22);
2843 fHistV0MultiplicityForTrigEvt->DrawCopy("E");
2846 //----------------------------------------------------------------------------
2848 Double_t AliAnalysisTaskExtractPerformanceCascade::MyRapidity(Double_t rE, Double_t rPz) const
2850 // Local calculation for rapidity
2851 Double_t ReturnValue = -100;
2852 if( (rE-rPz+1.e-13) != 0 && (rE+rPz) != 0 ){
2853 ReturnValue = 0.5*TMath::Log((rE+rPz)/(rE-rPz+1.e-13));