]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/STRANGENESS/LambdaK0PbPb/AliAnalysisTaskV0ForRAA.cxx
Added THn for eta-phi debbuging
[u/mrichter/AliRoot.git] / PWGLF / STRANGENESS / LambdaK0PbPb / AliAnalysisTaskV0ForRAA.cxx
CommitLineData
6c301331 1/**************************************************************************
2 * Authors : Simone Schuchmann *
aa3d4e29 3 * Contributors are mentioned in the code where appropriate. *
4 * *
5 * Permission to use, copy, modify and distribute this software and its *
6 * documentation strictly for non-commercial purposes is hereby granted *
7 * without fee, provided that the above copyright notice appears in all *
8 * copies and that both the copyright notice and this permission notice *
9 * appear in the supporting documentation. The authors make no claims *
10 * about the suitability of this software for any purpose. It is *
11 * provided "as is" without express or implied warranty. *
12 **************************************************************************/
13
14//-----------------------------------------------------------------
15// AliAnalysisTaskV0ForRAA class
16// This task is for analysing Lambda and K0s pt spectra in PbPb and
17// pp as well as with MC. The flag for pp and MC must be set
18// accordingly, default is PbPb data.
19// It works with ESD files only.
20//-----------------------------------------------------------------
21
22
23#define AliAnalysisTaskV0ForRAA_cxx
24
6c301331 25
aa3d4e29 26#include "AliAnalysisTaskV0ForRAA.h"
27
28#include "Riostream.h"
6c301331 29//#include "THn.h"
aa3d4e29 30#include "TROOT.h"
31#include "TH1.h"
32#include "TH2.h"
6c301331 33//#include "TH3.h"//xxx
aa3d4e29 34#include "TLorentzVector.h"
35
36#include "AliAnalysisTaskSE.h"
37#include "AliAnalysisManager.h"
38#include "AliESDInputHandler.h"
39#include "AliMCEventHandler.h"
40
41#include "AliESDVZERO.h"
42#include "AliMultiplicity.h"
43#include "AliCentrality.h"
44
45#include "AliKFParticle.h"
46#include "AliKFVertex.h"
47#include "AliESDtrackCuts.h"
48#include "AliESDpid.h"
49#include "AliESDv0.h"
50#include "AliESDEvent.h"
51#include "AliMCEvent.h"
52#include "AliStack.h"
53#include "AliGenEventHeader.h"
54
55
56ClassImp(AliAnalysisTaskV0ForRAA)
57
58//________________________________________________________________________
76a4d7a7 59AliAnalysisTaskV0ForRAA::AliAnalysisTaskV0ForRAA()
60:AliAnalysisTaskSE("default_AliAnalysisTaskV0ForRAA"),
aa3d4e29 61 fESD(0),
62 fMCev(0),
5842a526 63//other objects
aa3d4e29 64 fESDpid(0),
65 fESDTrackCuts(0),
66 fESDTrackCutsCharged(0),
67 fESDTrackCutsLowPt(0),
68 fOutputContainer(0),
6c301331 69//thnf
70 fTHnFK0s(0),
71 fTHnFL(0),
72 fTHnFAL(0),
73 fTHnFK0sDauEta(0),
74 fTHnFLDauEta(0),
75 fTHnFALDauEta(0),
76 fTHnFK0sDauPhi(0),
77 fTHnFLDauPhi(0),
78 fTHnFALDauPhi(0),
5842a526 79//event histos
aa3d4e29 80 fHistITSLayerHits(0),
81 fHistOneHitWithSDD(0),
82 fHistNEvents(0),
83 fHistPrimVtxZESDVSNContributors(0),
84 fHistPrimVtxZESDTPCVSNContributors(0),
85 fHistPrimVtxZESDSPDVSNContributors(0),
aa3d4e29 86 fHistPrimVtxZESD(0),
87 fHistPrimVtxZESDTPC(0),
88 fHistPrimVtxZESDSPD(0),
89 fHistESDVertexZ(0),
aa3d4e29 90 fHistMuliplicity(0),
91 fHistMuliplicityRaw(0),
92 fHistCentBinRaw(0),
93 fHistCentBin(0),
94 fHistMultiplicityPrimary(0),
95 fHistNPrim(0),
5842a526 96 fHistPiPiK0sVsLambdaMass(0),
97 fHistPiPiK0sVsALambdaMass(0),
98 fHistPiPK0sVsLambdaMass(0),
99 fHistPiAPK0sVsALambdaMass(0),
100 fHistPiPALambdaVsLambdaMass(0),
101 fHistPiAPLambdaVsALambdaMass(0),
102//-----------K0 histos -------------------//
103 fHistPiPiMass(0),
104 fHistPiPiMassVSPt(0),
105 fHistPiPiMassVSPtMCTruth(0),
106 fHistPiPiMassVSY(0),
107 fHistPiPiPtVSY(0),
108// fHistPiPiMassVSAlpha(0),
109 fHistPiPiRadiusXY(0),
110 fHistPiPiCosPointAng(0),
111 fHistPiPiDCADaughterPosToPrimVtxVSMass(0),
112 fHistPiPiDecayLengthVsPt(0),
113 fHistPiPiDecayLengthVsMass(0),
114 fHistPiPiDecayLengthVsCtau(0),
5842a526 115 fHistPiPiDCADaughters(0),
6c301331 116// fHistPiPiPtDaughters(0),
5842a526 117 fHistPiPiDCAVSMass(0),
6c301331 118//fHistPiPiDCAZPos(0),
119//fHistPiPiDCAZNeg(0),
5842a526 120 fHistPiPiTrackLengthPosVsMass(0),
121 fHistPiPiTrackLengthNegVsMass(0),
122 fHistPiPiMonitorCuts(0),
123 fHistPiPiMonitorMCCuts(0),
124 fHistPiPiDecayLengthResolution(0),
125 fHistNclsITSPosK0(0),
126 fHistNclsITSNegK0(0),
127 fHistNclsTPCPosK0(0),
128 fHistNclsTPCNegK0(0),
129 fHistChi2PerNclsITSPosK0(0),
130 fHistChi2PerNclsITSNegK0(0),
131 fHistNCRowsTPCPosK0(0),
132 fHistNCRowsTPCNegK0(0),
133 fHistRatioFoundOverFinableTPCK0Pos(0),
134 fHistRatioFoundOverFinableTPCK0Neg(0),
135//------------MC only histos-----------
136 fHistPrimVtxZESDVSNContributorsMC(0),
137 fHistPrimVtxZESDTPCVSNContributorsMC(0),
138 fHistPrimVtxZESDSPDVSNContributorsMC(0),
139 fHistMCVertexZ(0),
aa3d4e29 140 fHistPiPiPDGCode(0),
aa3d4e29 141 fHistPiPPDGCode(0),
5842a526 142 fHistPiAPPDGCode(0),
6c301331 143
144//-- BG of K0s
145// fHistPiPiGA(0),
146// fHistPiPiKch(0),
147// fHistPiPiPhi(0),
148// fHistPiPiL(0),
149// fHistPiPiPi0(0),
150// fHistPiPiPich(0),
151// fHistPiPiRoh(0),
152// fHistPiPiOmega(0),
153// fHistPiPiKStar(0),
154// fHistPiPiNoMother(0),
155// fHistPiPiK0s(0),
156// fHistPiPiK0L(0),
157// fHistPiPiN(0),
158// fHistPiPiSigma(0),
159// fHistPiPiXi(0),
160// fHistPiPiDelta(0),
161// fHistPiPiB(0),
162// fHistPiPiD(0),
163// fHistPiPiEta(0),
164// //-- BG of Lambda
165// fHistPiPGA(0),
166// fHistPiPKch(0),
167// fHistPiPK0s(0),
168// fHistPiPPi0(0),
169// fHistPiPPich(0),
170// fHistPiPKStar(0),
171// fHistPiPN(0),
172// fHistPiPNoMother(0),
173// fHistPiPL(0),
174
5842a526 175//cosine of pointing angle of Xi vs pt histos
aa3d4e29 176 fHistPiPCosPointAngXiVsPt(0),
5842a526 177 fHistPiAPCosPointAngXiVsPt(0),
aa3d4e29 178 fHistPiPMassVSPtSecXiMCTruth(0),
179 fHistPiPMassVSPtSecOmegaMCTruth(0),
aa3d4e29 180 fHistPiAPMassVSPtSecXiMCTruth(0),
181 fHistPiAPMassVSPtSecOmegaMCTruth(0),
6c301331 182// fHistUserPtShift(0),
183// fHistPiPiPhiPosVsPtPosVsMass(0),//xxx
184// fHistPiPPhiPosVsPtPosVsMass(0),//xxx
185// fHistPiAPPhiPosVsPtPosVsMass(0),//xxx
5842a526 186//selection booleans and values
aa3d4e29 187 fMCMode(0),
188 fMCTruthMode(0),
189 fSelectInjected(0),
190 fSelectMBMotherMC(0),
191 fCheckNegLabelReco(0),
192 fOnlyFoundRecoV0(0),
193 fUseCentrality(0),
194 fUseCentralityBin(0),
195 fUseCentralityRange(0),
196 fAnapp(0),
5842a526 197 fRejectPileUpSPD(0),
aa3d4e29 198 fSelSDD(0),
199 fSelNoSDD(0),
200 fOntheFly(0),
201 fVertexZCut(0),
202 fVtxStatus(0),
11e769d9 203 fNcr(0),
204 fChi2cls(0),
205 fTPCrefit(0),
206 fNcrCh(0),
207 fChi2clsCh(0),
208 fTPCrefitCh(0),
209 fNcrLpt(0),
210 fChi2clsLpt(0),
211 fTPCrefitLpt(0),
aa3d4e29 212 fUsePID(0),
5842a526 213 fUsePIDPion(0),
aa3d4e29 214 fNSigma(0),
5842a526 215 fNSigma2(0),
aa3d4e29 216 fPPIDcut(0),
217 fPtTPCCut(0),
218 fMoreNclsThanRows(0),
219 fMoreNclsThanFindable(0),
220 fMoreNclsThanFindableMax(0),
221 fRatioFoundOverFindable(0),
222 fRatioMaxCRowsOverFindable(0),
223 fChi2PerClusterITS(0),
76a4d7a7 224 fDistanceTPCInner(0),
5842a526 225 fMinNCLSITSPos(0),
226 fMinNCLSITSNeg(0),
227 fMaxNCLSITSPos(0),
228 fMaxNCLSITSNeg(0),
229 fSwitchCaseITSCls(0),
230 fCutMITrackLength(0),
231 fCutMICrossedR(0),
232 fCutMITPCncls(0),
233 fCutMITrackLengthLengthF(0),
234 fCutMICrossedRLengthF(0),
aa3d4e29 235 fRapCutV0(0),
236 fRap(0),
237 fEtaCutMCDaughters(0),
238 fEtaCutMCDaughtersVal(0),
239 fMinPt(0),
240 fAlfaCut(0),
241 fQtCut(0),
5842a526 242 fQtCutPt(0),
aa3d4e29 243 fQtCutPtLow(0),
244 fArmCutK0(0),
245 fArmCutL(0),
246 fArmQtSlope(0),
247 fExcludeLambdaFromK0s(0),
248 fExcludeK0sFromLambda(0),
6c301331 249 fExcludePhotonsFromK0s(0),
250 fExcludePhotonsFromLambda(0),
aa3d4e29 251 fDCAToVertexK0(0),
252 fDCAToVertexL(0),
253 fDCAXK(0),
254 fDCAYK(0),
255 fDCAXL(0),
256 fDCAYL(0),
257 fDCAZ(0),
258 fDCADaughtersL(0),
259 fDCADaughtersAL(0),
260 fDCADaughtersK0(0),
261 fDCADaughtersToVtxLarge(0),
262 fDCADaughtersToVtxSmall(0),
263 fDecayRadXYMin(0),
264 fDecayRadXYMax(0),
6c301331 265 fPtDecRadMin(0),
aa3d4e29 266 fCosPointAngL(0),
267 fCosPointAngK(0),
268 fCPAPtCutK0(0),
269 fCPAPtCutL(0),
270 fOpengAngleDaughters(0),
271 fOpAngPtCut(0),
272 fDecayLengthMax(0),
273 fDecayLengthMin(0),
5842a526 274 fDecRadCutITSMin(0),
275 fDecRadCutITSMax(0),
aa3d4e29 276 fCtauK0s(0),
277 fCtauL(0),
278 fCtauPtCutK0(0),
279 fCtauPtCutL(0),
5842a526 280 fChiCutKf(0),
281 fK0sLowMassCut(0),
282 fK0sHighMassCut(0),
283 fLLowMassCut(0),
284 fLHighMassCut(0),
285 fSetFillDetAL(0),
6c301331 286 fSetPtDepHist(0),
287 fStopLoop(0)
aa3d4e29 288 // fShift(0),
289 // fDeltaInvP(0)
5842a526 290{ // Constructor.
aa3d4e29 291
292 DefineOutput(1,TList::Class());
aa3d4e29 293 // define defaults for globals
294 /*
295 fShift = kFALSE; // shift in charge/pt yes/no
296 fDeltaInvP = 0.00; // shift value
297 */
aa3d4e29 298
5842a526 299 fMCMode = kFALSE;
300 fMCTruthMode = kFALSE;
aa3d4e29 301
5842a526 302 fUseCentrality = 0;
303 fUseCentralityBin = 0;
304 fUseCentralityRange =0;
aa3d4e29 305
5842a526 306 fAnapp = kFALSE;
307 fRejectPileUpSPD = kFALSE;
308 fSelSDD = kFALSE;
309 fSelNoSDD= kFALSE;
310
311 fSelectInjected = kFALSE;
312 fSelectMBMotherMC = kFALSE;
313 fCheckNegLabelReco = kFALSE;
314 fOnlyFoundRecoV0= kFALSE;
315
316 fVertexZCut = 100000.0;
317 fVtxStatus = kFALSE;
6c301331 318
5842a526 319 fOntheFly = kTRUE;
aa3d4e29 320
5842a526 321 //----- define defaults for V0 and track cuts ----//
11e769d9 322 fNcr = 70;
323 fChi2cls = 4;
324 fTPCrefit = kTRUE;
325 fNcrCh = 70;
326 fChi2clsCh =4;
327 fTPCrefitCh = kTRUE;
328 fNcrLpt = 70;
329 fChi2clsLpt = 4;
6c301331 330 fTPCrefitLpt = kTRUE;
76a4d7a7 331
5842a526 332 fUsePID = kFALSE;
333 fUsePIDPion = kFALSE;
334 fMoreNclsThanRows = kFALSE;
335 fMoreNclsThanFindable = kFALSE;
336 fMoreNclsThanFindableMax = kFALSE;
337 fRatioFoundOverFindable = -1.0;
338 fRatioMaxCRowsOverFindable = 1000.0;
339
340
341 fChi2PerClusterITS = 100000.0;
76a4d7a7 342 fDistanceTPCInner = -1.0;
5842a526 343 fMinNCLSITSPos = -1;
344 fMaxNCLSITSPos = 1000;
345 fMinNCLSITSNeg = -1;
346 fMaxNCLSITSNeg = 1000;
347 fSwitchCaseITSCls = kFALSE;
348
349 fCutMITrackLength = kFALSE;
350 fCutMICrossedR = kFALSE;
351 fCutMITPCncls = kFALSE;
352 fCutMITrackLengthLengthF = 1.0;
353 fCutMICrossedRLengthF = 0.85;
354
355 fNSigma = 100000.0;
356 fNSigma2 = 100000.0;
357 fPPIDcut = 100.0;
358 fPtTPCCut = -1.0;
359
360
361 fRapCutV0=kFALSE;
362 fRap=1000.0;
363 fRap=1000.0;
364
365 fAlfaCut= -100.0;
366 fQtCut = -1.0;
367 fQtCutPt = 100.0;
368 fQtCutPtLow = -1.0;
369 fArmCutK0=kFALSE;
370 fArmCutL=kFALSE;
371 fArmQtSlope =0.2;
372 fExcludeLambdaFromK0s = -1.0;
373 fExcludeK0sFromLambda = -1.0;
6c301331 374 fExcludePhotonsFromK0s = -1.0;
375 fExcludePhotonsFromLambda = -1.0;
5842a526 376
377 fEtaCutMCDaughters = kFALSE;
378 fEtaCutMCDaughtersVal = 50.0;
379
380 fMinPt= -1.0;
381
382 fDCAToVertexK0 = 10000.0;
383 fDCAToVertexL = 10000.0;
384 fDCAXK=10000.0;
385 fDCAYK=10000.0;
386 fDCAXL=10000.0;
387 fDCAYL=10000.0;
388 fDCAZ=10000.0;
389
390 fDCADaughtersL=10000.0;
391 fDCADaughtersAL=10000.0;
392 fDCADaughtersK0=10000.0;
aa3d4e29 393
5842a526 394 fDCADaughtersToVtxLarge=-1.0;
395 fDCADaughtersToVtxSmall=-1.0;
aa3d4e29 396
6c301331 397 fDecayRadXYMin = -100000.0;
398 fDecayRadXYMax = 1000000.0;
399 fPtDecRadMin = 1000000.0;
400 fDecayLengthMax = 100000.0;
401 fDecayLengthMin = -1000000.0;
5842a526 402
403 fDecRadCutITSMin = 0.0000;
404 fDecRadCutITSMax = 10000.0;
aa3d4e29 405
5842a526 406 fCosPointAngL=-1.0;
407 fCosPointAngK=-1.0;
408 fCPAPtCutK0 = 1000.0;
6c301331 409 fCPAPtCutL = -1000.0;//xxx
5842a526 410 fOpengAngleDaughters = -1.0;
411 fOpAngPtCut = -1.0;
412
413 fCtauK0s=10e6;
414 fCtauL=10e6;
415 fCtauPtCutK0=10e6;
416 fCtauPtCutL=10e6;
aa3d4e29 417
5842a526 418 fChiCutKf=1000000.0;
aa3d4e29 419
5842a526 420 fK0sLowMassCut = 0.25;
421 fK0sHighMassCut = 0.75;
aa3d4e29 422
5842a526 423 fLLowMassCut = 1.05;
424 fLHighMassCut = 1.25;
aa3d4e29 425
aa3d4e29 426
5842a526 427 fSetFillDetAL = kFALSE;
aa3d4e29 428
5842a526 429 fSetPtDepHist=kFALSE;
aa3d4e29 430
6c301331 431 fStopLoop = kFALSE;
432
aa3d4e29 433 //---- histograms ----//
434 for(Int_t j=0;j<2;j++){
5842a526 435 fHistArmenteros[j]=NULL;
436 fHistV0RadiusZ[j] =NULL;
aa3d4e29 437 fHistV0RadiusZVSPt[j] =NULL;
5842a526 438 fHistV0RadiusXY[j] =NULL;
aa3d4e29 439 fHistV0RadiusXYVSY[j] =NULL;
5842a526 440
aa3d4e29 441 //Lambda
5842a526 442 fHistPiPMass[j]=NULL;
443 fHistPiPMassVSPt[j]=NULL;
444 fHistPiPMassVSY[j] = NULL;
445 fHistPiPMassVSPtMCTruth[j]=NULL;
446 fHistPiPRadiusXY[j]=NULL;
447 fHistPiPCosPointAng[j]=NULL;
448 fHistPiPDecayLengthVsPt[j]=NULL;
449 fHistPiPDecayLengthVsMass[j]=NULL;
450 fHistPiPDecayLengthVsCtau[j]=NULL;
451 fHistPiPDCADaughterPosToPrimVtxVSMass[j]=NULL;
452 fHistPiPDCADaughterNegToPrimVtxVSMass[j]=NULL;
453 fHistPiPMassVSPtSecSigma[j]=NULL;
454 fHistPiPMassVSPtSecXi[j]=NULL;
455 fHistPiPMassVSPtSecOmega[j]=NULL;
456 fHistPiPMassVSYSecXi[j]=NULL;
457 fHistPiPXi0PtVSLambdaPt[j]=NULL;
458 fHistPiPXiMinusPtVSLambdaPt[j]=NULL;
459 fHistPiPOmegaPtVSLambdaPt[j]=NULL;
460 fHistPiPDCADaughters[j]=NULL;
aa3d4e29 461 // fHistPiPPtDaughters[j]=NULL;
5842a526 462 fHistPiPPtVSY[j]=NULL;
463 fHistPiPDCAVSMass[j]=NULL;
464 fHistPiPMonitorCuts[j] =NULL;
465 fHistPiPMonitorMCCuts[j] =NULL;
466 fHistPiPDecayLengthResolution[j] =NULL;
467 // fHistPiPDCAZPos[j] =NULL;
468 //fHistPiPDCAZNeg[j] =NULL;
469 fHistPiPTrackLengthPosVsMass[j] = NULL;
470 fHistPiPTrackLengthNegVsMass[j] = NULL;
471
472 //ALambda
473 fHistPiAPMass[j]=NULL;
474 fHistPiAPMassVSPt[j]=NULL;
475 fHistPiAPMassVSY[j] = NULL;
476 fHistPiAPMassVSPtMCTruth[j]=NULL;
477 fHistPiAPRadiusXY[j]=NULL;
478 fHistPiAPCosPointAng[j]=NULL;
479 fHistPiAPDecayLengthVsPt[j]=NULL;
480 fHistPiAPDecayLengthVsMass[j]=NULL;
481 fHistPiAPDecayLengthVsCtau[j]=NULL;
482 fHistPiAPDCADaughterPosToPrimVtxVSMass[j]=NULL;
483 fHistPiAPDCADaughterNegToPrimVtxVSMass[j]=NULL;
484 fHistPiAPMassVSPtSecSigma[j]=NULL;
485 fHistPiAPMassVSPtSecXi[j]=NULL;
486 fHistPiAPMassVSPtSecOmega[j]=NULL;
487 fHistPiAPMassVSYSecXi[j]=NULL;
488 fHistPiAPXi0PtVSLambdaPt[j]=NULL;
489 fHistPiAPXiMinusPtVSLambdaPt[j]=NULL;
490 fHistPiAPOmegaPtVSLambdaPt[j] =NULL;
491 fHistPiAPDCADaughters[j]=NULL;
aa3d4e29 492 // fHistPiAPPtDaughters[j]=NULL;
5842a526 493 fHistPiAPPtVSY[j]=NULL;
494 fHistPiAPDCAVSMass[j]=NULL;
495 fHistPiAPMonitorCuts[j] =NULL;
496 fHistPiAPMonitorMCCuts[j] =NULL;
497 fHistPiAPDecayLengthResolution[j] =NULL;
498 // fHistPiAPDCAZPos[j] =NULL;
499 //fHistPiAPDCAZNeg[j] =NULL;
500 fHistPiAPTrackLengthPosVsMass[j] = NULL;
501 fHistPiAPTrackLengthNegVsMass[j] = NULL;
502
503 //other
504 fHistDedxSecProt[j]=NULL;
505 fHistDedxSecAProt[j]=NULL;
506 fHistDedxSecPiMinus[j]=NULL;
507 fHistDedxSecPiPlus[j]=NULL;
508 fHistDedxProt[j]=NULL;
509 fHistDedxAProt[j]=NULL;
510 fHistDedxPiMinus[j]=NULL;
511 fHistDedxPiPlus[j]=NULL;
512 fHistNclsITS[j]=NULL;
513 fHistNclsTPC[j]=NULL;
514 fHistNclsITSPosL[j]=NULL;
515 fHistNclsITSNegL[j]=NULL;
516 fHistNclsTPCPosL[j]=NULL;
517 fHistNclsTPCNegL[j]=NULL;
518 fHistChi2PerNclsITSPosL[j]=NULL;
519 fHistChi2PerNclsITSNegL[j]=NULL;
520 fHistNCRowsTPCPosL[j]=NULL;
521 fHistNCRowsTPCNegL[j]=NULL;
522 fHistRatioFoundOverFinableTPCLPos[j]=NULL;
523 fHistRatioFoundOverFinableTPCLNeg[j]=NULL;
524 fHistPiPiEtaDMC[j] = NULL;
525 fHistPiPiEtaDReco[j] = NULL;
526 fHistPiPEtaDMC[j] = NULL;
527 fHistPiPEtaDReco[j] = NULL;
aa3d4e29 528 }
529
aa3d4e29 530}
11e769d9 531//________________________________________________________________________
76a4d7a7 532AliAnalysisTaskV0ForRAA::AliAnalysisTaskV0ForRAA(const char *name)
6c301331 533 :AliAnalysisTaskSE(name),
76a4d7a7 534 fESD(0),
535 fMCev(0),
6c301331 536 //other objects
76a4d7a7 537 fESDpid(0),
538 fESDTrackCuts(0),
539 fESDTrackCutsCharged(0),
540 fESDTrackCutsLowPt(0),
541 fOutputContainer(0),
6c301331 542 //thnf
543 fTHnFK0s(0),
544 fTHnFL(0),
545 fTHnFAL(0),
546 fTHnFK0sDauEta(0),
547 fTHnFLDauEta(0),
548 fTHnFALDauEta(0),
549 fTHnFK0sDauPhi(0),
550 fTHnFLDauPhi(0),
551 fTHnFALDauPhi(0),
552 //event histos
76a4d7a7 553 fHistITSLayerHits(0),
554 fHistOneHitWithSDD(0),
555 fHistNEvents(0),
556 fHistPrimVtxZESDVSNContributors(0),
557 fHistPrimVtxZESDTPCVSNContributors(0),
558 fHistPrimVtxZESDSPDVSNContributors(0),
559 fHistPrimVtxZESD(0),
560 fHistPrimVtxZESDTPC(0),
561 fHistPrimVtxZESDSPD(0),
562 fHistESDVertexZ(0),
563 fHistMuliplicity(0),
564 fHistMuliplicityRaw(0),
565 fHistCentBinRaw(0),
566 fHistCentBin(0),
567 fHistMultiplicityPrimary(0),
568 fHistNPrim(0),
569 fHistPiPiK0sVsLambdaMass(0),
570 fHistPiPiK0sVsALambdaMass(0),
571 fHistPiPK0sVsLambdaMass(0),
572 fHistPiAPK0sVsALambdaMass(0),
573 fHistPiPALambdaVsLambdaMass(0),
574 fHistPiAPLambdaVsALambdaMass(0),
6c301331 575 //-----------K0 histos -------------------//
76a4d7a7 576 fHistPiPiMass(0),
577 fHistPiPiMassVSPt(0),
578 fHistPiPiMassVSPtMCTruth(0),
579 fHistPiPiMassVSY(0),
580 fHistPiPiPtVSY(0),
6c301331 581
582 // fHistPiPiMassVSAlpha(0),
76a4d7a7 583 fHistPiPiRadiusXY(0),
584 fHistPiPiCosPointAng(0),
585 fHistPiPiDCADaughterPosToPrimVtxVSMass(0),
586 fHistPiPiDecayLengthVsPt(0),
587 fHistPiPiDecayLengthVsMass(0),
588 fHistPiPiDecayLengthVsCtau(0),
76a4d7a7 589 fHistPiPiDCADaughters(0),
6c301331 590 // fHistPiPiPtDaughters(0),
76a4d7a7 591 fHistPiPiDCAVSMass(0),
6c301331 592 // fHistPiPiDCAZPos(0),
593 //fHistPiPiDCAZNeg(0),
76a4d7a7 594 fHistPiPiTrackLengthPosVsMass(0),
595 fHistPiPiTrackLengthNegVsMass(0),
596 fHistPiPiMonitorCuts(0),
597 fHistPiPiMonitorMCCuts(0),
598 fHistPiPiDecayLengthResolution(0),
599 fHistNclsITSPosK0(0),
600 fHistNclsITSNegK0(0),
601 fHistNclsTPCPosK0(0),
602 fHistNclsTPCNegK0(0),
603 fHistChi2PerNclsITSPosK0(0),
604 fHistChi2PerNclsITSNegK0(0),
605 fHistNCRowsTPCPosK0(0),
606 fHistNCRowsTPCNegK0(0),
607 fHistRatioFoundOverFinableTPCK0Pos(0),
608 fHistRatioFoundOverFinableTPCK0Neg(0),
6c301331 609 //------------MC only histos-----------
76a4d7a7 610 fHistPrimVtxZESDVSNContributorsMC(0),
611 fHistPrimVtxZESDTPCVSNContributorsMC(0),
612 fHistPrimVtxZESDSPDVSNContributorsMC(0),
613 fHistMCVertexZ(0),
614 fHistPiPiPDGCode(0),
615 fHistPiPPDGCode(0),
616 fHistPiAPPDGCode(0),
6c301331 617
618 // //-- BG of K0s
619 // fHistPiPiGA(0),
620 // fHistPiPiKch(0),
621 // fHistPiPiPhi(0),
622 // fHistPiPiL(0),
623 // fHistPiPiPi0(0),
624 // fHistPiPiPich(0),
625 // fHistPiPiRoh(0),
626 // fHistPiPiOmega(0),
627 // fHistPiPiKStar(0),
628 // fHistPiPiNoMother(0),
629 // fHistPiPiK0s(0),
630 // fHistPiPiK0L(0),
631 // fHistPiPiN(0),
632 // fHistPiPiSigma(0),
633 // fHistPiPiXi(0),
634 // fHistPiPiDelta(0),
635 // fHistPiPiB(0),
636 // fHistPiPiD(0),
637 // fHistPiPiEta(0),
638 // //-- BG of Lambda
639 // fHistPiPGA(0),
640 // fHistPiPKch(0),
641 // fHistPiPK0s(0),
642 // fHistPiPPi0(0),
643 // fHistPiPPich(0),
644 // fHistPiPKStar(0),
645 // fHistPiPN(0),
646 // fHistPiPNoMother(0),
647 // fHistPiPL(0),
648
649 //cosine of pointing angle of Xi vs pt histos
76a4d7a7 650 fHistPiPCosPointAngXiVsPt(0),
651 fHistPiAPCosPointAngXiVsPt(0),
652 fHistPiPMassVSPtSecXiMCTruth(0),
653 fHistPiPMassVSPtSecOmegaMCTruth(0),
654 fHistPiAPMassVSPtSecXiMCTruth(0),
655 fHistPiAPMassVSPtSecOmegaMCTruth(0),
6c301331 656 // fHistUserPtShift(0),
657 //fHistPiPiPhiPosVsPtPosVsMass(0),//xxx
658 //fHistPiPPhiPosVsPtPosVsMass(0),//xxx
659 //fHistPiAPPhiPosVsPtPosVsMass(0),//xxx
660 //selection booleans and values
76a4d7a7 661 fMCMode(0),
662 fMCTruthMode(0),
663 fSelectInjected(0),
664 fSelectMBMotherMC(0),
665 fCheckNegLabelReco(0),
666 fOnlyFoundRecoV0(0),
667 fUseCentrality(0),
668 fUseCentralityBin(0),
669 fUseCentralityRange(0),
670 fAnapp(0),
671 fRejectPileUpSPD(0),
672 fSelSDD(0),
673 fSelNoSDD(0),
674 fOntheFly(0),
675 fVertexZCut(0),
676 fVtxStatus(0),
6c301331 677 fNcr(0),
76a4d7a7 678 fChi2cls(0),
679 fTPCrefit(0),
680 fNcrCh(0),
681 fChi2clsCh(0),
682 fTPCrefitCh(0),
683 fNcrLpt(0),
684 fChi2clsLpt(0),
685 fTPCrefitLpt(0),
686 fUsePID(0),
687 fUsePIDPion(0),
688 fNSigma(0),
689 fNSigma2(0),
690 fPPIDcut(0),
691 fPtTPCCut(0),
692 fMoreNclsThanRows(0),
693 fMoreNclsThanFindable(0),
694 fMoreNclsThanFindableMax(0),
695 fRatioFoundOverFindable(0),
696 fRatioMaxCRowsOverFindable(0),
697 fChi2PerClusterITS(0),
698 fDistanceTPCInner(0),
699 fMinNCLSITSPos(0),
700 fMinNCLSITSNeg(0),
701 fMaxNCLSITSPos(0),
702 fMaxNCLSITSNeg(0),
703 fSwitchCaseITSCls(0),
704 fCutMITrackLength(0),
705 fCutMICrossedR(0),
706 fCutMITPCncls(0),
707 fCutMITrackLengthLengthF(0),
708 fCutMICrossedRLengthF(0),
709 fRapCutV0(0),
710 fRap(0),
711 fEtaCutMCDaughters(0),
712 fEtaCutMCDaughtersVal(0),
713 fMinPt(0),
714 fAlfaCut(0),
715 fQtCut(0),
716 fQtCutPt(0),
717 fQtCutPtLow(0),
718 fArmCutK0(0),
719 fArmCutL(0),
720 fArmQtSlope(0),
721 fExcludeLambdaFromK0s(0),
722 fExcludeK0sFromLambda(0),
6c301331 723 fExcludePhotonsFromK0s(0),
724 fExcludePhotonsFromLambda(0),
76a4d7a7 725 fDCAToVertexK0(0),
726 fDCAToVertexL(0),
727 fDCAXK(0),
728 fDCAYK(0),
729 fDCAXL(0),
730 fDCAYL(0),
731 fDCAZ(0),
732 fDCADaughtersL(0),
733 fDCADaughtersAL(0),
734 fDCADaughtersK0(0),
735 fDCADaughtersToVtxLarge(0),
736 fDCADaughtersToVtxSmall(0),
737 fDecayRadXYMin(0),
738 fDecayRadXYMax(0),
6c301331 739 fPtDecRadMin(0),
76a4d7a7 740 fCosPointAngL(0),
741 fCosPointAngK(0),
742 fCPAPtCutK0(0),
743 fCPAPtCutL(0),
744 fOpengAngleDaughters(0),
745 fOpAngPtCut(0),
746 fDecayLengthMax(0),
747 fDecayLengthMin(0),
748 fDecRadCutITSMin(0),
749 fDecRadCutITSMax(0),
750 fCtauK0s(0),
751 fCtauL(0),
752 fCtauPtCutK0(0),
753 fCtauPtCutL(0),
754 fChiCutKf(0),
755 fK0sLowMassCut(0),
756 fK0sHighMassCut(0),
757 fLLowMassCut(0),
758 fLHighMassCut(0),
759 fSetFillDetAL(0),
6c301331 760 fSetPtDepHist(0),
761 fStopLoop(0)
76a4d7a7 762 // fShift(0),
763 // fDeltaInvP(0)
6c301331 764{// Constructor.
11e769d9 765
76a4d7a7 766 DefineOutput(1,TList::Class());
76a4d7a7 767 // define defaults for globals
768 /*
769 fShift = kFALSE; // shift in charge/pt yes/no
770 fDeltaInvP = 0.00; // shift value
771 */
772
773 fMCMode = kFALSE;
774 fMCTruthMode = kFALSE;
aa3d4e29 775
76a4d7a7 776 fUseCentrality = 0;
777 fUseCentralityBin = 0;
778 fUseCentralityRange =0;
aa3d4e29 779
76a4d7a7 780 fAnapp = kFALSE;
781 fRejectPileUpSPD = kFALSE;
782 fSelSDD = kFALSE;
783 fSelNoSDD= kFALSE;
784
785 fSelectInjected = kFALSE;
786 fSelectMBMotherMC = kFALSE;
787 fCheckNegLabelReco = kFALSE;
788 fOnlyFoundRecoV0= kFALSE;
789
790 fVertexZCut = 100000.0;
791 fVtxStatus = kFALSE;
792
793 fOntheFly = kTRUE;
794
795 //----- define defaults for V0 and track cuts ----//
76a4d7a7 796 fNcr = 70;
797 fChi2cls = 4;
798 fTPCrefit = kTRUE;
799 fNcrCh = 70;
800 fChi2clsCh =4;
801 fTPCrefitCh = kTRUE;
802 fNcrLpt = 70;
803 fChi2clsLpt = 4;
804 fTPCrefitLpt = kTRUE;
805
76a4d7a7 806 fUsePID = kFALSE;
807 fUsePIDPion = kFALSE;
808 fMoreNclsThanRows = kFALSE;
809 fMoreNclsThanFindable = kFALSE;
810 fMoreNclsThanFindableMax = kFALSE;
811 fRatioFoundOverFindable = -1.0;
812 fRatioMaxCRowsOverFindable = 1000.0;
813
814
815 fChi2PerClusterITS = 100000.0;
816 fDistanceTPCInner = -1.0;
817 fMinNCLSITSPos = -1;
818 fMaxNCLSITSPos = 1000;
819 fMinNCLSITSNeg = -1;
820 fMaxNCLSITSNeg = 1000;
821 fSwitchCaseITSCls = kFALSE;
822
823 fCutMITrackLength = kFALSE;
824 fCutMICrossedR = kFALSE;
825 fCutMITPCncls = kFALSE;
826 fCutMITrackLengthLengthF = 1.0;
827 fCutMICrossedRLengthF = 0.85;
828
829 fNSigma = 100000.0;
830 fNSigma2 = 100000.0;
831 fPPIDcut = 100.0;
832 fPtTPCCut = -1.0;
833
834
835 fRapCutV0=kFALSE;
836 fRap=1000.0;
837 fRap=1000.0;
838
839 fAlfaCut= -100.0;
840 fQtCut = -1.0;
841 fQtCutPt = 100.0;
842 fQtCutPtLow = -1.0;
843 fArmCutK0=kFALSE;
844 fArmCutL=kFALSE;
845 fArmQtSlope =0.2;
846 fExcludeLambdaFromK0s = -1.0;
847 fExcludeK0sFromLambda = -1.0;
6c301331 848 fExcludePhotonsFromK0s = -1.0;
849 fExcludePhotonsFromLambda = -1.0;
76a4d7a7 850
851 fEtaCutMCDaughters = kFALSE;
852 fEtaCutMCDaughtersVal = 50.0;
853
854 fMinPt= -1.0;
855
856 fDCAToVertexK0 = 10000.0;
857 fDCAToVertexL = 10000.0;
858 fDCAXK=10000.0;
859 fDCAYK=10000.0;
860 fDCAXL=10000.0;
861 fDCAYL=10000.0;
862 fDCAZ=10000.0;
863
864 fDCADaughtersL=10000.0;
865 fDCADaughtersAL=10000.0;
866 fDCADaughtersK0=10000.0;
867
868 fDCADaughtersToVtxLarge=-1.0;
869 fDCADaughtersToVtxSmall=-1.0;
870
6c301331 871 fDecayRadXYMin = -100000.0;
872 fDecayRadXYMax = 1000000.0;
873 fPtDecRadMin = 1000000.0;
874 fDecayLengthMax = 100000.0;
875 fDecayLengthMin = -1000000.0;
76a4d7a7 876
877 fDecRadCutITSMin = 0.0000;
878 fDecRadCutITSMax = 10000.0;
879
880 fCosPointAngL=-1.0;
881 fCosPointAngK=-1.0;
882 fCPAPtCutK0 = 1000.0;
6c301331 883 fCPAPtCutL = -1000.0;//xxx
76a4d7a7 884 fOpengAngleDaughters = -1.0;
885 fOpAngPtCut = -1.0;
886
887 fCtauK0s=10e6;
888 fCtauL=10e6;
889 fCtauPtCutK0=10e6;
890 fCtauPtCutL=10e6;
891
892 fChiCutKf=1000000.0;
893
894 fK0sLowMassCut = 0.25;
895 fK0sHighMassCut = 0.75;
896
897 fLLowMassCut = 1.05;
898 fLHighMassCut = 1.25;
899
900
901 fSetFillDetAL = kFALSE;
902
903 fSetPtDepHist=kFALSE;
904
6c301331 905 fStopLoop = kFALSE;
906
76a4d7a7 907 //---- histograms ----//
908 for(Int_t j=0;j<2;j++){
909 fHistArmenteros[j]=NULL;
910 fHistV0RadiusZ[j] =NULL;
911 fHistV0RadiusZVSPt[j] =NULL;
912 fHistV0RadiusXY[j] =NULL;
913 fHistV0RadiusXYVSY[j] =NULL;
914
915 //Lambda
916 fHistPiPMass[j]=NULL;
917 fHistPiPMassVSPt[j]=NULL;
918 fHistPiPMassVSY[j] = NULL;
919 fHistPiPMassVSPtMCTruth[j]=NULL;
920 fHistPiPRadiusXY[j]=NULL;
921 fHistPiPCosPointAng[j]=NULL;
922 fHistPiPDecayLengthVsPt[j]=NULL;
923 fHistPiPDecayLengthVsMass[j]=NULL;
924 fHistPiPDecayLengthVsCtau[j]=NULL;
925 fHistPiPDCADaughterPosToPrimVtxVSMass[j]=NULL;
926 fHistPiPDCADaughterNegToPrimVtxVSMass[j]=NULL;
927 fHistPiPMassVSPtSecSigma[j]=NULL;
928 fHistPiPMassVSPtSecXi[j]=NULL;
929 fHistPiPMassVSPtSecOmega[j]=NULL;
930 fHistPiPMassVSYSecXi[j]=NULL;
931 fHistPiPXi0PtVSLambdaPt[j]=NULL;
932 fHistPiPXiMinusPtVSLambdaPt[j]=NULL;
933 fHistPiPOmegaPtVSLambdaPt[j]=NULL;
934 fHistPiPDCADaughters[j]=NULL;
935 // fHistPiPPtDaughters[j]=NULL;
936 fHistPiPPtVSY[j]=NULL;
937 fHistPiPDCAVSMass[j]=NULL;
938 fHistPiPMonitorCuts[j] =NULL;
939 fHistPiPMonitorMCCuts[j] =NULL;
940 fHistPiPDecayLengthResolution[j] =NULL;
941 // fHistPiPDCAZPos[j] =NULL;
942 //fHistPiPDCAZNeg[j] =NULL;
943 fHistPiPTrackLengthPosVsMass[j] = NULL;
944 fHistPiPTrackLengthNegVsMass[j] = NULL;
945
946 //ALambda
947 fHistPiAPMass[j]=NULL;
948 fHistPiAPMassVSPt[j]=NULL;
949 fHistPiAPMassVSY[j] = NULL;
950 fHistPiAPMassVSPtMCTruth[j]=NULL;
951 fHistPiAPRadiusXY[j]=NULL;
952 fHistPiAPCosPointAng[j]=NULL;
953 fHistPiAPDecayLengthVsPt[j]=NULL;
954 fHistPiAPDecayLengthVsMass[j]=NULL;
955 fHistPiAPDecayLengthVsCtau[j]=NULL;
956 fHistPiAPDCADaughterPosToPrimVtxVSMass[j]=NULL;
957 fHistPiAPDCADaughterNegToPrimVtxVSMass[j]=NULL;
958 fHistPiAPMassVSPtSecSigma[j]=NULL;
959 fHistPiAPMassVSPtSecXi[j]=NULL;
960 fHistPiAPMassVSPtSecOmega[j]=NULL;
961 fHistPiAPMassVSYSecXi[j]=NULL;
962 fHistPiAPXi0PtVSLambdaPt[j]=NULL;
963 fHistPiAPXiMinusPtVSLambdaPt[j]=NULL;
964 fHistPiAPOmegaPtVSLambdaPt[j] =NULL;
965 fHistPiAPDCADaughters[j]=NULL;
966 // fHistPiAPPtDaughters[j]=NULL;
967 fHistPiAPPtVSY[j]=NULL;
968 fHistPiAPDCAVSMass[j]=NULL;
969 fHistPiAPMonitorCuts[j] =NULL;
970 fHistPiAPMonitorMCCuts[j] =NULL;
971 fHistPiAPDecayLengthResolution[j] =NULL;
972 // fHistPiAPDCAZPos[j] =NULL;
973 //fHistPiAPDCAZNeg[j] =NULL;
974 fHistPiAPTrackLengthPosVsMass[j] = NULL;
975 fHistPiAPTrackLengthNegVsMass[j] = NULL;
976
977 //other
978 fHistDedxSecProt[j]=NULL;
979 fHistDedxSecAProt[j]=NULL;
980 fHistDedxSecPiMinus[j]=NULL;
981 fHistDedxSecPiPlus[j]=NULL;
982 fHistDedxProt[j]=NULL;
983 fHistDedxAProt[j]=NULL;
984 fHistDedxPiMinus[j]=NULL;
985 fHistDedxPiPlus[j]=NULL;
986 fHistNclsITS[j]=NULL;
987 fHistNclsTPC[j]=NULL;
988 fHistNclsITSPosL[j]=NULL;
989 fHistNclsITSNegL[j]=NULL;
990 fHistNclsTPCPosL[j]=NULL;
991 fHistNclsTPCNegL[j]=NULL;
992 fHistChi2PerNclsITSPosL[j]=NULL;
993 fHistChi2PerNclsITSNegL[j]=NULL;
994 fHistNCRowsTPCPosL[j]=NULL;
995 fHistNCRowsTPCNegL[j]=NULL;
996 fHistRatioFoundOverFinableTPCLPos[j]=NULL;
997 fHistRatioFoundOverFinableTPCLNeg[j]=NULL;
998 fHistPiPiEtaDMC[j] = NULL;
999 fHistPiPiEtaDReco[j] = NULL;
1000 fHistPiPEtaDMC[j] = NULL;
1001 fHistPiPEtaDReco[j] = NULL;
1002 }
1003
1004}
76a4d7a7 1005//_____________________________________________________
1006AliAnalysisTaskV0ForRAA::~AliAnalysisTaskV0ForRAA()
1007{
1008 //---- Remove all pointers ----//
1009 if(fOutputContainer) delete fOutputContainer;fOutputContainer=0;
1010 if(fESDTrackCuts) delete fESDTrackCuts;fESDTrackCuts=0;
1011 if(fESDTrackCutsCharged) delete fESDTrackCutsCharged;fESDTrackCutsCharged=0;
1012 if(fESDTrackCutsLowPt) delete fESDTrackCutsLowPt; fESDTrackCutsLowPt=0;
1013}
1014//________________________________________________________________________
1015void AliAnalysisTaskV0ForRAA::UserCreateOutputObjects(){
1016
1017 //--- esd track cuts V0 daughters ---//
1018 TString cutsname = "esdtrackcuts";
1019 // esd track cuts for pions high pt
1020 fESDTrackCuts = new AliESDtrackCuts(cutsname);
1021 fESDTrackCuts->SetMaxChi2PerClusterTPC(fChi2cls);
1022 fESDTrackCuts->SetMinNCrossedRowsTPC(fNcr);
1023 fESDTrackCuts->SetAcceptKinkDaughters(kFALSE);
1024 fESDTrackCuts->SetRequireTPCRefit(fTPCrefit);
1025 fESDTrackCuts->SetRequireSigmaToVertex(kFALSE);
1026
1027 // esd track cuts for protons high pt
6c301331 1028 TString cutsnameCh = cutsname;
1029 cutsnameCh +="_charged";
1030 fESDTrackCutsCharged = new AliESDtrackCuts(cutsnameCh);
1031 fESDTrackCutsCharged->SetMaxChi2PerClusterTPC(fChi2clsCh);
1032 fESDTrackCutsCharged->SetMinNCrossedRowsTPC(fNcrCh);
1033 fESDTrackCutsCharged->SetAcceptKinkDaughters(kFALSE);
1034 fESDTrackCutsCharged->SetRequireTPCRefit(fTPCrefitCh);
1035 fESDTrackCutsCharged->SetRequireSigmaToVertex(kFALSE);
1036
1037 // esd track cuts for all low pt
1038 TString cutsnameLowPt = cutsname;
1039 cutsnameLowPt +="_lowpt";
1040 fESDTrackCutsLowPt = new AliESDtrackCuts(cutsnameLowPt);
1041 fESDTrackCutsLowPt->SetMaxChi2PerClusterTPC(fChi2clsLpt);
1042 fESDTrackCutsLowPt->SetMinNCrossedRowsTPC(fNcrLpt);
1043 fESDTrackCutsLowPt->SetAcceptKinkDaughters(kFALSE);
1044 fESDTrackCutsLowPt->SetRequireTPCRefit(fTPCrefitLpt);
1045 fESDTrackCutsLowPt->SetRequireSigmaToVertex(kFALSE);
1046
1047
1048
1049 //create output objects
76a4d7a7 1050 Int_t nbMass=500;
6c301331 1051
76a4d7a7 1052 //----------------- create output container -----------------//
1053
1054 fOutputContainer = new TList() ;
1055 fOutputContainer->SetName(GetName()) ;
1056 fOutputContainer->SetOwner();
1057
6c301331 1058 TH1::SetDefaultSumw2();
1059 TH2::SetDefaultSumw2();
1060
76a4d7a7 1061 Int_t mchist = 1;// for Data
6c301331 1062 if((fMCMode && fMCTruthMode) || fMCTruthMode) mchist = 2;//for MC to create sec. Lambda histos
76a4d7a7 1063
1064 //------------ create allways -----------------------//
1065 fHistNEvents = new TH1F("fHistNEvents","no of events before cuts =0, after cuts=1, after process =2",5,0.0,5.0);
1066 fOutputContainer->Add(fHistNEvents);
1067
1068 fHistMuliplicity = new TH1F("fHistMuliplicity","V0 multiplicity",3000,0.0,30000);
1069 fOutputContainer->Add(fHistMuliplicity);
1070
aa3d4e29 1071 fHistMuliplicityRaw = new TH1F("fHistMuliplicityRaw","V0 multiplicity before process",3000,0.0,30000);
1072 fOutputContainer->Add(fHistMuliplicityRaw);
1073
1074 fHistMultiplicityPrimary = new TH1F("fHistMultiplicityPrimary","number of charged tracks",5000,0.0,20000);
1075 fOutputContainer->Add(fHistMultiplicityPrimary);
1076
5842a526 1077 fHistESDVertexZ= new TH1F("fHistESDVertexZ"," z vertex distr in cm",500,-50,50);
aa3d4e29 1078 fOutputContainer->Add(fHistESDVertexZ);
1079
1080 fHistPrimVtxZESD = new TH1F("fHistPrimVtxZESD","z vertex pos ESD",250,-50,50);
1081 fOutputContainer->Add(fHistPrimVtxZESD);
1082
1083 fHistPrimVtxZESDVSNContributors = new TH2F("fHistPrimVtxZESDVSNContributors","prim vtx pos z ESD vs no. of contributers TPC",250,-50,50,500,0.0,500.0);
1084 fOutputContainer->Add(fHistPrimVtxZESDVSNContributors);
1085
5842a526 1086 fHistNPrim = new TH1F("fHistNPrim","Number of contributers to vertex",2500,0.0,5000);
aa3d4e29 1087 fOutputContainer->Add(fHistNPrim);
1088
1089 //------------------------ pp analysis only -------------------------//
1090 if(fAnapp){
5842a526 1091 fHistITSLayerHits = new TH1F("fHistITSLayerHits","SDD layer -1=0,1=1,2=2 ... 5=5,0=nothing",7,-1.5,5.5);
aa3d4e29 1092 fOutputContainer->Add(fHistITSLayerHits);
5842a526 1093 fHistOneHitWithSDD = new TH1F("fHistOneHitWithSDD","min one hit in SDD",2,-0.5,1.5);
aa3d4e29 1094 fOutputContainer->Add(fHistOneHitWithSDD);
1095 fHistPrimVtxZESDTPC = new TH1F("fHistPrimVtxZESDTPC","z vertex pos TPC",250,-50,50);
1096 fOutputContainer->Add(fHistPrimVtxZESDTPC);
1097 fHistPrimVtxZESDSPD = new TH1F("fHistPrimVtxZESDSPD","z vertex pos SPD",250,-50,50);
1098 fOutputContainer->Add(fHistPrimVtxZESDSPD);
1099 fHistPrimVtxZESDTPCVSNContributors = new TH2F("fHistPrimVtxZESDTPCVSNContributors","prim vtx pos z TPC vs no. of contributers TPC",250,-50,50,500,0.0,500.0);
1100 fOutputContainer->Add(fHistPrimVtxZESDTPCVSNContributors);
1101 fHistPrimVtxZESDSPDVSNContributors = new TH2F("fHistPrimVtxZESDSPDVSNContributors","prim vtx pos z SPD vs no. of contributers TPC",250,-50,50,500,0.0,500.0);
1102 fOutputContainer->Add(fHistPrimVtxZESDSPDVSNContributors);
1103
1104 }
1105 else {
1106 Double_t binsCent[12]={0.0,5.0,10.0,20.0,30.0,40.0,50.0,60.0,70.0,80.0,90.0,100.0};
1107 fHistCentBinRaw = new TH1F("fHistCentBinRaw","centrality bin before cent selection",11,binsCent);
1108 fOutputContainer->Add(fHistCentBinRaw);
5842a526 1109 fHistCentBin = new TH1F("fHistCentBin","centrality bin",11,binsCent);
aa3d4e29 1110 fOutputContainer->Add(fHistCentBin);
1111
1112 }
1113
1114 // ------------------- add always ---------------------------//
6c301331 1115 //THnF
1116 Double_t piForAx = TMath::Pi();
1117 Int_t binsTHnV0K0s[4] = {150,100,50,18};
1118 Int_t binsTHnV0L[4] = {100,100,50,18};
1119
1120 Int_t binsTHnV0DauEtaK0s[4] = {150,100,50,50};
1121 Int_t binsTHnV0DauEtaL[4] = {100,100,50,50};
1122
1123 Int_t binsTHnV0DauPhiK0s[5] = {150, 18,18, 7,7};
1124 Int_t binsTHnV0DauPhiL[5] = {100, 18,18, 7,7};
1125
1126 Double_t minK0s[4] = {0.35,0.0,-1.0,0.0};
1127 Double_t maxK0s[4] = {0.65,50.0,1.0,piForAx};
1128 Double_t minK0sDauEta[4] = {0.35, 0.0,-1.0,-1.0};
1129 Double_t maxK0sDauEta[4] = {0.65,50.0, 1.0, 1.0};
1130 Double_t minK0sDauPhi[5] = {0.35,0.0,0.0,-0.5,-0.5};
1131 Double_t maxK0sDauPhi[5] = {0.65,piForAx,piForAx,6.5,6.5};
1132
1133 Double_t minL[4] = {1.07, 0.0,-1.0,0.0};
1134 Double_t maxL[4] = {1.17,50.0, 1.0,piForAx};
1135 Double_t minLDauEta[4] = {1.07, 0.0,-1.0,-1.0};
1136 Double_t maxLDauEta[4] = {1.17,50.0, 1.0, 1.0};
1137 Double_t minLDauPhi[5] = {1.07,0.0,0.0,-0.5,-0.5};
1138 Double_t maxLDauPhi[5] = {1.17,piForAx,piForAx,6.5, 6.5};
1139
1140
1141 char histTitK0s[255];
1142 snprintf(histTitK0s,255,"fTHnFK0s");
1143 char histTitL[255];
1144 snprintf(histTitL,255,"fTHnFL");
1145 char histTitAL[255];
1146 snprintf(histTitAL,255,"fTHnFAL");
1147
1148
1149 char histTitK0sDauEta[255];
1150 snprintf(histTitK0sDauEta,255,"fTHnFK0sDauEta");
1151 char histTitLDauEta[255];
1152 snprintf(histTitLDauEta,255,"fTHnFLDauEta");
1153 char histTitALDauEta[255];
1154 snprintf(histTitALDauEta,255,"fTHnFALDauEta");
1155
1156
1157 char histTitK0sDauPhi[255];
1158 snprintf(histTitK0sDauPhi,255,"fTHnFK0sDauPhi");
1159 char histTitLDauPhi[255];
1160 snprintf(histTitLDauPhi,255,"fTHnFLDauPhi");
1161 char histTitALDauPhi[255];
1162 snprintf(histTitALDauPhi,255,"fTHnFALDauPhi");
1163
1164 char axTitK0s[255];
1165 snprintf(axTitK0s,255,"K^{0}_{s};m_{inv} (GeV/c^{2});p_{T} (GeV/c);#eta(V0);#phi(V0)");
1166 char axTitL[255];
1167 snprintf(axTitL,255,"#Lambda;m_{inv} (GeV/c^{2});p_{T} (GeV/c);#eta(V0);#phi(V0)");
1168 char axTitAL[255];
1169 snprintf(axTitAL,255,"#bar{#Lambda};m_{inv} (GeV/c^{2});p_{T} (GeV/c);#eta(V0);#phi(V0)");
1170
1171
1172 char axTitK0sDauEta[255];
1173 snprintf(axTitK0sDauEta,255,"K^{0}_{s} daughter;m_{inv} (GeV/c^{2});p_{T} (Gev/c);#eta_{pos};#eta_{neg}");
1174 char axTitLDauEta[255];
1175 snprintf(axTitLDauEta,255,"#Lambda daughter;m_{inv} (GeV/c^{2});p_{T} (GeV/c);#eta_{pos};#eta_{neg}");
1176 char axTitALDauEta[255];
1177 snprintf(axTitALDauEta,255,"#bar{#Lambda} daughter;m_{inv} (GeV/c^{2});p_{T} (GeV/c);#eta_{pos};#eta_{neg}");
1178
1179
1180 char axTitK0sDauPhi[255];
1181 snprintf(axTitK0sDauPhi,255,"K^{0}_{s} daughter;m_{inv} (GeV/c^{2});#phi_{pos};#phi_{neg};ITS hits (pos);ITS hits (neg)");
1182 char axTitLDauPhi[255];
1183 snprintf(axTitLDauPhi,255,"#Lambda daughter;m_{inv} (GeV/c^{2});#phi_{pos};#phi_{neg};ITS hits (pos);ITS hits (neg)");
1184 char axTitALDauPhi[255];
1185 snprintf(axTitALDauPhi,255,"#bar{#Lambda} daughter;m_{inv} (GeV/c^{2});#phi_{pos};#phi_{neg};ITS hits (pos);ITS hits (neg)");
1186
1187
1188 fTHnFK0s = new THnF(histTitK0s,axTitK0s,4,binsTHnV0K0s,minK0s,maxK0s);
1189 // fTHnFK0s->Sumw2();
1190 fTHnFL = new THnF(histTitL ,axTitL ,4,binsTHnV0L,minL ,maxL);
1191 // fTHnFL->Sumw2();
1192 fTHnFAL = new THnF(histTitAL ,axTitAL ,4,binsTHnV0L,minL ,maxL);
1193 // fTHnFAL->Sumw2();
1194
1195
1196 fTHnFK0sDauEta = new THnF(histTitK0sDauEta,axTitK0sDauEta,4,binsTHnV0DauEtaK0s,minK0sDauEta,maxK0sDauEta);
1197 // fTHnFK0sDauEta->Sumw2();
1198 fTHnFLDauEta = new THnF(histTitLDauEta ,axTitLDauEta ,4,binsTHnV0DauEtaL,minLDauEta ,maxLDauEta);
1199 // fTHnFLDauEta->Sumw2();
1200 fTHnFALDauEta = new THnF(histTitALDauEta ,axTitALDauEta ,4,binsTHnV0DauEtaL,minLDauEta ,maxLDauEta);
1201 // fTHnFALDauEta->Sumw2();
1202
1203 fTHnFK0sDauPhi = new THnF(histTitK0sDauPhi,axTitK0sDauPhi,5,binsTHnV0DauPhiK0s,minK0sDauPhi,maxK0sDauPhi);
1204 // fTHnFK0sDauPhi->Sumw2();
1205 fTHnFLDauPhi = new THnF(histTitLDauPhi ,axTitLDauPhi ,5,binsTHnV0DauPhiL,minLDauPhi ,maxLDauPhi);
1206 // fTHnFLDauPhi->Sumw2();
1207 fTHnFALDauPhi = new THnF(histTitALDauPhi ,axTitALDauPhi ,5,binsTHnV0DauPhiL,minLDauPhi ,maxLDauPhi);
1208 //fTHnFALDauPhi->Sumw2();
1209
1210
5842a526 1211 fHistV0RadiusZ[0] = new TH2F("fHistV0RadiusZ","z of decay radius vs 2D radius",100,0.0,100.0,250,-125.0,125.0);
6c301331 1212 fHistV0RadiusZVSPt[0] = new TH2F("fHistV0RadiusZVSPt","z of decay radius vs pt radius",500,0.0,50.0,125,0.0,125.0);
5842a526 1213 fHistV0RadiusXY[0] = new TH2F("fHistV0RadiusXY","y vs x decay radius",250,-125.0,125.0,250,-125.0,125.0);
aa3d4e29 1214 fHistV0RadiusXYVSY[0] = new TH2F("fHistV0RadiusXYVSY","2D decay radius vs rap",100,-1,1,100,0.0,100.0);
5842a526 1215 fHistArmenteros[0] = new TH2F("fHistArmenteros"," pi+pi- armenteros",nbMass,-1.,1.,500,0.,0.5);
1216
6c301331 1217
5842a526 1218 fHistPiPiK0sVsLambdaMass = new TH2F("fHistPiPiK0sVsLambdaMass","K0s mass vs Lambda mass for all pt for K0s",250,1.05,1.25,250,0.25,0.75);
1219 fHistPiPiK0sVsALambdaMass = new TH2F("fHistPiPiK0sVsALambdaMass","K0s mass vs ALambda mass for all pt for K0s",250,1.05,1.25,250,0.25,0.75);
1220
1221 fHistPiPK0sVsLambdaMass = new TH2F("fHistPiPK0sVsLambdaMass","K0s mass vs Lambda mass for all pt for Lambda",250,1.05,1.25,250,0.25,0.75);
1222
1223 fHistPiAPK0sVsALambdaMass = new TH2F("fHistPiAPK0sVsALambdaMass","K0s mass vs ALambda mass for all pt for ALambda",250,1.05,1.25,250,0.25,0.75);
1224
1225 fHistPiPALambdaVsLambdaMass = new TH2F("fHistPiPALambdaVsLambdaMass","ALambda mass vs Lambda mass for Lambda",250,1.05,1.25,250,1.05,1.25);
1226 fHistPiAPLambdaVsALambdaMass = new TH2F("fHistPiAPLambdaVsALambdaMass","Lambda mass vs ALambda mass for ALambda",250,1.05,1.25,250,1.05,1.25);
1227
6c301331 1228 //-----K0s---------//
5842a526 1229 fHistPiPiMass = new TH1F("fHistPiPiMass"," pi+pi- InvMass distribution",2*nbMass,0.,2.);
6c301331 1230 fHistPiPiMassVSPt = new TH2F("fHistPiPiMassVSPt","pi+pi- InvMass distribution",nbMass,0.25,0.75,500,0.0,50.0);
1231 fHistPiPiMassVSPtMCTruth = new TH2F("fHistPiPiMassVSPtMCTruth","pi+pi- InvMass distribution vs pt MCTruth",nbMass,0.25,0.75,500,0.0,50.0);
5842a526 1232 fHistPiPiMassVSY = new TH2F("fHistPiPiMassVSY","pi+pi- InvMass distribution vs rapidity",nbMass,0.25,0.75,200,-1.0,1.0);
1233 fHistPiPiPtVSY = new TH2F("fHistPiPiPtVSY","phi vs mass",100,-1,1,100,0.0,20);
6c301331 1234 fHistPiPiDecayLengthVsPt = new TH2F("fHistPiPiDecayLengthVsPt","K0 decay length vs pt",500,0.0,50.0,220,0.0,110.0);
5842a526 1235 fHistPiPiDecayLengthVsMass = new TH2F("fHistPiPiDecayLengthVsMass","K0s decay length vs mass",nbMass,0.25,0.75,220,0.0,110.0);
6c301331 1236 // fHistPiPiPhiPosVsPtPosVsMass = new TH3F("fHistPiPiPhiPosVsPtPosVsMass","ctau K0s vs pt vs mass",250,0.25,0.75,120,0.0,60.0,200,0.0,20.0);//4.0);//xxx
5842a526 1237 if(!fSetPtDepHist){
1238 fHistPiPiDecayLengthVsCtau = new TH2F("fHistPiPiDecayLengthVsCtau","K0s ctau vs mass",nbMass,0.25,0.75,250,0.0,50.0);
1239 }
6c301331 1240 else{
1241 fHistPiPiDecayLengthVsCtau = new TH2F("fHistPiPiDecayLengthVsCtau","K0s ctau vs pt",200,0,20.0,250,0.0,50.0);
1242 }
1243
1244 fHistPiPiMonitorCuts = new TH1F("fHistPiPiMonitorCuts","K0 cut monitor",35,0.5,35.5);
1245 fHistPiPiMonitorMCCuts = new TH1F("fHistPiPiMonitorMCCuts","K0 cut monitor mc",35,0.5,35.5);
1246
1247 //---------------Lambda--------------//
1248 fHistPiPMass[0] = new TH1F("fHistPiPMass"," p+pi- InvMass distribution",2*nbMass,0.,2.);
1249 fHistPiPMassVSPt[0] = new TH2F("fHistPiPMassVSPt","p+pi- InvMass distribution",nbMass,1.05,1.25,500,0.0,50.0);
1250 fHistPiPMassVSPtMCTruth[0] = new TH2F("fHistPiPMassVSPtMCTruth","p+pi- InvMass distribution vs pt MCTruth",nbMass,1.05,1.25,500,0.0,50.0);
1251 fHistPiPMassVSY[0] = new TH2F("fHistPiPMassVSY","p+pi- InvMass distribution vs rapidity",nbMass,1.05,1.25,200,-1.0,1.0);
1252 fHistPiPPtVSY[0] = new TH2F("fHistPiPPtVSY","p{t} vs y",100,-1,1,100,0.0,20);
1253 fHistPiPDecayLengthVsPt[0] = new TH2F("fHistPiPDecayLengthVsPt","#Lambda decay length vs pt",500,0.0,50.0,220,0.0,110.0);
1254 fHistPiPDecayLengthVsMass[0] = new TH2F("fHistPiPDecayLengthVsMass","#Lambda decay length vs mass",nbMass,1.05,1.25,220,0.0,110.0);
1255 // fHistPiPPhiPosVsPtPosVsMass = new TH3F("fHistPiPPhiPosVsPtPosVsMass","ctau L vs pt vs mass",200,1.05,1.25,120,0.0,60.0,200,0.0,20.0);//4.0);//xxx
1256 if(!fSetPtDepHist){
1257 fHistPiPDecayLengthVsCtau[0] = new TH2F("fHistPiPDecayLengthVsCtau","L ctau vs mass",nbMass,1.05,1.25,250,0.0,50.0);
1258 }
1259 else{
1260 fHistPiPDecayLengthVsCtau[0] = new TH2F("fHistPiPDecayLengthVsCtau","L ctau vs pt",500,0.0,50.0,250,0.0,50.0);
1261 }
1262
1263 fHistPiPMonitorCuts[0] = new TH1F("fHistPiPMonitorCuts","#Lambda cut monitor",35,0.5,35.5);
1264 fHistPiPMonitorMCCuts[0] = new TH1F("fHistPiPMonitorMCCuts","#Lambda cut monitor mc ",35,0.5,35.5);
11e769d9 1265
6c301331 1266 //-------------ALamda-------------//
1267 fHistPiAPMass[0] = new TH1F("fHistPiAPMass"," ap-pi+ InvMass distribution",2*nbMass,0.,2.);
1268 fHistPiAPMassVSPt[0] = new TH2F("fHistPiAPMassVSPt","p-pi+ InvMass distribution",nbMass,1.05,1.25,500,0.0,50.0);
1269 fHistPiAPMassVSPtMCTruth[0] = new TH2F("fHistPiAPMassVSPtMCTruth","p-pi+ InvMass distribution vs pt MCTruth",nbMass,1.05,1.25,500,0.0,50.0);
1270 fHistPiAPMassVSY[0] = new TH2F("fHistPiAPMassVSY","p-pi+ InvMass distribution vs rapidity",nbMass,1.05,1.25,200,-1.0,1.0);
1271 fHistPiAPPtVSY[0] = new TH2F("fHistPiAPPtVSY","p{t} vs y",100,-1,1,100,0.0,20);
1272 fHistPiAPDecayLengthVsPt[0] = new TH2F("fHistPiAPDecayLengthVsPt","#bar{#Lambda} decay length vs pt",500,0.0,50.0,220,0.0,110.0);
1273 fHistPiAPDecayLengthVsMass[0] = new TH2F("fHistPiAPDecayLengthVsMass","#bar{#Lambda} decay length vs mass",nbMass,1.05,1.25,220,0.0,110.0);
1274 // if(fMCTruthMode) fHistPiAPPhiPosVsPtPosVsMass = new TH3F("fHistPiAPPhiPosVsPtPosVsMass","ctau AL vs pt vs mass",200,1.05,1.25,120,0.0,60.0,200,0.0,20.0);//4.0);//xxx
1275 if(!fSetPtDepHist){
1276 fHistPiAPDecayLengthVsCtau[0] = new TH2F("fHistPiAPDecayLengthVsCtau","AL ctau vs mass",nbMass,1.05,1.25,250,0.0,50.0);
1277 }
1278 else{
1279 fHistPiAPDecayLengthVsCtau[0] = new TH2F("fHistPiAPDecayLengthVsCtau","AL ctau vs pt",500,0.0,50.0,250,0.0,50.0);
1280 }
aa3d4e29 1281
6c301331 1282 fHistPiAPMonitorCuts[0] = new TH1F("fHistPiAPMonitorCuts","#bar{#Lambda} cut monitor",35,0.5,35.5);
1283 fHistPiAPMonitorMCCuts[0] = new TH1F("fHistPiAPMonitorMCCuts","#bar{#Lambda} cut monitor mc",35,0.5,35.5);
1284
1285 // ---------------------------------------------for MC reco secondaries -----------------------------------------//
1286 if(mchist==2){
1287 fHistV0RadiusZ[1] = new TH2F("fHistV0RadiusZSec","z of decay radius vs 2D radius",100,0.0,100.0,250,-125.0,125.0);
1288 fHistV0RadiusZVSPt[1] = new TH2F("fHistV0RadiusZVSPtSec","z of decay radius vs pt radius",500,0.0,50.0,125,0.0,125.0);
1289 fHistV0RadiusXY[1] = new TH2F("fHistV0RadiusXYSec","y vs x decay radius",250,-125.0,125.0,250,-125.0,125.0);
1290 fHistV0RadiusXYVSY[1] = new TH2F("fHistV0RadiusXYVSYSec","2D decay radius vs rap",100,-1,1,100,0.0,100.0);
1291 fHistArmenteros[1] = new TH2F("fHistArmenterosSec"," pi+pi- armenteros",nbMass,-1.,1.,500,0.,0.5);
1292
1293 //-----------------K0s------------//
1294 //--------------- Lambda----------//
1295 fHistPiPMass[1] = new TH1F("fHistPiPMassSec"," p+pi- InvMass distribution",2*nbMass,0.,2.);
1296 fHistPiPMassVSPt[1] = new TH2F("fHistPiPMassVSPtSec","p+pi- InvMass distribution",nbMass,1.05,1.25,500,0.0,50.0);
1297 fHistPiPMassVSPtMCTruth[1] = new TH2F("fHistPiPMassVSPtMCTruthSec","p+pi- InvMass distribution vs pt MCTruth",nbMass,1.05,1.25,500,0.0,50.0);
1298 fHistPiPMassVSY[1] = new TH2F("fHistPiPMassVSYSec","p+pi- InvMass distribution vs rapidity",nbMass,1.05,1.25,200,-1.0,1.0);
1299 fHistPiPPtVSY[1] = new TH2F("fHistPiPPtVSYSec","p{t} vs y",100,-1,1,100,0.0,20);
1300 fHistPiPDecayLengthVsPt[1] = new TH2F("fHistPiPDecayLengthVsPtSec","#Lambda decay length vs pt",500,0.0,50.0,220,0.0,110.0);
1301 fHistPiPDecayLengthVsMass[1] = new TH2F("fHistPiPDecayLengthVsMassSec","#Lambda decay length vs mass",nbMass,1.05,1.25,220,0.0,110.0);
5842a526 1302 if(!fSetPtDepHist){
6c301331 1303 fHistPiPDecayLengthVsCtau[1] = new TH2F("fHistPiPDecayLengthVsCtauSec","L ctau vs mass",nbMass,1.05,1.25,250,0.0,50.0);
5842a526 1304 }
1305 else{
6c301331 1306 fHistPiPDecayLengthVsCtau[1] = new TH2F("fHistPiPDecayLengthVsCtauSec","L ctau vs pt",500,0.0,50.0,250,0.0,50.0);
5842a526 1307 }
6c301331 1308
1309 fHistPiPMonitorCuts[1] = new TH1F("fHistPiPMonitorCutsSec","#Lambda cut monitor",35,0.5,35.5);
1310 fHistPiPMonitorMCCuts[1] = new TH1F("fHistPiPMonitorMCCutsSec","#Lambda cut monitor mc",35,0.5,35.5);
1311
1312 //----------------ALambda---------//
1313 fHistPiAPMass[1] = new TH1F("fHistPiAPMassSec"," ap-pi+ InvMass distribution",2*nbMass,0.,2.);
1314 fHistPiAPMassVSPt[1] = new TH2F("fHistPiAPMassVSPtSec","p-pi+ InvMass distribution",nbMass,1.05,1.25,500,0.0,50.0);
1315 fHistPiAPMassVSPtMCTruth[1] = new TH2F("fHistPiAPMassVSPtMCTruthSec","p-pi+ InvMass distribution vs pt MCTruth",nbMass,1.05,1.25,500,0.0,50.0);
1316 fHistPiAPMassVSY[1] = new TH2F("fHistPiAPMassVSYSec","p-pi+ InvMass distribution vs rapidity",nbMass,1.05,1.25,200,-1.0,1.0);
1317 fHistPiAPPtVSY[1] = new TH2F("fHistPiAPPtVSYSec","p{t} vs y",100,-1,1,100,0.0,20);
1318 fHistPiAPDecayLengthVsPt[1] = new TH2F("fHistPiAPDecayLengthVsPtSec","#bar{#Lambda} decay length vs pt",500,0.0,50.0,220,0.0,110.0);
1319 fHistPiAPDecayLengthVsMass[1] = new TH2F("fHistPiAPDecayLengthVsMassSec","#bar{#Lambda} decay length vs mass",nbMass,1.05,1.25,220,0.0,110.0);
5842a526 1320 if(!fSetPtDepHist){
6c301331 1321 fHistPiAPDecayLengthVsCtau[1] = new TH2F("fHistPiAPDecayLengthVsCtauSec","AL ctau vs mass",nbMass,1.05,1.25,250,0.0,50.0);
5842a526 1322 }
1323 else{
6c301331 1324 fHistPiAPDecayLengthVsCtau[1] = new TH2F("fHistPiAPDecayLengthVsCtauSec","AL ctau vs pt",500,0.0,50.0,250,0.0,50.0);
5842a526 1325 }
76a4d7a7 1326
6c301331 1327 fHistPiAPMonitorCuts[1] = new TH1F("fHistPiAPMonitorCutsSec","#bar{#Lambda} cut monitor",35,0.5,35.5);
1328 fHistPiAPMonitorMCCuts[1] = new TH1F("fHistPiAPMonitorMCCutsSec","#bar{#Lambda} cut monitor mc",35,0.5,35.5);
1329 }
76a4d7a7 1330
6c301331 1331 //add to output container
1332 //------------ K0s ------------------//
1333 fOutputContainer->Add(fHistPiPiMass);
1334 fOutputContainer->Add(fHistPiPiMassVSPt);
1335 fOutputContainer->Add(fHistPiPiMassVSPtMCTruth);
1336 fOutputContainer->Add(fHistPiPiMassVSY);
1337 fOutputContainer->Add(fHistPiPiPtVSY);
1338 fOutputContainer->Add(fHistPiPiDecayLengthVsPt);
1339 fOutputContainer->Add(fHistPiPiDecayLengthVsCtau);
1340 fOutputContainer->Add(fHistPiPiDecayLengthVsMass);
1341 fOutputContainer->Add(fHistPiPiMonitorCuts);
1342 fOutputContainer->Add(fHistPiPiMonitorMCCuts);
1343 fOutputContainer->Add(fHistPiPiK0sVsLambdaMass);
1344 fOutputContainer->Add(fHistPiPiK0sVsALambdaMass);
1345 fOutputContainer->Add(fTHnFK0s);
1346 fOutputContainer->Add(fTHnFK0sDauEta);
1347 fOutputContainer->Add(fTHnFK0sDauPhi);
1348 //fOutputContainer->Add(fHistPiPiPhiPosVsPtPosVsMass);//xxx
1349
1350 // --------------- Lambda ---------------//
1351 fOutputContainer->Add(fHistPiPK0sVsLambdaMass);
1352 fOutputContainer->Add(fHistPiPALambdaVsLambdaMass);
1353 // fOutputContainer->Add(fHistPiPPhiPosVsPtPosVsMass);//xxx
1354 fOutputContainer->Add(fTHnFL);
1355 fOutputContainer->Add(fTHnFLDauEta);
1356 fOutputContainer->Add(fTHnFLDauPhi);
1357
1358 // --------------- ALambda ---------------//
1359 fOutputContainer->Add(fHistPiAPK0sVsALambdaMass);
1360 fOutputContainer->Add(fHistPiAPLambdaVsALambdaMass);
1361 // if(fMCTruthMode) fOutputContainer->Add(fHistPiAPPhiPosVsPtPosVsMass);//xxx
1362 fOutputContainer->Add(fTHnFAL);
1363 fOutputContainer->Add(fTHnFALDauEta);
1364 fOutputContainer->Add(fTHnFALDauPhi);
aa3d4e29 1365
aa3d4e29 1366
6c301331 1367 for(Int_t j=0;j<mchist;j++){
1368 fOutputContainer->Add(fHistArmenteros[j]);
1369 fOutputContainer->Add(fHistV0RadiusZ[j]);
1370 fOutputContainer->Add(fHistV0RadiusZVSPt[j]);
1371 fOutputContainer->Add(fHistV0RadiusXY[j]);
1372 fOutputContainer->Add(fHistV0RadiusXYVSY[j]);
1373 fOutputContainer->Add(fHistPiPMass[j]);
1374 fOutputContainer->Add(fHistPiAPMass[j]);
1375 fOutputContainer->Add(fHistPiPMassVSPt[j]);
1376 fOutputContainer->Add(fHistPiAPMassVSPt[j]);
1377 fOutputContainer->Add(fHistPiPMassVSPtMCTruth[j]);
1378 fOutputContainer->Add(fHistPiAPMassVSPtMCTruth[j]);
1379 fOutputContainer->Add(fHistPiPMassVSY[j]);
1380 fOutputContainer->Add(fHistPiAPMassVSY[j]);
1381 fOutputContainer->Add(fHistPiPPtVSY[j]);
1382 fOutputContainer->Add(fHistPiAPPtVSY[j]);
1383 fOutputContainer->Add(fHistPiPDecayLengthVsPt[j]);
1384 fOutputContainer->Add(fHistPiAPDecayLengthVsPt[j]);
1385 fOutputContainer->Add(fHistPiPDecayLengthVsCtau[j]);
1386 fOutputContainer->Add(fHistPiAPDecayLengthVsCtau[j]);
1387 fOutputContainer->Add(fHistPiPDecayLengthVsMass[j]);
1388 fOutputContainer->Add(fHistPiAPDecayLengthVsMass[j]);
1389 fOutputContainer->Add(fHistPiPMonitorCuts[j]);
1390 fOutputContainer->Add(fHistPiAPMonitorCuts[j]);
1391 fOutputContainer->Add(fHistPiPMonitorMCCuts[j]);
1392 fOutputContainer->Add(fHistPiAPMonitorMCCuts[j]);
1393 }
1394
1395 //----------------- for reco or data or mc data like MC reco only -----------------//
1396 if((fMCMode) || (!fMCTruthMode && !fMCMode)){
5842a526 1397
6c301331 1398 fHistPiPiEtaDReco[0] = new TH2F("fHistPiPiEtaDRecoRaw","K0s daughters eta raw",300,-6,6,100,0,20);
1399 fOutputContainer->Add(fHistPiPiEtaDReco[0]);
1400 fHistPiPiEtaDReco[1] = new TH2F("fHistPiPiEtaDReco","K0s daughters eta after rap V0 cut pos",300,-3,3,300,-3.00,3.0);
1401 fOutputContainer->Add(fHistPiPiEtaDReco[1]);
1402 fHistPiPEtaDReco[0] = new TH2F("fHistPiPEtaDRecoRaw","#Lambda daughters eta raw",300,-6,6,100,0,20);
1403 fOutputContainer->Add(fHistPiPEtaDReco[0]);
1404 fHistPiPEtaDReco[1] = new TH2F("fHistPiPEtaDReco","#Lambda daughters eta after rap V0 cut neg",300,-3,3,300,-3.00,3.0);
1405 fOutputContainer->Add(fHistPiPEtaDReco[1]);
5842a526 1406
6c301331 1407 //-------------K0---------------//
1408 // fHistPiPiMassVSAlpha = new TH2F("fHistPiPiMassVSAlpha"," alpha armenteros vs pi+pi- InvMass distribution",nbMass,0.25,0.75,500,-1.,1.);
1409 if(!fSetPtDepHist){
1410 fHistPiPiDCADaughters = new TH2F("fHistPiPiDCADaughters","dca of K0 daughters",nbMass,0.25,0.75,250,0.0,2);
1411 fHistPiPiDCADaughterPosToPrimVtxVSMass = new TH2F("fHistPiPiDCADaughterPosToPrimVtxVSMass","pi+ DCA daughter to prim vtx vsinvmass",nbMass,0.25,0.75,250,0.0,10.0);
1412 fHistPiPiDCAVSMass = new TH2F("fHistPiPiDCAVSMass","pi+pi- dca vs pt",nbMass,0.25,0.75,250,0.0,5.0);
1413 fHistPiPiCosPointAng = new TH2F("fHistPiPiCosPointAng","K0 cosine of pointing angle vs mass ",nbMass,0.25,0.75,200,0.99,1.00);
1414 fHistPiPiRadiusXY = new TH2F("fHistPiPiRadiusXY","pi+pi- phi dist vs mass",nbMass,0.25,0.75,200,0.0,4.0);
1415 // fHistPiPiPtDaughters = new TH2F("fHistPiPiPtDaughters","p_{t} pos vs p_{t} neg of daughters",400,0.0,20.0,400,0,20.0);
1416 // fHistPiPiDCAZPos = new TH2F("fHistPiPiDCAZPos","dca z of K0 pos daughters",nbMass,0.25,0.75,200,-20.0,20.0);
1417 //fHistPiPiDCAZNeg = new TH2F("fHistPiPiDCAZNeg","dca z of K0 neg daughters",nbMass,0.25,0.75,200,-20.0,20.0);
1418 fHistPiPiTrackLengthPosVsMass = new TH2F("fHistPiPiTrackLengthPosVsMass","track lenght of pos K0s daughter in TPC",nbMass,0.25,0.75,250,0.0,250.0);
1419 fHistPiPiTrackLengthNegVsMass = new TH2F("fHistPiPiTrackLengthNegVsMass","track lenght of neg K0s daughter in TPC",nbMass,0.25,0.75,250,0.0,250.0);
1420 }
1421 else{//pt dependence
1422 fHistPiPiDCADaughters = new TH2F("fHistPiPiDCADaughters","dca of K0 daughters",500,0.0,50.0,250,0.0,2);
1423 fHistPiPiDCADaughterPosToPrimVtxVSMass = new TH2F("fHistPiPiDCADaughterPosToPrimVtxVSMass","pi+ DCA daughter to prim vtx vsinvmass",500,0.0,50.0,250,0.0,10.0);
1424 fHistPiPiDCAVSMass = new TH2F("fHistPiPiDCAVSMass","pi+pi- dca vs pt",500,0.0,50.0,250,0.0,5.0);
1425 fHistPiPiCosPointAng = new TH2F("fHistPiPiCosPointAng","K0 cosine of pointing angle vs mass ",500,0.0,50.0,200,0.99,1.00);
1426 fHistPiPiRadiusXY = new TH2F("fHistPiPiRadiusXY","pi+pi- phi dist vs mass",500,0.0,50.0,200,0.0,4.0);
1427 // fHistPiPiDCAZPos = new TH2F("fHistPiPiDCAZPos","dca z of K0 pos daughters",500,0.0,50.0,200,-20.0,20.0);
1428 // fHistPiPiDCAZNeg = new TH2F("fHistPiPiDCAZNeg","dca z of K0 neg daughters",500,0.0,50.0,200,-20.0,20.0);
1429 fHistPiPiTrackLengthPosVsMass = new TH2F("fHistPiPiTrackLengthPosVsMass","track lenght of pos K0s daughter in TPC",500,0.0,50.0,250,0.0,250.0);
1430 fHistPiPiTrackLengthNegVsMass = new TH2F("fHistPiPiTrackLengthNegVsMass","track lenght of neg K0s daughter in TPC",500,0.0,50.0,250,0.0,250.0);
1431 }
5842a526 1432
6c301331 1433 //---------------Lambda-------------//
1434 if(!fSetPtDepHist){
1435 fHistPiPDCADaughters[0] = new TH2F("fHistPiPDCADaughters","dca of #Lambda daughters",nbMass,1.05,1.25,250,0.0,2.0);
1436 fHistPiPDCADaughterPosToPrimVtxVSMass[0] = new TH2F("fHistPiPDCADaughterPosToPrimVtxVSMass","pos DCA daughter to prim vtx vs invmass",nbMass,1.05,1.25,250,0.0,10.0);
1437 fHistPiPDCADaughterNegToPrimVtxVSMass[0] = new TH2F("fHistPiPDCADaughterNegToPrimVtxVSMass","neg DCA daughter to prim vtx vs invmass",nbMass,1.05,1.25,250,0.0,10.0);
1438 fHistPiPDCAVSMass[0] = new TH2F("fHistPiPDCAVSMass","ppi- dca vs pt",nbMass,1.05,1.25,250,0.0,5.0);
1439 fHistPiPCosPointAng[0] = new TH2F("fHistPiPCosPointAng","#Lambda cosine of pointing angle vs mass ",nbMass,1.05,1.25,200,0.99,1.00);
1440 fHistPiPRadiusXY[0] = new TH2F("fHistPiPRadiusXY","pi-p+ phi dist vs mass",nbMass,1.05,1.25,200,0.0,4.0);
1441 // fHistPiPPtDaughters[0] = new TH2F("fHistPiPPtDaughters","p_{t} pos vs p_{t} neg of daughters",400,0.0,20.0,400,0,20.0);
1442 // fHistPiPDCAZPos[0] = new TH2F("fHistPiPDCAZPos","dca z of Lambda pos daughters",nbMass,1.05,1.25,200,-20.0,20.0);
1443 //fHistPiPDCAZNeg[0] = new TH2F("fHistPiPDCAZNeg","dca z of Lambda neg daughters",nbMass,1.05,1.25,200,-20.0,20.0);
1444 fHistPiPTrackLengthPosVsMass[0] = new TH2F("fHistPiPTrackLengthPosVsMass","track length of pos Lambda daughter in TPC",nbMass,1.05,1.25,250,0.0,250.0);
1445 fHistPiPTrackLengthNegVsMass[0] = new TH2F("fHistPiPTrackLengthNegVsMass","track length of neg Lambda daughter in TPC",nbMass,1.05,1.25,250,0.0,250.0);
1446 }
1447 else{//pt dependence
1448 fHistPiPDCADaughters[0] = new TH2F("fHistPiPDCADaughters","dca of #Lambda daughters",500,0.0,50.0,250,0.0,2.0);
1449 fHistPiPDCADaughterPosToPrimVtxVSMass[0] = new TH2F("fHistPiPDCADaughterPosToPrimVtxVSMass","pos DCA daughter to prim vtx vs invmass",500,0.0,50.0,250,0.0,10.0);
1450 fHistPiPDCADaughterNegToPrimVtxVSMass[0] = new TH2F("fHistPiPDCADaughterNegToPrimVtxVSMass","neg DCA daughter to prim vtx vs invmass",500,0.0,50.0,250,0.0,10.0);
1451 fHistPiPDCAVSMass[0] = new TH2F("fHistPiPDCAVSMass","ppi- dca vs pt",500,0.0,50.0,250,0.0,5.0);
1452 fHistPiPCosPointAng[0] = new TH2F("fHistPiPCosPointAng","#Lambda cosine of pointing angle vs mass ",500,0.0,50.0,200,0.99,1.00);
1453 fHistPiPRadiusXY[0] = new TH2F("fHistPiPRadiusXY","pi-p+ phi dist vs mass",500,0.0,50.0,200,0.0,4.0);
1454 //fHistPiPDCAZPos[0] = new TH2F("fHistPiPDCAZPos","dca z of Lambda pos daughters",200,0.0,20.0,200,-20.0,20.0);
1455 //fHistPiPDCAZNeg[0] = new TH2F("fHistPiPDCAZNeg","dca z of Lambda neg daughters",200,0.0,20.0,200,-20.0,20.0);
1456 fHistPiPTrackLengthPosVsMass[0] = new TH2F("fHistPiPTrackLengthPosVsMass","track length of pos Lambda daughter in TPC",500,0.0,50.0,250,0.0,250.0);
1457 fHistPiPTrackLengthNegVsMass[0] = new TH2F("fHistPiPTrackLengthNegVsMass","track length of neg Lambda daughter in TPC",500,0.0,50.0,250,0.0,250.0);
1458 }
5842a526 1459
6c301331 1460 //-------------------AntiLambda-------------//
1461 if(!fSetPtDepHist){
1462 fHistPiAPDCADaughters[0] = new TH2F("fHistPiAPDCADaughters","dca of #bar{#Lambda} daughters",nbMass,1.05,1.25,250,0.0,2.0);
1463 fHistPiAPDCADaughterPosToPrimVtxVSMass[0] = new TH2F("fHistPiAPDCADaughterPosToPrimVtxVSMass","pos DCA daughter to prim vtx vs invmass",nbMass,1.05,1.25,250,0.0,10.0);
1464 fHistPiAPDCADaughterNegToPrimVtxVSMass[0] = new TH2F("fHistPiAPDCADaughterNegToPrimVtxVSMass","neg DCA daughter to prim vtx vs invmass",nbMass,1.05,1.25,250,0.0,10.0);
1465 fHistPiAPDCAVSMass[0] = new TH2F("fHistPiAPDCAVSMass","pi+p- dca vs pt",nbMass,1.05,1.25,250,0.0,5.0);
1466 fHistPiAPCosPointAng[0] = new TH2F("fHistPiAPCosPointAng","#bar{#Lambda} cosine of pointing angle vs mass",nbMass,1.05,1.25,200,0.99,1.00);
1467 fHistPiAPRadiusXY[0] = new TH2F("fHistPiAPRadiusXY","pi+p- phi dist vs mass",nbMass,1.05,1.25,200,0.0,4.0);
1468 // fHistPiAPPtDaughters[0] = new TH2F("fHistPiAPPtDaughters","p_{t} pos vs p_{t} neg of daughters",400,0.0,20.0,400,0,20.0);
1469 // fHistPiAPDCAZPos[0] = new TH2F("fHistPiAPDCAZPos","dca z of ALambda pos daughters",nbMass,1.05,1.25,200,-20.0,20.0);
1470 //fHistPiAPDCAZNeg[0] = new TH2F("fHistPiAPDCAZNeg","dca z of ALambda neg daughters",nbMass,1.05,1.25,200,-20.0,20.0);
1471 fHistPiAPTrackLengthPosVsMass[0] = new TH2F("fHistPiAPTrackLengthPosVsMass","track length of pos ALambda daughter in TPC",nbMass,1.05,1.25,250,0.0,250.0);
1472 fHistPiAPTrackLengthNegVsMass[0] = new TH2F("fHistPiAPTrackLengthNegVsMass","track length of neg ALambda daughter in TPC",nbMass,1.05,1.25,250,0.0,250.0);
1473 }
1474 else{//pt dependence
1475 fHistPiAPDCADaughters[0] = new TH2F("fHistPiAPDCADaughters","dca of #bar{#Lambda} daughters",500,0.0,50.0,250,0.0,2.0);
1476 fHistPiAPDCADaughterPosToPrimVtxVSMass[0] = new TH2F("fHistPiAPDCADaughterPosToPrimVtxVSMass","pos DCA daughter to prim vtx vs invmass",500,0.0,50.0,250,0.0,10.0);
1477 fHistPiAPDCADaughterNegToPrimVtxVSMass[0] = new TH2F("fHistPiAPDCADaughterNegToPrimVtxVSMass","neg DCA daughter to prim vtx vs invmass",500,0.0,50.0,250,0.0,10.0);
1478 fHistPiAPDCAVSMass[0] = new TH2F("fHistPiAPDCAVSMass","pi+p- dca vs pt",500,0.0,50.0,250,0.0,5.0);
1479 fHistPiAPCosPointAng[0] = new TH2F("fHistPiAPCosPointAng","#bar{#Lambda} cosine of pointing angle vs mass",500,0.0,50.0,200,0.99,1.00);
1480 fHistPiAPRadiusXY[0] = new TH2F("fHistPiAPRadiusXY","pi+p- phi dist vs mass",500,0.0,50.0,200,0.0,4.0);
1481 // fHistPiAPDCAZPos[0] = new TH2F("fHistPiAPDCAZPos","dca z of ALambda pos daughters",500,0.0,50.0,200,-20.0,20.0);
1482 //fHistPiAPDCAZNeg[0] = new TH2F("fHistPiAPDCAZNeg","dca z of ALambda neg daughters",500,0.0,50.0,200,-20.0,20.0);
1483 fHistPiAPTrackLengthPosVsMass[0] = new TH2F("fHistPiAPTrackLengthPosVsMass","track length of pos ALambda daughter in TPC",500,0.0,50.0,250,0.0,250.0);
1484 fHistPiAPTrackLengthNegVsMass[0] = new TH2F("fHistPiAPTrackLengthNegVsMass","track length of neg ALambda daughter in TPC",500,0.0,50.0,250,0.0,250.0);
1485 }
aa3d4e29 1486
6c301331 1487 //------dedx--------//
1488 fHistDedxSecProt[0] = new TH2F("fHistDedxSecProt","proton", 250,0.0,5.0, 100, 0, 400);
1489 fHistDedxSecPiPlus[0] = new TH2F("fHistDedxSecPiPlus","pi plus", 250,0.0,5.0, 100, 0, 400);
1490 fHistDedxSecAProt[0] = new TH2F("fHistDedxSecAProt","antiproton", 250,0.0,5.0, 100, 0, 400);
1491 fHistDedxSecPiMinus[0] = new TH2F("fHistDedxSecPiMinus","pi minus", 250,0.0,5.0, 100, 0, 400);
1492 fHistDedxProt[0] = new TH2F("fHistDedxProt","proton", 250,0.0,5.0, 100, 0, 400);
1493 fHistDedxPiPlus[0] = new TH2F("fHistDedxPiPlus","pi plus", 250,0.0,5.0, 100, 0, 400);
1494 fHistDedxAProt[0] = new TH2F("fHistDedxAProt","antiproton", 250,0.0,5.0, 100, 0, 400);
1495 fHistDedxPiMinus[0] = new TH2F("fHistDedxPiMinus","pi minus", 250,0.0,5.0, 100, 0, 400);
5842a526 1496
1497
6c301331 1498 // ------------------------------------------ clusters --------------------------------------------------//
1499 fHistNclsITS[0] = new TH2F("fHistNclsITS","fHistNclsITS pos vs neg L",10,-0.5,9.5,10,-0.5,9.5);
1500 fHistNclsTPC[0] = new TH2F("fHistNclsTPC","ncls TPC neg vs crossed rows neg L",200,-0.5,199.5,200,-0.5,199.5);
5842a526 1501
6c301331 1502 fHistNclsITS[1] = new TH2F("fHistNclsITSSec","fHistNclsITS pos vs neg K0",10,-0.5,9.5,10,-0.5,9.5);
1503 fHistNclsTPC[1] = new TH2F("fHistNclsTPCSec","ncls TPC neg vs crossed rows neg K0",200,-0.5,199.5,200,-0.5,199.5);
5842a526 1504
6c301331 1505 if(!fSetPtDepHist){
1506 //K0s
1507 fHistNclsITSPosK0 = new TH2F("fHistNclsITSPosK0","fHistNclsITSPos vs pt K0 pos",nbMass,0.25,0.75,7,-0.5,6.5);
1508 fHistNclsITSNegK0 = new TH2F("fHistNclsITSNegK0","fHistNclsITSNeg vs pt K0 neg",nbMass,0.25,0.75,7,-0.5,6.5);
5842a526 1509
6c301331 1510 fHistNclsTPCPosK0 = new TH2F("fHistNclsTPCPosK0","K0 mass vs phi pos",nbMass,0.25,0.75,200,0.0,200.0);
1511 fHistNclsTPCNegK0 = new TH2F("fHistNclsTPCNegK0","K0 mass vs phi neg",nbMass,0.25,0.75,200,0.0,200.0);
5842a526 1512
6c301331 1513 fHistChi2PerNclsITSPosK0 = new TH2F("fHistChi2PerNclsITSPosK0","chi2 per cluster ITS K0 pos",nbMass,0.25,0.75,250,0.0,25.0);
1514 fHistChi2PerNclsITSNegK0 = new TH2F("fHistChi2PerNclsITSNegK0","chi2 per cluster ITS K0 neg",nbMass,0.25,0.75,250,0.0,25.0);
5842a526 1515
6c301331 1516 fHistNCRowsTPCPosK0 = new TH2F("fHistNCRowsTPCPosK0","n crossed rows vs K0 pos",nbMass,0.25,0.75,200,0.0,200.0);
1517 fHistNCRowsTPCNegK0 = new TH2F("fHistNCRowsTPCNegK0","n crossed rows vs K0 neg",nbMass,0.25,0.75,200,0.0,200.0);
aa3d4e29 1518
6c301331 1519 fHistRatioFoundOverFinableTPCK0Pos = new TH2F("fHistRatioFoundOverFinableTPCK0Pos","ncls found over findable K0 pos sec",nbMass,0.25,0.75,200,0.0,2.0);
1520 fHistRatioFoundOverFinableTPCK0Neg = new TH2F("fHistRatioFoundOverFinableTPCK0Neg","ncls found over findable K0 neg sec",nbMass,0.25,0.75,200,0.0,2.0);
1521 //Lambda
1522 fHistNclsITSPosL[0] = new TH2F("fHistNclsITSPosL","fHistNclsITSPos vs pt L pos",nbMass,1.05,1.25,7,-0.5,6.5);
1523 fHistNclsITSNegL[0] = new TH2F("fHistNclsITSNegL","fHistNclsITSNeg vs pt L neg",nbMass,1.05,1.25,7,-0.5,6.5);
5842a526 1524
6c301331 1525 fHistNclsTPCPosL[0] = new TH2F("fHistNclsTPCPosL","L mass vs phi pos",nbMass,1.05,1.25,200,0.0,200.0);
1526 fHistNclsTPCNegL[0] = new TH2F("fHistNclsTPCNegL","L mass vs phi neg",nbMass,1.05,1.25,200,0.0,200.0);
5842a526 1527
6c301331 1528 fHistChi2PerNclsITSPosL[0] = new TH2F("fHistChi2PerNclsITSPosL","chi2 per cluster ITS L pos",nbMass,1.05,1.25,250,0.0,25.0);
1529 fHistChi2PerNclsITSNegL[0] = new TH2F("fHistChi2PerNclsITSNegL","chi2 per cluster ITS L neg",nbMass,1.05,1.25,250,0.0,25.0);
5842a526 1530
6c301331 1531 fHistNCRowsTPCPosL[0] = new TH2F("fHistNCRowsTPCPosL","n crossed rows vs L pos",nbMass,1.05,1.25,200,0.0,200.0);
1532 fHistNCRowsTPCNegL[0] = new TH2F("fHistNCRowsTPCNegL","n crossed rows vs L neg",nbMass,1.05,1.25,200,0.0,200.0);
aa3d4e29 1533
6c301331 1534 fHistRatioFoundOverFinableTPCLPos[0] = new TH2F("fHistRatioFoundOverFinableTPCLPos","ncls found over findable L pos sec",nbMass,1.05,1.25,200,0.0,2.0);
1535 fHistRatioFoundOverFinableTPCLNeg[0] = new TH2F("fHistRatioFoundOverFinableTPCLNeg","ncls found over findable L neg sec",nbMass,1.05,1.25,200,0.0,2.0);
1536 }
1537 else{//pt dependence
1538 //K0s
1539 fHistNclsITSPosK0 = new TH2F("fHistNclsITSPosK0","fHistNclsITSPos vs pt L pos",500,0.0,50.0,7,-0.5,6.5);
1540 fHistNclsITSNegK0 = new TH2F("fHistNclsITSNegK0","fHistNclsITSNeg vs pt L neg",500,0.0,50.0,7,-0.5,6.5);
5842a526 1541
6c301331 1542 fHistNclsTPCPosK0 = new TH2F("fHistNclsTPCPosK0","L mass vs phi pos",500,0.0,50.0,200,0.0,200.0);
1543 fHistNclsTPCNegK0 = new TH2F("fHistNclsTPCNegK0","L mass vs phi neg",500,0.0,50.0,200,0.0,200.0);
5842a526 1544
6c301331 1545 fHistChi2PerNclsITSPosK0 = new TH2F("fHistChi2PerNclsITSPosK0","chi2 per cluster ITS L pos",500,0.0,50.0,250,0.0,25.0);
1546 fHistChi2PerNclsITSNegK0 = new TH2F("fHistChi2PerNclsITSNegK0","chi2 per cluster ITS L neg",500,0.0,50.0,250,0.0,25.0);
5842a526 1547
6c301331 1548 fHistNCRowsTPCPosK0 = new TH2F("fHistNCRowsTPCPosK0","n crossed rows vs L pos",500,0.0,50.0,200,0.0,200.0);
1549 fHistNCRowsTPCNegK0 = new TH2F("fHistNCRowsTPCNegK0","n crossed rows vs L neg",500,0.0,50.0,200,0.0,200.0);
aa3d4e29 1550
6c301331 1551 fHistRatioFoundOverFinableTPCK0Pos = new TH2F("fHistRatioFoundOverFinableTPCK0Pos","ncls found over findable L pos sec",500,0.0,50.0,200,0.0,2.0);
1552 fHistRatioFoundOverFinableTPCK0Neg = new TH2F("fHistRatioFoundOverFinableTPCK0Neg","ncls found over findable L neg sec",500,0.0,50.0,200,0.0,2.0);
1553 //Lambda
1554 fHistNclsITSPosL[0] = new TH2F("fHistNclsITSPosL","fHistNclsITSPos vs pt L pos",500,0.0,50.0,7,-0.5,6.5);
1555 fHistNclsITSNegL[0] = new TH2F("fHistNclsITSNegL","fHistNclsITSNeg vs pt L neg",500,0.0,50.0,7,-0.5,6.5);
5842a526 1556
6c301331 1557 fHistNclsTPCPosL[0] = new TH2F("fHistNclsTPCPosL","L mass vs phi pos",500,0.0,50.0,200,0.0,200.0);
1558 fHistNclsTPCNegL[0] = new TH2F("fHistNclsTPCNegL","L mass vs phi neg",500,0.0,50.0,200,0.0,200.0);
5842a526 1559
6c301331 1560 fHistChi2PerNclsITSPosL[0] = new TH2F("fHistChi2PerNclsITSPosL","chi2 per cluster ITS L pos",500,0.0,50.0,250,0.0,25.0);
1561 fHistChi2PerNclsITSNegL[0] = new TH2F("fHistChi2PerNclsITSNegL","chi2 per cluster ITS L neg",500,0.0,50.0,250,0.0,25.0);
5842a526 1562
6c301331 1563 fHistNCRowsTPCPosL[0] = new TH2F("fHistNCRowsTPCPosL","n crossed rows vs L pos",500,0.0,50.0,200,0.0,200.0);
1564 fHistNCRowsTPCNegL[0] = new TH2F("fHistNCRowsTPCNegL","n crossed rows vs L neg",500,0.0,50.0,200,0.0,200.0);
aa3d4e29 1565
6c301331 1566 fHistRatioFoundOverFinableTPCLPos[0] = new TH2F("fHistRatioFoundOverFinableTPCLPos","ncls found over findable L pos sec",500,0.0,50.0,200,0.0,2.0);
1567 fHistRatioFoundOverFinableTPCLNeg[0] = new TH2F("fHistRatioFoundOverFinableTPCLNeg","ncls found over findable L neg sec",500,0.0,50.0,200,0.0,2.0);
1568 }
11e769d9 1569
6c301331 1570 // --------------------------------------------- for MC reco secondaries -----------------------------------------//
1571 if(mchist==2){// for MC reco
11e769d9 1572
6c301331 1573 //-----------------K0s---------------------//
1574 //----------------Lambda-------------------//
1575 if(!fSetPtDepHist){
1576 fHistPiPDCADaughters[1] = new TH2F("fHistPiPDCADaughtersSec","dca of #Lambda daughters",nbMass,1.05,1.25,250,0.0,2.0);
1577 fHistPiPDCADaughterPosToPrimVtxVSMass[1] = new TH2F("fHistPiPDCADaughterPosToPrimVtxVSMassSec","pos sec DCA daughter to prim vtx vs invmass",nbMass,1.05,1.25,250,0.0,10.0);
1578 fHistPiPDCADaughterNegToPrimVtxVSMass[1] = new TH2F("fHistPiPDCADaughterNegToPrimVtxVSMassSec","neg sec DCA daughter to prim vtx vs invmass",nbMass,1.05,1.25,250,0.0,10.0);
1579 fHistPiPDCAVSMass[1] = new TH2F("fHistPiPDCAVSMassSec","ppi- dca vs pt",nbMass,1.05,1.25,250,0.0,5.0);
1580 fHistPiPCosPointAng[1] = new TH2F("fHistPiPCosPointAngSec","#Lambda cosine of pointing angle vs mass",nbMass,1.05,1.25,200,0.99,1.00);
1581 // fHistPiPDecayLengthVsMass[1] = new TH2F("fHistPiPDecayLengthVsMassSec","#Lambda decay length vs mass",nbMass,1.05,1.25,200,0.0,100.0);
1582 fHistPiPRadiusXY[1] = new TH2F("fHistPiPRadiusXYSec","pi-p+ phi dist vs mass",nbMass,1.05,1.25,200,0.0,4.0);
1583 // fHistPiPPtDaughters[0] = new TH2F("fHistPiPPtDaughters","p_{t} pos vs p_{t} neg of daughters",400,0.0,20.0,400,0,20.0);
1584 // fHistPiPDCAZPos[1] = new TH2F("fHistPiPDCAZPosSec","dca z of Lambda sec pos daughters",nbMass,1.05,1.25,200,-20.0,20.0);
1585 // fHistPiPDCAZNeg[1] = new TH2F("fHistPiPDCAZNegSec","dca z of Lambda sec neg daughters",nbMass,1.05,1.25,200,-20.0,20.0);
1586 fHistPiPTrackLengthPosVsMass[1] = new TH2F("fHistPiPTrackLengthPosVsMassSec","track length of pos sec Lambda daughter in TPC",nbMass,1.05,1.25,250,0.0,250.0);
1587 fHistPiPTrackLengthNegVsMass[1] = new TH2F("fHistPiPTrackLengthNegVsMassSec","track length of neg sec Lambda daughter in TPC",nbMass,1.05,1.25,250,0.0,250.0);
1588 }
1589 else{
1590 fHistPiPDCADaughters[1] = new TH2F("fHistPiPDCADaughtersSec","dca of #Lambda daughters",500,0.0,50.0,250,0.0,2.0);
1591 fHistPiPDCADaughterPosToPrimVtxVSMass[1] = new TH2F("fHistPiPDCADaughterPosToPrimVtxVSMassSec","pos sec DCA daughter to prim vtx vs invmass",500,0.0,50.0,250,0.0,10.0);
1592 fHistPiPDCADaughterNegToPrimVtxVSMass[1] = new TH2F("fHistPiPDCADaughterNegToPrimVtxVSMassSec","neg sec DCA daughter to prim vtx vs invmass",500,0.0,50.0,250,0.0,10.0);
1593 fHistPiPDCAVSMass[1] = new TH2F("fHistPiPDCAVSMassSec","ppi- dca vs pt",500,0.0,50.0,250,0.0,5.0);
1594 fHistPiPCosPointAng[1] = new TH2F("fHistPiPCosPointAngSec","#Lambda cosine of pointing angle vs mass",500,0.0,50.0,200,0.99,1.00);
1595 fHistPiPRadiusXY[1] = new TH2F("fHistPiPRadiusXYSec","pi-p+ phi dist vs mass",500,0.0,50.0,200,0.0,4.0);
1596 // fHistPiPDCAZPos[1] = new TH2F("fHistPiPDCAZPosSec","dca z of Lambda sec pos daughters",200,0.0,20.0,200,-20.0,20.0);
1597 //fHistPiPDCAZNeg[1] = new TH2F("fHistPiPDCAZNegSec","dca z of Lambda sec neg daughters",200,0.0,20.0,200,-20.0,20.0);
1598 fHistPiPTrackLengthPosVsMass[1] = new TH2F("fHistPiPTrackLengthPosVsMassSec","track length of pos sec Lambda daughter in TPC",500,0.0,50.0,250,0.0,250.0);
1599 fHistPiPTrackLengthNegVsMass[1] = new TH2F("fHistPiPTrackLengthNegVsMassSec","track length of neg sec Lambda daughter in TPC",500,0.0,50.0,250,0.0,250.0);
1600 }
76a4d7a7 1601
6c301331 1602 //--------------------ALambda--------------//
1603 if(!fSetPtDepHist){
1604 fHistPiAPDCADaughters[1] = new TH2F("fHistPiAPDCADaughtersSec","dca of #bar{#Lambda} daughters",nbMass,1.05,1.25,250,0.0,2.0);
1605 fHistPiAPDCADaughterPosToPrimVtxVSMass[1] = new TH2F("fHistPiAPDCADaughterPosToPrimVtxVSMassSec","pos sec DCA daughter to prim vtx vs invmass",nbMass,1.05,1.25,250,0.0,10.0);
1606 fHistPiAPDCADaughterNegToPrimVtxVSMass[1] = new TH2F("fHistPiAPDCADaughterNegToPrimVtxVSMassSec","neg sec DCA daughter to prim vtx vs invmass",nbMass,1.05,1.25,250,0.0,10.0);
1607 fHistPiAPDCAVSMass[1] = new TH2F("fHistPiAPDCAVSMassSec","pi+p- dca vs pt",nbMass,1.05,1.25,250,0.0,5.0);
1608 fHistPiAPCosPointAng[1] = new TH2F("fHistPiAPCosPointAngSec","#bar{#Lambda} cosine of pointing angle vs mass",nbMass,1.05,1.25,200,0.99,1.00);
1609 // fHistPiAPDecayLengthVsMass[1] = new TH2F("fHistPiAPDecayLengthVsMassSec","#bar{#Lambda} decay length vs mass",nbMass,1.05,1.25,200,0.0,100.0);
1610 fHistPiAPRadiusXY[1] = new TH2F("fHistPiAPRadiusXYSec","pi+p- phi dist vs mass",nbMass,1.05,1.25,200,0.0,4.0);
1611 // fHistPiAPPtDaughters[0] = new TH2F("fHistPiAPPtDaughters","p_{t} pos vs p_{t} neg of daughters",400,0.0,20.0,400,0,20.0);
1612 // fHistPiAPDCAZPos[1] = new TH2F("fHistPiAPDCAZPosSec","dca z of ALambda sec pos daughters",nbMass,1.05,1.25,200,-20.0,20.0);
1613 //fHistPiAPDCAZNeg[1] = new TH2F("fHistPiAPDCAZNegSec","dca z of ALambda sec neg daughters",nbMass,1.05,1.25,200,-20.0,20.0);
1614 fHistPiAPTrackLengthPosVsMass[1] = new TH2F("fHistPiAPTrackLengthPosVsMassSec","track length of pos sec ALambda daughter in TPC",nbMass,1.05,1.25,250,0.0,250.0);
1615 fHistPiAPTrackLengthNegVsMass[1] = new TH2F("fHistPiAPTrackLengthNegVsMassSec","track length of neg sec ALambda daughter in TPC",nbMass,1.05,1.25,250,0.0,250.0);
1616 }
1617 else{
1618 fHistPiAPDCADaughters[1] = new TH2F("fHistPiAPDCADaughtersSec","dca of #bar{#Lambda} daughters",500,0.0,50.0,250,0.0,2.0);
1619 fHistPiAPDCADaughterPosToPrimVtxVSMass[1] = new TH2F("fHistPiAPDCADaughterPosToPrimVtxVSMassSec","pos sec DCA daughter to prim vtx vs invmass",500,0.0,50.0,250,0.0,10.0);
1620 fHistPiAPDCADaughterNegToPrimVtxVSMass[1] = new TH2F("fHistPiAPDCADaughterNegToPrimVtxVSMassSec","neg sec DCA daughter to prim vtx vs invmass",500,0.0,50.0,250,0.0,10.0);
1621 fHistPiAPDCAVSMass[1] = new TH2F("fHistPiAPDCAVSMassSec","pi+p- dca vs pt",500,0.0,50.0,250,0.0,5.0);
1622 fHistPiAPCosPointAng[1] = new TH2F("fHistPiAPCosPointAngSec","#bar{#Lambda} cosine of pointing angle vs mass",500,0.0,50.0,200,0.99,1.00);
1623 fHistPiAPRadiusXY[1] = new TH2F("fHistPiAPRadiusXYSec","pi+p- phi dist vs mass",500,0.0,50.0,200,0.0,4.0);
1624 // fHistPiAPDCAZPos[1] = new TH2F("fHistPiAPDCAZPosSec","dca z of ALambda sec pos daughters",200,0.0,20.0,200,-20.0,20.0);
1625 //fHistPiAPDCAZNeg[1] = new TH2F("fHistPiAPDCAZNegSec","dca z of ALambda sec neg daughters",200,0.0,20.0,200,-20.0,20.0);
1626 fHistPiAPTrackLengthPosVsMass[1] = new TH2F("fHistPiAPTrackLengthPosVsMassSec","track length of pos sec ALambda daughter in TPC",500,0.0,50.0,250,0.0,250.0);
1627 fHistPiAPTrackLengthNegVsMass[1] = new TH2F("fHistPiAPTrackLengthNegVsMassSec","track length of neg sec ALambda daughter in TPC",500,0.0,50.0,250,0.0,250.0);
1628 }
1629
1630 //-------------dedx------------//
1631 fHistDedxSecProt[1] = new TH2F("fHistDedxSecProtSec","proton", 250,0.0,5.0, 100, 0, 400);
1632 fHistDedxSecPiPlus[1] = new TH2F("fHistDedxSecPiPlusSec","pi plus", 250,0.0,5.0, 100, 0, 400);
1633 fHistDedxSecAProt[1] = new TH2F("fHistDedxSecAProtSec","antiproton", 250,0.0,5.0, 100, 0, 400);
1634 fHistDedxSecPiMinus[1] = new TH2F("fHistDedxSecPiMinusSec","pi minus", 250,0.0,5.0, 100, 0, 400);
1635 fHistDedxProt[1] = new TH2F("fHistDedxProtSec","proton", 250,0.0,5.0, 100, 0, 400);
1636 fHistDedxPiPlus[1] = new TH2F("fHistDedxPiPlusSec","pi plus", 250,0.0,5.0, 100, 0, 400);
1637 fHistDedxAProt[1] = new TH2F("fHistDedxAProtSec","antiproton", 250,0.0,5.0, 100, 0, 400);
1638 fHistDedxPiMinus[1] = new TH2F("fHistDedxPiMinusSec","pi minus", 250,0.0,5.0, 100, 0, 400);
aa3d4e29 1639
6c301331 1640 // ------------------------------------------ clusters --------------------------------------------------//
1641 if(!fSetPtDepHist){
1642 fHistNclsITSPosL[1] = new TH2F("fHistNclsITSPosLSec","fHistNclsITSPos vs pt L pos",nbMass,1.05,1.25,7,-0.5,6.5);
1643 fHistNclsITSNegL[1] = new TH2F("fHistNclsITSNegLSec","fHistNclsITSNeg vs pt L neg",nbMass,1.05,1.25,7,-0.5,6.5);
5842a526 1644
6c301331 1645 fHistNclsTPCPosL[1] = new TH2F("fHistNclsTPCPosLSec","L mass vs phi pos",nbMass,1.05,1.25,200,0.0,200.0);
1646 fHistNclsTPCNegL[1] = new TH2F("fHistNclsTPCNegLSec","L mass vs phi neg",nbMass,1.05,1.25,200,0.0,200.0);
5842a526 1647
6c301331 1648 fHistChi2PerNclsITSPosL[1] = new TH2F("fHistChi2PerNclsITSPosLSec","chi2 per cluster ITS L pos",nbMass,1.05,1.25,250,0.0,25.0);
1649 fHistChi2PerNclsITSNegL[1] = new TH2F("fHistChi2PerNclsITSNegLSec","chi2 per cluster ITS L neg",nbMass,1.05,1.25,250,0.0,25.0);
5842a526 1650
6c301331 1651 fHistNCRowsTPCPosL[1] = new TH2F("fHistNCRowsTPCPosLSec","n crossed rows vs L pos",nbMass,1.05,1.25,200,0.0,200.0);
1652 fHistNCRowsTPCNegL[1] = new TH2F("fHistNCRowsTPCNegLSec","n crossed rows vs L neg",nbMass,1.05,1.25,200,0.0,200.0);
aa3d4e29 1653
6c301331 1654 fHistRatioFoundOverFinableTPCLPos[1] = new TH2F("fHistRatioFoundOverFinableTPCLPosSec","ncls found over findable L pos sec",nbMass,1.05,1.25,200,0.0,2.0);
1655 fHistRatioFoundOverFinableTPCLNeg[1] = new TH2F("fHistRatioFoundOverFinableTPCLNegSec","ncls found over findable L neg sec",nbMass,1.05,1.25,200,0.0,2.0);
1656 }
1657 else{
1658 fHistNclsITSPosL[1] = new TH2F("fHistNclsITSPosLSec","fHistNclsITSPos vs pt L pos",500,0.0,50.0,7,-0.5,6.5);
1659 fHistNclsITSNegL[1] = new TH2F("fHistNclsITSNegLSec","fHistNclsITSNeg vs pt L neg",500,0.0,50.0,7,-0.5,6.5);
aa3d4e29 1660
6c301331 1661 fHistNclsTPCPosL[1] = new TH2F("fHistNclsTPCPosLSec","L mass vs phi pos",500,0.0,50.0,200,0.0,200.0);
1662 fHistNclsTPCNegL[1] = new TH2F("fHistNclsTPCNegLSec","L mass vs phi neg",500,0.0,50.0,200,0.0,200.0);
5842a526 1663
6c301331 1664 fHistChi2PerNclsITSPosL[1] = new TH2F("fHistChi2PerNclsITSPosLSec","chi2 per cluster ITS L pos",500,0.0,50.0,250,0.0,25.0);
1665 fHistChi2PerNclsITSNegL[1] = new TH2F("fHistChi2PerNclsITSNegLSec","chi2 per cluster ITS L neg",500,0.0,50.0,250,0.0,25.0);
5842a526 1666
6c301331 1667 fHistNCRowsTPCPosL[1] = new TH2F("fHistNCRowsTPCPosLSec","n crossed rows vs L pos",500,0.0,50.0,200,0.0,200.0);
1668 fHistNCRowsTPCNegL[1] = new TH2F("fHistNCRowsTPCNegLSec","n crossed rows vs L neg",500,0.0,50.0,200,0.0,200.0);
5842a526 1669
6c301331 1670 fHistRatioFoundOverFinableTPCLPos[1] = new TH2F("fHistRatioFoundOverFinableTPCLPosSec","ncls found over findable L pos sec",500,0.0,50.0,200,0.0,2.0);
1671 fHistRatioFoundOverFinableTPCLNeg[1] = new TH2F("fHistRatioFoundOverFinableTPCLNegSec","ncls found over findable L neg sec",500,0.0,50.0,200,0.0,2.0);
76a4d7a7 1672 }
6c301331 1673
1674 }
aa3d4e29 1675
6c301331 1676 //------ ITS TPC clusters --------------//
1677 fOutputContainer->Add(fHistNclsITS[0]) ;
1678 fOutputContainer->Add(fHistNclsTPC[0]);
1679 fOutputContainer->Add(fHistNclsITS[1]);
1680 fOutputContainer->Add(fHistNclsTPC[1]);
1681
1682 //-----------K0s ------------------//
1683 // fOutputContainer->Add(fHistPiPiDCAZNeg);
1684 //fOutputContainer->Add(fHistPiPiDCAZPos);
1685 fOutputContainer->Add(fHistPiPiDCADaughters);
1686 fOutputContainer->Add(fHistPiPiDCADaughterPosToPrimVtxVSMass);
1687 fOutputContainer->Add(fHistPiPiDCAVSMass);
1688 fOutputContainer->Add(fHistPiPiCosPointAng);
1689 fOutputContainer->Add(fHistPiPiTrackLengthPosVsMass);
1690 fOutputContainer->Add(fHistPiPiTrackLengthNegVsMass);
1691 fOutputContainer->Add(fHistPiPiRadiusXY);
1692 // fOutputContainer->Add( fHistPiPiPtDaughters);
1693 fOutputContainer->Add(fHistNclsITSPosK0);
1694 fOutputContainer->Add(fHistNclsITSNegK0);
1695 fOutputContainer->Add(fHistNclsTPCPosK0);
1696 fOutputContainer->Add(fHistNclsTPCNegK0);
1697 fOutputContainer->Add(fHistChi2PerNclsITSPosK0);
1698 fOutputContainer->Add(fHistChi2PerNclsITSNegK0);
1699 fOutputContainer->Add(fHistNCRowsTPCPosK0);
1700 fOutputContainer->Add(fHistNCRowsTPCNegK0);
1701 fOutputContainer->Add(fHistRatioFoundOverFinableTPCK0Pos);
1702 fOutputContainer->Add(fHistRatioFoundOverFinableTPCK0Neg);
1703
1704 //----------- Lambda Antilambda -------------//
1705 for(Int_t j=0;j<mchist;j++){
1706 fOutputContainer->Add(fHistPiPDCADaughters[j]);
1707 fOutputContainer->Add(fHistPiAPDCADaughters[j]);
1708 fOutputContainer->Add( fHistPiPDCADaughterPosToPrimVtxVSMass[j]);
1709 fOutputContainer->Add( fHistPiPDCADaughterNegToPrimVtxVSMass[j]);
1710 fOutputContainer->Add( fHistPiAPDCADaughterPosToPrimVtxVSMass[j]);
1711 fOutputContainer->Add( fHistPiAPDCADaughterNegToPrimVtxVSMass[j]);
1712 //fOutputContainer->Add( fHistPiPPtDaughters[j]);
1713 //fOutputContainer->Add( fHistPiAPPtDaughters[j]);
1714 fOutputContainer->Add(fHistPiPDCAVSMass[j]);
1715 fOutputContainer->Add(fHistPiAPDCAVSMass[j]);
1716 fOutputContainer->Add(fHistPiPCosPointAng[j]);
1717 fOutputContainer->Add(fHistPiAPCosPointAng[j]);
1718 //fOutputContainer->Add(fHistPiPDCAZNeg[j]);
1719 //fOutputContainer->Add(fHistPiPDCAZPos[j]);
1720 //fOutputContainer->Add(fHistPiAPDCAZNeg[j]);
1721 //fOutputContainer->Add(fHistPiAPDCAZPos[j]);
1722 fOutputContainer->Add(fHistPiPTrackLengthPosVsMass[j]);
1723 fOutputContainer->Add(fHistPiPTrackLengthNegVsMass[j]);
1724 fOutputContainer->Add(fHistPiAPTrackLengthPosVsMass[j]);
1725 fOutputContainer->Add(fHistPiAPTrackLengthNegVsMass[j]);
1726 fOutputContainer->Add(fHistPiPRadiusXY[j]);
1727 fOutputContainer->Add(fHistPiAPRadiusXY[j]);
1728
1729 //--------- dEdx --------------------------//
1730 fOutputContainer->Add(fHistDedxSecProt[j]);
1731 fOutputContainer->Add(fHistDedxSecAProt[j]);
1732 fOutputContainer->Add(fHistDedxSecPiPlus[j]);
1733 fOutputContainer->Add(fHistDedxSecPiMinus[j]);
1734 fOutputContainer->Add(fHistDedxProt[j]);
1735 fOutputContainer->Add(fHistDedxAProt[j]);
1736 fOutputContainer->Add(fHistDedxPiPlus[j]);
1737 fOutputContainer->Add(fHistDedxPiMinus[j]);
1738
1739 //--------- TPC Lambda-----------------//
1740 fOutputContainer->Add(fHistNclsITSPosL[j]);
1741 fOutputContainer->Add(fHistNclsITSNegL[j]);
1742 fOutputContainer->Add(fHistNclsTPCPosL[j]);
1743 fOutputContainer->Add(fHistNclsTPCNegL[j]);
1744 fOutputContainer->Add(fHistChi2PerNclsITSPosL[j]);
1745 fOutputContainer->Add(fHistChi2PerNclsITSNegL[j]);
1746 fOutputContainer->Add(fHistNCRowsTPCPosL[j]);
1747 fOutputContainer->Add(fHistNCRowsTPCNegL[j]);
1748 fOutputContainer->Add(fHistRatioFoundOverFinableTPCLPos[j]);
1749 fOutputContainer->Add(fHistRatioFoundOverFinableTPCLNeg[j]);
1750 }
1751 }
1752
1753 //----------------------------- MC reco or MC truth only --------------------------//
1754 if((fMCMode && fMCTruthMode) || fMCTruthMode){//mc reco truth only
1755 if(fAnapp){
1756 fHistPrimVtxZESDVSNContributorsMC = new TH2F("fHistPrimVtxZESDVSNContributorsMC","prim vtx pos z ESD vs no. of contributers MC",250,-50,50,500,0.0,500.0);
1757 fOutputContainer->Add(fHistPrimVtxZESDVSNContributorsMC);
1758 fHistPrimVtxZESDTPCVSNContributorsMC = new TH2F("fHistPrimVtxZESDTPCVSNContributorsMC","prim vtx pos z TPC vs no. of contributers MC",250,-50,50,500,0.0,500.0);
1759 fOutputContainer->Add(fHistPrimVtxZESDTPCVSNContributorsMC);
1760 fHistPrimVtxZESDSPDVSNContributorsMC = new TH2F("fHistPrimVtxZESDSPDVSNContributorsMC","prim vtx pos z SPD vs no. of contributers MC",250,-50,50,500,0.0,500.0);
1761 fOutputContainer->Add(fHistPrimVtxZESDSPDVSNContributorsMC);
1762 }
1763 fHistMCVertexZ= new TH1F("fHistMCVertexZ"," z vertex distr in cm MC",500,-50,50);
1764 fOutputContainer->Add(fHistMCVertexZ);
1765 fHistPiPCosPointAngXiVsPt= new TH2F("fHistPiPCosPointAngXiVsPt","pi-p cos of pointing angle vs pt from xi",500,0.0,50.0,250,0.99,1.00);
1766 fOutputContainer->Add(fHistPiPCosPointAngXiVsPt);
1767 fHistPiAPCosPointAngXiVsPt= new TH2F("fHistPiAPCosPointAngXiVsPt","pi+p- cos of pointing angle vs pt from xi",500,0.0,50.0,250,0.99,1.00);
1768 fOutputContainer->Add(fHistPiAPCosPointAngXiVsPt);
1769 fHistPiPiEtaDMC[0] = new TH2F("fHistPiPiEtaDMCRaw","K0s daughters etaMC raw",300,-6,6,100,0,20);//
1770 fOutputContainer->Add(fHistPiPiEtaDMC[0]);
1771 fHistPiPiEtaDMC[1] = new TH2F("fHistPiPiEtaDMC","K0s daughters etaMC after rap V0 cut",300,-6,6,100,0,20);
1772 fOutputContainer->Add(fHistPiPiEtaDMC[1]);
1773 fHistPiPEtaDMC[0] = new TH2F("fHistPiPEtaDMCRaw","#Lambda daughters etaMC raw",300,-6,6,100,0,20);
1774 fOutputContainer->Add(fHistPiPEtaDMC[0]);
1775 fHistPiPEtaDMC[1] = new TH2F("fHistPiPEtaDMC","#Lambda daughters etaMC after rap V0 cut",300,-6,6,100,0,20);
1776 fOutputContainer->Add(fHistPiPEtaDMC[1]);
1777
1778 //-------------K0s---------------//
aa3d4e29 1779
6c301331 1780 fHistPiPiDecayLengthResolution = new TH2F("fHistPiPiDecayLengthResolution","K0s decay length resolution MC",220,0.0,110.0,220,0.0,110);
5842a526 1781
6c301331 1782 //-------------Lambda------------//
1783 fHistPiPDecayLengthResolution[0] = new TH2F("fHistPiPDecayLengthResolution","Lambda decay length resolution MC",220,0.0,110.0,220,0.0,110);
1784 fHistPiPDecayLengthResolution[1] = new TH2F("fHistPiPDecayLengthResolutionSec","Lambda sec decay length resolution MC",220,0.0,110.0,220,0.0,110);
aa3d4e29 1785
6c301331 1786 fHistPiPMassVSPtSecSigma[0] = new TH2F("fHistPiPMassVSPtSecSigmaMC"," pi-p+ InvMass distribution secondaries from sigma MC",nbMass,1.05,1.25,200,0.,20);
1787 fHistPiPMassVSPtSecSigma[1] = new TH2F("fHistPiPMassVSPtSecSigma"," pi-p+ InvMass distribution secondaries from Sigma reco",nbMass,1.05,1.25,200,0.,20);
aa3d4e29 1788
6c301331 1789 fHistPiPMassVSPtSecXi[0] = new TH2F("fHistPiPMassVSPtSecXiMC"," pi-p+ InvMass distribution secondaries from xi MC",nbMass,1.05,1.25,200,0.,20);
1790 fHistPiPMassVSPtSecXi[1] = new TH2F("fHistPiPMassVSPtSecXi"," pi-p+ InvMass distribution secondaries from xi reco",nbMass,1.05,1.25,200,0.,20);
aa3d4e29 1791
6c301331 1792 fHistPiPMassVSPtSecXiMCTruth = new TH2F("fHistPiPMassVSPtSecXiMCTruth","Lambda mass reco vs pt sec Lambda from xi MC truth pt",nbMass,1.05,1.25,500,0.0,50.0);
aa3d4e29 1793
6c301331 1794 fHistPiPMassVSYSecXi[0] = new TH2F("fHistPiPMassVSYSecXiMC"," pi-p+ InvMass distribution secondaries from xi MC",nbMass,1.05,1.25,100,-2.,2);
1795 fHistPiPMassVSYSecXi[1] = new TH2F("fHistPiPMassVSYSecXi"," pi-p+ InvMass distribution secondaries from xi reco",nbMass,1.05,1.25,100,-2.,2);
aa3d4e29 1796
6c301331 1797 fHistPiPXi0PtVSLambdaPt[0]= new TH2F("fHistPiPXi0PtVSLambdaPtMC"," pt xi 0 vs pt lambda MC truth",500,0.0,50.0,500,0.0,50.0);
1798 fHistPiPXi0PtVSLambdaPt[1]= new TH2F("fHistPiPXi0PtVSLambdaPt"," pt xi 0 truth vs pt lambda reco",500,0.0,50.0,500,0.0,50.0);
aa3d4e29 1799
6c301331 1800 fHistPiPXiMinusPtVSLambdaPt[0]= new TH2F("fHistPiPXiMinusPtVSLambdaPtMC","pt xi- vs pt lambda MC truth",500,0.0,50.0,500,0.0,50.0);
1801 fHistPiPXiMinusPtVSLambdaPt[1]= new TH2F("fHistPiPXiMinusPtVSLambdaPt","pt xi- truth vs pt lambda reco",500,0.0,50.0,500,0.0,50.0);
aa3d4e29 1802
6c301331 1803 fHistPiPOmegaPtVSLambdaPt[0] = new TH2F("fHistPiPOmegaPtVSLambdaPtMC","pt omega vs pt lambda MC truth",500,0.0,50.0,500,0.0,50.0);
1804 fHistPiPOmegaPtVSLambdaPt[1] = new TH2F("fHistPiPOmegaPtVSLambdaPt","pt omega vs pt lambda MC reco",500,0.0,50.0,500,0.0,50.0);
aa3d4e29 1805
6c301331 1806 fHistPiPMassVSPtSecOmega[0] = new TH2F("fHistPiPMassVSPtSecOmegaMC","Lambda mass vs pt omega MCtruth",nbMass,1.05,1.25,500,0.0,50.0);
1807 fHistPiPMassVSPtSecOmega[1] = new TH2F("fHistPiPMassVSPtSecOmega","Lambda mass vs pt omega MCreco",nbMass,1.05,1.25,500,0.0,50.0);
1808 fHistPiPMassVSPtSecOmegaMCTruth= new TH2F("fHistPiPMassVSPtSecOmegaMCTruth","Lambda mass vs pt sec Lambda from Omega MC truth pt",nbMass,1.05,1.25,500,0.0,50.0);
aa3d4e29 1809
6c301331 1810 //--------------ALambda-----------------//
1811 fHistPiAPDecayLengthResolution[0] = new TH2F("fHistPiAPDecayLengthResolution","ALambda decay length resolution MC",220,0.0,110.0,220,0.0,110);
1812 fHistPiAPDecayLengthResolution[1] = new TH2F("fHistPiAPDecayLengthResolutionSec","ALambda sec decay length resolution MC",220,0.0,110.0,220,0.0,110);
aa3d4e29 1813
6c301331 1814 fHistPiAPMassVSPtSecSigma[0] = new TH2F("fHistPiAPMassVSPtSecSigmaMC"," pi+p- InvMass distribution secondaries from Sigma MC",nbMass,1.05,1.25,200,0.,20);
1815 fHistPiAPMassVSPtSecSigma[1] = new TH2F("fHistPiAPMassVSPtSecSigma"," pi+p- InvMass distribution secondaries from Sigma reco",nbMass,1.05,1.25,200,0.,20);
aa3d4e29 1816
6c301331 1817 fHistPiAPMassVSPtSecXi[0] = new TH2F("fHistPiAPMassVSPtSecXiMC"," pi+p- InvMass distribution secondaries from xi MC",nbMass,1.05,1.25,200,0.,20);
1818 fHistPiAPMassVSPtSecXi[1] = new TH2F("fHistPiAPMassVSPtSecXi"," pi+p- InvMass distribution secondaries from Xi reco",nbMass,1.05,1.25,200,0.,20);
aa3d4e29 1819
6c301331 1820 fHistPiAPMassVSPtSecXiMCTruth = new TH2F("fHistPiAPMassVSPtSecXiMCTruth","ALambda mass reco vs pt sec Lambda from xi MC truth pt",nbMass,1.05,1.25,500,0.0,50.0);
aa3d4e29 1821
6c301331 1822 fHistPiAPMassVSYSecXi[0] = new TH2F("fHistPiAPMassVSYSecXiMC"," pi+p- InvMass distribution secondaries from xi MC",nbMass,1.05,1.25,100,-2,2);
1823 fHistPiAPMassVSYSecXi[1] = new TH2F("fHistPiAPMassVSYSecXi"," pi+p- InvMass distribution secondaries from xi reco",nbMass,1.05,1.25,100,-2.,2);
aa3d4e29 1824
aa3d4e29 1825
6c301331 1826 fHistPiAPXi0PtVSLambdaPt[0]= new TH2F("fHistPiAPXi0PtVSLambdaPtMC"," pt xi 0 vs pt Alambda MC truth",500,0.0,50.0,500,0.0,50.0);
1827 fHistPiAPXi0PtVSLambdaPt[1]= new TH2F("fHistPiAPXi0PtVSLambdaPt"," pt xi 0 truth vs pt Alambda reco",500,0.0,50.0,500,0.0,50.0);
aa3d4e29 1828
6c301331 1829 fHistPiAPXiMinusPtVSLambdaPt[0]= new TH2F("fHistPiAPXiMinusPtVSLambdaPtMC","pt xi- vs pt Alambda MC truth",500,0.0,50.0,500,0.0,50.0);
1830 fHistPiAPXiMinusPtVSLambdaPt[1]= new TH2F("fHistPiAPXiMinusPtVSLambdaPt","pt xi- truth vs pt Alambda reco",500,0.0,50.0,500,0.0,50.0);
aa3d4e29 1831
6c301331 1832 fHistPiAPOmegaPtVSLambdaPt[0] = new TH2F("fHistPiAPOmegaPtVSLambdaPtMC","pt omega vs pt alambda MC truth",500,0.0,50.0,500,0.0,50.0);
1833 fHistPiAPOmegaPtVSLambdaPt[1] = new TH2F("fHistPiAPOmegaPtVSLambdaPt","pt omega vs pt alambda MC reco",500,0.0,50.0,500,0.0,50.0);
aa3d4e29 1834
6c301331 1835 fHistPiAPMassVSPtSecOmega[0] = new TH2F("fHistPiAPMassVSPtSecOmegaMC","ALambda mass vs pt omega MCtruth",nbMass,1.05,1.25,500,0.0,50.0);
1836 fHistPiAPMassVSPtSecOmega[1] = new TH2F("fHistPiAPMassVSPtSecOmega","ALambda mass vs pt omega MCreco",nbMass,1.05,1.25,500,0.0,50.0);
1837 fHistPiAPMassVSPtSecOmegaMCTruth= new TH2F("fHistPiAPMassVSPtSecOmegaMCTruth","ALambda mass vs pt sec Lambda from Omega MC truth pt",nbMass,1.05,1.25,500,0.0,50.0);
5842a526 1838
6c301331 1839 fOutputContainer->Add(fHistPiPMassVSPtSecXiMCTruth);
1840 fOutputContainer->Add(fHistPiPMassVSPtSecOmegaMCTruth);
aa3d4e29 1841
6c301331 1842 fOutputContainer->Add(fHistPiAPMassVSPtSecXiMCTruth);
1843 fOutputContainer->Add(fHistPiAPMassVSPtSecOmegaMCTruth);
aa3d4e29 1844
6c301331 1845 fOutputContainer->Add(fHistPiPiDecayLengthResolution);
5842a526 1846
1847
6c301331 1848 for(Int_t j=0;j<2;j++){
1849
1850 fOutputContainer->Add(fHistPiPDecayLengthResolution[j]);
1851 fOutputContainer->Add(fHistPiAPDecayLengthResolution[j]);
1852 fOutputContainer->Add(fHistPiPMassVSPtSecXi[j]);
1853 fOutputContainer->Add(fHistPiAPMassVSPtSecXi[j]);
1854 fOutputContainer->Add(fHistPiPMassVSYSecXi[j]);
1855 fOutputContainer->Add(fHistPiAPMassVSYSecXi[j]);
1856 fOutputContainer->Add(fHistPiPXi0PtVSLambdaPt[j]);
1857 fOutputContainer->Add(fHistPiAPXi0PtVSLambdaPt[j]);
1858 fOutputContainer->Add(fHistPiPXiMinusPtVSLambdaPt[j]);
1859 fOutputContainer->Add(fHistPiAPXiMinusPtVSLambdaPt[j]);
1860 fOutputContainer->Add(fHistPiPMassVSPtSecSigma[j]);
1861 fOutputContainer->Add(fHistPiAPMassVSPtSecSigma[j]);
1862 fOutputContainer->Add(fHistPiPOmegaPtVSLambdaPt[j]);
1863 fOutputContainer->Add(fHistPiAPOmegaPtVSLambdaPt[j]);
1864 fOutputContainer->Add(fHistPiPMassVSPtSecOmega[j]);
1865 fOutputContainer->Add(fHistPiAPMassVSPtSecOmega[j]);
aa3d4e29 1866 }
11e769d9 1867 }
6c301331 1868 if(fMCMode ||fMCTruthMode ){
1869 fHistPiPiPDGCode = new TH1F("fHistPiPiPDGCode","PDG code of K0s mothers",3503,-2.5,3500.5);
1870 fOutputContainer->Add(fHistPiPiPDGCode);
1871 fHistPiPPDGCode = new TH1F("fHistPiPPDGCode","PDG code of #Lambda mothers",3503,-2.5,3500.5);
1872 fOutputContainer->Add(fHistPiPPDGCode);
1873 fHistPiAPPDGCode = new TH1F("fHistPiAPPDGCode","PDG code of #bar{#Lambda} mothers",3503,-2.5,3500.5);
1874 fOutputContainer->Add(fHistPiAPPDGCode);
1875 }
1876 /*
1877 if(fMCMode && !fMCTruthMode){
1878 //K0s
1879 fHistPiPiGA= new TH2F("fHistPiPiGA","photons BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1880 fOutputContainer->Add(fHistPiPiGA);
1881 fHistPiPiKch= new TH2F("fHistPiPiKch","ch kaons BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1882 fOutputContainer->Add(fHistPiPiKch);
1883 fHistPiPiPhi= new TH2F("fHistPiPiPhi","phi BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1884 fOutputContainer->Add(fHistPiPiPhi);
1885 fHistPiPiL= new TH2F("fHistPiPiL","Lambda BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1886 fOutputContainer->Add(fHistPiPiL);
1887 fHistPiPiPi0= new TH2F("fHistPiPiPi0","pi0 BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1888 fOutputContainer->Add(fHistPiPiPi0);
1889 fHistPiPiPich= new TH2F("fHistPiPiPich","ch pi BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1890 fOutputContainer->Add(fHistPiPiPich);
1891 fHistPiPiRoh= new TH2F("fHistPiPiRoh","roh BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1892 fOutputContainer->Add(fHistPiPiRoh);
1893 fHistPiPiOmega= new TH2F("fHistPiPiOmega","omega BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1894 fOutputContainer->Add(fHistPiPiOmega);
1895 fHistPiPiKStar= new TH2F("fHistPiPiKStar","Kstar BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1896 fOutputContainer->Add(fHistPiPiKStar);
1897 fHistPiPiNoMother= new TH2F("fHistPiPiNoMother","combi BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1898 fOutputContainer->Add(fHistPiPiNoMother);
1899
1900 fHistPiPiK0s= new TH2F("fHistPiPiK0s","K0s BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1901 fOutputContainer->Add(fHistPiPiK0s);
1902 fHistPiPiK0L= new TH2F("fHistPiPiK0L","K0L BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1903 fOutputContainer->Add(fHistPiPiK0L);
1904 fHistPiPiN= new TH2F("fHistPiPiN","n BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1905 fOutputContainer->Add(fHistPiPiN);
1906 fHistPiPiSigma= new TH2F("fHistPiPiSigma","sigma BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1907 fOutputContainer->Add(fHistPiPiSigma);
1908 fHistPiPiXi= new TH2F("fHistPiPiXi","xi BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1909 fOutputContainer->Add(fHistPiPiXi);
1910 fHistPiPiDelta= new TH2F("fHistPiPiDelta","delta BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1911 fOutputContainer->Add(fHistPiPiDelta);
1912 fHistPiPiB= new TH2F("fHistPiPiB","b BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1913 fOutputContainer->Add(fHistPiPiB);
1914 fHistPiPiD= new TH2F("fHistPiPiD","d BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1915 fOutputContainer->Add(fHistPiPiD);
1916 fHistPiPiEta= new TH2F("fHistPiPiEta","eta BG vs pt K0 ",nbMass,0.25,0.75,200,0,20.0);
1917 fOutputContainer->Add(fHistPiPiEta);
5842a526 1918
76a4d7a7 1919
76a4d7a7 1920
6c301331 1921 //Lambda
1922 fHistPiPGA = new TH2F("fHistPiPGA","photons in L BG",nbMass,1.05,1.25,500,0.0,50.0);
1923 fOutputContainer->Add(fHistPiPGA);
1924 fHistPiPKch = new TH2F("fHistPiPKch","ch kaons in L BG",nbMass,1.05,1.25,500,0.0,50.0);
1925 fOutputContainer->Add(fHistPiPKch);
1926 fHistPiPK0s = new TH2F("fHistPiPK0s","K0s in L BG",nbMass,1.05,1.25,500,0.0,50.0);
1927 fOutputContainer->Add(fHistPiPK0s);
1928 fHistPiPPi0 = new TH2F("fHistPiPPi0","pi0 in L BG",nbMass,1.05,1.25,500,0.0,50.0);
1929 fOutputContainer->Add(fHistPiPPi0);
1930 fHistPiPPich = new TH2F("fHistPiPPich","ch pions in L BG",nbMass,1.05,1.25,500,0.0,50.0);
1931 fOutputContainer->Add(fHistPiPPich);
1932 fHistPiPKStar = new TH2F("fHistPiPKStar","Kstar in L BG",nbMass,1.05,1.25,500,0.0,50.0);
1933 fOutputContainer->Add(fHistPiPKStar);
1934 fHistPiPN = new TH2F("fHistPiPN","neutron in L BG",nbMass,1.05,1.25,500,0.0,50.0);
1935 fOutputContainer->Add(fHistPiPN);
1936 fHistPiPNoMother= new TH2F("fHistPiPNoMother","combi BG vs pt Lambda ",nbMass,1.05,1.25,200,0,20.0);
1937 fOutputContainer->Add(fHistPiPNoMother);
1938 fHistPiPL= new TH2F("fHistPiPL","Lambda BG vs pt K0 ",nbMass,1.05,1.25,200,0,20.0);
1939 fOutputContainer->Add(fHistPiPL);
76a4d7a7 1940 }
6c301331 1941 */
1942
1943 /*
1944 //shift q/pt
1945 fHistUserPtShift = new TH1F("fHistUserPtShift","user defined shift in 1/pt",100,-0.5,1.5);
1946 */
1947
1948}
aa3d4e29 1949
6c301331 1950//________________________________________________________________________
1951void AliAnalysisTaskV0ForRAA::UserExec(Option_t *) {
1952 //user exec
1953
1954 //-- esd handler --//
1955 AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*>
1956 (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
1957 if (!esdH) {
1958 printf("ERROR: Could not get ESDInputHandler");
1959 return;
1960 }
1961 fESD = esdH->GetEvent();
1962 if(!fESD) {
1963 printf("ERROR: fESD not available \n");
1964 return ;
1965 }
5842a526 1966
6c301331 1967 //-- mc handler --//
1968 if(fMCMode || fMCTruthMode){
1969 AliMCEventHandler *mcH = dynamic_cast<AliMCEventHandler*>
1970 (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
1971 if(!mcH) {
1972 printf("ERROR: Could not get MCInputHandler");
76a4d7a7 1973 return;
1974 }
6c301331 1975 fMCev = mcH->MCEvent();
1976 if (!fMCev) {
1977 printf("ERROR: fMCev not available \n");
76a4d7a7 1978 return ;
1979 }
6c301331 1980 }
1981
1982 //-- AliPIDResponse --//
1983 fESDpid = esdH->GetPIDResponse();
1984
1985 //-- Count events before cuts --//
1986 fHistNEvents->Fill(0);
1987
1988 //-- Check object existence --//
1989 const AliESDVertex * vtxESD = fESD->GetPrimaryVertexTracks();
1990 const AliESDVertex * vtxESDTPC = fESD->GetPrimaryVertexTPC();
1991 const AliESDVertex * vtxESDSPD = fESD->GetPrimaryVertexSPD();
1992 const AliMultiplicity * multESD = fESD->GetMultiplicity();
1993
1994 if ( !vtxESD ){
1995 AliError("No Tracks Vertex");
1996 return;
1997 }
76a4d7a7 1998
6c301331 1999 if ( !vtxESDTPC ){
2000 AliError("No TPC Vertex");
2001 return ;
2002 }
76a4d7a7 2003
6c301331 2004 if ( !vtxESDSPD ){
2005 AliError("No SPD Vertex");
2006 return ;
2007 }
2008
2009 if ( !multESD ){
2010 AliError("No Multiplicity");
2011 return ;
2012 }
aa3d4e29 2013
2014
6c301331 2015 // ----------- MC vertex -----------------------------------//
aa3d4e29 2016
6c301331 2017 Int_t nContr =0;
aa3d4e29 2018
6c301331 2019 if(fMCTruthMode){
2020 Double_t vVertexPrim[3];
2021 fMCev->GetPrimaryVertex()->GetXYZ(vVertexPrim);
2022 fHistMCVertexZ->Fill(vVertexPrim[2]);
aa3d4e29 2023
6c301331 2024 if(fMCMode && fAnapp){
2025 if (vtxESD->GetStatus()){
2026 nContr=vtxESD->GetNContributors();
2027 fHistPrimVtxZESDVSNContributorsMC->Fill(vVertexPrim[2],nContr);
2028 fHistPrimVtxZESDTPCVSNContributorsMC->Fill(vVertexPrim[2],nContr);
2029 }
2030 else {
2031 if(vtxESDSPD->GetStatus()){
2032 nContr=vtxESDSPD->GetNContributors();
aa3d4e29 2033 fHistPrimVtxZESDTPCVSNContributorsMC->Fill(vVertexPrim[2],nContr);
6c301331 2034 fHistPrimVtxZESDSPDVSNContributorsMC->Fill(vVertexPrim[2],nContr);
aa3d4e29 2035 }
6c301331 2036 else{
2037 fHistPrimVtxZESDVSNContributorsMC->Fill(vVertexPrim[2],nContr);//add for correction ESD and ESDPSD!!!!
2038 fHistPrimVtxZESDTPCVSNContributorsMC->Fill(vVertexPrim[2],nContr);
aa3d4e29 2039 }
2040 }
2041 }
6c301331 2042 }
aa3d4e29 2043
2044
2045
6c301331 2046 //-- Check fo centrality --//
2047 Bool_t process = kTRUE;
2048 Int_t centBin = -1;
2049 if(fUseCentrality) {
2050 centBin = CalculateCentralityBin();
2051 if(!fUseCentralityRange){
2052 if(centBin!= fUseCentralityBin) process=kFALSE;
aa3d4e29 2053 }
6c301331 2054 else if(centBin < fUseCentralityBin || centBin > fUseCentralityBin+fUseCentralityRange)
2055 process = kFALSE;
2056 }
aa3d4e29 2057
6c301331 2058 AliESDVZERO* esdV0 = fESD->GetVZEROData();
2059 Float_t multV0 = esdV0->GetMTotV0A() + esdV0->GetMTotV0C();
5842a526 2060
6c301331 2061 if(fAnapp){// pp Analysis
aa3d4e29 2062
6c301331 2063 // SDD test for 2.76TeV pp
2064 // select events with SDD
2065 // TString trCl = fESD->GetFiredTriggerClasses();
2066 //if(!(trCl.Contains("ALLNOTRD")) && fSelSDD) return;
2067 UInt_t maskSel = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
2068 if(maskSel& AliVEvent::kFastOnly && fSelSDD) return;
2069 if(!(maskSel& AliVEvent::kFastOnly) && fSelNoSDD) return;
aa3d4e29 2070
2071
6c301331 2072 //-- Monitor event cuts --//
2073 fHistNEvents->Fill(1);
aa3d4e29 2074
6c301331 2075 //---ask for pileup from SPD---//
2076 Bool_t pileUpSPD = fESD->IsPileupFromSPD();
2077 if(fRejectPileUpSPD && pileUpSPD) return;
5842a526 2078
6c301331 2079 Int_t ntracks = fESD->GetNumberOfTracks();
2080 for(Int_t i=0;i<ntracks;i++){//check sdd event selection
2081 AliESDtrack *tr= fESD->GetTrack(i);
2082
2083 Bool_t sdd0 = tr->HasPointOnITSLayer(0);
2084 Bool_t sdd1 = tr->HasPointOnITSLayer(1);
2085 Bool_t sdd2 = tr->HasPointOnITSLayer(2);
2086 Bool_t sdd3 = tr->HasPointOnITSLayer(3);
2087 Bool_t sdd4 = tr->HasPointOnITSLayer(4);
2088 Bool_t sdd5 = tr->HasPointOnITSLayer(5);
aa3d4e29 2089
6c301331 2090 fHistITSLayerHits->Fill(Int_t(sdd0)*(-1),ntracks);
2091 fHistITSLayerHits->Fill(Int_t(sdd1)*1,ntracks);
2092 fHistITSLayerHits->Fill(Int_t(sdd2)*2,ntracks);
2093 fHistITSLayerHits->Fill(Int_t(sdd3)*3,ntracks);
2094 fHistITSLayerHits->Fill(Int_t(sdd4)*4,ntracks);
2095 fHistITSLayerHits->Fill(Int_t(sdd5)*5,ntracks);
2096 }
76a4d7a7 2097
6c301331 2098 //--vertex selection--//
2099 if (vtxESD->GetStatus()){
2100 fHistNEvents->Fill(2);
2101 fHistESDVertexZ->Fill(vtxESD->GetZv());
2102 if(fabs(vtxESD->GetZv()) < fVertexZCut){
2103 fHistMuliplicityRaw->Fill(multV0);
2104 fHistNEvents->Fill(3);
2105 fHistNPrim->Fill(nContr);
2106
2107 Process();
2108
2109 fHistMuliplicity->Fill(multV0);
2110
2111 nContr = vtxESD->GetNContributors();
2112 // if(nContr<501){
2113 fHistPrimVtxZESDVSNContributors->Fill(vtxESD->GetZv(),nContr);
2114 fHistPrimVtxZESDTPCVSNContributors->Fill(vtxESDTPC->GetZv(),nContr);
2115 //fHistPrimVtxZESDSPDVSNContributorsTPC->Fill(vtxESDSPD->GetZv(),nContr);
2116 // }
2117 fHistPrimVtxZESD->Fill(vtxESD->GetZv());
2118 fHistPrimVtxZESDTPC->Fill(vtxESDTPC->GetZv());
2119 // fHistPrimVtxZESDSPD->Fill(vtxESDSPD->GetZv());
2120 // -- count events after processing
2121 fHistNEvents->Fill(4);
2122 }
2123 }
2124 else{
2125 if(vtxESDSPD->GetStatus()){
aa3d4e29 2126 fHistNEvents->Fill(2);
6c301331 2127
2128 fHistESDVertexZ->Fill(vtxESDSPD->GetZv());
2129 if(fabs(vtxESDSPD->GetZv()) < fVertexZCut){
2130
aa3d4e29 2131 fHistMuliplicityRaw->Fill(multV0);
2132 fHistNEvents->Fill(3);
2133 fHistNPrim->Fill(nContr);
6c301331 2134
aa3d4e29 2135 Process();
6c301331 2136
aa3d4e29 2137 fHistMuliplicity->Fill(multV0);
6c301331 2138
2139 nContr = vtxESDSPD->GetNContributors();
5842a526 2140 // if(nContr<501){
6c301331 2141 //fHistPrimVtxZESDVSNContributors->Fill(vtxESD->GetZv(),nContr);
aa3d4e29 2142 fHistPrimVtxZESDTPCVSNContributors->Fill(vtxESDTPC->GetZv(),nContr);
6c301331 2143 fHistPrimVtxZESDSPDVSNContributors->Fill(vtxESDSPD->GetZv(),nContr);
2144 // }
2145 // fHistPrimVtxZESD->Fill(vtxESD->GetZv());
aa3d4e29 2146 fHistPrimVtxZESDTPC->Fill(vtxESDTPC->GetZv());
6c301331 2147 fHistPrimVtxZESDSPD->Fill(vtxESDSPD->GetZv());
aa3d4e29 2148 // -- count events after processing
2149 fHistNEvents->Fill(4);
2150 }
2151 }
6c301331 2152 //else return;
aa3d4e29 2153 }
6c301331 2154 }
2155 else{// PbPb analysis
2156 //-- Monitor event cuts --//
2157 fHistNEvents->Fill(1);
2158
2159 if(vtxESD->GetStatus()){
2160 Double_t vtxZ = vtxESD->GetZv();
2161 fHistESDVertexZ->Fill(vtxZ);
2162 if(process){
2163 fHistNEvents->Fill(2);
2164 if(fabs(vtxZ) < fVertexZCut){
2165 nContr = vtxESD->GetNContributors();
2166 fHistMuliplicityRaw->Fill(multV0);
2167 fHistNEvents->Fill(3);
2168 fHistNPrim->Fill(nContr);
2169 Process();
2170 fHistMuliplicity->Fill(multV0);
2171 fHistPrimVtxZESD->Fill(vtxZ);
2172 fHistPrimVtxZESDVSNContributors->Fill(vtxZ,nContr);
2173 // -- count events after processing --//
2174 fHistCentBin->Fill(centBin);
2175 fHistNEvents->Fill(4);
aa3d4e29 2176 }
2177 }
6c301331 2178 if(fabs(vtxZ) < fVertexZCut) fHistCentBinRaw->Fill(centBin);
aa3d4e29 2179 }
76a4d7a7 2180 }
6c301331 2181 PostData(1,fOutputContainer);
2182}
aa3d4e29 2183
6c301331 2184//________________________________________________________________________
2185void AliAnalysisTaskV0ForRAA::Terminate(Option_t *) {
2186 //terminate
2187}
aa3d4e29 2188
6c301331 2189//________________________________________________________________________
2190void AliAnalysisTaskV0ForRAA::Process(){//run the analysis
2191
2192 Int_t ntracks = fESD->GetNumberOfTracks();
2193 Int_t count = 0;
11e769d9 2194
6c301331 2195 //-- count number of tracks --//
aa3d4e29 2196
6c301331 2197 if(!(!fMCMode && fMCTruthMode)){
2198 for(Int_t i=0;i<ntracks;i++){
2199 AliESDtrack *track = (AliESDtrack*)fESD->GetTrack(i);
2200 if(!fESDTrackCuts->AcceptTrack(track)) continue;
2201 if( track->Eta() > fEtaCutMCDaughtersVal) continue;
2202 count++;
aa3d4e29 2203 }
6c301331 2204 fHistMultiplicityPrimary->Fill(count);
2205 }
aa3d4e29 2206
6c301331 2207 //-- check number of V0s in case of data or mc data like analysis--//
2208 Int_t nV0 = fESD->GetNumberOfV0s();
2209 if(!fMCTruthMode) if(nV0 < 1) return;
aa3d4e29 2210
6c301331 2211 //-- run analysis --//
2212 if(fMCTruthMode) V0MCTruthLoop();
2213 else V0RecoLoop(0,0,0,0,0.0,0,0.0,0.0);
aa3d4e29 2214
6c301331 2215}
aa3d4e29 2216
6c301331 2217//________________________________________________________________________
2218void AliAnalysisTaskV0ForRAA::V0MCTruthLoop(){
2219 //loop over MC truth particles
aa3d4e29 2220
6c301331 2221 //-- get MC stack --//
2222 AliStack *stack = fMCev->Stack();
2223
2224 /*
2225 //histo for user defined shift in charge/pt
2226 if(fShift){
2227 fHistUserPtShift->Fill(fDeltaInvP);
2228 }
2229 */
2230 /*
2231 AliKFVertex primVtxStart(*(fESD->GetPrimaryVertex()));
2232 Int_t nTracksPrim=primVtxStart.GetNContributors();
2233 fHistNPrim->Fill(nTracksPrim);
2234 */
2235 /*
2236 // MC
aa3d4e29 2237
6c301331 2238 Int_t mcPrimaries = stack->GetNprimary();
2239 Int_t mcParticles = stack->GetNtrack();
aa3d4e29 2240
6c301331 2241 fHistMultiplicityPrimary->Fill(mcPrimaries);
2242 fHistMCMultiplicityTracks->Fill(mcParticles);
aa3d4e29 2243
6c301331 2244 // number of V0
2245 fHistNV0->Fill(nV0);
2246 if(nTracksPrim>0) {
2247 fHistNV0WithVertex->Fill(nV0);
2248 }
2249 */
2250
2251 //-- MC truht loop for V0s --//
2252 for (Int_t iMc = 0; iMc < (stack->GetNtrack()); iMc++){//MC truth loop
2253 Int_t fillMCtruth= int(fMCTruthMode);
2254 if(fMCTruthMode){
2255 fHistPiPiMonitorMCCuts->Fill(1*fillMCtruth);
2256 fHistPiPMonitorMCCuts[0]->Fill(1*fillMCtruth);
2257 fHistPiAPMonitorMCCuts[0]->Fill(1*fillMCtruth);
11e769d9 2258 }
6c301331 2259 TParticle *p0 = stack->Particle(iMc);
2260 if(!p0) continue;
aa3d4e29 2261
6c301331 2262 if(fMCTruthMode){
2263 fHistPiPiMonitorMCCuts->Fill(2*fillMCtruth);
2264 fHistPiPMonitorMCCuts[0]->Fill(2*fillMCtruth);
2265 fHistPiAPMonitorMCCuts[0]->Fill(2*fillMCtruth);
2266 }
76a4d7a7 2267
aa3d4e29 2268
2269
6c301331 2270 Int_t pdgCode = p0->GetPdgCode();
aa3d4e29 2271
6c301331 2272 //-------------- only K0s and Lambda ----------//
2273 if( (pdgCode != 310 ) && ( fabs(pdgCode) != 3122 ) ) continue;
2274 Int_t fillFlagK0 = (3122- fabs(pdgCode))/(3122-310)*fillMCtruth;
2275 Int_t fillFlagL = (fabs(pdgCode) - 310)/(3122-310)*(pdgCode+3122)/(2*3122)*fillMCtruth;
2276 Int_t fillFlagAL = (fabs(pdgCode) - 310)/(3122-310)*(pdgCode-3122)/(-2*3122)*fillMCtruth;
aa3d4e29 2277
6c301331 2278 fHistPiPiMonitorMCCuts->Fill(3*fillFlagK0);
2279 fHistPiPMonitorMCCuts[0]->Fill(3*fillFlagL);
2280 fHistPiAPMonitorMCCuts[0]->Fill(3*fillFlagAL);
2281
2282 if(p0->GetNDaughters() !=2) continue;
2283 fHistPiPiMonitorMCCuts->Fill(4*fillFlagK0);
2284 fHistPiPMonitorMCCuts[0]->Fill(4*fillFlagL);
2285 fHistPiAPMonitorMCCuts[0]->Fill(4*fillFlagAL);
2286
2287 //-------------- unique ID check-------------- //
2288 Int_t uniqueID = p0->GetUniqueID();
2289 if(uniqueID==13) continue;
2290
2291 fHistPiPiMonitorMCCuts->Fill(5*fillFlagK0);
2292 fHistPiPMonitorMCCuts[0]->Fill(5*fillFlagL);
2293 fHistPiAPMonitorMCCuts[0]->Fill(5*fillFlagAL);
2294
2295 //-------------- daughters --------------------//
2296 Int_t id0 = p0->GetDaughter(0);
2297 Int_t id1 = p0->GetDaughter(1);
2298 if(id0<0 || id1 <0) continue;
2299
2300 fHistPiPiMonitorMCCuts->Fill(6*fillFlagK0);
2301 fHistPiPMonitorMCCuts[0]->Fill(6*fillFlagL);
2302 fHistPiAPMonitorMCCuts[0]->Fill(6*fillFlagAL);
aa3d4e29 2303
6c301331 2304 Int_t pdgCodeD0 = stack->Particle(id0)->GetPdgCode();
2305 Int_t pdgCodeD1 = stack->Particle(id1)->GetPdgCode();
aa3d4e29 2306
6c301331 2307 if(pdgCodeD0 == pdgCodeD1) continue;
2308 if(pdgCodeD0*pdgCodeD1>0) continue;
aa3d4e29 2309
6c301331 2310 fHistPiPiMonitorMCCuts->Fill(7*fillFlagK0);
2311 fHistPiPMonitorMCCuts[0]->Fill(7*fillFlagL);
2312 fHistPiAPMonitorMCCuts[0]->Fill(7*fillFlagAL);
aa3d4e29 2313
6c301331 2314 if((fabs(pdgCodeD0) != 211 ) && ( fabs(pdgCodeD0) != 2212 )) continue;
2315 if((fabs(pdgCodeD1) != 211 ) && ( fabs(pdgCodeD1) != 2212 )) continue;
2316
2317 fHistPiPiMonitorMCCuts->Fill(8*fillFlagK0);
2318 fHistPiPMonitorMCCuts[0]->Fill(8*fillFlagL);
2319 fHistPiAPMonitorMCCuts[0]->Fill(8*fillFlagAL);
2320
2321 TParticle *p00 =stack->Particle(id0);
2322 TParticle *p01 =stack->Particle(id1);
2323 Double_t etaMC00 = p00->Eta();
2324 Double_t etaMC01 = p01->Eta();
2325
2326 //----------- unique ID check daughters-------- //
2327 Int_t uniqueIDdaughter0 = p00->GetUniqueID();
2328 Int_t uniqueIDdaughter1 = p01->GetUniqueID();
2329 if (uniqueIDdaughter0 !=4 || uniqueIDdaughter1 !=4 ) continue;
2330
2331 fHistPiPiMonitorMCCuts->Fill(9*fillFlagK0);
2332 fHistPiPMonitorMCCuts[0]->Fill(9*fillFlagL);
2333 fHistPiAPMonitorMCCuts[0]->Fill(9*fillFlagAL);
2334
2335 fHistPiPMonitorMCCuts[1]->Fill(9*fillFlagL);
2336 fHistPiAPMonitorMCCuts[1]->Fill(9*fillFlagAL);
11e769d9 2337
6c301331 2338 //------------ check label reco -------------------//
2339 if(fCheckNegLabelReco || fOnlyFoundRecoV0){ // check label reco
2340 Bool_t found =kFALSE;
2341 Int_t label0=0,label1=0;
2342 AliESDv0 * v0MIsMC=NULL;
2343 AliESDtrack *tr0 = NULL;
2344 AliESDtrack *tr1 = NULL;
2345 for(Int_t recL=0;recL < fESD->GetNumberOfV0s();recL++){
2346 v0MIsMC = fESD->GetV0(recL);
2347 if(!v0MIsMC) continue;
2348 tr0 = fESD->GetTrack(v0MIsMC->GetPindex());
2349 tr1 = fESD->GetTrack(v0MIsMC->GetNindex());
2350 if(tr0 && tr1){
2351 label0 = tr0->GetLabel();
2352 label1 = tr1->GetLabel();
2353 if((fabs(label0) == id0 && fabs(label1) == id1) ||
2354 (fabs(label0) == id1 && fabs(label1) == id0)){
2355 found =kTRUE;
2356 break;
2357 }
2358 }
76a4d7a7 2359 }
6c301331 2360 if(fCheckNegLabelReco && !fOnlyFoundRecoV0) {
2361 if(found && (label0 <0 || label1 < 0)) continue;
2362 }
2363 else{
2364 if(!found) continue;
2365 if(fCheckNegLabelReco && found && (label0 <0 || label1 < 0)) continue;
2366 }
2367
2368 }
2369 //-----------get geometric properties --------------//
2370 // DCA of mother to prim vertex = production vertex
aa3d4e29 2371
6c301331 2372 //-- primary and secondary vetex --//
2373 Double_t vVertexPrimMC[3];
2374 fMCev->GetPrimaryVertex()->GetXYZ(vVertexPrimMC);
2375 // Double_t x0=p0->Vx(),y0=p0->Vy(),z0=p0->Vz();//mother production vertex
2376
2377 Double_t x=p00->Vx(),y=p00->Vy(),z=p00->Vz();//daughter vertex =V0 decay vertex
2378 Double_t rx = x - vVertexPrimMC[0];
2379 Double_t ry = y - vVertexPrimMC[1];
2380 Double_t rz = z - vVertexPrimMC[2];
2381 Double_t sdeclength = rx*rx+ry*ry;//+rz*rz;//=p00->Rho();
2382 Double_t declength =0.0;
2383 if(sdeclength>0) declength = sqrt(sdeclength);
2384 Double_t declength3d = sqrt( rx*rx+ry*ry+rz*rz);
2385
2386 //-- decay radii --//
2387 Double_t rMC2D = sqrt(x*x+y*y);
2388 const Double_t xyzMC[3] = {x,y,z};
2389 // Double_t rMC = p00->R();
2390
2391 //-- phi --//
2392 Double_t pi = TMath::Pi();
2393 Double_t phi = p0->Phi();
2394 if(phi>pi) phi -=2*pi;
2395
2396 //-------------------- V0 variables ----------------//
2397 Double_t rapidity = p0->Y();
2398 Double_t massV0MC = p0->GetMass();
2399 Double_t ptV0MC = p0->Pt();
2400 Double_t pV0MC = p0->P();
aa3d4e29 2401
2402
6c301331 2403 //----------------- mother variables-----------------//
2404 Int_t indexMother1 = p0->GetMother(0);
2405 Int_t isSecd=0;
2406 Int_t pdgMother =0;
2407 // Int_t goodMother=1;
2408 Int_t uniqueIDmother=0;
2409 Double_t ptXiMother=0.0;
2410 Double_t rapXiMother = 0.0;
2411
2412
2413 //------check mother and fill mother histos---------//
2414 Bool_t isPrim= stack->IsPhysicalPrimary(iMc);
5842a526 2415
6c301331 2416 if(!isPrim){//secondary
2417 isSecd=1;// is secondary V0s
2418 if(indexMother1 >-1){// && !isPrim){//secondary V0s
2419 // isSecd=1;// is secondary V0s
2420 // if(fSelectMBMotherMC && !fMCev->IsFromBGEvent(indexMother1)) continue;//xxx only standard hijing particles for sec. lambdas:not needed
aa3d4e29 2421
6c301331 2422 //-- check for mother --//
2423 TParticle *mother = stack->Particle(indexMother1);
2424 if(!mother) {
2425 Printf("no mother pointer!");continue;
2426 }
2427 pdgMother = mother->GetPdgCode();
2428 fHistPiPMonitorMCCuts[1]->Fill(10*fillFlagL);
2429 fHistPiAPMonitorMCCuts[1]->Fill(10*fillFlagAL);
76a4d7a7 2430
6c301331 2431 //-- check for injejcted --//
2432 Bool_t notinjectedMother = kTRUE;
2433 notinjectedMother = fMCev->IsFromBGEvent(indexMother1);
2434
2435 if(fSelectInjected && !notinjectedMother ) continue;
2436 fHistPiPMonitorMCCuts[1]->Fill(11*fillFlagL);
2437 fHistPiAPMonitorMCCuts[1]->Fill(11*fillFlagAL);
2438
2439 Bool_t isPrimMother= stack->IsPhysicalPrimary(indexMother1);
2440 if(!isPrimMother) continue;
2441 fHistPiPMonitorMCCuts[1]->Fill(12*fillFlagL);
2442 fHistPiAPMonitorMCCuts[1]->Fill(12*fillFlagAL);
aa3d4e29 2443
6c301331 2444 uniqueIDmother = mother->GetUniqueID();
aa3d4e29 2445
6c301331 2446 if(uniqueIDmother==13){
2447 continue;
2448 }
2449 fHistPiPMonitorMCCuts[1]->Fill(13*fillFlagL);
2450 fHistPiAPMonitorMCCuts[1]->Fill(13*fillFlagAL);
aa3d4e29 2451
2452
6c301331 2453 //-- fill secondary V0s histos and pdg histos --//
2454 ptXiMother = mother->Pt();
2455 rapXiMother = mother->Y();
aa3d4e29 2456
2457
6c301331 2458 //-- K0s --//
2459 if(pdgCode==310){
2460 if(fabs(pdgMother)==311 || fabs(pdgMother)==313 || fabs(pdgMother)==323 ) isSecd=0; // from K0L, K0 and K* as primary
2461 else fHistPiPiPDGCode->Fill(fabs(pdgMother));
2462 }
2463
2464 //-- Lambda --//
2465 if(pdgCode==3122){
2466 fHistPiPPDGCode->Fill(fabs(pdgMother));
2467 if (//sigma family
2468 ( TMath::Abs(pdgMother) == 3112) || //sigma minus
2469 ( TMath::Abs(pdgMother) == 3222) || //sigma plus
2470 ( TMath::Abs(pdgMother) == 3224) || //sigma *plus
2471 ( TMath::Abs(pdgMother) == 3114) || //sigma *minus
2472 ( TMath::Abs(pdgMother) == 3214) || //sigma *0 counts as primary????
2473 ( TMath::Abs(pdgMother) == 3212) //sigma 0 counts as primary
2474 )
2475 {
2476 isSecd=0;
2477 }
aa3d4e29 2478
6c301331 2479 if( pdgMother == 3322) //xi0
2480 {
2481 if(!fRapCutV0 || fabs(rapidity)<fRap){
2482 if(!fEtaCutMCDaughters || (fabs(etaMC00)<fEtaCutMCDaughtersVal|| fabs(etaMC01)<fEtaCutMCDaughtersVal)){
2483 fHistPiPMassVSPtSecXi[0]->Fill(massV0MC,ptV0MC);
2484 fHistPiPMassVSYSecXi[0]->Fill(massV0MC,rapidity);
2485 if(!fRapCutV0 || fabs(rapXiMother)<fRap) fHistPiPXi0PtVSLambdaPt[0]->Fill(ptV0MC,ptXiMother);
aa3d4e29 2486 }
2487 }
6c301331 2488 }
2489
2490 if(pdgMother == 3312) //xi minus
2491 {
2492 if(!fRapCutV0 || fabs(rapidity)<fRap){
2493 if(!fEtaCutMCDaughters || (fabs(etaMC00)<fEtaCutMCDaughtersVal|| fabs(etaMC01)<fEtaCutMCDaughtersVal)){
2494 fHistPiPMassVSPtSecXi[0]->Fill(massV0MC,ptV0MC);
2495 fHistPiPMassVSYSecXi[0]->Fill(massV0MC,rapidity);
2496 if(!fRapCutV0 || fabs(rapXiMother)<fRap) fHistPiPXiMinusPtVSLambdaPt[0]->Fill(ptV0MC,ptXiMother);
aa3d4e29 2497 }
2498 }
6c301331 2499 }
2500
2501 if(pdgMother == 3334)//omega-
2502 {
2503 // fHistPiPDCAtoPrimVtxOmega[0]->Fill(p0->GetMass(),dcaV0ToPrimVertex);
2504 if(!fRapCutV0 || fabs(rapXiMother)<fRap) fHistPiPOmegaPtVSLambdaPt[0]->Fill(ptV0MC,ptXiMother);
2505 fHistPiPMassVSPtSecOmega[0]->Fill(massV0MC,ptV0MC);
2506 }
2507 }
2508
2509 //-- AntiLambda --//
2510 if(pdgCode==-3122 ){
2511 fHistPiAPPDGCode->Fill(fabs(pdgMother));
2512 if (//sigma family
2513 ( TMath::Abs(pdgMother) == 3112) ||//sigma minus
2514 ( TMath::Abs(pdgMother) == 3222) ||//sigma plus
2515 ( TMath::Abs(pdgMother) == 3224) ||//sigma *plus
2516 ( TMath::Abs(pdgMother) == 3114) ||//sigma *minus
2517 ( TMath::Abs(pdgMother) == 3214) || //sigma *0
2518 ( TMath::Abs(pdgMother) == 3212) //sigma 0 counts as primary
2519 )
2520 {
2521 isSecd=0;
2522 }
aa3d4e29 2523
6c301331 2524 if( pdgMother == -3322) //xi0
2525 {
2526 if(!fRapCutV0 || fabs(rapidity)<fRap){
2527 if(!fEtaCutMCDaughters || (fabs(etaMC00)<fEtaCutMCDaughtersVal|| fabs(etaMC01)<fEtaCutMCDaughtersVal)){
2528 fHistPiAPMassVSPtSecXi[0]->Fill(massV0MC,ptV0MC);
2529 fHistPiAPMassVSYSecXi[0]->Fill(massV0MC,rapidity);
2530 if(!fRapCutV0 || fabs(rapXiMother)<fRap) fHistPiAPXi0PtVSLambdaPt[0]->Fill(ptV0MC,ptXiMother);
aa3d4e29 2531 }
2532 }
6c301331 2533 }
2534
2535 if(pdgMother == -3312) //xi plus
2536 {
2537 if(!fRapCutV0 || fabs(rapidity)<fRap){
2538 if(!fEtaCutMCDaughters || (fabs(etaMC00)<fEtaCutMCDaughtersVal|| fabs(etaMC01)<fEtaCutMCDaughtersVal)){
2539 fHistPiAPMassVSPtSecXi[0]->Fill(massV0MC,ptV0MC);
2540 fHistPiAPMassVSYSecXi[0]->Fill(massV0MC,rapidity);
2541 if(!fRapCutV0 || fabs(rapXiMother)<fRap) fHistPiAPXiMinusPtVSLambdaPt[0]->Fill(ptV0MC,ptXiMother);
aa3d4e29 2542 }
76a4d7a7 2543 }
6c301331 2544 }
2545
2546 if(pdgMother == -3334)//omega+
2547 {
2548 fHistPiAPOmegaPtVSLambdaPt[0]->Fill(ptV0MC,ptXiMother);
2549 if(!fRapCutV0 || fabs(rapXiMother)<fRap) fHistPiAPMassVSPtSecOmega[0]->Fill(massV0MC,ptV0MC);
2550 // fHistPiAPDCAtoPrimVtxOmega[0]->Fill(p0->GetMass(),dcaV0ToPrimVertex);
2551 }
2552 }
2553 }
2554 }//end secondaries
2555 else{//primaries
2556 //-- check for injejcted --//
2557 Bool_t notinjected = kTRUE;
2558 notinjected = fMCev->IsFromBGEvent(iMc);
aa3d4e29 2559
6c301331 2560 if(fSelectInjected && !notinjected ) continue;
2561 fHistPiPiMonitorMCCuts->Fill(10*fillFlagK0);
2562 fHistPiPMonitorMCCuts[0]->Fill(10*fillFlagL);
2563 fHistPiAPMonitorMCCuts[0]->Fill(10*fillFlagAL);
2564 }
2565
2566
2567 //-------------- MC truth or reco mode -----------------//
2568 if(fMCTruthMode && !fMCMode){//MC true ana
2569 fHistPiPiMonitorMCCuts->Fill(14*fillFlagK0);
2570 fHistPiPMonitorMCCuts[isSecd]->Fill(14*fillFlagL);
2571 fHistPiAPMonitorMCCuts[isSecd]->Fill(14*fillFlagAL);
2572
2573 //-- DCA daughters --//
2574 // values of one daugher, should be the same
2575 /*
2576 //to primary vertex
2577 trackPos->GetImpactParameters(tdcaPosToVertex[0],tdcaPosToVertex[1]);
2578 trackNeg->GetImpactParameters(tdcaNegToVertex[0],tdcaNegToVertex[1]);
aa3d4e29 2579
6c301331 2580 Double_t dcaPosToVertex = TMath::Sqrt(tdcaPosToVertex[0]*tdcaPosToVertex[0]+tdcaPosToVertex[1]*tdcaPosToVertex[1]);
2581 Double_t dcaNegToVertex = TMath::Sqrt(tdcaNegToVertex[0]*tdcaNegToVertex[0]+tdcaNegToVertex[1]*tdcaNegToVertex[1]);
2582 fHistDCADaughtersToPrimVtx[isSecd]->Fill(dcaPosToVertex,dcaNegToVertex);
2583 */
aa3d4e29 2584
2585
6c301331 2586 //-- armenteros values --//
2587 TVector3 vecPip;
2588 TVector3 vecPin;
aa3d4e29 2589
6c301331 2590 Double_t ptPlus=0, ptMinus=0;
2591 Double_t pt00 = p00->Pt();
2592 Double_t pt01 = p01->Pt();
2593 Double_t phiMCPos=0.0;
2594 Double_t phiMCNeg=0.0;
2595 Double_t etaMCPos =0.0;
2596 Double_t etaMCNeg =0.0;
2597 if(p00->GetPdgCode()<0)
2598 {
2599 vecPip.SetXYZ(p01->Px(),p01->Py(),p01->Pz());
2600 vecPin.SetXYZ(p00->Px(),p00->Py(),p00->Pz());
2601 ptMinus = pt00;
2602 ptPlus = pt01;
2603 phiMCPos = p01->Phi();
2604 phiMCNeg = p00->Phi();
2605 etaMCPos = etaMC01;
2606 etaMCNeg = etaMC00;
aa3d4e29 2607 }
6c301331 2608 else{
2609 vecPin.SetXYZ(p01->Px(),p01->Py(),p01->Pz());
2610 vecPip.SetXYZ(p00->Px(),p00->Py(),p00->Pz());
2611 ptMinus = pt01;
2612 ptPlus = pt00;
2613 phiMCPos = p00->Phi();
2614 phiMCNeg = p01->Phi();
2615 etaMCPos = etaMC00;
2616 etaMCNeg = etaMC01;
2617 }
aa3d4e29 2618
6c301331 2619 TVector3 momTot(p0->Px(),p0->Py(),p0->Pz());
2620 Double_t lQlNeg = fabs(vecPin.Dot(momTot)/momTot.Mag());
2621 Double_t lQlPos = fabs(vecPip.Dot(momTot)/momTot.Mag());
2622 Double_t alfa =0.0;
2623 Double_t den = lQlPos + lQlNeg;
2624 if(den>0) alfa = (lQlPos - lQlNeg)/den;
2625 TVector3 qtvec= vecPin.Cross(momTot);//vecPip.Mag()*sqrt(1-pow(thetapip,2));
2626 Float_t qt = qtvec.Mag()/momTot.Mag();
2627
2628 //clalc masses for test
2629 Double_t massPi=0.13957018;
2630 Double_t massP=0.93827203;
2631
2632 TLorentzVector pionPTest(vecPip, massPi);
2633 TLorentzVector pionNTest(vecPin, massPi);
2634 TLorentzVector k0sTest = pionPTest+pionNTest;
2635
2636 TLorentzVector protPTest(vecPip, massP);
2637 TLorentzVector lambdaTest = protPTest+pionNTest;
5842a526 2638
6c301331 2639 TLorentzVector protNTest(vecPin, massP);
2640 TLorentzVector alambdaTest = protNTest+pionPTest;
2641
2642 Double_t calcK0smass = fabs(k0sTest.M());
2643 Double_t calcLambdamass = fabs(lambdaTest.M());
2644 Double_t calcALambdamass = fabs(alambdaTest.M());
2645
2646 if(pdgCode == 310) {
2647 fHistPiPiEtaDMC[isSecd]->Fill(etaMCPos,ptV0MC);
2648 fHistPiPiEtaDMC[isSecd]->Fill(etaMCNeg,ptV0MC);
2649 }
2650 if(fabs(pdgCode) == 3122) {
2651 fHistPiPEtaDMC[isSecd]->Fill(etaMC00,ptV0MC);
2652 fHistPiPEtaDMC[isSecd]->Fill(etaMC01,ptV0MC);
2653 }
2654
2655 //-- rapidity and eta cut --//
2656 if(fRapCutV0 && fabs(rapidity)>fRap) continue;
2657 fHistPiPiMonitorMCCuts->Fill(15*fillFlagK0);
2658 fHistPiPMonitorMCCuts[isSecd]->Fill(15*fillFlagL);
2659 fHistPiAPMonitorMCCuts[isSecd]->Fill(15*fillFlagAL);
aa3d4e29 2660
6c301331 2661 if(fEtaCutMCDaughters) { if(fabs(etaMC00)>fEtaCutMCDaughtersVal || fabs(etaMC01)>fEtaCutMCDaughtersVal ) continue; }
2662 fHistPiPiMonitorMCCuts->Fill(16*fillFlagK0);
2663 fHistPiPMonitorMCCuts[isSecd]->Fill(16*fillFlagL);
2664 fHistPiAPMonitorMCCuts[isSecd]->Fill(16*fillFlagAL);
aa3d4e29 2665
2666
6c301331 2667 Double_t phiMC = p0->Phi();
2668 Double_t etaMC = p0->Eta();
2669
2670 Double_t valTHnMC[4] = {massV0MC,ptV0MC,etaMC,phiMC};
2671 Double_t valTHnMCDauEta[4] = {massV0MC,ptV0MC,etaMCPos,etaMCNeg};
2672 Double_t valTHnMCDauPhi[5] = {massV0MC,phiMCPos,phiMCNeg,0.0,0.0};
aa3d4e29 2673
6c301331 2674 //-- Fill Particle histos --//
2675 if (pdgCode==310){//K0s
2676 fHistPiPiMonitorMCCuts->Fill(17);
aa3d4e29 2677
6c301331 2678 fHistPiPiEtaDMC[1]->Fill(etaMC00,ptV0MC);
2679 fHistPiPiEtaDMC[1]->Fill(etaMC01,ptV0MC);
aa3d4e29 2680
6c301331 2681 fHistPiPiMass->Fill(massV0MC);
2682 fHistPiPiMassVSPt->Fill(massV0MC,ptV0MC);
2683 fHistPiPiMassVSY->Fill(massV0MC,rapidity);
2684 // fHistPiPiPtDaughters->Fill(ptMinus,ptPlus);
2685 fHistPiPiPtVSY->Fill(rapidity,ptV0MC);
2686 Double_t ctTK0s=0.0,ctK0s=0.0;
2687 if(pV0MC>0.0) ctK0s=declength3d*0.497614/pV0MC;
2688 if(ptV0MC>0.0) ctTK0s=declength*0.497614/ptV0MC;
2689 fHistPiPiDecayLengthResolution->Fill(declength3d,declength);
2690 fHistPiPiDecayLengthVsPt->Fill(ptV0MC,declength);//ptV0MC,ctK0s);
2691 fHistPiPiDecayLengthVsCtau->Fill(massV0MC,ctTK0s);
2692 fHistPiPiDecayLengthVsMass->Fill(massV0MC,declength);
2693 //all V0s histo
2694 fHistArmenteros[isSecd]->Fill(alfa,qt);
2695 fHistV0RadiusZ[isSecd]->Fill(rMC2D,xyzMC[2]);
2696 fHistV0RadiusXY[isSecd]->Fill(xyzMC[0],xyzMC[1]);
2697 fHistV0RadiusZVSPt[isSecd]->Fill(ptV0MC,xyzMC[2]);
2698 // fHistPiPiPhiPosVsPtPosVsMass->Fill(massV0MC,ctTK0s,ptV0MC);//,ctK0s);//phiPosMC);//xxx
2699 fHistPiPiK0sVsLambdaMass->Fill(calcLambdamass,calcK0smass);
2700 fHistPiPiK0sVsALambdaMass->Fill(calcALambdamass,calcK0smass);
2701 fTHnFK0s->Fill(valTHnMC);
2702 fTHnFK0sDauEta->Fill(valTHnMCDauEta);
2703 fTHnFK0sDauPhi->Fill(valTHnMCDauPhi);
2704 }
2705 if (pdgCode==3122){ //Lambda
2706 fHistPiPMonitorMCCuts[isSecd]->Fill(17);
aa3d4e29 2707
6c301331 2708 fHistPiPEtaDMC[1]->Fill(etaMC00,ptV0MC);
2709 fHistPiPEtaDMC[1]->Fill(etaMC01,ptV0MC);
2710
2711 fHistPiPMassVSPt[isSecd]->Fill(massV0MC,ptV0MC);
2712 fHistPiPMass[isSecd]->Fill(massV0MC);
2713 fHistPiPMassVSY[isSecd]->Fill(massV0MC,rapidity);
2714 // fHistPiPPtDaughters[isSecd]->Fill(ptMinus,ptPlus);
2715 fHistPiPPtVSY[isSecd]->Fill(rapidity,ptV0MC);
aa3d4e29 2716
6c301331 2717
2718 Double_t ctTL=0.0, ctL=0.0;
2719 if(pV0MC>0.0) ctL=declength3d*1.115683/pV0MC;
2720 if(ptV0MC>0.0) ctTL=declength*1.115683/ptV0MC;
2721 fHistPiPDecayLengthResolution[0]->Fill(declength3d,declength);
2722 fHistPiPDecayLengthVsPt[isSecd]->Fill(ptV0MC,declength);//(ptV0MC,ctL);
2723 fHistPiPDecayLengthVsCtau[isSecd]->Fill(massV0MC,ctTL);
2724 fHistPiPDecayLengthVsMass[isSecd]->Fill(massV0MC,declength);
2725 //all V0s hito
2726 fHistArmenteros[isSecd]->Fill(alfa,qt);
2727 fHistV0RadiusZ[isSecd]->Fill(rMC2D,xyzMC[2]);
2728 fHistV0RadiusXY[isSecd]->Fill(xyzMC[0],xyzMC[1]);
2729 fHistV0RadiusZVSPt[isSecd]->Fill(ptV0MC,xyzMC[2]);
2730
2731 fHistPiPK0sVsLambdaMass->Fill(calcLambdamass,calcK0smass);
2732 fTHnFL->Fill(valTHnMC);
2733 fTHnFLDauEta->Fill(valTHnMCDauEta);
2734 fTHnFLDauPhi->Fill(valTHnMCDauPhi);
aa3d4e29 2735 }
6c301331 2736 if (pdgCode==-3122){ //AntiLambda
2737 fHistPiAPMonitorMCCuts[isSecd]->Fill(17);
2738
2739 fHistPiPEtaDMC[1]->Fill(etaMC00,ptV0MC);
2740 fHistPiPEtaDMC[1]->Fill(etaMC01,ptV0MC);
2741
2742 fHistPiAPMassVSPt[isSecd]->Fill(massV0MC,ptV0MC);
2743 fHistPiAPMass[isSecd]->Fill(massV0MC);
2744 fHistPiPMassVSY[isSecd]->Fill(massV0MC,rapidity);
2745 // fHistPiAPPtDaughters[isSecd]->Fill(ptMinus,ptPlus);
2746 fHistPiAPPtVSY[isSecd]->Fill(rapidity,ptV0MC);
2747
2748 Double_t ctTAL=0.0, ctAL=0.0;
2749 if(pV0MC>0.0) ctAL=declength3d*1.115683/pV0MC;
2750 if(ptV0MC>0.0) ctTAL=declength*1.115683/ptV0MC;
2751 fHistPiAPDecayLengthResolution[0]->Fill(declength3d,declength);
2752 fHistPiAPDecayLengthVsPt[isSecd]->Fill(ptV0MC,declength);//(ptV0MC,ctAL);
2753 fHistPiAPDecayLengthVsCtau[isSecd]->Fill(massV0MC,ctAL);
2754 fHistPiAPDecayLengthVsMass[isSecd]->Fill(massV0MC,ctTAL);//declength);
2755 //all V0s histo
2756 fHistArmenteros[isSecd]->Fill(alfa,qt);
2757 fHistV0RadiusZ[isSecd]->Fill(rMC2D,xyzMC[2]);
2758 fHistV0RadiusXY[isSecd]->Fill(xyzMC[0],xyzMC[1]);
2759 fHistV0RadiusZVSPt[isSecd]->Fill(ptV0MC,xyzMC[2]);
2760 fHistV0RadiusXYVSY[isSecd]->Fill(rapidity,rMC2D);
2761 fHistPiAPK0sVsALambdaMass->Fill(calcALambdamass,calcK0smass);
2762 // if(isSecd <1) fHistPiPPhiPosVsPtPosVsMass->Fill(massV0MC,ctTL,ptV0MC);//,ctK0s);//phiPosMC);//xxx
2763 //else fHistPiAPPhiPosVsPtPosVsMass->Fill(massV0MC,ctTL,ptV0MC);//,ctK0s);//phiPosMC);//xxx
2764 //fHistPiAPPhiPosVsPtPosVsMass->Fill(massV0MC,ctTL,ptV0MC);//,ctK0s);//phiPosMC);//xxx
2765 fTHnFAL->Fill(valTHnMC);
2766 fTHnFALDauEta->Fill(valTHnMCDauEta);
2767 fTHnFALDauPhi->Fill(valTHnMCDauPhi);
2768 }
2769 }//MC true ana
2770 else{// V0 reco ana
2771 V0RecoLoop(id0,id1,isSecd,pdgCode,ptV0MC,pdgMother,ptXiMother,declength);
2772 }
aa3d4e29 2773
6c301331 2774 }//end MC stack loop
2775
2776}
2777//________________________________________________________________________
2778void AliAnalysisTaskV0ForRAA::V0RecoLoop(Int_t id0,Int_t id1,Int_t isSecd,Int_t what,Double_t ptV0MC, Int_t pdgMother,Double_t ptXiMother,Double_t declengthV0MC){
2779 //loop over reconstructed particles
aa3d4e29 2780
2781
6c301331 2782 //--------------------- define variables -----------------------//
2783 Double_t pp[3];
2784 Double_t pm[3];
2785 Double_t xr[3];
aa3d4e29 2786
6c301331 2787 Double_t massPi=0.13957018;
2788 Double_t massP=0.93827203;
aa3d4e29 2789
6c301331 2790 TLorentzVector positivesMIP;
2791 TLorentzVector negativesMIAP;
2792 TLorentzVector positivesMIPi;
2793 TLorentzVector negativesMIPi;
aa3d4e29 2794
6c301331 2795 /*
2796 AliKFParticle::SetField(fESD->GetMagneticField());
2797 AliKFVertex primVtx(*(fESD->GetPrimaryVertex()));
2798 AliKFVertex primVtxImproved = primVtx;
2799
2800 AliKFParticle* negPiKF=NULL;
2801 AliKFParticle* posPiKF=NULL;
2802 AliKFParticle* posPKF=NULL;
2803 AliKFParticle* negAPKF=NULL;
2804 */
aa3d4e29 2805
6c301331 2806 AliESDtrack* trackPos=NULL;
2807 AliESDtrack* trackNeg=NULL;
2808 AliESDtrack* trackPosTest = NULL;
2809 AliESDtrack* trackNegTest =NULL;
aa3d4e29 2810
6c301331 2811 Double_t primaryVtxPosition[3];
2812 primaryVtxPosition[0] = fESD->GetPrimaryVertex()->GetXv();
2813 primaryVtxPosition[1] = fESD->GetPrimaryVertex()->GetYv();
2814 primaryVtxPosition[2] = fESD->GetPrimaryVertex()->GetZv();
aa3d4e29 2815
6c301331 2816 Int_t nV0 = fESD->GetNumberOfV0s();
2817 const Int_t sizenV0 = nV0;
2818 AliESDv0 * v0MIs=NULL;
aa3d4e29 2819
aa3d4e29 2820
6c301331 2821 // Int_t on =0,off=0;
2822 Bool_t stopLoop = kFALSE;
2823 Int_t trackID[sizenV0][2];
2824 //---------------------- for MC mode only ------------------//
2825 AliStack *stackRec = NULL;
2826 if(fMCMode && !fMCTruthMode) stackRec = fMCev->Stack();
2827
2828 //------------------------ V0 reco loop --------------------//
2829 for(Int_t iV0MI = 0; iV0MI < nV0; iV0MI++) {//V0 loop
2830
2831 //-- get V0 info --//
2832 v0MIs = fESD->GetV0(iV0MI);
2833 if(!v0MIs ) continue;
2834
2835 fHistPiPiMonitorCuts->Fill(1);
2836 fHistPiPMonitorCuts[isSecd]->Fill(1);
2837 fHistPiAPMonitorCuts[isSecd]->Fill(1);
2838
2839 if(stopLoop && fStopLoop) break;
2840 //------------ get references of daughters --------------//
2841 //-- esd tracks --//
2842 trackPosTest = fESD->GetTrack(v0MIs->GetPindex());
2843 trackNegTest = fESD->GetTrack(v0MIs->GetNindex());
aa3d4e29 2844
6c301331 2845 if ( trackPosTest->GetSign() == trackNegTest->GetSign()) continue;
aa3d4e29 2846
6c301331 2847 fHistPiPiMonitorCuts->Fill(2);
2848 fHistPiPMonitorCuts[isSecd]->Fill(2);
2849 fHistPiAPMonitorCuts[isSecd]->Fill(2);
2850
2851 //-- onthefly selection --//
2852 Bool_t onthefly = v0MIs->GetOnFlyStatus();
2853 if(fOntheFly!=onthefly) continue;
2854
2855 fHistPiPiMonitorCuts->Fill(3);
2856 fHistPiPMonitorCuts[isSecd]->Fill(3);
2857 fHistPiAPMonitorCuts[isSecd]->Fill(3);
aa3d4e29 2858
6c301331 2859 //-- for MC mode --//
2860 if(fMCMode){
2861 //check MC labels (and find partners for MC truth V0 daughters for fMCTruthMode=kTRUE)
2862 if(!GetMCTruthPartner(trackPosTest,trackNegTest,id0,id1)) continue;
2863 else stopLoop = kTRUE;
2864 }
2865 else{
2866 //check if V0 was alread found
2867 if(fStopLoop){
2868 if(CheckMultipleV0Candidates(v0MIs,iV0MI,trackID)) continue;
76a4d7a7 2869 }
6c301331 2870 }
aa3d4e29 2871
6c301331 2872 fHistPiPiMonitorCuts->Fill(4);
2873 fHistPiPMonitorCuts[isSecd]->Fill(4);
2874 fHistPiAPMonitorCuts[isSecd]->Fill(4);
2875
5842a526 2876
6c301331 2877 //-- get eta from V0 daughters --//
2878 Double_t posDaughterEta=0.0;
2879 Double_t negDaughterEta=0.0;
2880 Double_t posDaughterPhi=0.0;
2881 Double_t negDaughterPhi=0.0;
5842a526 2882
6c301331 2883 Double_t eta00 = trackPosTest->Eta();
2884 Double_t eta01 = trackNegTest->Eta();
5842a526 2885
aa3d4e29 2886
6c301331 2887 Int_t indexPos = 0,indexNeg=0;
2888 //---------- check sign assignment for daughters --------//
2889 Bool_t switchSign = kFALSE;
aa3d4e29 2890
6c301331 2891 if( trackPosTest->GetSign() >0){//pos
2892 indexPos = v0MIs->GetPindex();
2893 indexNeg = v0MIs->GetNindex();
2894
2895 v0MIs->GetPPxPyPz(pp[0],pp[1],pp[2]);
2896 v0MIs->GetNPxPyPz(pm[0],pm[1],pm[2]);
2897
2898 posDaughterEta = v0MIs->GetParamP()->Eta();
2899 negDaughterEta = v0MIs->GetParamN()->Eta();
2900 posDaughterPhi = v0MIs->GetParamP()->Phi();
2901 negDaughterPhi = v0MIs->GetParamN()->Phi();
2902 /*
2903 if (negPiKF) delete negPiKF; negPiKF=NULL;
2904 if (posPiKF) delete posPiKF; posPiKF=NULL;
2905 if (posPKF) delete posPKF; posPKF=NULL;
2906 if (negAPKF) delete negAPKF; negAPKF=NULL;
2907
2908 negPiKF = new AliKFParticle( *(v0MIs->GetParamN()) ,-211);
2909 posPiKF = new AliKFParticle( *(v0MIs->GetParamP()) ,211);
2910 posPKF = new AliKFParticle( *(v0MIs->GetParamP()) ,2212);
2911 negAPKF = new AliKFParticle( *(v0MIs->GetParamN()) ,-2212);
2912 */
aa3d4e29 2913
6c301331 2914 }
2915 if( trackPosTest->GetSign() <0){//neg
2916
2917 indexPos = v0MIs->GetNindex();
2918 indexNeg = v0MIs->GetPindex();
2919
2920 v0MIs->GetNPxPyPz(pp[0],pp[1],pp[2]);
2921 v0MIs->GetPPxPyPz(pm[0],pm[1],pm[2]);
2922
2923 posDaughterEta = v0MIs->GetParamN()->Eta();
2924 negDaughterEta = v0MIs->GetParamP()->Eta();
2925 posDaughterPhi = v0MIs->GetParamN()->Phi();
2926 negDaughterPhi = v0MIs->GetParamP()->Phi();
2927 /*
2928 if (negPiKF) delete negPiKF; negPiKF=NULL;
2929 if (posPiKF) delete posPiKF; posPiKF=NULL;
2930 if (posPKF) delete posPKF; posPKF=NULL;
2931 if (negAPKF) delete negAPKF; negAPKF=NULL;
aa3d4e29 2932
aa3d4e29 2933
6c301331 2934 negPiKF = new AliKFParticle( *(v0MIs->GetParamP()) ,-211);
2935 posPiKF = new AliKFParticle( *(v0MIs->GetParamN()) ,211);
2936 posPKF = new AliKFParticle( *(v0MIs->GetParamN()) ,2212);
2937 negAPKF = new AliKFParticle( *(v0MIs->GetParamP()) ,-2212);
2938 */
2939
2940 switchSign = kTRUE;
2941 eta01 = trackPosTest->Eta();
2942 eta00 = trackNegTest->Eta();
aa3d4e29 2943
6c301331 2944 }
aa3d4e29 2945
6c301331 2946 trackPos =fESD->GetTrack(indexPos);
2947 trackNeg =fESD->GetTrack(indexNeg);
aa3d4e29 2948
6c301331 2949 // ------------- calc masses and 4 vectors -------------- //
2950 //K0
2951 positivesMIPi.SetXYZM(pp[0],pp[1],pp[2],massPi);
2952 negativesMIPi.SetXYZM(pm[0],pm[1],pm[2],massPi);
2953 TLorentzVector v0K0=positivesMIPi+negativesMIPi;
aa3d4e29 2954
6c301331 2955 //Lambda
2956 positivesMIP.SetXYZM(pp[0],pp[1],pp[2],massP);
2957 TLorentzVector v0Lambda=positivesMIP+negativesMIPi;
aa3d4e29 2958
6c301331 2959 //Anitlambda
2960 negativesMIAP.SetXYZM(pm[0],pm[1],pm[2],massP);
2961 TLorentzVector v0ALambda=positivesMIPi+negativesMIAP;
aa3d4e29 2962
6c301331 2963 //---------------------AliKFParticle ---------------------//
2964 /*
2965 Double_t chi2K0C=0.0;
2966 Double_t chi2LambdaC=0.0;
2967 Double_t chi2ALambdaC=0.0;
aa3d4e29 2968
2969
6c301331 2970 AliKFParticle v0K0KF;
2971 v0K0KF +=(*negPiKF);
2972 v0K0KF +=(*posPiKF);
2973 //v0K0C.SetVtxGuess(xr[0],xr[1],xr[2]);
2974 v0K0KF.SetProductionVertex(primVtxImproved);
aa3d4e29 2975
6c301331 2976 AliKFParticle v0LambdaKF;
2977 v0LambdaKF +=(*negPiKF);
2978 v0LambdaKF +=(*posPKF);
2979 //v0LambdaC.SetVtxGuess(xr[0],xr[1],xr[2]);
2980 v0LambdaKF.SetProductionVertex(primVtxImproved);
aa3d4e29 2981
6c301331 2982 AliKFParticle v0ALambdaKF;
2983 v0ALambdaKF +=(*negAPKF);
2984 v0ALambdaKF +=(*posPiKF);
2985 //v0ALambdaC.SetVtxGuess(xr[0],xr[1],xr[2]);
2986 v0ALambdaKF.SetProductionVertex(primVtxImproved);
aa3d4e29 2987
6c301331 2988 if( v0K0KF.GetNDF() != 0) {
2989 chi2K0C = v0K0KF.GetChi2()/v0K0KF.GetNDF();
76a4d7a7 2990 }
6c301331 2991
2992 Double_t chi2LambdaC=100000.;
2993 if( v0LambdaKF.GetNDF() != 0) {
2994 chi2LambdaC = v0LambdaKF.GetChi2()/v0LambdaKF.GetNDF();
76a4d7a7 2995 }
6c301331 2996
2997 Double_t chi2ALambdaC=100000.;
2998 if( v0ALambdaKF.GetNDF() != 0) {
2999 chi2ALambdaC = v0ALambdaKF.GetChi2()/v0ALambdaKF.GetNDF();
76a4d7a7 3000 }
6c301331 3001 */
3002
3003 // ----------------- for MC mode ------------------------ //
3004 Bool_t fillK0sMC = kTRUE;
3005 Bool_t fillLambdaMC = kTRUE;
3006 Bool_t fillALambdaMC = kTRUE;
3007
3008 if(fMCMode && fMCTruthMode) {
3009 if(what == 310) {
3010 fillLambdaMC = kFALSE;
3011 fillALambdaMC = kFALSE;
3012 }
3013 else if(what == 3122){
3014 fillALambdaMC = kFALSE;
3015 fillK0sMC = kFALSE;
11e769d9 3016 }
6c301331 3017 else if(what == -3122){
3018 fillLambdaMC = kFALSE;
3019 fillK0sMC = kFALSE;
3020 }
3021 }
5842a526 3022
6c301331 3023 //----------------- prepare for V0 ana ------------------//
3024 TVector3 ppTrack(pp);
3025 TVector3 pmTrack(pm);
aa3d4e29 3026
6c301331 3027 //-- momenta --//
3028 Double_t ptK0s = v0K0.Pt();
3029 Double_t ptLambda = v0Lambda.Pt();
3030 Double_t ptALambda = v0ALambda.Pt();
3031
3032 Double_t pK0s = v0K0.P();
3033 Double_t pLambda = v0Lambda.P();
3034 Double_t pALambda = v0ALambda.P();
aa3d4e29 3035
6c301331 3036 Double_t posDaughterP = ppTrack.Mag();
3037 Double_t negDaughterP = pmTrack.Mag();
aa3d4e29 3038
6c301331 3039 v0MIs->GetXYZ(xr[0],xr[1],xr[2]);
5842a526 3040
6c301331 3041 // Double_t posDaughterPt = ppTrack.Pt();
3042 // Double_t negDaughterPt = pmTrack.Pt();
3043
3044 /*
3045 Double_t v0sPt=v0MIs->Pt();
3046 if(what == 310 || what ==0){
3047 fHistPiPiEtaDReco[0]->Fill(posDaughterPt,v0sPt);
3048 fHistPiPiEtaDReco[0]->Fill(negDaughterPt,v0sPt);
76a4d7a7 3049 }
6c301331 3050 if(fabs(what) == 3122 || what == 0){
3051 fHistPiPEtaDReco[0]->Fill(posDaughterPt,v0sPt);
3052 fHistPiPEtaDReco[0]->Fill(negDaughterPt,v0sPt);
76a4d7a7 3053 }
6c301331 3054 */
3055
5842a526 3056
aa3d4e29 3057
6c301331 3058 //--------------------------------------------------------- general cuts --------------------------------------------------------------//
3059 //-- track cuts for daughters --//
3060 //-- eta cut --//
3061 if( fabs(posDaughterEta) > fEtaCutMCDaughtersVal || fabs(negDaughterEta) > fEtaCutMCDaughtersVal) continue;
3062 fHistPiPiMonitorCuts->Fill(5);
3063 fHistPiPMonitorCuts[isSecd]->Fill(5);
3064 fHistPiAPMonitorCuts[isSecd]->Fill(5);
3065
3066 //-- esd track cuts --//
3067 //K0s
3068 if( ptK0s > fPtTPCCut){
3069 if(fESDTrackCuts){
3070 if(!fESDTrackCuts->AcceptTrack(trackPosTest) || !fESDTrackCuts->AcceptTrack(trackNegTest)) continue;
3071 else fHistPiPiMonitorCuts->Fill(6);
3072 }
3073 }
3074 else{
3075 if(fESDTrackCutsLowPt){
3076 if(!fESDTrackCutsLowPt->AcceptTrack(trackPosTest) || !fESDTrackCutsLowPt->AcceptTrack(trackNegTest)) continue;
3077 }
3078 }
3079 //Lambda
3080 if(ptLambda > fPtTPCCut){
3081 if(fESDTrackCuts && fESDTrackCutsCharged){
3082 if(!fESDTrackCutsCharged->AcceptTrack(trackPosTest) || !fESDTrackCuts->AcceptTrack(trackNegTest)) continue;
3083 else fHistPiPMonitorCuts[isSecd]->Fill(6);
3084 }
3085 }
3086 else{
3087 if(fESDTrackCutsLowPt){
3088 if(!fESDTrackCutsLowPt->AcceptTrack(trackPosTest) || !fESDTrackCutsLowPt->AcceptTrack(trackNegTest)) continue;
3089 }
3090 }
3091 //ALambda
3092 if(ptALambda > fPtTPCCut){
3093 if(fESDTrackCuts && fESDTrackCutsCharged){
3094 if(!fESDTrackCuts->AcceptTrack(trackPosTest) || !fESDTrackCutsCharged->AcceptTrack(trackNegTest)) continue;
3095 else fHistPiAPMonitorCuts[isSecd]->Fill(6);
3096 }
3097 }
3098 else{
3099 if(fESDTrackCutsLowPt){
3100 if(!fESDTrackCutsLowPt->AcceptTrack(trackPosTest)|| !fESDTrackCutsLowPt->AcceptTrack(trackNegTest)) continue;
3101 }
3102 }
3103
3104
3105 //------------------------ detector values -------------------------------//
3106 //-- TPC ITS values pos --//
3107 Int_t nclsTPCPos = trackPos->GetNcls(1);
3108 Int_t nclsTPCFindablePos = trackPos->GetTPCNclsF();
3109 Int_t nclsITSPos = trackPos->GetNcls(0);
3110 Double_t chi2PerClusterITSPos = -1.0;
3111 if(nclsITSPos>0) chi2PerClusterITSPos = trackPos->GetITSchi2()/Double_t(nclsITSPos);
3112 Double_t crossedRowsTPCPos = trackPos->GetTPCCrossedRows();
3113
3114 //-- TPC ITS values neg --//
3115 Int_t nclsTPCNeg = trackNeg->GetNcls(1);
3116 Int_t nclsTPCFindableNeg = trackNeg->GetTPCNclsF();
3117 Int_t nclsITSNeg = trackNeg->GetNcls(0);
3118 Double_t chi2PerClusterITSNeg = -1.0;
3119 if(nclsITSNeg>0) chi2PerClusterITSNeg =trackNeg->GetITSchi2()/Double_t(nclsITSNeg);
3120 Double_t crossedRowsTPCNeg = trackNeg->GetTPCCrossedRows();
3121
3122 Double_t ratio = 10.0;
3123 if(nclsTPCFindableNeg >0.0) ratio =double(crossedRowsTPCNeg)/ double(nclsTPCFindableNeg);
aa3d4e29 3124
6c301331 3125 Double_t ratioPos = 10.0;
3126 if(nclsTPCFindablePos >0.0) ratioPos =double(crossedRowsTPCPos)/ double(nclsTPCFindablePos);
aa3d4e29 3127
6c301331 3128 Double_t ratioFoFi = 10.0;
3129 if(nclsTPCFindableNeg >0.0) ratioFoFi =double(nclsTPCNeg)/ double(nclsTPCFindableNeg);
aa3d4e29 3130
6c301331 3131 Double_t ratioFoFiPos = 10.0;
3132 if(nclsTPCFindablePos >0.0) ratioFoFiPos =double(nclsTPCPos)/ double(nclsTPCFindablePos);
3133
3134 //track length TPC cut
3135 Double_t lengthTPCPos = trackPos->GetLengthInActiveZone(0,3,236, fESD->GetMagneticField(),0,0);//-5 ,0,0);
3136 Double_t lengthTPCNeg = trackNeg->GetLengthInActiveZone(0,3,236, fESD->GetMagneticField(),0,0);//-5 ,0,0);
3137 if(fCutMITrackLength && lengthTPCPos <= fCutMITrackLengthLengthF * (130.0 - 5.0*fabs(trackPos->GetSigned1Pt()))) continue;
3138 fHistPiPiMonitorCuts->Fill(7);
3139 fHistPiPMonitorCuts[isSecd]->Fill(7);
3140 fHistPiAPMonitorCuts[isSecd]->Fill(7);
3141 if(fCutMITrackLength && lengthTPCNeg <= fCutMITrackLengthLengthF * (130.0 - 5.0*fabs(trackNeg->GetSigned1Pt()))) continue;
3142 fHistPiPiMonitorCuts->Fill(8);
3143 fHistPiPMonitorCuts[isSecd]->Fill(8);
3144 fHistPiAPMonitorCuts[isSecd]->Fill(8);
3145
3146 //crossed rows TPC cut
3147 if(fCutMICrossedR && trackPos->GetTPCClusterInfo(3,1) <= fCutMICrossedRLengthF *(130.0 - 5.0*fabs(trackPos->GetSigned1Pt()))) continue;
3148 fHistPiPiMonitorCuts->Fill(9);
3149 fHistPiPMonitorCuts[isSecd]->Fill(9);
3150 fHistPiAPMonitorCuts[isSecd]->Fill(9);
3151 if(fCutMICrossedR && trackNeg->GetTPCClusterInfo(3,1) <= fCutMICrossedRLengthF *(130.0 - 5.0*fabs(trackNeg->GetSigned1Pt()))) continue;
3152 fHistPiPiMonitorCuts->Fill(10);
3153 fHistPiPMonitorCuts[isSecd]->Fill(10);
3154 fHistPiAPMonitorCuts[isSecd]->Fill(10);
3155
3156 // ncls TPC cut
3157 if(fCutMITPCncls && nclsTPCPos <= 0.6*(130.0 - 5.0*fabs(trackPos->GetSigned1Pt()))) continue;
3158 fHistPiPiMonitorCuts->Fill(11);
3159 fHistPiPMonitorCuts[isSecd]->Fill(11);
3160 fHistPiAPMonitorCuts[isSecd]->Fill(11);
3161 if(fCutMITPCncls && nclsTPCNeg <= 0.6*(130.0 - 5.0*fabs(trackNeg->GetSigned1Pt()))) continue;
3162 fHistPiPiMonitorCuts->Fill(12);
3163 fHistPiPMonitorCuts[isSecd]->Fill(12);
3164 fHistPiAPMonitorCuts[isSecd]->Fill(12);
3165
aa3d4e29 3166
3167
6c301331 3168 //found
3169 if(fMoreNclsThanRows && (crossedRowsTPCPos < nclsTPCPos || crossedRowsTPCNeg < nclsTPCNeg )) continue;
3170 fHistPiPiMonitorCuts->Fill(13);
3171 fHistPiPMonitorCuts[isSecd]->Fill(13);
3172 fHistPiAPMonitorCuts[isSecd]->Fill(13);
aa3d4e29 3173
6c301331 3174 if(fMoreNclsThanFindable && (nclsTPCFindablePos < nclsTPCPos || nclsTPCFindableNeg < nclsTPCNeg )) continue;
3175 fHistPiPiMonitorCuts->Fill(14);
3176 fHistPiPMonitorCuts[isSecd]->Fill(14);
3177 fHistPiAPMonitorCuts[isSecd]->Fill(14);
3178
3179 if(fMoreNclsThanFindableMax && ( nclsTPCPos < (nclsTPCFindablePos -60.0) || nclsTPCNeg < (nclsTPCFindableNeg - 60.0) )) continue;
3180 // if(chi2PerClusterITSNeg > fChi2PerClusterITS || chi2PerClusterITSPos > fChi2PerClusterITS ) continue;
3181 fHistPiPiMonitorCuts->Fill(15);
3182 fHistPiPMonitorCuts[isSecd]->Fill(15);
3183 fHistPiAPMonitorCuts[isSecd]->Fill(15);
aa3d4e29 3184
6c301331 3185 if(ratio > fRatioMaxCRowsOverFindable || ratioPos > fRatioMaxCRowsOverFindable) continue;
aa3d4e29 3186
6c301331 3187 if(ratioFoFi < fRatioFoundOverFindable || ratioFoFiPos < fRatioFoundOverFindable) continue;
3188 fHistPiPiMonitorCuts->Fill(16);
3189 fHistPiPMonitorCuts[isSecd]->Fill(16);
3190 fHistPiAPMonitorCuts[isSecd]->Fill(16);
aa3d4e29 3191
6c301331 3192 Bool_t cutOKITSNegNeg =kTRUE;
3193 Bool_t cutOKITSPosPos =kTRUE;
5842a526 3194
6c301331 3195 Bool_t cutOKITSNegPos =kTRUE;
3196 Bool_t cutOKITSPosNeg =kTRUE;
5842a526 3197
6c301331 3198 if(nclsITSNeg < fMinNCLSITSNeg || nclsITSNeg > fMaxNCLSITSNeg){
3199 if(!fSwitchCaseITSCls) continue;
3200 else cutOKITSNegNeg = kFALSE;
3201 }
76a4d7a7 3202
6c301331 3203 fHistPiPiMonitorCuts->Fill(17);
3204 fHistPiPMonitorCuts[isSecd]->Fill(17);
3205 fHistPiAPMonitorCuts[isSecd]->Fill(17);
76a4d7a7 3206
6c301331 3207 //2D decay radius of V0
3208 Double_t dim2V0Radius= sqrt( pow(xr[0] - primaryVtxPosition[0],2.0)
3209 +pow(xr[1] - primaryVtxPosition[1],2.0));//TMath::Sqrt(xr[0]*xr[0]+xr[1]*xr[1]);
3210
3211 if(nclsITSPos < fMinNCLSITSPos || nclsITSPos > fMaxNCLSITSPos){
3212 if(dim2V0Radius >= fDecRadCutITSMin && dim2V0Radius < fDecRadCutITSMax){//only for a certain decay radius 2D in xy
3213 if(!fSwitchCaseITSCls) continue;
3214 else cutOKITSPosPos = kFALSE;
5842a526 3215 }
6c301331 3216 }
76a4d7a7 3217
6c301331 3218 if(fSwitchCaseITSCls){
3219 if(nclsITSPos < fMinNCLSITSNeg || nclsITSPos > fMaxNCLSITSNeg){
3220 if(dim2V0Radius >= fDecRadCutITSMin && dim2V0Radius < fDecRadCutITSMax){//only for a certain decay radius 2D in xy
3221 cutOKITSPosNeg = kFALSE;
76a4d7a7 3222 }
76a4d7a7 3223 }
6c301331 3224 if(nclsITSNeg < fMinNCLSITSPos || nclsITSNeg > fMaxNCLSITSPos){
3225 if(dim2V0Radius >= fDecRadCutITSMin && dim2V0Radius < fDecRadCutITSMax){//only for a certain decay radius 2D in xy
3226 cutOKITSNegPos = kFALSE;
3227 }
3228 }
3229
3230 if(!(cutOKITSNegPos && cutOKITSPosNeg) && !(cutOKITSNegNeg && cutOKITSPosPos) ) continue;
3231 }
aa3d4e29 3232
6c301331 3233 fHistPiPiMonitorCuts->Fill(18);
3234 fHistPiPMonitorCuts[isSecd]->Fill(18);
3235 fHistPiAPMonitorCuts[isSecd]->Fill(18);
aa3d4e29 3236
5842a526 3237
6c301331 3238
5842a526 3239
3240
6c301331 3241 //--------------------- PID ----------------------------//
3242 //-- dEdx --//
3243 Float_t nSigmaTPCtrackPosToPion = 0.0;
3244 Float_t nSigmaTPCtrackNegToPion = 0.0;
3245 Float_t nSigmaTPCtrackPosToProton = 0.0;
3246 Float_t nSigmaTPCtrackNegToProton = 0.0;
aa3d4e29 3247
5842a526 3248
6c301331 3249 if(fESDpid){
3250 nSigmaTPCtrackPosToPion = fabs(fESDpid->NumberOfSigmasTPC(trackPos,AliPID::kPion));
3251 nSigmaTPCtrackNegToPion = fabs(fESDpid->NumberOfSigmasTPC(trackNeg,AliPID::kPion));
3252 nSigmaTPCtrackPosToProton = fabs(fESDpid->NumberOfSigmasTPC(trackPos,AliPID::kProton));
3253 nSigmaTPCtrackNegToProton = fabs(fESDpid->NumberOfSigmasTPC(trackNeg,AliPID::kProton));
3254 }
5842a526 3255
6c301331 3256 Bool_t pipidEdx=kTRUE;
3257 Bool_t pipdEdx =kTRUE;
3258 Bool_t piapdEdx=kTRUE;
5842a526 3259
6c301331 3260 Double_t tpcsigPos= trackPos->GetTPCsignal();
3261 Double_t tpcsigNeg= trackNeg->GetTPCsignal();
5842a526 3262
6c301331 3263 /*
3264 Double_t tpcsigNPos= trackPos->GetTPCsignalN();
3265 Double_t tpcsigNNeg= trackNeg->GetTPCsignalN();
3266 */
3267 // GetYAt(Double_t x, Double_t b, Double_t &y) or GetY()
3268 Double_t posY = trackPos->GetInnerParam()->GetY();
3269 Double_t posZ = trackPos->GetInnerParam()->GetZ();
3270 Double_t negY = trackNeg->GetInnerParam()->GetY();
3271 Double_t negZ = trackNeg->GetInnerParam()->GetZ();
3272 Double_t distTPCinner = sqrt(pow((posY-negY),2.0)+pow((posZ-negZ),2.0));
3273 if(distTPCinner < fDistanceTPCInner) continue;
3274 fHistPiPiMonitorCuts->Fill(19);
3275 fHistPiPMonitorCuts[isSecd]->Fill(19);
3276 fHistPiAPMonitorCuts[isSecd]->Fill(19);
3277
3278 //AliExternalTrackParam *extTParPos = (AliExternalTrackParam*)trackPos->GetTPCInnerParam();
3279 //Double_t tpcMomPos = extTParPos->GetP();
3280 Double_t tpcMomPos = trackPos->GetInnerParam()->GetP();
3281 // AliExternalTrackParam *extTParNeg = (AliExternalTrackParam*)trackNeg->GetTPCInnerParam();
3282 // Double_t tpcMomNeg = extTParNeg->GetP();
3283 Double_t tpcMomNeg = trackNeg->GetInnerParam()->GetP();
5842a526 3284
6c301331 3285 //-- dedx cut --//
3286 if(fUsePID){
3287 if(fabs(posDaughterP)<fPPIDcut && tpcsigPos < 5.0){//no zero dedx values!
3288 pipidEdx =kFALSE;//k0s
3289 piapdEdx =kFALSE;//antilambda
3290 }
3291
3292 if(fabs(negDaughterP)<fPPIDcut && tpcsigNeg < 5.0){//no zero dedx values!
3293 pipidEdx =kFALSE;//k0s
3294 pipdEdx =kFALSE;//lambda
3295 }
3296
3297 if(fabs(posDaughterP)<fPPIDcut && (nSigmaTPCtrackPosToProton > fNSigma || tpcsigPos < 5.0)) pipdEdx =kFALSE;//lambda
3298 if(fabs(negDaughterP)<fPPIDcut && (nSigmaTPCtrackNegToProton > fNSigma || tpcsigNeg < 5.0)) piapdEdx =kFALSE;//antilambda
3299
3300 if(fabs(fNSigma-fNSigma2) > 0.001){
3301 if(fabs(posDaughterP) >= fPPIDcut && (nSigmaTPCtrackPosToProton > fNSigma2 || tpcsigPos < 5.0)) pipdEdx =kFALSE;//lambda
3302 if(fabs(negDaughterP) >= fPPIDcut && (nSigmaTPCtrackNegToProton > fNSigma2 || tpcsigNeg < 5.0)) piapdEdx =kFALSE;//antilambda
3303
3304 if(fabs(posDaughterP) >= fPPIDcut && tpcsigPos < 5.0){//no zero dedx values!
5842a526 3305 pipidEdx =kFALSE;//k0s
3306 piapdEdx =kFALSE;//antilambda
3307 }
6c301331 3308
3309 if(fabs(negDaughterP) >= fPPIDcut && tpcsigNeg < 5.0){//no zero dedx values!
5842a526 3310 pipidEdx =kFALSE;//k0s
3311 pipdEdx =kFALSE;//lambda
3312 }
6c301331 3313
3314 }
3315
3316 }
76a4d7a7 3317
76a4d7a7 3318
6c301331 3319 if(fUsePIDPion){
3320 if(fabs(posDaughterP)<fPPIDcut && nSigmaTPCtrackPosToPion > fNSigma ){
3321 pipidEdx =kFALSE;//k0s
3322 }
11e769d9 3323
6c301331 3324 if(fabs(negDaughterP)<fPPIDcut && nSigmaTPCtrackNegToPion > fNSigma ){
3325 pipidEdx =kFALSE;//k0s
76a4d7a7 3326 }
6c301331 3327 }
5842a526 3328
3329
6c301331 3330
3331 //------------------- DCA ---------------------//
5842a526 3332
6c301331 3333 //-- between the daughters --//
3334 Double_t dcaDaughters = v0MIs->GetDcaV0Daughters();
3335
3336 //-- to primary vertex --//
3337 /*
3338 Float_t bP[2],bN[2];
3339 Float_t bCovP[3],bCovN[3];
3340
3341 trackPos->GetImpactParameters(bP,bCovP);
3342 trackNeg->GetImpactParameters(bN,bCovN);
3343
3344 if (bCovP[0]<=0 || bCovP[2]<=0) {
3345 AliDebug(1, "Estimated b resolution lower or equal zero!");
3346 bCovP[0]=0; bCovP[2]=0;
3347 }
3348 if (bCovN[0]<=0 || bCovN[2]<=0) {
3349 AliDebug(1, "Estimated b resolution lower or equal zero!");
3350 bCovN[0]=0; bCovN[2]=0;
3351 }
3352
3353 Float_t dcaToVertexZPos = bP[1];//Float_t dcaToVertexXY = b[0];
3354 Float_t dcaToVertexZNeg = bN[1];//Float_t dcaToVertexXY = b[0];
3355 */
3356 /*
3357 Float_t dcaToVertexZPos = 0.0, dcaToVertexZNeg = 0.0;
3358 Float_t bP=0.0,bN=0.0;
3359 trackPos->GetImpactParameters(bP,dcaToVertexZPos);
3360 trackNeg->GetImpactParameters(bN,dcaToVertexZNeg);
3361 */
aa3d4e29 3362
6c301331 3363 Double_t dcaToVertexZPos = 0.0, dcaToVertexZNeg = 0.0;
3364 AliExternalTrackParam *parPos = NULL;
3365 AliExternalTrackParam *parNeg = NULL;
3366 Double_t dcaYZP[2],dcaYZN[2],covar[3];
3367 if(!switchSign){
3368 parPos = new AliExternalTrackParam( *v0MIs->GetParamP());
3369 parNeg = new AliExternalTrackParam( *v0MIs->GetParamN());
3370 }
3371 else{
3372 parPos = new AliExternalTrackParam( *v0MIs->GetParamN());
3373 parNeg = new AliExternalTrackParam( *v0MIs->GetParamP());
3374 }
3375 Bool_t checkProp = parPos->PropagateToDCA(fESD->GetPrimaryVertex(),fESD->GetMagneticField(),40.0,dcaYZP,covar);
3376 dcaToVertexZPos = dcaYZP[1];
3377 delete parPos;
3378 checkProp = parNeg->PropagateToDCA(fESD->GetPrimaryVertex(),fESD->GetMagneticField(),40.0,dcaYZN,covar);
3379 dcaToVertexZNeg = dcaYZN[1];
3380 delete parNeg;
3381
3382
3383 Double_t dcaPosToVertex=0.0,dcaNegToVertex=0.0;
3384 Double_t dzPos=(primaryVtxPosition[0]-xr[0])*ppTrack.Y() - (primaryVtxPosition[1]-xr[1])*ppTrack.X();
3385 dcaPosToVertex=TMath::Sqrt(dzPos*dzPos/(pow(ppTrack.X(),2)+pow(ppTrack.Y(),2)));
3386 Double_t dzNeg=(primaryVtxPosition[0]-xr[0])*pmTrack.Y() - (primaryVtxPosition[1]-xr[1])*pmTrack.X();
3387 dcaNegToVertex=TMath::Sqrt(dzNeg*dzNeg/(pow(pmTrack.X(),2)+pow(pmTrack.Y(),2)));
3388
3389 // Double_t dcaPosToVertex[3];dcaNegToVertex[3];
3390 // trackPos->GetImpactParameters(dcaPosToVertex[0],dcaPosToVertex[1]);
3391 // trackNeg->GetImpactParameters(dcaNegToVertex[0],dcaNegToVertex[1]);
3392
3393 // dcaPosToVertex = TMath::Sqrt(dcaPosToVertex[0]*dcaPosToVertex[0]+dcaPosToVertex[1]*dcaPosToVertex[1]);
3394 // dcaNegToVertex = TMath::Sqrt(dcaNegToVertex[0]*dcaNegToVertex[0]+dcaNegToVertex[1]*dcaNegToVertex[1]);
3395
3396 // dcaPosToVertex = posPKF->GetDistanceFromVertexXY(primaryVtxPosition);
3397 // dcaNegToVertex = negPiKF->GetDistanceFromVertexXY(primaryVtxPosition);
3398
3399 Double_t dcaV0ToPrimVertex= v0MIs->GetD(primaryVtxPosition[0],primaryVtxPosition[1]);////v0K0KF.GetDistanceFromVertexXY(tPrimaryVtxPosition);
3400
3401 //------------------- decay length V0 -------------//
3402
3403
3404 Double_t decayLength = sqrt( pow(xr[0] - primaryVtxPosition[0],2.0)
3405 +pow(xr[1] - primaryVtxPosition[1],2.0)
3406 +pow(xr[2] - primaryVtxPosition[2],2.0)
3407 );
3408 //2D decay radius already calculated for track length cut
3409
3410 //-- decay radius xy min cut --//
3411 if(dim2V0Radius < fDecayRadXYMin && ptK0s < fPtDecRadMin) continue;
3412 // if(fabs(xr[1])<fDecayRadY) continue;
3413 fHistPiPiMonitorCuts->Fill(20);
3414 fHistPiPMonitorCuts[isSecd]->Fill(20);
3415 fHistPiAPMonitorCuts[isSecd]->Fill(20);
3416
3417 //-- decay radius xy max cut --//
3418 if(dim2V0Radius > fDecayRadXYMax) continue;
3419 // if(fabs(xr[1])<fDecayRadY) continue;
3420 fHistPiPiMonitorCuts->Fill(21);
3421 fHistPiPMonitorCuts[isSecd]->Fill(21);
3422 fHistPiAPMonitorCuts[isSecd]->Fill(21);
3423
3424 //-- 3D decay length min ->ctau --//
3425 if(decayLength > fDecayLengthMax) continue;
3426 fHistPiPiMonitorCuts->Fill(22);
3427 fHistPiPMonitorCuts[isSecd]->Fill(22);
3428 fHistPiAPMonitorCuts[isSecd]->Fill(22);
3429
3430 //-- 3D decay length min cut --//
3431 if(decayLength < fDecayLengthMin) continue;
3432 fHistPiPiMonitorCuts->Fill(23);
3433 fHistPiPMonitorCuts[isSecd]->Fill(23);
3434 fHistPiAPMonitorCuts[isSecd]->Fill(23);
3435
3436
3437
3438 //----------------------- V0 variables --------------------//
3439 //-- armenteros --//
3440 TVector3 momTot = ppTrack + pmTrack;
3441 Double_t lQlNeg = fabs(pmTrack.Dot(momTot)/momTot.Mag());
3442 Double_t lQlPos = fabs(ppTrack.Dot(momTot)/momTot.Mag());
3443 //return 1.-2./(1.+lQlNeg/lQlPos);
3444 Double_t alfa =0.0;
3445 Double_t den = lQlPos + lQlNeg;
3446 if(den>0) alfa = (lQlPos - lQlNeg)/den;
3447 TVector3 qtvec= pmTrack.Cross(momTot);//vecPip.Mag()*sqrt(1-pow(thetapip,2));
3448 Double_t qt = qtvec.Mag()/momTot.Mag();
3449
3450
3451
3452 //-- masses --//
3453 Double_t massK0s = v0K0.M();
3454 Double_t massLambda = v0Lambda.M();
3455 Double_t massALambda = v0ALambda.M();
3456
3457 Double_t energyE1 = sqrt(ppTrack.Mag2()+pow(0.51099e-03,2.0));
3458 Double_t energyE2 = sqrt(pmTrack.Mag2()+pow(0.51099e-03,2.0));
3459 TLorentzVector e1(ppTrack,energyE1);
3460 TLorentzVector e2(pmTrack,energyE2);
3461 TLorentzVector photon = e1+e2;
3462 Double_t massPhoton = photon.M();
3463
3464 //-- rapidity --//
3465 Double_t rapK0s = v0MIs->Y(310);
3466 Double_t rapL = v0MIs->Y(3122);
3467 Double_t rapAL = v0MIs->Y(3122);
3468
3469 //-- other variables --//
3470 Double_t opAng = fabs(ppTrack.Angle(pmTrack));
3471 Double_t cosOPAng = v0MIs->GetV0CosineOfPointingAngle();
3472
3473 // if( ppTrack.Angle(pmTrack)<0.001) continue;
3474 // if( ppTrack.Angle(pmTrack)<0.004) continue;
3475
3476
3477 Double_t phiK0s = v0K0.Phi();
3478 Double_t phiL = v0Lambda.Phi();
3479 Double_t phiAL = v0ALambda.Phi();
3480
3481 Double_t etaK0s = v0K0.Eta();
3482 Double_t etaL = v0Lambda.Eta();
3483 Double_t etaAL = v0ALambda.Eta();
5842a526 3484
6c301331 3485 /*
3486 //introduce more histo
3487 Double_t errOnMassK0s = v0MIs->ChangeMassHypothesis(310);
3488 Double_t errOnMassLambda = 0.0;
3489 Double_t errOnMassALambda = 0.0;
3490 if(!switchSign){
3491 errOnMassLambda = v0MIs->ChangeMassHypothesis(3122);
3492 errOnMassALambda = v0MIs->ChangeMassHypothesis(-3122);
3493 }
3494 else{
3495 errOnMassLambda = v0MIs->ChangeMassHypothesis(-3122);
3496 errOnMassALambda = v0MIs->ChangeMassHypothesis(3122);
3497 }
3498 */
5842a526 3499
6c301331 3500 //------------------ cut flags for V0 type specific cuts --------------//
3501 Bool_t cutOKK0s = kTRUE;
3502 Bool_t cutOKLambda = kTRUE;
3503 Bool_t cutOKALambda = kTRUE;
5842a526 3504
6c301331 3505 //-------------------------- K0 cuts -----------------------------//
5842a526 3506
6c301331 3507 if(dcaV0ToPrimVertex > fDCAToVertexK0) cutOKK0s = kFALSE;
3508 else fHistPiPiMonitorCuts->Fill(24);
aa3d4e29 3509
6c301331 3510 if(fabs(xr[2])> fDCAZ) cutOKK0s = kFALSE; //like decay radius z component
3511 else fHistPiPiMonitorCuts->Fill(25);
aa3d4e29 3512
6c301331 3513 Double_t ctK0 = 0.0,ctTK0 = 0.0;
3514 if(fabs(pK0s)>0.0) ctK0 = decayLength*0.497614/pK0s;
3515 if(fabs(ptK0s)>0.0) ctTK0 = dim2V0Radius*0.497614/ptK0s;
3516 if(ctK0 > fCtauK0s && fabs(ptK0s) <fCtauPtCutK0) cutOKK0s = kFALSE;
3517 else fHistPiPiMonitorCuts->Fill(26);
5842a526 3518
6c301331 3519 if((cosOPAng < fCosPointAngK && fabs(ptK0s) > fCPAPtCutK0)|| cosOPAng<0.99)///xxx
3520 cutOKK0s = kFALSE;
3521 else fHistPiPiMonitorCuts->Fill(27);
aa3d4e29 3522
6c301331 3523 if(dcaDaughters > fDCADaughtersK0 )cutOKK0s = kFALSE;
3524 else fHistPiPiMonitorCuts->Fill(28);
aa3d4e29 3525
6c301331 3526 if(dcaNegToVertex < fDCADaughtersToVtxSmall || dcaPosToVertex < fDCADaughtersToVtxSmall) cutOKK0s = kFALSE;
3527 else fHistPiPiMonitorCuts->Fill(29);
aa3d4e29 3528
6c301331 3529 if(fRapCutV0 && fabs(rapK0s) > fRap) cutOKK0s = kFALSE;
3530 else fHistPiPiMonitorCuts->Fill(30);
5842a526 3531
6c301331 3532 // if(chi2K0C > fChiCutKf) cutOKK0s = kFALSE;
3533 if(opAng < fOpengAngleDaughters && fabs(ptK0s) < fOpAngPtCut ) cutOKK0s = kFALSE;
3534 else fHistPiPiMonitorCuts->Fill(31);
5842a526 3535
6c301331 3536 Bool_t ptbinokK0s=kFALSE;
3537 if( ptK0s < fQtCutPt && ptK0s > fQtCutPtLow ) ptbinokK0s=kTRUE;
5842a526 3538
6c301331 3539 Double_t qtval = fArmQtSlope*fabs(alfa);
5842a526 3540
6c301331 3541 if(fArmCutK0 && ptbinokK0s && qt < qtval) cutOKK0s = kFALSE;
3542 else fHistPiPiMonitorCuts->Fill(32);
3543 if(fArmCutK0 && ptbinokK0s && qt < fQtCut) cutOKK0s = kFALSE;
3544
aa3d4e29 3545
6c301331 3546
3547 //-------------------------- Lambda cuts -------------------------//
3548 if(dcaV0ToPrimVertex > fDCAToVertexL) cutOKLambda = kFALSE;
3549 else fHistPiPMonitorCuts[isSecd]->Fill(24);
aa3d4e29 3550
6c301331 3551 if(fabs(xr[2])>fDCAZ) cutOKLambda = kFALSE; //like decay radius z component
3552 else fHistPiPMonitorCuts[isSecd]->Fill(25);
aa3d4e29 3553
6c301331 3554 Double_t ctL = 0.0,ctTL=0.0;
3555 if(fabs(pLambda)>0.0) ctL = decayLength*1.115683/fabs(pLambda);
3556 if(fabs(ptLambda)>0.0) ctTL = dim2V0Radius*1.115683/fabs(ptLambda);
aa3d4e29 3557
6c301331 3558 if(ctL > fCtauL && fabs(ptLambda) <fCtauPtCutL) cutOKLambda = kFALSE;
3559 else fHistPiPMonitorCuts[isSecd]->Fill(26);
aa3d4e29 3560
6c301331 3561 if((cosOPAng<fCosPointAngL && fabs(ptLambda) > fCPAPtCutL)|| cosOPAng<0.99)///xxx
3562 cutOKLambda = kFALSE;
3563 else fHistPiPMonitorCuts[isSecd]->Fill(27);
aa3d4e29 3564
6c301331 3565 if(dcaDaughters > fDCADaughtersL )cutOKLambda = kFALSE;
3566 else fHistPiPMonitorCuts[isSecd]->Fill(28);
aa3d4e29 3567
6c301331 3568 if( dcaNegToVertex < fDCADaughtersToVtxSmall || dcaPosToVertex < fDCADaughtersToVtxLarge) cutOKLambda = kFALSE;
3569 else fHistPiPMonitorCuts[isSecd]->Fill(29);
aa3d4e29 3570
6c301331 3571 if(fRapCutV0 && fabs(rapL) > fRap) cutOKLambda = kFALSE;
3572 else fHistPiPMonitorCuts[isSecd]->Fill(30);
aa3d4e29 3573
5842a526 3574
6c301331 3575 /*
3576 if(chi2LambdaC > fChiCutKf) cutOKLambda = kFALSE;
3577 else fHistPiPMonitorCuts[isSecd]->Fill(20);
3578 */
aa3d4e29 3579
6c301331 3580 if(opAng < fOpengAngleDaughters && fabs(ptLambda) < fOpAngPtCut ) cutOKLambda = kFALSE;
3581 else fHistPiPMonitorCuts[isSecd]->Fill(31);
aa3d4e29 3582
3583
6c301331 3584 if(alfa<fAlfaCut || (fArmCutL && qt > fQtCut)) cutOKLambda = kFALSE;
3585 else fHistPiPMonitorCuts[isSecd]->Fill(32);
aa3d4e29 3586
6c301331 3587
aa3d4e29 3588
6c301331 3589 //--------------------------- ALambda cuts --------------------------//
aa3d4e29 3590
6c301331 3591 if(dcaV0ToPrimVertex > fDCAToVertexL) cutOKALambda = kFALSE;
3592 else fHistPiAPMonitorCuts[isSecd]->Fill(24);
5842a526 3593
6c301331 3594 if(fabs(xr[2])> fDCAZ) cutOKALambda = kFALSE;//continue;//like decay radius z component
3595 else fHistPiAPMonitorCuts[isSecd]->Fill(25);
aa3d4e29 3596
6c301331 3597 Double_t ctAL = 0.0,ctTAL=0.0;
3598 if(fabs(pALambda)>0.0) ctAL = decayLength*1.115683/fabs(pALambda);
3599 if(fabs(ptALambda)>0.0) ctTAL = dim2V0Radius*1.115683/fabs(ptALambda);
3600 if(ctAL > fCtauL && fabs(ptALambda) <fCtauPtCutL) cutOKALambda = kFALSE;
3601 else fHistPiAPMonitorCuts[isSecd]->Fill(26);
5842a526 3602
6c301331 3603 if((cosOPAng<fCosPointAngL && fabs(ptALambda) > fCPAPtCutL)|| cosOPAng<0.99) cutOKALambda = kFALSE;///xxx
3604 else fHistPiAPMonitorCuts[isSecd]->Fill(27);
aa3d4e29 3605
6c301331 3606 if(dcaDaughters > fDCADaughtersAL )cutOKALambda = kFALSE;
3607 else fHistPiAPMonitorCuts[isSecd]->Fill(28);
aa3d4e29 3608
6c301331 3609 if( dcaPosToVertex < fDCADaughtersToVtxSmall || dcaNegToVertex < fDCADaughtersToVtxLarge) cutOKALambda = kFALSE;
3610 else fHistPiAPMonitorCuts[isSecd]->Fill(29);
aa3d4e29 3611
6c301331 3612 if(fRapCutV0 && fabs(rapAL) > fRap) cutOKALambda = kFALSE;
3613 else fHistPiAPMonitorCuts[isSecd]->Fill(30);
aa3d4e29 3614
6c301331 3615 /*
3616 if(chi2ALambdaC > fChiCutKf) cutOKALambda = kFALSE;
3617 else fHistPiAPMonitorCuts[isSecd]->Fill(20);
3618 */
aa3d4e29 3619
6c301331 3620 if(opAng < fOpengAngleDaughters && fabs(ptALambda) < fOpAngPtCut ) cutOKALambda = kFALSE;
3621 else fHistPiAPMonitorCuts[isSecd]->Fill(31);
aa3d4e29 3622
3623
6c301331 3624 if((fArmCutL && qt>qtval) || alfa > -1.0*fAlfaCut) cutOKALambda = kFALSE;
3625 else fHistPiAPMonitorCuts[isSecd]->Fill(32);
aa3d4e29 3626
5842a526 3627
6c301331 3628 //---------- check pdg codes of BG --------------------//
3629
3630 Int_t pdgBG = 0;
3631 if(fMCMode && !fMCTruthMode) pdgBG = FindPDGCode(stackRec,trackPos,trackNeg);
3632
3633 //----------------------------------------------- V0 ana -----------------------------------------------------------------------//
5842a526 3634
6c301331 3635 //-- cut flags for furhter histos--//
3636 Bool_t k0sOK=kFALSE;
3637 Bool_t lambdaOK=kFALSE;
3638 Bool_t alambdaOK=kFALSE;
5842a526 3639
6c301331 3640
3641 //------ Check for K0 ------//
3642 Bool_t exMass = kFALSE;
3643 if(fabs(1.115 - massLambda) < fExcludeLambdaFromK0s){
3644 cutOKK0s = kFALSE;
3645 exMass = kTRUE;
3646 }
3647 if(fabs(1.115 - massALambda) < fExcludeLambdaFromK0s){
3648 cutOKK0s = kFALSE;
3649 exMass = kTRUE;
3650 }
3651
3652 if(fabs(massPhoton) < fExcludePhotonsFromK0s) {
3653 cutOKK0s = kFALSE;
3654 exMass = kTRUE;
3655 }
3656
3657 if(ptK0s >fMinPt){
3658 if( cutOKK0s && fillK0sMC ){
3659 fHistDedxPiPlus[isSecd]->Fill(tpcMomPos,tpcsigPos);
3660 fHistDedxPiMinus[isSecd]->Fill(tpcMomNeg,tpcsigNeg);
3661 fHistPiPiMonitorCuts->Fill(33);
3662 if(pipidEdx){
3663 fHistPiPiMonitorCuts->Fill(34);
3664 k0sOK = kTRUE;
3665 if(!exMass && massK0s > fK0sLowMassCut && massK0s < fK0sHighMassCut ){
3666 if(!(fMCMode && fMCTruthMode)){
3667 ptV0MC = ptK0s;
3668 declengthV0MC = dim2V0Radius;
3669 }
3670 fHistPiPiMonitorCuts->Fill(35);
3671 fHistPiPiMass->Fill(massK0s);
3672 fHistPiPiMassVSPt->Fill(massK0s,ptK0s);
3673 fHistPiPiMassVSPtMCTruth->Fill(massK0s,ptV0MC);
3674 fHistPiPiMassVSY->Fill(massK0s,rapK0s);
3675 fHistPiPiPtVSY->Fill(rapK0s,ptK0s);
3676 fHistPiPiDecayLengthVsMass->Fill(massK0s,dim2V0Radius);//decayLength);
3677 // fHistPiPiPhiPosVsPtPosVsMass->Fill(massK0s,ctTK0,ptV0MC);//,ctK0);//posDaughterPhi);//xxx
3678 Double_t valTHnK0s[4]= {massK0s,ptV0MC,etaK0s,phiK0s};
3679 fTHnFK0s->Fill(valTHnK0s);
3680 Double_t valTHnK0sDauEta[4]= {massK0s,ptV0MC,posDaughterEta,negDaughterEta};
3681 Double_t valTHnK0sDauPhi[5]= {massK0s,posDaughterPhi,negDaughterPhi,double(nclsITSPos),double(nclsITSNeg)};
3682
3683 fTHnFK0sDauEta->Fill(valTHnK0sDauEta);
3684 fTHnFK0sDauPhi->Fill(valTHnK0sDauPhi);
3685 /*
3686 if(fMCMode && !fMCTruthMode){
3687 fHistPiPiPDGCode->Fill(pdgBG);
3688 if(pdgBG == -1) fHistPiPiNoMother->Fill(massK0s,ptV0MC);
3689 if(pdgBG == 22) fHistPiPiGA->Fill(massK0s,ptV0MC);
3690 if(pdgBG == 321) fHistPiPiKch->Fill(massK0s,ptV0MC);
3691 if(pdgBG == 333) fHistPiPiPhi->Fill(massK0s,ptV0MC);
3692 if(pdgBG == 3122) fHistPiPiL->Fill(massK0s,ptV0MC);
3693 if(pdgBG == 111) fHistPiPiPi0->Fill(massK0s,ptV0MC);
3694 if(pdgBG == 211) fHistPiPiPich->Fill(massK0s,ptV0MC);
3695 if(pdgBG == 113) fHistPiPiRoh->Fill(massK0s,ptV0MC);
3696 if(pdgBG == 223) fHistPiPiOmega->Fill(massK0s,ptV0MC);
3697 if(pdgBG == 313) fHistPiPiKStar->Fill(massK0s,ptV0MC);
3698 if(pdgBG == 310) fHistPiPiK0s->Fill(massK0s,ptV0MC);
3699 if(pdgBG == 130) fHistPiPiK0L->Fill(massK0s,ptV0MC);
3700 if(pdgBG == 2112) fHistPiPiN->Fill(massK0s,ptV0MC);
3701 if(pdgBG == 3112 || pdgBG ==3222) fHistPiPiSigma->Fill(massK0s,ptV0MC);
3702 if(pdgBG == 3312 || pdgBG ==3322) fHistPiPiXi->Fill(massK0s,ptV0MC);
3703 if(pdgBG == 2114 || pdgBG ==2224) fHistPiPiDelta->Fill(massK0s,ptV0MC);
3704 if(pdgBG >510 && pdgBG <532) fHistPiPiB->Fill(massK0s,ptV0MC);
3705 if(pdgBG >410 && pdgBG <444) fHistPiPiD->Fill(massK0s,ptV0MC);
3706 if(pdgBG == 331 && pdgBG ==221) fHistPiPiEta->Fill(massK0s,ptV0MC);
76a4d7a7 3707
6c301331 3708 }
3709 */
3710 if(massK0s > 0.46 && massK0s < 0.53) fHistPiPiDecayLengthVsPt->Fill(ptV0MC,dim2V0Radius);//decayLength
3711 // fHistPiPiPtDaughters->Fill(posDaughterPt,negDaughterPt);
3712 if(!fSetPtDepHist){
3713 fHistPiPiRadiusXY->Fill(massK0s,opAng);
3714 fHistPiPiCosPointAng->Fill(massK0s,cosOPAng);
3715 fHistPiPiDecayLengthVsCtau->Fill(massK0s,ctTK0);
3716 fHistPiPiTrackLengthPosVsMass->Fill(massK0s,lengthTPCPos);
3717 fHistPiPiTrackLengthNegVsMass->Fill(massK0s,lengthTPCNeg);
3718 //fHistPiPiDCAZPos->Fill(massK0s,dcaToVertexZPos);
3719 //fHistPiPiDCAZNeg->Fill(massK0s,dcaToVertexZNeg);
3720 fHistPiPiDCADaughters->Fill(massK0s,dcaDaughters);
3721 fHistPiPiDCADaughterPosToPrimVtxVSMass->Fill(massK0s,dcaPosToVertex);
3722 fHistPiPiDCAVSMass->Fill(massK0s,dcaV0ToPrimVertex);
3723
3724 }
3725 else{
3726 fHistPiPiRadiusXY->Fill(ptV0MC,opAng);
3727 fHistPiPiCosPointAng->Fill(ptV0MC,cosOPAng);
3728 fHistPiPiDecayLengthVsCtau->Fill(ptV0MC,ctTK0);
3729 fHistPiPiTrackLengthPosVsMass->Fill(ptV0MC,lengthTPCPos);
3730 fHistPiPiTrackLengthNegVsMass->Fill(ptV0MC,lengthTPCNeg);
3731 //fHistPiPiDCAZPos->Fill(ptV0MC,dcaToVertexZPos);
3732 //fHistPiPiDCAZNeg->Fill(ptV0MC,dcaToVertexZNeg);
3733 fHistPiPiDCADaughters->Fill(ptV0MC,dcaDaughters);
3734 fHistPiPiDCADaughterPosToPrimVtxVSMass->Fill(ptV0MC,dcaPosToVertex);
3735 fHistPiPiDCAVSMass->Fill(ptV0MC,dcaV0ToPrimVertex);
3736
3737 }
76a4d7a7 3738
6c301331 3739 if(fMCMode && fMCTruthMode) fHistPiPiDecayLengthResolution->Fill(declengthV0MC,dim2V0Radius);
76a4d7a7 3740
6c301331 3741 fHistPiPiK0sVsLambdaMass->Fill(massLambda,massK0s);
3742 fHistPiPiK0sVsALambdaMass->Fill(massALambda,massK0s);
3743
3744 fHistArmenteros[isSecd]->Fill(alfa,qt);
3745 fHistDedxSecPiPlus[isSecd]->Fill(tpcMomPos,tpcsigPos);
3746 fHistDedxSecPiMinus[isSecd]->Fill(tpcMomNeg,tpcsigNeg);
3747
3748 fHistV0RadiusZ[isSecd]->Fill(dim2V0Radius,xr[2]);
3749 fHistV0RadiusXY[isSecd]->Fill(xr[0],xr[1]);
3750 fHistV0RadiusZVSPt[isSecd]->Fill(ptK0s,dim2V0Radius);
3751 fHistV0RadiusXYVSY[isSecd]->Fill(rapK0s,dim2V0Radius);
3752
3753 //-- detector values --/
3754 fHistNclsITS[1]->Fill(nclsITSPos,nclsITSNeg);
3755 fHistNclsTPC[1]->Fill(crossedRowsTPCNeg,nclsTPCNeg);
3756
3757 if(!fSetPtDepHist){
3758 fHistNclsITSPosK0->Fill(massK0s,nclsITSPos);
3759 fHistNclsITSNegK0->Fill(massK0s,nclsITSNeg);
3760 fHistNclsTPCPosK0->Fill(massK0s,nclsTPCPos);
3761 fHistNclsTPCNegK0->Fill(massK0s,nclsTPCNeg);
3762 fHistChi2PerNclsITSPosK0->Fill(massK0s,chi2PerClusterITSPos);
3763 fHistChi2PerNclsITSNegK0->Fill(massK0s,chi2PerClusterITSNeg);
3764 fHistNCRowsTPCPosK0->Fill(massK0s,crossedRowsTPCPos);
3765 fHistNCRowsTPCNegK0->Fill(massK0s,crossedRowsTPCNeg);
3766 fHistRatioFoundOverFinableTPCK0Neg->Fill(massK0s,ratioFoFi);
3767 fHistRatioFoundOverFinableTPCK0Pos->Fill(massK0s,ratioFoFiPos);
3768 }
3769 else{
3770 fHistNclsITSPosK0->Fill(ptV0MC,nclsITSPos);
3771 fHistNclsITSNegK0->Fill(ptV0MC,nclsITSNeg);
3772 fHistNclsTPCPosK0->Fill(ptV0MC,nclsTPCPos);
3773 fHistNclsTPCNegK0->Fill(ptV0MC,nclsTPCNeg);
3774 fHistChi2PerNclsITSPosK0->Fill(ptV0MC,chi2PerClusterITSPos);
3775 fHistChi2PerNclsITSNegK0->Fill(ptV0MC,chi2PerClusterITSNeg);
3776 fHistNCRowsTPCPosK0->Fill(ptV0MC,crossedRowsTPCPos);
3777 fHistNCRowsTPCNegK0->Fill(ptV0MC,crossedRowsTPCNeg);
3778 fHistRatioFoundOverFinableTPCK0Neg->Fill(ptV0MC,ratioFoFi);
3779 fHistRatioFoundOverFinableTPCK0Pos->Fill(ptV0MC,ratioFoFiPos);
aa3d4e29 3780 }
aa3d4e29 3781 }
aa3d4e29 3782 }
3783 }
6c301331 3784 }
3785
3786
3787 //------ Check for Lambda -------//
3788 Bool_t exMassL =kFALSE;
3789 if(fabs(0.497 - massK0s) < fExcludeK0sFromLambda){
3790 cutOKLambda = kFALSE;
3791 exMassL = kTRUE;
3792 }
3793 if(fabs(massPhoton) < fExcludePhotonsFromLambda) {
3794 cutOKLambda = kFALSE;
3795 exMassL = kTRUE;
3796 }
5842a526 3797
6c301331 3798 if(ptLambda > fMinPt){
3799 if(cutOKLambda && fillLambdaMC){
3800 fHistDedxProt[isSecd]->Fill(tpcMomPos,tpcsigPos);
3801 fHistDedxPiMinus[isSecd]->Fill(tpcMomNeg,tpcsigNeg);
3802 fHistPiPMonitorCuts[isSecd]->Fill(33);
3803 if(pipdEdx){
3804 fHistPiPMonitorCuts[isSecd]->Fill(34);
3805 lambdaOK = kTRUE;
3806 if(!exMassL && massLambda > fLLowMassCut && massLambda < fLHighMassCut){// 1.05 && massLambda < 1.25 ){
3807 if(!(fMCMode && fMCTruthMode)) {
3808 ptV0MC = ptLambda;
3809 declengthV0MC = dim2V0Radius;
3810 }
3811 fHistPiPMonitorCuts[isSecd]->Fill(35);
3812 fHistPiPMass[isSecd]->Fill(massLambda);
3813 fHistPiPMassVSPt[isSecd]->Fill(massLambda,ptLambda);
3814 fHistPiPMassVSPtMCTruth[isSecd]->Fill(massLambda,ptV0MC);
3815 fHistPiPMassVSY[isSecd]->Fill(massLambda,rapL);
3816 fHistPiPPtVSY[isSecd]->Fill(rapL,ptLambda);
3817 //fHistPiPDecayLengthVsPt[isSecd]->Fill(ptLambda,ctL);
3818 Double_t valTHnL[4]= {massLambda,ptV0MC,etaL,phiL};
3819 Double_t valTHnLDauEta[4]= {massLambda,ptV0MC,posDaughterEta,negDaughterEta};
3820 Double_t valTHnLDauPhi[5]= {massLambda,posDaughterPhi,negDaughterPhi,double(nclsITSPos),double(nclsITSNeg)};
3821
3822 fTHnFL->Fill(valTHnL);
3823 fTHnFLDauEta->Fill(valTHnLDauEta);
3824 fTHnFLDauPhi->Fill(valTHnLDauPhi);
3825 /*
3826 if(fMCMode && !fMCTruthMode) {
3827 fHistPiPPDGCode->Fill(pdgBG);
3828 if(pdgBG == 22) fHistPiPGA->Fill(massLambda,ptV0MC);
3829 if(pdgBG == 321) fHistPiPKch->Fill(massLambda,ptV0MC);
3830 if(pdgBG == 310) fHistPiPK0s->Fill(massLambda,ptV0MC);
3831 if(pdgBG == 111) fHistPiPPi0->Fill(massLambda,ptV0MC);
3832 if(pdgBG == 211) fHistPiPPich->Fill(massLambda,ptV0MC);
3833 if(pdgBG == 313) fHistPiPKStar->Fill(massLambda,ptV0MC);
3834 if(pdgBG == 2112) fHistPiPN->Fill(massLambda,ptV0MC);
3835 if(pdgBG == 3122) fHistPiPL->Fill(massLambda,ptV0MC);
3836 if(pdgBG == -1) fHistPiPNoMother->Fill(massLambda,ptV0MC);
3837 }
3838 */
3839 if( massLambda > 1.108 && massLambda < 1.123 ) fHistPiPDecayLengthVsPt[isSecd]->Fill(ptV0MC,dim2V0Radius);//decayLength);
3840 fHistPiPDecayLengthVsMass[isSecd]->Fill(massLambda,dim2V0Radius);//decayLength);
3841
3842 if(!fSetPtDepHist){
3843 fHistPiPRadiusXY[isSecd]->Fill(massLambda,opAng);
3844 fHistPiPCosPointAng[isSecd]->Fill(massLambda,cosOPAng);
3845 fHistPiPTrackLengthPosVsMass[isSecd]->Fill(massLambda,lengthTPCPos);
3846 fHistPiPTrackLengthNegVsMass[isSecd]->Fill(massLambda,lengthTPCNeg);
3847 //fHistPiPDCAZPos[isSecd]->Fill(massLambda,dcaToVertexZPos);
3848 //fHistPiPDCAZNeg[isSecd]->Fill(massLambda,dcaToVertexZNeg);
3849 fHistPiPDCADaughters[isSecd]->Fill(massLambda,dcaDaughters);
3850 fHistPiPDCAVSMass[isSecd]->Fill(massLambda,dcaV0ToPrimVertex);
3851 fHistPiPDCADaughterPosToPrimVtxVSMass[isSecd]->Fill(massLambda,dcaPosToVertex);
3852 fHistPiPDCADaughterNegToPrimVtxVSMass[isSecd]->Fill(massLambda,dcaNegToVertex);
3853 fHistPiPDecayLengthVsCtau[isSecd]->Fill(massLambda,ctTL);
3854 }
3855 else{
3856 fHistPiPRadiusXY[isSecd]->Fill(ptV0MC,opAng);
3857 fHistPiPCosPointAng[isSecd]->Fill(ptV0MC,cosOPAng);
3858 fHistPiPTrackLengthPosVsMass[isSecd]->Fill(ptV0MC,lengthTPCPos);
3859 fHistPiPTrackLengthNegVsMass[isSecd]->Fill(ptV0MC,lengthTPCNeg);
3860 //fHistPiPDCAZPos[isSecd]->Fill(ptV0MC,dcaToVertexZPos);
3861 //fHistPiPDCAZNeg[isSecd]->Fill(ptV0MC,dcaToVertexZNeg);
3862 fHistPiPDCADaughters[isSecd]->Fill(ptV0MC,dcaDaughters);
3863 fHistPiPDCAVSMass[isSecd]->Fill(ptV0MC,dcaV0ToPrimVertex);
3864 fHistPiPDCADaughterPosToPrimVtxVSMass[isSecd]->Fill(ptV0MC,dcaPosToVertex);
3865 fHistPiPDCADaughterNegToPrimVtxVSMass[isSecd]->Fill(ptV0MC,dcaNegToVertex);
3866 fHistPiPDecayLengthVsCtau[isSecd]->Fill(ptV0MC,ctTL);
3867 }
76a4d7a7 3868
6c301331 3869 if(fMCMode && fMCTruthMode) fHistPiPDecayLengthResolution[isSecd]->Fill(declengthV0MC,dim2V0Radius);
3870 // fHistPiPPtDaughters[isSecd]->Fill(posDaughterPt,negDaughterPt);
3871 fHistPiPK0sVsLambdaMass->Fill(massLambda,massK0s);
3872 fHistPiPALambdaVsLambdaMass->Fill(massLambda,massALambda);
3873
3874 //-- secondaries --//
3875 if(isSecd==1){
3876 if(fabs(pdgMother) == 3112 || fabs(pdgMother) == 3114 || fabs(pdgMother) == 3222 || fabs(pdgMother) == 3224 || fabs(pdgMother) == 3214 ){
3877 fHistPiPMassVSPtSecSigma[1]->Fill(massLambda,ptLambda);
76a4d7a7 3878 }
6c301331 3879 if(pdgMother == 3322 || pdgMother == 3312){//Xi0 and xi minus
3880 fHistPiPCosPointAngXiVsPt->Fill(ptLambda,cosOPAng);
3881 fHistPiPMassVSPtSecXi[1]->Fill(massLambda,ptLambda);
3882 fHistPiPMassVSPtSecXiMCTruth->Fill(massLambda,ptV0MC);
3883 fHistPiPMassVSYSecXi[1]->Fill(massLambda,rapL);
3884 fHistPiPXi0PtVSLambdaPt[1]->Fill(ptLambda,ptXiMother);
76a4d7a7 3885 }
6c301331 3886 if(pdgMother == 3334){//Omega
3887 fHistPiPMassVSPtSecOmega[1]->Fill(massLambda,ptLambda);
3888 fHistPiPMassVSPtSecOmegaMCTruth->Fill(massLambda,ptV0MC);
3889 fHistPiPOmegaPtVSLambdaPt[1]->Fill(ptLambda,ptXiMother);
3890 }
3891 }
5842a526 3892
6c301331 3893 if(ptLambda > 0.4) fHistArmenteros[isSecd]->Fill(alfa,qt);
3894 fHistV0RadiusZ[isSecd]->Fill(dim2V0Radius,xr[2]);
3895 fHistV0RadiusXY[isSecd]->Fill(xr[0],xr[1]);
3896 fHistV0RadiusZVSPt[isSecd]->Fill(ptLambda,dim2V0Radius);
3897 fHistV0RadiusXYVSY[isSecd]->Fill(rapL,dim2V0Radius);
3898 fHistDedxSecProt[isSecd]->Fill(tpcMomPos,tpcsigPos);
3899 fHistDedxSecPiMinus[isSecd]->Fill(tpcMomNeg,tpcsigNeg);
3900
3901 if(!fSetFillDetAL){
3902 //-- detector values --//
3903 fHistNclsITS[0]->Fill(nclsITSPos,nclsITSNeg);
3904 fHistNclsTPC[0]->Fill(crossedRowsTPCNeg,nclsTPCNeg);
3905 if(!fSetPtDepHist){
3906 fHistNclsITSPosL[isSecd]->Fill(massLambda,nclsITSPos);
3907 fHistNclsITSNegL[isSecd]->Fill(massLambda,nclsITSNeg);
3908 fHistNclsTPCPosL[isSecd]->Fill(massLambda,nclsTPCPos);
3909 fHistNclsTPCNegL[isSecd]->Fill(massLambda,nclsTPCNeg);
3910 fHistChi2PerNclsITSPosL[isSecd]->Fill(massLambda,chi2PerClusterITSPos);
3911 fHistChi2PerNclsITSNegL[isSecd]->Fill(massLambda,chi2PerClusterITSNeg);
3912 fHistNCRowsTPCPosL[isSecd]->Fill(massLambda,crossedRowsTPCPos);
3913 fHistNCRowsTPCNegL[isSecd]->Fill(massLambda,crossedRowsTPCNeg);
3914 fHistRatioFoundOverFinableTPCLNeg[isSecd]->Fill(massLambda,ratioFoFi);
3915 fHistRatioFoundOverFinableTPCLPos[isSecd]->Fill(massLambda,ratioFoFiPos);
5842a526 3916 }
6c301331 3917 else{
3918 fHistNclsITSPosL[isSecd]->Fill(ptV0MC,nclsITSPos);
3919 fHistNclsITSNegL[isSecd]->Fill(ptV0MC,nclsITSNeg);
3920 fHistNclsTPCPosL[isSecd]->Fill(ptV0MC,nclsTPCPos);
3921 fHistNclsTPCNegL[isSecd]->Fill(ptV0MC,nclsTPCNeg);
3922 fHistChi2PerNclsITSPosL[isSecd]->Fill(ptV0MC,chi2PerClusterITSPos);
3923 fHistChi2PerNclsITSNegL[isSecd]->Fill(ptV0MC,chi2PerClusterITSNeg);
3924 fHistNCRowsTPCPosL[isSecd]->Fill(ptV0MC,crossedRowsTPCPos);
3925 fHistNCRowsTPCNegL[isSecd]->Fill(ptV0MC,crossedRowsTPCNeg);
3926 fHistRatioFoundOverFinableTPCLNeg[isSecd]->Fill(ptV0MC,ratioFoFi);
3927 fHistRatioFoundOverFinableTPCLPos[isSecd]->Fill(ptV0MC,ratioFoFiPos);
aa3d4e29 3928 }
3929 }
76a4d7a7 3930 }
6c301331 3931
aa3d4e29 3932 }
5842a526 3933 }
6c301331 3934 }
aa3d4e29 3935
5842a526 3936
6c301331 3937 //-- Check for AntiLambda --//
3938 Bool_t exMassAL =kFALSE;
3939 if(fabs(0.497 - massK0s) < fExcludeK0sFromLambda){
3940 exMassAL = kTRUE;
3941 }
3942 if(fabs(massPhoton) < fExcludePhotonsFromLambda) {
3943 exMassAL = kTRUE;
3944 }
5842a526 3945
6c301331 3946 if(ptALambda > fMinPt){
3947 if(cutOKALambda && fillALambdaMC){
3948 fHistDedxAProt[isSecd]->Fill(tpcMomNeg,tpcsigNeg);
3949 fHistDedxPiPlus[isSecd]->Fill(tpcMomPos,tpcsigPos);
3950 fHistPiAPMonitorCuts[isSecd]->Fill(33);
3951 if(piapdEdx){
3952 fHistPiAPMonitorCuts[isSecd]->Fill(34);
3953 alambdaOK = kTRUE;
3954 if( !exMassAL && massALambda > fLLowMassCut && massALambda < fLHighMassCut){//1.05 && massALambda < 1.25 ){
3955 if(!(fMCMode && fMCTruthMode)) {
3956 ptV0MC = ptALambda;
3957 declengthV0MC = dim2V0Radius;
3958 }
3959 fHistPiAPMonitorCuts[isSecd]->Fill(35);
3960 fHistPiAPMass[isSecd]->Fill(massALambda);
3961 fHistPiAPMassVSPt[isSecd]->Fill(massALambda,ptALambda);
3962 fHistPiAPMassVSPtMCTruth[isSecd]->Fill(massALambda,ptV0MC);
3963 fHistPiAPMassVSY[isSecd]->Fill(massALambda,rapAL);
3964 fHistPiAPPtVSY[isSecd]->Fill(rapAL,ptALambda);
3965 // fHistPiAPPtDaughters[isSecd]->Fill(posDaughterPt,negDaughterPt);
3966 // fHistPiAPPhiPosVsPtPosVsMass->Fill(massALambda,ctTAL,ptV0MC);//
3967 // if(isSecd < 1) fHistPiPPhiPosVsPtPosVsMass->Fill(massLambda,ctTL,ptV0MC);//
3968 // else {
3969 // if(fMCTruthMode) fHistPiAPPhiPosVsPtPosVsMass->Fill(massLambda,ctTL,ptV0MC);
3970 // }
3971
3972 Double_t valTHnAL[4]= {massALambda,ptV0MC,etaAL,phiAL};
3973 Double_t valTHnALDauEta[4]={massALambda,ptV0MC,posDaughterEta,negDaughterEta};
3974 Double_t valTHnALDauPhi[5]={massALambda,posDaughterPhi,negDaughterPhi,double(nclsITSPos),double(nclsITSNeg)};
3975
3976 fTHnFALDauEta->Fill(valTHnALDauEta);
3977 fTHnFALDauPhi->Fill(valTHnALDauPhi);
3978 fTHnFAL->Fill(valTHnAL);
3979
3980 if(fMCMode && !fMCTruthMode) fHistPiAPPDGCode->Fill(pdgBG);
3981 if( massALambda>1.108 && massALambda<1.123 ) fHistPiAPDecayLengthVsPt[isSecd]->Fill(ptV0MC,dim2V0Radius);//decayLength);
3982 fHistPiAPDecayLengthVsMass[isSecd]->Fill(massALambda,dim2V0Radius);//decayLength);
5842a526 3983
6c301331 3984 if(!fSetPtDepHist){
3985 fHistPiAPRadiusXY[isSecd]->Fill(massALambda,opAng);
3986 fHistPiAPCosPointAng[isSecd]->Fill(massALambda,cosOPAng);
3987 fHistPiAPTrackLengthPosVsMass[isSecd]->Fill(massALambda,lengthTPCPos);
3988 fHistPiAPTrackLengthNegVsMass[isSecd]->Fill(massALambda,lengthTPCNeg);
3989 //fHistPiAPDCAZPos[isSecd]->Fill(massALambda,dcaToVertexZPos);
3990 //fHistPiAPDCAZNeg[isSecd]->Fill(massALambda,dcaToVertexZNeg);
3991 fHistPiAPDCADaughters[isSecd]->Fill(massALambda,dcaDaughters);
3992 fHistPiAPDCAVSMass[isSecd]->Fill(massALambda,dcaV0ToPrimVertex);
3993 fHistPiAPDCADaughterPosToPrimVtxVSMass[isSecd]->Fill(massALambda,dcaPosToVertex);
3994 fHistPiAPDCADaughterNegToPrimVtxVSMass[isSecd]->Fill(massALambda,dcaNegToVertex);
3995 fHistPiAPDecayLengthVsCtau[isSecd]->Fill(massALambda,ctTAL);
3996 }
3997 else{
3998 fHistPiAPRadiusXY[isSecd]->Fill(ptV0MC,opAng);
3999 fHistPiAPCosPointAng[isSecd]->Fill(ptV0MC,cosOPAng);
4000 fHistPiAPTrackLengthPosVsMass[isSecd]->Fill(ptV0MC,lengthTPCPos);
4001 fHistPiAPTrackLengthNegVsMass[isSecd]->Fill(ptV0MC,lengthTPCNeg);
4002 //fHistPiAPDCAZPos[isSecd]->Fill(ptV0MC,dcaToVertexZPos);
4003 //fHistPiAPDCAZNeg[isSecd]->Fill(ptV0MC,dcaToVertexZNeg);
4004 fHistPiAPDCADaughters[isSecd]->Fill(ptV0MC,dcaDaughters);
4005 fHistPiAPDCAVSMass[isSecd]->Fill(ptV0MC,dcaV0ToPrimVertex);
4006 fHistPiAPDCADaughterPosToPrimVtxVSMass[isSecd]->Fill(ptV0MC,dcaPosToVertex);
4007 fHistPiAPDCADaughterNegToPrimVtxVSMass[isSecd]->Fill(ptV0MC,dcaNegToVertex);
4008 fHistPiAPDecayLengthVsCtau[isSecd]->Fill(ptV0MC,ctTAL);
4009 }
5842a526 4010
6c301331 4011 if(fMCMode && fMCTruthMode) fHistPiAPDecayLengthResolution[isSecd]->Fill(declengthV0MC,dim2V0Radius);
4012 fHistPiAPK0sVsALambdaMass->Fill(massALambda,massK0s);
4013 fHistPiAPLambdaVsALambdaMass->Fill(massALambda,massLambda);
5842a526 4014
6c301331 4015 //-- secondaries --//
4016 if(isSecd == 1){
4017 if(fabs(pdgMother) == 3112 || fabs(pdgMother) == 3114 || fabs(pdgMother) == 3222 || fabs(pdgMother) == 3224 || fabs(pdgMother) == 3214 ){
4018 fHistPiAPMassVSPtSecSigma[1]->Fill(massLambda,ptLambda);
4019 }
4020 if(pdgMother == -3322 || pdgMother == -3312){//Xi0 and xiplus
4021 fHistPiAPCosPointAngXiVsPt->Fill(ptALambda,cosOPAng);
4022 fHistPiAPMassVSPtSecXi[1]->Fill(massALambda,ptALambda);
4023 fHistPiAPMassVSPtSecXiMCTruth->Fill(massALambda,ptV0MC);
4024 fHistPiAPMassVSYSecXi[1]->Fill(massALambda,rapAL);
4025 fHistPiAPXi0PtVSLambdaPt[1]->Fill(ptALambda,ptXiMother);
aa3d4e29 4026 }
6c301331 4027 if(pdgMother == -3334){//Omega
4028 fHistPiAPMassVSPtSecOmega[1]->Fill(massALambda,ptALambda);
4029 fHistPiAPMassVSPtSecOmegaMCTruth->Fill(massALambda,ptV0MC);
4030 fHistPiAPOmegaPtVSLambdaPt[1]->Fill(ptALambda,ptXiMother);
4031 }
4032 }
5842a526 4033
6c301331 4034 if(ptALambda > 0.4) fHistArmenteros[isSecd]->Fill(alfa,qt);
4035 fHistDedxSecAProt[isSecd]->Fill(tpcMomNeg,tpcsigNeg);
4036 fHistDedxSecPiPlus[isSecd]->Fill(tpcMomPos,tpcsigPos);
4037 fHistV0RadiusZ[isSecd]->Fill(dim2V0Radius,xr[2]);
4038 fHistV0RadiusXY[isSecd]->Fill(xr[0],xr[1]);
4039 fHistV0RadiusZVSPt[isSecd]->Fill(ptALambda,dim2V0Radius);
4040 fHistV0RadiusXYVSY[isSecd]->Fill(rapAL,dim2V0Radius);
4041
4042 if(fSetFillDetAL){
4043 //-- detector values --//
4044 fHistNclsITS[0]->Fill(nclsITSPos,nclsITSNeg);
4045 fHistNclsTPC[0]->Fill(crossedRowsTPCNeg,nclsTPCNeg);
4046 if(!fSetPtDepHist){
4047 fHistNclsITSPosL[isSecd]->Fill(massALambda,nclsITSPos);
4048 fHistNclsITSNegL[isSecd]->Fill(massALambda,nclsITSNeg);
4049 fHistNclsTPCPosL[isSecd]->Fill(massALambda,nclsTPCPos);
4050 fHistNclsTPCNegL[isSecd]->Fill(massALambda,nclsTPCNeg);
4051 fHistChi2PerNclsITSPosL[isSecd]->Fill(massALambda,chi2PerClusterITSPos);
4052 fHistChi2PerNclsITSNegL[isSecd]->Fill(massALambda,chi2PerClusterITSNeg);
4053 fHistNCRowsTPCPosL[isSecd]->Fill(massALambda,crossedRowsTPCPos);
4054 fHistNCRowsTPCNegL[isSecd]->Fill(massALambda,crossedRowsTPCNeg);
4055 fHistRatioFoundOverFinableTPCLNeg[isSecd]->Fill(massALambda,ratioFoFi);
4056 fHistRatioFoundOverFinableTPCLPos[isSecd]->Fill(massALambda,ratioFoFiPos);
4057 }
4058 else{
4059 fHistNclsITSPosL[isSecd]->Fill(ptV0MC,nclsITSPos);
4060 fHistNclsITSNegL[isSecd]->Fill(ptV0MC,nclsITSNeg);
4061 fHistNclsTPCPosL[isSecd]->Fill(ptV0MC,nclsTPCPos);
4062 fHistNclsTPCNegL[isSecd]->Fill(ptV0MC,nclsTPCNeg);
4063 fHistChi2PerNclsITSPosL[isSecd]->Fill(ptV0MC,chi2PerClusterITSPos);
4064 fHistChi2PerNclsITSNegL[isSecd]->Fill(ptV0MC,chi2PerClusterITSNeg);
4065 fHistNCRowsTPCPosL[isSecd]->Fill(ptV0MC,crossedRowsTPCPos);
4066 fHistNCRowsTPCNegL[isSecd]->Fill(ptV0MC,crossedRowsTPCNeg);
4067 fHistRatioFoundOverFinableTPCLNeg[isSecd]->Fill(ptV0MC,ratioFoFi);
4068 fHistRatioFoundOverFinableTPCLPos[isSecd]->Fill(ptV0MC,ratioFoFiPos);
5842a526 4069 }
76a4d7a7 4070 }
aa3d4e29 4071 }
aa3d4e29 4072 }
aa3d4e29 4073 }
6c301331 4074 }
5842a526 4075
6c301331 4076 if(lambdaOK || alambdaOK || k0sOK) {
4077 trackID[iV0MI][0] = v0MIs->GetPindex();
4078 trackID[iV0MI][1] = v0MIs->GetNindex();
76a4d7a7 4079 }
6c301331 4080
4081
4082 //-- fill detector histos general --//
4083 if((lambdaOK && !exMassL) || (alambdaOK && !exMassAL) || (k0sOK && !exMass)){
4084 fHistPiPiEtaDReco[1]->Fill(posDaughterEta,eta00);
4085 fHistPiPEtaDReco[1]->Fill(negDaughterEta,eta01);
4086 }
4087
4088
4089 /*
4090 //-- AliKFParticle --//
4091 if (negPiKF) delete negPiKF; negPiKF=NULL;
4092 if (posPiKF) delete posPiKF; posPiKF=NULL;
4093 if (posPKF) delete posPKF; posPKF=NULL;
4094 if (negAPKF) delete negAPKF; negAPKF=NULL;
4095 */
4096
4097 }//---- end V0 reco loop----//
4098
4099}
76a4d7a7 4100
6c301331 4101//________________________________________________________________________
4102
4103Int_t AliAnalysisTaskV0ForRAA::CalculateCentralityBin(){
4104 //find centrality bin for centrality selection
4105
4106 if (fUseCentrality == 0) return -1;
4107
4108 AliCentrality *esdCentrality = fESD->GetCentrality();
4109
4110 Float_t centralityVZERO = esdCentrality->GetCentralityPercentile("V0M");
4111 Float_t centralitySPD = esdCentrality->GetCentralityPercentile("CL1");
4112
4113 Int_t centralityVZEROBin = -1;
4114 Int_t centralitySPDBin = -1;
4115
4116 //-- SPD centrality --//
4117 if ( fUseCentrality == 2 ){
4118 if ( centralitySPD >= 0. && centralitySPD < 5.) centralitySPDBin = 0;
4119 else if ( centralitySPD >= 5. && centralitySPD < 10.) centralitySPDBin = 5;
4120 else if ( centralitySPD >= 10. && centralitySPD < 20.) centralitySPDBin = 10;
4121 else if ( centralitySPD >= 20. && centralitySPD < 30.) centralitySPDBin = 20;
4122 else if ( centralitySPD >= 30. && centralitySPD < 40.) centralitySPDBin = 30;
4123 else if ( centralitySPD >= 40. && centralitySPD < 50.) centralitySPDBin = 40;
4124 else if ( centralitySPD >= 50. && centralitySPD < 60.) centralitySPDBin = 50;
4125 else if ( centralitySPD >= 60. && centralitySPD < 70.) centralitySPDBin = 60;
4126 else if ( centralitySPD >= 70. && centralitySPD < 80.) centralitySPDBin = 70;
4127 else if ( centralitySPD >= 80. && centralitySPD < 90.) centralitySPDBin = 80;
4128 else if ( centralitySPD >= 90. && centralitySPD < 99.) centralitySPDBin = 90;
4129 else if ( centralitySPD >= 99. ) centralitySPDBin = 100;
4130 else if ( fabs(centralitySPD)< 0.0001 ) centralitySPDBin = 100;
4131 return centralitySPDBin;
76a4d7a7 4132 }
aa3d4e29 4133
6c301331 4134 //-- V0 centrality --//
4135 if ( fUseCentrality == 1 ){
4136 if ( centralityVZERO > 0. && centralityVZERO < 5.) centralityVZEROBin = 0;
4137 else if ( centralityVZERO >= 5. && centralityVZERO < 10.) centralityVZEROBin = 5;
4138 else if ( centralityVZERO >= 10. && centralityVZERO < 20.) centralityVZEROBin = 10;
4139 else if ( centralityVZERO >= 20. && centralityVZERO < 30.) centralityVZEROBin = 20;
4140 else if ( centralityVZERO >= 30. && centralityVZERO < 40.) centralityVZEROBin = 30;
4141 else if ( centralityVZERO >= 40. && centralityVZERO < 50.) centralityVZEROBin = 40;
4142 else if ( centralityVZERO >= 50. && centralityVZERO < 60.) centralityVZEROBin = 50;
4143 else if ( centralityVZERO >= 60. && centralityVZERO < 70.) centralityVZEROBin = 60;
4144 else if ( centralityVZERO >= 70. && centralityVZERO < 80.) centralityVZEROBin = 70;
4145 else if ( centralityVZERO >= 80. && centralityVZERO < 90.) centralityVZEROBin = 80;
4146 else if ( centralityVZERO >= 90. && centralityVZERO < 99.) centralityVZEROBin = 90;
4147 else if ( centralityVZERO >= 99. ) centralityVZEROBin = 100;
4148 else if ( fabs(centralityVZERO)< 0.0001 ) centralityVZEROBin = 100;
4149 return centralityVZEROBin;
4150 }
4151 return -1;
4152
4153}
4154
4155//__________________________________________________________________________________________________________
4156Bool_t AliAnalysisTaskV0ForRAA::GetMCTruthPartner(AliESDtrack *pos,AliESDtrack *neg,Int_t id0,Int_t id1){
4157 //-- get daughter label and check it --//
4158 Int_t labelP = fabs(pos->GetLabel());
4159 Int_t labelN = fabs(neg->GetLabel());
4160
4161 if (labelN==labelP) return kFALSE;
aa3d4e29 4162
6c301331 4163 if(fMCTruthMode){
4164 if ((labelP!=id0) && (labelP!=id1)) return kFALSE;
4165 if ((labelN!=id0) && (labelN!=id1)) return kFALSE;
aa3d4e29 4166 }
6c301331 4167
4168 return kTRUE;
4169}
4170
4171//__________________________________________________________________________________________________________
4172Bool_t AliAnalysisTaskV0ForRAA::CheckMultipleV0Candidates(AliESDv0 *v0MIs,Int_t iV0MI,Int_t trackID[][2]){
4173 Int_t part1 = v0MIs->GetPindex();
4174 Int_t part2 = v0MIs->GetNindex();
4175 Bool_t multFoundV0=kFALSE;
4176 for(Int_t i = 0; i < iV0MI;i++){
4177 if(trackID[i][0] == part1 && trackID[1][i] == part2) multFoundV0 = kTRUE;
4178 if(trackID[i][1] == part2 && trackID[1][i] == part1) multFoundV0 = kTRUE;
4179 }
4180 return multFoundV0;
4181}
aa3d4e29 4182
6c301331 4183//__________________________________________________________________________________________________________
4184Int_t AliAnalysisTaskV0ForRAA::FindPDGCode(AliStack *stackRec,AliESDtrack *trackPos,AliESDtrack *trackNeg){
4185
4186 //-- get daughter label --//
4187 Int_t labelP = fabs(trackPos->GetLabel());
4188 Int_t labelN = fabs(trackNeg->GetLabel());
4189 TParticle *p0 = stackRec->Particle(labelP);
4190 TParticle *p1 = stackRec->Particle(labelN);
4191 Int_t idmother0 = -1;
4192 if(p0) idmother0 = p0->GetMother(0);
4193 Int_t idmother1 = -1;
4194 if(p1) idmother1 = p1->GetMother(0);
4195 Int_t pdg = -1;
4196 if(idmother0 != idmother1) return pdg;
4197 else{
4198 if(idmother0 > -1) {
4199 pdg = stackRec->Particle(idmother0)->GetPdgCode();
4200 if(fabs(pdg) >21) return fabs(pdg);
4201 }
4202 return -1;
4203 }
4204
4205}