]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/STRANGENESS/Cascades/AliAnalysisTaskExtractPerformanceCascade.cxx
Cascade task: flexibility of eta selection in the reference multiplicity estimator.
[u/mrichter/AliRoot.git] / PWGLF / STRANGENESS / Cascades / AliAnalysisTaskExtractPerformanceCascade.cxx
CommitLineData
76029adc 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
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 **************************************************************************/
15
16// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
17//
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.
22//
23// --- Adapted to look for lambdas as well, using code from
24// AliAnalysisTaskCheckPerformanceStrange.cxx
25//
26// --- Algorithm Description
27// 1. Loop over primaries in stack to acquire generated charged Xi
9a8f3aee 28// 2. Loop over stack to find Cascades, fill TH3Fs "PrimRawPt"s for Efficiency
76029adc 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
33// 7. Analysis Loops:
34// 7a. Fill TH3Fs "PrimAnalysisPt" for control purposes only
76029adc 35//
36// Please Report Any Bugs!
37//
38// --- David Dobrigkeit Chinellato
39// (david.chinellato@gmail.com)
40//
41// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
42
43class TTree;
44class TParticle;
45class TVector3;
46
47//class AliMCEventHandler;
48//class AliMCEvent;
49//class AliStack;
50
51class AliESDVertex;
52class AliAODVertex;
53class AliESDv0;
54class AliAODv0;
55
56#include <Riostream.h>
57#include "TList.h"
58#include "TH1.h"
59#include "TH2.h"
60#include "TH3.h"
61#include "TFile.h"
62#include "THnSparse.h"
63#include "TVector3.h"
64#include "TCanvas.h"
65#include "TMath.h"
66#include "TLegend.h"
67#include "AliLog.h"
68
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"
80#include "AliStack.h"
81
82#include "AliCFContainer.h"
83#include "AliMultiplicity.h"
84#include "AliAODMCParticle.h"
85#include "AliESDcascade.h"
86#include "AliAODcascade.h"
87#include "AliESDUtils.h"
2add50c1 88#include "AliAnalysisUtils.h"
76029adc 89#include "AliGenEventHeader.h"
90
91#include "AliAnalysisTaskExtractPerformanceCascade.h"
92
93using std::cout;
94using std::endl;
95
96ClassImp(AliAnalysisTaskExtractPerformanceCascade)
97
98AliAnalysisTaskExtractPerformanceCascade::AliAnalysisTaskExtractPerformanceCascade()
2add50c1 99 : AliAnalysisTaskSE(), fListHist(0), fTreeCascade(0), fPIDResponse(0), fESDtrackCuts(0), fUtils(0),
76029adc 100 fkIsNuclear ( kFALSE ),
2213f6fc 101 fkSwitchINT7 ( kFALSE ),
da3539d8 102 fpArapidityShift ( 0.465 ),
103 fCentralityEstimator("V0M"),
2add50c1 104 fkpAVertexSelection( kFALSE ),
cda235e2 105 fEtaRefMult ( 0.5 ),
2213f6fc 106//------------------------------------------------
107// Tree Variables
108//------------------------------------------------
109
110 fTreeCascVarCharge(0),
111 fTreeCascVarMassAsXi(0),
112 fTreeCascVarMassAsOmega(0),
113 fTreeCascVarPt(0),
114 fTreeCascVarPtMC(0),
115 fTreeCascVarRapMC(0),
116 fTreeCascVarRapXi(0),
117 fTreeCascVarRapOmega(0),
118 fTreeCascVarNegEta(0),
119 fTreeCascVarPosEta(0),
120 fTreeCascVarBachEta(0),
121 fTreeCascVarDCACascDaughters(0),
122 fTreeCascVarDCABachToPrimVtx(0),
123 fTreeCascVarDCAV0Daughters(0),
124 fTreeCascVarDCAV0ToPrimVtx(0),
125 fTreeCascVarDCAPosToPrimVtx(0),
126 fTreeCascVarDCANegToPrimVtx(0),
127 fTreeCascVarCascCosPointingAngle(0),
128 fTreeCascVarCascRadius(0),
129 fTreeCascVarV0Mass(0),
130 fTreeCascVarV0CosPointingAngle(0),
131 fTreeCascVarV0Radius(0),
132 fTreeCascVarLeastNbrClusters(0),
133 fTreeCascVarMultiplicity(0),
aa06bcc8 134 fTreeCascVarMultiplicityV0A(0),
135 fTreeCascVarMultiplicityZNA(0),
136 fTreeCascVarMultiplicityTRK(0),
137 fTreeCascVarMultiplicitySPD(0),
9aefe7ef 138 fTreeCascVarMultiplicityMC(0),
2213f6fc 139 fTreeCascVarDistOverTotMom(0),
140 fTreeCascVarPID(0),
141 fTreeCascVarPIDBachelor(0),
142 fTreeCascVarPIDNegative(0),
143 fTreeCascVarPIDPositive(0),
144 fTreeCascVarPosTransMom(0),
145 fTreeCascVarNegTransMom(0),
146 fTreeCascVarPosTransMomMC(0),
147 fTreeCascVarNegTransMomMC(0),
148 fTreeCascVarNegNSigmaPion(0),
149 fTreeCascVarNegNSigmaProton(0),
150 fTreeCascVarPosNSigmaPion(0),
151 fTreeCascVarPosNSigmaProton(0),
152 fTreeCascVarBachNSigmaPion(0),
153 fTreeCascVarBachNSigmaKaon(0),
76029adc 154
155//------------------------------------------------
156// HISTOGRAMS
157// --- Filled on an Event-by-event basis
158//------------------------------------------------
159 fHistV0MultiplicityBeforeTrigSel(0),
160 fHistV0MultiplicityForTrigEvt(0),
161 fHistV0MultiplicityForSelEvt(0),
162 fHistV0MultiplicityForSelEvtNoTPCOnly(0),
163 fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup(0),
164 fHistMultiplicityBeforeTrigSel(0),
165 fHistMultiplicityForTrigEvt(0),
166 fHistMultiplicity(0),
167 fHistMultiplicityNoTPCOnly(0),
168 fHistMultiplicityNoTPCOnlyNoPileup(0),
169
aa06bcc8 170//V0A Centrality
171fHistMultiplicityV0ABeforeTrigSel(0),
172fHistMultiplicityV0AForTrigEvt(0),
173fHistMultiplicityV0A(0),
174fHistMultiplicityV0ANoTPCOnly(0),
175fHistMultiplicityV0ANoTPCOnlyNoPileup(0),
176
177//ZNA Centrality
178fHistMultiplicityZNABeforeTrigSel(0),
179fHistMultiplicityZNAForTrigEvt(0),
180fHistMultiplicityZNA(0),
181fHistMultiplicityZNANoTPCOnly(0),
182fHistMultiplicityZNANoTPCOnlyNoPileup(0),
183
184//TRK Centrality
185fHistMultiplicityTRKBeforeTrigSel(0),
186fHistMultiplicityTRKForTrigEvt(0),
187fHistMultiplicityTRK(0),
188fHistMultiplicityTRKNoTPCOnly(0),
189fHistMultiplicityTRKNoTPCOnlyNoPileup(0),
190
191//SPD Centrality
192fHistMultiplicitySPDBeforeTrigSel(0),
193fHistMultiplicitySPDForTrigEvt(0),
194fHistMultiplicitySPD(0),
195fHistMultiplicitySPDNoTPCOnly(0),
196fHistMultiplicitySPDNoTPCOnlyNoPileup(0),
197
198
76029adc 199//------------------------------------------------
200// PARTICLE HISTOGRAMS
201// --- Filled on a Particle-by-Particle basis
202//------------------------------------------------
203 f3dHistGenPtVsYVsMultXiMinus(0),
204 f3dHistGenPtVsYVsMultXiPlus(0),
205 f3dHistGenPtVsYVsMultOmegaMinus(0),
206 f3dHistGenPtVsYVsMultOmegaPlus(0),
207 f3dHistGenSelectedPtVsYVsMultXiMinus(0),
208 f3dHistGenSelectedPtVsYVsMultXiPlus(0),
209 f3dHistGenSelectedPtVsYVsMultOmegaMinus(0),
210 f3dHistGenSelectedPtVsYVsMultOmegaPlus(0),
da3539d8 211 f3dHistGenPtVsYCMSVsMultXiMinus(0),
212 f3dHistGenPtVsYCMSVsMultXiPlus(0),
213 f3dHistGenPtVsYCMSVsMultOmegaMinus(0),
214 f3dHistGenPtVsYCMSVsMultOmegaPlus(0),
215 f3dHistGenSelectedPtVsYCMSVsMultXiMinus(0),
216 f3dHistGenSelectedPtVsYCMSVsMultXiPlus(0),
217 f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus(0),
218 f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus(0),
ea8c8e56 219
220//MC Mult
221
222f3dHistGenPtVsYVsMultMCXiMinus(0),
223f3dHistGenPtVsYVsMultMCXiPlus(0),
224f3dHistGenPtVsYVsMultMCOmegaMinus(0),
225f3dHistGenPtVsYVsMultMCOmegaPlus(0),
226f3dHistGenSelectedPtVsYVsMultMCXiMinus(0),
227f3dHistGenSelectedPtVsYVsMultMCXiPlus(0),
228f3dHistGenSelectedPtVsYVsMultMCOmegaMinus(0),
229f3dHistGenSelectedPtVsYVsMultMCOmegaPlus(0),
230f3dHistGenPtVsYCMSVsMultMCXiMinus(0),
231f3dHistGenPtVsYCMSVsMultMCXiPlus(0),
232f3dHistGenPtVsYCMSVsMultMCOmegaMinus(0),
233f3dHistGenPtVsYCMSVsMultMCOmegaPlus(0),
234f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus(0),
235f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus(0),
236f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus(0),
237f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus(0),
238
239//V0A
240
241f3dHistGenPtVsYVsMultV0AXiMinus(0),
242f3dHistGenPtVsYVsMultV0AXiPlus(0),
243f3dHistGenPtVsYVsMultV0AOmegaMinus(0),
244f3dHistGenPtVsYVsMultV0AOmegaPlus(0),
245f3dHistGenSelectedPtVsYVsMultV0AXiMinus(0),
246f3dHistGenSelectedPtVsYVsMultV0AXiPlus(0),
247f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus(0),
248f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus(0),
249f3dHistGenPtVsYCMSVsMultV0AXiMinus(0),
250f3dHistGenPtVsYCMSVsMultV0AXiPlus(0),
251f3dHistGenPtVsYCMSVsMultV0AOmegaMinus(0),
252f3dHistGenPtVsYCMSVsMultV0AOmegaPlus(0),
253f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus(0),
254f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus(0),
255f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus(0),
256f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus(0),
257
258//ZNA
259
260f3dHistGenPtVsYVsMultZNAXiMinus(0),
261f3dHistGenPtVsYVsMultZNAXiPlus(0),
262f3dHistGenPtVsYVsMultZNAOmegaMinus(0),
263f3dHistGenPtVsYVsMultZNAOmegaPlus(0),
264f3dHistGenSelectedPtVsYVsMultZNAXiMinus(0),
265f3dHistGenSelectedPtVsYVsMultZNAXiPlus(0),
266f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus(0),
267f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus(0),
268f3dHistGenPtVsYCMSVsMultZNAXiMinus(0),
269f3dHistGenPtVsYCMSVsMultZNAXiPlus(0),
270f3dHistGenPtVsYCMSVsMultZNAOmegaMinus(0),
271f3dHistGenPtVsYCMSVsMultZNAOmegaPlus(0),
272f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus(0),
273f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus(0),
274f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus(0),
275f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus(0),
276
277//TRK
278
279f3dHistGenPtVsYVsMultTRKXiMinus(0),
280f3dHistGenPtVsYVsMultTRKXiPlus(0),
281f3dHistGenPtVsYVsMultTRKOmegaMinus(0),
282f3dHistGenPtVsYVsMultTRKOmegaPlus(0),
283f3dHistGenSelectedPtVsYVsMultTRKXiMinus(0),
284f3dHistGenSelectedPtVsYVsMultTRKXiPlus(0),
285f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus(0),
286f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus(0),
287f3dHistGenPtVsYCMSVsMultTRKXiMinus(0),
288f3dHistGenPtVsYCMSVsMultTRKXiPlus(0),
289f3dHistGenPtVsYCMSVsMultTRKOmegaMinus(0),
290f3dHistGenPtVsYCMSVsMultTRKOmegaPlus(0),
291f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus(0),
292f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus(0),
293f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus(0),
294f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus(0),
295
296//SPD
297
298f3dHistGenPtVsYVsMultSPDXiMinus(0),
299f3dHistGenPtVsYVsMultSPDXiPlus(0),
300f3dHistGenPtVsYVsMultSPDOmegaMinus(0),
301f3dHistGenPtVsYVsMultSPDOmegaPlus(0),
302f3dHistGenSelectedPtVsYVsMultSPDXiMinus(0),
303f3dHistGenSelectedPtVsYVsMultSPDXiPlus(0),
304f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus(0),
305f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus(0),
306f3dHistGenPtVsYCMSVsMultSPDXiMinus(0),
307f3dHistGenPtVsYCMSVsMultSPDXiPlus(0),
308f3dHistGenPtVsYCMSVsMultSPDOmegaMinus(0),
309f3dHistGenPtVsYCMSVsMultSPDOmegaPlus(0),
310f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus(0),
311f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus(0),
312f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus(0),
313f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus(0),
314
315
76029adc 316 fHistPVx(0),
317 fHistPVy(0),
318 fHistPVz(0),
319 fHistPVxAnalysis(0),
320 fHistPVyAnalysis(0),
321 fHistPVzAnalysis(0)
322{
323 // Dummy Constructor
324}
325
326AliAnalysisTaskExtractPerformanceCascade::AliAnalysisTaskExtractPerformanceCascade(const char *name)
2add50c1 327 : AliAnalysisTaskSE(name), fListHist(0), fTreeCascade(0), fPIDResponse(0), fESDtrackCuts(0), fUtils(0),
76029adc 328 fkIsNuclear ( kFALSE ),
2213f6fc 329 fkSwitchINT7 ( kFALSE ),
da3539d8 330 fpArapidityShift ( 0.465 ),
331 fCentralityEstimator("V0M"),
2add50c1 332 fkpAVertexSelection( kFALSE ),
cda235e2 333 fEtaRefMult ( 0.5 ),
2213f6fc 334//------------------------------------------------
335// Tree Variables
336//------------------------------------------------
337
338 fTreeCascVarCharge(0),
339 fTreeCascVarMassAsXi(0),
340 fTreeCascVarMassAsOmega(0),
341 fTreeCascVarPt(0),
342 fTreeCascVarPtMC(0),
343 fTreeCascVarRapMC(0),
344 fTreeCascVarRapXi(0),
345 fTreeCascVarRapOmega(0),
346 fTreeCascVarNegEta(0),
347 fTreeCascVarPosEta(0),
348 fTreeCascVarBachEta(0),
349 fTreeCascVarDCACascDaughters(0),
350 fTreeCascVarDCABachToPrimVtx(0),
351 fTreeCascVarDCAV0Daughters(0),
352 fTreeCascVarDCAV0ToPrimVtx(0),
353 fTreeCascVarDCAPosToPrimVtx(0),
354 fTreeCascVarDCANegToPrimVtx(0),
355 fTreeCascVarCascCosPointingAngle(0),
356 fTreeCascVarCascRadius(0),
357 fTreeCascVarV0Mass(0),
358 fTreeCascVarV0CosPointingAngle(0),
359 fTreeCascVarV0Radius(0),
360 fTreeCascVarLeastNbrClusters(0),
361 fTreeCascVarMultiplicity(0),
aa06bcc8 362 fTreeCascVarMultiplicityV0A(0),
363 fTreeCascVarMultiplicityZNA(0),
364 fTreeCascVarMultiplicityTRK(0),
365 fTreeCascVarMultiplicitySPD(0),
9aefe7ef 366 fTreeCascVarMultiplicityMC(0),
2213f6fc 367 fTreeCascVarDistOverTotMom(0),
368 fTreeCascVarPID(0),
369 fTreeCascVarPIDBachelor(0),
370 fTreeCascVarPIDNegative(0),
371 fTreeCascVarPIDPositive(0),
372 fTreeCascVarPosTransMom(0),
373 fTreeCascVarNegTransMom(0),
374 fTreeCascVarPosTransMomMC(0),
375 fTreeCascVarNegTransMomMC(0),
376 fTreeCascVarNegNSigmaPion(0),
377 fTreeCascVarNegNSigmaProton(0),
378 fTreeCascVarPosNSigmaPion(0),
379 fTreeCascVarPosNSigmaProton(0),
380 fTreeCascVarBachNSigmaPion(0),
381 fTreeCascVarBachNSigmaKaon(0),
382
76029adc 383//------------------------------------------------
384// HISTOGRAMS
385// --- Filled on an Event-by-event basis
386//------------------------------------------------
387 fHistV0MultiplicityBeforeTrigSel(0),
388 fHistV0MultiplicityForTrigEvt(0),
389 fHistV0MultiplicityForSelEvt(0),
390 fHistV0MultiplicityForSelEvtNoTPCOnly(0),
391 fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup(0),
392 fHistMultiplicityBeforeTrigSel(0),
393 fHistMultiplicityForTrigEvt(0),
394 fHistMultiplicity(0),
395 fHistMultiplicityNoTPCOnly(0),
396 fHistMultiplicityNoTPCOnlyNoPileup(0),
397
aa06bcc8 398//V0A Centrality
399fHistMultiplicityV0ABeforeTrigSel(0),
400fHistMultiplicityV0AForTrigEvt(0),
401fHistMultiplicityV0A(0),
402fHistMultiplicityV0ANoTPCOnly(0),
403fHistMultiplicityV0ANoTPCOnlyNoPileup(0),
404
405//ZNA Centrality
406fHistMultiplicityZNABeforeTrigSel(0),
407fHistMultiplicityZNAForTrigEvt(0),
408fHistMultiplicityZNA(0),
409fHistMultiplicityZNANoTPCOnly(0),
410fHistMultiplicityZNANoTPCOnlyNoPileup(0),
411
412//TRK Centrality
413fHistMultiplicityTRKBeforeTrigSel(0),
414fHistMultiplicityTRKForTrigEvt(0),
415fHistMultiplicityTRK(0),
416fHistMultiplicityTRKNoTPCOnly(0),
417fHistMultiplicityTRKNoTPCOnlyNoPileup(0),
418
419//SPD Centrality
420fHistMultiplicitySPDBeforeTrigSel(0),
421fHistMultiplicitySPDForTrigEvt(0),
422fHistMultiplicitySPD(0),
423fHistMultiplicitySPDNoTPCOnly(0),
424fHistMultiplicitySPDNoTPCOnlyNoPileup(0),
76029adc 425
426//------------------------------------------------
427// PARTICLE HISTOGRAMS
428// --- Filled on a Particle-by-Particle basis
429//------------------------------------------------
430 f3dHistGenPtVsYVsMultXiMinus(0),
431 f3dHistGenPtVsYVsMultXiPlus(0),
432 f3dHistGenPtVsYVsMultOmegaMinus(0),
433 f3dHistGenPtVsYVsMultOmegaPlus(0),
434 f3dHistGenSelectedPtVsYVsMultXiMinus(0),
435 f3dHistGenSelectedPtVsYVsMultXiPlus(0),
436 f3dHistGenSelectedPtVsYVsMultOmegaMinus(0),
437 f3dHistGenSelectedPtVsYVsMultOmegaPlus(0),
da3539d8 438 f3dHistGenPtVsYCMSVsMultXiMinus(0),
439 f3dHistGenPtVsYCMSVsMultXiPlus(0),
440 f3dHistGenPtVsYCMSVsMultOmegaMinus(0),
441 f3dHistGenPtVsYCMSVsMultOmegaPlus(0),
442 f3dHistGenSelectedPtVsYCMSVsMultXiMinus(0),
443 f3dHistGenSelectedPtVsYCMSVsMultXiPlus(0),
444 f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus(0),
445 f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus(0),
ea8c8e56 446
447//MC Mult
448
449f3dHistGenPtVsYVsMultMCXiMinus(0),
450f3dHistGenPtVsYVsMultMCXiPlus(0),
451f3dHistGenPtVsYVsMultMCOmegaMinus(0),
452f3dHistGenPtVsYVsMultMCOmegaPlus(0),
453f3dHistGenSelectedPtVsYVsMultMCXiMinus(0),
454f3dHistGenSelectedPtVsYVsMultMCXiPlus(0),
455f3dHistGenSelectedPtVsYVsMultMCOmegaMinus(0),
456f3dHistGenSelectedPtVsYVsMultMCOmegaPlus(0),
457f3dHistGenPtVsYCMSVsMultMCXiMinus(0),
458f3dHistGenPtVsYCMSVsMultMCXiPlus(0),
459f3dHistGenPtVsYCMSVsMultMCOmegaMinus(0),
460f3dHistGenPtVsYCMSVsMultMCOmegaPlus(0),
461f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus(0),
462f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus(0),
463f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus(0),
464f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus(0),
465
466//V0A
467
468f3dHistGenPtVsYVsMultV0AXiMinus(0),
469f3dHistGenPtVsYVsMultV0AXiPlus(0),
470f3dHistGenPtVsYVsMultV0AOmegaMinus(0),
471f3dHistGenPtVsYVsMultV0AOmegaPlus(0),
472f3dHistGenSelectedPtVsYVsMultV0AXiMinus(0),
473f3dHistGenSelectedPtVsYVsMultV0AXiPlus(0),
474f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus(0),
475f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus(0),
476f3dHistGenPtVsYCMSVsMultV0AXiMinus(0),
477f3dHistGenPtVsYCMSVsMultV0AXiPlus(0),
478f3dHistGenPtVsYCMSVsMultV0AOmegaMinus(0),
479f3dHistGenPtVsYCMSVsMultV0AOmegaPlus(0),
480f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus(0),
481f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus(0),
482f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus(0),
483f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus(0),
484
485//ZNA
486
487f3dHistGenPtVsYVsMultZNAXiMinus(0),
488f3dHistGenPtVsYVsMultZNAXiPlus(0),
489f3dHistGenPtVsYVsMultZNAOmegaMinus(0),
490f3dHistGenPtVsYVsMultZNAOmegaPlus(0),
491f3dHistGenSelectedPtVsYVsMultZNAXiMinus(0),
492f3dHistGenSelectedPtVsYVsMultZNAXiPlus(0),
493f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus(0),
494f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus(0),
495f3dHistGenPtVsYCMSVsMultZNAXiMinus(0),
496f3dHistGenPtVsYCMSVsMultZNAXiPlus(0),
497f3dHistGenPtVsYCMSVsMultZNAOmegaMinus(0),
498f3dHistGenPtVsYCMSVsMultZNAOmegaPlus(0),
499f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus(0),
500f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus(0),
501f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus(0),
502f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus(0),
503
504//TRK
505
506f3dHistGenPtVsYVsMultTRKXiMinus(0),
507f3dHistGenPtVsYVsMultTRKXiPlus(0),
508f3dHistGenPtVsYVsMultTRKOmegaMinus(0),
509f3dHistGenPtVsYVsMultTRKOmegaPlus(0),
510f3dHistGenSelectedPtVsYVsMultTRKXiMinus(0),
511f3dHistGenSelectedPtVsYVsMultTRKXiPlus(0),
512f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus(0),
513f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus(0),
514f3dHistGenPtVsYCMSVsMultTRKXiMinus(0),
515f3dHistGenPtVsYCMSVsMultTRKXiPlus(0),
516f3dHistGenPtVsYCMSVsMultTRKOmegaMinus(0),
517f3dHistGenPtVsYCMSVsMultTRKOmegaPlus(0),
518f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus(0),
519f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus(0),
520f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus(0),
521f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus(0),
522
523//SPD
524
525f3dHistGenPtVsYVsMultSPDXiMinus(0),
526f3dHistGenPtVsYVsMultSPDXiPlus(0),
527f3dHistGenPtVsYVsMultSPDOmegaMinus(0),
528f3dHistGenPtVsYVsMultSPDOmegaPlus(0),
529f3dHistGenSelectedPtVsYVsMultSPDXiMinus(0),
530f3dHistGenSelectedPtVsYVsMultSPDXiPlus(0),
531f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus(0),
532f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus(0),
533f3dHistGenPtVsYCMSVsMultSPDXiMinus(0),
534f3dHistGenPtVsYCMSVsMultSPDXiPlus(0),
535f3dHistGenPtVsYCMSVsMultSPDOmegaMinus(0),
536f3dHistGenPtVsYCMSVsMultSPDOmegaPlus(0),
537f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus(0),
538f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus(0),
539f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus(0),
540f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus(0),
541
542
76029adc 543 fHistPVx(0),
544 fHistPVy(0),
545 fHistPVz(0),
546 fHistPVxAnalysis(0),
547 fHistPVyAnalysis(0),
548 fHistPVzAnalysis(0)
549{
550 // Constructor
d8841e95 551
552 //Set Variables for re-running the cascade vertexers (as done for MS paper)
553
554 // New Loose : 1st step for the 7 TeV pp analysis
b68d5ca6 555 /*
d8841e95 556 fV0Sels[0] = 33. ; // max allowed chi2
557 fV0Sels[1] = 0.02; // min allowed impact parameter for the 1st daughter (LHC09a4 : 0.05)
558 fV0Sels[2] = 0.02; // min allowed impact parameter for the 2nd daughter (LHC09a4 : 0.05)
559 fV0Sels[3] = 2.0 ; // max allowed DCA between the daughter tracks (LHC09a4 : 0.5)
560 fV0Sels[4] = 0.95; // min allowed cosine of V0's pointing angle (LHC09a4 : 0.99)
561 fV0Sels[5] = 1.0 ; // min radius of the fiducial volume (LHC09a4 : 0.2)
562 fV0Sels[6] = 100. ; // max radius of the fiducial volume (LHC09a4 : 100.0)
563
564 fCascSels[0] = 33. ; // max allowed chi2 (same as PDC07)
565 fCascSels[1] = 0.05 ; // min allowed V0 impact parameter (PDC07 : 0.05 / LHC09a4 : 0.025 )
566 fCascSels[2] = 0.010; // "window" around the Lambda mass (PDC07 : 0.008 / LHC09a4 : 0.010 )
567 fCascSels[3] = 0.03 ; // min allowed bachelor's impact parameter (PDC07 : 0.035 / LHC09a4 : 0.025 )
568 fCascSels[4] = 2.0 ; // max allowed DCA between the V0 and the bachelor (PDC07 : 0.1 / LHC09a4 : 0.2 )
569 fCascSels[5] = 0.95 ; // min allowed cosine of the cascade pointing angle (PDC07 : 0.9985 / LHC09a4 : 0.998 )
570 fCascSels[6] = 0.4 ; // min radius of the fiducial volume (PDC07 : 0.9 / LHC09a4 : 0.2 )
571 fCascSels[7] = 100. ; // max radius of the fiducial volume (PDC07 : 100 / LHC09a4 : 100 )
b68d5ca6 572 */
76029adc 573 // Output slot #0 writes into a TList container (Cascade)
574 DefineOutput(1, TList::Class());
575 DefineOutput(2, TTree::Class());
576}
577
578
579AliAnalysisTaskExtractPerformanceCascade::~AliAnalysisTaskExtractPerformanceCascade()
580{
581//------------------------------------------------
582// DESTRUCTOR
583//------------------------------------------------
584
585 if (fListHist){
586 delete fListHist;
587 fListHist = 0x0;
588 }
589 if (fTreeCascade){
590 delete fTreeCascade;
591 fTreeCascade = 0x0;
592 }
593 //cleanup esd track cuts object too...
594 if (fESDtrackCuts){
595 delete fESDtrackCuts;
596 fESDtrackCuts = 0x0;
597 }
2add50c1 598 if (fUtils){
599 delete fUtils;
600 fUtils = 0x0;
601 }
76029adc 602
603}
604
605//________________________________________________________________________
606void AliAnalysisTaskExtractPerformanceCascade::UserCreateOutputObjects()
607{
608 OpenFile(2);
609 // Called once
610
611//------------------------------------------------
612
613 fTreeCascade = new TTree("fTreeCascade","CascadeCandidates");
614
615//------------------------------------------------
616// fTreeCascade Branch definitions - Cascade Tree
617//------------------------------------------------
618
619//------------------------------------------------
620// fTreeCascade Branch definitions
621//------------------------------------------------
622
623//-----------BASIC-INFO---------------------------
624/* 1*/ fTreeCascade->Branch("fTreeCascVarCharge",&fTreeCascVarCharge,"fTreeCascVarCharge/I");
625/* 2*/ fTreeCascade->Branch("fTreeCascVarMassAsXi",&fTreeCascVarMassAsXi,"fTreeCascVarMassAsXi/F");
626/* 3*/ fTreeCascade->Branch("fTreeCascVarMassAsOmega",&fTreeCascVarMassAsOmega,"fTreeCascVarMassAsOmega/F");
627/* 4*/ fTreeCascade->Branch("fTreeCascVarPt",&fTreeCascVarPt,"fTreeCascVarPt/F");
628/* 5*/ fTreeCascade->Branch("fTreeCascVarPtMC",&fTreeCascVarPtMC,"fTreeCascVarPtMC/F");
629/* 6*/ fTreeCascade->Branch("fTreeCascVarRapXi",&fTreeCascVarRapXi,"fTreeCascVarRapXi/F");
630/* 7*/ fTreeCascade->Branch("fTreeCascVarRapMC",&fTreeCascVarRapMC,"fTreeCascVarRapMC/F");
631/* 8*/ fTreeCascade->Branch("fTreeCascVarRapOmega",&fTreeCascVarRapOmega,"fTreeCascVarRapOmega/F");
632/* 9*/ fTreeCascade->Branch("fTreeCascVarNegEta",&fTreeCascVarNegEta,"fTreeCascVarNegEta/F");
633/*10*/ fTreeCascade->Branch("fTreeCascVarPosEta",&fTreeCascVarPosEta,"fTreeCascVarPosEta/F");
634/*11*/ fTreeCascade->Branch("fTreeCascVarBachEta",&fTreeCascVarBachEta,"fTreeCascVarBachEta/F");
635//-----------INFO-FOR-CUTS------------------------
636/*12*/ fTreeCascade->Branch("fTreeCascVarDCACascDaughters",&fTreeCascVarDCACascDaughters,"fTreeCascVarDCACascDaughters/F");
637/*13*/ fTreeCascade->Branch("fTreeCascVarDCABachToPrimVtx",&fTreeCascVarDCABachToPrimVtx,"fTreeCascVarDCABachToPrimVtx/F");
638/*14*/ fTreeCascade->Branch("fTreeCascVarDCAV0Daughters",&fTreeCascVarDCAV0Daughters,"fTreeCascVarDCAV0Daughters/F");
639/*15*/ fTreeCascade->Branch("fTreeCascVarDCAV0ToPrimVtx",&fTreeCascVarDCAV0ToPrimVtx,"fTreeCascVarDCAV0ToPrimVtx/F");
640/*16*/ fTreeCascade->Branch("fTreeCascVarDCAPosToPrimVtx",&fTreeCascVarDCAPosToPrimVtx,"fTreeCascVarDCAPosToPrimVtx/F");
641/*17*/ fTreeCascade->Branch("fTreeCascVarDCANegToPrimVtx",&fTreeCascVarDCANegToPrimVtx,"fTreeCascVarDCANegToPrimVtx/F");
642/*18*/ fTreeCascade->Branch("fTreeCascVarCascCosPointingAngle",&fTreeCascVarCascCosPointingAngle,"fTreeCascVarCascCosPointingAngle/F");
643/*19*/ fTreeCascade->Branch("fTreeCascVarCascRadius",&fTreeCascVarCascRadius,"fTreeCascVarCascRadius/F");
644/*20*/ fTreeCascade->Branch("fTreeCascVarV0Mass",&fTreeCascVarV0Mass,"fTreeCascVarV0Mass/F");
645/*21*/ fTreeCascade->Branch("fTreeCascVarV0CosPointingAngle",&fTreeCascVarV0CosPointingAngle,"fTreeCascVarV0CosPointingAngle/F");
646/*22*/ fTreeCascade->Branch("fTreeCascVarV0Radius",&fTreeCascVarV0Radius,"fTreeCascVarV0Radius/F");
647/*23*/ fTreeCascade->Branch("fTreeCascVarLeastNbrClusters",&fTreeCascVarLeastNbrClusters,"fTreeCascVarLeastNbrClusters/I");
648//-----------MULTIPLICITY-INFO--------------------
649/*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicity",&fTreeCascVarMultiplicity,"fTreeCascVarMultiplicity/I");
aa06bcc8 650/*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicityV0A",&fTreeCascVarMultiplicityV0A,"fTreeCascVarMultiplicityV0A/I");
651/*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicityZNA",&fTreeCascVarMultiplicityZNA,"fTreeCascVarMultiplicityZNA/I");
652/*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicityTRK",&fTreeCascVarMultiplicityTRK,"fTreeCascVarMultiplicityTRK/I");
653/*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicitySPD",&fTreeCascVarMultiplicitySPD,"fTreeCascVarMultiplicitySPD/I");
9aefe7ef 654/*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicityMC",&fTreeCascVarMultiplicityMC,"fTreeCascVarMultiplicityMC/I");
76029adc 655//-----------DECAY-LENGTH-INFO--------------------
656/*25*/ fTreeCascade->Branch("fTreeCascVarDistOverTotMom",&fTreeCascVarDistOverTotMom,"fTreeCascVarDistOverTotMom/F");
657//-----------MC-PID-------------------------------
658/*26*/ fTreeCascade->Branch("fTreeCascVarPID",&fTreeCascVarPID,"fTreeCascVarPID/I");
659/*27*/ fTreeCascade->Branch("fTreeCascVarPIDBachelor",&fTreeCascVarPIDBachelor,"fTreeCascVarPIDBachelor/I");
660/*28*/ fTreeCascade->Branch("fTreeCascVarPIDNegative",&fTreeCascVarPIDNegative,"fTreeCascVarPIDNegative/I");
661/*29*/ fTreeCascade->Branch("fTreeCascVarPIDPositive",&fTreeCascVarPIDPositive,"fTreeCascVarPIDPositive/I");
662/*30*/ fTreeCascade->Branch("fTreeCascVarPosTransMom",&fTreeCascVarPosTransMom,"fTreeCascVarPosTransMom/F");
663/*31*/ fTreeCascade->Branch("fTreeCascVarNegTransMom",&fTreeCascVarNegTransMom,"fTreeCascVarNegTransMom/F");
664/*32*/ fTreeCascade->Branch("fTreeCascVarPosTransMomMC",&fTreeCascVarPosTransMomMC,"fTreeCascVarPosTransMomMC/F");
665/*33*/ fTreeCascade->Branch("fTreeCascVarNegTransMomMC",&fTreeCascVarNegTransMomMC,"fTreeCascVarNegTransMomMC/F");
666//------------------------------------------------
667/*34*/ fTreeCascade->Branch("fTreeCascVarNegNSigmaPion",&fTreeCascVarNegNSigmaPion,"fTreeCascVarNegNSigmaPion/F");
668/*35*/ fTreeCascade->Branch("fTreeCascVarNegNSigmaProton",&fTreeCascVarNegNSigmaProton,"fTreeCascVarNegNSigmaProton/F");
669/*36*/ fTreeCascade->Branch("fTreeCascVarPosNSigmaPion",&fTreeCascVarPosNSigmaPion,"fTreeCascVarPosNSigmaPion/F");
670/*37*/ fTreeCascade->Branch("fTreeCascVarPosNSigmaProton",&fTreeCascVarPosNSigmaProton,"fTreeCascVarPosNSigmaProton/F");
671/*38*/ fTreeCascade->Branch("fTreeCascVarBachNSigmaPion",&fTreeCascVarBachNSigmaPion,"fTreeCascVarBachNSigmaPion/F");
672/*39*/ fTreeCascade->Branch("fTreeCascVarBachNSigmaKaon",&fTreeCascVarBachNSigmaKaon,"fTreeCascVarBachNSigmaKaon/F");
673
674//------------------------------------------------
675// Particle Identification Setup
676//------------------------------------------------
677
678 AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
679 AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
680 fPIDResponse = inputHandler->GetPIDResponse();
681
682// Multiplicity
683
2add50c1 684 if(! fESDtrackCuts ){
685 fESDtrackCuts = new AliESDtrackCuts();
686 }
687 if(! fUtils ){
688 fUtils = new AliAnalysisUtils();
689 }
76029adc 690
691//------------------------------------------------
692// V0 Multiplicity Histograms
693//------------------------------------------------
694
695 // Create histograms
696 OpenFile(1);
697 fListHist = new TList();
698 fListHist->SetOwner(); // See http://root.cern.ch/root/html/TCollection.html#TCollection:SetOwner
699
700
701 if(! fHistV0MultiplicityBeforeTrigSel) {
702 fHistV0MultiplicityBeforeTrigSel = new TH1F("fHistV0MultiplicityBeforeTrigSel",
703 "V0s per event (before Trig. Sel.);Nbr of V0s/Evt;Events",
704 25, 0, 25);
705 fListHist->Add(fHistV0MultiplicityBeforeTrigSel);
706 }
707
708 if(! fHistV0MultiplicityForTrigEvt) {
709 fHistV0MultiplicityForTrigEvt = new TH1F("fHistV0MultiplicityForTrigEvt",
710 "V0s per event (for triggered evt);Nbr of V0s/Evt;Events",
711 25, 0, 25);
712 fListHist->Add(fHistV0MultiplicityForTrigEvt);
713 }
714
715 if(! fHistV0MultiplicityForSelEvt) {
716 fHistV0MultiplicityForSelEvt = new TH1F("fHistV0MultiplicityForSelEvt",
717 "V0s per event;Nbr of V0s/Evt;Events",
718 25, 0, 25);
719 fListHist->Add(fHistV0MultiplicityForSelEvt);
720 }
721
722 if(! fHistV0MultiplicityForSelEvtNoTPCOnly) {
723 fHistV0MultiplicityForSelEvtNoTPCOnly = new TH1F("fHistV0MultiplicityForSelEvtNoTPCOnly",
724 "V0s per event;Nbr of V0s/Evt;Events",
725 25, 0, 25);
726 fListHist->Add(fHistV0MultiplicityForSelEvtNoTPCOnly);
727 }
728 if(! fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup) {
729 fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup = new TH1F("fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup",
730 "V0s per event;Nbr of V0s/Evt;Events",
731 25, 0, 25);
732 fListHist->Add(fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup);
733 }
734
735//------------------------------------------------
736// Track Multiplicity Histograms
737//------------------------------------------------
738
739 if(! fHistMultiplicityBeforeTrigSel) {
740 fHistMultiplicityBeforeTrigSel = new TH1F("fHistMultiplicityBeforeTrigSel",
741 "Tracks per event;Nbr of Tracks;Events",
742 200, 0, 200);
743 fListHist->Add(fHistMultiplicityBeforeTrigSel);
744 }
745 if(! fHistMultiplicityForTrigEvt) {
746 fHistMultiplicityForTrigEvt = new TH1F("fHistMultiplicityForTrigEvt",
747 "Tracks per event;Nbr of Tracks;Events",
748 200, 0, 200);
749 fListHist->Add(fHistMultiplicityForTrigEvt);
750 }
751 if(! fHistMultiplicity) {
752 fHistMultiplicity = new TH1F("fHistMultiplicity",
753 "Tracks per event;Nbr of Tracks;Events",
754 200, 0, 200);
755 fListHist->Add(fHistMultiplicity);
756 }
757 if(! fHistMultiplicityNoTPCOnly) {
758 fHistMultiplicityNoTPCOnly = new TH1F("fHistMultiplicityNoTPCOnly",
759 "Tracks per event;Nbr of Tracks;Events",
760 200, 0, 200);
761 fListHist->Add(fHistMultiplicityNoTPCOnly);
762 }
763 if(! fHistMultiplicityNoTPCOnlyNoPileup) {
764 fHistMultiplicityNoTPCOnlyNoPileup = new TH1F("fHistMultiplicityNoTPCOnlyNoPileup",
765 "Tracks per event;Nbr of Tracks;Events",
766 200, 0, 200);
767 fListHist->Add(fHistMultiplicityNoTPCOnlyNoPileup);
768 }
aa06bcc8 769
770
771 //V0A Centrality (if PbPb / pPb)
772 if(! fHistMultiplicityV0ABeforeTrigSel) {
773 fHistMultiplicityV0ABeforeTrigSel = new TH1F("fHistMultiplicityV0ABeforeTrigSel",
774 "Centrality Distribution: V0A;V0A Centrality;Events",
775 200, 0, 200);
776 fListHist->Add(fHistMultiplicityV0ABeforeTrigSel);
777 }
778 if(! fHistMultiplicityV0AForTrigEvt) {
779 fHistMultiplicityV0AForTrigEvt = new TH1F("fHistMultiplicityV0AForTrigEvt",
780 "Centrality Distribution: V0A;V0A Centrality;Events",
781 200, 0, 200);
782 fListHist->Add(fHistMultiplicityV0AForTrigEvt);
783 }
784 if(! fHistMultiplicityV0A) {
785 fHistMultiplicityV0A = new TH1F("fHistMultiplicityV0A",
786 "Centrality Distribution: V0A;V0A Centrality;Events",
787 200, 0, 200);
788 fListHist->Add(fHistMultiplicityV0A);
789 }
790 if(! fHistMultiplicityV0ANoTPCOnly) {
791 fHistMultiplicityV0ANoTPCOnly = new TH1F("fHistMultiplicityV0ANoTPCOnly",
792 "Centrality Distribution: V0A;V0A Centrality;Events",
793 200, 0, 200);
794 fListHist->Add(fHistMultiplicityV0ANoTPCOnly);
795 }
796 if(! fHistMultiplicityV0ANoTPCOnlyNoPileup) {
797 fHistMultiplicityV0ANoTPCOnlyNoPileup = new TH1F("fHistMultiplicityV0ANoTPCOnlyNoPileup",
798 "Centrality Distribution: V0A;V0A Centrality;Events",
799 200, 0, 200);
800 fListHist->Add(fHistMultiplicityV0ANoTPCOnlyNoPileup);
801 }
802
803 //ZNA Centrality (if PbPb / pPb)
804 if(! fHistMultiplicityZNABeforeTrigSel) {
805 fHistMultiplicityZNABeforeTrigSel = new TH1F("fHistMultiplicityZNABeforeTrigSel",
806 "Centrality Distribution: ZNA;ZNA Centrality;Events",
807 200, 0, 200);
808 fListHist->Add(fHistMultiplicityZNABeforeTrigSel);
809 }
810 if(! fHistMultiplicityZNAForTrigEvt) {
811 fHistMultiplicityZNAForTrigEvt = new TH1F("fHistMultiplicityZNAForTrigEvt",
812 "Centrality Distribution: ZNA;ZNA Centrality;Events",
813 200, 0, 200);
814 fListHist->Add(fHistMultiplicityZNAForTrigEvt);
815 }
816 if(! fHistMultiplicityZNA) {
817 fHistMultiplicityZNA = new TH1F("fHistMultiplicityZNA",
818 "Centrality Distribution: ZNA;ZNA Centrality;Events",
819 200, 0, 200);
820 fListHist->Add(fHistMultiplicityZNA);
821 }
822 if(! fHistMultiplicityZNANoTPCOnly) {
823 fHistMultiplicityZNANoTPCOnly = new TH1F("fHistMultiplicityZNANoTPCOnly",
824 "Centrality Distribution: ZNA;ZNA Centrality;Events",
825 200, 0, 200);
826 fListHist->Add(fHistMultiplicityZNANoTPCOnly);
827 }
828 if(! fHistMultiplicityZNANoTPCOnlyNoPileup) {
829 fHistMultiplicityZNANoTPCOnlyNoPileup = new TH1F("fHistMultiplicityZNANoTPCOnlyNoPileup",
830 "Centrality Distribution: ZNA;ZNA Centrality;Events",
831 200, 0, 200);
832 fListHist->Add(fHistMultiplicityZNANoTPCOnlyNoPileup);
833 }
834
835 //TRK Centrality (if PbPb / pPb)
836 if(! fHistMultiplicityTRKBeforeTrigSel) {
837 fHistMultiplicityTRKBeforeTrigSel = new TH1F("fHistMultiplicityTRKBeforeTrigSel",
838 "Centrality Distribution: TRK;TRK Centrality;Events",
839 200, 0, 200);
840 fListHist->Add(fHistMultiplicityTRKBeforeTrigSel);
841 }
842 if(! fHistMultiplicityTRKForTrigEvt) {
843 fHistMultiplicityTRKForTrigEvt = new TH1F("fHistMultiplicityTRKForTrigEvt",
844 "Centrality Distribution: TRK;TRK Centrality;Events",
845 200, 0, 200);
846 fListHist->Add(fHistMultiplicityTRKForTrigEvt);
847 }
848 if(! fHistMultiplicityTRK) {
849 fHistMultiplicityTRK = new TH1F("fHistMultiplicityTRK",
850 "Centrality Distribution: TRK;TRK Centrality;Events",
851 200, 0, 200);
852 fListHist->Add(fHistMultiplicityTRK);
853 }
854 if(! fHistMultiplicityTRKNoTPCOnly) {
855 fHistMultiplicityTRKNoTPCOnly = new TH1F("fHistMultiplicityTRKNoTPCOnly",
856 "Centrality Distribution: TRK;TRK Centrality;Events",
857 200, 0, 200);
858 fListHist->Add(fHistMultiplicityTRKNoTPCOnly);
859 }
860 if(! fHistMultiplicityTRKNoTPCOnlyNoPileup) {
861 fHistMultiplicityTRKNoTPCOnlyNoPileup = new TH1F("fHistMultiplicityTRKNoTPCOnlyNoPileup",
862 "Centrality Distribution: TRK;TRK Centrality;Events",
863 200, 0, 200);
864 fListHist->Add(fHistMultiplicityTRKNoTPCOnlyNoPileup);
865 }
866
867 //SPD Centrality (if PbPb / pPb)
868 if(! fHistMultiplicitySPDBeforeTrigSel) {
869 fHistMultiplicitySPDBeforeTrigSel = new TH1F("fHistMultiplicitySPDBeforeTrigSel",
870 "Centrality Distribution: SPD;SPD Centrality;Events",
871 200, 0, 200);
872 fListHist->Add(fHistMultiplicitySPDBeforeTrigSel);
873 }
874 if(! fHistMultiplicitySPDForTrigEvt) {
875 fHistMultiplicitySPDForTrigEvt = new TH1F("fHistMultiplicitySPDForTrigEvt",
876 "Centrality Distribution: SPD;SPD Centrality;Events",
877 200, 0, 200);
878 fListHist->Add(fHistMultiplicitySPDForTrigEvt);
879 }
880 if(! fHistMultiplicitySPD) {
881 fHistMultiplicitySPD = new TH1F("fHistMultiplicitySPD",
882 "Centrality Distribution: SPD;SPD Centrality;Events",
883 200, 0, 200);
884 fListHist->Add(fHistMultiplicitySPD);
885 }
886 if(! fHistMultiplicitySPDNoTPCOnly) {
887 fHistMultiplicitySPDNoTPCOnly = new TH1F("fHistMultiplicitySPDNoTPCOnly",
888 "Centrality Distribution: SPD;SPD Centrality;Events",
889 200, 0, 200);
890 fListHist->Add(fHistMultiplicitySPDNoTPCOnly);
891 }
892 if(! fHistMultiplicitySPDNoTPCOnlyNoPileup) {
893 fHistMultiplicitySPDNoTPCOnlyNoPileup = new TH1F("fHistMultiplicitySPDNoTPCOnlyNoPileup",
894 "Centrality Distribution: SPD;SPD Centrality;Events",
895 200, 0, 200);
896 fListHist->Add(fHistMultiplicitySPDNoTPCOnlyNoPileup);
897 }
898
899
900
76029adc 901
902//------------------------------------------------
903// Generated Particle Histograms
904//------------------------------------------------
905
906 Int_t lCustomNBins = 200;
907 Double_t lCustomPtUpperLimit = 20;
908 Int_t lCustomNBinsMultiplicity = 100;
909
910//----------------------------------
911// Raw Generated (Pre-physics-selection)
912//----------------------------------
913
914//--------------------------------------------------------------------------------------
915//--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
916
917 if(! f3dHistGenPtVsYVsMultXiMinus) {
918 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);
919 fListHist->Add(f3dHistGenPtVsYVsMultXiMinus);
920 }
921 if(! f3dHistGenPtVsYVsMultXiPlus) {
922 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);
923 fListHist->Add(f3dHistGenPtVsYVsMultXiPlus);
924 }
925//--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
926
927 if(! f3dHistGenPtVsYVsMultOmegaMinus) {
928 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);
929 fListHist->Add(f3dHistGenPtVsYVsMultOmegaMinus);
930 }
931 if(! f3dHistGenPtVsYVsMultOmegaPlus) {
932 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);
933 fListHist->Add(f3dHistGenPtVsYVsMultOmegaPlus);
934 }
935
da3539d8 936//All generated cascades, YCMS
937
938 if(! f3dHistGenPtVsYCMSVsMultXiMinus) {
939 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);
940 fListHist->Add(f3dHistGenPtVsYCMSVsMultXiMinus);
941 }
942 if(! f3dHistGenPtVsYCMSVsMultXiPlus) {
943 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);
944 fListHist->Add(f3dHistGenPtVsYCMSVsMultXiPlus);
945 }
946//--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
947
948 if(! f3dHistGenPtVsYCMSVsMultOmegaMinus) {
949 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);
950 fListHist->Add(f3dHistGenPtVsYCMSVsMultOmegaMinus);
951 }
952 if(! f3dHistGenPtVsYCMSVsMultOmegaPlus) {
953 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);
954 fListHist->Add(f3dHistGenPtVsYCMSVsMultOmegaPlus);
955 }
956
957
76029adc 958//--------------------------------------------------------------------------------------
959//--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
960
961 if(! f3dHistGenSelectedPtVsYVsMultXiMinus) {
962 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);
963 fListHist->Add(f3dHistGenSelectedPtVsYVsMultXiMinus);
964 }
965 if(! f3dHistGenSelectedPtVsYVsMultXiPlus) {
966 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);
967 fListHist->Add(f3dHistGenSelectedPtVsYVsMultXiPlus);
968 }
969//--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
970
971 if(! f3dHistGenSelectedPtVsYVsMultOmegaMinus) {
972 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);
973 fListHist->Add(f3dHistGenSelectedPtVsYVsMultOmegaMinus);
974 }
975 if(! f3dHistGenSelectedPtVsYVsMultOmegaPlus) {
976 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);
977 fListHist->Add(f3dHistGenSelectedPtVsYVsMultOmegaPlus);
978 }
979
da3539d8 980//ANALYSIS level Cascades, YCMS
981
982
983 if(! f3dHistGenSelectedPtVsYCMSVsMultXiMinus) {
984 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);
985 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultXiMinus);
986 }
987 if(! f3dHistGenSelectedPtVsYCMSVsMultXiPlus) {
988 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);
989 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultXiPlus);
990 }
991//--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
992
993 if(! f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus) {
994 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);
995 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus);
996 }
997 if(! f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus) {
998 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);
999 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus);
1000 }
13884279 1001
ea8c8e56 1002 //======================================================================================
13884279 1003 //--------------------------------------------------------------------------------------
1004 // True Generated (For Multiplicity Unfolding)
1005 //--------------------------------------------------------------------------------------
ea8c8e56 1006 //======================================================================================
1007
13884279 1008 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1009
1010 if(! f3dHistGenPtVsYVsMultMCXiMinus) {
1011 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);
1012 fListHist->Add(f3dHistGenPtVsYVsMultMCXiMinus);
1013 }
1014 if(! f3dHistGenPtVsYVsMultMCXiPlus) {
1015 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);
1016 fListHist->Add(f3dHistGenPtVsYVsMultMCXiPlus);
1017 }
1018 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1019
1020 if(! f3dHistGenPtVsYVsMultMCOmegaMinus) {
1021 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);
1022 fListHist->Add(f3dHistGenPtVsYVsMultMCOmegaMinus);
1023 }
1024 if(! f3dHistGenPtVsYVsMultMCOmegaPlus) {
1025 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);
1026 fListHist->Add(f3dHistGenPtVsYVsMultMCOmegaPlus);
1027 }
1028
1029 //All generated cascades, YCMS
1030
1031 if(! f3dHistGenPtVsYCMSVsMultMCXiMinus) {
1032 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);
1033 fListHist->Add(f3dHistGenPtVsYCMSVsMultMCXiMinus);
1034 }
1035 if(! f3dHistGenPtVsYCMSVsMultMCXiPlus) {
1036 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);
1037 fListHist->Add(f3dHistGenPtVsYCMSVsMultMCXiPlus);
1038 }
1039 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1040
1041 if(! f3dHistGenPtVsYCMSVsMultMCOmegaMinus) {
1042 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);
1043 fListHist->Add(f3dHistGenPtVsYCMSVsMultMCOmegaMinus);
1044 }
1045 if(! f3dHistGenPtVsYCMSVsMultMCOmegaPlus) {
1046 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);
1047 fListHist->Add(f3dHistGenPtVsYCMSVsMultMCOmegaPlus);
1048 }
1049
1050
1051 //--------------------------------------------------------------------------------------
1052 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1053
1054 if(! f3dHistGenSelectedPtVsYVsMultMCXiMinus) {
1055 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);
1056 fListHist->Add(f3dHistGenSelectedPtVsYVsMultMCXiMinus);
1057 }
1058 if(! f3dHistGenSelectedPtVsYVsMultMCXiPlus) {
1059 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);
1060 fListHist->Add(f3dHistGenSelectedPtVsYVsMultMCXiPlus);
1061 }
1062 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1063
1064 if(! f3dHistGenSelectedPtVsYVsMultMCOmegaMinus) {
1065 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);
1066 fListHist->Add(f3dHistGenSelectedPtVsYVsMultMCOmegaMinus);
1067 }
1068 if(! f3dHistGenSelectedPtVsYVsMultMCOmegaPlus) {
1069 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);
1070 fListHist->Add(f3dHistGenSelectedPtVsYVsMultMCOmegaPlus);
1071 }
1072
1073 //ANALYSIS level Cascades, YCMS
1074
1075
1076 if(! f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus) {
1077 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);
1078 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus);
1079 }
1080 if(! f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus) {
1081 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);
1082 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus);
1083 }
1084 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1085
1086 if(! f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus) {
1087 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);
1088 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus);
1089 }
1090 if(! f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus) {
1091 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);
1092 fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus);
1093 }
da3539d8 1094
ea8c8e56 1095 //======================================================================================
1096 //--------------------------------------------------------------------------------------
1097 // V0A
1098 //--------------------------------------------------------------------------------------
1099 //======================================================================================
1100
1101 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1102
1103 if(! f3dHistGenPtVsYVsMultV0AXiMinus) {
1104 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);
1105 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultV0AXiMinus);
1106 }
1107 if(! f3dHistGenPtVsYVsMultV0AXiPlus) {
1108 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);
1109 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultV0AXiPlus);
1110 }
1111 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1112
1113 if(! f3dHistGenPtVsYVsMultV0AOmegaMinus) {
1114 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);
1115 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultV0AOmegaMinus);
1116 }
1117 if(! f3dHistGenPtVsYVsMultV0AOmegaPlus) {
1118 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);
1119 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultV0AOmegaPlus);
1120 }
1121
1122 //All generated cascades, YCMS
1123
1124 if(! f3dHistGenPtVsYCMSVsMultV0AXiMinus) {
1125 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);
1126 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultV0AXiMinus);
1127 }
1128 if(! f3dHistGenPtVsYCMSVsMultV0AXiPlus) {
1129 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);
1130 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultV0AXiPlus);
1131 }
1132 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1133
1134 if(! f3dHistGenPtVsYCMSVsMultV0AOmegaMinus) {
1135 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);
1136 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultV0AOmegaMinus);
1137 }
1138 if(! f3dHistGenPtVsYCMSVsMultV0AOmegaPlus) {
1139 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);
1140 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultV0AOmegaPlus);
1141 }
1142
1143
1144 //--------------------------------------------------------------------------------------
1145 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1146
1147 if(! f3dHistGenSelectedPtVsYVsMultV0AXiMinus) {
1148 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);
1149 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultV0AXiMinus);
1150 }
1151 if(! f3dHistGenSelectedPtVsYVsMultV0AXiPlus) {
1152 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);
1153 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultV0AXiPlus);
1154 }
1155 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1156
1157 if(! f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus) {
1158 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);
1159 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus);
1160 }
1161 if(! f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus) {
1162 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);
1163 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus);
1164 }
1165
1166 //ANALYSIS level Cascades, YCMS
1167
1168
1169 if(! f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus) {
1170 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);
1171 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus);
1172 }
1173 if(! f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus) {
1174 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);
1175 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus);
1176 }
1177 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1178
1179 if(! f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus) {
1180 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);
1181 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus);
1182 }
1183 if(! f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus) {
1184 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);
1185 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus);
1186 }
1187
1188
1189 //======================================================================================
1190 //--------------------------------------------------------------------------------------
1191 // ZNA
1192 //--------------------------------------------------------------------------------------
1193 //======================================================================================
1194
1195 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1196
1197 if(! f3dHistGenPtVsYVsMultZNAXiMinus) {
1198 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);
1199 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultZNAXiMinus);
1200 }
1201 if(! f3dHistGenPtVsYVsMultZNAXiPlus) {
1202 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);
1203 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultZNAXiPlus);
1204 }
1205 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1206
1207 if(! f3dHistGenPtVsYVsMultZNAOmegaMinus) {
1208 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);
1209 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultZNAOmegaMinus);
1210 }
1211 if(! f3dHistGenPtVsYVsMultZNAOmegaPlus) {
1212 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);
1213 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultZNAOmegaPlus);
1214 }
1215
1216 //All generated cascades, YCMS
1217
1218 if(! f3dHistGenPtVsYCMSVsMultZNAXiMinus) {
1219 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);
1220 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultZNAXiMinus);
1221 }
1222 if(! f3dHistGenPtVsYCMSVsMultZNAXiPlus) {
1223 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);
1224 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultZNAXiPlus);
1225 }
1226 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1227
1228 if(! f3dHistGenPtVsYCMSVsMultZNAOmegaMinus) {
1229 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);
1230 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultZNAOmegaMinus);
1231 }
1232 if(! f3dHistGenPtVsYCMSVsMultZNAOmegaPlus) {
1233 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);
1234 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultZNAOmegaPlus);
1235 }
1236
1237
1238 //--------------------------------------------------------------------------------------
1239 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1240
1241 if(! f3dHistGenSelectedPtVsYVsMultZNAXiMinus) {
1242 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);
1243 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultZNAXiMinus);
1244 }
1245 if(! f3dHistGenSelectedPtVsYVsMultZNAXiPlus) {
1246 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);
1247 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultZNAXiPlus);
1248 }
1249 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1250
1251 if(! f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus) {
1252 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);
1253 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus);
1254 }
1255 if(! f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus) {
1256 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);
1257 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus);
1258 }
1259
1260 //ANALYSIS level Cascades, YCMS
1261
1262
1263 if(! f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus) {
1264 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);
1265 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus);
1266 }
1267 if(! f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus) {
1268 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);
1269 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus);
1270 }
1271 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1272
1273 if(! f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus) {
1274 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);
1275 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus);
1276 }
1277 if(! f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus) {
1278 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);
1279 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus);
1280 }
1281
1282
1283 //======================================================================================
1284 //--------------------------------------------------------------------------------------
1285 // TRK
1286 //--------------------------------------------------------------------------------------
1287 //======================================================================================
1288
1289 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1290
1291 if(! f3dHistGenPtVsYVsMultTRKXiMinus) {
1292 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);
1293 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultTRKXiMinus);
1294 }
1295 if(! f3dHistGenPtVsYVsMultTRKXiPlus) {
1296 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);
1297 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultTRKXiPlus);
1298 }
1299 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1300
1301 if(! f3dHistGenPtVsYVsMultTRKOmegaMinus) {
1302 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);
1303 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultTRKOmegaMinus);
1304 }
1305 if(! f3dHistGenPtVsYVsMultTRKOmegaPlus) {
1306 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);
1307 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultTRKOmegaPlus);
1308 }
1309
1310 //All generated cascades, YCMS
1311
1312 if(! f3dHistGenPtVsYCMSVsMultTRKXiMinus) {
1313 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);
1314 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultTRKXiMinus);
1315 }
1316 if(! f3dHistGenPtVsYCMSVsMultTRKXiPlus) {
1317 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);
1318 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultTRKXiPlus);
1319 }
1320 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1321
1322 if(! f3dHistGenPtVsYCMSVsMultTRKOmegaMinus) {
1323 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);
1324 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultTRKOmegaMinus);
1325 }
1326 if(! f3dHistGenPtVsYCMSVsMultTRKOmegaPlus) {
1327 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);
1328 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultTRKOmegaPlus);
1329 }
1330
1331
1332 //--------------------------------------------------------------------------------------
1333 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1334
1335 if(! f3dHistGenSelectedPtVsYVsMultTRKXiMinus) {
1336 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);
1337 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultTRKXiMinus);
1338 }
1339 if(! f3dHistGenSelectedPtVsYVsMultTRKXiPlus) {
1340 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);
1341 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultTRKXiPlus);
1342 }
1343 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1344
1345 if(! f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus) {
1346 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);
1347 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus);
1348 }
1349 if(! f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus) {
1350 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);
1351 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus);
1352 }
1353
1354 //ANALYSIS level Cascades, YCMS
1355
1356
1357 if(! f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus) {
1358 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);
1359 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus);
1360 }
1361 if(! f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus) {
1362 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);
1363 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus);
1364 }
1365 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1366
1367 if(! f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus) {
1368 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);
1369 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus);
1370 }
1371 if(! f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus) {
1372 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);
1373 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus);
1374 }
1375
1376 //======================================================================================
1377 //--------------------------------------------------------------------------------------
1378 // SPD
1379 //--------------------------------------------------------------------------------------
1380 //======================================================================================
1381
1382 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1383
1384 if(! f3dHistGenPtVsYVsMultSPDXiMinus) {
1385 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);
1386 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultSPDXiMinus);
1387 }
1388 if(! f3dHistGenPtVsYVsMultSPDXiPlus) {
1389 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);
1390 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultSPDXiPlus);
1391 }
1392 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1393
1394 if(! f3dHistGenPtVsYVsMultSPDOmegaMinus) {
1395 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);
1396 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultSPDOmegaMinus);
1397 }
1398 if(! f3dHistGenPtVsYVsMultSPDOmegaPlus) {
1399 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);
1400 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYVsMultSPDOmegaPlus);
1401 }
1402
1403 //All generated cascades, YCMS
1404
1405 if(! f3dHistGenPtVsYCMSVsMultSPDXiMinus) {
1406 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);
1407 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultSPDXiMinus);
1408 }
1409 if(! f3dHistGenPtVsYCMSVsMultSPDXiPlus) {
1410 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);
1411 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultSPDXiPlus);
1412 }
1413 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1414
1415 if(! f3dHistGenPtVsYCMSVsMultSPDOmegaMinus) {
1416 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);
1417 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultSPDOmegaMinus);
1418 }
1419 if(! f3dHistGenPtVsYCMSVsMultSPDOmegaPlus) {
1420 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);
1421 if(fkIsNuclear) fListHist->Add(f3dHistGenPtVsYCMSVsMultSPDOmegaPlus);
1422 }
1423
1424
1425 //--------------------------------------------------------------------------------------
1426 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1427
1428 if(! f3dHistGenSelectedPtVsYVsMultSPDXiMinus) {
1429 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);
1430 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultSPDXiMinus);
1431 }
1432 if(! f3dHistGenSelectedPtVsYVsMultSPDXiPlus) {
1433 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);
1434 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultSPDXiPlus);
1435 }
1436 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1437
1438 if(! f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus) {
1439 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);
1440 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus);
1441 }
1442 if(! f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus) {
1443 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);
1444 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus);
1445 }
1446
1447 //ANALYSIS level Cascades, YCMS
1448
1449
1450 if(! f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus) {
1451 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);
1452 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus);
1453 }
1454 if(! f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus) {
1455 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);
1456 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus);
1457 }
1458 //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
1459
1460 if(! f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus) {
1461 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);
1462 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus);
1463 }
1464 if(! f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus) {
1465 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);
1466 if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus);
1467 }
1468
76029adc 1469//----------------------------------
1470// Primary Vertex Position Histos
1471//----------------------------------
1472
1473 if(! fHistPVx) {
1474 fHistPVx = new TH1F("fHistPVx",
1475 "PV x position;Nbr of Evts;x",
1476 2000, -0.5, 0.5);
1477 fListHist->Add(fHistPVx);
1478 }
1479 if(! fHistPVy) {
1480 fHistPVy = new TH1F("fHistPVy",
1481 "PV y position;Nbr of Evts;y",
1482 2000, -0.5, 0.5);
1483 fListHist->Add(fHistPVy);
1484 }
1485 if(! fHistPVz) {
1486 fHistPVz = new TH1F("fHistPVz",
1487 "PV z position;Nbr of Evts;z",
1488 400, -20, 20);
1489 fListHist->Add(fHistPVz);
1490 }
1491
1492 if(! fHistPVxAnalysis) {
1493 fHistPVxAnalysis = new TH1F("fHistPVxAnalysis",
1494 "PV x position;Nbr of Evts;x",
1495 2000, -0.5, 0.5);
1496 fListHist->Add(fHistPVxAnalysis);
1497 }
1498 if(! fHistPVyAnalysis) {
1499 fHistPVyAnalysis = new TH1F("fHistPVyAnalysis",
1500 "PV y position;Nbr of Evts;y",
1501 2000, -0.5, 0.5);
1502 fListHist->Add(fHistPVyAnalysis);
1503 }
1504 if(! fHistPVzAnalysis) {
1505 fHistPVzAnalysis = new TH1F("fHistPVzAnalysis",
1506 "PV z position;Nbr of Evts;z",
1507 400, -20, 20);
1508 fListHist->Add(fHistPVzAnalysis);
1509 }
1510
1511 //List of Histograms: Normal
1512 PostData(1, fListHist);
1513
1514 //TTree Object: Saved to base directory. Should cache to disk while saving.
1515 //(Important to avoid excessive memory usage, particularly when merging)
1516 PostData(2, fTreeCascade);
1517
1518}// end UserCreateOutputObjects
1519
1520
1521//________________________________________________________________________
1522void AliAnalysisTaskExtractPerformanceCascade::UserExec(Option_t *)
1523{
1524 // Main loop
1525 // Called for each event
1526
1527 AliESDEvent *lESDevent = 0x0;
1528 AliMCEvent *lMCevent = 0x0;
1529 AliStack *lMCstack = 0x0;
1530
1531 Int_t lNumberOfV0s = -1;
1532 Double_t lTrkgPrimaryVtxPos[3] = {-100.0, -100.0, -100.0};
1533 Double_t lBestPrimaryVtxPos[3] = {-100.0, -100.0, -100.0};
1534 Double_t lMagneticField = -10.;
1535
1536 // Connect to the InputEvent
1537 // After these lines, we should have an ESD/AOD event + the number of V0s in it.
1538
1539 // Appropriate for ESD analysis!
1540
1541 lESDevent = dynamic_cast<AliESDEvent*>( InputEvent() );
1542 if (!lESDevent) {
1543 AliWarning("ERROR: lESDevent not available \n");
1544 return;
1545 }
1546
1547/* --- Acquisition of exact event ID
1548 fTreeVariableRunNumber = lESDevent->GetRunNumber();
1549 fTreeVariableEventNumber =
1550 ( ( ((ULong64_t)lESDevent->GetPeriodNumber() ) << 36 ) |
1551 ( ((ULong64_t)lESDevent->GetOrbitNumber () ) << 12 ) |
1552 ((ULong64_t)lESDevent->GetBunchCrossNumber() ) );
1553*/
1554 lMCevent = MCEvent();
1555 if (!lMCevent) {
1556 Printf("ERROR: Could not retrieve MC event \n");
1557 cout << "Name of the file with pb :" << fInputHandler->GetTree()->GetCurrentFile()->GetName() << endl;
1558 return;
1559 }
1560
1561 lMCstack = lMCevent->Stack();
1562 if (!lMCstack) {
1563 Printf("ERROR: Could not retrieve MC stack \n");
1564 cout << "Name of the file with pb :" << fInputHandler->GetTree()->GetCurrentFile()->GetName() << endl;
1565 return;
1566 }
1567 TArrayF mcPrimaryVtx;
1568 AliGenEventHeader* mcHeader=lMCevent->GenEventHeader();
1569 if(!mcHeader) return;
1570 mcHeader->PrimaryVertex(mcPrimaryVtx);
1571
1572//------------------------------------------------
1573// Multiplicity Information Acquistion
1574//------------------------------------------------
1575
1576 //REVISED multiplicity estimator after 'multiplicity day' (2011)
aa06bcc8 1577 Int_t lMultiplicity = -100;
1578 Int_t lMultiplicityV0A = -100;
1579 Int_t lMultiplicityZNA = -100;
1580 Int_t lMultiplicityTRK = -100;
1581 Int_t lMultiplicitySPD = -100;
76029adc 1582
1583 //testing purposes
cda235e2 1584 if(fkIsNuclear == kFALSE) lMultiplicity = fESDtrackCuts->GetReferenceMultiplicity(lESDevent, AliESDtrackCuts::kTrackletsITSTPC, fEtaRefMult );
76029adc 1585
9aefe7ef 1586 //--------- GENERATED NUMBER OF CHARGED PARTICLES
1587 // ---> Set Variables to Zero again
1588 // ---> Variable Definition
1589
1590 Long_t lNumberOfCharged = 0;
1591
1592 //----- Loop on Stack ----------------------------------------------------------------
1593 for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < (lMCstack->GetNtrack()); iCurrentLabelStack++)
1594 {// This is the begining of the loop on tracks
1595 TParticle* particleOne = lMCstack->Particle(iCurrentLabelStack);
1596 if(!particleOne) continue;
1597 if(!particleOne->GetPDG()) continue;
1598 Double_t lThisCharge = particleOne->GetPDG()->Charge()/3.;
1599 if(TMath::Abs(lThisCharge)<0.001) continue;
1600 if(! (lMCstack->IsPhysicalPrimary(iCurrentLabelStack)) ) continue;
1601
1602 //Double_t gpt = particleOne -> Pt();
1603 Double_t geta = particleOne -> Eta();
1604
1605 if( TMath::Abs(geta) < 0.5) lNumberOfCharged++;
1606 }//End of loop on tracks
1607 //----- End Loop on Stack ------------------------------------------------------------
1608
1609
76029adc 1610 //---> If this is a nuclear collision, then go nuclear on "multiplicity" variable...
1611 //---> Warning: Experimental
1612 if(fkIsNuclear == kTRUE){
1613 AliCentrality* centrality;
1614 centrality = lESDevent->GetCentrality();
da3539d8 1615 lMultiplicity = ( ( Int_t ) ( centrality->GetCentralityPercentile( fCentralityEstimator.Data() ) ) );
aa06bcc8 1616 lMultiplicityV0A = ( ( Int_t ) ( centrality->GetCentralityPercentile( "V0A" ) ) );
1617 lMultiplicityZNA = ( ( Int_t ) ( centrality->GetCentralityPercentile( "ZNA" ) ) );
1618 lMultiplicityTRK = ( ( Int_t ) ( centrality->GetCentralityPercentile( "TRK" ) ) );
f8bc074c 1619 lMultiplicitySPD = ( ( Int_t ) ( centrality->GetCentralityPercentile( "CL1" ) ) );
76029adc 1620 if (centrality->GetQuality()>1) {
1621 PostData(1, fListHist);
1622 PostData(2, fTreeCascade);
1623 return;
1624 }
1625 }
1626
1627 //Set variable for filling tree afterwards!
1628 //---> pp case......: GetReferenceMultiplicity
1629 //---> Pb-Pb case...: Centrality by V0M
1630
1631 fTreeCascVarMultiplicity = lMultiplicity;
9aefe7ef 1632 fTreeCascVarMultiplicityMC = lNumberOfCharged;
aa06bcc8 1633 fTreeCascVarMultiplicityV0A = lMultiplicityV0A;
1634 fTreeCascVarMultiplicityZNA = lMultiplicityZNA;
1635 fTreeCascVarMultiplicityTRK = lMultiplicityTRK;
1636 fTreeCascVarMultiplicitySPD = lMultiplicitySPD;
76029adc 1637
1638 fHistV0MultiplicityBeforeTrigSel->Fill ( lESDevent->GetNumberOfV0s() );
1639 fHistMultiplicityBeforeTrigSel->Fill ( lMultiplicity );
aa06bcc8 1640 fHistMultiplicityV0ABeforeTrigSel->Fill ( lMultiplicityV0A );
1641 fHistMultiplicityZNABeforeTrigSel->Fill ( lMultiplicityZNA );
1642 fHistMultiplicityTRKBeforeTrigSel->Fill ( lMultiplicityTRK );
1643 fHistMultiplicitySPDBeforeTrigSel->Fill ( lMultiplicitySPD );
1644
76029adc 1645//------------------------------------------------
1646// MC Information Acquistion
1647//------------------------------------------------
1648
1649 Int_t iNumberOfPrimaries = -1;
1650 iNumberOfPrimaries = lMCstack->GetNprimary();
1651 if(iNumberOfPrimaries < 1) return;
1652
1653//------------------------------------------------
1654// Variable Definition
1655//------------------------------------------------
1656
1657 Int_t lNbMCPrimary = 0;
1658
76029adc 1659 Double_t lPtCurrentPart = 0;
1660
1661 //Int_t lComeFromSigma = 0;
1662
1663 // current mc particle 's mother
1664 //Int_t iCurrentMother = 0;
1665 lNbMCPrimary = lMCstack->GetNprimary();
1666
1667//------------------------------------------------
1668// Pre-Physics Selection
1669//------------------------------------------------
1670
1671//----- Loop on primary Xi, Omega --------------------------------------------------------------
1672 for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < lNbMCPrimary; iCurrentLabelStack++)
1673 {// This is the begining of the loop on primaries
1674
1675 TParticle* lCurrentParticlePrimary = 0x0;
1676 lCurrentParticlePrimary = lMCstack->Particle( iCurrentLabelStack );
1677 if(!lCurrentParticlePrimary){
1678 Printf("Cascade loop %d - MC TParticle pointer to current stack particle = 0x0 ! Skip ...\n", iCurrentLabelStack );
1679 continue;
1680 }
1681 if ( TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3312 || TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3334 ) {
1682 Double_t lRapXiMCPrimary = -100;
1683 if( (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) != 0 ) {
1684 if ( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) !=0 ){
1685 lRapXiMCPrimary = 0.5*TMath::Log( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) );
1686 }
1687 }
1688
1689 //=================================================================================
1690 // Xi Histograms
1691 if( lCurrentParticlePrimary->GetPdgCode() == 3312 ){
9aefe7ef 1692 lPtCurrentPart = lCurrentParticlePrimary->Pt();
1693 f3dHistGenPtVsYVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
1694 f3dHistGenPtVsYCMSVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
1695 //MultMC
1696 f3dHistGenPtVsYVsMultMCXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
1697 f3dHistGenPtVsYCMSVsMultMCXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
ea8c8e56 1698 //V0A
1699 f3dHistGenPtVsYVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
1700 f3dHistGenPtVsYCMSVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
1701 //ZNA
1702 f3dHistGenPtVsYVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
1703 f3dHistGenPtVsYCMSVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
1704 //TRK
1705 f3dHistGenPtVsYVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
1706 f3dHistGenPtVsYCMSVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
1707 //SPD
1708 f3dHistGenPtVsYVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
1709 f3dHistGenPtVsYCMSVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
76029adc 1710 }
1711 if( lCurrentParticlePrimary->GetPdgCode() == -3312 ){
9aefe7ef 1712 lPtCurrentPart = lCurrentParticlePrimary->Pt();
1713 f3dHistGenPtVsYVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
1714 f3dHistGenPtVsYCMSVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
1715 //MultMC
1716 f3dHistGenPtVsYVsMultMCXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
1717 f3dHistGenPtVsYCMSVsMultMCXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
ea8c8e56 1718 //V0A
1719 f3dHistGenPtVsYVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
1720 f3dHistGenPtVsYCMSVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
1721 //ZNA
1722 f3dHistGenPtVsYVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
1723 f3dHistGenPtVsYCMSVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
1724 //TRK
1725 f3dHistGenPtVsYVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
1726 f3dHistGenPtVsYCMSVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
1727 //SPD
1728 f3dHistGenPtVsYVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
1729 f3dHistGenPtVsYCMSVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
76029adc 1730 }
1731 // Omega Histograms
1732 if( lCurrentParticlePrimary->GetPdgCode() == 3334 ){
ea8c8e56 1733 lPtCurrentPart = lCurrentParticlePrimary->Pt();
1734 f3dHistGenPtVsYVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
1735 f3dHistGenPtVsYCMSVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
9aefe7ef 1736 //MultMC
ea8c8e56 1737 f3dHistGenPtVsYVsMultMCOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
1738 f3dHistGenPtVsYCMSVsMultMCOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
1739 //V0A
1740 f3dHistGenPtVsYVsMultV0AOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
1741 f3dHistGenPtVsYCMSVsMultV0AOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
1742 //ZNA
1743 f3dHistGenPtVsYVsMultZNAOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
1744 f3dHistGenPtVsYCMSVsMultZNAOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
1745 //TRK
1746 f3dHistGenPtVsYVsMultTRKOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
1747 f3dHistGenPtVsYCMSVsMultTRKOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
1748 //SPD
1749 f3dHistGenPtVsYVsMultSPDOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
1750 f3dHistGenPtVsYCMSVsMultSPDOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
76029adc 1751 }
9aefe7ef 1752 if( lCurrentParticlePrimary->GetPdgCode() == -3334 ){
76029adc 1753 lPtCurrentPart = lCurrentParticlePrimary->Pt();
1754 f3dHistGenPtVsYVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
da3539d8 1755 f3dHistGenPtVsYCMSVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
9aefe7ef 1756 //MultMC
1757 f3dHistGenPtVsYVsMultMCOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
1758 f3dHistGenPtVsYCMSVsMultMCOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
ea8c8e56 1759 //V0A
1760 f3dHistGenPtVsYVsMultV0AOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
1761 f3dHistGenPtVsYCMSVsMultV0AOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
1762 //ZNA
1763 f3dHistGenPtVsYVsMultZNAOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
1764 f3dHistGenPtVsYCMSVsMultZNAOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
1765 //TRK
1766 f3dHistGenPtVsYVsMultTRKOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
1767 f3dHistGenPtVsYCMSVsMultTRKOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
1768 //SPD
1769 f3dHistGenPtVsYVsMultSPDOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
1770 f3dHistGenPtVsYCMSVsMultSPDOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
76029adc 1771 }
9aefe7ef 1772 }
76029adc 1773 }
1774//----- End Loop on primary Xi, Omega ----------------------------------------------------------
1775
1776// ---> Set Variables to Zero again
1777// ---> Variable Definition
1778
76029adc 1779 lPtCurrentPart = 0;
1780
1781//------------------------------------------------
1782// Physics Selection
1783//------------------------------------------------
1784
1785 UInt_t maskIsSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
1786 Bool_t isSelected = 0;
1787 isSelected = (maskIsSelected & AliVEvent::kMB) == AliVEvent::kMB;
1788
2213f6fc 1789 //pA triggering: CINT7
1790 if( fkSwitchINT7 ) isSelected = (maskIsSelected & AliVEvent::kINT7) == AliVEvent::kINT7;
1791
76029adc 1792 //Standard Min-Bias Selection
1793 if ( ! isSelected ) {
1794 PostData(1, fListHist);
1795 PostData(2, fTreeCascade);
1796 return;
1797 }
1798
d8841e95 1799//------------------------------------------------
1800// Rerun cascade vertexer!
1801//------------------------------------------------
2213f6fc 1802/*
d8841e95 1803 lESDevent->ResetCascades();
1804 lESDevent->ResetV0s();
1805
1806 AliV0vertexer lV0vtxer;
1807 AliCascadeVertexer lCascVtxer;
1808
1809 lV0vtxer.SetDefaultCuts(fV0Sels);
1810 lCascVtxer.SetDefaultCuts(fCascSels);
1811
1812 lV0vtxer.Tracks2V0vertices(lESDevent);
1813 lCascVtxer.V0sTracks2CascadeVertices(lESDevent);
2213f6fc 1814*/
76029adc 1815//------------------------------------------------
1816// After Trigger Selection
1817//------------------------------------------------
1818
1819 lNumberOfV0s = lESDevent->GetNumberOfV0s();
1820
1821 //Set variable for filling tree afterwards!
1822 fHistV0MultiplicityForTrigEvt->Fill(lNumberOfV0s);
1823 fHistMultiplicityForTrigEvt->Fill ( lMultiplicity );
aa06bcc8 1824 fHistMultiplicityV0AForTrigEvt ->Fill( lMultiplicityV0A );
1825 fHistMultiplicityZNAForTrigEvt ->Fill( lMultiplicityZNA );
1826 fHistMultiplicityTRKForTrigEvt ->Fill( lMultiplicityTRK );
1827 fHistMultiplicitySPDForTrigEvt ->Fill( lMultiplicitySPD );
76029adc 1828
1829//------------------------------------------------
1830// Getting: Primary Vertex + MagField Info
1831//------------------------------------------------
1832
1833 const AliESDVertex *lPrimaryTrackingESDVtx = lESDevent->GetPrimaryVertexTracks();
1834 // get the vtx stored in ESD found with tracks
1835 lPrimaryTrackingESDVtx->GetXYZ( lTrkgPrimaryVtxPos );
1836
1837 const AliESDVertex *lPrimaryBestESDVtx = lESDevent->GetPrimaryVertex();
1838 // get the best primary vertex available for the event
1839 // As done in AliCascadeVertexer, we keep the one which is the best one available.
1840 // between : Tracking vertex > SPD vertex > TPC vertex > default SPD vertex
1841 // This one will be used for next calculations (DCA essentially)
1842 lPrimaryBestESDVtx->GetXYZ( lBestPrimaryVtxPos );
1843
1844 Double_t lPrimaryVtxPosition[3];
1845 const AliVVertex *primaryVtx = lESDevent->GetPrimaryVertex();
1846 lPrimaryVtxPosition[0] = primaryVtx->GetX();
1847 lPrimaryVtxPosition[1] = primaryVtx->GetY();
1848 lPrimaryVtxPosition[2] = primaryVtx->GetZ();
1849 fHistPVx->Fill( lPrimaryVtxPosition[0] );
1850 fHistPVy->Fill( lPrimaryVtxPosition[1] );
1851 fHistPVz->Fill( lPrimaryVtxPosition[2] );
1852
ab47349e 1853 //------------------------------------------------
1854 // Primary Vertex Requirements Section:
1855 // ---> pp and PbPb: Only requires |z|<10cm
1856 // ---> pPb: all requirements checked at this stage
1857 //------------------------------------------------
1858
1859 //Roberto's PV selection criteria, implemented 17th April 2013
1860
1861 /* vertex selection */
1862 Bool_t fHasVertex = kFALSE;
1863
1864 const AliESDVertex *vertex = lESDevent->GetPrimaryVertexTracks();
1865 if (vertex->GetNContributors() < 1) {
1866 vertex = lESDevent->GetPrimaryVertexSPD();
1867 if (vertex->GetNContributors() < 1) fHasVertex = kFALSE;
1868 else fHasVertex = kTRUE;
1869 TString vtxTyp = vertex->GetTitle();
1870 Double_t cov[6]={0};
1871 vertex->GetCovarianceMatrix(cov);
1872 Double_t zRes = TMath::Sqrt(cov[5]);
1873 if (vtxTyp.Contains("vertexer:Z") && (zRes>0.25)) fHasVertex = kFALSE;
1874 }
1875 else fHasVertex = kTRUE;
1876
1877 //Is First event in chunk rejection: Still present!
1878 if(fkpAVertexSelection==kTRUE && fHasVertex == kFALSE) {
1879 AliWarning("Pb / | PV does not satisfy selection criteria!");
2add50c1 1880 PostData(1, fListHist);
1881 PostData(2, fTreeCascade);
1882 return;
1883 }
ab47349e 1884
1885 //Is First event in chunk rejection: Still present!
2add50c1 1886 if(fkpAVertexSelection==kTRUE && fUtils->IsFirstEventInChunk(lESDevent)) {
1887 AliWarning("Pb / | This is the first event in the chunk!");
1888 PostData(1, fListHist);
1889 PostData(2, fTreeCascade);
1890 return;
1891 }
ab47349e 1892
1893 //17 April Fix: Always do primary vertex Z selection, after pA vertex selection from Roberto
1894 if(TMath::Abs(lBestPrimaryVtxPos[2]) > 10.0) {
1895 AliWarning("Pb / | Z position of Best Prim Vtx | > 10.0 cm ... return !");
2add50c1 1896 PostData(1, fListHist);
1897 PostData(2, fTreeCascade);
1898 return;
1899 }
1900
1901 lMagneticField = lESDevent->GetMagneticField( );
1902 fHistV0MultiplicityForSelEvt ->Fill( lNumberOfV0s );
1903 fHistMultiplicity->Fill(lMultiplicity);
aa06bcc8 1904 fHistMultiplicityV0A->Fill(lMultiplicityV0A);
1905 fHistMultiplicityZNA->Fill(lMultiplicityZNA);
1906 fHistMultiplicityTRK->Fill(lMultiplicityTRK);
1907 fHistMultiplicitySPD->Fill(lMultiplicitySPD);
76029adc 1908
1909//------------------------------------------------
1910// SKIP: Events with well-established PVtx
1911//------------------------------------------------
1912
1913 const AliESDVertex *lPrimaryTrackingESDVtxCheck = lESDevent->GetPrimaryVertexTracks();
1914 const AliESDVertex *lPrimarySPDVtx = lESDevent->GetPrimaryVertexSPD();
2add50c1 1915 if (!lPrimarySPDVtx->GetStatus() && !lPrimaryTrackingESDVtxCheck->GetStatus() && fkpAVertexSelection==kFALSE ){
76029adc 1916 AliWarning("Pb / No SPD prim. vertex nor prim. Tracking vertex ... return !");
1917 PostData(1, fListHist);
1918 PostData(2, fTreeCascade);
1919 return;
1920 }
1921 fHistV0MultiplicityForSelEvtNoTPCOnly ->Fill( lNumberOfV0s );
1922 fHistMultiplicityNoTPCOnly->Fill(lMultiplicity);
aa06bcc8 1923 fHistMultiplicityV0ANoTPCOnly->Fill(lMultiplicityV0A);
1924 fHistMultiplicityZNANoTPCOnly->Fill(lMultiplicityZNA);
1925 fHistMultiplicityTRKNoTPCOnly->Fill(lMultiplicityTRK);
1926 fHistMultiplicitySPDNoTPCOnly->Fill(lMultiplicitySPD);
76029adc 1927
1928//------------------------------------------------
1929// Pileup Rejection Studies
1930//------------------------------------------------
1931
1932 // FIXME : quality selection regarding pile-up rejection
1933 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
1934 AliWarning("Pb / This is tagged as Pileup from SPD... return !");
1935 PostData(1, fListHist);
1936 PostData(2, fTreeCascade);
1937 return;
1938 }
1939 fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup ->Fill( lNumberOfV0s );
1940 fHistMultiplicityNoTPCOnlyNoPileup->Fill(lMultiplicity);
aa06bcc8 1941 fHistMultiplicityV0ANoTPCOnlyNoPileup->Fill(lMultiplicityV0A);
1942 fHistMultiplicityZNANoTPCOnlyNoPileup->Fill(lMultiplicityZNA);
1943 fHistMultiplicityTRKNoTPCOnlyNoPileup->Fill(lMultiplicityTRK);
1944 fHistMultiplicitySPDNoTPCOnlyNoPileup->Fill(lMultiplicitySPD);
76029adc 1945
1946 //Do control histograms without the IsFromVertexerZ events, but consider them in analysis...
1947 if( ! (lESDevent->GetPrimaryVertex()->IsFromVertexerZ() ) ){
1948 fHistPVxAnalysis->Fill( lPrimaryVtxPosition[0] );
1949 fHistPVyAnalysis->Fill( lPrimaryVtxPosition[1] );
1950 fHistPVzAnalysis->Fill( lPrimaryVtxPosition[2] );
1951 }
1952
1953//------------------------------------------------
1954// stack loop starts here
1955//------------------------------------------------
1956
1957//----- Loop on primary Xi, Omega --------------------------------------------------------------
1958 for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < lNbMCPrimary; iCurrentLabelStack++)
1959 {// This is the begining of the loop on primaries
1960
1961 TParticle* lCurrentParticlePrimary = 0x0;
1962 lCurrentParticlePrimary = lMCstack->Particle( iCurrentLabelStack );
1963 if(!lCurrentParticlePrimary){
1964 Printf("Cascade loop %d - MC TParticle pointer to current stack particle = 0x0 ! Skip ...\n", iCurrentLabelStack );
1965 continue;
1966 }
1967 if ( TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3312 || TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3334 ) {
1968 Double_t lRapXiMCPrimary = -100;
1969 if( (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) != 0 ) {
1970 if ( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) !=0 ){
1971 lRapXiMCPrimary = 0.5*TMath::Log( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) );
1972 }
1973 }
1974
1975 //=================================================================================
1976 // Xi Histograms
1977 if( lCurrentParticlePrimary->GetPdgCode() == 3312 ){
1978 lPtCurrentPart = lCurrentParticlePrimary->Pt();
1979 f3dHistGenSelectedPtVsYVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
da3539d8 1980 f3dHistGenSelectedPtVsYCMSVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
9aefe7ef 1981 //MultMC
1982 f3dHistGenSelectedPtVsYVsMultMCXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
1983 f3dHistGenSelectedPtVsYCMSVsMultMCXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
ea8c8e56 1984 //V0A
1985 f3dHistGenSelectedPtVsYVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
1986 f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
1987 //ZNA
1988 f3dHistGenSelectedPtVsYVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
1989 f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
1990 //TRK
1991 f3dHistGenSelectedPtVsYVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
1992 f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
1993 //SPD
1994 f3dHistGenSelectedPtVsYVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
1995 f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
76029adc 1996 }
9aefe7ef 1997 if( lCurrentParticlePrimary->GetPdgCode() == -3312 ){
76029adc 1998 lPtCurrentPart = lCurrentParticlePrimary->Pt();
1999 f3dHistGenSelectedPtVsYVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
da3539d8 2000 f3dHistGenSelectedPtVsYCMSVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
9aefe7ef 2001 //MultMC
2002 f3dHistGenSelectedPtVsYVsMultMCXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
2003 f3dHistGenSelectedPtVsYCMSVsMultMCXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
ea8c8e56 2004 //V0A
2005 f3dHistGenSelectedPtVsYVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
2006 f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2007 //ZNA
2008 f3dHistGenSelectedPtVsYVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
2009 f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
2010 //TRK
2011 f3dHistGenSelectedPtVsYVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
2012 f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
2013 //SPD
2014 f3dHistGenSelectedPtVsYVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
2015 f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
76029adc 2016 }
2017 // Omega Histograms
2018 if( lCurrentParticlePrimary->GetPdgCode() == 3334 ){
2019 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2020 f3dHistGenSelectedPtVsYVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
da3539d8 2021 f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
9aefe7ef 2022 //MultMC
2023 f3dHistGenSelectedPtVsYVsMultMCOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
2024 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
ea8c8e56 2025 //V0A
2026 f3dHistGenSelectedPtVsYVsMultV0AOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
2027 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2028 //ZNA
2029 f3dHistGenSelectedPtVsYVsMultZNAOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
2030 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
2031 //TRK
2032 f3dHistGenSelectedPtVsYVsMultTRKOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
2033 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
2034 //SPD
2035 f3dHistGenSelectedPtVsYVsMultSPDOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
2036 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
76029adc 2037 }
9aefe7ef 2038 if( lCurrentParticlePrimary->GetPdgCode() == -3334 ){
76029adc 2039 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2040 f3dHistGenSelectedPtVsYVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
da3539d8 2041 f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
9aefe7ef 2042 //MultMC
2043 f3dHistGenSelectedPtVsYVsMultMCOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lNumberOfCharged);
2044 f3dHistGenSelectedPtVsYCMSVsMultMCOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lNumberOfCharged);
ea8c8e56 2045 //V0A
2046 f3dHistGenSelectedPtVsYVsMultV0AOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
2047 f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2048 //ZNA
2049 f3dHistGenSelectedPtVsYVsMultZNAOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
2050 f3dHistGenSelectedPtVsYCMSVsMultZNAOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
2051 //TRK
2052 f3dHistGenSelectedPtVsYVsMultTRKOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
2053 f3dHistGenSelectedPtVsYCMSVsMultTRKOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
2054 //SPD
2055 f3dHistGenSelectedPtVsYVsMultSPDOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
2056 f3dHistGenSelectedPtVsYCMSVsMultSPDOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
76029adc 2057 }
9aefe7ef 2058 }
76029adc 2059 }
2060//----- End Loop on primary Xi, Omega ----------------------------------------------------------
2061
2062//------------------------------------------------
2063// MAIN CASCADE LOOP STARTS HERE
2064//------------------------------------------------
2065// Code Credit: Antonin Maire (thanks^100)
2066// ---> This is an adaptation
2067
2068 Long_t ncascades = 0;
2069 ncascades = lESDevent->GetNumberOfCascades();
2070
2071
2072 for (Int_t iXi = 0; iXi < ncascades; iXi++){
2073 //------------------------------------------------
2074 // Initializations
2075 //------------------------------------------------
2076 //Double_t lTrkgPrimaryVtxRadius3D = -500.0;
2077 //Double_t lBestPrimaryVtxRadius3D = -500.0;
2078
2079 // - 1st part of initialisation : variables needed to store AliESDCascade data members
2080 Double_t lEffMassXi = 0. ;
2081 //Double_t lChi2Xi = -1. ;
2082 Double_t lDcaXiDaughters = -1. ;
2083 Double_t lXiCosineOfPointingAngle = -1. ;
2084 Double_t lPosXi[3] = { -1000.0, -1000.0, -1000.0 };
2085 Double_t lXiRadius = -1000. ;
2086
2087 // - 2nd part of initialisation : Nbr of clusters within TPC for the 3 daughter cascade tracks
2088 Int_t lPosTPCClusters = -1; // For ESD only ...//FIXME : wait for availability in AOD
2089 Int_t lNegTPCClusters = -1; // For ESD only ...
2090 Int_t lBachTPCClusters = -1; // For ESD only ...
2091
2092 // - 3rd part of initialisation : about V0 part in cascades
2093 Double_t lInvMassLambdaAsCascDghter = 0.;
2094 //Double_t lV0Chi2Xi = -1. ;
2095 Double_t lDcaV0DaughtersXi = -1.;
2096
2097 Double_t lDcaBachToPrimVertexXi = -1., lDcaV0ToPrimVertexXi = -1.;
2098 Double_t lDcaPosToPrimVertexXi = -1.;
2099 Double_t lDcaNegToPrimVertexXi = -1.;
2100 Double_t lV0CosineOfPointingAngleXi = -1. ;
2101 Double_t lPosV0Xi[3] = { -1000. , -1000., -1000. }; // Position of VO coming from cascade
2102 Double_t lV0RadiusXi = -1000.0;
2103 Double_t lV0quality = 0.;
2104
2105 // - 4th part of initialisation : Effective masses
2106 Double_t lInvMassXiMinus = 0.;
2107 Double_t lInvMassXiPlus = 0.;
2108 Double_t lInvMassOmegaMinus = 0.;
2109 Double_t lInvMassOmegaPlus = 0.;
2110
2111 // - 6th part of initialisation : extra info for QA
2112 Double_t lXiMomX = 0. , lXiMomY = 0., lXiMomZ = 0.;
2113 Double_t lXiTransvMom = 0. ;
2114 Double_t lXiTransvMomMC= 0. ;
2115 Double_t lXiTotMom = 0. ;
2116
2117 Double_t lBachMomX = 0., lBachMomY = 0., lBachMomZ = 0.;
2118 //Double_t lBachTransvMom = 0.;
2119 //Double_t lBachTotMom = 0.;
2120
2121 fTreeCascVarNegNSigmaPion = -100;
2122 fTreeCascVarNegNSigmaProton = -100;
2123 fTreeCascVarPosNSigmaPion = -100;
2124 fTreeCascVarPosNSigmaProton = -100;
2125 fTreeCascVarBachNSigmaPion = -100;
2126 fTreeCascVarBachNSigmaKaon = -100;
2127
2128 Short_t lChargeXi = -2;
2129 //Double_t lV0toXiCosineOfPointingAngle = 0. ;
2130
2131 Double_t lRapXi = -20.0, lRapOmega = -20.0, lRapMC = -20.0; // lEta = -20.0, lTheta = 360., lPhi = 720. ;
2132 //Double_t lAlphaXi = -200., lPtArmXi = -200.0;
2133
2134 // -------------------------------------
2135 // II.ESD - Calculation Part dedicated to Xi vertices (ESD)
2136
2137 AliESDcascade *xi = lESDevent->GetCascade(iXi);
2138 if (!xi) continue;
2139
2140
2141 // - II.Step 1 : around primary vertex
2142 //-------------
2143 //lTrkgPrimaryVtxRadius3D = TMath::Sqrt( lTrkgPrimaryVtxPos[0] * lTrkgPrimaryVtxPos[0] +
2144 // lTrkgPrimaryVtxPos[1] * lTrkgPrimaryVtxPos[1] +
2145 // lTrkgPrimaryVtxPos[2] * lTrkgPrimaryVtxPos[2] );
2146
2147 //lBestPrimaryVtxRadius3D = TMath::Sqrt( lBestPrimaryVtxPos[0] * lBestPrimaryVtxPos[0] +
2148 // lBestPrimaryVtxPos[1] * lBestPrimaryVtxPos[1] +
2149 // lBestPrimaryVtxPos[2] * lBestPrimaryVtxPos[2] );
2150
2151 // - II.Step 2 : Assigning the necessary variables for specific AliESDcascade data members (ESD)
2152 //-------------
2153 lV0quality = 0.;
2154 xi->ChangeMassHypothesis(lV0quality , 3312); // default working hypothesis : cascade = Xi- decay
2155
2156 lEffMassXi = xi->GetEffMassXi();
2157 //lChi2Xi = xi->GetChi2Xi();
2158 lDcaXiDaughters = xi->GetDcaXiDaughters();
2159 lXiCosineOfPointingAngle = xi->GetCascadeCosineOfPointingAngle( lBestPrimaryVtxPos[0],
2160 lBestPrimaryVtxPos[1],
2161 lBestPrimaryVtxPos[2] );
2162 // Take care : the best available vertex should be used (like in AliCascadeVertexer)
2163
2164 xi->GetXYZcascade( lPosXi[0], lPosXi[1], lPosXi[2] );
2165 lXiRadius = TMath::Sqrt( lPosXi[0]*lPosXi[0] + lPosXi[1]*lPosXi[1] );
2166
2167 // - II.Step 3 : around the tracks : Bach + V0 (ESD)
2168 // ~ Necessary variables for ESDcascade data members coming from the ESDv0 part (inheritance)
2169 //-------------
2170
2171 UInt_t lIdxPosXi = (UInt_t) TMath::Abs( xi->GetPindex() );
2172 UInt_t lIdxNegXi = (UInt_t) TMath::Abs( xi->GetNindex() );
2173 UInt_t lBachIdx = (UInt_t) TMath::Abs( xi->GetBindex() );
2174 // Care track label can be negative in MC production (linked with the track quality)
2175 // However = normally, not the case for track index ...
2176
2177 // FIXME : rejection of a double use of a daughter track (nothing but just a crosscheck of what is done in the cascade vertexer)
2178 if(lBachIdx == lIdxNegXi) {
2179 AliWarning("Pb / Idx(Bach. track) = Idx(Neg. track) ... continue!"); continue;
2180 }
2181 if(lBachIdx == lIdxPosXi) {
2182 AliWarning("Pb / Idx(Bach. track) = Idx(Pos. track) ... continue!"); continue;
2183 }
2184
2185 AliESDtrack *pTrackXi = lESDevent->GetTrack( lIdxPosXi );
2186 AliESDtrack *nTrackXi = lESDevent->GetTrack( lIdxNegXi );
2187 AliESDtrack *bachTrackXi = lESDevent->GetTrack( lBachIdx );
2188
2189 if (!pTrackXi || !nTrackXi || !bachTrackXi ) {
2190 AliWarning("ERROR: Could not retrieve one of the 3 ESD daughter tracks of the cascade ...");
2191 continue;
2192 }
2193
2194 fTreeCascVarPosEta = pTrackXi->Eta();
2195 fTreeCascVarNegEta = nTrackXi->Eta();
2196 fTreeCascVarBachEta = bachTrackXi->Eta();
2197
2198 //------------------------------------------------
2199 // TPC dEdx information
2200 //------------------------------------------------
2201 fTreeCascVarNegNSigmaPion = fPIDResponse->NumberOfSigmasTPC( nTrackXi, AliPID::kPion );
2202 fTreeCascVarNegNSigmaProton = fPIDResponse->NumberOfSigmasTPC( nTrackXi, AliPID::kProton );
2203 fTreeCascVarPosNSigmaPion = fPIDResponse->NumberOfSigmasTPC( pTrackXi, AliPID::kPion );
2204 fTreeCascVarPosNSigmaProton = fPIDResponse->NumberOfSigmasTPC( pTrackXi, AliPID::kProton );
2205 fTreeCascVarBachNSigmaPion = fPIDResponse->NumberOfSigmasTPC( bachTrackXi, AliPID::kPion );
2206 fTreeCascVarBachNSigmaKaon = fPIDResponse->NumberOfSigmasTPC( bachTrackXi, AliPID::kKaon );
2207
2208 //------------------------------------------------
2209 // TPC Number of clusters info
2210 // --- modified to save the smallest number
2211 // --- of TPC clusters for the 3 tracks
2212 //------------------------------------------------
2213
2214 lPosTPCClusters = pTrackXi->GetTPCNcls();
2215 lNegTPCClusters = nTrackXi->GetTPCNcls();
2216 lBachTPCClusters = bachTrackXi->GetTPCNcls();
2217
2218 // 1 - Poor quality related to TPCrefit
2219 ULong_t pStatus = pTrackXi->GetStatus();
2220 ULong_t nStatus = nTrackXi->GetStatus();
2221 ULong_t bachStatus = bachTrackXi->GetStatus();
2222 if ((pStatus&AliESDtrack::kTPCrefit) == 0) { AliWarning("Pb / V0 Pos. track has no TPCrefit ... continue!"); continue; }
2223 if ((nStatus&AliESDtrack::kTPCrefit) == 0) { AliWarning("Pb / V0 Neg. track has no TPCrefit ... continue!"); continue; }
2224 if ((bachStatus&AliESDtrack::kTPCrefit) == 0) { AliWarning("Pb / Bach. track has no TPCrefit ... continue!"); continue; }
2225 // 2 - Poor quality related to TPC clusters: lowest cut of 70 clusters
2226 if(lPosTPCClusters < 70) { AliWarning("Pb / V0 Pos. track has less than 70 TPC clusters ... continue!"); continue; }
2227 if(lNegTPCClusters < 70) { AliWarning("Pb / V0 Neg. track has less than 70 TPC clusters ... continue!"); continue; }
2228 if(lBachTPCClusters < 70) { AliWarning("Pb / Bach. track has less than 70 TPC clusters ... continue!"); continue; }
2229 Int_t leastnumberofclusters = 1000;
2230 if( lPosTPCClusters < leastnumberofclusters ) leastnumberofclusters = lPosTPCClusters;
2231 if( lNegTPCClusters < leastnumberofclusters ) leastnumberofclusters = lNegTPCClusters;
2232 if( lBachTPCClusters < leastnumberofclusters ) leastnumberofclusters = lBachTPCClusters;
2233
2234 lInvMassLambdaAsCascDghter = xi->GetEffMass();
2235 // This value shouldn't change, whatever the working hyp. is : Xi-, Xi+, Omega-, Omega+
2236 lDcaV0DaughtersXi = xi->GetDcaV0Daughters();
2237 //lV0Chi2Xi = xi->GetChi2V0();
2238
2239 lV0CosineOfPointingAngleXi = xi->GetV0CosineOfPointingAngle( lBestPrimaryVtxPos[0],
2240 lBestPrimaryVtxPos[1],
2241 lBestPrimaryVtxPos[2] );
2242
2243 lDcaV0ToPrimVertexXi = xi->GetD( lBestPrimaryVtxPos[0],
2244 lBestPrimaryVtxPos[1],
2245 lBestPrimaryVtxPos[2] );
2246
2247 lDcaBachToPrimVertexXi = TMath::Abs( bachTrackXi->GetD( lBestPrimaryVtxPos[0],
2248 lBestPrimaryVtxPos[1],
2249 lMagneticField ) );
2250 // Note : AliExternalTrackParam::GetD returns an algebraic value ...
2251
2252 xi->GetXYZ( lPosV0Xi[0], lPosV0Xi[1], lPosV0Xi[2] );
2253 lV0RadiusXi = TMath::Sqrt( lPosV0Xi[0]*lPosV0Xi[0] + lPosV0Xi[1]*lPosV0Xi[1] );
2254
2255 lDcaPosToPrimVertexXi = TMath::Abs( pTrackXi ->GetD( lBestPrimaryVtxPos[0],
2256 lBestPrimaryVtxPos[1],
2257 lMagneticField ) );
2258
2259 lDcaNegToPrimVertexXi = TMath::Abs( nTrackXi ->GetD( lBestPrimaryVtxPos[0],
2260 lBestPrimaryVtxPos[1],
2261 lMagneticField ) );
2262
2263 // - II.Step 4 : around effective masses (ESD)
2264 // ~ change mass hypotheses to cover all the possibilities : Xi-/+, Omega -/+
2265
2266 if( bachTrackXi->Charge() < 0 ) {
2267 lV0quality = 0.;
2268 xi->ChangeMassHypothesis(lV0quality , 3312);
2269 // Calculate the effective mass of the Xi- candidate.
2270 // pdg code 3312 = Xi-
2271 lInvMassXiMinus = xi->GetEffMassXi();
2272
2273 lV0quality = 0.;
2274 xi->ChangeMassHypothesis(lV0quality , 3334);
2275 // Calculate the effective mass of the Xi- candidate.
2276 // pdg code 3334 = Omega-
2277 lInvMassOmegaMinus = xi->GetEffMassXi();
2278
2279 lV0quality = 0.;
2280 xi->ChangeMassHypothesis(lV0quality , 3312); // Back to default hyp.
2281 }// end if negative bachelor
2282
2283
2284 if( bachTrackXi->Charge() > 0 ){
2285 lV0quality = 0.;
2286 xi->ChangeMassHypothesis(lV0quality , -3312);
2287 // Calculate the effective mass of the Xi+ candidate.
2288 // pdg code -3312 = Xi+
2289 lInvMassXiPlus = xi->GetEffMassXi();
2290
2291 lV0quality = 0.;
2292 xi->ChangeMassHypothesis(lV0quality , -3334);
2293 // Calculate the effective mass of the Xi+ candidate.
2294 // pdg code -3334 = Omega+
2295 lInvMassOmegaPlus = xi->GetEffMassXi();
2296
2297 lV0quality = 0.;
2298 xi->ChangeMassHypothesis(lV0quality , -3312); // Back to "default" hyp.
2299 }// end if positive bachelor
2300 // - II.Step 6 : extra info for QA (ESD)
2301 // miscellaneous pieces of info that may help regarding data quality assessment.
2302 //-------------
2303
2304 xi->GetPxPyPz( lXiMomX, lXiMomY, lXiMomZ );
2305 lXiTransvMom = TMath::Sqrt( lXiMomX*lXiMomX + lXiMomY*lXiMomY );
2306 lXiTotMom = TMath::Sqrt( lXiMomX*lXiMomX + lXiMomY*lXiMomY + lXiMomZ*lXiMomZ );
2307
2308 xi->GetBPxPyPz( lBachMomX, lBachMomY, lBachMomZ );
2309 //lBachTransvMom = TMath::Sqrt( lBachMomX*lBachMomX + lBachMomY*lBachMomY );
2310 //lBachTotMom = TMath::Sqrt( lBachMomX*lBachMomX + lBachMomY*lBachMomY + lBachMomZ*lBachMomZ );
2311
2312 lChargeXi = xi->Charge();
2313
2314 //lV0toXiCosineOfPointingAngle = xi->GetV0CosineOfPointingAngle( lPosXi[0], lPosXi[1], lPosXi[2] );
2315
2316 lRapXi = xi->RapXi();
2317 lRapOmega = xi->RapOmega();
2318 //lEta = xi->Eta();
2319 //lTheta = xi->Theta() *180.0/TMath::Pi();
2320 //lPhi = xi->Phi() *180.0/TMath::Pi();
2321 //lAlphaXi = xi->AlphaXi();
2322 //lPtArmXi = xi->PtArmXi();
2323
2324//------------------------------------------------
2325// Associate Cascade Candidates to Monte Carlo!
2326//------------------------------------------------
2327
2328//Warning: Not using Continues... Need to fill tree later!
2329
2330 Int_t lPDGCodeCascade = 0;
2331
2332 Int_t lPID_BachMother = 0;
2333 Int_t lPID_NegMother = 0;
2334 Int_t lPID_PosMother = 0;
2335
2336
2337 fTreeCascVarPIDPositive = 0;
2338 fTreeCascVarPIDNegative = 0;
2339 fTreeCascVarPIDBachelor = 0;
2340
2341
2342 if(fDebug > 5)
2343 cout << "MC EventNumber : " << lMCevent->Header()->GetEvent()
2344 << " / MC event Number in Run : " << lMCevent->Header()->GetEventNrInRun() << endl;
2345
2346 // - Step 4.1 : level of the V0 daughters
2347
2348//----------------------------------------
2349// Regular MC ASSOCIATION STARTS HERE
2350//----------------------------------------
2351
2352 Int_t lblPosV0Dghter = (Int_t) TMath::Abs( pTrackXi->GetLabel() );
2353 // Abs value = needed ! question of quality track association ...
2354 Int_t lblNegV0Dghter = (Int_t) TMath::Abs( nTrackXi->GetLabel() );
2355 Int_t lblBach = (Int_t) TMath::Abs( bachTrackXi->GetLabel() );
2356
2357 TParticle* mcPosV0Dghter = lMCstack->Particle( lblPosV0Dghter );
2358 TParticle* mcNegV0Dghter = lMCstack->Particle( lblNegV0Dghter );
2359 TParticle* mcBach = lMCstack->Particle( lblBach );
2360
2361 fTreeCascVarPosTransMomMC = mcPosV0Dghter->Pt();
2362 fTreeCascVarNegTransMomMC = mcNegV0Dghter->Pt();
2363
2364 fTreeCascVarPIDPositive = mcPosV0Dghter -> GetPdgCode();
2365 fTreeCascVarPIDNegative = mcNegV0Dghter -> GetPdgCode();
2366 fTreeCascVarPIDBachelor = mcBach->GetPdgCode();
2367
2368 // - Step 4.2 : level of the Xi daughters
2369
2370 Int_t lblMotherPosV0Dghter = mcPosV0Dghter->GetFirstMother() ;
2371 Int_t lblMotherNegV0Dghter = mcNegV0Dghter->GetFirstMother();
2372
2373 //Rather uncivilized: Open brackets for each 'continue'
2374 if(! (lblMotherPosV0Dghter != lblMotherNegV0Dghter) ) { // same mother
2375 if(! (lblMotherPosV0Dghter < 0) ) { // mother != primary (!= -1)
2376 if(! (lblMotherNegV0Dghter < 0) ) {
2377
2378 // mothers = Lambda candidate ... a priori
2379
2380 TParticle* mcMotherPosV0Dghter = lMCstack->Particle( lblMotherPosV0Dghter );
2381 TParticle* mcMotherNegV0Dghter = lMCstack->Particle( lblMotherNegV0Dghter );
2382
2383 // - Step 4.3 : level of Xi candidate
2384
2385 Int_t lblGdMotherPosV0Dghter = mcMotherPosV0Dghter->GetFirstMother() ;
2386 Int_t lblGdMotherNegV0Dghter = mcMotherNegV0Dghter->GetFirstMother() ;
2387
2388 if(! (lblGdMotherPosV0Dghter != lblGdMotherNegV0Dghter) ) {
2389 if(! (lblGdMotherPosV0Dghter < 0) ) { // primary lambda ...
2390 if(! (lblGdMotherNegV0Dghter < 0) ) { // primary lambda ...
2391
2392 // Gd mothers = Xi candidate ... a priori
2393
2394 TParticle* mcGdMotherPosV0Dghter = lMCstack->Particle( lblGdMotherPosV0Dghter );
2395 TParticle* mcGdMotherNegV0Dghter = lMCstack->Particle( lblGdMotherNegV0Dghter );
2396
2397 Int_t lblMotherBach = (Int_t) TMath::Abs( mcBach->GetFirstMother() );
2398
2399 // if( lblMotherBach != lblGdMotherPosV0Dghter ) continue; //same mother for bach and V0 daughters
2400 if(!(lblMotherBach != lblGdMotherPosV0Dghter)) { //same mother for bach and V0 daughters
2401
2402 TParticle* mcMotherBach = lMCstack->Particle( lblMotherBach );
2403
2404 lPID_BachMother = mcMotherBach->GetPdgCode();
2405 lPID_NegMother = mcGdMotherPosV0Dghter->GetPdgCode();
2406 lPID_PosMother = mcGdMotherNegV0Dghter->GetPdgCode();
2407
2408 if(lPID_BachMother==lPID_NegMother && lPID_BachMother==lPID_PosMother){
2409 lPDGCodeCascade = lPID_BachMother;
2410 lXiTransvMomMC = mcMotherBach->Pt();
2411 if ( (mcMotherBach->Energy() + mcMotherBach->Pz()) / (mcMotherBach->Energy() - mcMotherBach->Pz() +1.e-13) !=0 ){
2412 lRapMC = 0.5*TMath::Log( (mcMotherBach->Energy() + mcMotherBach->Pz()) / (mcMotherBach->Energy() - mcMotherBach->Pz() +1.e-13) );
2413 }
2414 }
2415
2416 }}}}}}} //Ends all conditionals above...
2417
2418 //----------------------------------------
2419 // Regular MC ASSOCIATION ENDS HERE
2420 //----------------------------------------
2421
2422 //------------------------------------------------
2423 // Set Variables for adding to tree
2424 //------------------------------------------------
2425
2426/* 1*/ fTreeCascVarCharge = lChargeXi;
2427/* 2*/ if(lInvMassXiMinus!=0) fTreeCascVarMassAsXi = lInvMassXiMinus;
2428/* 2*/ if(lInvMassXiPlus!=0) fTreeCascVarMassAsXi = lInvMassXiPlus;
2429/* 3*/ if(lInvMassOmegaMinus!=0) fTreeCascVarMassAsOmega = lInvMassOmegaMinus;
2430/* 3*/ if(lInvMassOmegaPlus!=0) fTreeCascVarMassAsOmega = lInvMassOmegaPlus;
2431/* 4*/ fTreeCascVarPt = lXiTransvMom;
2432/* 4*/ fTreeCascVarPtMC = lXiTransvMomMC;
2433/* 5*/ fTreeCascVarRapXi = lRapXi ;
2434/* 5*/ fTreeCascVarRapMC = lRapMC ;
2435/* 6*/ fTreeCascVarRapOmega = lRapOmega ;
2436/* 7*/ fTreeCascVarDCACascDaughters = lDcaXiDaughters;
2437/* 8*/ fTreeCascVarDCABachToPrimVtx = lDcaBachToPrimVertexXi;
2438/* 9*/ fTreeCascVarDCAV0Daughters = lDcaV0DaughtersXi;
2439/*10*/ fTreeCascVarDCAV0ToPrimVtx = lDcaV0ToPrimVertexXi;
2440/*11*/ fTreeCascVarDCAPosToPrimVtx = lDcaPosToPrimVertexXi;
2441/*12*/ fTreeCascVarDCANegToPrimVtx = lDcaNegToPrimVertexXi;
2442/*13*/ fTreeCascVarCascCosPointingAngle = lXiCosineOfPointingAngle;
2443/*14*/ fTreeCascVarCascRadius = lXiRadius;
2444/*15*/ fTreeCascVarV0Mass = lInvMassLambdaAsCascDghter;
2445/*16*/ fTreeCascVarV0CosPointingAngle = lV0CosineOfPointingAngleXi;
2446/*17*/ fTreeCascVarV0Radius = lV0RadiusXi;
2447/*20*/ fTreeCascVarLeastNbrClusters = leastnumberofclusters;
2448/*21*/ fTreeCascVarMultiplicity = lMultiplicity; //multiplicity, whatever that may be
2449
2450/*23*/ fTreeCascVarDistOverTotMom = TMath::Sqrt(
2451 TMath::Power( lPosXi[0] - lBestPrimaryVtxPos[0] , 2) +
2452 TMath::Power( lPosXi[1] - lBestPrimaryVtxPos[1] , 2) +
2453 TMath::Power( lPosXi[2] - lBestPrimaryVtxPos[2] , 2)
2454 );
2455/*23*/ fTreeCascVarDistOverTotMom /= (lXiTotMom+1e-13);
2456/*24*/ //Not specified here, it has been set already (TRunNumber)
2457/*25*/ fTreeCascVarPID = lPDGCodeCascade;
2458
2459//------------------------------------------------
2460// Fill Tree!
2461//------------------------------------------------
2462
2463// The conditional is meant to decrease excessive
2464// memory usage! Be careful when loosening the
2465// cut!
2466
2467 //Xi Mass window: 150MeV wide
2468 //Omega mass window: 150MeV wide
2469
2470 if( (fTreeCascVarMassAsXi<1.32+0.075&&fTreeCascVarMassAsXi>1.32-0.075) ||
2471 (fTreeCascVarMassAsOmega<1.68+0.075&&fTreeCascVarMassAsOmega>1.68-0.075) ){
2472 fTreeCascade->Fill();
2473 }
2474
2475//------------------------------------------------
2476// Fill tree over.
2477//------------------------------------------------
2478
2479 }// end of the Cascade loop (ESD or AOD)
2480
2481 // Post output data.
2482 PostData(1, fListHist);
2483 PostData(2, fTreeCascade);
2484}
2485
2486//________________________________________________________________________
2487void AliAnalysisTaskExtractPerformanceCascade::Terminate(Option_t *)
2488{
2489 // Draw result to the screen
2490 // Called once at the end of the query
2491
2492 TList *cRetrievedList = 0x0;
2493 cRetrievedList = (TList*)GetOutputData(1);
2494 if(!cRetrievedList){
2495 Printf("ERROR - AliAnalysisTaskExtractCascade : ouput data container list not available\n");
2496 return;
2497 }
2498
2499 fHistV0MultiplicityForTrigEvt = dynamic_cast<TH1F*> ( cRetrievedList->FindObject("fHistV0MultiplicityForTrigEvt") );
2500 if (!fHistV0MultiplicityForTrigEvt) {
2501 Printf("ERROR - AliAnalysisTaskExtractCascade : fHistV0MultiplicityForTrigEvt not available");
2502 return;
2503 }
2504
2505 TCanvas *canCheck = new TCanvas("AliAnalysisTaskExtractCascade","V0 Multiplicity",10,10,510,510);
2506 canCheck->cd(1)->SetLogy();
2507
2508 fHistV0MultiplicityForTrigEvt->SetMarkerStyle(22);
2509 fHistV0MultiplicityForTrigEvt->DrawCopy("E");
2510}
2511
2512//----------------------------------------------------------------------------
2513
2514Double_t AliAnalysisTaskExtractPerformanceCascade::MyRapidity(Double_t rE, Double_t rPz) const
2515{
2516 // Local calculation for rapidity
2517 Double_t ReturnValue = -100;
2518 if( (rE-rPz+1.e-13) != 0 && (rE+rPz) != 0 ){
2519 ReturnValue = 0.5*TMath::Log((rE+rPz)/(rE-rPz+1.e-13));
2520 }
2521 return ReturnValue;
2522}