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