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