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