]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/STRANGENESS/LambdaK0/AliAnalysisTaskExtractPerformanceV0.cxx
Modification to allow switching on and off pileup rejection for cross-checking false...
[u/mrichter/AliRoot.git] / PWGLF / STRANGENESS / LambdaK0 / AliAnalysisTaskExtractPerformanceV0.cxx
CommitLineData
bcb6ffdb 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
28// 2. Loop over stack to find V0s, fill TH3Fs "PrimRawPt"s for Efficiency
29// 3. Perform Physics Selection
30// 4. Perform Primary Vertex |z|<10cm selection
31// 5. Perform Primary Vertex NoTPCOnly vertexing selection (>0 contrib.)
32// 6. Perform Pileup Rejection
33// 7. Analysis Loops:
34// 7a. Fill TH3Fs "PrimAnalysisPt" for control purposes only
35// 7b. Fill TTree object with V0 information, candidates
36//
37// Please Report Any Bugs!
38//
39// --- David Dobrigkeit Chinellato
40// (david.chinellato@gmail.com)
41//
42// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
43
44class TTree;
45class TParticle;
46class TVector3;
47
48//class AliMCEventHandler;
49//class AliMCEvent;
50//class AliStack;
51
52class AliESDVertex;
53class AliAODVertex;
54class AliESDv0;
55class AliAODv0;
56
57#include <Riostream.h>
58#include "TList.h"
59#include "TH1.h"
60#include "TH2.h"
61#include "TH3.h"
62#include "TFile.h"
63#include "THnSparse.h"
64#include "TVector3.h"
65#include "TCanvas.h"
66#include "TMath.h"
67#include "TLegend.h"
68#include "AliLog.h"
69
70#include "AliESDEvent.h"
71#include "AliAODEvent.h"
72#include "AliV0vertexer.h"
73#include "AliCascadeVertexer.h"
74#include "AliESDpid.h"
75#include "AliESDtrack.h"
76#include "AliESDtrackCuts.h"
77#include "AliInputEventHandler.h"
78#include "AliAnalysisManager.h"
79#include "AliMCEventHandler.h"
80#include "AliMCEvent.h"
81#include "AliStack.h"
82
83#include "AliCFContainer.h"
84#include "AliMultiplicity.h"
85#include "AliAODMCParticle.h"
86#include "AliESDcascade.h"
87#include "AliAODcascade.h"
88#include "AliESDUtils.h"
7e81bb32 89#include "AliGenEventHeader.h"
bcb6ffdb 90
14ba3f35 91#include "AliAnalysisUtils.h"
bcb6ffdb 92#include "AliAnalysisTaskExtractPerformanceV0.h"
93
c64cb1f6 94using std::cout;
95using std::endl;
96
bcb6ffdb 97ClassImp(AliAnalysisTaskExtractPerformanceV0)
98
14ba3f35 99AliAnalysisTaskExtractPerformanceV0::AliAnalysisTaskExtractPerformanceV0()
100 : AliAnalysisTaskSE(), fListHistV0(0), fTree(0), fPIDResponse(0), fESDtrackCuts(0), fUtils(0),
548bd092 101 fkIsNuclear ( kFALSE ),
048f4f8f 102 fkSwitchINT7 ( kFALSE ),
548bd092 103 fkUseOnTheFly ( kFALSE ),
7f4db1cd 104 fkTakeAllTracks ( kFALSE ),
388b34d3 105 fpArapidityShift ( 0.465 ),
e039e6b3 106 fCentralityEstimator("V0M"),
87e78684 107 fkLightWeight ( kFALSE ),
108 fkFastOnly ( "" ),
14ba3f35 109 fkpAVertexSelection( kFALSE ),
af819bba 110 fkRunV0Vertexer( kFALSE ),
776ebcfc 111 fkRejectPileup ( kTRUE ),
85b81f83 112//------------------------------------------------
113// Tree Variables
114
115 fTreeVariablePrimaryStatus(0),
116 fTreeVariablePrimaryStatusMother(0),
117 fTreeVariableChi2V0(0),
118 fTreeVariableDcaV0Daughters(0),
119 fTreeVariableDcaV0ToPrimVertex(0),
120 fTreeVariableDcaPosToPrimVertex(0),
121 fTreeVariableDcaNegToPrimVertex(0),
122 fTreeVariableV0CosineOfPointingAngle(0),
123 fTreeVariableV0Radius(0),
124 fTreeVariablePt(0),
125 fTreeVariablePtMC(0),
126 fTreeVariableRapK0Short(0),
127 fTreeVariableRapLambda(0),
128 fTreeVariableRapMC(0),
129 fTreeVariableInvMassK0s(0),
130 fTreeVariableInvMassLambda(0),
131 fTreeVariableInvMassAntiLambda(0),
132 fTreeVariableAlphaV0(0),
133 fTreeVariablePtArmV0(0),
134 fTreeVariableNegTotMomentum(0),
135 fTreeVariablePosTotMomentum(0),
136 fTreeVariableNegTransvMomentum(0),
137 fTreeVariablePosTransvMomentum(0),
138 fTreeVariableNegTransvMomentumMC(0),
139 fTreeVariablePosTransvMomentumMC(0),
140
141 fTreeVariableNSigmasPosProton(0),
142 fTreeVariableNSigmasPosPion(0),
143 fTreeVariableNSigmasNegProton(0),
144 fTreeVariableNSigmasNegPion(0),
145
146 fTreeVariablePtMother(0),
147 fTreeVariableV0CreationRadius(0),
148 fTreeVariablePID(0),
149 fTreeVariablePIDPositive(0),
150 fTreeVariablePIDNegative(0),
151 fTreeVariablePIDMother(0),
152 fTreeVariableIndexStatus(0),
153 fTreeVariableIndexStatusMother(0),
154
155 fTreeVariableRunNumber(0),
156 fTreeVariableEventNumber(0),
157
158 fTreeVariableDistOverTotMom(0),
159
160 fTreeVariablePosEta(0),
161 fTreeVariableNegEta(0),
162
163 fTreeVariableVertexZ(0),
164
165 fTreeVariableLeastNbrCrossedRows(0),
166 fTreeVariableLeastRatioCrossedRowsOverFindable(0),
5d43de53 167
85b81f83 168 fTreeVariableMultiplicity(0),
5d43de53 169 fTreeVariableMultiplicityV0A(0),
170 fTreeVariableMultiplicityZNA(0),
171 fTreeVariableMultiplicityTRK(0),
172 fTreeVariableMultiplicitySPD(0),
85b81f83 173 fTreeVariableMultiplicityMC(0),
174
175 fTreeVariableV0x(0),
176 fTreeVariableV0y(0),
177 fTreeVariableV0z(0),
178
179 fTreeVariableV0Px(0),
180 fTreeVariableV0Py(0),
181 fTreeVariableV0Pz(0),
182
183 fTreeVariableMCV0x(0),
184 fTreeVariableMCV0y(0),
185 fTreeVariableMCV0z(0),
186
187 fTreeVariableMCV0Px(0),
188 fTreeVariableMCV0Py(0),
189 fTreeVariableMCV0Pz(0),
190
191 fTreeVariablePVx(0),
192 fTreeVariablePVy(0),
193 fTreeVariablePVz(0),
194
195 fTreeVariableMCPVx(0),
196 fTreeVariableMCPVy(0),
197 fTreeVariableMCPVz(0),
198
df661cb7 199 fTreeVariableIsNonInjected(0),
200
f068724a 201 fTreeVariableNegTrackStatus(0),
202 fTreeVariablePosTrackStatus(0),
203
a5ff2395 204 fTreeVariableNegPhysicalStatus(0),
205 fTreeVariablePosPhysicalStatus(0),
206
bcb6ffdb 207//------------------------------------------------
208// HISTOGRAMS
209// --- Filled on an Event-by-event basis
210//------------------------------------------------
211 fHistV0MultiplicityBeforeTrigSel(0),
212 fHistV0MultiplicityForTrigEvt(0),
213 fHistV0MultiplicityForSelEvt(0),
214 fHistV0MultiplicityForSelEvtNoTPCOnly(0),
215 fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup(0),
ac159816 216 fHistMultiplicityBeforeTrigSel(0),
217 fHistMultiplicityForTrigEvt(0),
bcb6ffdb 218 fHistMultiplicity(0),
219 fHistMultiplicityNoTPCOnly(0),
220 fHistMultiplicityNoTPCOnlyNoPileup(0),
221
5d43de53 222//V0A Centrality
223fHistMultiplicityV0ABeforeTrigSel(0),
224fHistMultiplicityV0AForTrigEvt(0),
225fHistMultiplicityV0A(0),
226fHistMultiplicityV0ANoTPCOnly(0),
227fHistMultiplicityV0ANoTPCOnlyNoPileup(0),
228
229//ZNA Centrality
230fHistMultiplicityZNABeforeTrigSel(0),
231fHistMultiplicityZNAForTrigEvt(0),
232fHistMultiplicityZNA(0),
233fHistMultiplicityZNANoTPCOnly(0),
234fHistMultiplicityZNANoTPCOnlyNoPileup(0),
235
236//TRK Centrality
237fHistMultiplicityTRKBeforeTrigSel(0),
238fHistMultiplicityTRKForTrigEvt(0),
239fHistMultiplicityTRK(0),
240fHistMultiplicityTRKNoTPCOnly(0),
241fHistMultiplicityTRKNoTPCOnlyNoPileup(0),
242
243//SPD Centrality
244fHistMultiplicitySPDBeforeTrigSel(0),
245fHistMultiplicitySPDForTrigEvt(0),
246fHistMultiplicitySPD(0),
247fHistMultiplicitySPDNoTPCOnly(0),
248fHistMultiplicitySPDNoTPCOnlyNoPileup(0),
249
1d94e33b 250 f2dHistMultiplicityVsTrueBeforeTrigSel(0),
251 f2dHistMultiplicityVsTrueForTrigEvt(0),
252 f2dHistMultiplicityVsTrue(0),
253 f2dHistMultiplicityVsTrueNoTPCOnly(0),
254 f2dHistMultiplicityVsTrueNoTPCOnlyNoPileup(0),
255
256 //Raw Data for Vertex Z position estimator change
257 f2dHistMultiplicityVsVertexZBeforeTrigSel(0),
258 f2dHistMultiplicityVsVertexZForTrigEvt(0),
259 f2dHistMultiplicityVsVertexZ(0),
260 f2dHistMultiplicityVsVertexZNoTPCOnly(0),
261 f2dHistMultiplicityVsVertexZNoTPCOnlyNoPileup(0),
262
263 fHistGenVertexZBeforeTrigSel(0),
264 fHistGenVertexZForTrigEvt(0),
265 fHistGenVertexZ(0),
266 fHistGenVertexZNoTPCOnly(0),
267 fHistGenVertexZNoTPCOnlyNoPileup(0),
268
bcb6ffdb 269//------------------------------------------------
270// PARTICLE HISTOGRAMS
271// --- Filled on a Particle-by-Particle basis
272//------------------------------------------------
68e484c4 273
b2c306f0 274//Standard V0M / multiplicity
68e484c4 275 f3dHistPrimAnalysisPtVsYVsMultLambda(0),
276 f3dHistPrimAnalysisPtVsYVsMultAntiLambda(0),
277 f3dHistPrimAnalysisPtVsYVsMultK0Short(0),
278 f3dHistPrimAnalysisPtVsYCMSVsMultLambda(0),
279 f3dHistPrimAnalysisPtVsYCMSVsMultAntiLambda(0),
280 f3dHistPrimAnalysisPtVsYCMSVsMultK0Short(0),
281
b2c306f0 282 //True Multiplicity
283 f3dHistPrimAnalysisPtVsYVsMultMCLambda(0),
284 f3dHistPrimAnalysisPtVsYVsMultMCAntiLambda(0),
285 f3dHistPrimAnalysisPtVsYVsMultMCK0Short(0),
286 f3dHistPrimAnalysisPtVsYCMSVsMultMCLambda(0),
287 f3dHistPrimAnalysisPtVsYCMSVsMultMCAntiLambda(0),
288 f3dHistPrimAnalysisPtVsYCMSVsMultMCK0Short(0),
289
68e484c4 290//V0A
291 f3dHistPrimAnalysisPtVsYVsMultV0ALambda(0),
292 f3dHistPrimAnalysisPtVsYVsMultV0AAntiLambda(0),
293 f3dHistPrimAnalysisPtVsYVsMultV0AK0Short(0),
294 f3dHistPrimAnalysisPtVsYCMSVsMultV0ALambda(0),
295 f3dHistPrimAnalysisPtVsYCMSVsMultV0AAntiLambda(0),
296 f3dHistPrimAnalysisPtVsYCMSVsMultV0AK0Short(0),
297
298//ZNA
299 f3dHistPrimAnalysisPtVsYVsMultZNALambda(0),
300 f3dHistPrimAnalysisPtVsYVsMultZNAAntiLambda(0),
301 f3dHistPrimAnalysisPtVsYVsMultZNAK0Short(0),
302 f3dHistPrimAnalysisPtVsYCMSVsMultZNALambda(0),
303 f3dHistPrimAnalysisPtVsYCMSVsMultZNAAntiLambda(0),
304 f3dHistPrimAnalysisPtVsYCMSVsMultZNAK0Short(0),
305
306//TRK
307 f3dHistPrimAnalysisPtVsYVsMultTRKLambda(0),
308 f3dHistPrimAnalysisPtVsYVsMultTRKAntiLambda(0),
309 f3dHistPrimAnalysisPtVsYVsMultTRKK0Short(0),
310 f3dHistPrimAnalysisPtVsYCMSVsMultTRKLambda(0),
311 f3dHistPrimAnalysisPtVsYCMSVsMultTRKAntiLambda(0),
312 f3dHistPrimAnalysisPtVsYCMSVsMultTRKK0Short(0),
313
314//SPD
315 f3dHistPrimAnalysisPtVsYVsMultSPDLambda(0),
316 f3dHistPrimAnalysisPtVsYVsMultSPDAntiLambda(0),
317 f3dHistPrimAnalysisPtVsYVsMultSPDK0Short(0),
318 f3dHistPrimAnalysisPtVsYCMSVsMultSPDLambda(0),
319 f3dHistPrimAnalysisPtVsYCMSVsMultSPDAntiLambda(0),
320 f3dHistPrimAnalysisPtVsYCMSVsMultSPDK0Short(0),
321
322//Standard V0M again
323 f3dHistPrimRawPtVsYVsMultLambda(0),
324 f3dHistPrimRawPtVsYVsMultAntiLambda(0),
325 f3dHistPrimRawPtVsYVsMultK0Short(0),
326 f3dHistPrimRawPtVsYCMSVsMultLambda(0),
327 f3dHistPrimRawPtVsYCMSVsMultAntiLambda(0),
328 f3dHistPrimRawPtVsYCMSVsMultK0Short(0),
329
330//V0A again
331 f3dHistPrimRawPtVsYVsMultV0ALambda(0),
332 f3dHistPrimRawPtVsYVsMultV0AAntiLambda(0),
333 f3dHistPrimRawPtVsYVsMultV0AK0Short(0),
334 f3dHistPrimRawPtVsYCMSVsMultV0ALambda(0),
335 f3dHistPrimRawPtVsYCMSVsMultV0AAntiLambda(0),
336 f3dHistPrimRawPtVsYCMSVsMultV0AK0Short(0),
337
338//ZNA
339 f3dHistPrimRawPtVsYVsMultZNALambda(0),
340 f3dHistPrimRawPtVsYVsMultZNAAntiLambda(0),
341 f3dHistPrimRawPtVsYVsMultZNAK0Short(0),
342 f3dHistPrimRawPtVsYCMSVsMultZNALambda(0),
343 f3dHistPrimRawPtVsYCMSVsMultZNAAntiLambda(0),
344 f3dHistPrimRawPtVsYCMSVsMultZNAK0Short(0),
345
346//TRK
347 f3dHistPrimRawPtVsYVsMultTRKLambda(0),
348 f3dHistPrimRawPtVsYVsMultTRKAntiLambda(0),
349 f3dHistPrimRawPtVsYVsMultTRKK0Short(0),
350 f3dHistPrimRawPtVsYCMSVsMultTRKLambda(0),
351 f3dHistPrimRawPtVsYCMSVsMultTRKAntiLambda(0),
352 f3dHistPrimRawPtVsYCMSVsMultTRKK0Short(0),
353
354//SPD
355 f3dHistPrimRawPtVsYVsMultSPDLambda(0),
356 f3dHistPrimRawPtVsYVsMultSPDAntiLambda(0),
357 f3dHistPrimRawPtVsYVsMultSPDK0Short(0),
358 f3dHistPrimRawPtVsYCMSVsMultSPDLambda(0),
359 f3dHistPrimRawPtVsYCMSVsMultSPDAntiLambda(0),
360 f3dHistPrimRawPtVsYCMSVsMultSPDK0Short(0),
361
362 f3dHistPrimRawPtVsYVsMultNonInjLambda(0),
363 f3dHistPrimRawPtVsYVsMultNonInjAntiLambda(0),
364 f3dHistPrimRawPtVsYVsMultNonInjK0Short(0),
365 f3dHistPrimRawPtVsYVsMultMCLambda(0),
366 f3dHistPrimRawPtVsYVsMultMCAntiLambda(0),
367 f3dHistPrimRawPtVsYVsMultMCK0Short(0),
368 f3dHistPrimRawPtVsYVsVertexZLambda(0),
369 f3dHistPrimRawPtVsYVsVertexZAntiLambda(0),
370 f3dHistPrimRawPtVsYVsVertexZK0Short(0),
371 f3dHistPrimCloseToPVPtVsYVsMultLambda(0),
372 f3dHistPrimCloseToPVPtVsYVsMultAntiLambda(0),
373 f3dHistPrimCloseToPVPtVsYVsMultK0Short(0),
374 f3dHistPrimRawPtVsYVsDecayLengthLambda(0),
375 f3dHistPrimRawPtVsYVsDecayLengthAntiLambda(0),
376 f3dHistPrimRawPtVsYVsDecayLengthK0Short(0),
377
378//V0M
379 f3dHistGenPtVsYVsMultXiMinus(0),
380 f3dHistGenPtVsYVsMultXiPlus(0),
381 f3dHistGenSelectedPtVsYVsMultXiMinus(0),
382 f3dHistGenSelectedPtVsYVsMultXiPlus(0),
383 f3dHistGenPtVsYCMSVsMultXiMinus(0),
384 f3dHistGenPtVsYCMSVsMultXiPlus(0),
385 f3dHistGenSelectedPtVsYCMSVsMultXiMinus(0),
386 f3dHistGenSelectedPtVsYCMSVsMultXiPlus(0),
387
388//V0A
389 f3dHistGenPtVsYVsMultV0AXiMinus(0),
390 f3dHistGenPtVsYVsMultV0AXiPlus(0),
391 f3dHistGenSelectedPtVsYVsMultV0AXiMinus(0),
392 f3dHistGenSelectedPtVsYVsMultV0AXiPlus(0),
393 f3dHistGenPtVsYCMSVsMultV0AXiMinus(0),
394 f3dHistGenPtVsYCMSVsMultV0AXiPlus(0),
395 f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus(0),
396 f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus(0),
397
398//ZNA
399 f3dHistGenPtVsYVsMultZNAXiMinus(0),
400 f3dHistGenPtVsYVsMultZNAXiPlus(0),
401 f3dHistGenSelectedPtVsYVsMultZNAXiMinus(0),
402 f3dHistGenSelectedPtVsYVsMultZNAXiPlus(0),
403 f3dHistGenPtVsYCMSVsMultZNAXiMinus(0),
404 f3dHistGenPtVsYCMSVsMultZNAXiPlus(0),
405 f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus(0),
406 f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus(0),
407
408//TRK
409 f3dHistGenPtVsYVsMultTRKXiMinus(0),
410 f3dHistGenPtVsYVsMultTRKXiPlus(0),
411 f3dHistGenSelectedPtVsYVsMultTRKXiMinus(0),
412 f3dHistGenSelectedPtVsYVsMultTRKXiPlus(0),
413 f3dHistGenPtVsYCMSVsMultTRKXiMinus(0),
414 f3dHistGenPtVsYCMSVsMultTRKXiPlus(0),
415 f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus(0),
416 f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus(0),
417
418//SPD
419 f3dHistGenPtVsYVsMultSPDXiMinus(0),
420 f3dHistGenPtVsYVsMultSPDXiPlus(0),
421 f3dHistGenSelectedPtVsYVsMultSPDXiMinus(0),
422 f3dHistGenSelectedPtVsYVsMultSPDXiPlus(0),
423 f3dHistGenPtVsYCMSVsMultSPDXiMinus(0),
424 f3dHistGenPtVsYCMSVsMultSPDXiPlus(0),
425 f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus(0),
426 f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus(0),
427
428 fHistPVx(0),
429 fHistPVy(0),
430 fHistPVz(0),
431 fHistPVxAnalysis(0),
432 fHistPVyAnalysis(0),
433 fHistPVzAnalysis(0),
434 fHistPVxAnalysisHasHighPtLambda(0),
435 fHistPVyAnalysisHasHighPtLambda(0),
436 fHistPVzAnalysisHasHighPtLambda(0),
437 fHistSwappedV0Counter(0)
bcb6ffdb 438{
439 // Dummy Constructor
af819bba 440 for(Int_t iV0selIdx = 0; iV0selIdx < 7; iV0selIdx++ ) { fV0Sels [iV0selIdx ] = -1.; }
bcb6ffdb 441}
442
443AliAnalysisTaskExtractPerformanceV0::AliAnalysisTaskExtractPerformanceV0(const char *name)
14ba3f35 444 : AliAnalysisTaskSE(name), fListHistV0(0), fTree(0), fPIDResponse(0), fESDtrackCuts(0), fUtils(0),
548bd092 445 fkIsNuclear ( kFALSE ),
048f4f8f 446 fkSwitchINT7 ( kFALSE ),
548bd092 447 fkUseOnTheFly ( kFALSE ),
7f4db1cd 448 fkTakeAllTracks ( kFALSE ),
388b34d3 449 fpArapidityShift ( 0.465 ),
e039e6b3 450 fCentralityEstimator("V0M"),
87e78684 451 fkLightWeight ( kFALSE ),
452 fkFastOnly ( "" ),
14ba3f35 453 fkpAVertexSelection( kFALSE ),
af819bba 454 fkRunV0Vertexer( kFALSE ),
776ebcfc 455 fkRejectPileup ( kTRUE ),
85b81f83 456//------------------------------------------------
457// Tree Variables
458
459 fTreeVariablePrimaryStatus(0),
460 fTreeVariablePrimaryStatusMother(0),
461 fTreeVariableChi2V0(0),
462 fTreeVariableDcaV0Daughters(0),
463 fTreeVariableDcaV0ToPrimVertex(0),
464 fTreeVariableDcaPosToPrimVertex(0),
465 fTreeVariableDcaNegToPrimVertex(0),
466 fTreeVariableV0CosineOfPointingAngle(0),
467 fTreeVariableV0Radius(0),
468 fTreeVariablePt(0),
469 fTreeVariablePtMC(0),
470 fTreeVariableRapK0Short(0),
471 fTreeVariableRapLambda(0),
472 fTreeVariableRapMC(0),
473 fTreeVariableInvMassK0s(0),
474 fTreeVariableInvMassLambda(0),
475 fTreeVariableInvMassAntiLambda(0),
476 fTreeVariableAlphaV0(0),
477 fTreeVariablePtArmV0(0),
478 fTreeVariableNegTotMomentum(0),
479 fTreeVariablePosTotMomentum(0),
480 fTreeVariableNegTransvMomentum(0),
481 fTreeVariablePosTransvMomentum(0),
482 fTreeVariableNegTransvMomentumMC(0),
483 fTreeVariablePosTransvMomentumMC(0),
484
485 fTreeVariableNSigmasPosProton(0),
486 fTreeVariableNSigmasPosPion(0),
487 fTreeVariableNSigmasNegProton(0),
488 fTreeVariableNSigmasNegPion(0),
489
490 fTreeVariablePtMother(0),
491 fTreeVariableV0CreationRadius(0),
492 fTreeVariablePID(0),
493 fTreeVariablePIDPositive(0),
494 fTreeVariablePIDNegative(0),
495 fTreeVariablePIDMother(0),
496 fTreeVariableIndexStatus(0),
497 fTreeVariableIndexStatusMother(0),
498
499 fTreeVariableRunNumber(0),
500 fTreeVariableEventNumber(0),
501
502 fTreeVariableDistOverTotMom(0),
503
504 fTreeVariablePosEta(0),
505 fTreeVariableNegEta(0),
506
507 fTreeVariableVertexZ(0),
508
509 fTreeVariableLeastNbrCrossedRows(0),
510 fTreeVariableLeastRatioCrossedRowsOverFindable(0),
511 fTreeVariableMultiplicity(0),
5d43de53 512 fTreeVariableMultiplicityV0A(0),
513 fTreeVariableMultiplicityZNA(0),
514 fTreeVariableMultiplicityTRK(0),
515 fTreeVariableMultiplicitySPD(0),
85b81f83 516 fTreeVariableMultiplicityMC(0),
517
518 fTreeVariableV0x(0),
519 fTreeVariableV0y(0),
520 fTreeVariableV0z(0),
521
522 fTreeVariableV0Px(0),
523 fTreeVariableV0Py(0),
524 fTreeVariableV0Pz(0),
525
526 fTreeVariableMCV0x(0),
527 fTreeVariableMCV0y(0),
528 fTreeVariableMCV0z(0),
529
530 fTreeVariableMCV0Px(0),
531 fTreeVariableMCV0Py(0),
532 fTreeVariableMCV0Pz(0),
533
534 fTreeVariablePVx(0),
535 fTreeVariablePVy(0),
536 fTreeVariablePVz(0),
537
538 fTreeVariableMCPVx(0),
539 fTreeVariableMCPVy(0),
540 fTreeVariableMCPVz(0),
541
df661cb7 542 fTreeVariableIsNonInjected(0),
543
f068724a 544 fTreeVariableNegTrackStatus(0),
545 fTreeVariablePosTrackStatus(0),
df661cb7 546
bcb6ffdb 547//------------------------------------------------
548// HISTOGRAMS
549// --- Filled on an Event-by-event basis
550//------------------------------------------------
551 fHistV0MultiplicityBeforeTrigSel(0),
552 fHistV0MultiplicityForTrigEvt(0),
553 fHistV0MultiplicityForSelEvt(0),
554 fHistV0MultiplicityForSelEvtNoTPCOnly(0),
555 fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup(0),
ac159816 556 fHistMultiplicityBeforeTrigSel(0),
557 fHistMultiplicityForTrigEvt(0),
bcb6ffdb 558 fHistMultiplicity(0),
559 fHistMultiplicityNoTPCOnly(0),
560 fHistMultiplicityNoTPCOnlyNoPileup(0),
561
5d43de53 562//V0A Centrality
563fHistMultiplicityV0ABeforeTrigSel(0),
564fHistMultiplicityV0AForTrigEvt(0),
565fHistMultiplicityV0A(0),
566fHistMultiplicityV0ANoTPCOnly(0),
567fHistMultiplicityV0ANoTPCOnlyNoPileup(0),
568
569//ZNA Centrality
570fHistMultiplicityZNABeforeTrigSel(0),
571fHistMultiplicityZNAForTrigEvt(0),
572fHistMultiplicityZNA(0),
573fHistMultiplicityZNANoTPCOnly(0),
574fHistMultiplicityZNANoTPCOnlyNoPileup(0),
575
576//TRK Centrality
577fHistMultiplicityTRKBeforeTrigSel(0),
578fHistMultiplicityTRKForTrigEvt(0),
579fHistMultiplicityTRK(0),
580fHistMultiplicityTRKNoTPCOnly(0),
581fHistMultiplicityTRKNoTPCOnlyNoPileup(0),
582
583//SPD Centrality
584fHistMultiplicitySPDBeforeTrigSel(0),
585fHistMultiplicitySPDForTrigEvt(0),
586fHistMultiplicitySPD(0),
587fHistMultiplicitySPDNoTPCOnly(0),
588fHistMultiplicitySPDNoTPCOnlyNoPileup(0),
589
1d94e33b 590 f2dHistMultiplicityVsTrueBeforeTrigSel(0),
591 f2dHistMultiplicityVsTrueForTrigEvt(0),
592 f2dHistMultiplicityVsTrue(0),
593 f2dHistMultiplicityVsTrueNoTPCOnly(0),
594 f2dHistMultiplicityVsTrueNoTPCOnlyNoPileup(0),
595
596 //Raw Data for Vertex Z position estimator change
597 f2dHistMultiplicityVsVertexZBeforeTrigSel(0),
598 f2dHistMultiplicityVsVertexZForTrigEvt(0),
599 f2dHistMultiplicityVsVertexZ(0),
600 f2dHistMultiplicityVsVertexZNoTPCOnly(0),
601 f2dHistMultiplicityVsVertexZNoTPCOnlyNoPileup(0),
602
603 fHistGenVertexZBeforeTrigSel(0),
604 fHistGenVertexZForTrigEvt(0),
605 fHistGenVertexZ(0),
606 fHistGenVertexZNoTPCOnly(0),
607 fHistGenVertexZNoTPCOnlyNoPileup(0),
bcb6ffdb 608
609//------------------------------------------------
610// PARTICLE HISTOGRAMS
611// --- Filled on a Particle-by-Particle basis
612//------------------------------------------------
68e484c4 613
614//Standard V0M
615f3dHistPrimAnalysisPtVsYVsMultLambda(0),
616f3dHistPrimAnalysisPtVsYVsMultAntiLambda(0),
617f3dHistPrimAnalysisPtVsYVsMultK0Short(0),
618f3dHistPrimAnalysisPtVsYCMSVsMultLambda(0),
619f3dHistPrimAnalysisPtVsYCMSVsMultAntiLambda(0),
620f3dHistPrimAnalysisPtVsYCMSVsMultK0Short(0),
621
b2c306f0 622//True Multiplicity
623f3dHistPrimAnalysisPtVsYVsMultMCLambda(0),
624f3dHistPrimAnalysisPtVsYVsMultMCAntiLambda(0),
625f3dHistPrimAnalysisPtVsYVsMultMCK0Short(0),
626f3dHistPrimAnalysisPtVsYCMSVsMultMCLambda(0),
627f3dHistPrimAnalysisPtVsYCMSVsMultMCAntiLambda(0),
628f3dHistPrimAnalysisPtVsYCMSVsMultMCK0Short(0),
629
68e484c4 630//V0A
631f3dHistPrimAnalysisPtVsYVsMultV0ALambda(0),
632f3dHistPrimAnalysisPtVsYVsMultV0AAntiLambda(0),
633f3dHistPrimAnalysisPtVsYVsMultV0AK0Short(0),
634f3dHistPrimAnalysisPtVsYCMSVsMultV0ALambda(0),
635f3dHistPrimAnalysisPtVsYCMSVsMultV0AAntiLambda(0),
636f3dHistPrimAnalysisPtVsYCMSVsMultV0AK0Short(0),
637
638//ZNA
639f3dHistPrimAnalysisPtVsYVsMultZNALambda(0),
640f3dHistPrimAnalysisPtVsYVsMultZNAAntiLambda(0),
641f3dHistPrimAnalysisPtVsYVsMultZNAK0Short(0),
642f3dHistPrimAnalysisPtVsYCMSVsMultZNALambda(0),
643f3dHistPrimAnalysisPtVsYCMSVsMultZNAAntiLambda(0),
644f3dHistPrimAnalysisPtVsYCMSVsMultZNAK0Short(0),
645
646//TRK
647f3dHistPrimAnalysisPtVsYVsMultTRKLambda(0),
648f3dHistPrimAnalysisPtVsYVsMultTRKAntiLambda(0),
649f3dHistPrimAnalysisPtVsYVsMultTRKK0Short(0),
650f3dHistPrimAnalysisPtVsYCMSVsMultTRKLambda(0),
651f3dHistPrimAnalysisPtVsYCMSVsMultTRKAntiLambda(0),
652f3dHistPrimAnalysisPtVsYCMSVsMultTRKK0Short(0),
653
654//SPD
655f3dHistPrimAnalysisPtVsYVsMultSPDLambda(0),
656f3dHistPrimAnalysisPtVsYVsMultSPDAntiLambda(0),
657f3dHistPrimAnalysisPtVsYVsMultSPDK0Short(0),
658f3dHistPrimAnalysisPtVsYCMSVsMultSPDLambda(0),
659f3dHistPrimAnalysisPtVsYCMSVsMultSPDAntiLambda(0),
660f3dHistPrimAnalysisPtVsYCMSVsMultSPDK0Short(0),
661
662//Standard V0M again
663f3dHistPrimRawPtVsYVsMultLambda(0),
664f3dHistPrimRawPtVsYVsMultAntiLambda(0),
665f3dHistPrimRawPtVsYVsMultK0Short(0),
666f3dHistPrimRawPtVsYCMSVsMultLambda(0),
667f3dHistPrimRawPtVsYCMSVsMultAntiLambda(0),
668f3dHistPrimRawPtVsYCMSVsMultK0Short(0),
669
670//V0A again
671f3dHistPrimRawPtVsYVsMultV0ALambda(0),
672f3dHistPrimRawPtVsYVsMultV0AAntiLambda(0),
673f3dHistPrimRawPtVsYVsMultV0AK0Short(0),
674f3dHistPrimRawPtVsYCMSVsMultV0ALambda(0),
675f3dHistPrimRawPtVsYCMSVsMultV0AAntiLambda(0),
676f3dHistPrimRawPtVsYCMSVsMultV0AK0Short(0),
677
678//ZNA
679f3dHistPrimRawPtVsYVsMultZNALambda(0),
680f3dHistPrimRawPtVsYVsMultZNAAntiLambda(0),
681f3dHistPrimRawPtVsYVsMultZNAK0Short(0),
682f3dHistPrimRawPtVsYCMSVsMultZNALambda(0),
683f3dHistPrimRawPtVsYCMSVsMultZNAAntiLambda(0),
684f3dHistPrimRawPtVsYCMSVsMultZNAK0Short(0),
685
686//TRK
687f3dHistPrimRawPtVsYVsMultTRKLambda(0),
688f3dHistPrimRawPtVsYVsMultTRKAntiLambda(0),
689f3dHistPrimRawPtVsYVsMultTRKK0Short(0),
690f3dHistPrimRawPtVsYCMSVsMultTRKLambda(0),
691f3dHistPrimRawPtVsYCMSVsMultTRKAntiLambda(0),
692f3dHistPrimRawPtVsYCMSVsMultTRKK0Short(0),
693
694//SPD
695f3dHistPrimRawPtVsYVsMultSPDLambda(0),
696f3dHistPrimRawPtVsYVsMultSPDAntiLambda(0),
697f3dHistPrimRawPtVsYVsMultSPDK0Short(0),
698f3dHistPrimRawPtVsYCMSVsMultSPDLambda(0),
699f3dHistPrimRawPtVsYCMSVsMultSPDAntiLambda(0),
700f3dHistPrimRawPtVsYCMSVsMultSPDK0Short(0),
701
df661cb7 702 f3dHistPrimRawPtVsYVsMultNonInjLambda(0),
703 f3dHistPrimRawPtVsYVsMultNonInjAntiLambda(0),
704 f3dHistPrimRawPtVsYVsMultNonInjK0Short(0),
a18e0a39 705 f3dHistPrimRawPtVsYVsMultMCLambda(0),
706 f3dHistPrimRawPtVsYVsMultMCAntiLambda(0),
707 f3dHistPrimRawPtVsYVsMultMCK0Short(0),
708 f3dHistPrimRawPtVsYVsVertexZLambda(0),
709 f3dHistPrimRawPtVsYVsVertexZAntiLambda(0),
710 f3dHistPrimRawPtVsYVsVertexZK0Short(0),
7e81bb32 711 f3dHistPrimCloseToPVPtVsYVsMultLambda(0),
712 f3dHistPrimCloseToPVPtVsYVsMultAntiLambda(0),
713 f3dHistPrimCloseToPVPtVsYVsMultK0Short(0),
bcb6ffdb 714 f3dHistPrimRawPtVsYVsDecayLengthLambda(0),
715 f3dHistPrimRawPtVsYVsDecayLengthAntiLambda(0),
716 f3dHistPrimRawPtVsYVsDecayLengthK0Short(0),
68e484c4 717
718//V0M
719f3dHistGenPtVsYVsMultXiMinus(0),
720f3dHistGenPtVsYVsMultXiPlus(0),
721f3dHistGenSelectedPtVsYVsMultXiMinus(0),
722f3dHistGenSelectedPtVsYVsMultXiPlus(0),
723f3dHistGenPtVsYCMSVsMultXiMinus(0),
724f3dHistGenPtVsYCMSVsMultXiPlus(0),
725f3dHistGenSelectedPtVsYCMSVsMultXiMinus(0),
726f3dHistGenSelectedPtVsYCMSVsMultXiPlus(0),
727
728//V0A
729f3dHistGenPtVsYVsMultV0AXiMinus(0),
730f3dHistGenPtVsYVsMultV0AXiPlus(0),
731f3dHistGenSelectedPtVsYVsMultV0AXiMinus(0),
732f3dHistGenSelectedPtVsYVsMultV0AXiPlus(0),
733f3dHistGenPtVsYCMSVsMultV0AXiMinus(0),
734f3dHistGenPtVsYCMSVsMultV0AXiPlus(0),
735f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus(0),
736f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus(0),
737
738//ZNA
739f3dHistGenPtVsYVsMultZNAXiMinus(0),
740f3dHistGenPtVsYVsMultZNAXiPlus(0),
741f3dHistGenSelectedPtVsYVsMultZNAXiMinus(0),
742f3dHistGenSelectedPtVsYVsMultZNAXiPlus(0),
743f3dHistGenPtVsYCMSVsMultZNAXiMinus(0),
744f3dHistGenPtVsYCMSVsMultZNAXiPlus(0),
745f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus(0),
746f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus(0),
747
748//TRK
749f3dHistGenPtVsYVsMultTRKXiMinus(0),
750f3dHistGenPtVsYVsMultTRKXiPlus(0),
751f3dHistGenSelectedPtVsYVsMultTRKXiMinus(0),
752f3dHistGenSelectedPtVsYVsMultTRKXiPlus(0),
753f3dHistGenPtVsYCMSVsMultTRKXiMinus(0),
754f3dHistGenPtVsYCMSVsMultTRKXiPlus(0),
755f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus(0),
756f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus(0),
757
758//SPD
759f3dHistGenPtVsYVsMultSPDXiMinus(0),
760f3dHistGenPtVsYVsMultSPDXiPlus(0),
761f3dHistGenSelectedPtVsYVsMultSPDXiMinus(0),
762f3dHistGenSelectedPtVsYVsMultSPDXiPlus(0),
763f3dHistGenPtVsYCMSVsMultSPDXiMinus(0),
764f3dHistGenPtVsYCMSVsMultSPDXiPlus(0),
765f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus(0),
766f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus(0),
767
bcb6ffdb 768 fHistPVx(0),
769 fHistPVy(0),
770 fHistPVz(0),
771 fHistPVxAnalysis(0),
772 fHistPVyAnalysis(0),
773 fHistPVzAnalysis(0),
774 fHistPVxAnalysisHasHighPtLambda(0),
775 fHistPVyAnalysisHasHighPtLambda(0),
4f8ed367 776 fHistPVzAnalysisHasHighPtLambda(0),
777 fHistSwappedV0Counter(0)
bcb6ffdb 778{
779 // Constructor
af819bba 780 // Set Loose cuts or not here...
781 // REALLY LOOSE? Be careful when attempting to run over PbPb if fkRunV0Vertexer is set!
782 fV0Sels[0] = 33. ; // max allowed chi2
783 fV0Sels[1] = 0.02; // min allowed impact parameter for the 1st daughter (LHC09a4 : 0.05)
784 fV0Sels[2] = 0.02; // min allowed impact parameter for the 2nd daughter (LHC09a4 : 0.05)
785 fV0Sels[3] = 2.0 ; // max allowed DCA between the daughter tracks (LHC09a4 : 0.5)
786 fV0Sels[4] = 0.95; // min allowed cosine of V0's pointing angle (LHC09a4 : 0.99)
787 fV0Sels[5] = 0.5 ; // min radius of the fiducial volume (LHC09a4 : 0.2)
788 fV0Sels[6] = 200. ; // max radius of the fiducial volume (LHC09a4 : 100.0)
789 // Output slot #0 writes into a TList container (Cascade)
790 DefineOutput(1, TList::Class());
791 DefineOutput(2, TTree::Class());
bcb6ffdb 792}
793
794
795AliAnalysisTaskExtractPerformanceV0::~AliAnalysisTaskExtractPerformanceV0()
796{
797//------------------------------------------------
798// DESTRUCTOR
799//------------------------------------------------
800
801 if (fListHistV0){
802 delete fListHistV0;
803 fListHistV0 = 0x0;
804 }
805 if (fTree){
806 delete fTree;
807 fTree = 0x0;
808 }
76029adc 809 //cleanup esd track cuts object too...
810 if (fESDtrackCuts){
811 delete fESDtrackCuts;
812 fESDtrackCuts = 0x0;
813 }
14ba3f35 814
815 if (fUtils){
816 delete fUtils;
817 fUtils = 0x0;
818 }
bcb6ffdb 819}
820
821//________________________________________________________________________
822void AliAnalysisTaskExtractPerformanceV0::UserCreateOutputObjects()
823{
bcb6ffdb 824
eff0b6fc 825 OpenFile(2);
bcb6ffdb 826 // Called once
c228a5af 827
828//------------------------------------------------
829
eff0b6fc 830 fTree = new TTree("fTree","V0Candidates");
bcb6ffdb 831
832//------------------------------------------------
c228a5af 833// fTree Branch definitions - V0 Tree
bcb6ffdb 834//------------------------------------------------
835
836//-----------BASIC-INFO---------------------------
837/* 1*/ fTree->Branch("fTreeVariablePrimaryStatus",&fTreeVariablePrimaryStatus,"fTreeVariablePrimaryStatus/I");
c92e2e56 838/* 2*/ fTree->Branch("fTreeVariablePrimaryStatusMother",&fTreeVariablePrimaryStatusMother,"fTreeVariablePrimaryStatusMother/I");
bcb6ffdb 839/* 2*/ fTree->Branch("fTreeVariableChi2V0",&fTreeVariableChi2V0,"Chi2V0/F");
840/* 3*/ fTree->Branch("fTreeVariableDcaV0Daughters",&fTreeVariableDcaV0Daughters,"fTreeVariableDcaV0Daughters/F");
841/* 4*/ fTree->Branch("fTreeVariableDcaPosToPrimVertex",&fTreeVariableDcaPosToPrimVertex,"fTreeVariableDcaPosToPrimVertex/F");
842/* 5*/ fTree->Branch("fTreeVariableDcaNegToPrimVertex",&fTreeVariableDcaNegToPrimVertex,"fTreeVariableDcaNegToPrimVertex/F");
843/* 6*/ fTree->Branch("fTreeVariableV0Radius",&fTreeVariableV0Radius,"fTreeVariableV0Radius/F");
844/* 7*/ fTree->Branch("fTreeVariablePt",&fTreeVariablePt,"fTreeVariablePt/F");
845/* 7*/ fTree->Branch("fTreeVariablePtMC",&fTreeVariablePtMC,"fTreeVariablePtMC/F");
846/* 8*/ fTree->Branch("fTreeVariableRapK0Short",&fTreeVariableRapK0Short,"fTreeVariableRapK0Short/F");
847/* 9*/ fTree->Branch("fTreeVariableRapLambda",&fTreeVariableRapLambda,"fTreeVariableRapLambda/F");
848/*10*/ fTree->Branch("fTreeVariableRapMC",&fTreeVariableRapMC,"fTreeVariableRapMC/F");
849/*11*/ fTree->Branch("fTreeVariableInvMassK0s",&fTreeVariableInvMassK0s,"fTreeVariableInvMassK0s/F");
850/*12*/ fTree->Branch("fTreeVariableInvMassLambda",&fTreeVariableInvMassLambda,"fTreeVariableInvMassLambda/F");
851/*13*/ fTree->Branch("fTreeVariableInvMassAntiLambda",&fTreeVariableInvMassAntiLambda,"fTreeVariableInvMassAntiLambda/F");
852/*14*/ fTree->Branch("fTreeVariableAlphaV0",&fTreeVariableAlphaV0,"fTreeVariableAlphaV0/F");
853/*15*/ fTree->Branch("fTreeVariablePtArmV0",&fTreeVariablePtArmV0,"fTreeVariablePtArmV0/F");
854/*16*/ fTree->Branch("fTreeVariableNegTransvMomentum",&fTreeVariableNegTransvMomentum,"fTreeVariableNegTransvMomentum/F");
855/*17*/ fTree->Branch("fTreeVariablePosTransvMomentum",&fTreeVariablePosTransvMomentum,"fTreeVariablePosTransvMomentum/F");
856/*18*/ fTree->Branch("fTreeVariableNegTransvMomentumMC",&fTreeVariableNegTransvMomentumMC,"fTreeVariableNegTransvMomentumMC/F");
857/*19*/ fTree->Branch("fTreeVariablePosTransvMomentumMC",&fTreeVariablePosTransvMomentumMC,"fTreeVariablePosTransvMomentumMC/F");
858/*20*/ fTree->Branch("fTreeVariableLeastNbrCrossedRows",&fTreeVariableLeastNbrCrossedRows,"fTreeVariableLeastNbrCrossedRows/I");
859/*21*/ fTree->Branch("fTreeVariableLeastRatioCrossedRowsOverFindable",&fTreeVariableLeastRatioCrossedRowsOverFindable,"fTreeVariableLeastRatioCrossedRowsOverFindable/F");
860/*22*/ fTree->Branch("fTreeVariablePID",&fTreeVariablePID,"fTreeVariablePID/I");
861/*23*/ fTree->Branch("fTreeVariablePIDPositive",&fTreeVariablePIDPositive,"fTreeVariablePIDPositive/I");
862/*24*/ fTree->Branch("fTreeVariablePIDNegative",&fTreeVariablePIDNegative,"fTreeVariablePIDNegative/I");
863/*25*/ fTree->Branch("fTreeVariablePIDMother",&fTreeVariablePIDMother,"fTreeVariablePIDMother/I");
864/*26*/ fTree->Branch("fTreeVariablePtXiMother",&fTreeVariablePtMother,"fTreeVariablePtMother/F");
865/*27*/ fTree->Branch("fTreeVariableV0CosineOfPointingAngle",&fTreeVariableV0CosineOfPointingAngle,"fTreeVariableV0CosineOfPointingAngle/F");
866//-----------MULTIPLICITY-INFO--------------------
867/*28*/ fTree->Branch("fTreeVariableMultiplicity",&fTreeVariableMultiplicity,"fTreeVariableMultiplicity/I");
a18e0a39 868/*28*/ fTree->Branch("fTreeVariableMultiplicityMC",&fTreeVariableMultiplicityMC,"fTreeVariableMultiplicityMC/I");
5d43de53 869 /*17*/ fTree->Branch("fTreeVariableMultiplicityV0A",&fTreeVariableMultiplicityV0A,"fTreeVariableMultiplicityV0A/I");
870 /*17*/ fTree->Branch("fTreeVariableMultiplicityZNA",&fTreeVariableMultiplicityZNA,"fTreeVariableMultiplicityZNA/I");
871 /*17*/ fTree->Branch("fTreeVariableMultiplicityTRK",&fTreeVariableMultiplicityTRK,"fTreeVariableMultiplicityTRK/I");
872 /*17*/ fTree->Branch("fTreeVariableMultiplicitySPD",&fTreeVariableMultiplicitySPD,"fTreeVariableMultiplicitySPD/I");
bcb6ffdb 873//------------------------------------------------
874/*29*/ fTree->Branch("fTreeVariableDistOverTotMom",&fTreeVariableDistOverTotMom,"fTreeVariableDistOverTotMom/F");
875/*30*/ fTree->Branch("fTreeVariableNSigmasPosProton",&fTreeVariableNSigmasPosProton,"fTreeVariableNSigmasPosProton/F");
876/*31*/ fTree->Branch("fTreeVariableNSigmasPosPion",&fTreeVariableNSigmasPosPion,"fTreeVariableNSigmasPosPion/F");
877/*32*/ fTree->Branch("fTreeVariableNSigmasNegProton",&fTreeVariableNSigmasNegProton,"fTreeVariableNSigmasNegProton/F");
878/*33*/ fTree->Branch("fTreeVariableNSigmasNegPion",&fTreeVariableNSigmasNegPion,"fTreeVariableNSigmasNegPion/F");
879//------------------------------------------------
880/*34*/ fTree->Branch("fTreeVariableNegEta",&fTreeVariableNegEta,"fTreeVariableNegEta/F");
881/*35*/ fTree->Branch("fTreeVariablePosEta",&fTreeVariablePosEta,"fTreeVariablePosEta/F");
882/*36*/ fTree->Branch("fTreeVariableV0CreationRadius",&fTreeVariableV0CreationRadius,"fTreeVariableV0CreationRadius/F");
c92e2e56 883
884 if ( fkLightWeight == kFALSE ){ // these are debugging branches!
bcb6ffdb 885/*37*/ fTree->Branch("fTreeVariableIndexStatus",&fTreeVariableIndexStatus,"fTreeVariableIndexStatus/I");
886/*38*/ fTree->Branch("fTreeVariableIndexStatusMother",&fTreeVariableIndexStatusMother,"fTreeVariableIndexStatusMother/I");
c92e2e56 887 }
bcb6ffdb 888
0eebce93 889/*39*/ fTree->Branch("fTreeVariableRunNumber",&fTreeVariableRunNumber,"fTreeVariableRunNumber/I");
890/*40*/ fTree->Branch("fTreeVariableEventNumber",&fTreeVariableEventNumber,"fTreeVariableEventNumber/l");
891
c92e2e56 892 if ( fkLightWeight == kFALSE ){ // these are debugging branches!
a18e0a39 893/*34*/ fTree->Branch("fTreeVariableVertexZ",&fTreeVariableVertexZ,"fTreeVariableVertexZ/F");
c92e2e56 894 }
895
896 if ( fkLightWeight == kFALSE ){ // these are debugging branches!
11960ef4 897//-----------FOR CTAU DEBUGGING: Full Phase Space + Decay Position Info
898 fTree->Branch("fTreeVariableV0x",&fTreeVariableV0x,"fTreeVariableV0x/F");
899 fTree->Branch("fTreeVariableV0y",&fTreeVariableV0y,"fTreeVariableV0y/F");
900 fTree->Branch("fTreeVariableV0z",&fTreeVariableV0z,"fTreeVariableV0z/F");
901
902 fTree->Branch("fTreeVariableV0Px",&fTreeVariableV0Px,"fTreeVariableV0Px/F");
903 fTree->Branch("fTreeVariableV0Py",&fTreeVariableV0Py,"fTreeVariableV0Py/F");
904 fTree->Branch("fTreeVariableV0Pz",&fTreeVariableV0Pz,"fTreeVariableV0Pz/F");
905
906//-----------FOR CTAU DEBUGGING: Full Phase Space + Decay Position Info, perfect info from MC
907 fTree->Branch("fTreeVariableMCV0x",&fTreeVariableMCV0x,"fTreeVariableMCV0x/F");
908 fTree->Branch("fTreeVariableMCV0y",&fTreeVariableMCV0y,"fTreeVariableMCV0y/F");
909 fTree->Branch("fTreeVariableMCV0z",&fTreeVariableMCV0z,"fTreeVariableMCV0z/F");
910
911 fTree->Branch("fTreeVariableMCV0Px",&fTreeVariableMCV0Px,"fTreeVariableMCV0Px/F");
912 fTree->Branch("fTreeVariableMCV0Py",&fTreeVariableMCV0Py,"fTreeVariableMCV0Py/F");
913 fTree->Branch("fTreeVariableMCV0Pz",&fTreeVariableMCV0Pz,"fTreeVariableMCV0Pz/F");
914
653265df 915//-----------FOR CTAU DEBUGGING: Primary vertex info
916 fTree->Branch("fTreeVariablePVx",&fTreeVariablePVx,"fTreeVariablePVx/F");
917 fTree->Branch("fTreeVariablePVy",&fTreeVariablePVy,"fTreeVariablePVy/F");
918 fTree->Branch("fTreeVariablePVz",&fTreeVariablePVz,"fTreeVariablePVz/F");
919
920 fTree->Branch("fTreeVariableMCPVx",&fTreeVariableMCPVx,"fTreeVariableMCPVx/F");
921 fTree->Branch("fTreeVariableMCPVy",&fTreeVariableMCPVy,"fTreeVariableMCPVy/F");
922 fTree->Branch("fTreeVariableMCPVz",&fTreeVariableMCPVz,"fTreeVariableMCPVz/F");
c92e2e56 923 }
653265df 924
f068724a 925 fTree->Branch("fTreeVariableIsNonInjected",&fTreeVariableIsNonInjected,"fTreeVariableIsNonInjected/O"); //O for bOOlean...
926
c92e2e56 927 if ( fkLightWeight == kFALSE ){ // these are debugging branches!
a5ff2395 928 fTree->Branch("fTreeVariableNegTrackStatus",&fTreeVariableNegTrackStatus,"fTreeVariableNegTrackStatus/l");
929 fTree->Branch("fTreeVariablePosTrackStatus",&fTreeVariablePosTrackStatus,"fTreeVariablePosTrackStatus/l");
930 fTree->Branch("fTreeVariableNegPhysicalStatus",&fTreeVariableNegPhysicalStatus,"fTreeVariableNegPhysicalStatus/I");
931 fTree->Branch("fTreeVariablePosPhysicalStatus",&fTreeVariablePosPhysicalStatus,"fTreeVariablePosPhysicalStatus/I");
c92e2e56 932 }
f068724a 933
bcb6ffdb 934//------------------------------------------------
935// Particle Identification Setup
936//------------------------------------------------
14ba3f35 937
938 AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
939 AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
940 fPIDResponse = inputHandler->GetPIDResponse();
941
942 // Multiplicity
943
944 if(! fESDtrackCuts ){
945 fESDtrackCuts = new AliESDtrackCuts();
946 }
947 if(! fUtils ){
948 fUtils = new AliAnalysisUtils();
949 }
76029adc 950
bcb6ffdb 951//------------------------------------------------
952// V0 Multiplicity Histograms
953//------------------------------------------------
954
eff0b6fc 955 // Create histograms
956 OpenFile(1);
957 fListHistV0 = new TList();
958 fListHistV0->SetOwner(); // See http://root.cern.ch/root/html/TCollection.html#TCollection:SetOwner
959
960
bcb6ffdb 961 if(! fHistV0MultiplicityBeforeTrigSel) {
962 fHistV0MultiplicityBeforeTrigSel = new TH1F("fHistV0MultiplicityBeforeTrigSel",
963 "V0s per event (before Trig. Sel.);Nbr of V0s/Evt;Events",
964 25, 0, 25);
965 fListHistV0->Add(fHistV0MultiplicityBeforeTrigSel);
966 }
967
968 if(! fHistV0MultiplicityForTrigEvt) {
969 fHistV0MultiplicityForTrigEvt = new TH1F("fHistV0MultiplicityForTrigEvt",
970 "V0s per event (for triggered evt);Nbr of V0s/Evt;Events",
971 25, 0, 25);
972 fListHistV0->Add(fHistV0MultiplicityForTrigEvt);
973 }
974
975 if(! fHistV0MultiplicityForSelEvt) {
976 fHistV0MultiplicityForSelEvt = new TH1F("fHistV0MultiplicityForSelEvt",
977 "V0s per event;Nbr of V0s/Evt;Events",
978 25, 0, 25);
979 fListHistV0->Add(fHistV0MultiplicityForSelEvt);
980 }
981
982 if(! fHistV0MultiplicityForSelEvtNoTPCOnly) {
983 fHistV0MultiplicityForSelEvtNoTPCOnly = new TH1F("fHistV0MultiplicityForSelEvtNoTPCOnly",
984 "V0s per event;Nbr of V0s/Evt;Events",
985 25, 0, 25);
986 fListHistV0->Add(fHistV0MultiplicityForSelEvtNoTPCOnly);
987 }
988 if(! fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup) {
989 fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup = new TH1F("fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup",
990 "V0s per event;Nbr of V0s/Evt;Events",
991 25, 0, 25);
992 fListHistV0->Add(fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup);
993 }
994
995//------------------------------------------------
996// Track Multiplicity Histograms
997//------------------------------------------------
998
999 if(! fHistMultiplicityBeforeTrigSel) {
1000 fHistMultiplicityBeforeTrigSel = new TH1F("fHistMultiplicityBeforeTrigSel",
1001 "Tracks per event;Nbr of Tracks;Events",
1002 200, 0, 200);
1003 fListHistV0->Add(fHistMultiplicityBeforeTrigSel);
1004 }
1005 if(! fHistMultiplicityForTrigEvt) {
1006 fHistMultiplicityForTrigEvt = new TH1F("fHistMultiplicityForTrigEvt",
1007 "Tracks per event;Nbr of Tracks;Events",
1008 200, 0, 200);
1009 fListHistV0->Add(fHistMultiplicityForTrigEvt);
1010 }
1011 if(! fHistMultiplicity) {
1012 fHistMultiplicity = new TH1F("fHistMultiplicity",
1013 "Tracks per event;Nbr of Tracks;Events",
1014 200, 0, 200);
1015 fListHistV0->Add(fHistMultiplicity);
1016 }
1017 if(! fHistMultiplicityNoTPCOnly) {
1018 fHistMultiplicityNoTPCOnly = new TH1F("fHistMultiplicityNoTPCOnly",
1019 "Tracks per event;Nbr of Tracks;Events",
1020 200, 0, 200);
1021 fListHistV0->Add(fHistMultiplicityNoTPCOnly);
1022 }
1023 if(! fHistMultiplicityNoTPCOnlyNoPileup) {
1024 fHistMultiplicityNoTPCOnlyNoPileup = new TH1F("fHistMultiplicityNoTPCOnlyNoPileup",
1025 "Tracks per event;Nbr of Tracks;Events",
1026 200, 0, 200);
1027 fListHistV0->Add(fHistMultiplicityNoTPCOnlyNoPileup);
1028 }
5d43de53 1029
1030 //V0A Centrality (if PbPb / pPb)
1031 if(! fHistMultiplicityV0ABeforeTrigSel) {
1032 fHistMultiplicityV0ABeforeTrigSel = new TH1F("fHistMultiplicityV0ABeforeTrigSel",
1033 "Centrality Distribution: V0A;V0A Centrality;Events",
1034 200, 0, 200);
1035 fListHistV0->Add(fHistMultiplicityV0ABeforeTrigSel);
1036 }
1037 if(! fHistMultiplicityV0AForTrigEvt) {
1038 fHistMultiplicityV0AForTrigEvt = new TH1F("fHistMultiplicityV0AForTrigEvt",
1039 "Centrality Distribution: V0A;V0A Centrality;Events",
1040 200, 0, 200);
1041 fListHistV0->Add(fHistMultiplicityV0AForTrigEvt);
1042 }
1043 if(! fHistMultiplicityV0A) {
1044 fHistMultiplicityV0A = new TH1F("fHistMultiplicityV0A",
1045 "Centrality Distribution: V0A;V0A Centrality;Events",
1046 200, 0, 200);
1047 fListHistV0->Add(fHistMultiplicityV0A);
1048 }
1049 if(! fHistMultiplicityV0ANoTPCOnly) {
1050 fHistMultiplicityV0ANoTPCOnly = new TH1F("fHistMultiplicityV0ANoTPCOnly",
1051 "Centrality Distribution: V0A;V0A Centrality;Events",
1052 200, 0, 200);
1053 fListHistV0->Add(fHistMultiplicityV0ANoTPCOnly);
1054 }
1055 if(! fHistMultiplicityV0ANoTPCOnlyNoPileup) {
1056 fHistMultiplicityV0ANoTPCOnlyNoPileup = new TH1F("fHistMultiplicityV0ANoTPCOnlyNoPileup",
1057 "Centrality Distribution: V0A;V0A Centrality;Events",
1058 200, 0, 200);
1059 fListHistV0->Add(fHistMultiplicityV0ANoTPCOnlyNoPileup);
1060 }
1061
1062 //ZNA Centrality (if PbPb / pPb)
1063 if(! fHistMultiplicityZNABeforeTrigSel) {
1064 fHistMultiplicityZNABeforeTrigSel = new TH1F("fHistMultiplicityZNABeforeTrigSel",
1065 "Centrality Distribution: ZNA;ZNA Centrality;Events",
1066 200, 0, 200);
1067 fListHistV0->Add(fHistMultiplicityZNABeforeTrigSel);
1068 }
1069 if(! fHistMultiplicityZNAForTrigEvt) {
1070 fHistMultiplicityZNAForTrigEvt = new TH1F("fHistMultiplicityZNAForTrigEvt",
1071 "Centrality Distribution: ZNA;ZNA Centrality;Events",
1072 200, 0, 200);
1073 fListHistV0->Add(fHistMultiplicityZNAForTrigEvt);
1074 }
1075 if(! fHistMultiplicityZNA) {
1076 fHistMultiplicityZNA = new TH1F("fHistMultiplicityZNA",
1077 "Centrality Distribution: ZNA;ZNA Centrality;Events",
1078 200, 0, 200);
1079 fListHistV0->Add(fHistMultiplicityZNA);
1080 }
1081 if(! fHistMultiplicityZNANoTPCOnly) {
1082 fHistMultiplicityZNANoTPCOnly = new TH1F("fHistMultiplicityZNANoTPCOnly",
1083 "Centrality Distribution: ZNA;ZNA Centrality;Events",
1084 200, 0, 200);
1085 fListHistV0->Add(fHistMultiplicityZNANoTPCOnly);
1086 }
1087 if(! fHistMultiplicityZNANoTPCOnlyNoPileup) {
1088 fHistMultiplicityZNANoTPCOnlyNoPileup = new TH1F("fHistMultiplicityZNANoTPCOnlyNoPileup",
1089 "Centrality Distribution: ZNA;ZNA Centrality;Events",
1090 200, 0, 200);
1091 fListHistV0->Add(fHistMultiplicityZNANoTPCOnlyNoPileup);
1092 }
1093
1094 //TRK Centrality (if PbPb / pPb)
1095 if(! fHistMultiplicityTRKBeforeTrigSel) {
1096 fHistMultiplicityTRKBeforeTrigSel = new TH1F("fHistMultiplicityTRKBeforeTrigSel",
1097 "Centrality Distribution: TRK;TRK Centrality;Events",
1098 200, 0, 200);
1099 fListHistV0->Add(fHistMultiplicityTRKBeforeTrigSel);
1100 }
1101 if(! fHistMultiplicityTRKForTrigEvt) {
1102 fHistMultiplicityTRKForTrigEvt = new TH1F("fHistMultiplicityTRKForTrigEvt",
1103 "Centrality Distribution: TRK;TRK Centrality;Events",
1104 200, 0, 200);
1105 fListHistV0->Add(fHistMultiplicityTRKForTrigEvt);
1106 }
1107 if(! fHistMultiplicityTRK) {
1108 fHistMultiplicityTRK = new TH1F("fHistMultiplicityTRK",
1109 "Centrality Distribution: TRK;TRK Centrality;Events",
1110 200, 0, 200);
1111 fListHistV0->Add(fHistMultiplicityTRK);
1112 }
1113 if(! fHistMultiplicityTRKNoTPCOnly) {
1114 fHistMultiplicityTRKNoTPCOnly = new TH1F("fHistMultiplicityTRKNoTPCOnly",
1115 "Centrality Distribution: TRK;TRK Centrality;Events",
1116 200, 0, 200);
1117 fListHistV0->Add(fHistMultiplicityTRKNoTPCOnly);
1118 }
1119 if(! fHistMultiplicityTRKNoTPCOnlyNoPileup) {
1120 fHistMultiplicityTRKNoTPCOnlyNoPileup = new TH1F("fHistMultiplicityTRKNoTPCOnlyNoPileup",
1121 "Centrality Distribution: TRK;TRK Centrality;Events",
1122 200, 0, 200);
1123 fListHistV0->Add(fHistMultiplicityTRKNoTPCOnlyNoPileup);
1124 }
1125
1126 //SPD Centrality (if PbPb / pPb)
1127 if(! fHistMultiplicitySPDBeforeTrigSel) {
1128 fHistMultiplicitySPDBeforeTrigSel = new TH1F("fHistMultiplicitySPDBeforeTrigSel",
1129 "Centrality Distribution: SPD;SPD Centrality;Events",
1130 200, 0, 200);
1131 fListHistV0->Add(fHistMultiplicitySPDBeforeTrigSel);
1132 }
1133 if(! fHistMultiplicitySPDForTrigEvt) {
1134 fHistMultiplicitySPDForTrigEvt = new TH1F("fHistMultiplicitySPDForTrigEvt",
1135 "Centrality Distribution: SPD;SPD Centrality;Events",
1136 200, 0, 200);
1137 fListHistV0->Add(fHistMultiplicitySPDForTrigEvt);
1138 }
1139 if(! fHistMultiplicitySPD) {
1140 fHistMultiplicitySPD = new TH1F("fHistMultiplicitySPD",
1141 "Centrality Distribution: SPD;SPD Centrality;Events",
1142 200, 0, 200);
1143 fListHistV0->Add(fHistMultiplicitySPD);
1144 }
1145 if(! fHistMultiplicitySPDNoTPCOnly) {
1146 fHistMultiplicitySPDNoTPCOnly = new TH1F("fHistMultiplicitySPDNoTPCOnly",
1147 "Centrality Distribution: SPD;SPD Centrality;Events",
1148 200, 0, 200);
1149 fListHistV0->Add(fHistMultiplicitySPDNoTPCOnly);
1150 }
1151 if(! fHistMultiplicitySPDNoTPCOnlyNoPileup) {
1152 fHistMultiplicitySPDNoTPCOnlyNoPileup = new TH1F("fHistMultiplicitySPDNoTPCOnlyNoPileup",
1153 "Centrality Distribution: SPD;SPD Centrality;Events",
1154 200, 0, 200);
1155 fListHistV0->Add(fHistMultiplicitySPDNoTPCOnlyNoPileup);
1156 }
1157
1158
1159
bcb6ffdb 1160
1d94e33b 1161 //Raw Data for J/Psi paper Technique
1162 //TH2F *f2dHistMultiplicityVsTrueBeforeTrigSel; //! multiplicity distribution
1163 //TH2F *f2dHistMultiplicityVsTrueForTrigEvt; //! multiplicity distribution
1164 //TH2F *f2dHistMultiplicityVsTrue; //! multiplicity distribution
1165 //TH2F *f2dHistMultiplicityVsTrueNoTPCOnly; //! multiplicity distribution
1166 //TH2F *f2dHistMultiplicityVsTrueNoTPCOnlyNoPileup; //! multiplicity distribution
1167
1168 if(! f2dHistMultiplicityVsTrueBeforeTrigSel) {
1169 f2dHistMultiplicityVsTrueBeforeTrigSel = new TH2F("f2dHistMultiplicityVsTrueBeforeTrigSel",
1170 "Tracks per event", 200, 0, 200, 200, 0, 200);
1171 fListHistV0->Add(f2dHistMultiplicityVsTrueBeforeTrigSel);
1172 }
1173 if(! f2dHistMultiplicityVsTrueForTrigEvt) {
1174 f2dHistMultiplicityVsTrueForTrigEvt = new TH2F("f2dHistMultiplicityVsTrueForTrigEvt",
1175 "Tracks per event", 200, 0, 200, 200, 0, 200);
1176 fListHistV0->Add(f2dHistMultiplicityVsTrueForTrigEvt);
1177 }
1178 if(! f2dHistMultiplicityVsTrue) {
1179 f2dHistMultiplicityVsTrue = new TH2F("f2dHistMultiplicityVsTrue",
1180 "Tracks per event", 200, 0, 200, 200, 0, 200);
1181 fListHistV0->Add(f2dHistMultiplicityVsTrue);
1182 }
1183 if(! f2dHistMultiplicityVsTrueNoTPCOnly) {
1184 f2dHistMultiplicityVsTrueNoTPCOnly = new TH2F("f2dHistMultiplicityVsTrueNoTPCOnly",
1185 "Tracks per event", 200, 0, 200, 200, 0, 200);
1186 fListHistV0->Add(f2dHistMultiplicityVsTrueNoTPCOnly);
1187 }
1188 if(! f2dHistMultiplicityVsTrueNoTPCOnlyNoPileup) {
1189 f2dHistMultiplicityVsTrueNoTPCOnlyNoPileup = new TH2F("f2dHistMultiplicityVsTrueNoTPCOnlyNoPileup",
1190 "Tracks per event", 200, 0, 200, 200, 0, 200);
1191 fListHistV0->Add(f2dHistMultiplicityVsTrueNoTPCOnlyNoPileup);
1192 }
1193
1194
1195 //Raw Data for Vertex Z position estimator change
1196 //TH2F *f2dHistMultiplicityVsVertexZBeforeTrigSel; //! multiplicity distribution
1197 //TH2F *f2dHistMultiplicityVsVertexZForTrigEvt; //! multiplicity distribution
1198 //TH2F *f2dHistMultiplicityVsVertexZ; //! multiplicity distribution
1199 //TH2F *f2dHistMultiplicityVsVertexZNoTPCOnly; //! multiplicity distribution
1200 //TH2F *f2dHistMultiplicityVsVertexZNoTPCOnlyNoPileup; //! multiplicity distribution
1201
1202 if(! f2dHistMultiplicityVsVertexZBeforeTrigSel) {
1203 f2dHistMultiplicityVsVertexZBeforeTrigSel = new TH2F("f2dHistMultiplicityVsVertexZBeforeTrigSel",
1204 "Tracks per event", 200, 0, 200,400, -20, 20);
1205 fListHistV0->Add(f2dHistMultiplicityVsVertexZBeforeTrigSel);
1206 }
1207 if(! f2dHistMultiplicityVsVertexZForTrigEvt) {
1208 f2dHistMultiplicityVsVertexZForTrigEvt = new TH2F("f2dHistMultiplicityVsVertexZForTrigEvt",
1209 "Tracks per event", 200, 0, 200, 400, -20, 20);
1210 fListHistV0->Add(f2dHistMultiplicityVsVertexZForTrigEvt);
1211 }
1212 if(! f2dHistMultiplicityVsVertexZ) {
1213 f2dHistMultiplicityVsVertexZ = new TH2F("f2dHistMultiplicityVsVertexZ",
1214 "Tracks per event", 200, 0, 200, 400, -20, 20);
1215 fListHistV0->Add(f2dHistMultiplicityVsVertexZ);
1216 }
1217 if(! f2dHistMultiplicityVsVertexZNoTPCOnly) {
1218 f2dHistMultiplicityVsVertexZNoTPCOnly = new TH2F("f2dHistMultiplicityVsVertexZNoTPCOnly",
1219 "Tracks per event", 200, 0, 200, 400, -20, 20);
1220 fListHistV0->Add(f2dHistMultiplicityVsVertexZNoTPCOnly);
1221 }
1222 if(! f2dHistMultiplicityVsVertexZNoTPCOnlyNoPileup) {
1223 f2dHistMultiplicityVsVertexZNoTPCOnlyNoPileup = new TH2F("f2dHistMultiplicityVsVertexZNoTPCOnlyNoPileup",
1224 "Tracks per event", 200, 0, 200, 400, -20, 20);
1225 fListHistV0->Add(f2dHistMultiplicityVsVertexZNoTPCOnlyNoPileup);
1226 }
1227
1228//Generated PVz test
1229
1230// TH1F *fHistGenVertexZBeforeTrigSel; //! multiplicity distribution
1231// TH1F *fHistGenVertexZForTrigEvt; //! multiplicity distribution
1232// TH1F *fHistGenVertexZ; //! multiplicity distribution
1233// TH1F *fHistGenVertexZNoTPCOnly; //! multiplicity distribution
1234// TH1F *fHistGenVertexZNoTPCOnlyNoPileup; //! multiplicity distribution
1235
1236 if(! fHistGenVertexZBeforeTrigSel) {
1237 fHistGenVertexZBeforeTrigSel = new TH1F("fHistGenVertexZBeforeTrigSel",
1238 "PV z position;Nbr of Evts;z",
1239 400, -20, 20);
1240 fListHistV0->Add(fHistGenVertexZBeforeTrigSel);
1241 }
1242 if(! fHistGenVertexZForTrigEvt) {
1243 fHistGenVertexZForTrigEvt = new TH1F("fHistGenVertexZForTrigEvt",
1244 "PV z position;Nbr of Evts;z",
1245 400, -20, 20);
1246 fListHistV0->Add(fHistGenVertexZForTrigEvt);
1247 }
1248 if(! fHistGenVertexZ) {
1249 fHistGenVertexZ = new TH1F("fHistGenVertexZ",
1250 "PV z position;Nbr of Evts;z",
1251 400, -20, 20);
1252 fListHistV0->Add(fHistGenVertexZ);
1253 }
1254 if(! fHistGenVertexZNoTPCOnly) {
1255 fHistGenVertexZNoTPCOnly = new TH1F("fHistGenVertexZNoTPCOnly",
1256 "PV z position;Nbr of Evts;z",
1257 400, -20, 20);
1258 fListHistV0->Add(fHistGenVertexZNoTPCOnly);
1259 }
1260 if(! fHistGenVertexZNoTPCOnlyNoPileup) {
1261 fHistGenVertexZNoTPCOnlyNoPileup = new TH1F("fHistGenVertexZNoTPCOnlyNoPileup",
1262 "PV z position;Nbr of Evts;z",
1263 400, -20, 20);
1264 fListHistV0->Add(fHistGenVertexZNoTPCOnlyNoPileup);
1265 }
1266
1267
bcb6ffdb 1268//------------------------------------------------
1269// Generated Particle Histograms
1270//------------------------------------------------
1271
1272 Int_t lCustomNBins = 200;
1273 Double_t lCustomPtUpperLimit = 20;
1274 Int_t lCustomNBinsMultiplicity = 100;
1275
1276//----------------------------------
1277// Raw Generated (Pre-physics-selection)
1278//----------------------------------
1279
68e484c4 1280//--- 3D Histo (Pt, Y, Multiplicity), V0M Version (default)
bcb6ffdb 1281
1282 if(! f3dHistPrimRawPtVsYVsMultLambda) {
1283 f3dHistPrimRawPtVsYVsMultLambda = new TH3F( "f3dHistPrimRawPtVsYVsMultLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1284 fListHistV0->Add(f3dHistPrimRawPtVsYVsMultLambda);
1285 }
1286 if(! f3dHistPrimRawPtVsYVsMultAntiLambda) {
1287 f3dHistPrimRawPtVsYVsMultAntiLambda = new TH3F( "f3dHistPrimRawPtVsYVsMultAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1288 fListHistV0->Add(f3dHistPrimRawPtVsYVsMultAntiLambda);
1289 }
1290 if(! f3dHistPrimRawPtVsYVsMultK0Short) {
1291 f3dHistPrimRawPtVsYVsMultK0Short = new TH3F( "f3dHistPrimRawPtVsYVsMultK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1292 fListHistV0->Add(f3dHistPrimRawPtVsYVsMultK0Short);
1293 }
1294
388b34d3 1295 if(! f3dHistPrimRawPtVsYCMSVsMultLambda) {
1296 f3dHistPrimRawPtVsYCMSVsMultLambda = new TH3F( "f3dHistPrimRawPtVsYCMSVsMultLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1297 fListHistV0->Add(f3dHistPrimRawPtVsYCMSVsMultLambda);
1298 }
1299 if(! f3dHistPrimRawPtVsYCMSVsMultAntiLambda) {
1300 f3dHistPrimRawPtVsYCMSVsMultAntiLambda = new TH3F( "f3dHistPrimRawPtVsYCMSVsMultAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1301 fListHistV0->Add(f3dHistPrimRawPtVsYCMSVsMultAntiLambda);
1302 }
1303 if(! f3dHistPrimRawPtVsYCMSVsMultK0Short) {
1304 f3dHistPrimRawPtVsYCMSVsMultK0Short = new TH3F( "f3dHistPrimRawPtVsYCMSVsMultK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1305 fListHistV0->Add(f3dHistPrimRawPtVsYCMSVsMultK0Short);
1306 }
68e484c4 1307
1308//--- 3D Histo (Pt, Y, Multiplicity), V0A Version
1309
1310 if(! f3dHistPrimRawPtVsYVsMultV0ALambda) {
1311 f3dHistPrimRawPtVsYVsMultV0ALambda = new TH3F( "f3dHistPrimRawPtVsYVsMultV0ALambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1312 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYVsMultV0ALambda);
1313 }
1314 if(! f3dHistPrimRawPtVsYVsMultV0AAntiLambda) {
1315 f3dHistPrimRawPtVsYVsMultV0AAntiLambda = new TH3F( "f3dHistPrimRawPtVsYVsMultV0AAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1316 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYVsMultV0AAntiLambda);
1317 }
1318 if(! f3dHistPrimRawPtVsYVsMultV0AK0Short) {
1319 f3dHistPrimRawPtVsYVsMultV0AK0Short = new TH3F( "f3dHistPrimRawPtVsYVsMultV0AK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1320 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYVsMultV0AK0Short);
1321 }
1322
1323 if(! f3dHistPrimRawPtVsYCMSVsMultV0ALambda) {
1324 f3dHistPrimRawPtVsYCMSVsMultV0ALambda = new TH3F( "f3dHistPrimRawPtVsYCMSVsMultV0ALambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1325 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYCMSVsMultV0ALambda);
1326 }
1327 if(! f3dHistPrimRawPtVsYCMSVsMultV0AAntiLambda) {
1328 f3dHistPrimRawPtVsYCMSVsMultV0AAntiLambda = new TH3F( "f3dHistPrimRawPtVsYCMSVsMultV0AAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1329 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYCMSVsMultV0AAntiLambda);
1330 }
1331 if(! f3dHistPrimRawPtVsYCMSVsMultV0AK0Short) {
1332 f3dHistPrimRawPtVsYCMSVsMultV0AK0Short = new TH3F( "f3dHistPrimRawPtVsYCMSVsMultV0AK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1333 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYCMSVsMultV0AK0Short);
1334 }
1335
1336 //--- 3D Histo (Pt, Y, Multiplicity), ZNA Version
1337
1338 if(! f3dHistPrimRawPtVsYVsMultZNALambda) {
1339 f3dHistPrimRawPtVsYVsMultZNALambda = new TH3F( "f3dHistPrimRawPtVsYVsMultZNALambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1340 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYVsMultZNALambda);
1341 }
1342 if(! f3dHistPrimRawPtVsYVsMultZNAAntiLambda) {
1343 f3dHistPrimRawPtVsYVsMultZNAAntiLambda = new TH3F( "f3dHistPrimRawPtVsYVsMultZNAAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1344 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYVsMultZNAAntiLambda);
1345 }
1346 if(! f3dHistPrimRawPtVsYVsMultZNAK0Short) {
1347 f3dHistPrimRawPtVsYVsMultZNAK0Short = new TH3F( "f3dHistPrimRawPtVsYVsMultZNAK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1348 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYVsMultZNAK0Short);
1349 }
1350
1351 if(! f3dHistPrimRawPtVsYCMSVsMultZNALambda) {
1352 f3dHistPrimRawPtVsYCMSVsMultZNALambda = new TH3F( "f3dHistPrimRawPtVsYCMSVsMultZNALambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1353 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYCMSVsMultZNALambda);
1354 }
1355 if(! f3dHistPrimRawPtVsYCMSVsMultZNAAntiLambda) {
1356 f3dHistPrimRawPtVsYCMSVsMultZNAAntiLambda = new TH3F( "f3dHistPrimRawPtVsYCMSVsMultZNAAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1357 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYCMSVsMultZNAAntiLambda);
1358 }
1359 if(! f3dHistPrimRawPtVsYCMSVsMultZNAK0Short) {
1360 f3dHistPrimRawPtVsYCMSVsMultZNAK0Short = new TH3F( "f3dHistPrimRawPtVsYCMSVsMultZNAK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1361 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYCMSVsMultZNAK0Short);
1362 }
1363
1364 //--- 3D Histo (Pt, Y, Multiplicity), TRK Version
1365
1366 if(! f3dHistPrimRawPtVsYVsMultTRKLambda) {
1367 f3dHistPrimRawPtVsYVsMultTRKLambda = new TH3F( "f3dHistPrimRawPtVsYVsMultTRKLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1368 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYVsMultTRKLambda);
1369 }
1370 if(! f3dHistPrimRawPtVsYVsMultTRKAntiLambda) {
1371 f3dHistPrimRawPtVsYVsMultTRKAntiLambda = new TH3F( "f3dHistPrimRawPtVsYVsMultTRKAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1372 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYVsMultTRKAntiLambda);
1373 }
1374 if(! f3dHistPrimRawPtVsYVsMultTRKK0Short) {
1375 f3dHistPrimRawPtVsYVsMultTRKK0Short = new TH3F( "f3dHistPrimRawPtVsYVsMultTRKK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1376 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYVsMultTRKK0Short);
1377 }
1378
1379 if(! f3dHistPrimRawPtVsYCMSVsMultTRKLambda) {
1380 f3dHistPrimRawPtVsYCMSVsMultTRKLambda = new TH3F( "f3dHistPrimRawPtVsYCMSVsMultTRKLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1381 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYCMSVsMultTRKLambda);
1382 }
1383 if(! f3dHistPrimRawPtVsYCMSVsMultTRKAntiLambda) {
1384 f3dHistPrimRawPtVsYCMSVsMultTRKAntiLambda = new TH3F( "f3dHistPrimRawPtVsYCMSVsMultTRKAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1385 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYCMSVsMultTRKAntiLambda);
1386 }
1387 if(! f3dHistPrimRawPtVsYCMSVsMultTRKK0Short) {
1388 f3dHistPrimRawPtVsYCMSVsMultTRKK0Short = new TH3F( "f3dHistPrimRawPtVsYCMSVsMultTRKK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1389 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYCMSVsMultTRKK0Short);
1390 }
1391
1392 //--- 3D Histo (Pt, Y, Multiplicity), SPD Version
1393
1394 if(! f3dHistPrimRawPtVsYVsMultSPDLambda) {
1395 f3dHistPrimRawPtVsYVsMultSPDLambda = new TH3F( "f3dHistPrimRawPtVsYVsMultSPDLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1396 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYVsMultSPDLambda);
1397 }
1398 if(! f3dHistPrimRawPtVsYVsMultSPDAntiLambda) {
1399 f3dHistPrimRawPtVsYVsMultSPDAntiLambda = new TH3F( "f3dHistPrimRawPtVsYVsMultSPDAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1400 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYVsMultSPDAntiLambda);
1401 }
1402 if(! f3dHistPrimRawPtVsYVsMultSPDK0Short) {
1403 f3dHistPrimRawPtVsYVsMultSPDK0Short = new TH3F( "f3dHistPrimRawPtVsYVsMultSPDK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1404 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYVsMultSPDK0Short);
1405 }
1406
1407 if(! f3dHistPrimRawPtVsYCMSVsMultSPDLambda) {
1408 f3dHistPrimRawPtVsYCMSVsMultSPDLambda = new TH3F( "f3dHistPrimRawPtVsYCMSVsMultSPDLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1409 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYCMSVsMultSPDLambda);
1410 }
1411 if(! f3dHistPrimRawPtVsYCMSVsMultSPDAntiLambda) {
1412 f3dHistPrimRawPtVsYCMSVsMultSPDAntiLambda = new TH3F( "f3dHistPrimRawPtVsYCMSVsMultSPDAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1413 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYCMSVsMultSPDAntiLambda);
1414 }
1415 if(! f3dHistPrimRawPtVsYCMSVsMultSPDK0Short) {
1416 f3dHistPrimRawPtVsYCMSVsMultSPDK0Short = new TH3F( "f3dHistPrimRawPtVsYCMSVsMultSPDK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1417 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimRawPtVsYCMSVsMultSPDK0Short);
1418 }
1419
1420
388b34d3 1421
df661cb7 1422//---> Non-injected particles
1423
1424 if(! f3dHistPrimRawPtVsYVsMultNonInjLambda) {
1425 f3dHistPrimRawPtVsYVsMultNonInjLambda = new TH3F( "f3dHistPrimRawPtVsYVsMultNonInjLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1426 fListHistV0->Add(f3dHistPrimRawPtVsYVsMultNonInjLambda);
1427 }
1428 if(! f3dHistPrimRawPtVsYVsMultNonInjAntiLambda) {
1429 f3dHistPrimRawPtVsYVsMultNonInjAntiLambda = new TH3F( "f3dHistPrimRawPtVsYVsMultNonInjAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1430 fListHistV0->Add(f3dHistPrimRawPtVsYVsMultNonInjAntiLambda);
1431 }
1432 if(! f3dHistPrimRawPtVsYVsMultNonInjK0Short) {
1433 f3dHistPrimRawPtVsYVsMultNonInjK0Short = new TH3F( "f3dHistPrimRawPtVsYVsMultNonInjK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1434 fListHistV0->Add(f3dHistPrimRawPtVsYVsMultNonInjK0Short);
1435 }
1436
a18e0a39 1437//--- 3D Histo (Pt, Y, MultiplicityMC)
1438
1439 if(! f3dHistPrimRawPtVsYVsMultMCLambda) {
1440 f3dHistPrimRawPtVsYVsMultMCLambda = new TH3F( "f3dHistPrimRawPtVsYVsMultMCLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; MultMC", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1441 fListHistV0->Add(f3dHistPrimRawPtVsYVsMultMCLambda);
1442 }
1443 if(! f3dHistPrimRawPtVsYVsMultMCAntiLambda) {
1444 f3dHistPrimRawPtVsYVsMultMCAntiLambda = new TH3F( "f3dHistPrimRawPtVsYVsMultMCAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; MultMC", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1445 fListHistV0->Add(f3dHistPrimRawPtVsYVsMultMCAntiLambda);
1446 }
1447 if(! f3dHistPrimRawPtVsYVsMultMCK0Short) {
1448 f3dHistPrimRawPtVsYVsMultMCK0Short = new TH3F( "f3dHistPrimRawPtVsYVsMultMCK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; MultMC", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1449 fListHistV0->Add(f3dHistPrimRawPtVsYVsMultMCK0Short);
1450 }
1451
1452//--- 3D Histo (Pt, Y, VertexZ)
1453
1454 if(! f3dHistPrimRawPtVsYVsVertexZLambda) {
1455 f3dHistPrimRawPtVsYVsVertexZLambda = new TH3F( "f3dHistPrimRawPtVsYVsVertexZLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs VertexZiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; VertexZ", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,40,-10,10);
1456 fListHistV0->Add(f3dHistPrimRawPtVsYVsVertexZLambda);
1457 }
1458 if(! f3dHistPrimRawPtVsYVsVertexZAntiLambda) {
1459 f3dHistPrimRawPtVsYVsVertexZAntiLambda = new TH3F( "f3dHistPrimRawPtVsYVsVertexZAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs VertexZiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; VertexZ", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,40,-10,10);
1460 fListHistV0->Add(f3dHistPrimRawPtVsYVsVertexZAntiLambda);
1461 }
1462 if(! f3dHistPrimRawPtVsYVsVertexZK0Short) {
1463 f3dHistPrimRawPtVsYVsVertexZK0Short = new TH3F( "f3dHistPrimRawPtVsYVsVertexZK0Short", "Pt_{K0S} Vs Y_{K0S} Vs VertexZiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; VertexZ", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,40,-10,10);
1464 fListHistV0->Add(f3dHistPrimRawPtVsYVsVertexZK0Short);
1465 }
1466
7e81bb32 1467//--- 3D Histo (Pt, Y, Multiplicity), close to PV criterion
1468
1469 if(! f3dHistPrimCloseToPVPtVsYVsMultLambda) {
1470 f3dHistPrimCloseToPVPtVsYVsMultLambda = new TH3F( "f3dHistPrimCloseToPVPtVsYVsMultLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1471 fListHistV0->Add(f3dHistPrimCloseToPVPtVsYVsMultLambda);
1472 }
1473 if(! f3dHistPrimCloseToPVPtVsYVsMultAntiLambda) {
1474 f3dHistPrimCloseToPVPtVsYVsMultAntiLambda = new TH3F( "f3dHistPrimCloseToPVPtVsYVsMultAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1475 fListHistV0->Add(f3dHistPrimCloseToPVPtVsYVsMultAntiLambda);
1476 }
1477 if(! f3dHistPrimCloseToPVPtVsYVsMultK0Short) {
1478 f3dHistPrimCloseToPVPtVsYVsMultK0Short = new TH3F( "f3dHistPrimCloseToPVPtVsYVsMultK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1479 fListHistV0->Add(f3dHistPrimCloseToPVPtVsYVsMultK0Short);
1480 }
1481
1482
bcb6ffdb 1483//--- 3D Histo (Pt, Y, Proper Decay Length)
1484
1485 if(! f3dHistPrimRawPtVsYVsDecayLengthLambda) {
1486 f3dHistPrimRawPtVsYVsDecayLengthLambda = new TH3F( "f3dHistPrimRawPtVsYVsDecayLengthLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs DecayLength; Pt_{lambda} (GeV/c); Y_{#Lambda} ; DecayLength", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,200,0,50);
1487 fListHistV0->Add(f3dHistPrimRawPtVsYVsDecayLengthLambda);
1488 }
1489 if(! f3dHistPrimRawPtVsYVsDecayLengthAntiLambda) {
1490 f3dHistPrimRawPtVsYVsDecayLengthAntiLambda = new TH3F( "f3dHistPrimRawPtVsYVsDecayLengthAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs DecayLength; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; DecayLength", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,200,0,50);
1491 fListHistV0->Add(f3dHistPrimRawPtVsYVsDecayLengthAntiLambda);
1492 }
1493 if(! f3dHistPrimRawPtVsYVsDecayLengthK0Short) {
1494 f3dHistPrimRawPtVsYVsDecayLengthK0Short = new TH3F( "f3dHistPrimRawPtVsYVsDecayLengthK0Short", "Pt_{K0S} Vs Y_{K0S} Vs DecayLength; Pt_{K0S} (GeV/c); Y_{K0S} ; DecayLength", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,200,0,50);
1495 fListHistV0->Add(f3dHistPrimRawPtVsYVsDecayLengthK0Short);
1496 }
1497
68e484c4 1498//--------------------------------------------------------------------------------------
1499// V0M for Cascades
c228a5af 1500//--------------------------------------------------------------------------------------
1501//--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
bcb6ffdb 1502
1503 if(! f3dHistGenPtVsYVsMultXiMinus) {
1504 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);
1505 fListHistV0->Add(f3dHistGenPtVsYVsMultXiMinus);
1506 }
1507 if(! f3dHistGenPtVsYVsMultXiPlus) {
1508 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);
1509 fListHistV0->Add(f3dHistGenPtVsYVsMultXiPlus);
1510 }
68e484c4 1511//CASCADEs, Y CMS
e039e6b3 1512 if(! f3dHistGenPtVsYCMSVsMultXiMinus) {
1513 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);
1514 fListHistV0->Add(f3dHistGenPtVsYCMSVsMultXiMinus);
1515 }
1516 if(! f3dHistGenPtVsYCMSVsMultXiPlus) {
1517 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);
1518 fListHistV0->Add(f3dHistGenPtVsYCMSVsMultXiPlus);
1519 }
e039e6b3 1520
c228a5af 1521//--------------------------------------------------------------------------------------
1522//--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1523
1524 if(! f3dHistGenSelectedPtVsYVsMultXiMinus) {
1525 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);
1526 fListHistV0->Add(f3dHistGenSelectedPtVsYVsMultXiMinus);
1527 }
1528 if(! f3dHistGenSelectedPtVsYVsMultXiPlus) {
1529 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);
1530 fListHistV0->Add(f3dHistGenSelectedPtVsYVsMultXiPlus);
1531 }
c228a5af 1532
e039e6b3 1533//CASCADES, analysis level, y CMS
e039e6b3 1534//--------------------------------------------------------------------------------------
1535//--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1536
1537 if(! f3dHistGenSelectedPtVsYCMSVsMultXiMinus) {
1538 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);
1539 fListHistV0->Add(f3dHistGenSelectedPtVsYCMSVsMultXiMinus);
1540 }
1541 if(! f3dHistGenSelectedPtVsYCMSVsMultXiPlus) {
1542 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);
1543 fListHistV0->Add(f3dHistGenSelectedPtVsYCMSVsMultXiPlus);
1544 }
68e484c4 1545
1546 //--------------------------------------------------------------------------------------
1547 // V0A for Cascades
1548 //--------------------------------------------------------------------------------------
1549 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1550
1551 if(! f3dHistGenPtVsYVsMultV0AXiMinus) {
1552 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);
1553 if( fkIsNuclear ) fListHistV0->Add(f3dHistGenPtVsYVsMultV0AXiMinus);
1554 }
1555 if(! f3dHistGenPtVsYVsMultV0AXiPlus) {
1556 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);
1557 if( fkIsNuclear ) fListHistV0->Add(f3dHistGenPtVsYVsMultV0AXiPlus);
1558 }
1559 //CASCADEs, Y CMS
1560 if(! f3dHistGenPtVsYCMSVsMultV0AXiMinus) {
1561 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);
1562 if( fkIsNuclear ) fListHistV0->Add(f3dHistGenPtVsYCMSVsMultV0AXiMinus);
1563 }
1564 if(! f3dHistGenPtVsYCMSVsMultV0AXiPlus) {
1565 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);
1566 if( fkIsNuclear ) fListHistV0->Add(f3dHistGenPtVsYCMSVsMultV0AXiPlus);
1567 }
1568
1569 //--------------------------------------------------------------------------------------
1570 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1571
1572 if(! f3dHistGenSelectedPtVsYVsMultV0AXiMinus) {
1573 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);
1574 if( fkIsNuclear ) fListHistV0->Add(f3dHistGenSelectedPtVsYVsMultV0AXiMinus);
1575 }
1576 if(! f3dHistGenSelectedPtVsYVsMultV0AXiPlus) {
1577 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);
1578 if( fkIsNuclear ) fListHistV0->Add(f3dHistGenSelectedPtVsYVsMultV0AXiPlus);
1579 }
1580
1581 //CASCADES, analysis level, y CMS
1582 //--------------------------------------------------------------------------------------
1583 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1584
1585 if(! f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus) {
1586 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);
1587 if( fkIsNuclear ) fListHistV0->Add(f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus);
1588 }
1589 if(! f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus) {
1590 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);
1591 if( fkIsNuclear ) fListHistV0->Add(f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus);
1592 }
1593
1594 //--------------------------------------------------------------------------------------
1595 // ZNA for Cascades
1596 //--------------------------------------------------------------------------------------
1597 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1598
1599 if(! f3dHistGenPtVsYVsMultZNAXiMinus) {
1600 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);
1601 if( fkIsNuclear ) fListHistV0->Add(f3dHistGenPtVsYVsMultZNAXiMinus);
1602 }
1603 if(! f3dHistGenPtVsYVsMultZNAXiPlus) {
1604 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);
1605 if( fkIsNuclear ) fListHistV0->Add(f3dHistGenPtVsYVsMultZNAXiPlus);
1606 }
1607 //CASCADEs, Y CMS
1608 if(! f3dHistGenPtVsYCMSVsMultZNAXiMinus) {
1609 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);
1610 if( fkIsNuclear ) fListHistV0->Add(f3dHistGenPtVsYCMSVsMultZNAXiMinus);
1611 }
1612 if(! f3dHistGenPtVsYCMSVsMultZNAXiPlus) {
1613 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);
1614 if( fkIsNuclear ) fListHistV0->Add(f3dHistGenPtVsYCMSVsMultZNAXiPlus);
1615 }
1616
1617 //--------------------------------------------------------------------------------------
1618 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1619
1620 if(! f3dHistGenSelectedPtVsYVsMultZNAXiMinus) {
1621 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);
1622 if( fkIsNuclear ) fListHistV0->Add(f3dHistGenSelectedPtVsYVsMultZNAXiMinus);
1623 }
1624 if(! f3dHistGenSelectedPtVsYVsMultZNAXiPlus) {
1625 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);
1626 if( fkIsNuclear ) fListHistV0->Add(f3dHistGenSelectedPtVsYVsMultZNAXiPlus);
1627 }
1628
1629 //CASCADES, analysis level, y CMS
1630 //--------------------------------------------------------------------------------------
1631 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1632
1633 if(! f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus) {
1634 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);
1635 if( fkIsNuclear ) fListHistV0->Add(f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus);
1636 }
1637 if(! f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus) {
1638 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);
1639 if( fkIsNuclear ) fListHistV0->Add(f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus);
1640 }
1641
1642 //--------------------------------------------------------------------------------------
1643 // TRK for Cascades
1644 //--------------------------------------------------------------------------------------
1645 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1646
1647 if(! f3dHistGenPtVsYVsMultTRKXiMinus) {
1648 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);
1649 if( fkIsNuclear ) fListHistV0->Add(f3dHistGenPtVsYVsMultTRKXiMinus);
1650 }
1651 if(! f3dHistGenPtVsYVsMultTRKXiPlus) {
1652 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);
1653 if( fkIsNuclear ) fListHistV0->Add(f3dHistGenPtVsYVsMultTRKXiPlus);
1654 }
1655 //CASCADEs, Y CMS
1656 if(! f3dHistGenPtVsYCMSVsMultTRKXiMinus) {
1657 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);
1658 if( fkIsNuclear ) fListHistV0->Add(f3dHistGenPtVsYCMSVsMultTRKXiMinus);
1659 }
1660 if(! f3dHistGenPtVsYCMSVsMultTRKXiPlus) {
1661 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);
1662 if( fkIsNuclear ) fListHistV0->Add(f3dHistGenPtVsYCMSVsMultTRKXiPlus);
1663 }
1664
1665 //--------------------------------------------------------------------------------------
1666 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1667
1668 if(! f3dHistGenSelectedPtVsYVsMultTRKXiMinus) {
1669 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);
1670 if( fkIsNuclear ) fListHistV0->Add(f3dHistGenSelectedPtVsYVsMultTRKXiMinus);
1671 }
1672 if(! f3dHistGenSelectedPtVsYVsMultTRKXiPlus) {
1673 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);
1674 if( fkIsNuclear ) fListHistV0->Add(f3dHistGenSelectedPtVsYVsMultTRKXiPlus);
1675 }
1676
1677 //CASCADES, analysis level, y CMS
1678 //--------------------------------------------------------------------------------------
1679 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1680
1681 if(! f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus) {
1682 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);
1683 if( fkIsNuclear ) fListHistV0->Add(f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus);
1684 }
1685 if(! f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus) {
1686 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);
1687 if( fkIsNuclear ) fListHistV0->Add(f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus);
1688 }
1689
1690
1691 //--------------------------------------------------------------------------------------
1692 // SPD for Cascades
1693 //--------------------------------------------------------------------------------------
1694 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
1695
1696 if(! f3dHistGenPtVsYVsMultSPDXiMinus) {
1697 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);
1698 if( fkIsNuclear ) fListHistV0->Add(f3dHistGenPtVsYVsMultSPDXiMinus);
1699 }
1700 if(! f3dHistGenPtVsYVsMultSPDXiPlus) {
1701 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);
1702 if( fkIsNuclear ) fListHistV0->Add(f3dHistGenPtVsYVsMultSPDXiPlus);
1703 }
1704 //CASCADEs, Y CMS
1705 if(! f3dHistGenPtVsYCMSVsMultSPDXiMinus) {
1706 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);
1707 if( fkIsNuclear ) fListHistV0->Add(f3dHistGenPtVsYCMSVsMultSPDXiMinus);
1708 }
1709 if(! f3dHistGenPtVsYCMSVsMultSPDXiPlus) {
1710 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);
1711 if( fkIsNuclear ) fListHistV0->Add(f3dHistGenPtVsYCMSVsMultSPDXiPlus);
1712 }
1713
1714 //--------------------------------------------------------------------------------------
1715 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1716
1717 if(! f3dHistGenSelectedPtVsYVsMultSPDXiMinus) {
1718 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);
1719 if( fkIsNuclear ) fListHistV0->Add(f3dHistGenSelectedPtVsYVsMultSPDXiMinus);
1720 }
1721 if(! f3dHistGenSelectedPtVsYVsMultSPDXiPlus) {
1722 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);
1723 if( fkIsNuclear ) fListHistV0->Add(f3dHistGenSelectedPtVsYVsMultSPDXiPlus);
1724 }
1725
1726 //CASCADES, analysis level, y CMS
1727 //--------------------------------------------------------------------------------------
1728 //--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
1729
1730 if(! f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus) {
1731 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);
1732 if( fkIsNuclear ) fListHistV0->Add(f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus);
1733 }
1734 if(! f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus) {
1735 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);
1736 if( fkIsNuclear ) fListHistV0->Add(f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus);
1737 }
1738
e039e6b3 1739
bcb6ffdb 1740
1741//----------------------------------
1742// Histos at analysis level
1743//----------------------------------
1744
68e484c4 1745//The usual V0M business...
1746
bcb6ffdb 1747 if(! f3dHistPrimAnalysisPtVsYVsMultLambda) {
1748 f3dHistPrimAnalysisPtVsYVsMultLambda = new TH3F( "f3dHistPrimAnalysisPtVsYVsMultLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1749 fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultLambda);
1750 }
1751 if(! f3dHistPrimAnalysisPtVsYVsMultAntiLambda) {
1752 f3dHistPrimAnalysisPtVsYVsMultAntiLambda = new TH3F( "f3dHistPrimAnalysisPtVsYVsMultAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1753 fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultAntiLambda);
1754 }
1755 if(! f3dHistPrimAnalysisPtVsYVsMultK0Short) {
1756 f3dHistPrimAnalysisPtVsYVsMultK0Short = new TH3F( "f3dHistPrimAnalysisPtVsYVsMultK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1757 fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultK0Short);
1758 }
1759
388b34d3 1760 if(! f3dHistPrimAnalysisPtVsYCMSVsMultLambda) {
1761 f3dHistPrimAnalysisPtVsYCMSVsMultLambda = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1762 fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultLambda);
1763 }
1764 if(! f3dHistPrimAnalysisPtVsYCMSVsMultAntiLambda) {
1765 f3dHistPrimAnalysisPtVsYCMSVsMultAntiLambda = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1766 fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultAntiLambda);
1767 }
1768 if(! f3dHistPrimAnalysisPtVsYCMSVsMultK0Short) {
1769 f3dHistPrimAnalysisPtVsYCMSVsMultK0Short = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1770 fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultK0Short);
1771 }
68e484c4 1772
b2c306f0 1773 //TRUE Multiplicity Business
1774
1775 if(! f3dHistPrimAnalysisPtVsYVsMultMCLambda) {
1776 f3dHistPrimAnalysisPtVsYVsMultMCLambda = new TH3F( "f3dHistPrimAnalysisPtVsYVsMultMCLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; MultMC", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1777 fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultMCLambda);
1778 }
1779 if(! f3dHistPrimAnalysisPtVsYVsMultMCAntiLambda) {
1780 f3dHistPrimAnalysisPtVsYVsMultMCAntiLambda = new TH3F( "f3dHistPrimAnalysisPtVsYVsMultMCAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; MultMC", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1781 fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultMCAntiLambda);
1782 }
1783 if(! f3dHistPrimAnalysisPtVsYVsMultMCK0Short) {
1784 f3dHistPrimAnalysisPtVsYVsMultMCK0Short = new TH3F( "f3dHistPrimAnalysisPtVsYVsMultMCK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; MultMC", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1785 fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultMCK0Short);
1786 }
1787
1788 if(! f3dHistPrimAnalysisPtVsYCMSVsMultMCLambda) {
1789 f3dHistPrimAnalysisPtVsYCMSVsMultMCLambda = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultMCLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; MultMC", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1790 fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultMCLambda);
1791 }
1792 if(! f3dHistPrimAnalysisPtVsYCMSVsMultMCAntiLambda) {
1793 f3dHistPrimAnalysisPtVsYCMSVsMultMCAntiLambda = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultMCAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; MultMC", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1794 fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultMCAntiLambda);
1795 }
1796 if(! f3dHistPrimAnalysisPtVsYCMSVsMultMCK0Short) {
1797 f3dHistPrimAnalysisPtVsYCMSVsMultMCK0Short = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultMCK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; MultMC", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1798 fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultMCK0Short);
1799 }
1800
68e484c4 1801 //V0A
1802
1803 if(! f3dHistPrimAnalysisPtVsYVsMultV0ALambda) {
1804 f3dHistPrimAnalysisPtVsYVsMultV0ALambda = new TH3F( "f3dHistPrimAnalysisPtVsYVsMultV0ALambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1805 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultV0ALambda);
1806 }
1807 if(! f3dHistPrimAnalysisPtVsYVsMultV0AAntiLambda) {
1808 f3dHistPrimAnalysisPtVsYVsMultV0AAntiLambda = new TH3F( "f3dHistPrimAnalysisPtVsYVsMultV0AAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1809 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultV0AAntiLambda);
1810 }
1811 if(! f3dHistPrimAnalysisPtVsYVsMultV0AK0Short) {
1812 f3dHistPrimAnalysisPtVsYVsMultV0AK0Short = new TH3F( "f3dHistPrimAnalysisPtVsYVsMultV0AK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1813 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultV0AK0Short);
1814 }
1815
1816 if(! f3dHistPrimAnalysisPtVsYCMSVsMultV0ALambda) {
1817 f3dHistPrimAnalysisPtVsYCMSVsMultV0ALambda = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultV0ALambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1818 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultV0ALambda);
1819 }
1820 if(! f3dHistPrimAnalysisPtVsYCMSVsMultV0AAntiLambda) {
1821 f3dHistPrimAnalysisPtVsYCMSVsMultV0AAntiLambda = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultV0AAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1822 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultV0AAntiLambda);
1823 }
1824 if(! f3dHistPrimAnalysisPtVsYCMSVsMultV0AK0Short) {
1825 f3dHistPrimAnalysisPtVsYCMSVsMultV0AK0Short = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultV0AK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1826 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultV0AK0Short);
1827 }
1828
1829 //ZNA
1830
1831 if(! f3dHistPrimAnalysisPtVsYVsMultZNALambda) {
1832 f3dHistPrimAnalysisPtVsYVsMultZNALambda = new TH3F( "f3dHistPrimAnalysisPtVsYVsMultZNALambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1833 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultZNALambda);
1834 }
1835 if(! f3dHistPrimAnalysisPtVsYVsMultZNAAntiLambda) {
1836 f3dHistPrimAnalysisPtVsYVsMultZNAAntiLambda = new TH3F( "f3dHistPrimAnalysisPtVsYVsMultZNAAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1837 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultZNAAntiLambda);
1838 }
1839 if(! f3dHistPrimAnalysisPtVsYVsMultZNAK0Short) {
1840 f3dHistPrimAnalysisPtVsYVsMultZNAK0Short = new TH3F( "f3dHistPrimAnalysisPtVsYVsMultZNAK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1841 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultZNAK0Short);
1842 }
1843
1844 if(! f3dHistPrimAnalysisPtVsYCMSVsMultZNALambda) {
1845 f3dHistPrimAnalysisPtVsYCMSVsMultZNALambda = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultZNALambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1846 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultZNALambda);
1847 }
1848 if(! f3dHistPrimAnalysisPtVsYCMSVsMultZNAAntiLambda) {
1849 f3dHistPrimAnalysisPtVsYCMSVsMultZNAAntiLambda = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultZNAAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1850 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultZNAAntiLambda);
1851 }
1852 if(! f3dHistPrimAnalysisPtVsYCMSVsMultZNAK0Short) {
1853 f3dHistPrimAnalysisPtVsYCMSVsMultZNAK0Short = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultZNAK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1854 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultZNAK0Short);
1855 }
1856
1857 //TRK
1858
1859 if(! f3dHistPrimAnalysisPtVsYVsMultTRKLambda) {
1860 f3dHistPrimAnalysisPtVsYVsMultTRKLambda = new TH3F( "f3dHistPrimAnalysisPtVsYVsMultTRKLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1861 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultTRKLambda);
1862 }
1863 if(! f3dHistPrimAnalysisPtVsYVsMultTRKAntiLambda) {
1864 f3dHistPrimAnalysisPtVsYVsMultTRKAntiLambda = new TH3F( "f3dHistPrimAnalysisPtVsYVsMultTRKAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1865 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultTRKAntiLambda);
1866 }
1867 if(! f3dHistPrimAnalysisPtVsYVsMultTRKK0Short) {
1868 f3dHistPrimAnalysisPtVsYVsMultTRKK0Short = new TH3F( "f3dHistPrimAnalysisPtVsYVsMultTRKK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1869 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultTRKK0Short);
1870 }
1871
1872 if(! f3dHistPrimAnalysisPtVsYCMSVsMultTRKLambda) {
1873 f3dHistPrimAnalysisPtVsYCMSVsMultTRKLambda = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultTRKLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1874 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultTRKLambda);
1875 }
1876 if(! f3dHistPrimAnalysisPtVsYCMSVsMultTRKAntiLambda) {
1877 f3dHistPrimAnalysisPtVsYCMSVsMultTRKAntiLambda = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultTRKAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1878 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultTRKAntiLambda);
1879 }
1880 if(! f3dHistPrimAnalysisPtVsYCMSVsMultTRKK0Short) {
1881 f3dHistPrimAnalysisPtVsYCMSVsMultTRKK0Short = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultTRKK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1882 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultTRKK0Short);
1883 }
1884
1885 //SPD
1886
1887 if(! f3dHistPrimAnalysisPtVsYVsMultSPDLambda) {
1888 f3dHistPrimAnalysisPtVsYVsMultSPDLambda = new TH3F( "f3dHistPrimAnalysisPtVsYVsMultSPDLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1889 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultSPDLambda);
1890 }
1891 if(! f3dHistPrimAnalysisPtVsYVsMultSPDAntiLambda) {
1892 f3dHistPrimAnalysisPtVsYVsMultSPDAntiLambda = new TH3F( "f3dHistPrimAnalysisPtVsYVsMultSPDAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1893 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultSPDAntiLambda);
1894 }
1895 if(! f3dHistPrimAnalysisPtVsYVsMultSPDK0Short) {
1896 f3dHistPrimAnalysisPtVsYVsMultSPDK0Short = new TH3F( "f3dHistPrimAnalysisPtVsYVsMultSPDK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1897 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultSPDK0Short);
1898 }
1899
1900 if(! f3dHistPrimAnalysisPtVsYCMSVsMultSPDLambda) {
1901 f3dHistPrimAnalysisPtVsYCMSVsMultSPDLambda = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultSPDLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1902 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultSPDLambda);
1903 }
1904 if(! f3dHistPrimAnalysisPtVsYCMSVsMultSPDAntiLambda) {
1905 f3dHistPrimAnalysisPtVsYCMSVsMultSPDAntiLambda = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultSPDAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1906 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultSPDAntiLambda);
1907 }
1908 if(! f3dHistPrimAnalysisPtVsYCMSVsMultSPDK0Short) {
1909 f3dHistPrimAnalysisPtVsYCMSVsMultSPDK0Short = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultSPDK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
1910 if( fkIsNuclear ) fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultSPDK0Short);
1911 }
388b34d3 1912
bcb6ffdb 1913//----------------------------------
1914// Primary Vertex Position Histos
1915//----------------------------------
1916
1917 if(! fHistPVx) {
1918 fHistPVx = new TH1F("fHistPVx",
1919 "PV x position;Nbr of Evts;x",
1920 2000, -0.5, 0.5);
1921 fListHistV0->Add(fHistPVx);
1922 }
1923 if(! fHistPVy) {
1924 fHistPVy = new TH1F("fHistPVy",
1925 "PV y position;Nbr of Evts;y",
1926 2000, -0.5, 0.5);
1927 fListHistV0->Add(fHistPVy);
1928 }
1929 if(! fHistPVz) {
1930 fHistPVz = new TH1F("fHistPVz",
1931 "PV z position;Nbr of Evts;z",
1932 400, -20, 20);
1933 fListHistV0->Add(fHistPVz);
1934 }
1935
1936 if(! fHistPVxAnalysis) {
1937 fHistPVxAnalysis = new TH1F("fHistPVxAnalysis",
1938 "PV x position;Nbr of Evts;x",
1939 2000, -0.5, 0.5);
1940 fListHistV0->Add(fHistPVxAnalysis);
1941 }
1942 if(! fHistPVyAnalysis) {
1943 fHistPVyAnalysis = new TH1F("fHistPVyAnalysis",
1944 "PV y position;Nbr of Evts;y",
1945 2000, -0.5, 0.5);
1946 fListHistV0->Add(fHistPVyAnalysis);
1947 }
1948 if(! fHistPVzAnalysis) {
1949 fHistPVzAnalysis = new TH1F("fHistPVzAnalysis",
1950 "PV z position;Nbr of Evts;z",
1951 400, -20, 20);
1952 fListHistV0->Add(fHistPVzAnalysis);
1953 }
1954
1955 if(! fHistPVxAnalysisHasHighPtLambda) {
1956 fHistPVxAnalysisHasHighPtLambda = new TH1F("fHistPVxAnalysisHasHighPtLambda",
1957 "PV x position;Nbr of Evts;x",
1958 2000, -0.5, 0.5);
1959 fListHistV0->Add(fHistPVxAnalysisHasHighPtLambda);
1960 }
1961 if(! fHistPVyAnalysisHasHighPtLambda) {
1962 fHistPVyAnalysisHasHighPtLambda = new TH1F("fHistPVyAnalysisHasHighPtLambda",
1963 "PV y position;Nbr of Evts;y",
1964 2000, -0.5, 0.5);
1965 fListHistV0->Add(fHistPVyAnalysisHasHighPtLambda);
1966 }
1967 if(! fHistPVzAnalysisHasHighPtLambda) {
1968 fHistPVzAnalysisHasHighPtLambda = new TH1F("fHistPVzAnalysisHasHighPtLambda",
1969 "PV z position;Nbr of Evts;z",
1970 400, -20, 20);
1971 fListHistV0->Add(fHistPVzAnalysisHasHighPtLambda);
1972 }
4f8ed367 1973 if(! fHistSwappedV0Counter) {
1974 fHistSwappedV0Counter = new TH1F("fHistSwappedV0Counter",
1975 "Swap or not histo;Swapped (1) or not (0); count",
1976 2, 0, 2);
1977 fListHistV0->Add(fHistSwappedV0Counter);
1978 }
1979
bcb6ffdb 1980 //List of Histograms: Normal
1981 PostData(1, fListHistV0);
1982
1983 //TTree Object: Saved to base directory. Should cache to disk while saving.
1984 //(Important to avoid excessive memory usage, particularly when merging)
1985 PostData(2, fTree);
1986
1987}// end UserCreateOutputObjects
1988
1989
1990//________________________________________________________________________
1991void AliAnalysisTaskExtractPerformanceV0::UserExec(Option_t *)
1992{
1993 // Main loop
1994 // Called for each event
1995
1996 AliESDEvent *lESDevent = 0x0;
1997 AliMCEvent *lMCevent = 0x0;
1998 AliStack *lMCstack = 0x0;
1999
2000 Int_t lNumberOfV0s = -1;
2001 Double_t lTrkgPrimaryVtxPos[3] = {-100.0, -100.0, -100.0};
2002 Double_t lBestPrimaryVtxPos[3] = {-100.0, -100.0, -100.0};
2003 Double_t lMagneticField = -10.;
2004
2005 // Connect to the InputEvent
2006 // After these lines, we should have an ESD/AOD event + the number of V0s in it.
2007
2008 // Appropriate for ESD analysis!
2009
2010 lESDevent = dynamic_cast<AliESDEvent*>( InputEvent() );
2011 if (!lESDevent) {
2012 AliWarning("ERROR: lESDevent not available \n");
2013 return;
2014 }
2015
0eebce93 2016 fTreeVariableRunNumber = lESDevent->GetRunNumber();
2017 fTreeVariableEventNumber =
2018 ( ( ((ULong64_t)lESDevent->GetPeriodNumber() ) << 36 ) |
2019 ( ((ULong64_t)lESDevent->GetOrbitNumber () ) << 12 ) |
2020 ((ULong64_t)lESDevent->GetBunchCrossNumber() ) );
2021
bcb6ffdb 2022 lMCevent = MCEvent();
2023 if (!lMCevent) {
2024 Printf("ERROR: Could not retrieve MC event \n");
2025 cout << "Name of the file with pb :" << fInputHandler->GetTree()->GetCurrentFile()->GetName() << endl;
2026 return;
2027 }
2028
2029 lMCstack = lMCevent->Stack();
2030 if (!lMCstack) {
2031 Printf("ERROR: Could not retrieve MC stack \n");
2032 cout << "Name of the file with pb :" << fInputHandler->GetTree()->GetCurrentFile()->GetName() << endl;
2033 return;
2034 }
af819bba 2035
2036 //------------------------------------------------
2037 // Rerun V0 vertexer, if asked for
2038 // --- WARNING: Be careful when using in PbPb
2039 //------------------------------------------------
2040 if( fkRunV0Vertexer ){
2041 lESDevent->ResetV0s();
2042 AliV0vertexer lV0vtxer;
2043 lV0vtxer.SetDefaultCuts(fV0Sels);
2044 lV0vtxer.Tracks2V0vertices(lESDevent);
2045 }
2046
7e81bb32 2047 TArrayF mcPrimaryVtx;
2048 AliGenEventHeader* mcHeader=lMCevent->GenEventHeader();
2049 if(!mcHeader) return;
2050 mcHeader->PrimaryVertex(mcPrimaryVtx);
bcb6ffdb 2051
2052//------------------------------------------------
2053// Multiplicity Information Acquistion
2054//------------------------------------------------
2055
4f8ed367 2056 //REVISED multiplicity estimator after 'multiplicity day' (2011)
5d43de53 2057 Int_t lMultiplicity = -100;
2058 Int_t lMultiplicityV0A = -100;
2059 Int_t lMultiplicityZNA = -100;
2060 Int_t lMultiplicityTRK = -100;
2061 Int_t lMultiplicitySPD = -100;
2062
ad0d3645 2063 //testing purposes
76029adc 2064 if(fkIsNuclear == kFALSE) lMultiplicity = fESDtrackCuts->GetReferenceMultiplicity(lESDevent, AliESDtrackCuts::kTrackletsITSTPC,0.5);
bcb6ffdb 2065
548bd092 2066 //---> If this is a nuclear collision, then go nuclear on "multiplicity" variable...
2067 //---> Warning: Experimental
2068 if(fkIsNuclear == kTRUE){
2069 AliCentrality* centrality;
2070 centrality = lESDevent->GetCentrality();
e039e6b3 2071 lMultiplicity = ( ( Int_t ) ( centrality->GetCentralityPercentile( fCentralityEstimator.Data() ) ) );
5d43de53 2072 lMultiplicityV0A = ( ( Int_t ) ( centrality->GetCentralityPercentile( "V0A" ) ) );
2073 lMultiplicityZNA = ( ( Int_t ) ( centrality->GetCentralityPercentile( "ZNA" ) ) );
2074 lMultiplicityTRK = ( ( Int_t ) ( centrality->GetCentralityPercentile( "TRK" ) ) );
f8bc074c 2075 lMultiplicitySPD = ( ( Int_t ) ( centrality->GetCentralityPercentile( "CL1" ) ) );
548bd092 2076 if (centrality->GetQuality()>1) {
2077 PostData(1, fListHistV0);
2078 PostData(2, fTree);
2079 return;
2080 }
2081 }
2082
2083 //Set variable for filling tree afterwards!
2084 //---> pp case......: GetReferenceMultiplicity
2085 //---> Pb-Pb case...: Centrality by V0M
5d43de53 2086 fTreeVariableMultiplicity = lMultiplicity;
2087 fTreeVariableMultiplicityV0A = lMultiplicityV0A;
2088 fTreeVariableMultiplicityZNA = lMultiplicityZNA;
2089 fTreeVariableMultiplicityTRK = lMultiplicityTRK;
2090 fTreeVariableMultiplicitySPD = lMultiplicitySPD;
548bd092 2091
bcb6ffdb 2092 fHistV0MultiplicityBeforeTrigSel->Fill ( lESDevent->GetNumberOfV0s() );
5d43de53 2093
2094 fHistMultiplicityBeforeTrigSel->Fill ( lMultiplicity );
2095 fHistMultiplicityV0ABeforeTrigSel->Fill ( lMultiplicityV0A );
2096 fHistMultiplicityZNABeforeTrigSel->Fill ( lMultiplicityZNA );
2097 fHistMultiplicityTRKBeforeTrigSel->Fill ( lMultiplicityTRK );
2098 fHistMultiplicitySPDBeforeTrigSel->Fill ( lMultiplicitySPD );
2099
bcb6ffdb 2100//------------------------------------------------
2101// MC Information Acquistion
2102//------------------------------------------------
2103
2104 Int_t iNumberOfPrimaries = -1;
2105 iNumberOfPrimaries = lMCstack->GetNprimary();
2106 if(iNumberOfPrimaries < 1) return;
2107 Bool_t lHasHighPtLambda = kFALSE;
2108
2109//------------------------------------------------
2110// Variable Definition
2111//------------------------------------------------
2112
2113 Int_t lNbMCPrimary = 0;
2114
2115 Int_t lPdgcodeCurrentPart = 0;
2116 Double_t lRapCurrentPart = 0;
2117 Double_t lPtCurrentPart = 0;
2118
2119 //Int_t lComeFromSigma = 0;
2120
2121 // current mc particle 's mother
2122 //Int_t iCurrentMother = 0;
2123 lNbMCPrimary = lMCstack->GetNprimary();
2124
2125//------------------------------------------------
2126// Pre-Physics Selection
2127//------------------------------------------------
2128
2129//----- Loop on primary Xi, Omega --------------------------------------------------------------
2130 for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < lNbMCPrimary; iCurrentLabelStack++)
2131 {// This is the begining of the loop on primaries
2132
2133 TParticle* lCurrentParticlePrimary = 0x0;
2134 lCurrentParticlePrimary = lMCstack->Particle( iCurrentLabelStack );
2135 if(!lCurrentParticlePrimary){
2136 Printf("Cascade loop %d - MC TParticle pointer to current stack particle = 0x0 ! Skip ...\n", iCurrentLabelStack );
2137 continue;
2138 }
c228a5af 2139 if ( TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3312 || TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3334 ) {
ad0d3645 2140 Double_t lRapXiMCPrimary = -100;
2141 if( (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) != 0 ) {
2142 if ( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) !=0 ){
2143 lRapXiMCPrimary = 0.5*TMath::Log( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) );
2144 }
2145 }
bcb6ffdb 2146
2147 //=================================================================================
c228a5af 2148 // Xi Histograms
bcb6ffdb 2149 if( lCurrentParticlePrimary->GetPdgCode() == 3312 ){
2150 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2151 f3dHistGenPtVsYVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
e039e6b3 2152 f3dHistGenPtVsYCMSVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
68e484c4 2153
2154 f3dHistGenPtVsYVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
2155 f3dHistGenPtVsYCMSVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2156 f3dHistGenPtVsYVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
2157 f3dHistGenPtVsYCMSVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
2158 f3dHistGenPtVsYVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
2159 f3dHistGenPtVsYCMSVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
2160 f3dHistGenPtVsYVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
2161 f3dHistGenPtVsYCMSVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
bcb6ffdb 2162 }
68e484c4 2163 if( lCurrentParticlePrimary->GetPdgCode() == -3312 ){
bcb6ffdb 2164 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2165 f3dHistGenPtVsYVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
e039e6b3 2166 f3dHistGenPtVsYCMSVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
68e484c4 2167
2168 f3dHistGenPtVsYVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
2169 f3dHistGenPtVsYCMSVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2170 f3dHistGenPtVsYVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
2171 f3dHistGenPtVsYCMSVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
2172 f3dHistGenPtVsYVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
2173 f3dHistGenPtVsYCMSVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
2174 f3dHistGenPtVsYVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
2175 f3dHistGenPtVsYCMSVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
c228a5af 2176 }
bcb6ffdb 2177 }
2178 }
2179//----- End Loop on primary Xi, Omega ----------------------------------------------------------
2180
a18e0a39 2181//--------- GENERATED NUMBER OF CHARGED PARTICLES
2182// ---> Set Variables to Zero again
2183// ---> Variable Definition
2184
2185 Long_t lNumberOfCharged = 0;
2186
2187//----- Loop on Stack ----------------------------------------------------------------
2188 for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < (lMCstack->GetNtrack()); iCurrentLabelStack++)
2189 {// This is the begining of the loop on tracks
2190 TParticle* particleOne = lMCstack->Particle(iCurrentLabelStack);
2191 if(!particleOne) continue;
2192 if(!particleOne->GetPDG()) continue;
2193 Double_t lThisCharge = particleOne->GetPDG()->Charge()/3.;
2194 if(TMath::Abs(lThisCharge)<0.001) continue;
2195 if(! (lMCstack->IsPhysicalPrimary(iCurrentLabelStack)) ) continue;
5d43de53 2196
2197 //Double_t gpt = particleOne -> Pt();
a18e0a39 2198 Double_t geta = particleOne -> Eta();
2199
2200 if( TMath::Abs(geta) < 0.5) lNumberOfCharged++;
2201 }//End of loop on tracks
2202//----- End Loop on Stack ------------------------------------------------------------
2203
388b34d3 2204 //Double_t lpArapidityShift = 0.465;
df661cb7 2205 Bool_t lStackNatural = kTRUE;
bcb6ffdb 2206//----- Loop on Lambda, K0Short ----------------------------------------------------------------
2207 for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < (lMCstack->GetNtrack()); iCurrentLabelStack++)
2208 {// This is the begining of the loop on tracks
2209
2210 TParticle* lCurrentParticleForLambdaCheck = 0x0;
2211 lCurrentParticleForLambdaCheck = lMCstack->Particle( iCurrentLabelStack );
2212 if(!lCurrentParticleForLambdaCheck){
2213 Printf("V0s loop %d - MC TParticle pointer to current stack particle = 0x0 ! Skip ...\n", iCurrentLabelStack );
2214 continue;
2215 }
2216
2217 //=================================================================================
2218 //Single-Strange checks
2219 // Keep only K0s, Lambda and AntiLambda:
2220 lPdgcodeCurrentPart = lCurrentParticleForLambdaCheck->GetPdgCode();
2221
2222 if ( (lCurrentParticleForLambdaCheck->GetPdgCode() == 310 ) ||
2223 (lCurrentParticleForLambdaCheck->GetPdgCode() == 3122 ) ||
2224 (lCurrentParticleForLambdaCheck->GetPdgCode() == -3122 ) )
2225 {
2226 lRapCurrentPart = MyRapidity(lCurrentParticleForLambdaCheck->Energy(),lCurrentParticleForLambdaCheck->Pz());
2227 lPtCurrentPart = lCurrentParticleForLambdaCheck->Pt();
2228
7e81bb32 2229 //Use Close to PV for filling CloseToPV histograms!
2230 Double_t dx, dy, dz;
2231
2232 dx = ( (mcPrimaryVtx.At(0)) - (lCurrentParticleForLambdaCheck->Vx()) );
2233 dy = ( (mcPrimaryVtx.At(1)) - (lCurrentParticleForLambdaCheck->Vy()) );
2234 dz = ( (mcPrimaryVtx.At(2)) - (lCurrentParticleForLambdaCheck->Vz()) );
2235 Double_t lDistToPV = TMath::Sqrt(dx*dx + dy*dy + dz*dz);
2236 if( lDistToPV <= 0.001){
2237 if( lPdgcodeCurrentPart == 3122 ){
2238 f3dHistPrimCloseToPVPtVsYVsMultLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);
2239 }
2240 if( lPdgcodeCurrentPart == -3122 ){
2241 f3dHistPrimCloseToPVPtVsYVsMultAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);
2242 }
2243 if( lPdgcodeCurrentPart == 310 ){
2244 f3dHistPrimCloseToPVPtVsYVsMultK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);
2245 }
2246 }
2247
bcb6ffdb 2248 //Use Physical Primaries only for filling PrimRaw Histograms!
2249 if ( lMCstack->IsPhysicalPrimary(iCurrentLabelStack)!=kTRUE ) continue;
2250
df661cb7 2251 lStackNatural = lMCevent->IsFromBGEvent(iCurrentLabelStack); //Is it?
2252 if (!lStackNatural){
2253 if (!(lCurrentParticleForLambdaCheck->GetFirstMother()<0))
2254 {lStackNatural = kTRUE;} // because there are primaries (ALICE definition) not produced in the collision
2255 }
2256
bcb6ffdb 2257 if( lPdgcodeCurrentPart == 3122 ){
2258 f3dHistPrimRawPtVsYVsMultLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);
388b34d3 2259 f3dHistPrimRawPtVsYCMSVsMultLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicity);
68e484c4 2260
2261 f3dHistPrimRawPtVsYVsMultV0ALambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityV0A);
2262 f3dHistPrimRawPtVsYCMSVsMultV0ALambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityV0A);
2263 f3dHistPrimRawPtVsYVsMultZNALambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityZNA);
2264 f3dHistPrimRawPtVsYCMSVsMultZNALambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityZNA);
2265 f3dHistPrimRawPtVsYVsMultTRKLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityTRK);
2266 f3dHistPrimRawPtVsYCMSVsMultTRKLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityTRK);
2267 f3dHistPrimRawPtVsYVsMultSPDLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicitySPD);
2268 f3dHistPrimRawPtVsYCMSVsMultSPDLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicitySPD);
2269
df661cb7 2270 if(lStackNatural){f3dHistPrimRawPtVsYVsMultNonInjLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);}
a18e0a39 2271 f3dHistPrimRawPtVsYVsMultMCLambda->Fill(lPtCurrentPart, lRapCurrentPart, lNumberOfCharged);
2272 f3dHistPrimRawPtVsYVsVertexZLambda->Fill(lPtCurrentPart, lRapCurrentPart, mcPrimaryVtx.At(2));
bcb6ffdb 2273 if( TMath::Abs( lCurrentParticleForLambdaCheck->Eta() )<1.2 && lPtCurrentPart>2 ){
2274 lHasHighPtLambda = kTRUE; //Keep track of events with Lambda within |eta|<1.2 and pt>2
2275 }
2276 }
2277 if( lPdgcodeCurrentPart == -3122 ){
2278 f3dHistPrimRawPtVsYVsMultAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);
388b34d3 2279 f3dHistPrimRawPtVsYCMSVsMultAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicity);
68e484c4 2280
2281 f3dHistPrimRawPtVsYVsMultV0AAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityV0A);
2282 f3dHistPrimRawPtVsYCMSVsMultV0AAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityV0A);
2283 f3dHistPrimRawPtVsYVsMultZNAAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityZNA);
2284 f3dHistPrimRawPtVsYCMSVsMultZNAAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityZNA);
2285 f3dHistPrimRawPtVsYVsMultTRKAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityTRK);
2286 f3dHistPrimRawPtVsYCMSVsMultTRKAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityTRK);
2287 f3dHistPrimRawPtVsYVsMultSPDAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicitySPD);
2288 f3dHistPrimRawPtVsYCMSVsMultSPDAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicitySPD);
2289
df661cb7 2290 if(lStackNatural){f3dHistPrimRawPtVsYVsMultNonInjAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);}
a18e0a39 2291 f3dHistPrimRawPtVsYVsMultMCAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lNumberOfCharged);
2292 f3dHistPrimRawPtVsYVsVertexZAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, mcPrimaryVtx.At(2));
bcb6ffdb 2293 }
2294 if( lPdgcodeCurrentPart == 310 ){
2295 f3dHistPrimRawPtVsYVsMultK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);
388b34d3 2296 f3dHistPrimRawPtVsYCMSVsMultK0Short->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicity);
68e484c4 2297
2298 f3dHistPrimRawPtVsYVsMultV0AK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityV0A);
2299 f3dHistPrimRawPtVsYCMSVsMultV0AK0Short->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityV0A);
2300 f3dHistPrimRawPtVsYVsMultZNAK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityZNA);
2301 f3dHistPrimRawPtVsYCMSVsMultZNAK0Short->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityZNA);
2302 f3dHistPrimRawPtVsYVsMultTRKK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityTRK);
2303 f3dHistPrimRawPtVsYCMSVsMultTRKK0Short->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityTRK);
2304 f3dHistPrimRawPtVsYVsMultSPDK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicitySPD);
2305 f3dHistPrimRawPtVsYCMSVsMultSPDK0Short->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicitySPD);
2306
df661cb7 2307 if(lStackNatural){f3dHistPrimRawPtVsYVsMultNonInjK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);}
a18e0a39 2308 f3dHistPrimRawPtVsYVsMultMCK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lNumberOfCharged);
2309 f3dHistPrimRawPtVsYVsVertexZK0Short->Fill(lPtCurrentPart, lRapCurrentPart, mcPrimaryVtx.At(2));
bcb6ffdb 2310 }
2311 //Decay Length Acquisition=====================================================
2312 Double_t decaylength = -1;
2313 Double_t lV0Mass = -1;
2314
2315 if( !(lCurrentParticleForLambdaCheck->GetDaughter(0) < 0) ) {
2316 TParticle* lDght0ofV0 = lMCstack->Particle( lCurrentParticleForLambdaCheck->GetDaughter(0) ); //get first daughter
2317 if(lDght0ofV0){ // skip if not defined.
2318 decaylength = TMath::Sqrt(
2319 TMath::Power( lCurrentParticleForLambdaCheck->Vx() - lDght0ofV0->Vx() , 2) +
2320 TMath::Power( lCurrentParticleForLambdaCheck->Vy() - lDght0ofV0->Vy() , 2) +
2321 TMath::Power( lCurrentParticleForLambdaCheck->Vz() - lDght0ofV0->Vz() , 2)
2322 );
2323 //Need to correct for relativitity! Involves multiplying by mass and dividing by momentum.
2324 if(TMath::Abs( lPdgcodeCurrentPart ) == 3122 ) { lV0Mass = 1.115683; }
2325 if(TMath::Abs( lPdgcodeCurrentPart ) == 310 ) { lV0Mass = 0.497614; }
ad0d3645 2326 if( lCurrentParticleForLambdaCheck->P() + 1e-10 != 0 ) decaylength = ( lV0Mass * decaylength ) / ( lCurrentParticleForLambdaCheck->P() + 1e-10 );
2327 if( lCurrentParticleForLambdaCheck->P() + 1e-10 == 0 ) decaylength = 1e+5;
bcb6ffdb 2328 }
2329 }
2330 if( lPdgcodeCurrentPart == 3122) f3dHistPrimRawPtVsYVsDecayLengthLambda ->Fill( lPtCurrentPart, lRapCurrentPart , decaylength );
2331 if( lPdgcodeCurrentPart == -3122) f3dHistPrimRawPtVsYVsDecayLengthAntiLambda ->Fill( lPtCurrentPart, lRapCurrentPart , decaylength );
2332 if( lPdgcodeCurrentPart == 310) f3dHistPrimRawPtVsYVsDecayLengthK0Short ->Fill( lPtCurrentPart, lRapCurrentPart , decaylength );
2333 }
2334 }//End of loop on tracks
2335//----- End Loop on Lambda, K0Short ------------------------------------------------------------
2336
1d94e33b 2337
2338 f2dHistMultiplicityVsTrueBeforeTrigSel->Fill ( lMultiplicity , lNumberOfCharged );
2339
a18e0a39 2340 fTreeVariableMultiplicityMC = lNumberOfCharged;
2341
1d94e33b 2342 fHistGenVertexZBeforeTrigSel->Fill( (mcPrimaryVtx.At(2)) );
2343
bcb6ffdb 2344 lPdgcodeCurrentPart = 0;
2345 lRapCurrentPart = 0;
2346 lPtCurrentPart = 0;
2347
2348//------------------------------------------------
2349// Physics Selection
2350//------------------------------------------------
87e78684 2351
2352 UInt_t maskIsSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
2353 Bool_t isSelected = 0;
2354 Bool_t isSelectedExtra = kTRUE; //extra sel, default YES
2355 isSelected = (maskIsSelected & AliVEvent::kMB) == AliVEvent::kMB;
2356
2357 //pA triggering: CINT7
2358 if( fkSwitchINT7 ) isSelected = (maskIsSelected & AliVEvent::kINT7) == AliVEvent::kINT7;
2359
2360 //Extra selection applies if with/without SDD is to be dealth with
2361 if( fkFastOnly == "kFastOnly"){
2362 //If not kFastOnly, isSelectedExtra will be kFALSE; procedure will reject it
2363 isSelectedExtra = (maskIsSelected & AliVEvent::kFastOnly) == AliVEvent::kFastOnly;
2364 }
2365 if( fkFastOnly == "NotkFastOnly"){
2366 //If not kFastOnly, isSelectedExtra will be kTRUE; procedure will accept it
2367 isSelectedExtra = !( (maskIsSelected & AliVEvent::kFastOnly) == AliVEvent::kFastOnly );
2368 }
2369
2370 //Standard Min-Bias Selection
2371 if ( ! isSelected ) {
2372 PostData(1, fListHistV0);
2373 PostData(2, fTree);
2374 return;
2375 }
2376 //Check if goes through extra selections
2377 //isSelectedExtra will be true in case -> fkFastOnly==""
2378 //isSelectedExtra will be true in case -> fkFastOnly=="kFastOnly" && bit kFastOnly ON
2379 //isSelectedExtra will be true in case -> fkFastOnly=="NotkFastOnly" && bit kFastOnly OFF
2380 if ( !isSelectedExtra ) {
2381 PostData(1, fListHistV0);
2382 PostData(2, fTree);
2383 return;
2384 }
2385
2386 f2dHistMultiplicityVsTrueForTrigEvt->Fill ( lMultiplicity , lNumberOfCharged );
2387 fHistGenVertexZForTrigEvt->Fill( mcPrimaryVtx.At(2) );
2388
bcb6ffdb 2389//------------------------------------------------
2390// After Trigger Selection
2391//------------------------------------------------
2392
2393 lNumberOfV0s = lESDevent->GetNumberOfV0s();
2394
2395 //Set variable for filling tree afterwards!
bcb6ffdb 2396 fHistV0MultiplicityForTrigEvt->Fill(lNumberOfV0s);
2397 fHistMultiplicityForTrigEvt->Fill ( lMultiplicity );
5d43de53 2398 fHistMultiplicityV0AForTrigEvt ->Fill( lMultiplicityV0A );
2399 fHistMultiplicityZNAForTrigEvt ->Fill( lMultiplicityZNA );
2400 fHistMultiplicityTRKForTrigEvt ->Fill( lMultiplicityTRK );
2401 fHistMultiplicitySPDForTrigEvt ->Fill( lMultiplicitySPD );
bcb6ffdb 2402
2403//------------------------------------------------
2404// Getting: Primary Vertex + MagField Info
2405//------------------------------------------------
2406
2407 const AliESDVertex *lPrimaryTrackingESDVtx = lESDevent->GetPrimaryVertexTracks();
2408 // get the vtx stored in ESD found with tracks
2409 lPrimaryTrackingESDVtx->GetXYZ( lTrkgPrimaryVtxPos );
2410
2411 const AliESDVertex *lPrimaryBestESDVtx = lESDevent->GetPrimaryVertex();
2412 // get the best primary vertex available for the event
2413 // As done in AliCascadeVertexer, we keep the one which is the best one available.
2414 // between : Tracking vertex > SPD vertex > TPC vertex > default SPD vertex
2415 // This one will be used for next calculations (DCA essentially)
2416 lPrimaryBestESDVtx->GetXYZ( lBestPrimaryVtxPos );
2417
2418 Double_t lPrimaryVtxPosition[3];
2419 const AliVVertex *primaryVtx = lESDevent->GetPrimaryVertex();
2420 lPrimaryVtxPosition[0] = primaryVtx->GetX();
2421 lPrimaryVtxPosition[1] = primaryVtx->GetY();
2422 lPrimaryVtxPosition[2] = primaryVtx->GetZ();
2423 fHistPVx->Fill( lPrimaryVtxPosition[0] );
2424 fHistPVy->Fill( lPrimaryVtxPosition[1] );
2425 fHistPVz->Fill( lPrimaryVtxPosition[2] );
2426
1d94e33b 2427 f2dHistMultiplicityVsVertexZForTrigEvt->Fill( lMultiplicity, lPrimaryVtxPosition[2] );
2428
14ba3f35 2429 //------------------------------------------------
2430 // Primary Vertex Z position: SKIP
2431 //------------------------------------------------
2432
2433 if(TMath::Abs(lBestPrimaryVtxPos[2]) > 10.0 && fkpAVertexSelection == kFALSE) {
2434 AliWarning("Pb / | Z position of Best Prim Vtx | > 10.0 cm ... return !");
2435 PostData(1, fListHistV0);
2436 PostData(2, fTree);
2437 return;
2438 }
2439 if(fkpAVertexSelection==kTRUE && fUtils->IsFirstEventInChunk(lESDevent)) {
2440 AliWarning("Pb / | This is the first event in the chunk!");
2441 PostData(1, fListHistV0);
2442 PostData(2, fTree);
2443 return;
2444 }
2445 if(fkpAVertexSelection==kTRUE && !fUtils->IsVertexSelected2013pA(lESDevent)) {
2446 AliWarning("Pb / | Vertex not selected by 2013 pA criteria!");
2447 PostData(1, fListHistV0);
2448 PostData(2, fTree);
2449 return;
2450 }
2451
2452 f2dHistMultiplicityVsVertexZ->Fill( lMultiplicity, lPrimaryVtxPosition[2] );
2453
2454 lMagneticField = lESDevent->GetMagneticField( );
2455 fHistV0MultiplicityForSelEvt ->Fill( lNumberOfV0s );
2456 fHistMultiplicity->Fill(lMultiplicity);
2457 fHistMultiplicityV0A->Fill(lMultiplicityV0A);
2458 fHistMultiplicityZNA->Fill(lMultiplicityZNA);
2459 fHistMultiplicityTRK->Fill(lMultiplicityTRK);
2460 fHistMultiplicitySPD->Fill(lMultiplicitySPD);
2461 f2dHistMultiplicityVsTrue->Fill ( lMultiplicity , lNumberOfCharged );
2462 fHistGenVertexZ->Fill( (mcPrimaryVtx.At(2)) );
2463 //------------------------------------------------
bcb6ffdb 2464// SKIP: Events with well-established PVtx
2465//------------------------------------------------
2466
2467 const AliESDVertex *lPrimaryTrackingESDVtxCheck = lESDevent->GetPrimaryVertexTracks();
2468 const AliESDVertex *lPrimarySPDVtx = lESDevent->GetPrimaryVertexSPD();
14ba3f35 2469 if (!lPrimarySPDVtx->GetStatus() && !lPrimaryTrackingESDVtxCheck->GetStatus() && fkpAVertexSelection == kFALSE){
bcb6ffdb 2470 AliWarning("Pb / No SPD prim. vertex nor prim. Tracking vertex ... return !");
2471 PostData(1, fListHistV0);
2472 PostData(2, fTree);
2473 return;
2474 }
1d94e33b 2475
2476 f2dHistMultiplicityVsVertexZNoTPCOnly->Fill( lMultiplicity, lPrimaryVtxPosition[2] );
bcb6ffdb 2477 fHistV0MultiplicityForSelEvtNoTPCOnly ->Fill( lNumberOfV0s );
2478 fHistMultiplicityNoTPCOnly->Fill(lMultiplicity);
5d43de53 2479 fHistMultiplicityV0ANoTPCOnly->Fill(lMultiplicityV0A);
2480 fHistMultiplicityZNANoTPCOnly->Fill(lMultiplicityZNA);
2481 fHistMultiplicityTRKNoTPCOnly->Fill(lMultiplicityTRK);
2482 fHistMultiplicitySPDNoTPCOnly->Fill(lMultiplicitySPD);
1d94e33b 2483 f2dHistMultiplicityVsTrueNoTPCOnly->Fill ( lMultiplicity , lNumberOfCharged );
2484 fHistGenVertexZNoTPCOnly->Fill( (mcPrimaryVtx.At(2)) );
bcb6ffdb 2485//------------------------------------------------
2486// Pileup Rejection Studies
2487//------------------------------------------------
2488
2489 // FIXME : quality selection regarding pile-up rejection
776ebcfc 2490 if(lESDevent->IsPileupFromSPD() && !fkIsNuclear && fkRejectPileup ){// 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
bcb6ffdb 2491 AliWarning("Pb / This is tagged as Pileup from SPD... return !");
2492 PostData(1, fListHistV0);
2493 PostData(2, fTree);
2494 return;
2495 }
1d94e33b 2496 f2dHistMultiplicityVsVertexZNoTPCOnlyNoPileup->Fill( lMultiplicity, lPrimaryVtxPosition[2] );
bcb6ffdb 2497 fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup ->Fill( lNumberOfV0s );
5d43de53 2498
bcb6ffdb 2499 fHistMultiplicityNoTPCOnlyNoPileup->Fill(lMultiplicity);
5d43de53 2500 fHistMultiplicityV0ANoTPCOnlyNoPileup->Fill(lMultiplicityV0A);
2501 fHistMultiplicityZNANoTPCOnlyNoPileup->Fill(lMultiplicityZNA);
2502 fHistMultiplicityTRKNoTPCOnlyNoPileup->Fill(lMultiplicityTRK);
2503 fHistMultiplicitySPDNoTPCOnlyNoPileup->Fill(lMultiplicitySPD);
2504
1d94e33b 2505 f2dHistMultiplicityVsTrueNoTPCOnlyNoPileup->Fill ( lMultiplicity , lNumberOfCharged );
2506 fHistGenVertexZNoTPCOnlyNoPileup->Fill( (mcPrimaryVtx.At(2)) );
bcb6ffdb 2507 //Do control histograms without the IsFromVertexerZ events, but consider them in analysis...
2508 if( ! (lESDevent->GetPrimaryVertex()->IsFromVertexerZ() ) ){
2509 fHistPVxAnalysis->Fill( lPrimaryVtxPosition[0] );
2510 fHistPVyAnalysis->Fill( lPrimaryVtxPosition[1] );
2511 fHistPVzAnalysis->Fill( lPrimaryVtxPosition[2] );
2512 if ( lHasHighPtLambda == kTRUE ){
2513 fHistPVxAnalysisHasHighPtLambda->Fill( lPrimaryVtxPosition[0] );
2514 fHistPVyAnalysisHasHighPtLambda->Fill( lPrimaryVtxPosition[1] );
2515 fHistPVzAnalysisHasHighPtLambda->Fill( lPrimaryVtxPosition[2] );
2516 }
2517 }
2518
a18e0a39 2519 fTreeVariableVertexZ = lPrimaryVtxPosition[2];
2520
653265df 2521 fTreeVariablePVx = lPrimaryVtxPosition[0];
2522 fTreeVariablePVy = lPrimaryVtxPosition[1];
2523 fTreeVariablePVz = lPrimaryVtxPosition[2];
2524
2525 fTreeVariableMCPVx = (mcPrimaryVtx.At(0));
2526 fTreeVariableMCPVy = (mcPrimaryVtx.At(1));
2527 fTreeVariableMCPVz = (mcPrimaryVtx.At(2));
2528
bcb6ffdb 2529//------------------------------------------------
2530// stack loop starts here
2531//------------------------------------------------
2532
2533//---> Loop over ALL PARTICLES
2534
2535 for (Int_t iMc = 0; iMc < (lMCstack->GetNtrack()); iMc++) {
2536 TParticle *p0 = lMCstack->Particle(iMc);
2537 if (!p0) {
2538 //Printf("ERROR: particle with label %d not found in lMCstack (mc loop)", iMc);
2539 continue;
2540 }
2541 lPdgcodeCurrentPart = p0->GetPdgCode();
2542
2543 // Keep only K0s, Lambda and AntiLambda:
2544 if ( (lPdgcodeCurrentPart != 310 ) && (lPdgcodeCurrentPart != 3122 ) && (lPdgcodeCurrentPart != -3122 ) ) continue;
2545
2546 lRapCurrentPart = MyRapidity(p0->Energy(),p0->Pz());
2547 lPtCurrentPart = p0->Pt();
2548
2549 //Use Physical Primaries only for filling PrimRaw Histograms!
2550 if ( lMCstack->IsPhysicalPrimary(iMc)!=kTRUE ) continue;
2551
2552 if( lPdgcodeCurrentPart == 3122 ){
b2c306f0 2553 //NRaw
2554 f3dHistPrimAnalysisPtVsYVsMultLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);
2555 f3dHistPrimAnalysisPtVsYCMSVsMultLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicity);
2556 //NTrue
2557 f3dHistPrimAnalysisPtVsYVsMultMCLambda->Fill(lPtCurrentPart, lRapCurrentPart, lNumberOfCharged);
2558 f3dHistPrimAnalysisPtVsYCMSVsMultMCLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lNumberOfCharged);
2559 //Other stuff
68e484c4 2560 f3dHistPrimAnalysisPtVsYVsMultV0ALambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityV0A);
2561 f3dHistPrimAnalysisPtVsYCMSVsMultV0ALambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityV0A);
2562 f3dHistPrimAnalysisPtVsYVsMultZNALambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityZNA);
2563 f3dHistPrimAnalysisPtVsYCMSVsMultZNALambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityZNA);
2564 f3dHistPrimAnalysisPtVsYVsMultTRKLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityTRK);
2565 f3dHistPrimAnalysisPtVsYCMSVsMultTRKLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityTRK);
2566 f3dHistPrimAnalysisPtVsYVsMultSPDLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicitySPD);
2567 f3dHistPrimAnalysisPtVsYCMSVsMultSPDLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicitySPD);
bcb6ffdb 2568 }
2569 if( lPdgcodeCurrentPart == -3122 ){
b2c306f0 2570 //NRaw
2571 f3dHistPrimAnalysisPtVsYVsMultAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);
2572 f3dHistPrimAnalysisPtVsYCMSVsMultAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicity);
2573 //NTrue
2574 f3dHistPrimAnalysisPtVsYVsMultMCAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lNumberOfCharged);
2575 f3dHistPrimAnalysisPtVsYCMSVsMultMCAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lNumberOfCharged);
2576 //Other stuff
68e484c4 2577 f3dHistPrimAnalysisPtVsYVsMultV0AAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityV0A);
2578 f3dHistPrimAnalysisPtVsYCMSVsMultV0AAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityV0A);
2579 f3dHistPrimAnalysisPtVsYVsMultZNAAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityZNA);
2580 f3dHistPrimAnalysisPtVsYCMSVsMultZNAAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityZNA);
2581 f3dHistPrimAnalysisPtVsYVsMultTRKAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityTRK);
2582 f3dHistPrimAnalysisPtVsYCMSVsMultTRKAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityTRK);
2583 f3dHistPrimAnalysisPtVsYVsMultSPDAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicitySPD);
2584 f3dHistPrimAnalysisPtVsYCMSVsMultSPDAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicitySPD);
2585
bcb6ffdb 2586 }
2587 if( lPdgcodeCurrentPart == 310 ){
b2c306f0 2588 //NRaw
2589 f3dHistPrimAnalysisPtVsYVsMultK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);
2590 f3dHistPrimAnalysisPtVsYCMSVsMultK0Short->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicity);
2591 //NTrue
2592 f3dHistPrimAnalysisPtVsYVsMultMCK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lNumberOfCharged);
2593 f3dHistPrimAnalysisPtVsYCMSVsMultMCK0Short->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lNumberOfCharged);
2594 //Other Stuff
68e484c4 2595 f3dHistPrimAnalysisPtVsYVsMultV0AK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityV0A);
2596 f3dHistPrimAnalysisPtVsYCMSVsMultV0AK0Short->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityV0A);
2597 f3dHistPrimAnalysisPtVsYVsMultZNAK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityZNA);
2598 f3dHistPrimAnalysisPtVsYCMSVsMultZNAK0Short->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityZNA);
2599 f3dHistPrimAnalysisPtVsYVsMultTRKK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicityTRK);
2600 f3dHistPrimAnalysisPtVsYCMSVsMultTRKK0Short->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicityTRK);
2601 f3dHistPrimAnalysisPtVsYVsMultSPDK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicitySPD);
2602 f3dHistPrimAnalysisPtVsYCMSVsMultSPDK0Short->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicitySPD);
bcb6ffdb 2603 }
2604 }
2605
c228a5af 2606//----- Loop on primary Xi, Omega --------------------------------------------------------------
2607 for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < lNbMCPrimary; iCurrentLabelStack++)
2608 {// This is the begining of the loop on primaries
2609
2610 TParticle* lCurrentParticlePrimary = 0x0;
2611 lCurrentParticlePrimary = lMCstack->Particle( iCurrentLabelStack );
2612 if(!lCurrentParticlePrimary){
2613 Printf("Cascade loop %d - MC TParticle pointer to current stack particle = 0x0 ! Skip ...\n", iCurrentLabelStack );
2614 continue;
2615 }
2616 if ( TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3312 || TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3334 ) {
2617 Double_t lRapXiMCPrimary = -100;
2618 if( (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) != 0 ) {
2619 if ( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) !=0 ){
2620 lRapXiMCPrimary = 0.5*TMath::Log( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) );
2621 }
2622 }
2623
2624 //=================================================================================
2625 // Xi Histograms
2626 if( lCurrentParticlePrimary->GetPdgCode() == 3312 ){
2627 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2628 f3dHistGenSelectedPtVsYVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
e039e6b3 2629 f3dHistGenSelectedPtVsYCMSVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
68e484c4 2630 f3dHistGenSelectedPtVsYVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
2631 f3dHistGenSelectedPtVsYCMSVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2632 f3dHistGenSelectedPtVsYVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
2633 f3dHistGenSelectedPtVsYCMSVsMultZNAXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
2634 f3dHistGenSelectedPtVsYVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
2635 f3dHistGenSelectedPtVsYCMSVsMultTRKXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
2636 f3dHistGenSelectedPtVsYVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
2637 f3dHistGenSelectedPtVsYCMSVsMultSPDXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
c228a5af 2638 }
68e484c4 2639 if( lCurrentParticlePrimary->GetPdgCode() == -3312 ){
c228a5af 2640 lPtCurrentPart = lCurrentParticlePrimary->Pt();
2641 f3dHistGenSelectedPtVsYVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
e039e6b3 2642 f3dHistGenSelectedPtVsYCMSVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
68e484c4 2643 f3dHistGenSelectedPtVsYVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityV0A);
2644 f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
2645 f3dHistGenSelectedPtVsYVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityZNA);
2646 f3dHistGenSelectedPtVsYCMSVsMultZNAXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityZNA);
2647 f3dHistGenSelectedPtVsYVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicityTRK);
2648 f3dHistGenSelectedPtVsYCMSVsMultTRKXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityTRK);
2649 f3dHistGenSelectedPtVsYVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicitySPD);
2650 f3dHistGenSelectedPtVsYCMSVsMultSPDXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicitySPD);
c228a5af 2651 }
68e484c4 2652 }
c228a5af 2653 }
2654//----- End Loop on primary Xi, Omega ----------------------------------------------------------
2655
bcb6ffdb 2656//------------------------------------------------
2657// MAIN LAMBDA LOOP STARTS HERE
2658//------------------------------------------------
2659
2660 //Variable definition
2661 Int_t lOnFlyStatus = 0;
2662 Double_t lChi2V0 = 0;
2663 Double_t lDcaV0Daughters = 0, lDcaV0ToPrimVertex = 0;
2664 Double_t lDcaPosToPrimVertex = 0, lDcaNegToPrimVertex = 0;
2665 Double_t lV0CosineOfPointingAngle = 0;
2666 Double_t lV0Radius = 0, lPt = 0;
2667 Double_t lRapK0Short = 0, lRapLambda = 0;
2668 Double_t lInvMassK0s = 0, lInvMassLambda = 0, lInvMassAntiLambda = 0;
2669 Double_t lAlphaV0 = 0, lPtArmV0 = 0;
2670 Double_t fMinV0Pt = 0;
2671 Double_t fMaxV0Pt = 100;
2672
2673 Int_t nv0s = 0;
2674 nv0s = lESDevent->GetNumberOfV0s();
2675
2676 for (Int_t iV0 = 0; iV0 < nv0s; iV0++)
2677 {// This is the begining of the V0 loop
2678 AliESDv0 *v0 = ((AliESDEvent*)lESDevent)->GetV0(iV0);
2679 if (!v0) continue;
2680
4f8ed367 2681 //---> Fix On-the-Fly candidates
2682 if( v0->GetParamN()->Charge() > 0 && v0->GetParamP()->Charge() < 0 ){
2683 fHistSwappedV0Counter -> Fill( 1 );
2684 }else{
2685 fHistSwappedV0Counter -> Fill( 0 );
2686 }
2687 if ( fkUseOnTheFly ) CheckChargeV0(v0);
2688
2689
bcb6ffdb 2690 Double_t tV0mom[3];
2691 v0->GetPxPyPz( tV0mom[0],tV0mom[1],tV0mom[2] );
2692 Double_t lV0TotalMomentum = TMath::Sqrt(
2693 tV0mom[0]*tV0mom[0]+tV0mom[1]*tV0mom[1]+tV0mom[2]*tV0mom[2] );
2694
2695 Double_t tDecayVertexV0[3]; v0->GetXYZ(tDecayVertexV0[0],tDecayVertexV0[1],tDecayVertexV0[2]);
2696 lV0Radius = TMath::Sqrt(tDecayVertexV0[0]*tDecayVertexV0[0]+tDecayVertexV0[1]*tDecayVertexV0[1]);
2697 lPt = v0->Pt();
2698 lRapK0Short = v0->RapK0Short();
2699 lRapLambda = v0->RapLambda();
11960ef4 2700
2701 //Set Variables for later filling
2702 fTreeVariableV0x = tDecayVertexV0[0];
2703 fTreeVariableV0y = tDecayVertexV0[1];
2704 fTreeVariableV0z = tDecayVertexV0[2];
2705
2706 //Set Variables for later filling
2707 fTreeVariableV0Px = tV0mom[0];
2708 fTreeVariableV0Py = tV0mom[1];
2709 fTreeVariableV0Pz = tV0mom[2];
2710
bcb6ffdb 2711 if ((lPt<fMinV0Pt)||(fMaxV0Pt<lPt)) continue;
2712
2713 UInt_t lKeyPos = (UInt_t)TMath::Abs(v0->GetPindex());
2714 UInt_t lKeyNeg = (UInt_t)TMath::Abs(v0->GetNindex());
2715
2716 Double_t lMomPos[3]; v0->GetPPxPyPz(lMomPos[0],lMomPos[1],lMomPos[2]);
2717 Double_t lMomNeg[3]; v0->GetNPxPyPz(lMomNeg[0],lMomNeg[1],lMomNeg[2]);
2718
2719 AliESDtrack *pTrack=((AliESDEvent*)lESDevent)->GetTrack(lKeyPos);
2720 AliESDtrack *nTrack=((AliESDEvent*)lESDevent)->GetTrack(lKeyNeg);
2721 if (!pTrack || !nTrack) {
2722 Printf("ERROR: Could not retreive one of the daughter track");
2723 continue;
2724 }
2725
2726 fTreeVariableNegEta = nTrack->Eta();
2727 fTreeVariablePosEta = pTrack->Eta();
2728
2729 // Filter like-sign V0 (next: add counter and distribution)
2730 if ( pTrack->GetSign() == nTrack->GetSign()){
2731 continue;
2732 }
2733
2734 //________________________________________________________________________
2735 // Track quality cuts
2736 Float_t lPosTrackCrossedRows = pTrack->GetTPCClusterInfo(2,1);
2737 Float_t lNegTrackCrossedRows = nTrack->GetTPCClusterInfo(2,1);
4f8ed367 2738 fTreeVariableLeastNbrCrossedRows = (Int_t) lPosTrackCrossedRows;
bcb6ffdb 2739 if( lNegTrackCrossedRows < fTreeVariableLeastNbrCrossedRows )
4f8ed367 2740 fTreeVariableLeastNbrCrossedRows = (Int_t) lNegTrackCrossedRows;
bcb6ffdb 2741
2742 // TPC refit condition (done during reconstruction for Offline but not for On-the-fly)
2743 if( !(pTrack->GetStatus() & AliESDtrack::kTPCrefit)) continue;
2744 if( !(nTrack->GetStatus() & AliESDtrack::kTPCrefit)) continue;
2745
f068724a 2746 //Get status flags
2747 fTreeVariablePosTrackStatus = pTrack->GetStatus();
2748 fTreeVariableNegTrackStatus = nTrack->GetStatus();
2749
7f4db1cd 2750 if ( ( ( ( pTrack->GetTPCClusterInfo(2,1) ) < 70 ) || ( ( nTrack->GetTPCClusterInfo(2,1) ) < 70 ) )&&(fkTakeAllTracks==kFALSE) ) continue;
bcb6ffdb 2751
2752 //GetKinkIndex condition
2753 if( pTrack->GetKinkIndex(0)>0 || nTrack->GetKinkIndex(0)>0 ) continue;
2754
2755 //Findable clusters > 0 condition
2756 if( pTrack->GetTPCNclsF()<=0 || nTrack->GetTPCNclsF()<=0 ) continue;
2757
2758 //Compute ratio Crossed Rows / Findable clusters
2759 //Note: above test avoids division by zero!
ad0d3645 2760 Float_t lPosTrackCrossedRowsOverFindable = -1;
2761 Float_t lNegTrackCrossedRowsOverFindable = -1;
2762 if ( ((double)(pTrack->GetTPCNclsF()) ) != 0 ) lPosTrackCrossedRowsOverFindable = lPosTrackCrossedRows / ((double)(pTrack->GetTPCNclsF()));
2763 if ( ((double)(nTrack->GetTPCNclsF()) ) != 0 ) lNegTrackCrossedRowsOverFindable = lNegTrackCrossedRows / ((double)(nTrack->GetTPCNclsF()));
bcb6ffdb 2764
2765 fTreeVariableLeastRatioCrossedRowsOverFindable = lPosTrackCrossedRowsOverFindable;
2766 if( lNegTrackCrossedRowsOverFindable < fTreeVariableLeastRatioCrossedRowsOverFindable )
2767 fTreeVariableLeastRatioCrossedRowsOverFindable = lNegTrackCrossedRowsOverFindable;
2768
2769 //Lowest Cut Level for Ratio Crossed Rows / Findable = 0.8, set here
7f4db1cd 2770 if ( (fTreeVariableLeastRatioCrossedRowsOverFindable < 0.8)&&(fkTakeAllTracks==kFALSE) ) continue;
bcb6ffdb 2771
2772 //End track Quality Cuts
2773 //________________________________________________________________________
2774
2775 lDcaPosToPrimVertex = TMath::Abs(pTrack->GetD(lPrimaryVtxPosition[0],
2776 lPrimaryVtxPosition[1],
2777 lMagneticField) );
2778
2779 lDcaNegToPrimVertex = TMath::Abs(nTrack->GetD(lPrimaryVtxPosition[0],
2780 lPrimaryVtxPosition[1],
2781 lMagneticField) );
2782
2783 lOnFlyStatus = v0->GetOnFlyStatus();
2784 lChi2V0 = v0->GetChi2V0();
2785 lDcaV0Daughters = v0->GetDcaV0Daughters();
2786 lDcaV0ToPrimVertex = v0->GetD(lPrimaryVtxPosition[0],lPrimaryVtxPosition[1],lPrimaryVtxPosition[2]);
2787 lV0CosineOfPointingAngle = v0->GetV0CosineOfPointingAngle(lPrimaryVtxPosition[0],lPrimaryVtxPosition[1],lPrimaryVtxPosition[2]);
2788 fTreeVariableV0CosineOfPointingAngle=lV0CosineOfPointingAngle;
2789
2790 // Getting invariant mass infos directly from ESD
2791 v0->ChangeMassHypothesis(310);
2792 lInvMassK0s = v0->GetEffMass();
2793 v0->ChangeMassHypothesis(3122);
2794 lInvMassLambda = v0->GetEffMass();
2795 v0->ChangeMassHypothesis(-3122);
2796 lInvMassAntiLambda = v0->GetEffMass();
2797 lAlphaV0 = v0->AlphaV0();
2798 lPtArmV0 = v0->PtArmV0();
2799
2800 //fTreeVariableOnFlyStatus = lOnFlyStatus;
2801 //fHistV0OnFlyStatus->Fill(lOnFlyStatus);
2802
2803//===============================================
2804// Monte Carlo Association starts here
2805//===============================================
2806
2807 //---> Set Everything to "I don't know" before starting
2808
2809 fTreeVariablePIDPositive = 0;
2810 fTreeVariablePIDNegative = 0;
2811
2812 fTreeVariableIndexStatus = 0;
2813 fTreeVariableIndexStatusMother = 0;
2814
2815 fTreeVariablePtMother = -1;
2816 fTreeVariablePtMC = -1;
2817 fTreeVariableRapMC = -100;
2818
2819 fTreeVariablePID = -1;
2820 fTreeVariablePIDMother = -1;
2821
2822 fTreeVariablePrimaryStatus = 0;
2823 fTreeVariablePrimaryStatusMother = 0;
2824 fTreeVariableV0CreationRadius = -1;
a5ff2395 2825
2826 fTreeVariableNegPhysicalStatus = 0;
2827 fTreeVariablePosPhysicalStatus = 0;
2828
2829 Int_t lblPosV0Dghter = (Int_t) TMath::Abs( pTrack->GetLabel() );
bcb6ffdb 2830 Int_t lblNegV0Dghter = (Int_t) TMath::Abs( nTrack->GetLabel() );
2831
2832 TParticle* mcPosV0Dghter = lMCstack->Particle( lblPosV0Dghter );
2833 TParticle* mcNegV0Dghter = lMCstack->Particle( lblNegV0Dghter );
2834
2835 fTreeVariablePosTransvMomentumMC = mcPosV0Dghter->Pt();
2836 fTreeVariableNegTransvMomentumMC = mcNegV0Dghter->Pt();
2837
2838 Int_t lPIDPositive = mcPosV0Dghter -> GetPdgCode();
2839 Int_t lPIDNegative = mcNegV0Dghter -> GetPdgCode();
2840
2841 fTreeVariablePIDPositive = lPIDPositive;
2842 fTreeVariablePIDNegative = lPIDNegative;
2843
2844 Int_t lblMotherPosV0Dghter = mcPosV0Dghter->GetFirstMother() ;
2845 Int_t lblMotherNegV0Dghter = mcNegV0Dghter->GetFirstMother();
a5ff2395 2846
2847 if( lMCstack->IsPhysicalPrimary (lblNegV0Dghter) ) fTreeVariableNegPhysicalStatus = 1; //Is Primary!
2848 if( lMCstack->IsSecondaryFromWeakDecay(lblNegV0Dghter) ) fTreeVariableNegPhysicalStatus = 2; //Weak Decay!
2849 if( lMCstack->IsSecondaryFromMaterial (lblNegV0Dghter) ) fTreeVariableNegPhysicalStatus = 3; //Material Int!
bcb6ffdb 2850
a5ff2395 2851 if( lMCstack->IsPhysicalPrimary (lblPosV0Dghter) ) fTreeVariablePosPhysicalStatus = 1; //Is Primary!
2852 if( lMCstack->IsSecondaryFromWeakDecay(lblPosV0Dghter) ) fTreeVariablePosPhysicalStatus = 2; //Weak Decay!
2853 if( lMCstack->IsSecondaryFromMaterial (lblPosV0Dghter) ) fTreeVariablePosPhysicalStatus = 3; //Material Int!
2854
bcb6ffdb 2855 if( lblMotherPosV0Dghter == lblMotherNegV0Dghter && lblMotherPosV0Dghter > -1 ){
2856 //either label is fine, they're equal at this stage
2857 TParticle* pThisV0 = lMCstack->Particle( lblMotherPosV0Dghter );
2858 //Set tree variables
2859 fTreeVariablePID = pThisV0->GetPdgCode(); //PDG Code
2860 fTreeVariablePtMC = pThisV0->Pt(); //Perfect Pt
11960ef4 2861
df661cb7 2862 fTreeVariableIsNonInjected = lMCevent->IsFromBGEvent(lblMotherPosV0Dghter); //Is it?
2863 if (!fTreeVariableIsNonInjected){
2864 if (!(pThisV0->GetFirstMother()<0))
2865 {fTreeVariableIsNonInjected = kTRUE;} // because there are primaries (ALICE definition) not produced in the collision
2866 }
2867
11960ef4 2868 //Set Variables for later filling
2869 //Be careful: Vx, Vy, Vz: Creation vertex. So decay position is the
2870 //Creation vertex of any one of the daughters!
2871 fTreeVariableMCV0x = mcPosV0Dghter->Vx();
2872 fTreeVariableMCV0y = mcPosV0Dghter->Vy();
2873 fTreeVariableMCV0z = mcPosV0Dghter->Vz();
2874
2875 //Set Variables for later filling
2876 fTreeVariableMCV0Px = pThisV0->Px();
2877 fTreeVariableMCV0Py = pThisV0->Py();
2878 fTreeVariableMCV0Pz = pThisV0->Pz();
2879
bcb6ffdb 2880 //Only Interested if it's a Lambda, AntiLambda or K0s
2881 //Avoid the Junction Bug! PYTHIA has particles with Px=Py=Pz=E=0 occasionally,
2882 //having particle code 88 (unrecognized by PDG), for documentation purposes.
2883 //Even ROOT's TParticle::Y() is not prepared to deal with that exception!
2884 //Note that TParticle::Pt() is immune (that would just return 0)...
2885 //Though granted that that should be extremely rare in this precise condition...
2886 if( TMath::Abs(fTreeVariablePID) == 3122 || fTreeVariablePID==310 ){
2887 fTreeVariableRapMC = pThisV0->Y(); //Perfect Y
2888 }
7e81bb32 2889 fTreeVariableV0CreationRadius = TMath::Sqrt(
2890 TMath::Power( ( (mcPrimaryVtx.At(0)) - (pThisV0->Vx()) ) , 2) +
2891 TMath::Power( ( (mcPrimaryVtx.At(1)) - (pThisV0->Vy()) ) , 2) +
2892 TMath::Power( ( (mcPrimaryVtx.At(2)) - (pThisV0->Vz()) ) , 2)
2893 );
bcb6ffdb 2894 if( lblMotherPosV0Dghter < lNbMCPrimary ) fTreeVariableIndexStatus = 1; //looks primary
2895 if( lblMotherPosV0Dghter >= lNbMCPrimary ) fTreeVariableIndexStatus = 2; //looks secondary
2896 if( lMCstack->IsPhysicalPrimary (lblMotherPosV0Dghter) ) fTreeVariablePrimaryStatus = 1; //Is Primary!
2897 if( lMCstack->IsSecondaryFromWeakDecay(lblMotherPosV0Dghter) ) fTreeVariablePrimaryStatus = 2; //Weak Decay!
2898 if( lMCstack->IsSecondaryFromMaterial (lblMotherPosV0Dghter) ) fTreeVariablePrimaryStatus = 3; //Material Int!
2899
2900 //Now we try to acquire the V0 parent particle, if possible
2901 Int_t lblThisV0Parent = pThisV0->GetFirstMother();
2902 if ( lblThisV0Parent > -1 ){ //if it has a parent, get it and store specs
2903 TParticle* pThisV0Parent = lMCstack->Particle( lblThisV0Parent );
2904 fTreeVariablePIDMother = pThisV0Parent->GetPdgCode(); //V0 Mother PDG
2905 fTreeVariablePtMother = pThisV0Parent->Pt(); //V0 Mother Pt
2906 //Primary Status for the V0 Mother particle
2907 if( lblThisV0Parent < lNbMCPrimary ) fTreeVariableIndexStatusMother = 1; //looks primary
2908 if( lblThisV0Parent >= lNbMCPrimary ) fTreeVariableIndexStatusMother = 2; //looks secondary
2909 if( lMCstack->IsPhysicalPrimary (lblThisV0Parent) ) fTreeVariablePrimaryStatusMother = 1; //Is Primary!
2910 if( lMCstack->IsSecondaryFromWeakDecay(lblThisV0Parent) ) fTreeVariablePrimaryStatusMother = 2; //Weak Decay!
2911 if( lMCstack->IsSecondaryFromMaterial (lblThisV0Parent) ) fTreeVariablePrimaryStatusMother = 3; //Material Int!
2912 }
2913 }
2914
2915 fTreeVariablePt = v0->Pt();
2916 fTreeVariableChi2V0 = lChi2V0;
2917 fTreeVariableDcaV0ToPrimVertex = lDcaV0ToPrimVertex;
2918 fTreeVariableDcaV0Daughters = lDcaV0Daughters;
2919 fTreeVariableV0CosineOfPointingAngle = lV0CosineOfPointingAngle;
2920 fTreeVariableV0Radius = lV0Radius;
2921 fTreeVariableDcaPosToPrimVertex = lDcaPosToPrimVertex;
2922 fTreeVariableDcaNegToPrimVertex = lDcaNegToPrimVertex;
2923 fTreeVariableInvMassK0s = lInvMassK0s;
2924 fTreeVariableInvMassLambda = lInvMassLambda;
2925 fTreeVariableInvMassAntiLambda = lInvMassAntiLambda;
2926 fTreeVariableRapK0Short = lRapK0Short;
2927
2928 fTreeVariableRapLambda = lRapLambda;
2929 fTreeVariableAlphaV0 = lAlphaV0;
2930 fTreeVariablePtArmV0 = lPtArmV0;
2931
2932 //Official means of acquiring N-sigmas
2933 fTreeVariableNSigmasPosProton = fPIDResponse->NumberOfSigmasTPC( pTrack, AliPID::kProton );
2934 fTreeVariableNSigmasPosPion = fPIDResponse->NumberOfSigmasTPC( pTrack, AliPID::kPion );
2935 fTreeVariableNSigmasNegProton = fPIDResponse->NumberOfSigmasTPC( nTrack, AliPID::kProton );
2936 fTreeVariableNSigmasNegPion = fPIDResponse->NumberOfSigmasTPC( nTrack, AliPID::kPion );
2937
2938//tDecayVertexV0[0],tDecayVertexV0[1],tDecayVertexV0[2]
ab9d4ee1 2939 Double_t lDistanceTravelled = TMath::Sqrt(
bcb6ffdb 2940 TMath::Power( tDecayVertexV0[0] - lBestPrimaryVtxPos[0] , 2) +
2941 TMath::Power( tDecayVertexV0[1] - lBestPrimaryVtxPos[1] , 2) +
2942 TMath::Power( tDecayVertexV0[2] - lBestPrimaryVtxPos[2] , 2)
2943 );
ad0d3645 2944 fTreeVariableDistOverTotMom = 1e+5;
ab9d4ee1 2945 if( lV0TotalMomentum + 1e-10 != 0 ) fTreeVariableDistOverTotMom = lDistanceTravelled / (lV0TotalMomentum + 1e-10); //avoid division by zero, to be sure
bcb6ffdb 2946
2947 Double_t lMomentumPosTemp[3];
2948 pTrack->GetPxPyPz(lMomentumPosTemp);
2949 Double_t lPtPosTemporary = sqrt(pow(lMomentumPosTemp[0],2) + pow(lMomentumPosTemp[1],2));
2950
2951 Double_t lMomentumNegTemp[3];
2952 nTrack->GetPxPyPz(lMomentumNegTemp);
2953 Double_t lPtNegTemporary = sqrt(pow(lMomentumNegTemp[0],2) + pow(lMomentumNegTemp[1],2));
2954
2955 fTreeVariablePosTransvMomentum = lPtPosTemporary;
2956 fTreeVariableNegTransvMomentum = lPtNegTemporary;
2957
2958
2959//------------------------------------------------
2960// Fill Tree!
2961//------------------------------------------------
2962
2963 // The conditionals are meant to decrease excessive
2964 // memory usage!
2965
2966 //Modified version: Keep only OnFlyStatus == 0
2967 //Keep only if included in a parametric InvMass Region 20 sigmas away from peak
2968
2969 //First Selection: Reject OnFly
4f8ed367 2970 if( (lOnFlyStatus == 0 && fkUseOnTheFly == kFALSE) || (lOnFlyStatus != 0 && fkUseOnTheFly == kTRUE ) ){
bcb6ffdb 2971 //Second Selection: rough 20-sigma band, parametric.
2972 //K0Short: Enough to parametrize peak broadening with linear function.
2973 Double_t lUpperLimitK0Short = (5.63707e-01) + (1.14979e-02)*fTreeVariablePt;
2974 Double_t lLowerLimitK0Short = (4.30006e-01) - (1.10029e-02)*fTreeVariablePt;
2975 //Lambda: Linear (for higher pt) plus exponential (for low-pt broadening)
2976 //[0]+[1]*x+[2]*TMath::Exp(-[3]*x)
2977 Double_t lUpperLimitLambda = (1.13688e+00) + (5.27838e-03)*fTreeVariablePt + (8.42220e-02)*TMath::Exp(-(3.80595e+00)*fTreeVariablePt);
2978 Double_t lLowerLimitLambda = (1.09501e+00) - (5.23272e-03)*fTreeVariablePt - (7.52690e-02)*TMath::Exp(-(3.46339e+00)*fTreeVariablePt);
2979 //Do Selection
2980 if( (fTreeVariableInvMassLambda < lUpperLimitLambda && fTreeVariableInvMassLambda > lLowerLimitLambda ) ||
2981 (fTreeVariableInvMassAntiLambda < lUpperLimitLambda && fTreeVariableInvMassAntiLambda > lLowerLimitLambda ) ||
2982 (fTreeVariableInvMassK0s < lUpperLimitK0Short && fTreeVariableInvMassK0s > lLowerLimitK0Short ) ){
4f8ed367 2983 //Pre-selection in case this is AA...
2984 if( fkIsNuclear == kFALSE ) fTree->Fill();
2985 if( fkIsNuclear == kTRUE){
2986 //If this is a nuclear collision___________________
2987 // ... pre-filter with daughter eta selection only (not TPC)
2988 if ( TMath::Abs(fTreeVariableNegEta)<0.8 && TMath::Abs(fTreeVariablePosEta)<0.8 ) fTree->Fill();
2989 }//end nuclear_____________________________________
bcb6ffdb 2990 }
2991 }
2992
2993//------------------------------------------------
2994// Fill tree over.
2995//------------------------------------------------
2996
2997
2998 }// This is the end of the V0 loop
2999
c228a5af 3000//------------------------------------------------
3001
bcb6ffdb 3002 // Post output data.
3003 PostData(1, fListHistV0);
3004 PostData(2, fTree);
3005}
3006
3007//________________________________________________________________________
3008void AliAnalysisTaskExtractPerformanceV0::Terminate(Option_t *)
3009{
3010 // Draw result to the screen
3011 // Called once at the end of the query
3012
3013 TList *cRetrievedList = 0x0;
3014 cRetrievedList = (TList*)GetOutputData(1);
3015 if(!cRetrievedList){
3016 Printf("ERROR - AliAnalysisTaskExtractV0 : ouput data container list not available\n");
3017 return;
3018 }
3019
3020 fHistV0MultiplicityForTrigEvt = dynamic_cast<TH1F*> ( cRetrievedList->FindObject("fHistV0MultiplicityForTrigEvt") );
3021 if (!fHistV0MultiplicityForTrigEvt) {
3022 Printf("ERROR - AliAnalysisTaskExtractV0 : fHistV0MultiplicityForTrigEvt not available");
3023 return;
3024 }
3025
3026 TCanvas *canCheck = new TCanvas("AliAnalysisTaskExtractV0","V0 Multiplicity",10,10,510,510);
3027 canCheck->cd(1)->SetLogy();
3028
3029 fHistV0MultiplicityForTrigEvt->SetMarkerStyle(22);
3030 fHistV0MultiplicityForTrigEvt->DrawCopy("E");
3031}
3032
3033//----------------------------------------------------------------------------
3034
3035Double_t AliAnalysisTaskExtractPerformanceV0::MyRapidity(Double_t rE, Double_t rPz) const
3036{
3037 // Local calculation for rapidity
ad0d3645 3038 Double_t ReturnValue = -100;
3039 if( (rE-rPz+1.e-13) != 0 && (rE+rPz) != 0 ){
3040 ReturnValue = 0.5*TMath::Log((rE+rPz)/(rE-rPz+1.e-13));
3041 }
3042 return ReturnValue;
bcb6ffdb 3043}
4f8ed367 3044
3045//________________________________________________________________________
3046void AliAnalysisTaskExtractPerformanceV0::CheckChargeV0(AliESDv0 *v0)
3047{
3048 // This function checks charge of negative and positive daughter tracks.
3049 // If incorrectly defined (onfly vertexer), swaps out.
3050 if( v0->GetParamN()->Charge() > 0 && v0->GetParamP()->Charge() < 0 ){
3051 //V0 daughter track swapping is required! Note: everything is swapped here... P->N, N->P
3052 Long_t lCorrectNidx = v0->GetPindex();
3053 Long_t lCorrectPidx = v0->GetNindex();
3054 Double32_t lCorrectNmom[3];
3055 Double32_t lCorrectPmom[3];
3056 v0->GetPPxPyPz( lCorrectNmom[0], lCorrectNmom[1], lCorrectNmom[2] );
3057 v0->GetNPxPyPz( lCorrectPmom[0], lCorrectPmom[1], lCorrectPmom[2] );
3058
3059 AliExternalTrackParam lCorrectParamN(
3060 v0->GetParamP()->GetX() ,
3061 v0->GetParamP()->GetAlpha() ,
3062 v0->GetParamP()->GetParameter() ,
3063 v0->GetParamP()->GetCovariance()
3064 );
3065 AliExternalTrackParam lCorrectParamP(
3066 v0->GetParamN()->GetX() ,
3067 v0->GetParamN()->GetAlpha() ,
3068 v0->GetParamN()->GetParameter() ,
3069 v0->GetParamN()->GetCovariance()
3070 );
3071 lCorrectParamN.SetMostProbablePt( v0->GetParamP()->GetMostProbablePt() );
3072 lCorrectParamP.SetMostProbablePt( v0->GetParamN()->GetMostProbablePt() );
3073
3074 //Get Variables___________________________________________________
3075 Double_t lDcaV0Daughters = v0 -> GetDcaV0Daughters();
3076 Double_t lCosPALocal = v0 -> GetV0CosineOfPointingAngle();
3077 Bool_t lOnFlyStatusLocal = v0 -> GetOnFlyStatus();
3078
3079 //Create Replacement Object_______________________________________
3080 AliESDv0 *v0correct = new AliESDv0(lCorrectParamN,lCorrectNidx,lCorrectParamP,lCorrectPidx);
3081 v0correct->SetDcaV0Daughters ( lDcaV0Daughters );
3082 v0correct->SetV0CosineOfPointingAngle ( lCosPALocal );
3083 v0correct->ChangeMassHypothesis ( kK0Short );
3084 v0correct->SetOnFlyStatus ( lOnFlyStatusLocal );
3085
3086 //Reverse Cluster info..._________________________________________
3087 v0correct->SetClusters( v0->GetClusters( 1 ), v0->GetClusters ( 0 ) );
3088
3089 *v0 = *v0correct;
3090 //Proper cleanup..._______________________________________________
3091 v0correct->Delete();
3092 v0correct = 0x0;
3093
3094 //Just another cross-check and output_____________________________
3095 if( v0->GetParamN()->Charge() > 0 && v0->GetParamP()->Charge() < 0 ) {
3096 AliWarning("Found Swapped Charges, tried to correct but something FAILED!");
3097 }else{
3098 //AliWarning("Found Swapped Charges and fixed.");
3099 }
3100 //________________________________________________________________
3101 }else{
3102 //Don't touch it! ---
3103 //Printf("Ah, nice. Charges are already ordered...");
3104 }
3105 return;
3106}
bcb6ffdb 3107