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